Normalize FeliCa command constant names

This commit is contained in:
kormax
2026-07-25 12:46:47 +03:00
parent 9c787c1162
commit 1a4c2b7c70
5 changed files with 351 additions and 350 deletions
+10 -10
View File
@@ -252,7 +252,7 @@ static uint8_t felica_select_card(felica_card_select_t *card) {
// b0 = fc/64 (212kbps)
// 0x00 = timeslot
// 0x09 0x21 = crc
static uint8_t poll[10] = {0xb2, 0x4d, 0x06, FELICA_POLL_REQ, 0xFF, 0xFF, 0x00, 0x00, 0x09, 0x21};
static uint8_t poll[10] = {0xb2, 0x4d, 0x06, FELICA_POLLING_REQ, 0xFF, 0xFF, 0x00, 0x00, 0x09, 0x21};
// We try 10 times, or if answer was received.
@@ -264,7 +264,7 @@ static uint8_t felica_select_card(felica_card_select_t *card) {
TransmitFor18092_AsReader(poll, sizeof(poll), NULL, 1, 0);
// polling card, break if success
if (WaitForFelicaReply(1024) && FelicaFrame.framebytes[3] == FELICA_POLL_ACK) {
if (WaitForFelicaReply(1024) && FelicaFrame.framebytes[3] == FELICA_POLLING_RES) {
break;
}
@@ -278,7 +278,7 @@ static uint8_t felica_select_card(felica_card_select_t *card) {
}
// 2. wrong answer
if (FelicaFrame.framebytes[3] != FELICA_POLL_ACK) {
if (FelicaFrame.framebytes[3] != FELICA_POLLING_RES) {
return 2;
}
@@ -345,7 +345,7 @@ static void BuildFliteRdblk(const uint8_t *idm, uint8_t blocknum, const uint16_t
c++; // set length later
frameSpace[c++] = FELICA_RDBLK_REQ; // command number
frameSpace[c++] = FELICA_READ_WITHOUT_ENCRYPTION_REQ; // command number
// card IDm, from poll
frameSpace[c++] = idm[0];
@@ -826,9 +826,9 @@ void felica_sniff(uint32_t samplesToSkip, uint32_t triggersToSkip) {
void felica_sim_lite(const uint8_t *uid) {
// prepare our 3 responses...
uint8_t resp_poll0[R_POLL0_LEN] = { 0xb2, 0x4d, 0x12, FELICA_POLL_ACK, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0xb3, 0x7f};
uint8_t resp_poll1[R_POLL1_LEN] = { 0xb2, 0x4d, 0x14, FELICA_POLL_ACK, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0x88, 0xb4, 0xb3, 0x7f};
uint8_t resp_readblk[R_READBLK_LEN] = { 0xb2, 0x4d, 0x1d, FELICA_RDBLK_ACK, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x04, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23, 0xcb, 0x6e};
uint8_t resp_poll0[R_POLL0_LEN] = { 0xb2, 0x4d, 0x12, FELICA_POLLING_RES, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0xb3, 0x7f};
uint8_t resp_poll1[R_POLL1_LEN] = { 0xb2, 0x4d, 0x14, FELICA_POLLING_RES, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0x00, 0x00, 0x00, 0x01, 0x43, 0x00, 0x88, 0xb4, 0xb3, 0x7f};
uint8_t resp_readblk[R_READBLK_LEN] = { 0xb2, 0x4d, 0x1d, FELICA_READ_WITHOUT_ENCRYPTION_RES, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x10, 0x04, 0x01, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x23, 0xcb, 0x6e};
// NFC tag 3/ ISo technically. Many overlapping standards
DbpString("Felica Lite-S simulation start");
@@ -965,7 +965,7 @@ void felica_sim_lite(const uint8_t *uid) {
void felica_dump_lite_s(void) {
uint8_t ndef[8];
uint8_t poll[10] = { 0xb2, 0x4d, 0x06, FELICA_POLL_REQ, 0xff, 0xff, 0x00, 0x00, 0x09, 0x21};
uint8_t poll[10] = { 0xb2, 0x4d, 0x06, FELICA_POLLING_REQ, 0xff, 0xff, 0x00, 0x00, 0x09, 0x21};
uint16_t liteblks[28] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88, 0x90, 0x91, 0x92, 0xa0};
// setup device.
@@ -983,7 +983,7 @@ void felica_dump_lite_s(void) {
//TransmitFor18092_AsReader(poll, 10, GetCountSspClk()+512, 1, 0);
TransmitFor18092_AsReader(poll, 10, NULL, 1, 0);
if (WaitForFelicaReply(512) && FelicaFrame.framebytes[3] == FELICA_POLL_ACK) {
if (WaitForFelicaReply(512) && FelicaFrame.framebytes[3] == FELICA_POLLING_RES) {
// copy 8bytes to ndef.
memcpy(ndef, FelicaFrame.framebytes + 4, 8);
// for (c=0; c < 8; c++)
@@ -997,7 +997,7 @@ void felica_dump_lite_s(void) {
TransmitFor18092_AsReader(frameSpace, frameSpace[2] + 4, NULL, 1, 0);
// read block
if (WaitForFelicaReply(1024) && FelicaFrame.framebytes[3] == FELICA_RDBLK_ACK) {
if (WaitForFelicaReply(1024) && FelicaFrame.framebytes[3] == FELICA_READ_WITHOUT_ENCRYPTION_RES) {
dest[cnt++] = liteblks[blknum];
+23 -23
View File
@@ -266,7 +266,7 @@ static void felica_sim_append_idm(uint8_t *resp, uint16_t *pos, const felica_sim
}
static uint16_t felica_sim_rwe_error_response(uint8_t *resp, const felica_sim_system_record_t *system, uint8_t status1, uint8_t status2) {
uint16_t pos = felica_sim_response_begin(resp, FELICA_RDBLK_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_READ_WITHOUT_ENCRYPTION_RES);
felica_sim_append_idm(resp, &pos, system);
resp[pos++] = status1;
resp[pos++] = status2;
@@ -383,7 +383,7 @@ static uint16_t felica_sim_process_polling(const felica_sim_model_header_t *hdr,
(512 + timeslot * 256) + 1;
timeslot++;
uint16_t pos = felica_sim_response_begin(resp, FELICA_POLL_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_POLLING_RES);
memcpy(resp + pos, selected->idm, sizeof(selected->idm));
pos += sizeof(selected->idm);
memcpy(resp + pos, selected->pmm, sizeof(selected->pmm));
@@ -407,7 +407,7 @@ static uint16_t felica_sim_process_request_system_code(const felica_sim_model_he
return 0;
}
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQSYSCODE_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_SYSTEM_CODE_RES);
felica_sim_append_idm(resp, &pos, active_system);
resp[pos++] = (uint8_t)hdr->system_count;
const felica_sim_system_record_t *systems = felica_sim_systems(hdr, model);
@@ -431,7 +431,7 @@ static uint16_t felica_sim_process_get_container_id(const felica_sim_model_heade
return 0;
}
uint16_t pos = felica_sim_response_begin(resp, FELICA_GET_CONTAINER_ID_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_GET_CONTAINER_ID_RES);
memcpy(resp + pos, system->idm, sizeof(system->idm));
pos += sizeof(system->idm);
return felica_sim_response_finish(resp, pos);
@@ -443,7 +443,7 @@ static uint16_t felica_sim_process_request_response(const uint8_t *req, uint16_t
return 0;
}
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQRESP_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_RESPONSE_RES);
felica_sim_append_idm(resp, &pos, active_system);
resp[pos++] = 0x00;
return felica_sim_response_finish(resp, pos);
@@ -459,7 +459,7 @@ static uint16_t felica_sim_process_reset_mode(const uint8_t *req, uint16_t req_l
}
// If authentication handling is added, reset the tracked card mode to Mode0 here.
uint16_t pos = felica_sim_response_begin(resp, FELICA_RESET_MODE_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_RESET_MODE_RES);
felica_sim_append_idm(resp, &pos, active_system);
resp[pos++] = 0x00;
resp[pos++] = 0x00;
@@ -478,7 +478,7 @@ static uint16_t felica_sim_process_request_specification_version(const felica_si
return 0;
}
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_SPEC_VERSION_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_SPECIFICATION_VERSION_RES);
felica_sim_append_idm(resp, &pos, active_system);
resp[pos++] = 0x00;
resp[pos++] = 0x00;
@@ -497,7 +497,7 @@ static uint16_t felica_sim_process_get_product_information(const felica_sim_mode
return 0;
}
uint16_t pos = felica_sim_response_begin(resp, FELICA_GETPLATFORMINFO_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_PRODUCT_INFORMATION_RES);
felica_sim_append_idm(resp, &pos, active_system);
resp[pos++] = 0x00;
resp[pos++] = 0x00;
@@ -519,7 +519,7 @@ static uint16_t felica_sim_process_get_container_issue_information(const felica_
return 0;
}
uint16_t pos = felica_sim_response_begin(resp, FELICA_GET_CONTAINER_ISSUE_INFO_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_GET_CONTAINER_ISSUE_INFORMATION_RES);
felica_sim_append_idm(resp, &pos, active_system);
memcpy(resp + pos, container_issue_information, hdr->container_issue_information_len);
pos += hdr->container_issue_information_len;
@@ -539,7 +539,7 @@ static uint16_t felica_sim_process_request_service(const felica_sim_model_header
return 0;
}
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQSRV_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_SERVICE_RES);
felica_sim_append_idm(resp, &pos, active_system);
resp[pos++] = node_count;
for (uint8_t i = 0; i < node_count; i++) {
@@ -576,7 +576,7 @@ static uint16_t felica_sim_process_request_service_v2(const felica_sim_model_hea
return 0;
}
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQSRV2_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_REQUEST_SERVICE_V2_RES);
felica_sim_append_idm(resp, &pos, active_system);
resp[pos++] = 0x00;
resp[pos++] = 0x00;
@@ -615,7 +615,7 @@ static uint16_t felica_sim_process_search_service_code(const felica_sim_model_he
}
const uint16_t iterator = req[12] | ((uint16_t)req[13] << 8);
uint16_t pos = felica_sim_response_begin(resp, FELICA_SRCHSYSCODE_ACK);
uint16_t pos = felica_sim_response_begin(resp, FELICA_SEARCH_SERVICE_CODE_RES);
felica_sim_append_idm(resp, &pos, active_system);
const felica_sim_node_record_t *nodes = felica_sim_nodes(hdr, model);
@@ -727,7 +727,7 @@ static uint16_t felica_sim_process_read_without_encryption(const felica_sim_mode
return 0;
}
pos = felica_sim_response_begin(resp, FELICA_RDBLK_ACK);
pos = felica_sim_response_begin(resp, FELICA_READ_WITHOUT_ENCRYPTION_RES);
felica_sim_append_idm(resp, &pos, active_system);
resp[pos++] = 0x00;
resp[pos++] = 0x00;
@@ -767,31 +767,31 @@ static uint16_t felica_sim_process_request(const felica_sim_model_header_t *hdr,
}
switch (req_command) {
case FELICA_POLL_REQ:
case FELICA_POLLING_REQ:
return felica_sim_process_polling(hdr, model, req, req_len, active_system_index, resp);
case FELICA_ECHO_REQ:
return felica_sim_process_echo(req, req_len, resp);
case FELICA_GET_CONTAINER_ID_REQ:
return felica_sim_process_get_container_id(hdr, model, req, req_len, resp);
case FELICA_REQSYSCODE_REQ:
case FELICA_REQUEST_SYSTEM_CODE_REQ:
return felica_sim_process_request_system_code(hdr, model, req, req_len, active_system, resp);
case FELICA_REQRESP_REQ:
case FELICA_REQUEST_RESPONSE_REQ:
return felica_sim_process_request_response(req, req_len, active_system, resp);
case FELICA_RESET_MODE_REQ:
return felica_sim_process_reset_mode(req, req_len, active_system, resp);
case FELICA_REQUEST_SPEC_VERSION_REQ:
case FELICA_REQUEST_SPECIFICATION_VERSION_REQ:
return felica_sim_process_request_specification_version(hdr, model, req, req_len, active_system, resp);
case FELICA_GETPLATFORMINFO_REQ:
case FELICA_REQUEST_PRODUCT_INFORMATION_REQ:
return felica_sim_process_get_product_information(hdr, model, req, req_len, active_system, resp);
case FELICA_GET_CONTAINER_ISSUE_INFO_REQ:
case FELICA_GET_CONTAINER_ISSUE_INFORMATION_REQ:
return felica_sim_process_get_container_issue_information(hdr, model, req, req_len, active_system, resp);
case FELICA_REQSRV_REQ:
case FELICA_REQUEST_SERVICE_REQ:
return felica_sim_process_request_service(hdr, model, req, req_len, active_system, resp);
case FELICA_REQSRV2_REQ:
case FELICA_REQUEST_SERVICE_V2_REQ:
return felica_sim_process_request_service_v2(hdr, model, req, req_len, active_system, resp);
case FELICA_SRCHSYSCODE_REQ:
case FELICA_SEARCH_SERVICE_CODE_REQ:
return felica_sim_process_search_service_code(hdr, model, req, req_len, active_system, resp);
case FELICA_RDBLK_REQ:
case FELICA_READ_WITHOUT_ENCRYPTION_REQ:
return felica_sim_process_read_without_encryption(hdr, model, req, req_len, active_system, resp);
default:
return 0;
+47 -47
View File
@@ -62,7 +62,7 @@
#define FELICA_OPTIONAL_CMD_TIMEOUT_MS 250U
#define FELICA_OPTIONAL_CMD_RETRIES 3U
// Per FeliCa spec, Polling max response at 16 timeslots is ~25ms; keep extra margin.
#define FELICA_POLL_TIMEOUT_MS 100U
#define FELICA_POLLING_TIMEOUT_MS 100U
#define FELICA_SEAC_POLL_TIMEOUT_MS 200U
#define FELICA_SEAC_POLL_RETRY_COUNT 5U
#define FELICA_SEAC_POLL_FRAME_LEN 5U
@@ -76,8 +76,8 @@
#define FELICA_SYSTEM_CODE_FELICA_NETWORKS_COMMON_AREA 0xFE00U
#define FELICA_DUMP_DEFAULT_NODE_CAPACITY 128U
#define FELICA_DUMP_COMMON_AREA_NODE_CAPACITY 256U
#define FELICA_POLL_REQUEST_NO_DATA 0x00U
#define FELICA_POLL_REQUEST_SYSTEM_CODE 0x01U
#define FELICA_POLLING_REQUEST_NO_DATA 0x00U
#define FELICA_POLLING_REQUEST_SYSTEM_CODE 0x01U
#define FELICA_SYSTEM_LIST_JSON "felica/felica_system_code_list"
#define FELICA_IC_CODE_LIST_JSON "felica/felica_ic_code_list"
@@ -1059,7 +1059,7 @@ static int felica_read_service_block_for_node(uint8_t flags, const uint8_t *idm,
const uint16_t datalen = (uint16_t)(1 + 1 + 8 + 1 + 2 + 1 + block_list_element_len);
uint8_t data[1 + 1 + 8 + 1 + 2 + 1 + FELICA_SYSTEM_SERVICE_BLOCK_LIST_ELEMENT_MAX_LEN] = {0};
data[0] = (uint8_t)datalen;
data[1] = FELICA_RDBLK_REQ;
data[1] = FELICA_READ_WITHOUT_ENCRYPTION_REQ;
memcpy(data + 2, idm, 8);
data[10] = 0x01;
data[11] = node_code_le & 0xFF;
@@ -1250,7 +1250,7 @@ static int felica_request_service_key_versions(uint8_t flags, const uint8_t *idm
uint8_t data[1 + 1 + 8 + 1 + (FELICA_REQUEST_SERVICE_DISCOVERY_BATCH_SIZE * 2)] = {0};
uint16_t datalen = 0;
int ret = felica_build_request_service_payload(FELICA_REQSRV_REQ, idm, node_codes_le, node_count,
int ret = felica_build_request_service_payload(FELICA_REQUEST_SERVICE_REQ, idm, node_codes_le, node_count,
data, sizeof(data), &datalen);
if (ret != PM3_SUCCESS) {
return ret;
@@ -1258,7 +1258,7 @@ static int felica_request_service_key_versions(uint8_t flags, const uint8_t *idm
PacketResponseNG resp;
if (send_felica_payload_with_retries(flags, datalen, data, false,
FELICA_REQSRV_ACK,
FELICA_REQUEST_SERVICE_RES,
FELICA_OPTIONAL_CMD_TIMEOUT_MS, retries,
0, false, &resp, "request service") != PM3_SUCCESS) {
return PM3_ERFTRANS;
@@ -1305,7 +1305,7 @@ static int felica_request_service_v2_key_versions(uint8_t flags, const uint8_t *
uint8_t data[1 + 1 + 8 + 1 + (FELICA_REQUEST_SERVICE_DISCOVERY_BATCH_SIZE * 2)] = {0};
uint16_t datalen = 0;
int ret = felica_build_request_service_payload(FELICA_REQSRV2_REQ, idm, node_codes_le, node_count,
int ret = felica_build_request_service_payload(FELICA_REQUEST_SERVICE_V2_REQ, idm, node_codes_le, node_count,
data, sizeof(data), &datalen);
if (ret != PM3_SUCCESS) {
return ret;
@@ -1313,7 +1313,7 @@ static int felica_request_service_v2_key_versions(uint8_t flags, const uint8_t *
PacketResponseNG resp;
if (send_felica_payload_with_retries(flags, datalen, data, false,
FELICA_REQSRV2_ACK,
FELICA_REQUEST_SERVICE_V2_RES,
FELICA_OPTIONAL_CMD_TIMEOUT_MS, retries,
0, false, &resp, "request service v2") != PM3_SUCCESS) {
return PM3_ERFTRANS;
@@ -1618,7 +1618,7 @@ static int send_request_system_code(uint8_t flags, uint16_t datalen, uint8_t *da
PacketResponseNG resp;
if (send_felica_payload_with_retries(flags, datalen, data, verbose,
FELICA_REQSYSCODE_ACK,
FELICA_REQUEST_SYSTEM_CODE_RES,
timeout_ms, retries,
0, logging, &resp, "request system code") != PM3_SUCCESS) {
return PM3_ERFTRANS;
@@ -1722,14 +1722,14 @@ static int send_polling(uint8_t flags, uint16_t system_code, uint8_t request_cod
uint8_t polling_request[6] = {0};
polling_request[0] = sizeof(polling_request);
polling_request[1] = FELICA_POLL_REQ;
polling_request[1] = FELICA_POLLING_REQ;
felica_system_code_to_bytes(system_code, polling_request + 2);
polling_request[4] = request_code;
polling_request[5] = 0x00; // one target at a time
PacketResponseNG resp;
if (send_felica_payload_with_retries(flags, sizeof(polling_request), polling_request, false,
FELICA_POLL_ACK,
FELICA_POLLING_RES,
timeout_ms, retries,
0, logging, &resp, "polling") != PM3_SUCCESS) {
return PM3_ERFTRANS;
@@ -1750,7 +1750,7 @@ static int send_polling(uint8_t flags, uint16_t system_code, uint8_t request_cod
}
if (returned_system_code) {
if (request_code == FELICA_POLL_REQUEST_SYSTEM_CODE) {
if (request_code == FELICA_POLLING_REQUEST_SYSTEM_CODE) {
if (resp.length < (poll_response_min_len + 2U)) {
return PM3_ESOFT;
}
@@ -1776,7 +1776,7 @@ static int discover_systems(uint8_t flags, const uint8_t *primary_idm, bool requ
felica_request_system_code_request_t request_system_code_request;
memset(&request_system_code_request, 0, sizeof(request_system_code_request));
request_system_code_request.length[0] = sizeof(request_system_code_request);
request_system_code_request.command_code[0] = FELICA_REQSYSCODE_REQ;
request_system_code_request.command_code[0] = FELICA_REQUEST_SYSTEM_CODE_REQ;
memcpy(request_system_code_request.IDm, primary_idm, sizeof(request_system_code_request.IDm));
for (uint32_t attempt = 0; attempt < FELICA_REQUEST_SYSTEM_CODE_ATTEMPTS; attempt++) {
@@ -1804,8 +1804,8 @@ static int discover_systems(uint8_t flags, const uint8_t *primary_idm, bool requ
uint16_t primary_system_code = 0;
uint8_t primary_idm_polled[8] = {0};
uint8_t primary_pmm_polled[8] = {0};
if (send_polling(flags, FELICA_SYSTEM_CODE_WILDCARD, FELICA_POLL_REQUEST_SYSTEM_CODE,
FELICA_POLL_TIMEOUT_MS, polling_retries, false,
if (send_polling(flags, FELICA_SYSTEM_CODE_WILDCARD, FELICA_POLLING_REQUEST_SYSTEM_CODE,
FELICA_POLLING_TIMEOUT_MS, polling_retries, false,
primary_idm_polled, primary_pmm_polled, &primary_system_code) == PM3_SUCCESS) {
felica_add_unique_discovered_system(discovered_systems->systems, &discovered_systems->count,
primary_system_code, primary_idm_polled, primary_pmm_polled);
@@ -1815,8 +1815,8 @@ static int discover_systems(uint8_t flags, const uint8_t *primary_idm, bool requ
uint8_t probed_idm[8] = {0};
uint8_t probed_pmm[8] = {0};
const uint16_t system_code = FELICA_MANUAL_SYSTEM_PROBE_TARGETS[i].system_code;
if (send_polling(flags, system_code, FELICA_POLL_REQUEST_NO_DATA,
FELICA_POLL_TIMEOUT_MS, polling_retries, false,
if (send_polling(flags, system_code, FELICA_POLLING_REQUEST_NO_DATA,
FELICA_POLLING_TIMEOUT_MS, polling_retries, false,
probed_idm, probed_pmm, NULL) != PM3_SUCCESS) {
continue;
}
@@ -1834,8 +1834,8 @@ static int discover_systems(uint8_t flags, const uint8_t *primary_idm, bool requ
uint8_t resolved_pmm[8] = {0};
if (send_polling(flags,
discovered_systems->systems[i].system_code,
FELICA_POLL_REQUEST_NO_DATA,
FELICA_POLL_TIMEOUT_MS,
FELICA_POLLING_REQUEST_NO_DATA,
FELICA_POLLING_TIMEOUT_MS,
polling_retries,
false,
resolved_idm, resolved_pmm, NULL) != PM3_SUCCESS) {
@@ -1987,8 +1987,8 @@ static bool get_seac_response_data(const PacketResponseNG *resp, const uint8_t *
static int info_seac(void) {
static const uint8_t seac_poll_frames[][FELICA_SEAC_POLL_FRAME_LEN] = {
// {0x05, FELICA_POLL_REQ, 0x01, 0x01, 0x0F},
{0x05, FELICA_POLL_REQ, 0x01, 0x01, 0x01},
// {0x05, FELICA_POLLING_REQ, 0x01, 0x01, 0x0F},
{0x05, FELICA_POLLING_REQ, 0x01, 0x01, 0x01},
};
const uint8_t seac_flags = FELICA_CONNECT | FELICA_CLEARTRACE | FELICA_RAW | FELICA_APPEND_CRC | FELICA_NO_SELECT;
@@ -2105,7 +2105,7 @@ static int send_get_container_id(uint8_t flags, uint16_t datalen, uint8_t *data,
(void)verbose;
PacketResponseNG resp;
if (send_felica_payload_with_retries(flags, datalen, data, false,
FELICA_GET_CONTAINER_ID_ACK,
FELICA_GET_CONTAINER_ID_RES,
FELICA_OPTIONAL_CMD_TIMEOUT_MS, FELICA_OPTIONAL_CMD_RETRIES,
0, false, &resp, "get container id") != PM3_SUCCESS) {
return PM3_ERFTRANS;
@@ -2131,7 +2131,7 @@ static int send_get_container_property(uint8_t flags, uint16_t datalen, uint8_t
PacketResponseNG resp;
if (send_felica_payload_with_retries(flags, datalen, data, false,
FELICA_GET_CONTAINER_PROPERTY_ACK,
FELICA_GET_CONTAINER_PROPERTY_RES,
FELICA_OPTIONAL_CMD_TIMEOUT_MS, FELICA_OPTIONAL_CMD_RETRIES,
0, false, &resp, "get container property") != PM3_SUCCESS) {
return PM3_ERFTRANS;
@@ -2171,7 +2171,7 @@ static int send_get_container_issue_information(uint8_t flags, uint16_t datalen,
(void)verbose;
PacketResponseNG resp;
if (send_felica_payload_with_retries(flags, datalen, data, false,
FELICA_GET_CONTAINER_ISSUE_INFO_ACK,
FELICA_GET_CONTAINER_ISSUE_INFORMATION_RES,
FELICA_OPTIONAL_CMD_TIMEOUT_MS, FELICA_OPTIONAL_CMD_RETRIES,
0, false, &resp, "get container issue info") != PM3_SUCCESS) {
return PM3_ERFTRANS;
@@ -2197,7 +2197,7 @@ static int send_get_platform_information(uint8_t flags, uint16_t datalen, uint8_
PacketResponseNG resp;
if (send_felica_payload_with_retries(flags, datalen, data, false,
FELICA_GETPLATFORMINFO_ACK,
FELICA_REQUEST_PRODUCT_INFORMATION_RES,
FELICA_OPTIONAL_CMD_TIMEOUT_MS, FELICA_OPTIONAL_CMD_RETRIES,
0, false, &resp, "get platform info") != PM3_SUCCESS) {
return PM3_ERFTRANS;
@@ -2249,7 +2249,7 @@ static int send_request_specification_version(uint8_t flags, uint16_t datalen, u
PacketResponseNG resp;
if (send_felica_payload_with_retries(flags, datalen, data, verbose,
FELICA_REQUEST_SPEC_VERSION_ACK,
FELICA_REQUEST_SPECIFICATION_VERSION_RES,
timeout_ms, retries,
0, logging, &resp, "request specification version") != PM3_SUCCESS) {
return PM3_ERFTRANS;
@@ -2370,7 +2370,7 @@ static int info_felica(bool verbose) {
felica_get_platform_info_request_t platform_info_request;
memset(&platform_info_request, 0, sizeof(platform_info_request));
platform_info_request.length[0] = sizeof(platform_info_request);
platform_info_request.command_code[0] = FELICA_GETPLATFORMINFO_REQ;
platform_info_request.command_code[0] = FELICA_REQUEST_PRODUCT_INFORMATION_REQ;
memcpy(platform_info_request.IDm, card.IDm, sizeof(platform_info_request.IDm));
felica_status_flags_t platform_status_flags;
@@ -2388,7 +2388,7 @@ static int info_felica(bool verbose) {
felica_request_specification_version_request_t request_specification_version_request;
memset(&request_specification_version_request, 0, sizeof(request_specification_version_request));
request_specification_version_request.length[0] = sizeof(request_specification_version_request);
request_specification_version_request.command_code[0] = FELICA_REQUEST_SPEC_VERSION_REQ;
request_specification_version_request.command_code[0] = FELICA_REQUEST_SPECIFICATION_VERSION_REQ;
memcpy(request_specification_version_request.IDm, card.IDm, sizeof(request_specification_version_request.IDm));
felica_request_specification_version_info_t specification_version_info;
@@ -2416,7 +2416,7 @@ static int info_felica(bool verbose) {
felica_get_container_issue_info_request_t container_issue_info_request;
memset(&container_issue_info_request, 0, sizeof(container_issue_info_request));
container_issue_info_request.length[0] = sizeof(container_issue_info_request);
container_issue_info_request.command_code[0] = FELICA_GET_CONTAINER_ISSUE_INFO_REQ;
container_issue_info_request.command_code[0] = FELICA_GET_CONTAINER_ISSUE_INFORMATION_REQ;
memcpy(container_issue_info_request.IDm, card.IDm, sizeof(container_issue_info_request.IDm));
felica_get_container_issue_info_response_t container_issue_info_response;
@@ -2854,7 +2854,7 @@ static int felica_presence_check_idm(const uint8_t *idm) {
uint8_t data[16] = {0};
data[0] = sizeof(data);
data[1] = FELICA_RDBLK_REQ;
data[1] = FELICA_READ_WITHOUT_ENCRYPTION_REQ;
memcpy(data + 2, idm, 8);
data[10] = 0x01;
data[11] = FELICA_PRESENCE_SERVICE_CODE_LE & 0xFF;
@@ -2866,7 +2866,7 @@ static int felica_presence_check_idm(const uint8_t *idm) {
PacketResponseNG resp;
const uint8_t flags = FELICA_CONNECT | FELICA_CLEARTRACE | FELICA_NO_SELECT | FELICA_APPEND_CRC | FELICA_RAW;
const int ret = send_felica_payload_with_retries(flags, sizeof(data), data, false,
FELICA_RDBLK_ACK,
FELICA_READ_WITHOUT_ENCRYPTION_RES,
FELICA_DEFAULT_TIMEOUT_MS, FELICA_TARGET_PRESENCE_ATTEMPTS - 1U,
0, false,
&resp, "presence check");
@@ -2962,7 +2962,7 @@ static int send_request_code_list(uint8_t flags, uint16_t datalen, uint8_t *data
uint32_t timeout_ms, uint32_t retries, uint32_t backoff_ms,
bool logging, PacketResponseNG *resp) {
return send_felica_payload_with_retries(flags, datalen, data, verbose,
FELICA_GET_NODE_LIST_ACK,
FELICA_REQUEST_CODE_LIST_RES,
timeout_ms, retries, backoff_ms,
logging, resp, "request code list");
}
@@ -3116,7 +3116,7 @@ static bool felica_discover_nodes_with_request_code_list(uint8_t *flags,
uint8_t data[14] = {0};
data[0] = sizeof(data);
data[1] = FELICA_GET_NODE_LIST_REQ;
data[1] = FELICA_REQUEST_CODE_LIST_REQ;
memcpy(data + 2, idm, 8);
data[10] = 0x00;
data[11] = 0x00;
@@ -3253,7 +3253,7 @@ static bool felica_discover_nodes_with_search_service_code(uint8_t *flags,
uint8_t data[12] = {0};
data[0] = sizeof(data);
data[1] = FELICA_SRCHSYSCODE_REQ;
data[1] = FELICA_SEARCH_SERVICE_CODE_REQ;
memcpy(data + 2, idm, 8);
bool supported = false;
@@ -3329,7 +3329,7 @@ static bool felica_request_service_send_probe_batch(uint8_t *flags,
uint8_t data[1 + 1 + 8 + 1 + (FELICA_REQUEST_SERVICE_DISCOVERY_BATCH_SIZE * 2)] = {0};
uint16_t datalen = 0;
if (felica_build_request_service_payload(FELICA_REQSRV_REQ, idm, node_codes_le, node_count,
if (felica_build_request_service_payload(FELICA_REQUEST_SERVICE_REQ, idm, node_codes_le, node_count,
data, sizeof(data), &datalen) != PM3_SUCCESS) {
return false;
}
@@ -3338,7 +3338,7 @@ static bool felica_request_service_send_probe_batch(uint8_t *flags,
const bool logging = (supported != NULL) && (*supported);
const uint32_t backoff_ms = logging ? FELICA_DISCOVERY_RETRY_BACKOFF_MS : 0;
if (send_felica_payload_with_retries(*flags, datalen, data, false,
FELICA_REQSRV_ACK,
FELICA_REQUEST_SERVICE_RES,
FELICA_DEFAULT_TIMEOUT_MS, retry_count,
backoff_ms, logging, &resp, "request service") != PM3_SUCCESS) {
return false;
@@ -3476,7 +3476,7 @@ static bool felica_discover_nodes_with_read_without_encryption_ex(uint8_t *flags
int *stop_status) {
uint8_t data[16] = {0};
data[0] = sizeof(data);
data[1] = FELICA_RDBLK_REQ;
data[1] = FELICA_READ_WITHOUT_ENCRYPTION_REQ;
memcpy(data + 2, idm, 8);
data[10] = 0x01;
data[13] = 0x01;
@@ -4225,7 +4225,7 @@ static void felica_dump_collect_metadata(const uint8_t *idm, felica_dump_metadat
felica_request_specification_version_request_t spec_request;
memset(&spec_request, 0, sizeof(spec_request));
spec_request.length[0] = sizeof(spec_request);
spec_request.command_code[0] = FELICA_REQUEST_SPEC_VERSION_REQ;
spec_request.command_code[0] = FELICA_REQUEST_SPECIFICATION_VERSION_REQ;
memcpy(spec_request.IDm, idm, sizeof(spec_request.IDm));
felica_request_specification_version_info_t spec_info;
@@ -4243,7 +4243,7 @@ static void felica_dump_collect_metadata(const uint8_t *idm, felica_dump_metadat
felica_get_platform_info_request_t product_request;
memset(&product_request, 0, sizeof(product_request));
product_request.length[0] = sizeof(product_request);
product_request.command_code[0] = FELICA_GETPLATFORMINFO_REQ;
product_request.command_code[0] = FELICA_REQUEST_PRODUCT_INFORMATION_REQ;
memcpy(product_request.IDm, idm, sizeof(product_request.IDm));
felica_status_flags_t product_status_flags;
@@ -4260,7 +4260,7 @@ static void felica_dump_collect_metadata(const uint8_t *idm, felica_dump_metadat
felica_get_container_issue_info_request_t container_issue_request;
memset(&container_issue_request, 0, sizeof(container_issue_request));
container_issue_request.length[0] = sizeof(container_issue_request);
container_issue_request.command_code[0] = FELICA_GET_CONTAINER_ISSUE_INFO_REQ;
container_issue_request.command_code[0] = FELICA_GET_CONTAINER_ISSUE_INFORMATION_REQ;
memcpy(container_issue_request.IDm, idm, sizeof(container_issue_request.IDm));
felica_get_container_issue_info_response_t container_issue_response;
@@ -4367,8 +4367,8 @@ static int felica_dump_collect_key_versions(felica_dump_system_t *system, uint32
}
uint8_t flags = FELICA_NO_DISCONNECT | FELICA_APPEND_CRC | FELICA_RAW;
int ret = send_polling(flags, system->system_code, FELICA_POLL_REQUEST_NO_DATA,
FELICA_POLL_TIMEOUT_MS, retry_count, false,
int ret = send_polling(flags, system->system_code, FELICA_POLLING_REQUEST_NO_DATA,
FELICA_POLLING_TIMEOUT_MS, retry_count, false,
system->idm, system->pmm, NULL);
if (ret != PM3_SUCCESS) {
PrintAndLogEx(WARNING, "Unable to poll system " _YELLOW_("%04X") " for key versions.", system->system_code);
@@ -4503,8 +4503,8 @@ static int felica_dump_single_system(const felica_discovered_system_t *system,
uint8_t flags = FELICA_NO_DISCONNECT | FELICA_APPEND_CRC | FELICA_RAW;
uint8_t idm[8] = {0};
uint8_t pmm[8] = {0};
if (send_polling(flags, system->system_code, FELICA_POLL_REQUEST_NO_DATA,
FELICA_POLL_TIMEOUT_MS, retry_count, false,
if (send_polling(flags, system->system_code, FELICA_POLLING_REQUEST_NO_DATA,
FELICA_POLLING_TIMEOUT_MS, retry_count, false,
idm, pmm, NULL) != PM3_SUCCESS) {
PrintAndLogEx(FAILED, "Unable to poll system " _YELLOW_("%04X") ".", system->system_code);
return PM3_ERFTRANS;
@@ -4522,7 +4522,7 @@ static int felica_dump_single_system(const felica_discovered_system_t *system,
dump_ctx.retry_count = retry_count;
dump_ctx.block_datalen = 16;
dump_ctx.block_frame[0] = dump_ctx.block_datalen;
dump_ctx.block_frame[1] = FELICA_RDBLK_REQ;
dump_ctx.block_frame[1] = FELICA_READ_WITHOUT_ENCRYPTION_REQ;
memcpy(dump_ctx.block_frame + 2, idm, sizeof(idm));
dump_ctx.block_frame[10] = 0x01;
dump_ctx.block_frame[13] = 0x01;
@@ -5380,7 +5380,7 @@ static int CmdHFFelicaRequestSpecificationVersion(const char *Cmd) {
felica_request_specification_version_request_t request_specification_version_request;
memset(&request_specification_version_request, 0, sizeof(request_specification_version_request));
request_specification_version_request.length[0] = sizeof(request_specification_version_request);
request_specification_version_request.command_code[0] = FELICA_REQUEST_SPEC_VERSION_REQ;
request_specification_version_request.command_code[0] = FELICA_REQUEST_SPECIFICATION_VERSION_REQ;
if (rlen) {
memcpy(request_specification_version_request.reserved, reserved, sizeof(reserved));
@@ -5545,7 +5545,7 @@ static int CmdHFFelicaRequestSystemCode(const char *Cmd) {
felica_request_system_code_request_t request_system_code_request;
memset(&request_system_code_request, 0, sizeof(request_system_code_request));
request_system_code_request.length[0] = sizeof(request_system_code_request);
request_system_code_request.command_code[0] = FELICA_REQSYSCODE_REQ;
request_system_code_request.command_code[0] = FELICA_REQUEST_SYSTEM_CODE_REQ;
res = felica_ensure_target_present(idm, (size_t)ilen, FELICA_IDM_RESOLVE_STANDALONE, request_system_code_request.IDm);
if (res != PM3_SUCCESS) {
+131 -131
View File
@@ -2456,7 +2456,7 @@ void annotateFelica(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) {
}
switch (cmd_code) {
case FELICA_POLL_REQ: {
case FELICA_POLLING_REQ: {
// Polling request code is byte 6 of the trace frame.
if (cmdsize > 6) {
if (cmd[6] == 0x01) {
@@ -2471,182 +2471,182 @@ void annotateFelica(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) {
snprintf(exp, size, "POLLING");
break;
}
case FELICA_POLL_ACK:
snprintf(exp, size, "POLLING ACK");
case FELICA_POLLING_RES:
snprintf(exp, size, "POLLING RES");
break;
case FELICA_REQSRV_REQ:
case FELICA_REQUEST_SERVICE_REQ:
snprintf(exp, size, "REQUEST SERVICE");
break;
case FELICA_REQSRV_ACK:
snprintf(exp, size, "REQUEST SERVICE ACK");
case FELICA_REQUEST_SERVICE_RES:
snprintf(exp, size, "REQUEST SERVICE RES");
break;
case FELICA_REQRESP_REQ:
case FELICA_REQUEST_RESPONSE_REQ:
snprintf(exp, size, "REQUEST RESPONSE");
break;
case FELICA_REQRESP_ACK:
snprintf(exp, size, "REQUEST RESPONSE ACK");
case FELICA_REQUEST_RESPONSE_RES:
snprintf(exp, size, "REQUEST RESPONSE RES");
break;
case FELICA_RDBLK_REQ:
case FELICA_READ_WITHOUT_ENCRYPTION_REQ:
snprintf(exp, size, "READ WITHOUT ENCRYPTION");
break;
case FELICA_RDBLK_ACK:
snprintf(exp, size, "READ WITHOUT ENCRYPTION ACK");
case FELICA_READ_WITHOUT_ENCRYPTION_RES:
snprintf(exp, size, "READ WITHOUT ENCRYPTION RES");
break;
case FELICA_WRTBLK_REQ:
case FELICA_WRITE_WITHOUT_ENCRYPTION_REQ:
snprintf(exp, size, "WRITE WITHOUT ENCRYPTION");
break;
case FELICA_WRTBLK_ACK:
snprintf(exp, size, "WRITE WITHOUT ENCRYPTION ACK");
case FELICA_WRITE_WITHOUT_ENCRYPTION_RES:
snprintf(exp, size, "WRITE WITHOUT ENCRYPTION RES");
break;
case FELICA_SRCHSYSCODE_REQ:
case FELICA_SEARCH_SERVICE_CODE_REQ:
snprintf(exp, size, "SEARCH SERVICE CODE");
break;
case FELICA_SRCHSYSCODE_ACK:
snprintf(exp, size, "SEARCH SERVICE CODE ACK");
case FELICA_SEARCH_SERVICE_CODE_RES:
snprintf(exp, size, "SEARCH SERVICE CODE RES");
break;
case FELICA_REQSYSCODE_REQ:
case FELICA_REQUEST_SYSTEM_CODE_REQ:
snprintf(exp, size, "REQUEST SYSTEM CODE");
break;
case FELICA_REQSYSCODE_ACK:
snprintf(exp, size, "REQUEST SYSTEM CODE ACK");
case FELICA_REQUEST_SYSTEM_CODE_RES:
snprintf(exp, size, "REQUEST SYSTEM CODE RES");
break;
case FELICA_REQBLKINFO_REQ:
case FELICA_REQUEST_BLOCK_INFORMATION_REQ:
snprintf(exp, size, "REQUEST BLOCK INFORMATION");
break;
case FELICA_REQBLKINFO_ACK:
snprintf(exp, size, "REQUEST BLOCK INFORMATION ACK");
case FELICA_REQUEST_BLOCK_INFORMATION_RES:
snprintf(exp, size, "REQUEST BLOCK INFORMATION RES");
break;
case FELICA_AUTH1_REQ:
snprintf(exp, size, "AUTH 1");
case FELICA_AUTHENTICATION1_REQ:
snprintf(exp, size, "AUTHENTICATION1");
break;
case FELICA_AUTH1_ACK:
snprintf(exp, size, "AUTH 1 ACK");
case FELICA_AUTHENTICATION1_RES:
snprintf(exp, size, "AUTHENTICATION1 RES");
break;
case FELICA_AUTH2_REQ:
snprintf(exp, size, "AUTH 2");
case FELICA_AUTHENTICATION2_REQ:
snprintf(exp, size, "AUTHENTICATION2");
break;
case FELICA_AUTH2_ACK:
snprintf(exp, size, "AUTH 2 ACK");
case FELICA_AUTHENTICATION2_RES:
snprintf(exp, size, "AUTHENTICATION2 RES");
break;
case FELICA_RDSEC_REQ:
case FELICA_READ_SECURE_REQ:
snprintf(exp, size, "READ");
break;
case FELICA_RDSEC_ACK:
snprintf(exp, size, "READ ACK");
case FELICA_READ_SECURE_RES:
snprintf(exp, size, "READ RES");
break;
case FELICA_WRTSEC_REQ:
case FELICA_WRITE_SECURE_REQ:
snprintf(exp, size, "WRITE");
break;
case FELICA_WRTSEC_ACK:
snprintf(exp, size, "WRITE ACK");
case FELICA_WRITE_SECURE_RES:
snprintf(exp, size, "WRITE RES");
break;
case FELICA_GET_NODE_LIST_REQ:
case FELICA_REQUEST_CODE_LIST_REQ:
snprintf(exp, size, "REQUEST CODE LIST");
break;
case FELICA_GET_NODE_LIST_ACK:
snprintf(exp, size, "REQUEST CODE LIST ACK");
case FELICA_REQUEST_CODE_LIST_RES:
snprintf(exp, size, "REQUEST CODE LIST RES");
break;
case FELICA_REQBLKINFO_EX_REQ:
case FELICA_REQUEST_BLOCK_INFORMATION_EX_REQ:
snprintf(exp, size, "REQUEST BLOCK INFORMATION EX");
break;
case FELICA_REQBLKINFO_EX_ACK:
snprintf(exp, size, "REQUEST BLOCK INFORMATION EX ACK");
case FELICA_REQUEST_BLOCK_INFORMATION_EX_RES:
snprintf(exp, size, "REQUEST BLOCK INFORMATION EX RES");
break;
case FELICA_SET_PARAMETER_REQ:
snprintf(exp, size, "SET PARAMETER");
break;
case FELICA_SET_PARAMETER_ACK:
snprintf(exp, size, "SET PARAMETER ACK");
case FELICA_SET_PARAMETER_RES:
snprintf(exp, size, "SET PARAMETER RES");
break;
case FELICA_GET_CONTAINER_ISSUE_INFO_REQ:
snprintf(exp, size, "GET CONTAINER ISSUE INFO");
case FELICA_GET_CONTAINER_ISSUE_INFORMATION_REQ:
snprintf(exp, size, "GET CONTAINER ISSUE INFORMATION");
break;
case FELICA_GET_CONTAINER_ISSUE_INFO_ACK:
snprintf(exp, size, "GET CONTAINER ISSUE INFO ACK");
case FELICA_GET_CONTAINER_ISSUE_INFORMATION_RES:
snprintf(exp, size, "GET CONTAINER ISSUE INFORMATION RES");
break;
case FELICA_GET_AREA_INFO_REQ:
snprintf(exp, size, "GET AREA INFO");
case FELICA_GET_AREA_INFORMATION_REQ:
snprintf(exp, size, "GET AREA INFORMATION");
break;
case FELICA_GET_AREA_INFO_ACK:
snprintf(exp, size, "GET AREA INFO ACK");
case FELICA_GET_AREA_INFORMATION_RES:
snprintf(exp, size, "GET AREA INFORMATION RES");
break;
case FELICA_GET_NODE_PROPERTY_REQ:
snprintf(exp, size, "GET NODE PROPERTY");
break;
case FELICA_GET_NODE_PROPERTY_ACK:
snprintf(exp, size, "GET NODE PROPERTY ACK");
case FELICA_GET_NODE_PROPERTY_RES:
snprintf(exp, size, "GET NODE PROPERTY RES");
break;
case FELICA_GET_CONTAINER_PROPERTY_REQ:
snprintf(exp, size, "GET CONTAINER PROPERTY");
break;
case FELICA_GET_CONTAINER_PROPERTY_ACK:
snprintf(exp, size, "GET CONTAINER PROPERTY ACK");
case FELICA_GET_CONTAINER_PROPERTY_RES:
snprintf(exp, size, "GET CONTAINER PROPERTY RES");
break;
case FELICA_REQSRV2_REQ:
case FELICA_REQUEST_SERVICE_V2_REQ:
snprintf(exp, size, "REQUEST SERVICE v2");
break;
case FELICA_REQSRV2_ACK:
snprintf(exp, size, "REQUEST SERVICE v2 ACK");
case FELICA_REQUEST_SERVICE_V2_RES:
snprintf(exp, size, "REQUEST SERVICE v2 RES");
break;
case FELICA_INTERNAL_AUTH_READ_REQ:
case FELICA_INTERNAL_AUTHENTICATE_AND_READ_REQ:
snprintf(exp, size, "INTERNAL AUTHENTICATE AND READ");
break;
case FELICA_INTERNAL_AUTH_READ_ACK:
snprintf(exp, size, "INTERNAL AUTHENTICATE AND READ ACK");
case FELICA_INTERNAL_AUTHENTICATE_AND_READ_RES:
snprintf(exp, size, "INTERNAL AUTHENTICATE AND READ RES");
break;
case FELICA_EXTERNAL_AUTH_WRITE_REQ:
case FELICA_EXTERNAL_AUTHENTICATE_AND_WRITE_REQ:
snprintf(exp, size, "EXTERNAL AUTHENTICATE AND WRITE");
break;
case FELICA_EXTERNAL_AUTH_WRITE_ACK:
snprintf(exp, size, "EXTERNAL AUTHENTICATE AND WRITE ACK");
case FELICA_EXTERNAL_AUTHENTICATE_AND_WRITE_RES:
snprintf(exp, size, "EXTERNAL AUTHENTICATE AND WRITE RES");
break;
case FELICA_GETSTATUS_REQ:
snprintf(exp, size, "GET STATUS");
case FELICA_GET_SYSTEM_STATUS_REQ:
snprintf(exp, size, "GET SYSTEM STATUS");
break;
case FELICA_GETSTATUS_ACK:
snprintf(exp, size, "GET STATUS ACK");
case FELICA_GET_SYSTEM_STATUS_RES:
snprintf(exp, size, "GET SYSTEM STATUS RES");
break;
case FELICA_GETPLATFORMINFO_REQ:
snprintf(exp, size, "GET PLATFORM INFO");
case FELICA_REQUEST_PRODUCT_INFORMATION_REQ:
snprintf(exp, size, "REQUEST PRODUCT INFORMATION");
break;
case FELICA_GETPLATFORMINFO_ACK:
snprintf(exp, size, "GET PLATFORM INFO ACK");
case FELICA_REQUEST_PRODUCT_INFORMATION_RES:
snprintf(exp, size, "REQUEST PRODUCT INFORMATION RES");
break;
case FELICA_REQUEST_SPEC_VERSION_REQ:
snprintf(exp, size, "REQUEST SPEC VERSION");
case FELICA_REQUEST_SPECIFICATION_VERSION_REQ:
snprintf(exp, size, "REQUEST SPECIFICATION VERSION");
break;
case FELICA_REQUEST_SPEC_VERSION_ACK:
snprintf(exp, size, "REQUEST SPEC VERSION ACK");
case FELICA_REQUEST_SPECIFICATION_VERSION_RES:
snprintf(exp, size, "REQUEST SPECIFICATION VERSION RES");
break;
case FELICA_RESET_MODE_REQ:
snprintf(exp, size, "RESET MODE");
break;
case FELICA_RESET_MODE_ACK:
snprintf(exp, size, "RESET MODE ACK");
case FELICA_RESET_MODE_RES:
snprintf(exp, size, "RESET MODE RES");
break;
case FELICA_AUTH1V2_REQ:
snprintf(exp, size, "AUTH 1 v2");
case FELICA_AUTHENTICATION1_V2_REQ:
snprintf(exp, size, "AUTHENTICATION1 v2");
break;
case FELICA_AUTH1V2_ACK:
snprintf(exp, size, "AUTH 1 v2 ACK");
case FELICA_AUTHENTICATION1_V2_RES:
snprintf(exp, size, "AUTHENTICATION1 v2 RES");
break;
case FELICA_AUTH2V2_REQ:
snprintf(exp, size, "AUTH 2 v2");
case FELICA_AUTHENTICATION2_V2_REQ:
snprintf(exp, size, "AUTHENTICATION2 v2");
break;
case FELICA_AUTH2V2_ACK:
snprintf(exp, size, "AUTH 2 v2 ACK");
case FELICA_AUTHENTICATION2_V2_RES:
snprintf(exp, size, "AUTHENTICATION2 v2 RES");
break;
case FELICA_RDSECV2_REQ:
case FELICA_READ_SECURE_V2_REQ:
snprintf(exp, size, "READ v2");
break;
case FELICA_RDSECV2_ACK:
snprintf(exp, size, "READ v2 ACK");
case FELICA_READ_SECURE_V2_RES:
snprintf(exp, size, "READ v2 RES");
break;
case FELICA_WRTSECV2_REQ:
case FELICA_WRITE_SECURE_V2_REQ:
snprintf(exp, size, "WRITE v2");
break;
case FELICA_WRTSECV2_ACK:
snprintf(exp, size, "WRITE v2 ACK");
case FELICA_WRITE_SECURE_V2_RES:
snprintf(exp, size, "WRITE v2 RES");
break;
case FELICA_NFC_DEP_ATR_REQ:
snprintf(exp, size, "NFC-DEP ATR REQ");
@@ -2696,95 +2696,95 @@ void annotateFelica(char *exp, size_t size, uint8_t *cmd, uint8_t cmdsize) {
case FELICA_WUP_RES:
snprintf(exp, size, "WUP RES");
break;
case FELICA_UPDATE_RNDID_REQ:
case FELICA_UPDATE_RANDOM_ID_REQ:
snprintf(exp, size, "UPDATE RANDOM ID");
break;
case FELICA_UPDATE_RNDID_ACK:
snprintf(exp, size, "UPDATE RANDOM ID ACK");
case FELICA_UPDATE_RANDOM_ID_RES:
snprintf(exp, size, "UPDATE RANDOM ID RES");
break;
case FELICA_REGISTER_AREA_V2_REQ:
snprintf(exp, size, "REGISTER AREA V2");
snprintf(exp, size, "REGISTER AREA v2");
break;
case FELICA_REGISTER_AREA_V2_ACK:
snprintf(exp, size, "REGISTER AREA V2 ACK");
case FELICA_REGISTER_AREA_V2_RES:
snprintf(exp, size, "REGISTER AREA v2 RES");
break;
case FELICA_REGISTER_SERVICE_V2_REQ:
snprintf(exp, size, "REGISTER SERVICE V2");
snprintf(exp, size, "REGISTER SERVICE v2");
break;
case FELICA_REGISTER_SERVICE_V2_ACK:
snprintf(exp, size, "REGISTER SERVICE V2 ACK");
case FELICA_REGISTER_SERVICE_V2_RES:
snprintf(exp, size, "REGISTER SERVICE v2 RES");
break;
case FELICA_REGISTER_ISSUE_ID_EX_V2_REQ:
snprintf(exp, size, "REGISTER ISSUE ID EX V2");
snprintf(exp, size, "REGISTER ISSUE ID EX v2");
break;
case FELICA_REGISTER_ISSUE_ID_EX_V2_ACK:
snprintf(exp, size, "REGISTER ISSUE ID EX V2 ACK");
case FELICA_REGISTER_ISSUE_ID_EX_V2_RES:
snprintf(exp, size, "REGISTER ISSUE ID EX v2 RES");
break;
case FELICA_SEPARATE_SYSTEM_V2_REQ:
snprintf(exp, size, "SEPARATE SYSTEM V2");
snprintf(exp, size, "SEPARATE SYSTEM v2");
break;
case FELICA_SEPARATE_SYSTEM_V2_ACK:
snprintf(exp, size, "SEPARATE SYSTEM V2 ACK");
case FELICA_SEPARATE_SYSTEM_V2_RES:
snprintf(exp, size, "SEPARATE SYSTEM v2 RES");
break;
case FELICA_CHANGE_SYSTEM_BLOCK_V2_REQ:
snprintf(exp, size, "CHANGE SYSTEM BLOCK V2");
snprintf(exp, size, "CHANGE SYSTEM BLOCK v2");
break;
case FELICA_CHANGE_SYSTEM_BLOCK_V2_ACK:
snprintf(exp, size, "CHANGE SYSTEM BLOCK V2 ACK");
case FELICA_CHANGE_SYSTEM_BLOCK_V2_RES:
snprintf(exp, size, "CHANGE SYSTEM BLOCK v2 RES");
break;
case FELICA_GET_CONTAINER_ID_REQ:
snprintf(exp, size, "GET CONTAINER ID");
break;
case FELICA_GET_CONTAINER_ID_ACK:
snprintf(exp, size, "GET CONTAINER ID ACK");
case FELICA_GET_CONTAINER_ID_RES:
snprintf(exp, size, "GET CONTAINER ID RES");
break;
case FELICA_SET_NODE_PROPERTY_REQ:
snprintf(exp, size, "SET NODE PROPERTY");
break;
case FELICA_SET_NODE_PROPERTY_ACK:
snprintf(exp, size, "SET NODE PROPERTY ACK");
case FELICA_SET_NODE_PROPERTY_RES:
snprintf(exp, size, "SET NODE PROPERTY RES");
break;
case FELICA_REGISTER_ISSUE_ID_REQ:
snprintf(exp, size, "REGISTER ISSUE ID");
break;
case FELICA_REGISTER_ISSUE_ID_ACK:
snprintf(exp, size, "REGISTER ISSUE ID ACK");
case FELICA_REGISTER_ISSUE_ID_RES:
snprintf(exp, size, "REGISTER ISSUE ID RES");
break;
case FELICA_REGISTER_AREA_REQ:
snprintf(exp, size, "REGISTER AREA");
break;
case FELICA_REGISTER_AREA_ACK:
snprintf(exp, size, "REGISTER AREA ACK");
case FELICA_REGISTER_AREA_RES:
snprintf(exp, size, "REGISTER AREA RES");
break;
case FELICA_REGISTER_SERVICE_REQ:
snprintf(exp, size, "REGISTER SERVICE");
break;
case FELICA_REGISTER_SERVICE_ACK:
snprintf(exp, size, "REGISTER SERVICE ACK");
case FELICA_REGISTER_SERVICE_RES:
snprintf(exp, size, "REGISTER SERVICE RES");
break;
case FELICA_SEPARATE_SYSTEM_REQ:
snprintf(exp, size, "SEPARATE SYSTEM");
break;
case FELICA_SEPARATE_SYSTEM_ACK:
snprintf(exp, size, "SEPARATE SYSTEM ACK");
case FELICA_SEPARATE_SYSTEM_RES:
snprintf(exp, size, "SEPARATE SYSTEM RES");
break;
case FELICA_CHANGE_SYSTEM_BLOCK_REQ:
snprintf(exp, size, "CHANGE SYSTEM BLOCK");
break;
case FELICA_CHANGE_SYSTEM_BLOCK_ACK:
snprintf(exp, size, "CHANGE SYSTEM BLOCK ACK");
case FELICA_CHANGE_SYSTEM_BLOCK_RES:
snprintf(exp, size, "CHANGE SYSTEM BLOCK RES");
break;
case FELICA_REGISTER_MANUFACTURE_ID_REQ:
snprintf(exp, size, "REGISTER MANUFACTURE ID");
break;
case FELICA_REGISTER_MANUFACTURE_ID_ACK:
snprintf(exp, size, "REGISTER MANUFACTURE ID ACK");
case FELICA_REGISTER_MANUFACTURE_ID_RES:
snprintf(exp, size, "REGISTER MANUFACTURE ID RES");
break;
case FELICA_SELF_DIAGNOSIS_REQ:
snprintf(exp, size, "SELF DIAGNOSIS");
break;
case FELICA_SELF_DIAGNOSIS_ACK:
snprintf(exp, size, "SELF DIAGNOSIS ACK");
case FELICA_SELF_DIAGNOSIS_RES:
snprintf(exp, size, "SELF DIAGNOSIS RES");
break;
case FELICA_CHANGE_ACTIVE_INTERFACE_REQ:
snprintf(exp, size, "CHANGE ACTIVE INTERFACE");
+140 -139
View File
@@ -898,173 +898,174 @@ ISO 7816-4 Basic interindustry commands. For command APDU's.
// FeliCa protocol
#define FELICA_POLL_REQ 0x00
#define FELICA_POLL_ACK 0x01
#define FELICA_POLLING_REQ 0x00
#define FELICA_POLLING_RES 0x01
#define FELICA_REQSRV_REQ 0x02
#define FELICA_REQSRV_ACK 0x03
#define FELICA_REQUEST_SERVICE_REQ 0x02
#define FELICA_REQUEST_SERVICE_RES 0x03
#define FELICA_REQRESP_REQ 0x04
#define FELICA_REQRESP_ACK 0x05
#define FELICA_REQUEST_RESPONSE_REQ 0x04
#define FELICA_REQUEST_RESPONSE_RES 0x05
#define FELICA_RDBLK_REQ 0x06
#define FELICA_RDBLK_ACK 0x07
#define FELICA_READ_WITHOUT_ENCRYPTION_REQ 0x06
#define FELICA_READ_WITHOUT_ENCRYPTION_RES 0x07
#define FELICA_WRTBLK_REQ 0x08
#define FELICA_WRTBLK_ACK 0x09
#define FELICA_WRITE_WITHOUT_ENCRYPTION_REQ 0x08
#define FELICA_WRITE_WITHOUT_ENCRYPTION_RES 0x09
#define FELICA_SRCHSYSCODE_REQ 0x0a
#define FELICA_SRCHSYSCODE_ACK 0x0b
#define FELICA_SEARCH_SERVICE_CODE_REQ 0x0a
#define FELICA_SEARCH_SERVICE_CODE_RES 0x0b
#define FELICA_REQSYSCODE_REQ 0x0c
#define FELICA_REQSYSCODE_ACK 0x0d
#define FELICA_REQUEST_SYSTEM_CODE_REQ 0x0c
#define FELICA_REQUEST_SYSTEM_CODE_RES 0x0d
#define FELICA_REQBLKINFO_REQ 0x0e
#define FELICA_REQBLKINFO_ACK 0x0f
#define FELICA_REQUEST_BLOCK_INFORMATION_REQ 0x0e
#define FELICA_REQUEST_BLOCK_INFORMATION_RES 0x0f
#define FELICA_AUTH1_REQ 0x10
#define FELICA_AUTH1_ACK 0x11
#define FELICA_AUTHENTICATION1_REQ 0x10
#define FELICA_AUTHENTICATION1_RES 0x11
#define FELICA_AUTH2_REQ 0x12
#define FELICA_AUTH2_ACK 0x13
#define FELICA_AUTHENTICATION2_REQ 0x12
#define FELICA_AUTHENTICATION2_RES 0x13
#define FELICA_RDSEC_REQ 0x14
#define FELICA_RDSEC_ACK 0x15
#define FELICA_READ_SECURE_REQ 0x14
#define FELICA_READ_SECURE_RES 0x15
#define FELICA_WRTSEC_REQ 0x16
#define FELICA_WRTSEC_ACK 0x17
#define FELICA_WRITE_SECURE_REQ 0x16
#define FELICA_WRITE_SECURE_RES 0x17
#define FELICA_GET_NODE_LIST_REQ 0x1a
#define FELICA_GET_NODE_LIST_ACK 0x1b
#define FELICA_REQUEST_CODE_LIST_REQ 0x1a
#define FELICA_REQUEST_CODE_LIST_RES 0x1b
#define FELICA_REQBLKINFO_EX_REQ 0x1e
#define FELICA_REQBLKINFO_EX_ACK 0x1f
#define FELICA_REQUEST_BLOCK_INFORMATION_EX_REQ 0x1e
#define FELICA_REQUEST_BLOCK_INFORMATION_EX_RES 0x1f
#define FELICA_SET_PARAMETER_REQ 0x20
#define FELICA_SET_PARAMETER_ACK 0x21
#define FELICA_SET_PARAMETER_REQ 0x20
#define FELICA_SET_PARAMETER_RES 0x21
#define FELICA_GET_CONTAINER_ISSUE_INFO_REQ 0x22
#define FELICA_GET_CONTAINER_ISSUE_INFO_ACK 0x23
#define FELICA_GET_CONTAINER_ISSUE_INFORMATION_REQ 0x22
#define FELICA_GET_CONTAINER_ISSUE_INFORMATION_RES 0x23
#define FELICA_GET_AREA_INFO_REQ 0x24
#define FELICA_GET_AREA_INFO_ACK 0x25
#define FELICA_GET_AREA_INFORMATION_REQ 0x24
#define FELICA_GET_AREA_INFORMATION_RES 0x25
#define FELICA_GET_NODE_PROPERTY_REQ 0x28
#define FELICA_GET_NODE_PROPERTY_ACK 0x29
#define FELICA_GET_NODE_PROPERTY_REQ 0x28
#define FELICA_GET_NODE_PROPERTY_RES 0x29
#define FELICA_GET_CONTAINER_PROPERTY_REQ 0x2e
#define FELICA_GET_CONTAINER_PROPERTY_ACK 0x2f
#define FELICA_GET_CONTAINER_PROPERTY_REQ 0x2e
#define FELICA_GET_CONTAINER_PROPERTY_RES 0x2f
#define FELICA_REQSRV2_REQ 0x32
#define FELICA_REQSRV2_ACK 0x33
#define FELICA_REQUEST_SERVICE_V2_REQ 0x32
#define FELICA_REQUEST_SERVICE_V2_RES 0x33
#define FELICA_INTERNAL_AUTH_READ_REQ 0x34
#define FELICA_INTERNAL_AUTH_READ_ACK 0x35
#define FELICA_INTERNAL_AUTHENTICATE_AND_READ_REQ 0x34
#define FELICA_INTERNAL_AUTHENTICATE_AND_READ_RES 0x35
#define FELICA_EXTERNAL_AUTH_WRITE_REQ 0x36
#define FELICA_EXTERNAL_AUTH_WRITE_ACK 0x37
#define FELICA_EXTERNAL_AUTHENTICATE_AND_WRITE_REQ 0x36
#define FELICA_EXTERNAL_AUTHENTICATE_AND_WRITE_RES 0x37
#define FELICA_GETSTATUS_REQ 0x38
#define FELICA_GETSTATUS_ACK 0x39
#define FELICA_GET_SYSTEM_STATUS_REQ 0x38
#define FELICA_GET_SYSTEM_STATUS_RES 0x39
#define FELICA_GETPLATFORMINFO_REQ 0x3a
#define FELICA_GETPLATFORMINFO_ACK 0x3b
#define FELICA_REQUEST_PRODUCT_INFORMATION_REQ 0x3a
#define FELICA_REQUEST_PRODUCT_INFORMATION_RES 0x3b
#define FELICA_REQUEST_SPEC_VERSION_REQ 0x3c
#define FELICA_REQUEST_SPEC_VERSION_ACK 0x3d
#define FELICA_REQUEST_SPECIFICATION_VERSION_REQ 0x3c
#define FELICA_REQUEST_SPECIFICATION_VERSION_RES 0x3d
#define FELICA_RESET_MODE_REQ 0x3e
#define FELICA_RESET_MODE_ACK 0x3f
#define FELICA_RESET_MODE_REQ 0x3e
#define FELICA_RESET_MODE_RES 0x3f
#define FELICA_AUTH1V2_REQ 0x40
#define FELICA_AUTH1V2_ACK 0x41
#define FELICA_AUTHENTICATION1_V2_REQ 0x40
#define FELICA_AUTHENTICATION1_V2_RES 0x41
#define FELICA_AUTH2V2_REQ 0x42
#define FELICA_AUTH2V2_ACK 0x43
#define FELICA_AUTHENTICATION2_V2_REQ 0x42
#define FELICA_AUTHENTICATION2_V2_RES 0x43
#define FELICA_RDSECV2_REQ 0x44
#define FELICA_RDSECV2_ACK 0x45
#define FELICA_WRTSECV2_REQ 0x46
#define FELICA_WRTSECV2_ACK 0x47
#define FELICA_READ_SECURE_V2_REQ 0x44
#define FELICA_READ_SECURE_V2_RES 0x45
#define FELICA_UPDATE_RNDID_REQ 0x4C
#define FELICA_UPDATE_RNDID_ACK 0x4D
#define FELICA_WRITE_SECURE_V2_REQ 0x46
#define FELICA_WRITE_SECURE_V2_RES 0x47
#define FELICA_REGISTER_AREA_V2_REQ 0x52
#define FELICA_REGISTER_AREA_V2_ACK 0x53
#define FELICA_UPDATE_RANDOM_ID_REQ 0x4C
#define FELICA_UPDATE_RANDOM_ID_RES 0x4D
#define FELICA_REGISTER_SERVICE_V2_REQ 0x54
#define FELICA_REGISTER_SERVICE_V2_ACK 0x55
#define FELICA_REGISTER_AREA_V2_REQ 0x52
#define FELICA_REGISTER_AREA_V2_RES 0x53
#define FELICA_REGISTER_ISSUE_ID_EX_V2_REQ 0x56
#define FELICA_REGISTER_ISSUE_ID_EX_V2_ACK 0x57
#define FELICA_REGISTER_SERVICE_V2_REQ 0x54
#define FELICA_REGISTER_SERVICE_V2_RES 0x55
#define FELICA_SEPARATE_SYSTEM_V2_REQ 0x58
#define FELICA_SEPARATE_SYSTEM_V2_ACK 0x59
#define FELICA_REGISTER_ISSUE_ID_EX_V2_REQ 0x56
#define FELICA_REGISTER_ISSUE_ID_EX_V2_RES 0x57
#define FELICA_SEPARATE_SYSTEM_V2_REQ 0x58
#define FELICA_SEPARATE_SYSTEM_V2_RES 0x59
// Also called COMMIT_REGISTRATION in some sources.
#define FELICA_CHANGE_SYSTEM_BLOCK_V2_REQ 0x5E
#define FELICA_CHANGE_SYSTEM_BLOCK_V2_ACK 0x5F
#define FELICA_CHANGE_SYSTEM_BLOCK_V2_REQ 0x5E
#define FELICA_CHANGE_SYSTEM_BLOCK_V2_RES 0x5F
#define FELICA_GET_CONTAINER_ID_REQ 0x70
#define FELICA_GET_CONTAINER_ID_ACK 0x71
#define FELICA_GET_CONTAINER_ID_REQ 0x70
#define FELICA_GET_CONTAINER_ID_RES 0x71
#define FELICA_SET_NODE_PROPERTY_REQ 0x78
#define FELICA_SET_NODE_PROPERTY_ACK 0x79
#define FELICA_SET_NODE_PROPERTY_REQ 0x78
#define FELICA_SET_NODE_PROPERTY_RES 0x79
#define FELICA_REGISTER_ISSUE_ID_REQ 0x80
#define FELICA_REGISTER_ISSUE_ID_ACK 0x81
#define FELICA_REGISTER_ISSUE_ID_REQ 0x80
#define FELICA_REGISTER_ISSUE_ID_RES 0x81
#define FELICA_REGISTER_AREA_REQ 0x82
#define FELICA_REGISTER_AREA_ACK 0x83
#define FELICA_REGISTER_AREA_REQ 0x82
#define FELICA_REGISTER_AREA_RES 0x83
#define FELICA_REGISTER_SERVICE_REQ 0x84
#define FELICA_REGISTER_SERVICE_ACK 0x85
#define FELICA_REGISTER_SERVICE_REQ 0x84
#define FELICA_REGISTER_SERVICE_RES 0x85
#define FELICA_SEPARATE_SYSTEM_REQ 0x88
#define FELICA_SEPARATE_SYSTEM_ACK 0x89
#define FELICA_SEPARATE_SYSTEM_REQ 0x88
#define FELICA_SEPARATE_SYSTEM_RES 0x89
// Also called COMMIT_REGISTRATION in some sources.
#define FELICA_CHANGE_SYSTEM_BLOCK_REQ 0x8E
#define FELICA_CHANGE_SYSTEM_BLOCK_ACK 0x8F
#define FELICA_CHANGE_SYSTEM_BLOCK_REQ 0x8E
#define FELICA_CHANGE_SYSTEM_BLOCK_RES 0x8F
#define FELICA_REGISTER_MANUFACTURE_ID_REQ 0x90
#define FELICA_REGISTER_MANUFACTURE_ID_ACK 0x91
#define FELICA_REGISTER_MANUFACTURE_ID_REQ 0x90
#define FELICA_REGISTER_MANUFACTURE_ID_RES 0x91
#define FELICA_SELF_DIAGNOSIS_REQ 0x92
#define FELICA_SELF_DIAGNOSIS_ACK 0x93
#define FELICA_SELF_DIAGNOSIS_REQ 0x92
#define FELICA_SELF_DIAGNOSIS_RES 0x93
// FeliCa interface commands for mobile devices
#define FELICA_CHANGE_ACTIVE_INTERFACE_REQ 0xA4
#define FELICA_CHANGE_ACTIVE_INTERFACE_RES 0xA5
#define FELICA_CHANGE_ACTIVE_INTERFACE_REQ 0xA4
#define FELICA_CHANGE_ACTIVE_INTERFACE_RES 0xA5
#define FELICA_RESET_INTERFACE_REQ 0xA8
#define FELICA_RESET_INTERFACE_RES 0xA9
#define FELICA_RESET_INTERFACE_REQ 0xA8
#define FELICA_RESET_INTERFACE_RES 0xA9
// FeliCa Ad-hoc Link Protocol (FALP) commands
#define FELICA_PROPOSE_ADHOC_REQ 0xAA
#define FELICA_PROPOSE_ADHOC_RES 0xAB
#define FELICA_PROPOSE_ADHOC_REQ 0xAA
#define FELICA_PROPOSE_ADHOC_RES 0xAB
#define FELICA_START_ADHOC_MODE_REQ 0xAC
#define FELICA_START_ADHOC_MODE_RES 0xAD
#define FELICA_START_ADHOC_MODE_REQ 0xAC
#define FELICA_START_ADHOC_MODE_RES 0xAD
// FALP tunnel command; does not have a corresponding response code
#define FELICA_FALP_TERMINATE_ADHOC 0xAE
#define FELICA_FALP_TERMINATE_ADHOC 0xAE
#define FELICA_PUSH_REQ 0xB0
#define FELICA_PUSH_RES 0xB1
#define FELICA_PUSH_REQ 0xB0
#define FELICA_PUSH_RES 0xB1
// FALP tunnel command; does not have a corresponding response code
#define FELICA_FALP_TRANSMIT_DATA 0xBC
#define FELICA_FALP_TRANSMIT_DATA 0xBC
// Command codes >= 0xC0 consist of two bytes; the second byte is the function code.
// Payload data, including the IDM, if present, is hence shifted by one byte to the right.
// DCK encapsulation commands mentioned in the CCC specification
#define FELICA_DCK_ENCAPSULATION_CAPDU_DATA 0xC200
#define FELICA_DCK_ENCAPSULATION_CAPDU_DATA_CHAINED 0xC201
#define FELICA_DCK_ENCAPSULATION_RW_ACK 0xC210
#define FELICA_DCK_ENCAPSULATION_NACK 0xC220
#define FELICA_DCK_ENCAPSULATION_CAPDU_DATA 0xC200
#define FELICA_DCK_ENCAPSULATION_CAPDU_DATA_CHAINED 0xC201
#define FELICA_DCK_ENCAPSULATION_RW_ACK 0xC210
#define FELICA_DCK_ENCAPSULATION_NACK 0xC220
// DCK encapsulation responses mentioned in the CCC specification
#define FELICA_DCK_ENCAPSULATION_RAPDU_DATA_RES 0xC300
@@ -1074,56 +1075,56 @@ ISO 7816-4 Basic interindustry commands. For command APDU's.
#define FELICA_DCK_ENCAPSULATION_NACK_RES 0xC320
// FeliCa internal RF commands used on the wired interface
#define FELICA_SET_PRIVACY_FLAG_REQ 0xCC01
#define FELICA_SET_PRIVACY_FLAG_RES 0xCD01
#define FELICA_SET_PRIVACY_FLAG_REQ 0xCC01
#define FELICA_SET_PRIVACY_FLAG_RES 0xCD01
#define FELICA_REQUEST_MASKED_CODE_LIST_REQ 0xCC02
#define FELICA_REQUEST_MASKED_CODE_LIST_RES 0xCD02
#define FELICA_REQUEST_MASKED_CODE_LIST_REQ 0xCC02
#define FELICA_REQUEST_MASKED_CODE_LIST_RES 0xCD02
// Legacy mobile FeliCa client commands
#define FELICA_TURN_OFF_RF_POWER_CMD 0xCC12
#define FELICA_TURN_OFF_RF_POWER_RES 0xCD12
#define FELICA_TURN_OFF_RF_POWER_CMD 0xCC12
#define FELICA_TURN_OFF_RF_POWER_RES 0xCD12
#define FELICA_SET_BAUD_RATE_CMD 0xCC13
#define FELICA_SET_BAUD_RATE_RES 0xCD13
#define FELICA_SET_BAUD_RATE_CMD 0xCC13
#define FELICA_SET_BAUD_RATE_RES 0xCD13
// NFC-DEP PDUs over NFC-F: the first byte specifies the direction and the second the PDU type.
// Unlike other extended commands, both the command code and function code is incremented on response.
#define FELICA_NFC_DEP_ATR_REQ 0xD400
#define FELICA_NFC_DEP_ATR_RES 0xD501
#define FELICA_NFC_DEP_PSL_REQ 0xD404
#define FELICA_NFC_DEP_PSL_RES 0xD505
#define FELICA_NFC_DEP_DEP_REQ 0xD406
#define FELICA_NFC_DEP_DEP_RES 0xD507
#define FELICA_NFC_DEP_DSL_REQ 0xD408
#define FELICA_NFC_DEP_DSL_RES 0xD509
#define FELICA_NFC_DEP_RLS_REQ 0xD40A
#define FELICA_NFC_DEP_RLS_RES 0xD50B
#define FELICA_NFC_DEP_ATR_REQ 0xD400
#define FELICA_NFC_DEP_ATR_RES 0xD501
#define FELICA_NFC_DEP_PSL_REQ 0xD404
#define FELICA_NFC_DEP_PSL_RES 0xD505
#define FELICA_NFC_DEP_DEP_REQ 0xD406
#define FELICA_NFC_DEP_DEP_RES 0xD507
#define FELICA_NFC_DEP_DSL_REQ 0xD408
#define FELICA_NFC_DEP_DSL_RES 0xD509
#define FELICA_NFC_DEP_RLS_REQ 0xD40A
#define FELICA_NFC_DEP_RLS_RES 0xD50B
// These commands are defined by JIS X 6319-4 but have not been observed on any real targets.
#define FELICA_ATTR_REQ 0xD600
#define FELICA_ATTR_RES 0xD701
#define FELICA_HLT_REQ 0xD602
#define FELICA_HLT_RES 0xD703
#define FELICA_WUP_REQ 0xD604
#define FELICA_WUP_RES 0xD705
#define FELICA_ATTR_REQ 0xD600
#define FELICA_ATTR_RES 0xD701
#define FELICA_HLT_REQ 0xD602
#define FELICA_HLT_RES 0xD703
#define FELICA_WUP_REQ 0xD604
#define FELICA_WUP_RES 0xD705
// Unlike most two-byte commands, works on all FeliCa targets; response code matches the command code
#define FELICA_ECHO_REQ 0xF000
#define FELICA_ECHO_REQ 0xF000
// Legacy mobile FeliCa client RF chip register commands
#define FELICA_SET_RF_CHIP_REGISTER_CMD 0xF803
#define FELICA_SET_RF_CHIP_REGISTER_RES 0xF903
#define FELICA_SET_RF_CHIP_REGISTER_CMD 0xF803
#define FELICA_SET_RF_CHIP_REGISTER_RES 0xF903
#define FELICA_GET_RF_CHIP_REGISTER_CMD 0xF804
#define FELICA_GET_RF_CHIP_REGISTER_RES 0xF904
#define FELICA_GET_RF_CHIP_REGISTER_CMD 0xF804
#define FELICA_GET_RF_CHIP_REGISTER_RES 0xF904
// Other FeliCa constants
#define SYSTEMCODE_WILDCARD 0xffff // ANY
#define SYSTEMCODE_OSAIFU_KEITAI 0xfe0f // Osaifu-Keitai
#define SYSTEMCODE_WILDCARD 0xffff // ANY
#define SYSTEMCODE_OSAIFU_KEITAI 0xfe0f // Osaifu-Keitai
#define SERVICE_FELICA_LITE_READONLY 0x0b00 // FeliCa Lite RO
#define SERVICE_FELICA_LITE_READWRITE 0x0900 // FeliCa Lite RW
#define SERVICE_FELICA_LITE_READONLY 0x0b00 // FeliCa Lite RO
#define SERVICE_FELICA_LITE_READWRITE 0x0900 // FeliCa Lite RW
// Calypso protocol
#define CALYPSO_GET_RESPONSE 0xC0