diff options
author | pascal <pascal@localhost> | 2012-04-13 20:01:16 +0000 |
---|---|---|
committer | pascal <pascal@localhost> | 2012-04-13 20:01:16 +0000 |
commit | 8fd3fcfd7879b6297f5cf622e4651cb34e658f54 (patch) | |
tree | 4625a9f0b63b9545894df41ddc2f80658ba65cda /epan/dissectors/packet-rfid-pn532.c | |
parent | f2f11f4a2b772602894ad19f34cc21cc6c46f9b4 (diff) |
From Tyson Key:
Additional PN532 dissector opcode descriptions
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=7078
svn path=/trunk/; revision=42052
Diffstat (limited to 'epan/dissectors/packet-rfid-pn532.c')
-rw-r--r-- | epan/dissectors/packet-rfid-pn532.c | 120 |
1 files changed, 92 insertions, 28 deletions
diff --git a/epan/dissectors/packet-rfid-pn532.c b/epan/dissectors/packet-rfid-pn532.c index 3371a74ea9..18480497da 100644 --- a/epan/dissectors/packet-rfid-pn532.c +++ b/epan/dissectors/packet-rfid-pn532.c @@ -58,16 +58,24 @@ static int hf_pn532_14443b_pupi = -1; static int hf_pn532_14443b_app_data = -1; static int hf_pn532_14443b_proto_info = -1; -/* - Command Set (Misc) - */ -#define DIAGNOSE 0x00 +/* Diagnose hardware status */ +#define DIAGNOSE_REQ 0x00 +#define DIAGNOSE_RSP 0x01 /* Get Firmware Version */ #define GET_FIRMWARE_VERSION_REQ 0x02 #define GET_FIRMWARE_VERSION_RSP 0x03 #define GET_GENERAL_STATUS 0x04 -#define READ_REGISTER 0x06 -#define WRITE_REGISTER 0x08 + +/* Read from a chipset register */ +#define READ_REGISTER_REQ 0x06 +#define READ_REGISTER_RSP 0x07 + +/* Write Register */ +#define WRITE_REGISTER_REQ 0x08 +#define WRITE_REGISTER_RSP 0x09 + #define READ_GPIO 0x0C #define WRITE_GPIO 0x0E #define SET_SERIAL_BAUD_RATE 0x10 @@ -76,7 +84,9 @@ static int hf_pn532_14443b_proto_info = -1; #define POWER_DOWN 0x16 /* RF Communication Commands */ -#define RF_CONFIGURATION 0x32 +#define RF_CONFIGURATION_REQ 0x32 +#define RF_CONFIGURATION_RSP 0x33 + #define RF_REGULATION_TEST 0x58 /* - Initiator Commands - */ @@ -89,15 +99,24 @@ static int hf_pn532_14443b_proto_info = -1; #define IN_ATR 0x50 #define IN_PSL 0x4E -#define IN_DATA_EXCHANGE 0x40 + +/* Data Exchange */ +#define IN_DATA_EXCHANGE_REQ 0x40 +#define IN_DATA_EXCHANGE_RSP 0x41 /* Communicate through */ #define IN_COMMUNICATE_THRU_REQ 0x42 #define IN_COMMUNICATE_THRU_RSP 0x43 -#define IN_DESELECT 0x44 +/* Deselect target token */ +#define IN_DESELECT_REQ 0x44 +#define IN_DESELECT_RSP 0x45 + #define IN_RELEASE 0x52 -#define IN_SELECT 0x54 + +/* Select target token */ +#define IN_SELECT_REQ 0x54 +#define IN_SELECT_RSP 0x55 /* Auto/long-time polling*/ #define IN_AUTO_POLL_REQ 0x60 @@ -125,22 +144,34 @@ static int hf_pn532_14443b_proto_info = -1; #define JEWEL_14443A_106 0x04 static const value_string pn532_commands[] = { - {DIAGNOSE, "Diagnose"}, - + {DIAGNOSE_REQ, "Diagnose"}, + {DIAGNOSE_RSP, "Diagnose (Response)"}, + /* Discover the device's firmware version */ {GET_FIRMWARE_VERSION_REQ, "GetFirmwareVersion"}, {GET_FIRMWARE_VERSION_RSP, "GetFirmwareVersion (Response)"}, {GET_GENERAL_STATUS, "GetGeneralStatus"}, - {READ_REGISTER, "ReadRegister"}, - {WRITE_REGISTER, "WriteRegister"}, - {READ_GPIO, "ReadGPIO"}, + + /* Read from a chipset register */ + {READ_REGISTER_REQ, "ReadRegister"}, + {READ_REGISTER_RSP, "ReadRegister (Response)"}, + + /* Write to a chipset register */ + {WRITE_REGISTER_REQ, "WriteRegister"}, + {WRITE_REGISTER_RSP, "WriteRegister (Response)"}, + + {READ_GPIO, "ReadGPIO"}, {WRITE_GPIO, "WriteGPIO"}, {SET_SERIAL_BAUD_RATE, "SetSerialBaudRate"}, {SET_PARAMETERS, "SetParameters"}, {SAM_CONFIGURATION, "SAMConfiguration"}, {POWER_DOWN, "PowerDown"}, - {RF_CONFIGURATION, "RFConfiguration"}, + + /* RF Configuration */ + {RF_CONFIGURATION_REQ, "RFConfiguration"}, + {RF_CONFIGURATION_RSP, "RFConfiguration (Response)"}, + {RF_REGULATION_TEST, "RFRegulationTest"}, {IN_JUMP_FOR_DEP, "InJumpForDEP"}, {IN_JUMP_FOR_PSL, "InJumpForPSL"}, @@ -151,16 +182,25 @@ static const value_string pn532_commands[] = { {IN_ATR, "InATR"}, {IN_PSL, "InPSL"}, - {IN_DATA_EXCHANGE, "InDataExchange"}, + + /* Data Exchange */ + {IN_DATA_EXCHANGE_REQ, "InDataExchange"}, + {IN_DATA_EXCHANGE_RSP, "InDataExchange (Response)"}, /* Communicate through */ {IN_COMMUNICATE_THRU_REQ, "InCommunicateThru"}, {IN_COMMUNICATE_THRU_RSP, "InCommunicateThru (Response)"}, - {IN_DESELECT, "InDeselect"}, + /* Deselect the target token */ + {IN_DESELECT_REQ, "InDeselect"}, + {IN_DESELECT_RSP, "InDeselect (Response)"}, + {IN_RELEASE, "InRelease"}, - {IN_SELECT, "InSelect"}, - + + /* Select target token */ + {IN_SELECT_REQ, "InSelect"}, + {IN_SELECT_RSP, "InSelect (Response)"}, + /* Automatic/long-time polling */ {IN_AUTO_POLL_REQ, "InAutoPoll"}, {IN_AUTO_POLL_RES, "InAutoPoll (Response)"}, @@ -232,13 +272,19 @@ dissect_pn532(tvbuff_t * tvb, packet_info * pinfo, proto_tree *tree) switch (cmd) { - case DIAGNOSE: + /* Device Diagnosis Request */ + case DIAGNOSE_REQ: break; - /* Device Firmware Version */ + /* Device Diagnosis Response */ + case DIAGNOSE_RSP: + break; + + /* Device Firmware Version Request */ case GET_FIRMWARE_VERSION_REQ: break; - + + /* Device Firmware Version Response */ case GET_FIRMWARE_VERSION_RSP: proto_tree_add_item(pn532_tree, hf_pn532_ic_version, tvb, 2, 1, ENC_NA); proto_tree_add_item(pn532_tree, hf_pn532_fw_version, tvb, 3, 1, ENC_NA); @@ -249,12 +295,18 @@ dissect_pn532(tvbuff_t * tvb, packet_info * pinfo, proto_tree *tree) case GET_GENERAL_STATUS: break; - case READ_REGISTER: + case READ_REGISTER_REQ: break; - case WRITE_REGISTER: + case READ_REGISTER_RSP: break; - + + case WRITE_REGISTER_REQ: + break; + + case WRITE_REGISTER_RSP: + break; + case READ_GPIO: break; @@ -273,7 +325,10 @@ dissect_pn532(tvbuff_t * tvb, packet_info * pinfo, proto_tree *tree) case POWER_DOWN: break; - case RF_CONFIGURATION: + case RF_CONFIGURATION_REQ: + break; + + case RF_CONFIGURATION_RSP: break; case RF_REGULATION_TEST: @@ -370,19 +425,28 @@ dissect_pn532(tvbuff_t * tvb, packet_info * pinfo, proto_tree *tree) case IN_PSL: break; - case IN_DATA_EXCHANGE: + case IN_DATA_EXCHANGE_REQ: + break; + + case IN_DATA_EXCHANGE_RSP: break; case IN_COMMUNICATE_THRU_REQ: break; - case IN_DESELECT: + case IN_DESELECT_REQ: + break; + + case IN_DESELECT_RSP: break; case IN_RELEASE: break; - case IN_SELECT: + case IN_SELECT_REQ: + break; + + case IN_SELECT_RSP: break; case IN_AUTO_POLL_REQ: |