mirror of
https://github.com/RfidResearchGroup/ChameleonMini.git
synced 2026-05-12 11:20:37 -07:00
Calling AppProcess as suggested by @cacke-r
This commit is contained in:
@@ -67,7 +67,7 @@ uint16_t Sniff14443AAppProcess(uint8_t *Buffer, uint16_t BitCount) {
|
||||
case STATE_REQA:
|
||||
LED_PORT.OUTCLR = LED_RED;
|
||||
// If received Reader REQA or WUPA
|
||||
if (TrafficSource == TRAFFIC_READER &&
|
||||
if (SniffTrafficSource == TRAFFIC_READER &&
|
||||
(Buffer[0] == 0x26 || Buffer[0] == 0x52)) {
|
||||
SniffState = STATE_ATQA;
|
||||
} else {
|
||||
@@ -76,7 +76,7 @@ uint16_t Sniff14443AAppProcess(uint8_t *Buffer, uint16_t BitCount) {
|
||||
break;
|
||||
case STATE_ATQA:
|
||||
// ATQA: P RRRR XXXX P XXRX XXXX
|
||||
if (TrafficSource == TRAFFIC_CARD &&
|
||||
if (SniffTrafficSource == TRAFFIC_CARD &&
|
||||
BitCount == 2 * 9 &&
|
||||
(Buffer[0] & 0x20) == 0x00 && // Bit6 RFU shall be 0
|
||||
(Buffer[1] & 0xE0) == 0x00 && // bit13-16 RFU shall be 0
|
||||
@@ -87,7 +87,7 @@ uint16_t Sniff14443AAppProcess(uint8_t *Buffer, uint16_t BitCount) {
|
||||
} else {
|
||||
// If not ATQA, but REQA, then stay on this state,
|
||||
// Reset to REQA, save the counter and reset the counter
|
||||
if (TrafficSource == TRAFFIC_READER &&
|
||||
if (SniffTrafficSource == TRAFFIC_READER &&
|
||||
(Buffer[0] == 0x26 || Buffer[0] == 0x52)) {
|
||||
} else {
|
||||
// If not ATQA and not REQA then reset to REQA
|
||||
@@ -97,7 +97,7 @@ uint16_t Sniff14443AAppProcess(uint8_t *Buffer, uint16_t BitCount) {
|
||||
break;
|
||||
case STATE_ANTICOLLI:
|
||||
// SEL: 93/95/97
|
||||
if (TrafficSource == TRAFFIC_READER &&
|
||||
if (SniffTrafficSource == TRAFFIC_READER &&
|
||||
BitCount == 2 * 8 &&
|
||||
(Buffer[0] & 0xf0) == 0x90 &&
|
||||
(Buffer[0] & 0x09) == 0x01) {
|
||||
@@ -108,7 +108,7 @@ uint16_t Sniff14443AAppProcess(uint8_t *Buffer, uint16_t BitCount) {
|
||||
}
|
||||
break;
|
||||
case STATE_UID:
|
||||
if (TrafficSource == TRAFFIC_CARD &&
|
||||
if (SniffTrafficSource == TRAFFIC_CARD &&
|
||||
BitCount == 5 * 9 &&
|
||||
checkParityBits(Buffer, BitCount)) {
|
||||
SniffState = STATE_SELECT;
|
||||
@@ -119,7 +119,7 @@ uint16_t Sniff14443AAppProcess(uint8_t *Buffer, uint16_t BitCount) {
|
||||
case STATE_SELECT:
|
||||
|
||||
// SELECT: 9 bytes, SEL = 93/95/97, NVB=70
|
||||
if (TrafficSource == TRAFFIC_READER &&
|
||||
if (SniffTrafficSource == TRAFFIC_READER &&
|
||||
BitCount == 9 * 8 &&
|
||||
(Buffer[0] & 0xf0) == 0x90 &&
|
||||
(Buffer[0] & 0x09) == 0x01 &&
|
||||
@@ -132,7 +132,7 @@ uint16_t Sniff14443AAppProcess(uint8_t *Buffer, uint16_t BitCount) {
|
||||
break;
|
||||
case STATE_SAK:
|
||||
// SAK: 1Byte SAK + CRC
|
||||
if (TrafficSource == TRAFFIC_CARD &&
|
||||
if (SniffTrafficSource == TRAFFIC_CARD &&
|
||||
BitCount == 3 * 9 &&
|
||||
checkParityBits(Buffer, BitCount)) {
|
||||
if ((Buffer[0] & 0x04) == 0x00) {
|
||||
|
||||
@@ -26,6 +26,8 @@ static volatile struct {
|
||||
uint8_t CodecBuffer[CODEC_BUFFER_SIZE];
|
||||
uint8_t CodecBuffer2[CODEC_BUFFER_SIZE];
|
||||
|
||||
enum RCTraffic SniffTrafficSource;
|
||||
|
||||
void (* volatile isr_func_TCD0_CCC_vect)(void) = NULL;
|
||||
void (* volatile isr_func_CODEC_DEMOD_IN_INT0_VECT)(void) = NULL;
|
||||
void (* volatile isr_func_ACA_AC0_vect)(void);
|
||||
|
||||
@@ -119,6 +119,8 @@ typedef enum {
|
||||
extern uint8_t CodecBuffer[CODEC_BUFFER_SIZE];
|
||||
extern uint8_t CodecBuffer2[CODEC_BUFFER_SIZE];
|
||||
|
||||
extern enum RCTraffic {TRAFFIC_READER, TRAFFIC_CARD} SniffTrafficSource;
|
||||
|
||||
/* Shared ISR pointers and handlers */
|
||||
extern void (* volatile isr_func_TCD0_CCC_vect)(void);
|
||||
void isr_Reader14443_2A_TCD0_CCC_vect(void);
|
||||
|
||||
@@ -56,8 +56,6 @@ static volatile uint16_t ReaderBitCount;
|
||||
static volatile uint16_t CardBitCount;
|
||||
static volatile uint16_t rawBitCount;
|
||||
|
||||
enum RCTraffic TrafficSource;
|
||||
|
||||
INLINE void CardSniffInit(void);
|
||||
INLINE void CardSniffDeinit(void);
|
||||
|
||||
@@ -510,7 +508,7 @@ void Sniff14443ACodecTask(void) {
|
||||
// Let the Application layer know where this data comes from
|
||||
LEDHook(LED_CODEC_RX, LED_PULSE);
|
||||
|
||||
TrafficSource = TRAFFIC_READER;
|
||||
SniffTrafficSource = TRAFFIC_READER;
|
||||
ApplicationProcess(CodecBuffer, ReaderBitCount);
|
||||
}
|
||||
|
||||
@@ -523,7 +521,7 @@ void Sniff14443ACodecTask(void) {
|
||||
LEDHook(LED_CODEC_RX, LED_PULSE);
|
||||
|
||||
// Let the Application layer know where this data comes from
|
||||
TrafficSource = TRAFFIC_CARD;
|
||||
SniffTrafficSource = TRAFFIC_CARD;
|
||||
ApplicationProcess(CodecBuffer2, CardBitCount);
|
||||
}
|
||||
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
#include "Codec.h"
|
||||
#include "Terminal/CommandLine.h"
|
||||
|
||||
extern enum RCTraffic {TRAFFIC_READER, TRAFFIC_CARD} TrafficSource;
|
||||
/* Codec Interface */
|
||||
void Sniff14443ACodecInit(void);
|
||||
void Sniff14443ACodecDeInit(void);
|
||||
|
||||
@@ -50,7 +50,6 @@ static volatile uint8_t ShiftRegister;
|
||||
static volatile uint8_t ByteCount;
|
||||
static volatile uint8_t ReaderByteCount;
|
||||
static volatile uint8_t CardByteCount;
|
||||
static volatile uint16_t DemodByteCount;
|
||||
static volatile uint16_t SampleDataCount;
|
||||
|
||||
/////////////////////////////////////////////////
|
||||
@@ -741,11 +740,12 @@ void SniffISO15693CodecTask(void) {
|
||||
if (Flags.ReaderDemodFinished) {
|
||||
Flags.ReaderDemodFinished = 0;
|
||||
|
||||
DemodByteCount = ReaderByteCount;
|
||||
|
||||
if (DemodByteCount > 0) {
|
||||
LogEntry(LOG_INFO_CODEC_SNI_READER_DATA, CodecBuffer, DemodByteCount);
|
||||
if (ReaderByteCount > 0) {
|
||||
LogEntry(LOG_INFO_CODEC_SNI_READER_DATA, CodecBuffer, ReaderByteCount);
|
||||
LEDHook(LED_CODEC_RX, LED_PULSE);
|
||||
|
||||
SniffTrafficSource = TRAFFIC_READER;
|
||||
ApplicationProcess(CodecBuffer, ReaderByteCount);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -753,12 +753,13 @@ void SniffISO15693CodecTask(void) {
|
||||
if(Flags.CardDemodFinished) {
|
||||
Flags.CardDemodFinished = 0;
|
||||
|
||||
DemodByteCount = CardByteCount;
|
||||
|
||||
if (DemodByteCount > 0) {
|
||||
LogEntry(LOG_INFO_CODEC_SNI_CARD_DATA, CodecBuffer2, DemodByteCount);
|
||||
if (CardByteCount > 0) {
|
||||
LogEntry(LOG_INFO_CODEC_SNI_CARD_DATA, CodecBuffer2, CardByteCount);
|
||||
LEDHook(LED_CODEC_RX, LED_PULSE);
|
||||
|
||||
SniffTrafficSource = TRAFFIC_CARD;
|
||||
ApplicationProcess(CodecBuffer2, CardByteCount);
|
||||
/* Note: the application might want to know if the frame is broken, need to extern bBrokenFrame */
|
||||
}
|
||||
|
||||
ReaderSniffInit();
|
||||
|
||||
Reference in New Issue
Block a user