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_LOG_GENERATE_AC 0x05 00063 00064 #define APP_ERASE_EEPROM 0x06 00065 00066 #define APP_SERIAL_PORT 0x07 00067 00069 #define APPLICATION_COUNT 7 00070 00072 // These should be in the order of their IDs 00073 static char* appStrings[] = { 00074 "Virtual Serial", 00075 "Forward and Log", 00076 "Filter amount", 00077 "Terminal", 00078 "Forward Log AC", 00079 "Erase EEPROM", 00080 "Serial Iface", 00081 }; 00082 00083 00084 /* Global external variables */ 00085 extern uint8_t warmResetByte; // stores the status of last card reset (warm/cold) 00086 extern CRP* transactionData[MAX_EXCHANGES]; // used to log data 00087 extern uint8_t nTransactions; // used to log data 00088 extern uint8_t lcdAvailable; // non-zero if LCD is working 00089 extern uint8_t nCounter; // number of transactions 00090 extern uint8_t selected; // ID of application selected 00091 extern uint8_t bootkey; // used for bootloader jump 00092 extern volatile uint32_t usCounter; // micro-second counter 00093 00095 uint8_t VirtualSerial(); 00096 00098 uint8_t SerialInterface(); 00099 00101 void EraseEEPROM(); 00102 00104 void ResetEEPROM(); 00105 00107 void RunBootloader(); 00108 00110 uint8_t ForwardData(log_struct_t *logger); 00111 00113 uint8_t ForwardDataLogAC(log_struct_t *logger); 00114 00116 uint8_t FilterGenerateAC(log_struct_t *logger); 00117 00119 uint8_t StorePIN(log_struct_t *logger); 00120 00122 uint8_t ForwardAndChangePIN(log_struct_t *logger); 00123 00125 uint8_t Terminal(log_struct_t *logger); 00126 00128 void WriteLogEEPROM(log_struct_t *logger); 00129 00130 #endif // _APPS_H_ 00131