mirror of
https://github.com/Next-Flip/Momentum-Firmware.git
synced 2026-05-11 06:09:08 -07:00
Revert NFC FeliCa WIP PR (breaks more than adds)
This commit is contained in:
@@ -134,36 +134,21 @@ bool furi_hal_nfc_detect(FuriHalNfcDevData* nfc_data, uint32_t timeout) {
|
||||
if(detected) {
|
||||
if(dev_list[0].type == RFAL_NFC_LISTEN_TYPE_NFCA) {
|
||||
nfc_data->type = FuriHalNfcTypeA;
|
||||
nfc_data->a_data.atqa[0] = dev_list[0].dev.nfca.sensRes.anticollisionInfo;
|
||||
nfc_data->a_data.atqa[1] = dev_list[0].dev.nfca.sensRes.platformInfo;
|
||||
nfc_data->a_data.sak = dev_list[0].dev.nfca.selRes.sak;
|
||||
nfc_data->atqa[0] = dev_list[0].dev.nfca.sensRes.anticollisionInfo;
|
||||
nfc_data->atqa[1] = dev_list[0].dev.nfca.sensRes.platformInfo;
|
||||
nfc_data->sak = dev_list[0].dev.nfca.selRes.sak;
|
||||
uint8_t* cuid_start = dev_list[0].nfcid;
|
||||
if(dev_list[0].nfcidLen == 7) {
|
||||
cuid_start = &dev_list[0].nfcid[3];
|
||||
}
|
||||
nfc_data->a_data.cuid = (cuid_start[0] << 24) | (cuid_start[1] << 16) |
|
||||
(cuid_start[2] << 8) | (cuid_start[3]);
|
||||
nfc_data->cuid = (cuid_start[0] << 24) | (cuid_start[1] << 16) | (cuid_start[2] << 8) |
|
||||
(cuid_start[3]);
|
||||
} else if(
|
||||
dev_list[0].type == RFAL_NFC_LISTEN_TYPE_NFCB ||
|
||||
dev_list[0].type == RFAL_NFC_LISTEN_TYPE_ST25TB) {
|
||||
nfc_data->type = FuriHalNfcTypeB;
|
||||
} else if(dev_list[0].type == RFAL_NFC_LISTEN_TYPE_NFCF) {
|
||||
nfc_data->type = FuriHalNfcTypeF;
|
||||
furi_assert(dev_list[0].nfcidLen == RFAL_NFCF_NFCID2_LEN);
|
||||
memcpy(
|
||||
&nfc_data->f_data.pmm[0],
|
||||
dev_list[0].dev.nfcf.sensfRes.PAD0,
|
||||
RFAL_NFCF_SENSF_RES_PAD0_LEN);
|
||||
memcpy(
|
||||
&nfc_data->f_data.pmm[RFAL_NFCF_SENSF_RES_PAD0_LEN],
|
||||
dev_list[0].dev.nfcf.sensfRes.PAD1,
|
||||
RFAL_NFCF_SENSF_RES_PAD1_LEN);
|
||||
nfc_data->f_data.pmm[RFAL_NFCF_SENSF_RES_PAD0_LEN + RFAL_NFCF_SENSF_RES_PAD1_LEN] =
|
||||
dev_list[0].dev.nfcf.sensfRes.MRTIcheck;
|
||||
nfc_data->f_data.pmm[RFAL_NFCF_SENSF_RES_PAD0_LEN + RFAL_NFCF_SENSF_RES_PAD1_LEN + 1] =
|
||||
dev_list[0].dev.nfcf.sensfRes.MRTIupdate;
|
||||
nfc_data->f_data.pmm[RFAL_NFCF_SENSF_RES_PAD0_LEN + RFAL_NFCF_SENSF_RES_PAD1_LEN + 2] =
|
||||
dev_list[0].dev.nfcf.sensfRes.PAD2;
|
||||
} else if(dev_list[0].type == RFAL_NFC_LISTEN_TYPE_NFCV) {
|
||||
nfc_data->type = FuriHalNfcTypeV;
|
||||
}
|
||||
@@ -386,15 +371,15 @@ void furi_hal_nfc_listen_start(FuriHalNfcDevData* nfc_data) {
|
||||
// Write PT Memory
|
||||
uint8_t pt_memory[15] = {};
|
||||
memcpy(pt_memory, nfc_data->uid, nfc_data->uid_len);
|
||||
pt_memory[10] = nfc_data->a_data.atqa[0];
|
||||
pt_memory[11] = nfc_data->a_data.atqa[1];
|
||||
pt_memory[10] = nfc_data->atqa[0];
|
||||
pt_memory[11] = nfc_data->atqa[1];
|
||||
if(nfc_data->uid_len == 4) {
|
||||
pt_memory[12] = nfc_data->a_data.sak & ~FURI_HAL_NFC_UID_INCOMPLETE;
|
||||
pt_memory[12] = nfc_data->sak & ~FURI_HAL_NFC_UID_INCOMPLETE;
|
||||
} else {
|
||||
pt_memory[12] = FURI_HAL_NFC_UID_INCOMPLETE;
|
||||
}
|
||||
pt_memory[13] = nfc_data->a_data.sak & ~FURI_HAL_NFC_UID_INCOMPLETE;
|
||||
pt_memory[14] = nfc_data->a_data.sak & ~FURI_HAL_NFC_UID_INCOMPLETE;
|
||||
pt_memory[13] = nfc_data->sak & ~FURI_HAL_NFC_UID_INCOMPLETE;
|
||||
pt_memory[14] = nfc_data->sak & ~FURI_HAL_NFC_UID_INCOMPLETE;
|
||||
|
||||
st25r3916WritePTMem(pt_memory, sizeof(pt_memory));
|
||||
// Go to sense
|
||||
|
||||
@@ -69,25 +69,14 @@ typedef enum {
|
||||
FuriHalNfcInterfaceNfcDep,
|
||||
} FuriHalNfcInterface;
|
||||
|
||||
typedef struct {
|
||||
uint32_t cuid;
|
||||
uint8_t atqa[2];
|
||||
uint8_t sak;
|
||||
} FuriHalNfcADevData;
|
||||
|
||||
typedef struct {
|
||||
uint8_t pmm[8];
|
||||
} FuriHalNfcFDevData;
|
||||
|
||||
typedef struct {
|
||||
FuriHalNfcType type;
|
||||
FuriHalNfcInterface interface;
|
||||
uint8_t uid_len;
|
||||
uint8_t uid[10];
|
||||
union {
|
||||
FuriHalNfcADevData a_data;
|
||||
FuriHalNfcFDevData f_data;
|
||||
};
|
||||
uint32_t cuid;
|
||||
uint8_t atqa[2];
|
||||
uint8_t sak;
|
||||
} FuriHalNfcDevData;
|
||||
|
||||
typedef void (
|
||||
|
||||
Reference in New Issue
Block a user