The Smart Card Detective (SCD)
|
00001 00037 #ifndef _SCD_LOGGER_H_ 00038 #define _SCD_LOGGER_H_ 00039 00040 #include <stdint.h> 00041 00042 #define LOG_BUFFER_SIZE 3000 // static for simplicity 00043 // we are restricted here by the memory capacity 00044 00046 struct log_struct { 00047 uint8_t log_buffer[LOG_BUFFER_SIZE]; 00048 uint32_t position; 00049 }; 00050 typedef struct log_struct log_struct_t; 00051 00052 00061 typedef enum { 00062 // EMV/ISO-7816 data bytes 00063 LOG_BYTE_ATR_FROM_ICC = (0x00 << 2 | 0x00), // 0x00 00064 LOG_BYTE_ATR_TO_TERMINAL = (0x01 << 2 | 0x00), // 0x04 00065 LOG_BYTE_TO_TERMINAL = (0x02 << 2 | 0x00), // 0x08 00066 LOG_BYTE_FROM_TERMINAL = (0x03 << 2 | 0x00), // 0x0C 00067 LOG_BYTE_TO_ICC = (0x04 << 2 | 0x00), // 0x10 00068 LOG_BYTE_FROM_ICC = (0x05 << 2 | 0x00), // 0x14 00069 00070 // Terminal events 00071 LOG_TERMINAL_CLK_ACTIVE = (0x10 << 2 | 0x00), // 0x40 00072 LOG_TERMINAL_RST_LOW = (0x11 << 2 | 0x00), // 0x44 00073 LOG_TERMINAL_TIME_OUT = (0x12 << 2 | 0x00), // 0x48 00074 LOG_TERMINAL_ERROR_RECEIVE = (0x13 << 2 | 0x00), // 0x4C 00075 LOG_TERMINAL_ERROR_SEND = (0x14 << 2 | 0x00), // 0x50 00076 LOG_TERMINAL_NO_CLOCK = (0x15 << 2 | 0x00), // 0x54 00077 00078 // ICC events 00079 LOG_ICC_ACTIVATED = (0x20 << 2 | 0x00), // 0x80 00080 LOG_ICC_DEACTIVATED = (0x21 << 2 | 0x00), // 0x84 00081 LOG_ICC_RST_HIGH = (0x22 << 2 | 0x00), // 0x88 00082 LOG_ICC_ERROR_RECEIVE = (0x23 << 2 | 0x00), // 0x8C 00083 LOG_ICC_ERROR_SEND = (0x24 << 2 | 0x00), // 0x90 00084 LOG_ICC_INSERTED = (0x25 << 2 | 0x00), // 0x94 00085 00086 // General events 00087 // The time should be saved as little endian using 4 bytes 00088 LOG_TIME_DATA_TO_ICC = (0x30 << 2 | 0x03), // 0xC3 00089 LOG_TIME_GENERAL = (0x31 << 2 | 0x03), // 0xC7 00090 // Error events 00091 LOG_ERROR_MEMORY = (0x32 << 2 | 0x00), // 0xC8 00092 LOG_WDT_RESET = (0x33 << 2 | 0x00), // 0xCC 00093 00094 }SCD_LOG_BYTE; 00095 00100 typedef enum{ 00101 LOG_COM_SIDE_ICC = 0, 00102 LOG_COM_SIDE_TERMINAL = 1, 00103 LOG_COM_SIDE_BOTH = 2, 00104 }LOG_COM_SIDE; 00105 00107 void ResetLogger(log_struct_t *logger); 00108 00110 uint8_t LogByte1(log_struct_t *logger, SCD_LOG_BYTE type, uint8_t byte_a); 00111 00113 uint8_t LogByte2(log_struct_t *logger, SCD_LOG_BYTE type, uint8_t byte_a, 00114 uint8_t byte_b); 00115 00117 uint8_t LogByte3(log_struct_t *logger, SCD_LOG_BYTE type, uint8_t byte_a, 00118 uint8_t byte_b, uint8_t byte_c); 00119 00121 uint8_t LogByte4(log_struct_t *logger, SCD_LOG_BYTE type, uint8_t byte_a, 00122 uint8_t byte_b, uint8_t byte_c, uint8_t byte_d); 00123 00124 00125 #endif // _SCD_LOGGER_H_ 00126