mirror of
https://github.com/DarkFlippers/unleashed-firmware.git
synced 2025-12-13 13:09:49 +04:00
Merge remote-tracking branch 'OFW/dev' into dev
This commit is contained in:
@@ -651,11 +651,12 @@ NfcError nfc_felica_listener_set_sensf_res_data(
|
||||
const uint8_t* idm,
|
||||
const uint8_t idm_len,
|
||||
const uint8_t* pmm,
|
||||
const uint8_t pmm_len) {
|
||||
const uint8_t pmm_len,
|
||||
const uint16_t sys_code) {
|
||||
furi_check(instance);
|
||||
|
||||
FuriHalNfcError error =
|
||||
furi_hal_nfc_felica_listener_set_sensf_res_data(idm, idm_len, pmm, pmm_len);
|
||||
furi_hal_nfc_felica_listener_set_sensf_res_data(idm, idm_len, pmm, pmm_len, sys_code);
|
||||
instance->comm_state = NfcCommStateIdle;
|
||||
return nfc_process_hal_error(error);
|
||||
}
|
||||
|
||||
@@ -361,6 +361,7 @@ NfcError nfc_iso14443a_listener_set_col_res_data(
|
||||
* @param[in] idm_len IDm length in bytes.
|
||||
* @param[in] pmm pointer to a byte array containing the PMm.
|
||||
* @param[in] pmm_len PMm length in bytes.
|
||||
* @param[in] sys_code System code from SYS_C block
|
||||
* @returns NfcErrorNone on success, any other error code on failure.
|
||||
*/
|
||||
NfcError nfc_felica_listener_set_sensf_res_data(
|
||||
@@ -368,7 +369,8 @@ NfcError nfc_felica_listener_set_sensf_res_data(
|
||||
const uint8_t* idm,
|
||||
const uint8_t idm_len,
|
||||
const uint8_t* pmm,
|
||||
const uint8_t pmm_len);
|
||||
const uint8_t pmm_len,
|
||||
const uint16_t sys_code);
|
||||
|
||||
/**
|
||||
* @brief Send ISO15693 Start of Frame pattern in listener mode
|
||||
|
||||
@@ -270,7 +270,8 @@ static void nfc_worker_listener_pass_col_res(Nfc* instance, uint8_t* rx_data, ui
|
||||
}
|
||||
} else if(rx_bits == 8 * 8) {
|
||||
FelicaPollingRequest* request = (FelicaPollingRequest*)rx_data;
|
||||
if(request->system_code == instance->pt_memory.system_code) {
|
||||
if(request->system_code == 0xFFFF ||
|
||||
request->system_code == instance->pt_memory.system_code) {
|
||||
uint8_t response_size = sizeof(FelicaSensfResData) + 1;
|
||||
bit_buffer_reset(tx_buffer);
|
||||
bit_buffer_append_byte(tx_buffer, response_size);
|
||||
@@ -501,19 +502,19 @@ NfcError nfc_felica_listener_set_sensf_res_data(
|
||||
const uint8_t* idm,
|
||||
const uint8_t idm_len,
|
||||
const uint8_t* pmm,
|
||||
const uint8_t pmm_len) {
|
||||
const uint8_t pmm_len,
|
||||
const uint16_t sys_code) {
|
||||
furi_assert(instance);
|
||||
furi_assert(idm);
|
||||
furi_assert(pmm);
|
||||
furi_assert(idm_len == 8);
|
||||
furi_assert(pmm_len == 8);
|
||||
|
||||
instance->pt_memory.system_code = 0xFFFF;
|
||||
instance->pt_memory.system_code = sys_code;
|
||||
instance->pt_memory.sens_res.code = 0x01;
|
||||
instance->software_col_res_required = true;
|
||||
memcpy(instance->pt_memory.sens_res.idm.data, idm, idm_len);
|
||||
memcpy(instance->pt_memory.sens_res.pmm.data, pmm, pmm_len);
|
||||
|
||||
return NfcErrorNone;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,8 +26,9 @@ FelicaListener* felica_listener_alloc(Nfc* nfc, FelicaData* data) {
|
||||
memcpy(instance->mc_shadow.data, instance->data->data.fs.mc.data, FELICA_DATA_BLOCK_SIZE);
|
||||
instance->data->data.fs.state.data[0] = 0;
|
||||
nfc_config(instance->nfc, NfcModeListener, NfcTechFelica);
|
||||
const uint16_t system_code = *(uint16_t*)data->data.fs.sys_c.data;
|
||||
nfc_felica_listener_set_sensf_res_data(
|
||||
nfc, data->idm.data, sizeof(data->idm), data->pmm.data, sizeof(data->pmm));
|
||||
nfc, data->idm.data, sizeof(data->idm), data->pmm.data, sizeof(data->pmm), system_code);
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user