summaryrefslogtreecommitdiff
path: root/src/nfc/nfc/nfc_ncif.cc
diff options
context:
space:
mode:
authorGeorge Chang <georgekgchang@google.com>2024-06-10 10:00:07 +0000
committerGeorge Chang <georgekgchang@google.com>2024-06-10 10:09:52 +0000
commitfeb9984e26492962dff65713d74dbdad9df51461 (patch)
treed773f9344c943d0960c17e2c5577a7028610f7ae /src/nfc/nfc/nfc_ncif.cc
parent02be125f7d650595fb5744da42c25727e21c5065 (diff)
downloadnfc-master.tar.gz
Code cleanup: removed use of P2P active modes part 2HEADmastermain
Fix NCI_DISCOVERY_TYPE_POLL_F case in nfc_ncif_decode_rf_params() following aosp/3061685 update Bug: 345667453 Bug: 335639730 Test: R/W T3T Change-Id: I186d8697c462ac26ac5514988371d980f9645ee3
Diffstat (limited to 'src/nfc/nfc/nfc_ncif.cc')
-rw-r--r--src/nfc/nfc/nfc_ncif.cc31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/nfc/nfc/nfc_ncif.cc b/src/nfc/nfc/nfc_ncif.cc
index a85f0516..9dabe09b 100644
--- a/src/nfc/nfc/nfc_ncif.cc
+++ b/src/nfc/nfc/nfc_ncif.cc
@@ -759,6 +759,37 @@ Available after Technology Detection
STREAM_TO_ARRAY(p_pb->sensb_res, p, p_pb->sensb_res_len);
memcpy(p_pb->nfcid0, p_pb->sensb_res, NFC_NFCID0_MAX_LEN);
p_pb->fwi = p_pb->sensb_res[10] >> 4;
+ } else if (NCI_DISCOVERY_TYPE_POLL_F == p_param->mode) {
+ /*
+Bit Rate 1 byte 1 212 kbps/2 424 kbps/0 and 3 to 255 RFU
+SENSF_RES Response length.(n) 1 byte Length of SENSF_RES (Byte 2 - Byte 17 or
+19).Available after Technology Detection
+SENSF_RES Response Byte 2 - Byte 17 or 19 n bytes Defined in [DIGPROT]
+Available after Technology Detection
+ */
+ p_pf = &p_param->param.pf;
+
+ if (plen < 2) {
+ goto invalid_packet;
+ }
+ plen -= 2;
+ p_pf->bit_rate = *p++;
+ p_pf->sensf_res_len = *p++;
+ if (p_pf->sensf_res_len > NCI_MAX_SENSF_RES_LEN)
+ p_pf->sensf_res_len = NCI_MAX_SENSF_RES_LEN;
+
+ if (plen < p_pf->sensf_res_len) {
+ goto invalid_packet;
+ }
+ plen -= p_pf->sensf_res_len;
+ STREAM_TO_ARRAY(p_pf->sensf_res, p, p_pf->sensf_res_len);
+
+ if (p_pf->sensf_res_len < NCI_MRTI_UPDATE_INDEX + 1) {
+ goto invalid_packet;
+ }
+ memcpy(p_pf->nfcid2, p_pf->sensf_res, NCI_NFCID2_LEN);
+ p_pf->mrti_check = p_pf->sensf_res[NCI_MRTI_CHECK_INDEX];
+ p_pf->mrti_update = p_pf->sensf_res[NCI_MRTI_UPDATE_INDEX];
} else if (NCI_DISCOVERY_TYPE_LISTEN_F == p_param->mode) {
p_lf = &p_param->param.lf;