mirror of
https://github.com/RfidResearchGroup/proxmark3.git
synced 2025-08-21 05:43:48 -07:00
Improve lf sampling performance
Signed-off-by: yah01 <yah2er0ne@outlook.com>
This commit is contained in:
parent
0c0967bcc5
commit
9d07ee497c
2 changed files with 15 additions and 21 deletions
|
@ -39,6 +39,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac
|
|||
- Modified `hf iclass configcard` to only support online mode (@Antiklesys)
|
||||
- Modified `hf iclass configcard` command to generate config cards without a cardhelper module by porting the contents of blocks 6 & 7 from nfc-iclass (@Antiklesys)
|
||||
- Fixed `hf iclass info` command showing incorrectly in offline mode (@Antiklesys)
|
||||
- Changed lf sampling - improved the performance (@yah01)
|
||||
|
||||
## [Raccoon.4.17140][2023-09-09]
|
||||
- Changed text and adjust pm3_test case for mf_aes_brute (@doegox)
|
||||
|
|
|
@ -128,20 +128,6 @@ sample_config *getSamplingConfig(void) {
|
|||
return &config;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Pushes bit onto the stream
|
||||
* @param stream
|
||||
* @param bit
|
||||
*/
|
||||
static void pushBit(BitstreamOut_t *stream, uint8_t bit) {
|
||||
int bytepos = stream->position >> 3; // divide by 8
|
||||
int bitpos = stream->position & 7;
|
||||
*(stream->buffer + bytepos) &= ~(1 << (7 - bitpos));
|
||||
*(stream->buffer + bytepos) |= (bit > 0) << (7 - bitpos);
|
||||
stream->position++;
|
||||
stream->numbits++;
|
||||
}
|
||||
|
||||
void initSampleBuffer(uint32_t *sample_size) {
|
||||
initSampleBufferEx(sample_size, false);
|
||||
}
|
||||
|
@ -233,13 +219,20 @@ void logSample(uint8_t sample, uint8_t decimation, uint8_t bits_per_sample, bool
|
|||
data.numbits = samples.total_saved << 3;
|
||||
|
||||
} else {
|
||||
pushBit(&data, sample & 0x80);
|
||||
if (bits_per_sample > 1) pushBit(&data, sample & 0x40);
|
||||
if (bits_per_sample > 2) pushBit(&data, sample & 0x20);
|
||||
if (bits_per_sample > 3) pushBit(&data, sample & 0x10);
|
||||
if (bits_per_sample > 4) pushBit(&data, sample & 0x08);
|
||||
if (bits_per_sample > 5) pushBit(&data, sample & 0x04);
|
||||
if (bits_per_sample > 6) pushBit(&data, sample & 0x02);
|
||||
// truncate trailing data
|
||||
sample >>= 8 - bits_per_sample;
|
||||
sample <<= 8 - bits_per_sample;
|
||||
|
||||
uint8_t bits_offset = data.numbits & 0x7;
|
||||
uint8_t bits_cap = 8 - bits_offset;
|
||||
|
||||
// write the current byte
|
||||
data.buffer[data.numbits >> 3] |= sample >> bits_offset;
|
||||
int numbits = data.numbits + bits_cap;
|
||||
|
||||
// write the remaining bits to the next byte
|
||||
data.buffer[numbits >> 3] |= sample << (bits_cap);
|
||||
data.numbits += bits_per_sample;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue