464 lines
8.9 KiB
Plaintext
464 lines
8.9 KiB
Plaintext
little_endian_packets
|
|
|
|
enum PacketBoundaryFlag : 1 {
|
|
COMPLETE_OR_FINAL = 0,
|
|
INCOMPLETE = 1,
|
|
}
|
|
|
|
enum NciMsgType : 3 {
|
|
DATA = 0,
|
|
COMMAND = 1,
|
|
RESPONSE = 2,
|
|
NOTIFICATION = 3,
|
|
}
|
|
|
|
enum Opcode : 8 {
|
|
CORE_RESET = 0x0,
|
|
CORE_INIT = 0x1,
|
|
CORE_SET_CONFIG = 0x2,
|
|
CORE_GET_CONFIG = 0x3,
|
|
CORE_CONN_CREATE = 0x4,
|
|
CORE_CONN_CLOSE = 0x5,
|
|
CORE_CONN_CREDITS = 0x6,
|
|
CORE_GENERIC_ERROR = 0x7,
|
|
CORE_INTERFACE_ERROR = 0x8,
|
|
CORE_SET_POWER_SUBSTATE = 0x9,
|
|
RF_DISCOVER_MAP = 0x40,
|
|
RF_SET_LISTEN_MODE_ROUTING = 0x41,
|
|
RF_GET_LISTEN_MODE_ROUTING = 0x42,
|
|
RF_DISCOVER = 0x43,
|
|
RF_DISCOVER_SELECT = 0x44,
|
|
RF_INTF_ACTIVATED = 0x45,
|
|
RF_DIACTIVATE = 0x46,
|
|
RF_FIELD_INFO = 0x47,
|
|
RF_T3T_POLLING = 0x48,
|
|
RF_NFCEE_ACTION = 0x49,
|
|
RF_NFCEE_DISCOVERY_REQ = 0x4A,
|
|
RF_PARAMETER_UPDATE = 0x4B,
|
|
RF_INTF_EXT_START = 0x4C,
|
|
RF_INTF_EXT_STOP = 0x4D,
|
|
RF_EXT_AGG_ABORT = 0x4E,
|
|
RF_NDEF_ABORT = 0x4F,
|
|
RF_ISO_DEP_NAK_PRESENCE = 0x50,
|
|
RF_SET_FORCED_NFCEE_ROUTING_CMD = 0x51,
|
|
}
|
|
|
|
enum Status : 8 {
|
|
OK = 0x00,
|
|
REJECTED = 0x01,
|
|
FAILED = 0x03,
|
|
NOT_INITIALIZED = 0x04,
|
|
SYNTAX_ERROR = 0x05,
|
|
SEMANTIC_ERROR = 0x06,
|
|
INVALID_PARAM = 0x09,
|
|
MESSAGE_SIZE_EXCEEDED = 0x0A,
|
|
OK_1_BIT = 0x11,
|
|
OK_2_BIT = 0x12,
|
|
OK_3_BIT = 0x13,
|
|
OK_4_BIT = 0x14,
|
|
OK_5_BIT = 0x15,
|
|
OK_6_BIT = 0x16,
|
|
OK_7_BIT = 0x17,
|
|
DISCOVERY_ALREADY_STARTED = 0xA0,
|
|
DISCOVERY_TARGET_ACTIVATION_FAILED = 0xA1,
|
|
DISCOVERY_TEAR_DOWN = 0xA2,
|
|
RF_FRAME_CORRUPTED = 0x02,
|
|
RF_TRANSMISSION_EXCEPTION = 0xB0,
|
|
RF_PROTOCOL_EXCEPTION = 0xB1,
|
|
RF_TIMEOUT_EXCEPTION = 0xB2,
|
|
RF_UNEXPECTED_DATA = 0xB3,
|
|
NFCEE_INTERFACE_ACTIVATION_FAILED = 0xC0,
|
|
NFCEE_TRANSMISSION_ERROR = 0xC1,
|
|
NFCEE_PROTOCOL_ERROR = 0xC2,
|
|
NFCEE_TIMEOUT_ERROR = 0xC3,
|
|
}
|
|
|
|
packet Nci {
|
|
gid : 4,
|
|
pbf : PacketBoundaryFlag,
|
|
mt : NciMsgType,
|
|
_payload_,
|
|
}
|
|
|
|
packet Command : Nci (mt = COMMAND) {
|
|
op : Opcode,
|
|
_size_(_payload_) : 8,
|
|
_payload_,
|
|
}
|
|
|
|
packet Response : Nci (mt = RESPONSE) {
|
|
cmd_op : Opcode,
|
|
_size_(_payload_) : 8,
|
|
_payload_,
|
|
}
|
|
|
|
packet Notification : Nci (mt = NOTIFICATION) {
|
|
cmd_op : Opcode,
|
|
_size_(_payload_) : 8,
|
|
_payload_,
|
|
}
|
|
|
|
packet Data {
|
|
conn_id : 4,
|
|
pbf : PacketBoundaryFlag,
|
|
_fixed_ = 0x0 : 3,
|
|
cr : 8,
|
|
_size_(_payload_) : 8,
|
|
_payload_,
|
|
}
|
|
|
|
enum ResetType : 8 {
|
|
KEEP_CONFIG = 0,
|
|
RESET_CONFIG = 1,
|
|
}
|
|
|
|
packet ResetCommand : Command (op = CORE_RESET) {
|
|
reset_type: ResetType,
|
|
}
|
|
|
|
test ResetCommand {
|
|
"\x20\x00\x01\x01",
|
|
}
|
|
|
|
packet ResetResponse : Response (cmd_op = CORE_RESET) {
|
|
status: Status,
|
|
}
|
|
|
|
test ResetResponse {
|
|
"\x40\x00\x01\x00",
|
|
}
|
|
|
|
enum ResetTrigger : 8 {
|
|
UNRECOVERABLE_ERROR = 0,
|
|
POWER_ON = 1,
|
|
RESET_COMMAND = 2,
|
|
}
|
|
|
|
enum NciVersion : 8 {
|
|
VERSION_1_0 = 0x10,
|
|
VERSION_1_1 = 0x11,
|
|
VERSION_2_0 = 0x20,
|
|
}
|
|
|
|
enum ConfigStatus : 8 {
|
|
CONFIG_KEPT = 0x00,
|
|
CONFIG_RESET = 0x01,
|
|
}
|
|
|
|
packet ResetNotification : Notification (cmd_op = CORE_RESET) {
|
|
trigger : ResetTrigger,
|
|
config_status : ConfigStatus,
|
|
nci_version : NciVersion,
|
|
manufacturer_id: 8,
|
|
_size_(mfsi) : 8,
|
|
mfsi : 8[],
|
|
}
|
|
|
|
test ResetNotification {
|
|
"\x60\x00\x1f\x02\x01\x20\x02\x1a\x05\x03\x03\x06\x88\x97\x01\x06\x00\x00\x44\x64\xd6\x00\x00\xec\x10\x00\x00\x00\x01\x00\x00\xee\xe7\x02",
|
|
}
|
|
|
|
enum FeatureEnable : 16 {
|
|
RFU = 0,
|
|
}
|
|
|
|
|
|
enum DiscConfMode : 2 {
|
|
DH_ONLY = 0x0,
|
|
DH_AND_EE = 0x1,
|
|
}
|
|
|
|
enum FeatureState : 1 {
|
|
DISABLED = 0,
|
|
AVAILABLE = 1,
|
|
}
|
|
|
|
struct PropCaps {
|
|
b7 : 1,
|
|
b6 : 1,
|
|
b5 : 1,
|
|
b4 : 1,
|
|
b3 : 1,
|
|
b2 : 1,
|
|
b1 : 1,
|
|
b0 : 1,
|
|
}
|
|
|
|
struct NfccFeatures {
|
|
disc_freq_conf : FeatureState,
|
|
disc_conf_mode : DiscConfMode,
|
|
hci_net_support : FeatureState,
|
|
active_comm_mode : FeatureState,
|
|
_reserved_ : 3,
|
|
_reserved_: 1,
|
|
tech_routing : FeatureState,
|
|
proto_routing : FeatureState,
|
|
aid_routing : FeatureState,
|
|
syc_code_routing : FeatureState,
|
|
apdu_pttn_routing : FeatureState,
|
|
forced_nfcee_routing : FeatureState,
|
|
_reserved_ : 1,
|
|
batt_off_st : FeatureState,
|
|
soff_st : FeatureState,
|
|
swon_subst : FeatureState,
|
|
rf_conf_soff: FeatureState,
|
|
_reserved_ : 4,
|
|
prop_caps: PropCaps,
|
|
}
|
|
|
|
enum Intf : 8 {
|
|
NFCEE_DIRECT_RF = 0x00,
|
|
FRAME_RF = 0x01,
|
|
ISO_DEP_RF = 0x02,
|
|
NFC_DEP_RF = 0x03,
|
|
NDEF_RF = 0x06,
|
|
}
|
|
|
|
enum Extns : 8 {
|
|
FR_AGREG_RF_EXT = 0x00,
|
|
LLCP_SYM_RF_EXT = 0x01,
|
|
}
|
|
|
|
struct ExtList {
|
|
ext : Extns,
|
|
}
|
|
|
|
struct RfInterface {
|
|
intf : 8,
|
|
_size_(extns) : 8,
|
|
extns : 8[],
|
|
}
|
|
|
|
packet InitCommand : Command (op = CORE_INIT) {
|
|
feature_enable : FeatureEnable,
|
|
}
|
|
|
|
test InitCommand {
|
|
"\x20\x01\x02\x00\x00",
|
|
}
|
|
|
|
packet InitResponse : Response (cmd_op = CORE_INIT) {
|
|
status : Status,
|
|
nfcc_features : NfccFeatures,
|
|
max_log_conns : 4, //TODO set max to 0x0E
|
|
_reserved_ : 4,
|
|
max_rout_tbls_size : 16,
|
|
max_ctrl_payload : 8, //TODO 32 <= val <= 255
|
|
max_data_payload : 8,
|
|
num_of_credits : 8,
|
|
max_nfcv_rf_frame_sz : 16,
|
|
_count_(rf_interface) : 8,
|
|
rf_interface: RfInterface[],
|
|
}
|
|
|
|
test InitResponse {
|
|
"\x40\x01\x18\x00\x1a\x7e\x06\x00\x01\x00\x04\xff\xff\x00\x0c\x01\x05\x01\x00\x02\x00\x03\x00\x00\x00\x90\x00",
|
|
}
|
|
|
|
enum ParamIds : 8 {
|
|
TOTAL_DURATION = 0x00,
|
|
CON_DISCOVERY_PARAM = 0x02,
|
|
POWER_STATE = 0x03,
|
|
PA_BAIL_OUT = 0x08,
|
|
PA_DEVICES_LIMIT = 0x09,
|
|
PB_AFI = 0x10,
|
|
PB_BAIL_OUT = 0x11,
|
|
PB_ATTRIB_PARAM1 = 0x12,
|
|
PB_SENSB_REQ_PARAM = 0x13,
|
|
PB_DEVICES_LIMIT = 0x14,
|
|
PF_BIT_RATE = 0x18,
|
|
PF_BAIL_OUT = 0x19,
|
|
PF_DEVICES_LIMIT = 0x1A,
|
|
PI_B_H_INFO = 0x20,
|
|
PI_BIT_RATE = 0x21,
|
|
PN_NFC_DEP_PSL = 0x28,
|
|
PN_ATR_REQ_GEN_BYTES = 0x29,
|
|
PN_ATR_REQ_CONFIG = 0x2A,
|
|
PV_DEVICES_LIMIT = 0x2F,
|
|
LA_BIT_FRAME_SDD = 0x30,
|
|
LA_PLATFORM_CONFIG = 0x31,
|
|
LA_SEL_INFO = 0x32,
|
|
LA_NFCID1 = 0x33,
|
|
LB_SENSB_INFO = 0x38,
|
|
LB_NFCID0 = 0x39,
|
|
LB_APPLICATION_DATA = 0x3A,
|
|
LB_SFGI = 0x3B,
|
|
LB_FWI_ADC_FO = 0x3C,
|
|
LB_BIT_RATE = 0x3E,
|
|
LF_T3T_IDENTIFIERS_1 = 0x40,
|
|
LF_T3T_IDENTIFIERS_2 = 0x41,
|
|
LF_T3T_IDENTIFIERS_3 = 0x42,
|
|
LF_T3T_IDENTIFIERS_4 = 0x43,
|
|
LF_T3T_IDENTIFIERS_5 = 0x44,
|
|
LF_T3T_IDENTIFIERS_6 = 0x45,
|
|
LF_T3T_IDENTIFIERS_7 = 0x46,
|
|
LF_T3T_IDENTIFIERS_8 = 0x47,
|
|
LF_T3T_IDENTIFIERS_9 = 0x48,
|
|
LF_T3T_IDENTIFIERS_10 = 0x49,
|
|
LF_T3T_IDENTIFIERS_11 = 0x4A,
|
|
LF_T3T_IDENTIFIERS_12 = 0x4B,
|
|
LF_T3T_IDENTIFIERS_13 = 0x4C,
|
|
LF_T3T_IDENTIFIERS_14 = 0x4D,
|
|
LF_T3T_IDENTIFIERS_15 = 0x4E,
|
|
LF_T3T_IDENTIFIERS_16 = 0x4F,
|
|
LF_T3T_MAX = 0x52,
|
|
LF_T3T_FLAGS = 0x53,
|
|
LF_T3T_RD_ALLOWED = 0x55,
|
|
LF_PROTOCOL_TYPE = 0x50,
|
|
LI_A_RATS_TB1 = 0x58,
|
|
LI_A_HIST_BY = 0x59,
|
|
LI_B_H_INFO_RESP = 0x5A,
|
|
LI_A_BIT_RATE = 0x5B,
|
|
LI_A_RATS_TC1 = 0x5C,
|
|
LN_WT = 0x60,
|
|
LN_ATR_RES_GEN_BYTES = 0x61,
|
|
LN_ATR_RES_CONFIG = 0x62,
|
|
PACM_BIT_RATE = 0x68,
|
|
RF_FIELD_INFO = 0x80,
|
|
RF_NFCEE_ACTION = 0x81,
|
|
NFCDEP_OP = 0x82,
|
|
LLCP_VERSION = 0x83,
|
|
NFCC_CONFIG_CONTROL = 0x85,
|
|
PROP0 = 0xa0,
|
|
PROP1 = 0xa1,
|
|
PROP2 = 0xa2,
|
|
PROP3 = 0xa3,
|
|
PROP4 = 0xa4,
|
|
PROP5 = 0xa5,
|
|
}
|
|
|
|
struct ConfigParams {
|
|
paramid : ParamIds,
|
|
_size_(valm) : 8,
|
|
valm : 8[],
|
|
}
|
|
|
|
struct ParamList {
|
|
pids : ParamIds,
|
|
}
|
|
|
|
packet SetConfigCommand : Command (op = CORE_SET_CONFIG) {
|
|
_count_(params) : 8,
|
|
params : ConfigParams[],
|
|
}
|
|
|
|
test SetConfigCommand {
|
|
"\x20\x02\x10\x05\x30\x01\x04\x31\x01\x00\x32\x01\x20\x38\x01\x01\x50\x01\x00",
|
|
}
|
|
|
|
packet SetConfigResponse : Response (cmd_op = CORE_SET_CONFIG) {
|
|
status : Status,
|
|
_count_(paramids) : 8,
|
|
paramids : ParamList[],
|
|
}
|
|
|
|
test SetConfigResponse {
|
|
"\x40\x02\x02\x00\x00",
|
|
}
|
|
|
|
packet GetConfigCommand : Command (op = CORE_GET_CONFIG) {
|
|
_count_(paramids) : 8,
|
|
paramids : ParamList[],
|
|
}
|
|
|
|
test GetConfigCommand {
|
|
"\x20\x03\x02\x01\x52",
|
|
}
|
|
|
|
packet GetConfigResponse : Response (cmd_op = CORE_GET_CONFIG) {
|
|
status : Status,
|
|
_count_(params) : 8,
|
|
params : ConfigParams[],
|
|
}
|
|
|
|
test GetConfigResponse {
|
|
"\x40\x03\x05\x00\x01\x52\x01\x10",
|
|
}
|
|
|
|
enum RfProtocols : 8 {
|
|
PROTOCOL_UNDETERMINED = 0x00,
|
|
PROTOCOL_T1T = 0x01,
|
|
PROTOCOL_T2T = 0x02,
|
|
PROTOCOL_T3T = 0x03,
|
|
PROTOCOL_ISO_DEP = 0x04,
|
|
PROTOCOL_NFC_DEP = 0x05,
|
|
PROTOCOL_T5T = 0x06,
|
|
PROTOCOL_NDEF = 0x07,
|
|
}
|
|
|
|
enum NfceeProtocols : 8 {
|
|
APDU = 0x00,
|
|
RFU = 0x01,
|
|
T3CS = 0x02,
|
|
TRANSPARENT = 0x04,
|
|
}
|
|
|
|
enum DestTypes : 8 {
|
|
RFU = 0x00,
|
|
NFCC_LPBK = 0x01,
|
|
REMOTE = 0x02,
|
|
NFCEE = 0x03,
|
|
}
|
|
|
|
enum DestParamTypes : 8 {
|
|
RF_DISC = 0x00,
|
|
NFCEE = 0x01,
|
|
}
|
|
|
|
struct RfDiscType {
|
|
id : 8,
|
|
proto: RfProtocols,
|
|
}
|
|
|
|
struct NfceeType {
|
|
id : 8,
|
|
proto : NfceeProtocols,
|
|
}
|
|
|
|
struct DestParams {
|
|
ptype : DestParamTypes,
|
|
_size_(valdsp) : 8,
|
|
valdsp : 8[],
|
|
}
|
|
|
|
packet ConnCreateCommand : Command (op = CORE_CONN_CREATE) {
|
|
dt : DestTypes,
|
|
_count_(destparams) : 8,
|
|
destparams : DestParams[],
|
|
}
|
|
|
|
packet ConnCreateResponse : Response (cmd_op = CORE_CONN_CREATE) {
|
|
status : Status,
|
|
mpps : 8,
|
|
ncreds : 8,
|
|
conn_id : 8,
|
|
}
|
|
|
|
packet ConnCloseCommand : Command (op = CORE_CONN_CLOSE) {
|
|
conn_id : 8,
|
|
}
|
|
|
|
packet ConnCloseResponse : Response (cmd_op = CORE_CONN_CLOSE) {
|
|
status : Status,
|
|
}
|
|
|
|
struct CreditsPerConn {
|
|
conn_id : 8,
|
|
ncredits : 8,
|
|
}
|
|
|
|
packet ConnCreditsNotification : Notification (cmd_op = CORE_CONN_CREDITS) {
|
|
_count_(conns) : 8,
|
|
conns : CreditsPerConn[],
|
|
}
|
|
|
|
packet GenericError : Notification (cmd_op = CORE_GENERIC_ERROR) {
|
|
status : Status,
|
|
}
|
|
|
|
packet InterfaceError : Notification (cmd_op = CORE_INTERFACE_ERROR) {
|
|
status : Status,
|
|
conn_id : 8,
|
|
}
|
|
|