1818 */
1919public class LogUtils {
2020
21+ public static final int DATADIR_INCOMING = 0 ;
22+ public static final int DATADIR_OUTGOING = 1 ;
23+ public static final int DATADIR_BIDIRECTIONAL = 2 ;
24+
2125 public enum LogCode {
2226 /* Generic */
23- LOG_INFO_GENERIC (0x10 , "Unspecific log entry." ),
24- LOG_INFO_CONFIG_SET (0x11 , "Configuration change." ),
25- LOG_INFO_SETTING_SET (0x12 , "Setting change." ),
26- LOG_INFO_UID_SET (0x13 , "UID change." ),
27- LOG_INFO_RESET_APP (0x20 , "Application reset." ),
27+ LOG_INFO_GENERIC (0x10 , DATADIR_BIDIRECTIONAL , "Unspecific log entry." ),
28+ LOG_INFO_CONFIG_SET (0x11 , DATADIR_BIDIRECTIONAL , "Configuration change." ),
29+ LOG_INFO_SETTING_SET (0x12 , DATADIR_BIDIRECTIONAL , "Setting change." ),
30+ LOG_INFO_UID_SET (0x13 , DATADIR_BIDIRECTIONAL , "UID change." ),
31+ LOG_INFO_RESET_APP (0x20 , DATADIR_BIDIRECTIONAL , "Application reset." ),
2832 /* Codec */
29- LOG_INFO_CODEC_RX_DATA (0x40 , "Currently active codec received data." ),
30- LOG_INFO_CODEC_TX_DATA (0x41 , "Currently active codec sent data." ),
31- LOG_INFO_CODEC_RX_DATA_W_PARITY (0x42 , "Currently active codec received data." ),
32- LOG_INFO_CODEC_TX_DATA_W_PARITY (0x43 , "Currently active codec sent data." ),
33+ LOG_INFO_CODEC_RX_DATA (0x40 , DATADIR_OUTGOING , "Currently active codec received data." ),
34+ LOG_INFO_CODEC_TX_DATA (0x41 , DATADIR_OUTGOING , "Currently active codec sent data." ),
35+ LOG_INFO_CODEC_RX_DATA_W_PARITY (0x42 , DATADIR_OUTGOING , "Currently active codec received data." ),
36+ LOG_INFO_CODEC_TX_DATA_W_PARITY (0x43 , DATADIR_OUTGOING , "Currently active codec sent data." ),
37+ LOG_INFO_CODEC_SNI_READER_DATA (0x44 , DATADIR_INCOMING , "Sniffing codec receive data from reader." ),
38+ LOG_INFO_CODEC_SNI_READER_DATA_W_PARITY (0x44 , DATADIR_INCOMING , "Sniffing codec receive data from reader" ),
39+ LOG_INFO_CODEC_SNI_CARD_DATA (0x46 , DATADIR_INCOMING , "Sniffing codec receive data from card." ),
40+ LOG_INFO_CODEC_SNI_CARD_DATA_W_PARITY (0x47 , DATADIR_INCOMING , "Sniffing codec receive data from card." ),
3341 /* App */
34- LOG_INFO_APP_CMD_READ (0x80 , "Application processed read command." ),
35- LOG_INFO_APP_CMD_WRITE (0x81 , "Application processed write command." ),
36- LOG_INFO_APP_CMD_INC (0x84 , "Application processed increment command." ),
37- LOG_INFO_APP_CMD_DEC (0x85 , "Application processed decrement command." ),
38- LOG_INFO_APP_CMD_TRANSFER (0x86 , "Application processed transfer command." ),
39- LOG_INFO_APP_CMD_RESTORE (0x87 , "Application processed restore command." ),
40- LOG_INFO_APP_CMD_AUTH (0x90 , "Application processed authentication command." ),
41- LOG_INFO_APP_CMD_HALT (0x91 , "Application processed halt command." ),
42- LOG_INFO_APP_CMD_UNKNOWN (0x92 , "Application processed an unknown command." ),
43- LOG_INFO_APP_AUTHING (0xA0 , "Application is in `authing` state." ),
44- LOG_INFO_APP_AUTHED (0xA1 , "Application is in `auth` state." ),
42+ LOG_INFO_APP_CMD_READ (0x80 , DATADIR_BIDIRECTIONAL , "Application processed read command." ),
43+ LOG_INFO_APP_CMD_WRITE (0x81 , DATADIR_BIDIRECTIONAL , "Application processed write command." ),
44+ LOG_INFO_APP_CMD_INC (0x84 , DATADIR_BIDIRECTIONAL , "Application processed increment command." ),
45+ LOG_INFO_APP_CMD_DEC (0x85 , DATADIR_BIDIRECTIONAL , "Application processed decrement command." ),
46+ LOG_INFO_APP_CMD_TRANSFER (0x86 , DATADIR_BIDIRECTIONAL , "Application processed transfer command." ),
47+ LOG_INFO_APP_CMD_RESTORE (0x87 , DATADIR_BIDIRECTIONAL , "Application processed restore command." ),
48+ LOG_INFO_APP_CMD_AUTH (0x90 , DATADIR_BIDIRECTIONAL , "Application processed authentication command." ),
49+ LOG_INFO_APP_CMD_HALT (0x91 , DATADIR_BIDIRECTIONAL , "Application processed halt command." ),
50+ LOG_INFO_APP_CMD_UNKNOWN (0x92 , DATADIR_BIDIRECTIONAL , "Application processed an unknown command." ),
51+ LOG_INFO_APP_AUTHING (0xA0 , DATADIR_BIDIRECTIONAL , "Application is in `authing` state." ),
52+ LOG_INFO_APP_AUTHED (0xA1 , DATADIR_BIDIRECTIONAL , "Application is in `auth` state." ),
4553 /* Log errors */
46- LOG_ERR_APP_AUTH_FAIL (0xC0 , "Application authentication failed." ),
47- LOG_ERR_APP_CHECKSUM_FAIL (0xC1 , "Application had a checksum fail." ),
48- LOG_ERR_APP_NOT_AUTHED (0xC2 , "Application is not authenticated." ),
54+ LOG_ERR_APP_AUTH_FAIL (0xC0 , DATADIR_BIDIRECTIONAL , "Application authentication failed." ),
55+ LOG_ERR_APP_CHECKSUM_FAIL (0xC1 , DATADIR_BIDIRECTIONAL , "Application had a checksum fail." ),
56+ LOG_ERR_APP_NOT_AUTHED (0xC2 , DATADIR_BIDIRECTIONAL , "Application is not authenticated." ),
4957 /* Other Chameleon-specific */
50- LOG_INFO_SYSTEM_BOOT (0xFF , "Chameleon boots" ),
51- LOG_EMPTY (0x00 , "Empty Log Entry. This is not followed by a length byte nor the two systick bytes nor any data." ),
52- LOG_CODE_DNE (0xff , "This is a dummy log code entry for matching where the input code does not exist." );
58+ LOG_INFO_SYSTEM_BOOT (0xFF , DATADIR_BIDIRECTIONAL , "Chameleon boots" ),
59+ LOG_EMPTY (0x00 , DATADIR_BIDIRECTIONAL , "Empty Log Entry. This is not followed by a length byte nor the two systick bytes nor any data." ),
60+ LOG_CODE_DNE (0xff , DATADIR_BIDIRECTIONAL , "This is a dummy log code entry for matching where the input code does not exist." );
5361
5462 /**
5563 * Stores a mapping of the log codes to their enum values.
@@ -67,15 +75,17 @@ public enum LogCode {
6775 * Local data stored by the class.
6876 */
6977 private int logCode ;
78+ private int logDataDirection ;
7079 private String logDesc ;
7180
7281 /**
7382 * Constructor.
7483 * @param lcode
7584 * @param ldesc
7685 */
77- private LogCode (int lcode , String ldesc ) {
86+ private LogCode (int lcode , int ldd , String ldesc ) {
7887 logCode = lcode ;
88+ logDataDirection = ldd ;
7989 logDesc = ldesc ;
8090 }
8191
@@ -86,6 +96,7 @@ private LogCode(int lcode, String ldesc) {
8696 public int toInteger () {
8797 return logCode ;
8898 }
99+ public int getDataDirection () { return logDataDirection ; }
89100 public String getDesc () { return logDesc ; }
90101
91102 /**
@@ -108,6 +119,9 @@ public static LogCode lookupByLogCode(int lcode) {
108119 */
109120 public static String getShortCodeName (int lcode ) {
110121 LogCode lc = lookupByLogCode (lcode );
122+ if (lc == null ) {
123+ return "UNKNOWN_LOG_CODE" ;
124+ }
111125 String longName = lc .name ();
112126 longName = longName .replace ("LOG_INFO_" , "" );
113127 longName = longName .replace ("LOG_INFO_CODEC_" , "" );
@@ -118,4 +132,17 @@ public static String getShortCodeName(int lcode) {
118132
119133 }
120134
135+ /**
136+ * Returns the data transfer direction based on the logging code.
137+ * Note that this bidirectional sniffing output from the Chameleon Rev. G
138+ * boards is fairly recent as of (9-10/2018).
139+ */
140+ public static int getDataDirection (int lcode ) {
141+ LogCode lc = LogCode .lookupByLogCode (lcode );
142+ if (lc == null ) {
143+ return DATADIR_BIDIRECTIONAL ;
144+ }
145+ return lc .getDataDirection ();
146+ }
147+
121148}
0 commit comments