diff --git a/armsrc/appmain.c b/armsrc/appmain.c index b8823af3b..dded4be55 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -851,11 +851,7 @@ static void PacketReceived(PacketCommandNG *packet) { break; } case CMD_LF_ACQ_RAW_ADC: { - struct p { - uint32_t samples : 31; - bool verbose : 1; - } PACKED; - struct p *payload = (struct p *)packet->data.asBytes; + lf_sample_payload_t *payload = (lf_sample_payload_t *)packet->data.asBytes; uint32_t bits = SampleLF(payload->verbose, payload->samples, true); reply_ng(CMD_LF_ACQ_RAW_ADC, PM3_SUCCESS, (uint8_t *)&bits, sizeof(bits)); break; @@ -880,11 +876,7 @@ static void PacketReceived(PacketCommandNG *packet) { break; } case CMD_LF_SNIFF_RAW_ADC: { - struct p { - uint32_t samples : 31; - bool verbose : 1; - } PACKED; - struct p *payload = (struct p *)packet->data.asBytes; + lf_sample_payload_t *payload = (lf_sample_payload_t *)packet->data.asBytes; uint32_t bits = SniffLF(payload->verbose, payload->samples, true); reply_ng(CMD_LF_SNIFF_RAW_ADC, PM3_SUCCESS, (uint8_t *)&bits, sizeof(bits)); diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 1d57378c7..ce0e67ff5 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -699,12 +699,7 @@ int CmdLFConfig(const char *Cmd) { int lf_read(bool verbose, uint32_t samples) { if (!g_session.pm3_present) return PM3_ENOTTY; - struct p { - uint32_t samples : 31; - bool verbose : 1; - } PACKED; - - struct p payload; + lf_sample_payload_t payload; payload.verbose = verbose; payload.samples = samples; @@ -765,10 +760,7 @@ int CmdLFRead(const char *Cmd) { int lf_sniff(bool verbose, uint32_t samples) { if (!g_session.pm3_present) return PM3_ENOTTY; - struct p { - uint32_t samples : 31; - bool verbose : 1; - } PACKED payload; + lf_sample_payload_t payload; payload.samples = (samples & 0xFFFF); payload.verbose = verbose; diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index af019eadd..4b0b21c0e 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -274,6 +274,17 @@ typedef struct { uint8_t data[]; } PACKED lf_hitag_t; +// For CMD_LF_SNIFF_RAW_ADC and CMD_LF_ACQ_RAW_ADC +#define LF_SAMPLES_BITS 30 +#define MAX_LF_SAMPLES ((((uint32_t)1u) << LF_SAMPLES_BITS) - 1) + +typedef struct { + // 64KB SRAM -> 524288 bits(max sample num) < 2^30 + uint32_t samples : LF_SAMPLES_BITS; + bool realtime : 1; + bool verbose : 1; +} PACKED lf_sample_payload_t; + typedef struct { uint8_t blockno; uint8_t keytype;