The Smart Card Detective (SCD)
|
00001 00035 #ifndef _APPS_H_ 00036 #define _APPS_H_ 00037 00038 #include <avr/io.h> 00039 00040 #include "emv.h" 00041 #include "scd_logger.h" 00042 00044 #define MAX_EXCHANGES 50 00045 00047 #define MAGIC_BOOT_KEY 0x77 00048 00050 #define EEPROM_PIN 0x8 00051 00053 00054 #define APP_VIRTUAL_SERIAL_PORT 0x01 00055 00056 #define APP_FORWARD 0x02 00057 00058 #define APP_FILTER_GENERATEAC 0x03 00059 00060 #define APP_TERMINAL 0x04 00061 00062 #define APP_ERASE_EEPROM 0x05 00063 00065 #define APPLICATION_COUNT 5 00066 00068 // These should be in the order of their IDs 00069 static char* appStrings[] = { 00070 "Virtual Serial", 00071 "Forward and Log", 00072 "Filter amount", 00073 "Terminal", 00074 "Erase EEPROM", 00075 }; 00076 00077 00078 /* Global external variables */ 00079 extern uint8_t warmResetByte; // stores the status of last card reset (warm/cold) 00080 extern CRP* transactionData[MAX_EXCHANGES]; // used to log data 00081 extern uint8_t nTransactions; // used to log data 00082 extern uint8_t lcdAvailable; // non-zero if LCD is working 00083 extern uint8_t nCounter; // number of transactions 00084 extern uint8_t selected; // ID of application selected 00085 extern uint8_t bootkey; // used for bootloader jump 00086 extern volatile uint32_t usCounter; // micro-second counter 00087 00089 uint8_t VirtualSerial(); 00090 00092 uint8_t SerialInterface(); 00093 00095 void EraseEEPROM(); 00096 00098 void ResetEEPROM(); 00099 00101 void RunBootloader(); 00102 00104 uint8_t ForwardData(log_struct_t *logger); 00105 00107 uint8_t ForwardDataLogAC(log_struct_t *logger); 00108 00110 uint8_t FilterGenerateAC(log_struct_t *logger); 00111 00113 uint8_t StorePIN(log_struct_t *logger); 00114 00116 uint8_t ForwardAndChangePIN(log_struct_t *logger); 00117 00119 uint8_t Terminal(log_struct_t *logger); 00120 00122 void WriteLogEEPROM(log_struct_t *logger); 00123 00124 #endif // _APPS_H_ 00125