From 7736c109c8cb71635cf4d43a60beeaac1f93fe4c Mon Sep 17 00:00:00 2001 From: kopecdav Date: Fri, 17 Jan 2025 15:46:49 +0100 Subject: [PATCH] feat(core): Introduce nfc module with rfal library [no changelog] --- core/SConscript.prodtest | 2 +- core/embed/io/nfc/inc/io/nfc.h | 40 + core/embed/io/nfc/rfal/doc/Release_Notes.html | 458 + .../doc/ST25R3916_CERTComplianceReport.html | 11568 ++++++++++++++++ .../doc/ST25R3916_MisraComplianceReport.html | 10580 ++++++++++++++ .../io/nfc/rfal/doc/_htmresc/st_logo.png | Bin 0 -> 22182 bytes core/embed/io/nfc/rfal/doc/rfal.chm | Bin 0 -> 3900576 bytes .../io/nfc/rfal/include/rfal_analogConfig.h | 560 + core/embed/io/nfc/rfal/include/rfal_cd.h | 173 + core/embed/io/nfc/rfal/include/rfal_chip.h | 385 + .../io/nfc/rfal/include/rfal_defConfig.h | 340 + core/embed/io/nfc/rfal/include/rfal_dpo.h | 223 + core/embed/io/nfc/rfal/include/rfal_isoDep.h | 1108 ++ core/embed/io/nfc/rfal/include/rfal_nfc.h | 500 + core/embed/io/nfc/rfal/include/rfal_nfcDep.h | 843 ++ core/embed/io/nfc/rfal/include/rfal_nfca.h | 591 + core/embed/io/nfc/rfal/include/rfal_nfcb.h | 636 + core/embed/io/nfc/rfal/include/rfal_nfcf.h | 508 + core/embed/io/nfc/rfal/include/rfal_nfcv.h | 828 ++ core/embed/io/nfc/rfal/include/rfal_rf.h | 1934 +++ core/embed/io/nfc/rfal/include/rfal_st25tb.h | 335 + core/embed/io/nfc/rfal/include/rfal_st25xv.h | 807 ++ core/embed/io/nfc/rfal/include/rfal_t1t.h | 176 + core/embed/io/nfc/rfal/include/rfal_t2t.h | 146 + core/embed/io/nfc/rfal/include/rfal_t4t.h | 378 + core/embed/io/nfc/rfal/include/rfal_utils.h | 218 + .../io/nfc/rfal/source/rfal_analogConfig.c | 507 + core/embed/io/nfc/rfal/source/rfal_cd.c | 738 + core/embed/io/nfc/rfal/source/rfal_crc.c | 78 + core/embed/io/nfc/rfal/source/rfal_crc.h | 69 + core/embed/io/nfc/rfal/source/rfal_dpo.c | 290 + .../io/nfc/rfal/source/rfal_iso15693_2.c | 518 + .../io/nfc/rfal/source/rfal_iso15693_2.h | 200 + core/embed/io/nfc/rfal/source/rfal_isoDep.c | 3188 +++++ core/embed/io/nfc/rfal/source/rfal_nfc.c | 2451 ++++ core/embed/io/nfc/rfal/source/rfal_nfcDep.c | 2827 ++++ core/embed/io/nfc/rfal/source/rfal_nfca.c | 1069 ++ core/embed/io/nfc/rfal/source/rfal_nfcb.c | 751 + core/embed/io/nfc/rfal/source/rfal_nfcf.c | 676 + core/embed/io/nfc/rfal/source/rfal_nfcv.c | 974 ++ core/embed/io/nfc/rfal/source/rfal_st25tb.c | 538 + core/embed/io/nfc/rfal/source/rfal_st25xv.c | 678 + core/embed/io/nfc/rfal/source/rfal_t1t.c | 223 + core/embed/io/nfc/rfal/source/rfal_t2t.c | 231 + core/embed/io/nfc/rfal/source/rfal_t4t.c | 417 + .../source/st25r3916/rfal_analogConfigTbl.h | 1656 +++ .../nfc/rfal/source/st25r3916/rfal_dpoTbl.h | 69 + .../nfc/rfal/source/st25r3916/rfal_features.h | 241 + .../rfal/source/st25r3916/rfal_rfst25r3916.c | 5669 ++++++++ .../io/nfc/rfal/source/st25r3916/st25r3916.c | 893 ++ .../io/nfc/rfal/source/st25r3916/st25r3916.h | 705 + .../nfc/rfal/source/st25r3916/st25r3916_aat.c | 351 + .../nfc/rfal/source/st25r3916/st25r3916_aat.h | 106 + .../nfc/rfal/source/st25r3916/st25r3916_com.c | 643 + .../nfc/rfal/source/st25r3916/st25r3916_com.h | 1618 +++ .../nfc/rfal/source/st25r3916/st25r3916_irq.c | 232 + .../nfc/rfal/source/st25r3916/st25r3916_irq.h | 312 + .../nfc/rfal/source/st25r3916/st25r3916_led.c | 162 + .../nfc/rfal/source/st25r3916/st25r3916_led.h | 145 + core/embed/io/nfc/st25r3916b/nfc.c | 306 + core/embed/io/nfc/st25r3916b/nfc_internal.h | 16 + core/embed/io/nfc/st25r3916b/rfal_platform.h | 296 + .../models/T3W1/boards/trezor_t3w1_revA.h | 25 + core/embed/projects/prodtest/main.c | 4 + .../models/T3W1/trezor_t3w1_revA.py | 20 + 65 files changed, 63228 insertions(+), 1 deletion(-) create mode 100644 core/embed/io/nfc/inc/io/nfc.h create mode 100644 core/embed/io/nfc/rfal/doc/Release_Notes.html create mode 100644 core/embed/io/nfc/rfal/doc/ST25R3916_CERTComplianceReport.html create mode 100644 core/embed/io/nfc/rfal/doc/ST25R3916_MisraComplianceReport.html create mode 100644 core/embed/io/nfc/rfal/doc/_htmresc/st_logo.png create mode 100644 core/embed/io/nfc/rfal/doc/rfal.chm create mode 100644 core/embed/io/nfc/rfal/include/rfal_analogConfig.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_cd.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_chip.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_defConfig.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_dpo.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_isoDep.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_nfc.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_nfcDep.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_nfca.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_nfcb.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_nfcf.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_nfcv.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_rf.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_st25tb.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_st25xv.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_t1t.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_t2t.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_t4t.h create mode 100644 core/embed/io/nfc/rfal/include/rfal_utils.h create mode 100644 core/embed/io/nfc/rfal/source/rfal_analogConfig.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_cd.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_crc.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_crc.h create mode 100644 core/embed/io/nfc/rfal/source/rfal_dpo.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_iso15693_2.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_iso15693_2.h create mode 100644 core/embed/io/nfc/rfal/source/rfal_isoDep.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_nfc.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_nfcDep.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_nfca.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_nfcb.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_nfcf.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_nfcv.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_st25tb.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_st25xv.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_t1t.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_t2t.c create mode 100644 core/embed/io/nfc/rfal/source/rfal_t4t.c create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/rfal_analogConfigTbl.h create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/rfal_dpoTbl.h create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/rfal_features.h create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/rfal_rfst25r3916.c create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/st25r3916.c create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/st25r3916.h create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/st25r3916_aat.c create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/st25r3916_aat.h create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/st25r3916_com.c create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/st25r3916_com.h create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/st25r3916_irq.c create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/st25r3916_irq.h create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/st25r3916_led.c create mode 100644 core/embed/io/nfc/rfal/source/st25r3916/st25r3916_led.h create mode 100644 core/embed/io/nfc/st25r3916b/nfc.c create mode 100644 core/embed/io/nfc/st25r3916b/nfc_internal.h create mode 100644 core/embed/io/nfc/st25r3916b/rfal_platform.h diff --git a/core/SConscript.prodtest b/core/SConscript.prodtest index d245a544c8..8c5e45170f 100644 --- a/core/SConscript.prodtest +++ b/core/SConscript.prodtest @@ -9,7 +9,7 @@ PRODUCTION = ARGUMENTS.get('PRODUCTION', '0') == '1' BOOTLOADER_DEVEL = ARGUMENTS.get('BOOTLOADER_DEVEL', '0') == '1' HW_REVISION = ARGUMENTS.get('HW_REVISION', None) -FEATURES_WANTED = ["input", "sbu", "sd_card", "rgb_led", "usb", "consumption_mask", "optiga", "haptic", "ble", "tropic"] +FEATURES_WANTED = ["input", "sbu", "nfc", "sd_card", "rgb_led", "usb", "consumption_mask", "optiga", "haptic", "ble", "tropic"] CCFLAGS_MOD = '' CPPPATH_MOD = [] diff --git a/core/embed/io/nfc/inc/io/nfc.h b/core/embed/io/nfc/inc/io/nfc.h new file mode 100644 index 0000000000..34aaf2d3f0 --- /dev/null +++ b/core/embed/io/nfc/inc/io/nfc.h @@ -0,0 +1,40 @@ +/* + * This file is part of the Trezor project, https://trezor.io/ + * + * Copyright (c) SatoshiLabs + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#ifndef TREZORHAL_NFC_H +#define TREZORHAL_NFC_H + +#include +#include + +typedef enum { + NFC_OK, + NFC_ERROR, + NFC_NOT_INITIALIZED, + NFC_SPI_BUS_ERROR, + NFC_INITIALIZATION_FAILED, +} nfc_status_t; + +nfc_status_t nfc_init(); + +nfc_status_t nfc_deinit(); + +void nfc_poll_type_A(); + +#endif // TREZORHAL_NFC_H diff --git a/core/embed/io/nfc/rfal/doc/Release_Notes.html b/core/embed/io/nfc/rfal/doc/Release_Notes.html new file mode 100644 index 0000000000..607e52711f --- /dev/null +++ b/core/embed/io/nfc/rfal/doc/Release_Notes.html @@ -0,0 +1,458 @@ + + + + + + + + + + + + + Release Notes for RFAL Library + + + + + + + + + +
+


+

+
+ + + + + + +
+ + + + + + + + + +

+
+

Release +Notes for RFAL software Library

+

Copyright +2019 STMicroelectronics

+

+
+

 

+ + + + + + +

+
The RFAL Library +(RF Abstraction Layer) provides several functionalities required to perform RF/NFC communications. +The RFAL encapsulates the different RF ICs (ST25R3911, ST25R3916, ST25R200, ST25R95 and future ST25R devices) into a common and easy to use interface.
+
+ The technologies currently supported by RFAL are: +
    +
  • NFC-A \ ISO14443A (T1T, T2T, T4TA)
  • +
  • NFC-B \ ISO14443B (T4TB)
  • +
  • NFC-F \ FeliCa (T3T)
  • +
  • NFC-V \ ISO15693 (T5T)
  • +
  • P2P \ ISO18092 (NFCIP1, Passive-Active P2P)
  • +
  • ST25TB (ISO14443-2 Type B with Proprietary Protocol)
  • +
  • PicoPass \ iClass
  • +
  • B' \ Calypso
  • +
  • CTS \ CTM
  • +
+

+ The protocols provided by RFAL are: +
    +
  • ISO-DEP (ISO14443-4)
  • +
  • NFC-DEP (ISO18092)
  • +
+
+
+
    +
+ +

Update History

+
+ +

V3.0.1 / 12-Sep-2024

+

+

Main Changes

+
    +
  • Hotfix to address condition that prevents usage of WU default parameters on ST25R3916 (not ST25R3916B) if AAT enabled
  • +
+
+ +

V3.0.0 / 10-Jun-2024

+

+

Main Changes

+
    +
  • ST25R200/ST25R100 support added
  • +
  • Changed rfalDeinitialize procedure to ensure ST25R is set in PD mode
  • +
  • Added new interface to check whether Wake-up mode is enabled
  • +
  • Extended NFC/HL to allow to configure whether to poll ahead of going to wake-up mode
  • +
  • Improved ISO-DEP buffer handling during Listen mode activation
  • +
  • Improved RFAL NFC/HL layer handling during discovery, particularly for AP2P
  • +
  • DPO extended to allow adjustment without a communication mode previously set
  • +
  • Updated ST25R3916 to ensure MOSI state during read operation
  • +
  • Extended MISRA C / CERT C coverage to DPO and CD modules
  • +
  • Introduced WLC WPT API declarations
  • +
  • Several driver improvements and fixes
  • +
+
+ +

V2.10.0 / 16-Fev-2024

+

+

Main Changes

+
    +
  • Feature switches no longer disabled by omission. User configs at rfal_platform.h or by default by rfal_defConfig.h
  • +
  • Ensure ST25R3916B AWS is disabled during regulator adjustment
  • +
  • Extended WU mode to allow the reference measurement to be obtained from WU/PD mode (ST25R3911 and ST25R3916)
  • +
  • Extended NFC/HL to allow to configure whether to poll ahead of going to wake-up mode
  • +
  • Changed NFC/HL to only initialize Analog Configuration if not yet performed
  • +
  • Added new interface to check if Wake-up mode is enabled
  • +
  • Extended LED support for debug purposes
  • +
  • ISO-DEP extended to ensure NFC-B TR2 / FDT Poll
  • +
  • Updated DID handling in ISO-DEP
  • +
  • Added Listen mode modulation Get and Set interfaces
  • +
  • Introduced Listen mode External Field On callback
  • +
  • ST25TB UID integrity checked during Pcall16 anticollision
  • +
  • Several driver improvements and fixes
  • +
+
+ +

V2.8.0 / 14-Dez-2022

+

+

Main Changes

+
    +
  • Incorporated RFAL dependecies (utils, errno) into library to make library more self-contained
  • +
  • Prepended RFAL prefix into user configuration file platform.h --> rfal_platform.h (breaks compatibility with previous versions, see example in rfal.chm))
  • +
  • Introduced default configuration rfal_defConfig.h
  • +
  • Improved ISO-DEP Deselect sequence
  • +
  • Changed the RFAL NFC/HL layer to make use of non blocking ISO-DEP Deselect procedure
  • +
  • Several improvements and fixes on RFAL NFC/HL layer, including deactivation procedure and compliance mode used for ISO-DEP
  • +
  • Extended ISO15693 anticollsion APIs to allow larger receptions
  • +
  • Improved library error checking and portability
  • +
  • New APIs introduced in rfalChip interface
  • +
  • Extended rfalLowPowerModeStart to receive a mode to be set
  • +
  • Added RFAL Card Detection/Protection module
  • +
  • Several driver improvements and fixes
  • +
+
+ +

V2.6.0 / 19-Jan-2022

+

+

Main Changes

+
    +
  • Introduced support for ST25R3916B
  • +
  • Extended NFC technology modules with non-blocking APIs for card activation (Technology detection, Collision Resolution and Activation)
  • +
  • Extended NFC/HL module with option to bail out, deactivation types, and usage of new non-blocking APIs
  • +
  • Added new transceive flag for CRC check on Rx
  • +
  • Better aligned NFC-V special frame timings to NFC Forum Digital
  • +
  • Further improved compliance to CERT C
  • +
  • Corrected PAD length in SENSF_RES
  • +
  • Modified Field Detector to manual setting for RF Collision avoidance / Field On (ST25R3916) due to high temperature limitation
  • +
  • Changed default Field On mechanism from RF Collision avoidance to transmitter enable (ST25R3911) due to high temperature limitation
  • +
  • Several driver improvements and fixes
  • +
+
+ +

V2.4.0 / 14-Jun-2021

+

+

Main Changes

+
    +
  • Aligned to NFC Forum CR12
  • +
  • EMD error handling simplified/renamed
  • +
  • SW license disclaimer updated
  • +
  • Added ST25R device selection check
  • +
  • Improved SPI initialization sequence
  • +
  • Modified certain chip specific features/definitions
  • +
  • Added API for retrieving Wake-up status
  • +
  • Extended available parameters on NFC/HL module
  • +
  • Introduced support for proprietary NFC technology on NFC/HL module
  • +
  • Introduced Transceive start synchronization callback
  • +
  • Extended support for non-blocking activation
  • +
  • Extended ST25R3916 SW Tag Detection with fractional delta option
  • +
  • Improved compliance to CERT C
  • +
  • Added handling for ST25R3916 PPON2 timer limitation
  • +
  • Several driver improvements and fixes
  • +
+
+ +

V2.2.0 / 22-May-2020

+

+

Main Changes

+
    +
  • Better alignment to NFC Forum latest requirements (CR12)
  • +
  • Extended NFC-V module with non-addressed mode support and improved aticollision
  • +
  • Feature Switches changed to be not mandatory. Modules disabled by default
  • +
  • Aligned APIs on platform.h (breaks compatibility with previous versions, see example in rfal.chm)
  • +
  • Added API for release/deletion of timers
  • +
  • ST25R3916 default analog table modified to X-NUCLEO-NFC06A1 board
  • +
  • Improved AP2P operation
  • +
  • Fixed issues introduced on previous release linked to SFGT and anticollision retries
  • +
  • Introduced Low-Power mode
  • +
  • Several driver improvements
  • +
+
+ +

V2.1.2 / 27-Jan-2020

+

+

Main Changes

+
    +
  • Extended ISO-DEP and NFC-A module to support non-blocking activation interfaces
  • +
  • Extended NFC/HL module to make use of the new APIs further splitting the execution of the worker during the different activities
  • +
  • Modified NFC-A anticollision to strictly comply to NFC Forum DP. A separate proprietary method is now available.
  • +
  • NFC-V changed to use OOK (100% AM) by default
  • +
  • Fixed FWT used by NFC-V Sleep
  • +
  • Fixed NFC-F FDT Poll value
  • +
  • Fixed incorrect register access on ST25R3911B RFO Get/Set method
  • +
  • SPI driver modified to clear Rx buffer prior to operation
  • +
  • Added further code size optimizations based on enabled features
  • +
  • Updated ST25R3916 driver to DS Rev2
  • +
  • Updated SW Tag Detection as describded in AN Rev3
  • +
  • Several driver improvements
  • +
+
+ +

V2.1.0 / 30-Sep-2019

+

+

Main Changes

+
    +
  • Extended RFAL NFC Higher Layer for increased functionality and configurations
  • +
  • Several improvements on the ISO-DEP protocol layer
  • +
  • Protocol buffer sizes made fully configurable for increased memory management
  • +
  • Introduced option for Collision Avoidance with Automatic Gain Control
  • +
  • Several driver improvements
  • +
  • ST25R3916 overheat protection disabled
  • +
  • RF Transceive modified for transmission errors to precede other errors
  • +
  • Analog Configs extended to support different DPO power levels
  • +
+
+ +

V2.0.10 / 25-Jun-2019

+

+

Main Changes

+
    +
  • Various improvements on RFAL NFC Higher layer
  • +
  • Added alternative NFC-V anticollision method (non NFC Forum compliant)
  • +
  • Several minor improvements and fixes
  • +
+
+ +

V2.0.6 / 10-Apr-2019

+

+

Main Changes

+
    +
  • Several NFC-V interoperability improvements
  • +
  • Extended support for specific features of ST's ISO15693 Tags. New ST25Dx module added
  • +
  • Interrupt handling changed and further protection added
  • +
  • RFAL feature switches have been modified and features are now disabled if omitted
  • +
  • ST25R3916 AAT (Automatic Antenna Tunning) module added
  • +
  • RFAL NFC Higher layer added
  • +
  • Several driver improvements
  • +
+
+ +

V2.0.4 / 06-Fev-2019

+

Provided with ST25R3916 DISCO v1.0.0 / EMVCo v1.2.0

+

Main Changes

+
    +
  • Minor improvements on NFC-F module
  • +
  • Several improvements on NFC-V module including support for ST proprietary features
  • +
  • Fixed issue with Delta RWT calculation
  • +
  • Fixed incorrect usage of NFCB dTbPoll / DdFWT
  • +
  • Added compile switch for Listen Mode
  • +
  • Low power Listen Mode support added
  • +
  • Listen Mode aligned to NFC Forum Digital 2.1
  • +
  • Added handling for EMVCo 3.0 static FDTListen
  • +
  • Introduced SW Tag Detection
  • +
+
+ +

V2.0.2 / 31-Oct-2018

+

Provided with ST25R3916 DISCO v0.9.4 (binary only)

+

Main Changes

+
    +
  • New T4T module added
  • +
  • Added support for T3T Check and Update commands
  • +
  • Improved NFC-V module and added Write Multiple Blocks support
  • +
  • New rfalWorker protection added for improved control in multi-thread environments
  • +
  • Added support for user defined Analog Config tables
  • +
  • Several driver improvements and protections added
  • +
+
+ +

V2.0.0 / 28-Aug-2018

+ +

Main Changes

+
    +
  • MISRA C 2012 compliant
  • +
  • ST25R3916 support added
  • +
  • ST25R95 support added
  • +
  • Fix unwanted Field Detector disable when entering Wake-up mode
  • +
  • Extended Analog Config to have specific events
  • +
  • Fixed NFC-DEP potential issue if DID used
  • +
  • Extended NFC-V commands
  • +
  • T2T module added
  • +
  • Improved initial Listen mode handling
  • +
  • Extended Wake-Up mode to support Capacitive measurement
  • +
+
+ +

V1.3.6 / 08-May-2018

+

Provided with ST25R3911B DISCO v1.2.0

+

Main Changes

+
    +
  • Added ISO15693 x4 and x8 mode support
  • +
  • Added S(PARAMETERS) support
  • +
  • Interface changes for measurement, Wake-Up and DPO methods
  • +
  • Added further feature switches to enable/disable individual modules
  • +
  • Changed communication protection
  • +
  • Improved NFC-A anti-collision
  • +
  • Several driver improvements
  • +
+
+

V1.3.4 / 07-May-2018

+ +

Main Changes

+
    +
  • Fixed NFC-V Read operation in addressed mode
  • +
+
+

V1.3.2 / 31-January-2018

+ +

Main Changes

+
    +
  • Modified Wake-Up mode interface
  • +
  • Fixed SFGI calculation in ISO-DEP
  • +
+
+

V1.3.0 / 22-January-2018

+ +

Main Changes

+
    +
  • Introduced a new IRQ status handling to read the registers only once
  • +
  • Several changes for supporting Linux platform
  • +
  • SPI Select/Deselect moved to platform.h
  • +
  • Aditional protection of the IRQ status reading, new macros available: platformProtectST25R391xIrqStatus / platformUnprotectST25R391xIrqStatus
  • +
  • Renamed the IRQ Enable/Disable macros to platformProtectST25R391xComm / platformUnprotectST25R391xComm
  • +
  • Renamed SPI pins from chip specific to ST25R391X
  • +
  • Introduced a new option ST25R391X_COM_SINGLETXRX which executes SPI in one single exchange (additional buffer required)
  • +
  • Updated and added errata handlings to latest ST25R3911 Errata version
  • +
  • Fixed inconsitency on Analog settings for NFC-V
  • +
  • Fixed issue on NFC-V 1of256 decoding
  • +
  • Changed the default NFC-A FDT Listen to be more strict
  • +
  • Added Wake-Up mode support
  • +
  • Added RFAL version definition
  • +
+
+

V1.2.0 / 17-August-2017

+

Provided with ST25R3911B Disco v1.1.16

+

Main Changes

+
    +
  • Aligned Technology modules to NFC Activity v1.1 and EMVCo v2.6
  • +
  • Extended NFC-B Collision Resolution allowing user define Slots
  • +
  • Added feature switches to enable/disable individual modules
  • +
  • ISO-DEP Interface changes allowing more user configurations and further EMVCo alignment
  • +
  • Changed ST25TB detection to always perform Anti Collision loop regardeless of the result of the Poll
  • +
  • Fixed FIFO WL handling
  • +
  • Modified FDT Poll handling
  • +
  • changed rfalCalibrate() to not overwrite dynamic configs
  • +
  • Added adjustment for TR1PUTMIN
  • +
+ +
+

V1.1.0 / 30-June-2017

+

Provided with ST25R3911B Disco v1.1.12

+

Main Changes

+
    +
  • EMD supression enabled for ST25R3911B
  • +
+ +
+

V1.0.0 / 16-May-2017

+

Provided with X-NUCLEO-NFC05A1 v1.0.0

+

Main Changes

+
    +
  • Added support for B', CTS and PicoPass/iClass mode
  • +
  • Several impromvements for NFC-V mode
  • +
  • Improved error detection during NFC-B collision resolution
  • +
  • Extended T1T module
  • +
+ +
+

V0.9.0 / 02-March-2017

+

Provided with ST25R3911B Discovery Kit on Embedded World Conference (binary only)

+

Main Changes

+ +
+ +
+

+
+
+

 

+
+ diff --git a/core/embed/io/nfc/rfal/doc/ST25R3916_CERTComplianceReport.html b/core/embed/io/nfc/rfal/doc/ST25R3916_CERTComplianceReport.html new file mode 100644 index 0000000000..0f9e126028 --- /dev/null +++ b/core/embed/io/nfc/rfal/doc/ST25R3916_CERTComplianceReport.html @@ -0,0 +1,11568 @@ + + + + + +Helix QAC GEP/GCS/GRP Report + + + + +
+
+
+
+
+ +This report documents the coverage of CERT conformance. Its notation is derived from MISRA, please refer for details of the following reports (GEP, GRP, GCS, etc.) to this standard.
+This section targets to provide an overview of Guidelines Enforcement Plan (GEP).
+This document will only focus on STMicroelectronics NFC RF Abstraction Layer (RFAL).
+The project has been designed to comply with the standard ISO/IEC 9899:1999 ([C99]). +
+
+

1. Tools version

+
+ + + + + + + + + + + + + + + + + +
ComponentVersionTargetOptions
certccm1.5.0C
rcma2.3.0C_CPP
qac9.9.0C
    -d : __schedule_barrier=_ignore_semi
+
    -namelength : 63
+
    -prodoption : df::function_timeout=20000
+
+

2. Configuration

+This section targets to provide the main configuration options used for CERT compliance.
+The project complies to [C99],
+the variables length has been consequently set to a dedicated value (cf 'namelength' option in table above). +
+
+Repository/components:
+
    +
  • MCU target:
  • +
      RFAL-ST25R3916

    +
  • RFAL informations:
  • +
      Path: rfal
    +
      Version: v3.0.0
    +
  • Project repositories SHA1:
  • +
      common: bd63699
    +
      nucleo: afd8cc1
    +
      rfal: 5b33cb9
    +
    +
+

3. Assistance/Enforcement

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GuidelineCategoryDescriptionAssistance/Enforcement Sub Rules
ARR02RecommendationExplicitly specify array bounds, even if implicitly defined by an initializer
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-0678[u] Array element is array of unknown size. Arrays cannot be constructed from incomplete types.
qac-0688Array size determined by number of initializers which include concatenated string literals.
qac-3674Array size defined implicitly by the number of initializers.
qac-3684Array declared with unknown size.
+
ARR30RuleDo not form or use out-of-bounds pointers or array subscripts
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2820Constant: Arithmetic operation on NULL pointer.
qac-2821Definite: Arithmetic operation on NULL pointer.
qac-2822Apparent: Arithmetic operation on NULL pointer.
qac-2823Suspicious: Arithmetic operation on NULL pointer.
qac-2840Constant: Dereference of an invalid pointer value.
qac-2841Definite: Dereference of an invalid pointer value.
qac-2842Apparent: Dereference of an invalid pointer value.
qac-2843Suspicious: Dereference of an invalid pointer value.
qac-2930Constant: Computing an invalid pointer value.
qac-2931Definite: Computing an invalid pointer value.
qac-2932Apparent: Computing an invalid pointer value.
qac-2933Suspicious: Computing an invalid pointer value.
qac-2935Constant: Dereference of an invalid char pointer value.
qac-2936Definite: Dereference of an invalid char pointer value.
qac-2937Apparent: Dereference of an invalid char pointer value.
qac-2938Suspicious: Dereference of an invalid char pointer value.
qac-2950Constant: Negative value used in array subscript or pointer arithmetic operation.
qac-2951Definite: Negative value used in array subscript or pointer arithmetic operation.
qac-2952Apparent: Negative value used in array subscript or pointer arithmetic operation.
qac-2953Suspicious: Negative value used in array subscript or pointer arithmetic operation.
+
ARR32RuleEnsure size arguments for variable length arrays are in a valid range
+ + + + + +
QacDescription
qac-1051[C99] A variable length array has been declared.
+
ARR36RuleDo not subtract or compare two pointers that do not refer to the same array
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0487[C] If two pointers are subtracted, they must be pointers that address compatible types.
qac-0513[C] Relational operator used to compare pointers to incompatible types.
qac-2668Subtraction of a pointer to an array and a pointer to a non-array.
qac-2669Comparison of a pointer to an array and a pointer to a non-array.
qac-2761Definite: Subtracting pointers that address different objects.
qac-2762Apparent: Subtracting pointers that address different objects.
qac-2763Suspicious: Subtracting pointers that address different objects.
qac-2766Definite: Subtracting pointers that address different members of the same object.
qac-2767Apparent: Subtracting pointers that address different members of the same object.
qac-2768Suspicious: Subtracting pointers that address different members of the same object.
qac-2771Definite: Comparing pointers that address different objects.
qac-2772Apparent: Comparing pointers that address different objects.
qac-2773Suspicious: Comparing pointers that address different objects.
+
ARR37RuleDo not add or subtract an integer to a pointer to a non-array object
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-2930Constant: Computing an invalid pointer value.
qac-2931Definite: Computing an invalid pointer value.
qac-2932Apparent: Computing an invalid pointer value.
qac-2933Suspicious: Computing an invalid pointer value.
+
ARR38RuleGuarantee that library functions do not form invalid pointers
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2840Constant: Dereference of an invalid pointer value.
qac-2841Definite: Dereference of an invalid pointer value.
qac-2842Apparent: Dereference of an invalid pointer value.
qac-2843Suspicious: Dereference of an invalid pointer value.
qac-2845Constant: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2846Definite: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2847Apparent: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2848Suspicious: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2935Constant: Dereference of an invalid char pointer value.
qac-2936Definite: Dereference of an invalid char pointer value.
qac-2937Apparent: Dereference of an invalid char pointer value.
qac-2938Suspicious: Dereference of an invalid char pointer value.
qac-4880Constant: Pointed to object has smaller size than the size_t argument.
qac-4881Definite: Pointed to object has smaller size than the size_t argument.
qac-4882Apparent: Pointed to object has smaller size than the size_t argument.
qac-4883Suspicious: Pointed to object has smaller size than the size_t argument.
+
ARR39RuleDo not add or subtract a scaled integer to a pointer
+ + + + + + + + + + + + + +
QacDescription
qac-4955Constant: Adding/subtracting a scaled integer to a pointer.
qac-4956Definite: Adding/subtracting a scaled integer to a pointer.
qac-4957Apparent: Adding/subtracting a scaled integer to a pointer.
+
CON30RuleClean up thread-specific storage
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
mta-1780Memory associated with the TLS key '%1s' is deallocated more than once.
mta-1781Memory associated with the TLS key '%1s' may be deallocated more than once.
mta-1782Memory associated with the TLS key '%1s' is deallocated in a way that does not match its allocation.
mta-1783Memory associated with the TLS key '%1s' is not deallocated.
mta-1784The origin of the TLS key '%1s' cannot be identified. Perhaps it should have been passed as a thread parameter?
+
CON31RuleDo not destroy a mutex while it is locked
+ + + + + + + + + +
QacDescription
qac-4961Definite: Attempt to destroy a mutex which is still locked
qac-4962Apparent: Attempt to destroy a mutex which is still locked
+
CON32RulePrevent data races when accessing bit-fields from multiple threads
+ + + + + + + + + +
QacDescription
mta-1774Definite: data race for an object '%1s' which shares its physical storage location with one or more others.
mta-1775Apparent: data race for an object '%1s' which shares its physical storage location with one or more others.
+
CON33RuleAvoid race conditions when using library functions
+ + + + + + + + + + + + + +
QacDescription
qac-4976Definite: Call to a non-reentrant function outside of a critical section.
qac-4977Apparent: Call to a non-reentrant function outside of a critical section.
certccm-5037Use of '%1s'.
+
CON34RuleDeclare objects shared between threads with appropriate storage durations
+ + + + + + + + + + + + + +
QacDescription
qac-4926Definite: The lifetime of the variable passed to the thread creation function is shorter than the lifetime of the thread.
qac-4927Apparent: The lifetime of the variable passed to the thread creation function is shorter than the lifetime of the thread.
qac-4928Suspicious: The lifetime of the variable passed to the thread creation function is shorter than the lifetime of the thread.
+
CON35RuleAvoid deadlock by locking in a predefined order
+ + + + + + + + + +
QacDescription
mta-1772Mutex '%1s' violates the lock hierarchy, as it is acquired before '%2s' elsewhere %3s% of the time.
mta-1773Mutexes '%1s' and '%2s' are not ordered in the lock hierarchy.
+
CON36RuleWrap functions that can spuriously wake up in a loop
+ + + + + +
QacDescription
qac-2027This function can wake spuriously, but does not appear to be wrapped in a loop.
+
CON37RuleDo not call signal() in a multithreaded program
+ + + + + +
QacDescription
certccm-5021'%s' is being used.
+
CON38RulePreserve thread safety and liveness when using condition variables
+ + + + + + + + + +
QacDescription
mta-1778Condition variable '%1s' is signaled and used with multiple wait operations.
mta-1779Condition variable '%1s' is signaled and used with a re-entered wait operation.
+
CON39RuleDo not join or detach a thread that was previously joined or detached
+ + + + + +
QacDescription
mta-1776Thread '%1s' is made unjoinable multiple times.
+
CON40RuleDo not refer to an atomic variable twice in an expression
+ + + + + + + + + + + + + +
QacDescription
qac-1114This atomic variable is referenced directly twice in the same expression.
qac-1115This atomic lvalue appears to be referenced twice in the same expression.
qac-1116This atomic variable appears to be updated non-atomically.
+
CON41RuleWrap functions that can fail spuriously in a loop
+ + + + + +
QacDescription
qac-2026This function can fail spuriously, but does not appear to be wrapped in a loop.
+
CON43RuleDo not allow data races in multithreaded code
+ + + + + + + + + + + + + + + + + +
QacDescription
mta-1765Definite: data race for object '%1s'.
mta-1766Apparent: data race for object '%1s'.
mta-1770Definite: data race for a volatile object '%1s'.
mta-1771Definite: data race for a mutable object '%1s'.
+
DCL00RecommendationConst-qualify immutable objects
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-3204The variable '%s' is only set once and so it could be declared with the 'const' qualifier.
qac-3227The parameter '%s' is never modified and so it could be declared with the 'const' qualifier.
qac-3232File scope static, '%s', is never modified. It could be declared const.
qac-3673The object addressed by the pointer parameter '%1s' is not modified and so the pointer could be of type 'pointer to const'.
qac-3677The elements of the array parameter '%1s' are not modified and so they could be qualified as 'const'.
+
DCL01RecommendationDo not reuse variable names in subscopes
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-0795Identifier matches other identifier(s) (e.g. '%1s') in an outer scope within the specified number of significant characters.
qac-0796Identifier matches other identifier(s) (e.g. '%1s') in an outer scope within the ISO:C99 limit of 63 significant characters
qac-2547This declaration of tag '%s' hides a more global declaration.
qac-3334This declaration of '%1s' hides a more global declaration.
+
DCL05RecommendationUse typedefs of non-pointer types only
+ + + + + +
QacDescription
certccm-5004This typedef is applied to a pointer type.
+
DCL06RecommendationUse meaningful symbolic constants to represent literal values
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-3120Hard-coded 'magic' integer constant, '%1s'.
qac-3121Hard-coded 'magic' floating constant, '%1s'.
qac-3122Hard-coded 'magic' string literal, %1s.
qac-3123Hard coded 'magic' character constant, %1s.
qac-3131Hard coded 'magic' number, '%1s', used to define the size of a bit-field.
qac-3132Hard coded 'magic' number, '%1s', used to define the size of an array.
+
DCL07RecommendationInclude the appropriate type information in function declarators
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1304Old style definition of function '%1s()' is not portable to C++.
qac-2050The 'int' type specifier has been omitted from a function declaration.
qac-3331The definition for identifier '%s' with external linkage conflicts with a previous declaration in the same scope.
qac-3335No function declaration. Implicit declaration inserted: 'extern int %s();'.
qac-3408'%1s' has external linkage and is being defined without any previous declaration.
qac-3450Function '%s', with internal linkage, is being defined without a previous declaration.
+
DCL10RecommendationMaintain the contract between the writer and caller of variadic functions
+ + + + + + + + + +
QacDescription
qac-0184[U] Insufficient arguments to satisfy conversion specifier, number %1s.
qac-0185[U] Call contains more arguments than conversion specifiers.
+
DCL11RecommendationUnderstand the type issues associated with variadic functions
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0179[U] Argument type does not match conversion specifier number %1s.
qac-0184[U] Insufficient arguments to satisfy conversion specifier, number %1s.
qac-0185[U] Call contains more arguments than conversion specifiers.
qac-0186[U] A call to this function must include at least one argument.
qac-0190[U] Using unsupported conversion specifier number %1s.
qac-0191[U] Unknown length modifier used with 'd/i/n' conversion specifier, number %1s.
qac-0192[U] Unknown length modifier used with 'o' conversion specifier, number %1s.
qac-0193[U] Unknown length modifier used with 'u' conversion specifier, number %1s.
qac-0194[U] Unknown length modifier used with 'x/X' conversion specifier, number %1s.
qac-0195[U] Unknown length modifier used with 'e/E/f/F/g/G' conversion specifier, number %1s.
qac-0196[U] Unknown length modifier used with 's' conversion specifier, number %1s.
qac-0197[U] Unknown length modifier used with 'p' conversion specifier, number %1s.
qac-0198[U] Unknown length modifier used with '%%' conversion specifier, number %1s.
qac-0199[U] Unknown length modifier used with '[' conversion specifier, number %1s.
qac-0200[U] Unknown length modifier used with 'c' conversion specifier, number %1s.
qac-0201[U] Incomplete conversion specifier, number %1s.
qac-0206[U] Argument type does not match conversion specifier number %1s.
qac-0207[U] 'scanf' expects address of objects being stored into.
qac-0208[U] Same character occurs in scanset more than once.
+
DCL13RecommendationDeclare function parameters that are pointers to values not changed by the function as const
+ + + + + + + + + + + + + +
QacDescription
qac-0431[C] Function argument points to a more heavily qualified type.
qac-3673The object addressed by the pointer parameter '%1s' is not modified and so the pointer could be of type 'pointer to const'.
qac-3677The elements of the array parameter '%1s' are not modified and so they could be qualified as 'const'.
+
DCL15RecommendationDeclare file-scope objects or functions that do not need external linkage as static
+ + + + + + + + + +
QacDescription
rcma-1504The object '%1s' is only referenced in the translation unit where it is defined.
rcma-1531The object '%1s' is referenced in only one translation unit - but not the one in which it is defined.
+
DCL16RecommendationUse 'L', not 'l', to indicate a long value
+ + + + + +
QacDescription
qac-1280A lowercase letter L (l) has been used in an integer or floating suffix.
+
DCL18RecommendationDo not begin integer constants with 0 when specifying a decimal value
+ + + + + + + + + +
QacDescription
qac-0339Octal constant used.
qac-1272Redundant leading zeroes on a numeric constant.
+
DCL19RecommendationMinimize the scope of variables and functions
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
rcma-1504The object '%1s' is only referenced in the translation unit where it is defined.
rcma-1505The function '%1s' is only referenced in the translation unit where it is defined.
rcma-1531The object '%1s' is referenced in only one translation unit - but not the one in which it is defined.
rcma-1532The function '%1s' is only referenced in one translation unit - but not the one in which it is defined.
qac-3210The global identifier '%1s' is declared here but is not used in this translation unit.
qac-3218File scope static, '%1s', is only accessed in one function.
+
DCL20RecommendationExplicitly specify void when a function accepts no arguments
+ + + + + + + + + +
QacDescription
qac-3001Function has been declared with an empty parameter list.
qac-3007"void" has been omitted when defining a function with no parameters.
+
DCL21RecommendationUnderstand the storage of compound literals
+ + + + + + + + + +
QacDescription
qac-1054[C99] A compound literal has been used.
qac-3217Address of automatic object exported to a pointer with linkage or wider scope.
+
DCL23RecommendationGuarantee that mutually visible identifiers are unique
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0627[C] '%s' has different type to previous declaration in the same scope.
qac-0776[L] External identifier matches other external identifier(s) (e.g. '%1s') in first 6 characters - program does not conform strictly to ISO:C90.
qac-0777[U] External identifier does not differ from other identifier(s) (e.g. '%1s') within the specified number of significant characters.
qac-0778[L] Identifier matches other identifier(s) (e.g. '%1s') in first 31 characters - program does not conform strictly to ISO:C90.
qac-0779[U] Identifier does not differ from other identifier(s) (e.g. '%1s') within the specified number of significant characters.
qac-0789[L] Identifier matches other identifier(s) (e.g. '%1s') in first 63 characters - program does not conform strictly to ISO:C99.
qac-0791[U] Macro identifier does not differ from other macro identifier(s) (e.g. '%1s') within the specified number of significant characters.
qac-0793[L] Macro identifier matches other macro identifier(s) (e.g. '%1s') in first 63 characters - program does not conform strictly to ISO:C99.
+
DCL30RuleDeclare objects with appropriate storage durations
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-3217Address of automatic object exported to a pointer with linkage or wider scope.
qac-3225Address of automatic object exported using a function parameter.
qac-3230Address of automatic object assigned to local pointer with static storage duration.
qac-4140Address of automatic object exported in function return value.
+
DCL31RuleDeclare identifiers before using them
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-0434[S] The identifier '%s' has not been declared.
qac-2050The 'int' type specifier has been omitted from a function declaration.
qac-2051The 'int' type specifier has been omitted from an object declaration.
qac-3335No function declaration. Implicit declaration inserted: 'extern int %s();'.
+
DCL36RuleDo not declare an identifier with conflicting linkage classifications
+ + + + + +
QacDescription
qac-0625[U] '%s' has been declared with both internal and external linkage - the behaviour is undefined.
+
DCL37RuleDo not declare or define a reserved identifier
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0602[U] The identifier '%s' is reserved for use by the library.
qac-0603[U] The macro identifier '%s' is reserved.
qac-4600The macro '%1s' is also defined in '<%2s>'.
qac-4601The macro '%1s' is the name of an identifier in '<%2s>'.
qac-4602The identifier '%1s' is declared as a macro in '<%2s>'.
qac-4603The object/function '%1s'is being defined with the same name as an ordinary identifier defined in '<%2s>'.
qac-4604The object/function '%1s' is being declared with the same name as an ordinary identifier defined in '<%2s>'.
qac-4605The typedef '%1s' is also defined in '<%2s>'.
qac-4606The typedef '%1s' has the same name as another ordinary identifier in '<%2s>'.
qac-4607The enum constant '%1s' has the same name as another ordinary identifier in '<%2s>'.
qac-4608The tag '%1s' is also defined in '<%2s>'.
qac-4620The macro '%1s' may also be defined as a macro in '<%2s>'.
qac-4621The macro '%1s' may also be defined as a typedef in '<%2s>'.
qac-4622The identifier '%1s' may be defined as a macro in '<%2s>'.
qac-4623The typedef '%1s' may also be defined in '<%2s>'.
qac-4624The ordinary identifier '%1s' may be defined as a typedef in '<%2s>'.
qac-4640The macro '%1s' could conflict in the future with the name of a macro in '<%2s>'.
qac-4641The identifier '%1s' could conflict in the future with the name of a macro in '<%2s>'.
qac-4642The macro '%1s' could conflict in the future with the name of a function in '<%2s>'.
qac-4643The identifier '%1s' could conflict in the future with the name of a function in '<%2s>'.
qac-4644The macro '%1s' could conflict in the future with the name of a typedef in '<%2s>'.
qac-4645The identifier '%1s' could conflict in the future with the name of a typedef in '<%2s>'.
+
DCL38RuleUse the correct syntax when declaring a flexible array member
+ + + + + + + + + +
QacDescription
qac-1037[E] Arrays of length zero are a language extension.
qac-1039[E] Treating array of length one as potentially flexible member.
+
DCL39RuleAvoid information leakage when passing a structure across a trust boundary
+ + + + + + + + + + + + + +
QacDescription
qac-4941Definite: Passing a padded structure from a trusted boundary to another domain.
qac-4942Apparent: Passing a padded structure from a trusted boundary to another domain.
qac-4943Suspicious: Passing a padded structure from a trusted boundary to another domain.
+
DCL40RuleDo not create incompatible declarations of the same function or object
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0776[L] External identifier matches other external identifier(s) (e.g. '%1s') in first 6 characters - program does not conform strictly to ISO:C90.
qac-0778[L] Identifier matches other identifier(s) (e.g. '%1s') in first 31 characters - program does not conform strictly to ISO:C90.
qac-0779[U] Identifier does not differ from other identifier(s) (e.g. '%1s') within the specified number of significant characters.
qac-0789[L] Identifier matches other identifier(s) (e.g. '%1s') in first 63 characters - program does not conform strictly to ISO:C99.
rcma-1510'%1s' has external linkage and has incompatible declarations.
+
DCL41RuleDo not declare variables inside a switch statement before the first case label
+ + + + + + + + + + + + + +
QacDescription
qac-2008Code statements precede the first label in this 'switch' construct.
qac-2882This 'switch' statement will bypass the initialization of local variables.
qac-3234Declarations precede the first label in this 'switch' construct.
+
ENV03RecommendationSanitize the environment when invoking external programs
+ + + + + +
QacDescription
certccm-5017'%s' is being used.
+
ENV30RuleDo not modify the object referenced by the return value of certain functions
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1492The result of library function '%1s' is used to modify the referenced object.
qac-1493The result of library function '%1s' is used as a pointer to a modifiable object.
qac-1494The result of library function '%1s' might be modified.
qac-4751Definite: Modifying an object that is referenced by the return value of a library function.
qac-4752Apparent: Modifying an object that is referenced by the return value of a library function.
qac-4753Suspicious: Modifying an object that is referenced by the return value of a library function.
+
ENV31RuleDo not rely on an environment pointer following an operation that may invalidate it
+ + + + + + + + + + + + + +
QacDescription
qac-4991Definite: Using an invalidated value '%s' of the environment pointer passed as the third argument to main.
qac-4992Apparent: Using an invalidated value '%s' of the environment pointer passed as the third argument to main.
qac-4993Suspicious: Using an invalidated value '%s' of the environment pointer passed as the third argument to main.
+
ENV32RuleAll exit handlers must return normally
+ + + + + + + + + + + + + +
QacDescription
qac-4856Definite: Atexit handler does not return normally.
qac-4857Apparent: Atexit handler does not return normally.
qac-4858Suspicious: Atexit handler does not return normally.
+
ENV33RuleDo not call system()
+ + + + + +
QacDescription
certccm-5018'%s' is being used.
+
ENV34RuleDo not store pointers returned by certain functions
+ + + + + + + + + + + + + +
QacDescription
qac-2681Definite: Using an invalidated value '%s' returned from a Standard Library function.
qac-2682Apparent: Using an invalidated value '%s' returned from a Standard Library function.
qac-2683Suspicious: Using an invalidated value '%s' returned from a Standard Library function.
+
ERR30RuleSet errno to zero before calling a library function known to set errno, and check errno only after the function returns a value indicating failure
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-2500Call to '%s' is not immediately preceded by the zero-ing of 'errno'.
qac-2501Call to '%s' is not immediately followed by the testing of 'errno'.
qac-2502Zero-ing of 'errno' is not immediately followed by a call to an 'errno' setting function.
qac-2503Testing of 'errno' is not immediately preceded by a call to an 'errno' setting function.
+
ERR32RuleDo not rely on indeterminate values of errno
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-2031Signal handler '%1s' accesses errno.
qac-4781Definite: Signal handler causes the value of errno to be indeterminate.
qac-4782Apparent: Signal handler causes the value of errno to be indeterminate.
qac-4783Suspicious: Signal handler causes the value of errno to be indeterminate.
+
ERR33RuleDetect and handle standard library errors
+ + + + + +
QacDescription
qac-3200'%s' returns a value which is not being used.
+
ERR34RuleDetect errors when converting a string to a number
+ + + + + +
QacDescription
certccm-5030'%s' is being used.
+
EXP00RecommendationUse parentheses for precedence of operation
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-3389Extra parentheses recommended to clarify the ordering of a % operator and another arithmetic operator (* / % + -).
qac-3390Expression is equivalent to: "%s"
qac-3391Extra parentheses recommended. A conditional operation is the operand of another conditional operator.
qac-3392Extra parentheses recommended. A shift, relational or equality operation is the operand of a second identical operator.
qac-3393Extra parentheses recommended. An arithmetic operation (* / + -) is the operand of a different operator with the same precedence.
qac-3394Extra parentheses recommended. A shift, relational or equality operation is the operand of a different operator with the same precedence.
qac-3395Extra parentheses recommended. A * or / operation is the operand of a + or - operator.
qac-3396Extra parentheses recommended. A binary operation is the operand of a conditional operator.
qac-3397Extra parentheses recommended. A binary operation is the operand of a binary operator with different precedence.
qac-3398Extra parentheses recommended. A function call, array subscript, or member operation is the operand of a logical && or ||.
qac-3399Extra parentheses recommended. A unary operation is the operand of a logical && or ||.
qac-3400Extra parentheses recommended. A binary operation is the operand of a logical && or ||.
+
EXP02RecommendationBe aware of the short-circuit behavior of the logical AND and OR operators
+ + + + + +
QacDescription
qac-3415Right hand operand of '&&' or '||' is an expression with persistent side effects.
+
EXP03RecommendationDo not assume the size of a structure is the sum of the sizes of its members
+ + + + + +
QacDescription
qac-0697The size of the allocated memory block is not an integral multiple of the size of the object type addressed by the pointer cast.
+
EXP05RecommendationDo not cast away a const qualification
+ + + + + + + + + +
QacDescription
qac-0311Dangerous pointer cast results in loss of const qualification.
qac-0431[C] Function argument points to a more heavily qualified type.
+
EXP07RecommendationDo not diminish the benefits of constants by assuming their values in expressions
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-3120Hard-coded 'magic' integer constant, '%1s'.
qac-3121Hard-coded 'magic' floating constant, '%1s'.
qac-3122Hard-coded 'magic' string literal, %1s.
qac-3123Hard coded 'magic' character constant, %1s.
qac-3131Hard coded 'magic' number, '%1s', used to define the size of a bit-field.
qac-3132Hard coded 'magic' number, '%1s', used to define the size of an array.
+
EXP08RecommendationEnsure pointer arithmetic is used correctly
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0488Performing pointer arithmetic.
qac-2930Constant: Computing an invalid pointer value.
qac-2931Definite: Computing an invalid pointer value.
qac-2932Apparent: Computing an invalid pointer value.
qac-2933Suspicious: Computing an invalid pointer value.
+
EXP10RecommendationDo not depend on the order of evaluation of subexpressions or the order in which side effects take place
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0400[U] '%1s' is modified more than once between sequence points - evaluation order unspecified.
qac-0401[U] '%1s' may be modified more than once between sequence points - evaluation order unspecified.
qac-0402[U] '%1s' is modified and accessed between sequence points - evaluation order unspecified.
qac-0403[U] '%1s' may be modified and accessed between sequence points - evaluation order unspecified.
qac-0404[U] More than one read access to volatile objects between sequence points.
qac-0405[U] More than one modification of volatile objects between sequence points.
qac-3226The result of an assignment is being used in an arithmetic operation or another assigning operation.
qac-3326The result of an assignment is being used in a logical operation.
+
EXP11RecommendationDo not make assumptions regarding the layout of structures with bit-fields
+ + + + + + + + + +
QacDescription
qac-0310Casting to different object pointer type.
qac-0751Casting to char pointer type.
+
EXP12RecommendationDo not ignore values returned by functions
+ + + + + +
QacDescription
qac-3200'%s' returns a value which is not being used.
+
EXP13RecommendationTreat relational and equality operators as if they were nonassociative
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-3392Extra parentheses recommended. A shift, relational or equality operation is the operand of a second identical operator.
qac-3401Possible precedence confusion: extra parentheses are recommended here.
qac-4111Right hand operand of relational operator is a 'Boolean' expression.
qac-4112Left hand operand of relational operator is a 'Boolean' expression.
qac-4113Both operands of relational operator are 'Boolean' expressions.
+
EXP15RecommendationDo not place a semicolon on the same line as an if, for, or while statement
+ + + + + +
QacDescription
qac-3109Null statement follows other code on the same line.
+
EXP16RecommendationDo not compare function pointers to constant values
+ + + + + + + + + + + + + +
QacDescription
qac-0428Function identifier is not followed by () but a function call may be intended.
qac-3004This integral constant expression is being interpreted as a null pointer constant.
qac-3344Controlling expression is not an 'essentially Boolean' expression.
+
EXP19RecommendationUse braces for the body of an if, for, or while statement
+ + + + + +
QacDescription
qac-2212Body of control statement is not enclosed within braces.
+
EXP20RecommendationPerform explicit tests to determine success, true and false, and equality
+ + + + + + + + + +
QacDescription
qac-3344Controlling expression is not an 'essentially Boolean' expression.
qac-4116Operand of logical ! operator is not an 'essentially Boolean' expression.
+
EXP30RuleDo not depend on the order of evaluation for side effects
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0400[U] '%1s' is modified more than once between sequence points - evaluation order unspecified.
qac-0401[U] '%1s' may be modified more than once between sequence points - evaluation order unspecified.
qac-0402[U] '%1s' is modified and accessed between sequence points - evaluation order unspecified.
qac-0403[U] '%1s' may be modified and accessed between sequence points - evaluation order unspecified.
qac-0404[U] More than one read access to volatile objects between sequence points.
qac-0405[U] More than one modification of volatile objects between sequence points.
+
EXP32RuleDo not access a volatile object through a nonvolatile reference
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0312Dangerous pointer cast results in loss of volatile qualification.
qac-0562[C] Right operand of assignment points to a more heavily qualified type.
qac-0563[C] Right operand of assignment is not of compatible pointer type.
qac-0673[C] Initializer points to a more heavily qualified type.
qac-0674[C] Initializer for pointer is of incompatible type.
+
EXP33RuleDo not read uninitialized memory
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2726Definite: Use of uninitialized resource.
qac-2727Apparent: Use of uninitialized resource.
qac-2728Suspicious: Use of uninitialized resource.
qac-2961Definite: Using value of uninitialized automatic object '%s'.
qac-2962Apparent: Using value of uninitialized automatic object '%s'.
qac-2963Suspicious: Using value of uninitialized automatic object '%s'.
qac-2966Definite: Some members of object '%s' are uninitialized.
qac-2967Apparent: Some members of object '%s' are uninitialized.
qac-2968Suspicious: Some members of object '%s' are uninitialized.
qac-2971Definite: Passing address of uninitialized object '%s' to a function parameter declared as a pointer to const.
qac-2972Apparent: Passing address of uninitialized object '%s' to a function parameter declared as a pointer to const.
qac-2973Suspicious: Passing address of uninitialized object '%s' to a function parameter declared as a pointer to const.
qac-2976Definite: Passing address of partially initialized object '%s' to a function parameter declared as a pointer to const.
qac-2977Apparent: Passing address of partially initialized object '%s' to a function parameter declared as a pointer to const.
qac-2978Suspicious: Passing address of partially initialized object '%s' to a function parameter declared as a pointer to const.
+
EXP34RuleDo not dereference null pointers
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-2810Constant: Dereference of NULL pointer.
qac-2811Definite: Dereference of NULL pointer.
qac-2812Apparent: Dereference of NULL pointer.
qac-2813Suspicious: Dereference of NULL pointer.
+
EXP35RuleDo not modify objects with temporary lifetime
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0450[U] Passing an array with temporary lifetime as a function parameter.
qac-0455[U] Passing an array with temporary lifetime as a constant function parameter.
qac-0459[U] Modifying the contents of an array with temporary lifetime.
qac-0464[U] Storing a pointer to an array with temporary lifetime.
qac-0465[U] Returning a pointer to an array with temporary lifetime.
+
EXP36RuleDo not cast pointers into more strictly aligned pointer types
+ + + + + + + + + +
QacDescription
qac-0326[I] Cast between a pointer to void and an integral type.
qac-3305Pointer cast to stricter alignment.
+
EXP37RuleCall functions with the correct number and type of arguments
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1331Type or number of arguments doesn't match previous use of the function.
qac-1332Type or number of arguments doesn't match prototype found later.
qac-1333Type or number of arguments doesn't match function definition found later.
qac-3002Defining '%1s()' with an identifier list and separate parameter declarations is an obsolescent feature.
qac-3320Type of argument no. %s differs from its type in definition of function.
qac-3335No function declaration. Implicit declaration inserted: 'extern int %s();'.
+
EXP39RuleDo not access a variable through a pointer of an incompatible type
+ + + + + + + + + + + + + +
QacDescription
qac-0310Casting to different object pointer type.
qac-0751Casting to char pointer type.
qac-3305Pointer cast to stricter alignment.
+
EXP40RuleDo not modify constant objects
+ + + + + +
QacDescription
qac-0563[C] Right operand of assignment is not of compatible pointer type.
+
EXP42RuleDo not compare padding data
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-4726Definite: Comparison of padding bits that are not part of the object representation.
qac-4727Apparent: Comparison of padding bits that are not part of the object representation.
qac-4728Suspicious: Comparison of padding bits that are not part of the object representation.
qac-4729Possible: Comparison of padding bits that are not part of the object representation.
+
EXP43RuleAvoid undefined behavior when using restrict-qualified pointers
+ + + + + +
QacDescription
qac-1057[C99] The keyword 'restrict' has been used.
+
EXP44RuleDo not rely on side effects in operands to sizeof, _Alignof, or _Generic
+ + + + + +
QacDescription
qac-3307The operand of 'sizeof' is an expression with implied side effects, but they will not be evaluated.
+
EXP45RuleDo not perform assignments in selection statements
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-3314This controlling expression is an assignment.
qac-3326The result of an assignment is being used in a logical operation.
qac-3344Controlling expression is not an 'essentially Boolean' expression.
qac-3416Logical operation performed on expression with persistent side effects.
+
EXP46RuleDo not use a bitwise operator with a Boolean-like operand
+ + + + + + + + + +
QacDescription
qac-3344Controlling expression is not an 'essentially Boolean' expression.
qac-4502An expression of 'essentially Boolean' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).
+
EXP47RuleDo not call va_arg with an argument of the incorrect type
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-4901Definite: Invalid call to va_arg.
qac-4902Apparent: Invalid call to va_arg.
qac-4903Suspicious: Invalid call to va_arg.
qac-4904Possible: Invalid call to va_arg.
+
FIO01RecommendationBe careful using functions that use file names for identification
+ + + + + +
QacDescription
certccm-5011'%s' is being used.
+
FIO03RecommendationDo not make assumptions about fopen() and file creation
+ + + + + +
QacDescription
certccm-5012'%s' is being used.
+
FIO06RecommendationCreate files with appropriate access permissions
+ + + + + +
QacDescription
certccm-5013'%s' is being used.
+
FIO08RecommendationTake care when calling remove() on an open file
+ + + + + +
QacDescription
certccm-5014'%s' is being used.
+
FIO10RecommendationTake care when using the rename() function
+ + + + + +
QacDescription
certccm-5015'%s' is being used.
+
FIO21RecommendationDo not create temporary files in shared directories
+ + + + + +
QacDescription
certccm-5016'%s' is being used.
+
FIO30RuleExclude user input from format strings
+ + + + + + + + + + + + + +
QacDescription
qac-4916Definite: Using a tainted variable as format string.
qac-4917Apparent: Using a tainted variable as format string.
qac-4918Suspicious: Using a tainted variable as format string.
+
FIO32RuleDo not perform operations on devices that are only appropriate for files
+ + + + + + + + + + + + + +
QacDescription
qac-4921Definite: Using a tainted variable as a device name when opening a device that could be a file.
qac-4922Apparent: Using a tainted variable as a device name when opening a device that could be a file.
qac-4923Suspicious: Using a tainted variable as a device name when opening a device that could be a file.
+
FIO34RuleDistinguish between characters read from a file and EOF or WEOF
+ + + + + + + + + +
QacDescription
qac-2676Definite: The value originating from an EOF returning function was modified before being compared with macro EOF.
qac-2678Suspicious: The value originating from an EOF returning function was modified before being compared with macro EOF.
+
FIO37RuleDo not assume that fgets() or fgetws() returns a nonempty string when successful
+ + + + + + + + + + + + + +
QacDescription
qac-4911Definite: Assuming that fgets or fgetws returned a non empty string.
qac-4912Apparent: Assuming that fgets or fgetws returned a non empty string.
qac-4913Suspicious: Assuming that fgets or fgetws returned a non empty string.
+
FIO38RuleDo not copy a FILE object
+ + + + + + + + + +
QacDescription
qac-1485A pointer to a FILE object is dereferenced.
certccm-5028Copy of a FILE object.
+
FIO39RuleDo not alternately input and output from a stream without an intervening flush or positioning call
+ + + + + + + + + + + + + +
QacDescription
qac-4711Definite: Alternating I/O operations on a file stream found without an intervening positioning call or EOF.
qac-4712Apparent: Alternating I/O operations on a file stream found without an intervening positioning call or EOF.
qac-4713Suspicious: Alternating I/O operations on a file stream found without an intervening positioning call or EOF.
+
FIO40RuleReset strings on fgets() or fgetws() failure
+ + + + + + + + + + + + + +
QacDescription
qac-4861Definite: Using an array containing indeterminate values after a call to fgets or fgetws.
qac-4862Apparent: Using an array containing indeterminate values after a call to fgets or fgetws.
qac-4863Suspicious: Using an array containing indeterminate values after a call to fgets or fgetws.
+
FIO41RuleDo not call getc(), putc(), getwc(), or putwc() with a stream argument that has side effects
+ + + + + +
QacDescription
certccm-5036'%s' is being used.
+
FIO42RuleClose files when they are no longer needed
+ + + + + + + + + + + + + +
QacDescription
qac-2701Definite: Opened file is not closed.
qac-2702Apparent: Opened file is not closed.
qac-2703Suspicious: Opened file is not closed.
+
FIO44RuleOnly use values for fsetpos() that are returned from fgetpos()
+ + + + + + + + + + + + + +
QacDescription
qac-4841Definite: Passing a file position argument to fsetpos() not obtained from fgetpos().
qac-4842Apparent: Passing a file position argument to fsetpos() not obtained from fgetpos().
qac-4843Suspicious: Passing a file position argument to fsetpos() not obtained from fgetpos().
+
FIO45RuleAvoid TOCTOU race conditions while accessing files
+ + + + + + + + + + + + + +
QacDescription
qac-4851Definite: File access time-of-check time-of-use race condition.
qac-4852Apparent: File access time-of-check time-of-use race condition.
qac-4853Suspicious: File access time-of-check time-of-use race condition.
+
FIO46RuleDo not access a closed file
+ + + + + + + + + + + + + +
QacDescription
qac-2696Definite: Attempt to access a file which has been closed.
qac-2697Apparent: Attempt to access a file which has been closed.
qac-2698Suspicious: Attempt to access a file which has been closed.
+
FIO47RuleUse valid format strings
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0161[U] Unknown length modifier used with 'i' or 'd' conversion specifier, number %1s.
qac-0162[U] Unknown length modifier used with 'o' conversion specifier, number %1s.
qac-0163[U] Unknown length modifier used with 'u' conversion specifier, number %1s.
qac-0164[U] Unknown length modifier used with 'x' conversion specifier, number %1s.
qac-0165[U] Unknown length modifier used with 'X' conversion specifier, number %1s.
qac-0166[U] Unknown length modifier used with 'f' conversion specifier, number %1s.
qac-0167[U] Unknown length modifier used with 'e' conversion specifier, number %1s.
qac-0168[U] Unknown length modifier used with 'E' conversion specifier, number %1s.
qac-0169[U] Unknown length modifier used with 'g' conversion specifier, number %1s.
qac-0170[U] Unknown length modifier used with 'G' conversion specifier, number %1s.
qac-0171[U] Unknown length modifier used with 'c' conversion specifier, number %1s.
qac-0172[U] Unknown length modifier used with '%%' conversion specifier, number %1s.
qac-0173[U] Unknown length modifier used with 's' conversion specifier, number %1s.
qac-0174[U] Unknown length modifier used with 'n' conversion specifier, number %1s.
qac-0175[U] Unknown length modifier used with 'p' conversion specifier, number %1s.
qac-0176[U] Incomplete conversion specifier, number %1s.
qac-0177[U] Field width of format conversion specifier exceeds 509 characters.
qac-0178[U] Precision of format conversion specifier exceeds 509 characters.
qac-0179[U] Argument type does not match conversion specifier number %1s.
qac-0180[C99] Use of ll for conversion specifier.
qac-0184[U] Insufficient arguments to satisfy conversion specifier, number %1s.
qac-0185[U] Call contains more arguments than conversion specifiers.
qac-0190[U] Using unsupported conversion specifier number %1s.
qac-0191[U] Unknown length modifier used with 'd/i/n' conversion specifier, number %1s.
qac-0192[U] Unknown length modifier used with 'o' conversion specifier, number %1s.
qac-0193[U] Unknown length modifier used with 'u' conversion specifier, number %1s.
qac-0194[U] Unknown length modifier used with 'x/X' conversion specifier, number %1s.
qac-0195[U] Unknown length modifier used with 'e/E/f/F/g/G' conversion specifier, number %1s.
qac-0196[U] Unknown length modifier used with 's' conversion specifier, number %1s.
qac-0197[U] Unknown length modifier used with 'p' conversion specifier, number %1s.
qac-0198[U] Unknown length modifier used with '%%' conversion specifier, number %1s.
qac-0199[U] Unknown length modifier used with '[' conversion specifier, number %1s.
qac-0200[U] Unknown length modifier used with 'c' conversion specifier, number %1s.
qac-0201[U] Incomplete conversion specifier, number %1s.
qac-0202[I] '-' character in '[]' conversion specification is implementation defined.
qac-0204[U] Field width of format conversion specifier exceeds 509 characters.
qac-0206[U] Argument type does not match conversion specifier number %1s.
qac-0209[U] Using a non-constant format string.
+
FLP02RecommendationAvoid using floating-point numbers when precise computation is needed
+ + + + + +
QacDescription
qac-0790This translation unit makes use of floating types.
+
FLP06RecommendationConvert integers to floating point for floating point operations
+ + + + + + + + + +
QacDescription
qac-4117Result of integer division operation implicitly converted to a floating type.
qac-4118Result of integer division operation cast to a floating type.
+
FLP30RuleDo not use floating-point variables as loop counters
+ + + + + + + + + + + + + +
QacDescription
qac-3339Floating point variable used as 'while' loop control variable.
qac-3340Floating point variable used as 'for' loop control variable.
qac-3342Controlling expression of 'for' loop is a floating point comparison.
+
FLP32RulePrevent or detect domain and range errors in math functions
+ + + + + +
QacDescription
certccm-5025'%s' is being used.
+
FLP34RuleEnsure that floating-point conversions are within range of the new type
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-4450An expression of 'essentially floating' type (%1s) is being converted to Boolean type, '%2s' on assignment.
qac-4451An expression of 'essentially floating' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4452An expression of 'essentially floating' type (%1s) is being converted to enum type, '%2s' on assignment.
qac-4453An expression of 'essentially floating' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4454An expression of 'essentially floating' type (%1s) is being converted to unsigned type, '%2s' on assignment.
qac-4462A non-constant expression of 'essentially floating' type (%1s) is being converted to narrower floating type, '%2s' on assignment.
qac-4465A constant expression of 'essentially floating' type (%1s) is being converted to narrower floating type, '%2s' on assignment.
+
FLP36RulePreserve precision when converting integral values to floating-point type
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1260Integer constant implicitly converted to a floating type.
qac-1263Floating constant causes implicit conversion of other (integral) operand.
qac-1298An integer constant of 'essentially signed' type is being converted to floating type on assignment.
qac-1299An integer constant of 'essentially unsigned' type is being converted to floating type on assignment.
qac-1800The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this arithmetic operation.
qac-1802The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this relational operation.
qac-1803The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this equality operation.
qac-1804The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this conditional operation.
qac-4117Result of integer division operation implicitly converted to a floating type.
qac-4435A non-constant expression of 'essentially signed' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4437A constant expression of 'essentially signed' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4445An expression of 'essentially unsigned' type (%1s) is being converted to floating type, '%2s' on assignment.
+
FLP37RuleDo not use object representations to compare floating-point values
+ + + + + +
QacDescription
certccm-5026Incorrect floating point value comparison.
+
INT02RecommendationUnderstand integer conversion rules
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1250Unsuffixed integer constant causes implicit conversion of other operand.
qac-1251Suffixed integer constant causes implicit conversion of other operand.
qac-1252Suffixed integer constant implicitly converted to different integer type.
qac-1253Unsuffixed integer constant implicitly converted to different integer type.
qac-1256An integer constant suffixed with L is being converted to type signed or unsigned long long on assignment.
qac-1257An integer constant suffixed with L or LL is being converted to a type of lower rank on assignment.
qac-1260Integer constant implicitly converted to a floating type.
qac-1263Floating constant causes implicit conversion of other (integral) operand.
qac-1266A floating constant is being converted to integral type on assignment.
qac-1274Unsuffixed floating constant causes implicit conversion of other (floating) operand.
qac-1290An integer constant of 'essentially signed' type is being converted to unsigned type on assignment.
qac-1291An integer constant of 'essentially unsigned' type is being converted to signed type on assignment.
qac-1292An integer constant of 'essentially signed' type is being converted to type char on assignment.
qac-1293An integer constant of 'essentially unsigned' type is being converted to type char on assignment.
qac-1294An integer constant of 'essentially signed' type is being converted to type _Bool on assignment.
qac-1295An integer constant of 'essentially unsigned' type is being converted to type _Bool on assignment.
qac-1296An integer constant of 'essentially signed' type is being converted to enum type on assignment.
qac-1297An integer constant of 'essentially unsigned' type is being converted to enum type on assignment.
qac-1298An integer constant of 'essentially signed' type is being converted to floating type on assignment.
qac-1299An integer constant of 'essentially unsigned' type is being converted to floating type on assignment.
qac-1800The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this arithmetic operation.
qac-1802The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this relational operation.
qac-1803The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this equality operation.
qac-1804The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this conditional operation.
qac-1810An operand of 'essentially character' type is being added to another operand of 'essentially character' type.
qac-1811An operand of 'essentially character' type is being subtracted from an operand of 'essentially signed' type.
qac-1812An operand of 'essentially character' type is being subtracted from an operand of 'essentially unsigned' type.
qac-1813An operand of 'essentially character' type is being balanced with an operand of 'essentially floating' type in this arithmetic operation.
qac-1820The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation.
qac-1821The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this bitwise operation.
qac-1822The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this relational operation.
qac-1823The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this equality operation.
qac-1824The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this conditional operation.
qac-1830The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation.
qac-1831The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this bitwise operation.
qac-1832The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this relational operation.
qac-1833The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this equality operation.
qac-1834The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this conditional operation.
qac-1840The %1s operand is constant, 'essentially signed' (%2s) and non-negative but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation.
qac-1841The %1s operand is constant, 'essentially signed' (%2s) and non-negative but will be implicitly converted to an unsigned type (%3s) in this bitwise operation.
qac-1842The %1s operand is constant, 'essentially signed' (%2s) and non-negative but will be implicitly converted to an unsigned type (%3s) in this relational operation.
qac-1843The %1s operand is constant, 'essentially signed' (%2s) and non-negative but will be implicitly converted to an unsigned type (%3s) in this equality operation.
qac-1844The %1s operand is constant, 'essentially signed' (%2s) and non-negative but will be implicitly converted to an unsigned type (%3s) in this conditional operation.
qac-1850The %1s operand is 'essentially unsigned' (%2s) but will be implicitly converted to a signed type (%3s) in this arithmetic operation.
qac-1851The %1s operand is 'essentially unsigned' (%2s) but will be implicitly converted to a signed type (%3s) in this bitwise operation.
qac-1852The %1s operand is 'essentially unsigned' (%2s) but will be implicitly converted to a signed type (%3s) in this relational operation.
qac-1853The %1s operand is 'essentially unsigned' (%2s) but will be implicitly converted to a signed type (%3s) in this equality operation.
qac-1854The %1s operand is 'essentially unsigned' (%2s) but will be implicitly converted to a signed type (%3s) in this conditional operation.
qac-1860The operands of this arithmetic operator are of different 'essential signedness' but will generate a result of type 'signed int'.
qac-1861The operands of this bitwise operator are of different 'essential signedness' but will generate a result of type 'signed int'.
qac-1862The operands of this relational operator are of different 'essential signedness' but will both be promoted to 'signed int' for comparison.
qac-1863The operands of this equality operator are of different 'essential signedness' but will both be promoted to 'signed int' for comparison.
qac-1864The 2nd and 3rd operands of this conditional operator are of different 'essential signedness'. The result will be in the promoted type 'signed int'.
qac-1880The operands of this relational operator are expressions of different 'essential type' categories (%1s and %2s).
qac-1881The operands of this equality operator are expressions of different 'essential type' categories (%1s and %2s).
qac-1882The 2nd and 3rd operands of this conditional operator are expressions of different 'essential type' categories (%1s and %2s).
qac-2100Integral promotion : unsigned char promoted to signed int.
qac-2101Integral promotion : unsigned short promoted to signed int.
qac-2102Integral promotion : unsigned char promoted to unsigned int.
qac-2103Integral promotion : unsigned short promoted to unsigned int.
qac-2104Integral promotion : signed char promoted to signed int.
qac-2105Integral promotion : signed short promoted to signed int.
qac-2106Integral promotion : plain char promoted to signed int.
qac-2107Integral promotion : plain char promoted to unsigned int.
qac-2109Integral promotion : _Bool promoted to signed int.
qac-2110Default argument promotion : unsigned char promoted to signed int.
qac-2111Default argument promotion : unsigned short promoted to signed int.
qac-2112Default argument promotion : unsigned char promoted to unsigned int.
qac-2113Default argument promotion : unsigned short promoted to unsigned int.
qac-2114Default argument promotion : signed char promoted to signed int.
qac-2115Default argument promotion : signed short promoted to signed int.
qac-2116Default argument promotion : plain char promoted to signed int.
qac-2117Default argument promotion : plain char promoted to unsigned int.
qac-2118Default argument promotion : float promoted to double.
qac-2119Default argument promotion : _Bool promoted to signed int.
qac-2120Integral promotion : unsigned bit-field promoted to signed int.
qac-2122Integral promotion : unsigned bit-field promoted to unsigned int.
qac-2124Integral promotion : signed bit-field promoted to signed int.
qac-2130Default argument promotion : unsigned bit-field promoted to signed int.
qac-2132Default argument promotion : unsigned bit-field promoted to unsigned int.
qac-2134Default argument promotion : signed bit-field promoted to signed int.
qac-4401An expression of 'essentially Boolean' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4402An expression of 'essentially Boolean' type (%1s) is being converted to enum type, '%2s' on assignment.
qac-4403An expression of 'essentially Boolean' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4404An expression of 'essentially Boolean' type (%1s) is being converted to unsigned type, '%2s' on assignment.
qac-4405An expression of 'essentially Boolean' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4410An expression of 'essentially character' type (%1s) is being converted to Boolean type, '%2s' on assignment.
qac-4412An expression of 'essentially character' type (%1s) is being converted to enum type, '%2s' on assignment.
qac-4413An expression of 'essentially character' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4414An expression of 'essentially character' type (%1s) is being converted to unsigned type, '%2s' on assignment.
qac-4415An expression of 'essentially character' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4420An expression of 'essentially enum' type (%1s) is being converted to Boolean type, '%2s' on assignment.
qac-4421An expression of 'essentially enum' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4422An expression of 'essentially enum' type (%1s) is being converted to a different enum type, '%2s' on assignment.
qac-4423An expression of 'essentially enum' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4424An expression of 'essentially enum' type (%1s) is being converted to unsigned type, '%2s' on assignment.
qac-4425An expression of 'essentially enum' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4430An expression of 'essentially signed' type (%1s) is being converted to Boolean type, '%2s' on assignment.
qac-4431An expression of 'essentially signed' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4432An expression of 'essentially signed' type (%1s) is being converted to enum type, '%2s' on assignment.
qac-4434A non-constant expression of 'essentially signed' type (%1s) is being converted to unsigned type, '%2s' on assignment.
qac-4435A non-constant expression of 'essentially signed' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4436A constant expression of 'essentially signed' type (%1s) is being converted to unsigned type, '%2s' on assignment.
qac-4437A constant expression of 'essentially signed' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4440An expression of 'essentially unsigned' type (%1s) is being converted to Boolean type, '%2s' on assignment.
qac-4441An expression of 'essentially unsigned' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4442An expression of 'essentially unsigned' type (%1s) is being converted to enum type, '%2s' on assignment.
qac-4443A non-constant expression of 'essentially unsigned' type (%1s) is being converted to a wider signed type, '%2s' on assignment.
qac-4445An expression of 'essentially unsigned' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4446A non-constant expression of 'essentially unsigned' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4447A constant expression of 'essentially unsigned' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4460A non-constant expression of 'essentially signed' type (%1s) is being converted to narrower signed type, '%2s' on assignment.
qac-4461A non-constant expression of 'essentially unsigned' type (%1s) is being converted to narrower unsigned type, '%2s' on assignment.
qac-4463A constant expression of 'essentially signed' type (%1s) is being converted to narrower signed type, '%2s' on assignment.
qac-4464A constant expression of 'essentially unsigned' type (%1s) is being converted to narrower unsigned type, '%2s' on assignment.
qac-4470A non-constant expression of 'essentially signed' type (%1s) is being passed to a function parameter of wider signed type, '%2s'.
qac-4471A non-constant expression of 'essentially unsigned' type (%1s) is being passed to a function parameter of wider unsigned type, '%2s'.
qac-4480A non-constant expression of 'essentially signed' type (%1s) is being returned from a function defined with a wider signed return type, '%2s'.
qac-4481A non-constant expression of 'essentially unsigned' type (%1s) is being returned from a function defined with a wider unsigned return type, '%2s'.
+
INT04RecommendationEnforce limits on integer values originating from tainted sources
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2794Possible: Tainted right hand operand of shift operator is negative or too large.
qac-2804Possible: Overflow in signed arithmetic tainted operation.
qac-2854Possible: Implicit conversion of a tainted expression to a signed integer type of insufficient size.
qac-2859Possible: Casting a tainted expression to a signed integer type of insufficient size.
qac-2864Possible: Implementation-defined value resulting from left shift operation on tainted expression of signed type.
qac-2894Possible: Negative tainted value implicitly converted to an unsigned type.
qac-2899Possible: Negative tainted value cast to an unsigned type.
qac-2904Possible: Positive integer tainted value truncated by implicit conversion to a smaller unsigned type.
qac-2909Possible: Positive integer tainted value truncated by cast to a smaller unsigned type.
qac-2914Possible: Wraparound in unsigned arithmetic tainted operation.
qac-2924Possible: Left shift operation on tainted expression of unsigned type results in loss of high order bits.
qac-2944Possible: Result of implicit conversion of a tainted expression is only representable in a two's complement implementation.
qac-2949Possible: Result of cast of a tainted expression is only representable in a two's complement implementation.
qac-2954Possible: Negative tainted value used in array subscript or pointer arithmetic operation.
qac-2956Definite: Using object '%s' with tainted value.
qac-2959Possible: Using object '%s' with tainted value.
+
INT05RecommendationDo not use input functions to convert character data if they cannot handle all possible inputs
+ + + + + +
QacDescription
certccm-5005'%s' is being used.
+
INT07RecommendationUse only explicitly signed or unsigned char type for numeric values
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1292An integer constant of 'essentially signed' type is being converted to type char on assignment.
qac-1293An integer constant of 'essentially unsigned' type is being converted to type char on assignment.
qac-4401An expression of 'essentially Boolean' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4421An expression of 'essentially enum' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4431An expression of 'essentially signed' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4441An expression of 'essentially unsigned' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4451An expression of 'essentially floating' type (%1s) is being converted to character type, '%2s' on assignment.
+
INT08RecommendationVerify that all integer values are in range
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2800Constant: Overflow in signed arithmetic operation.
qac-2801Definite: Overflow in signed arithmetic operation.
qac-2802Apparent: Overflow in signed arithmetic operation.
qac-2803Suspicious: Overflow in signed arithmetic operation.
qac-2910Constant: Wraparound in unsigned arithmetic operation.
qac-2911Definite: Wraparound in unsigned arithmetic operation.
qac-2912Apparent: Wraparound in unsigned arithmetic operation.
qac-2913Suspicious: Wraparound in unsigned arithmetic operation.
+
INT09RecommendationEnsure enumeration constants map to unique values
+ + + + + +
QacDescription
qac-0724The value of this implicitly-specified enumeration constant is not unique.
+
INT10RecommendationDo not assume a positive remainder when using the % operator
+ + + + + +
QacDescription
qac-3103Result of signed division or remainder operation may be implementation defined.
+
INT12RecommendationDo not make assumptions about the type of a plain int bit-field when used in an expression
+ + + + + + + + + +
QacDescription
qac-0634[I] Bit-field %1s in %2s has not been declared explicitly as unsigned or signed.
qac-0635[C99] Bit-field %1s in %2s has been declared with a type not explicitly supported.
+
INT13RecommendationUse bitwise operators only on unsigned operands
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-4532An expression of 'essentially signed' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).
qac-4533An expression of 'essentially signed' type (%1s) is being used as the left-hand operand of this shift operator (%2s).
qac-4534An expression of 'essentially signed' type (%1s) is being used as the right-hand operand of this shift operator (%2s).
qac-4543A non-negative constant expression of 'essentially signed' type (%1s) is being used as the left-hand operand of this shift operator (%2s).
qac-4544A non-negative constant expression of 'essentially signed' type (%1s) is being used as the right-hand operand of this shift operator (%2s).
+
INT16RecommendationDo not make assumptions about representation of signed integers
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2940Constant: Result of implicit conversion is only representable in a two's complement implementation.
qac-2941Definite: Result of implicit conversion is only representable in a two's complement implementation.
qac-2942Apparent: Result of implicit conversion is only representable in a two's complement implementation.
qac-2943Suspicious: Result of implicit conversion is only representable in a two's complement implementation.
qac-2945Constant: Result of cast is only representable in a two's complement implementation.
qac-2946Definite: Result of cast is only representable in a two's complement implementation.
qac-2947Apparent: Result of cast is only representable in a two's complement implementation.
qac-2948Suspicious: Result of cast is only representable in a two's complement implementation.
+
INT18RecommendationEvaluate integer expressions in a larger size before comparing or assigning to that size
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1890A composite expression of 'essentially signed' type (%1s) is being implicitly converted to a wider signed type, '%2s'.
qac-1891A composite expression of 'essentially unsigned' type (%1s) is being implicitly converted to a wider unsigned type, '%2s'.
qac-1892A composite expression of 'essentially floating' type (%1s) is being implicitly converted to a wider floating type, '%2s'.
qac-1893The 2nd and 3rd operands of this conditional operator are both 'essentially signed' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other.
qac-1894The 2nd and 3rd operands of this conditional operator are both 'essentially unsigned' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other.
qac-1895The 2nd and 3rd operands of this conditional operator are both 'essentially floating' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other.
qac-4490A composite expression of 'essentially signed' type (%1s) is being converted to wider signed type, '%2s' on assignment.
qac-4491A composite expression of 'essentially unsigned' type (%1s) is being converted to wider unsigned type, '%2s' on assignment.
qac-4492A composite expression of 'essentially floating' type (%1s) is being converted to wider floating type, '%2s' on assignment.
+
INT30RuleEnsure that unsigned integer operations do not wrap
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2910Constant: Wraparound in unsigned arithmetic operation.
qac-2911Definite: Wraparound in unsigned arithmetic operation.
qac-2912Apparent: Wraparound in unsigned arithmetic operation.
qac-2913Suspicious: Wraparound in unsigned arithmetic operation.
qac-3383Cannot identify wraparound guard for unsigned arithmetic expression.
qac-3384Cannot identify wraparound guard for dependent unsigned arithmetic expression.
qac-3385Cannot identify wraparound guard for sizeof-VLA expression.
qac-3386Cannot identify wraparound guard for dependent sizeof-VLA expression.
+
INT31RuleEnsure that integer conversions do not result in lost or misinterpreted data
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2850Constant: Implicit conversion to a signed integer type of insufficient size.
qac-2851Definite: Implicit conversion to a signed integer type of insufficient size.
qac-2852Apparent: Implicit conversion to a signed integer type of insufficient size.
qac-2853Suspicious: Implicit conversion to a signed integer type of insufficient size.
qac-2855Constant: Casting to a signed integer type of insufficient size.
qac-2856Definite: Casting to a signed integer type of insufficient size.
qac-2857Apparent: Casting to a signed integer type of insufficient size.
qac-2858Suspicious: Casting to a signed integer type of insufficient size.
qac-2890Constant: Negative value implicitly converted to an unsigned type.
qac-2891Definite: Negative value implicitly converted to an unsigned type.
qac-2892Apparent: Negative value implicitly converted to an unsigned type.
qac-2893Suspicious: Negative value implicitly converted to an unsigned type.
qac-2895Constant: Negative value cast to an unsigned type.
qac-2896Definite: Negative value cast to an unsigned type.
qac-2897Apparent: Negative value cast to an unsigned type.
qac-2898Suspicious: Negative value cast to an unsigned type.
qac-2900Constant: Positive integer value truncated by implicit conversion to a smaller unsigned type.
qac-2901Definite: Positive integer value truncated by implicit conversion to a smaller unsigned type.
qac-2902Apparent: Positive integer value truncated by implicit conversion to a smaller unsigned type.
qac-2903Suspicious: Positive integer value truncated by implicit conversion to a smaller unsigned type.
qac-2905Constant: Positive integer value truncated by cast to a smaller unsigned type.
qac-2906Definite: Positive integer value truncated by cast to a smaller unsigned type.
qac-2907Apparent: Positive integer value truncated by cast to a smaller unsigned type.
qac-2908Suspicious: Positive integer value truncated by cast to a smaller unsigned type.
+
INT32RuleEnsure that operations on signed integers do not result in overflow
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2800Constant: Overflow in signed arithmetic operation.
qac-2801Definite: Overflow in signed arithmetic operation.
qac-2802Apparent: Overflow in signed arithmetic operation.
qac-2803Suspicious: Overflow in signed arithmetic operation.
qac-2860Constant: Implementation-defined value resulting from left shift operation on expression of signed type.
qac-2861Definite: Implementation-defined value resulting from left shift operation on expression of signed type.
qac-2862Apparent: Implementation-defined value resulting from left shift operation on expression of signed type.
qac-2863Suspicious: Implementation-defined value resulting from left shift operation on expression of signed type.
+
INT33RuleEnsure that division and remainder operations do not result in divide-by-zero errors
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-2830Constant: Division by zero.
qac-2831Definite: Division by zero.
qac-2832Apparent: Division by zero.
qac-2833Suspicious: Division by zero.
+
INT34RuleDo not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operand
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0499Right operand of shift operator is greater than or equal to the width of the essential type of the left operand.
qac-2790Constant: Right hand operand of shift operator is negative or too large.
qac-2791Definite: Right hand operand of shift operator is negative or too large.
qac-2792Apparent: Right hand operand of shift operator is negative or too large.
qac-2793Suspicious: Right hand operand of shift operator is negative or too large.
+
INT35RuleUse correct integer precisions
+ + + + + +
QacDescription
qac-0582[I] Multiplying the size of an integer by CHAR_BIT will include padding bits in the result.
+
INT36RuleConverting a pointer to integer or integer to pointer
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0303[I] Cast between a pointer to volatile object and an integral type.
qac-0305[I] Cast between a pointer to function and an integral type.
qac-0306[I] Cast between a pointer to object and an integral type.
qac-0309[U] Integral type is not large enough to hold a pointer value.
qac-0324[u] Cast between a pointer to incomplete type and an integral type.
qac-0326[I] Cast between a pointer to void and an integral type.
qac-0360An expression of pointer type is being converted to type _Bool on assignment.
qac-0361An expression of pointer type is being cast to type _Bool.
qac-0362An expression of essentially Boolean type is being cast to a pointer.
+
MEM02RecommendationImmediately cast the result of a memory allocation function call into a pointer to the allocated type
+ + + + + +
QacDescription
qac-0695Type given in sizeof is not compatible with the pointed to type used to cast malloc.
+
MEM03RecommendationClear sensitive information stored in reusable resources
+ + + + + +
QacDescription
certccm-5010'%s' is being used.
+
MEM05RecommendationAvoid large stack allocations
+ + + + + + + + + + + + + +
QacDescription
qac-1051[C99] A variable length array has been declared.
rcma-1520Functions are indirectly recursive.
qac-3670Recursive call to function containing this call.
+
MEM30RuleDo not access freed memory
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-4866Definite: Memory is used after free.
qac-4867Apparent: Memory is used after free.
qac-4868Suspicious: Memory is used after free.
qac-4871Definite: Zero size has been passed to realloc, malloc or calloc.
qac-4872Apparent: Zero size has been passed to realloc, malloc or calloc.
qac-4873Suspicious: Zero size has been passed to realloc, malloc or calloc.
+
MEM31RuleFree dynamically allocated memory when no longer needed
+ + + + + + + + + + + + + +
QacDescription
qac-2706Definite: Allocated memory is not deallocated.
qac-2707Apparent: Allocated memory is not deallocated.
qac-2708Suspicious: Allocated memory is not deallocated.
+
MEM33RuleAllocate and copy structures containing a flexible array member dynamically
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-1061[C] Structure '%1s' with flexible array member '%2s' cannot be used in the declaration of structure member '%3s'.
qac-1062[C] Structure '%1s' with flexible array member '%2s' cannot be used in the declaration of array elements.
qac-1063[C99] '%s' is an automatically-allocated object of a type declared with a flexible array member.
qac-1064[C99] '%s' is a statically-allocated object of a type declared with a flexible array member.
+
MEM34RuleOnly free memory allocated dynamically
+ + + + + + + + + + + + + +
QacDescription
qac-2721Definite: Deallocation of non dynamic memory.
qac-2722Apparent: Deallocation of non dynamic memory.
qac-2723Suspicious: Deallocation of non dynamic memory.
+
MEM35RuleAllocate sufficient memory for an object
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0696The size of the allocated memory block is smaller than the size of the object type addressed by the pointer cast.
qac-0701Argument for memory size does not refer to 'sizeof (%1s)'.
qac-1069[C99] Taking sizeof a struct with a flexible array member without adding the array size.
qac-1071[C99] Taking sizeof a struct with a flexible array member without explicitly adding the array size in terms of element sizes.
qac-1073[C99] Taking sizeof a struct with a flexible array member while adding an array size based on the wrong element type.
qac-2840Constant: Dereference of an invalid pointer value.
qac-2841Definite: Dereference of an invalid pointer value.
qac-2842Apparent: Dereference of an invalid pointer value.
qac-2843Suspicious: Dereference of an invalid pointer value.
qac-2935Constant: Dereference of an invalid char pointer value.
qac-2936Definite: Dereference of an invalid char pointer value.
qac-2937Apparent: Dereference of an invalid char pointer value.
qac-2938Suspicious: Dereference of an invalid char pointer value.
+
MEM36RuleDo not modify the alignment of objects by calling realloc()
+ + + + + +
QacDescription
certccm-5027'%s' is being used.
+
MSC01RecommendationStrive for logical completeness
+ + + + + + + + + + + + + +
QacDescription
qac-2000No 'else' clause exists for this 'if' statement.
qac-2002No 'default' label found in this 'switch' statement.
qac-2004No concluding 'else' exists in this 'if'-'else'-'if' statement.
+
MSC04RecommendationUse comments consistently and in a readable fashion
+ + + + + +
QacDescription
qac-3108Nested comments are not recognized in the ISO standard.
+
MSC07RecommendationDetect and remove dead code
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
rcma-1501The function '%1s' is declared but is not used within this project.
rcma-1503The function '%1s' is defined but is not used within this project.
qac-2008Code statements precede the first label in this 'switch' construct.
qac-2877This loop will never be executed more than once.
qac-2880This code is unreachable.
qac-2881The code in this 'default' clause is unreachable.
qac-2882This 'switch' statement will bypass the initialization of local variables.
qac-2883This 'goto' statement will always bypass the initialization of local variables.
qac-2980The value of this function parameter is never used before being modified.
qac-2981This initialization is redundant. The value of this object is never used before being modified.
qac-2982This assignment is redundant. The value of this object is never used before being modified.
qac-2983This assignment is redundant. The value of this object is never subsequently used.
qac-2984This operation is redundant. The value of the result is always '%1s'.
qac-2985This operation is redundant. The value of the result is always that of the left-hand operand.
qac-2986This operation is redundant. The value of the result is always that of the right-hand operand.
qac-3202The label '%s:' is not used in this function and could be removed.
qac-3203The variable '%s' is set but never used.
qac-3205The identifier '%1s' is not used and could be removed.
qac-3206The parameter '%s' is not used in this function.
qac-3207File scope static, '%1s', is not used, and could be removed.
qac-3210The global identifier '%1s' is declared here but is not used in this translation unit.
qac-3219Static function '%1s()' is not used within this translation unit.
qac-3229File scope static, '%1s', is written but never used.
qac-3404Statement contains a redundant * operator at top level. *p++ means *(p++) not (*p)++.
qac-3422Statement contains a redundant operator at top level.
qac-3423Statement contains a redundant cast at top level.
qac-3425One branch of this conditional operation is a redundant expression.
qac-3470The operand of 'sizeof' is not an expression which designates either an object or a type.
+
MSC09RecommendationCharacter encoding: Use subset of ASCII for safety
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0285[I] Character constant contains character which is not a member of the basic source character set.
qac-0286[I] String literal contains character which is not a member of the basic source character set.
qac-0287[I] Header name contains character which is not a member of the basic source character set.
qac-0288[I] Source file '%s' has comments containing characters which are not members of the basic source character set.
qac-0289[I] Source file '%s' has preprocessing tokens containing characters which are not members of the basic source character set.
qac-0299[I] Source file '%s' includes #pragma directives containing characters which are not members of the basic source character set.
+
MSC12RecommendationDetect and remove code that has no effect or is never executed
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-3110The left-hand operand of this ',' has no side effects.
qac-3112This statement has no side-effect - it can be removed.
qac-3307The operand of 'sizeof' is an expression with implied side effects, but they will not be evaluated.
qac-3404Statement contains a redundant * operator at top level. *p++ means *(p++) not (*p)++.
qac-3426Right hand side of comma expression has no side effect and its value is not used.
qac-3427Right hand side of logical operator has no side effect and its value is not used.
+
MSC13RecommendationDetect and remove unused values
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
rcma-1500The object '%1s' is declared but is not used within this project.
rcma-1502The object '%1s' is defined but is not used within this project.
qac-2980The value of this function parameter is never used before being modified.
qac-2981This initialization is redundant. The value of this object is never used before being modified.
qac-2982This assignment is redundant. The value of this object is never used before being modified.
qac-2983This assignment is redundant. The value of this object is never subsequently used.
qac-2984This operation is redundant. The value of the result is always '%1s'.
qac-2985This operation is redundant. The value of the result is always that of the left-hand operand.
qac-2986This operation is redundant. The value of the result is always that of the right-hand operand.
qac-3203The variable '%s' is set but never used.
qac-3205The identifier '%1s' is not used and could be removed.
qac-3206The parameter '%s' is not used in this function.
qac-3207File scope static, '%1s', is not used, and could be removed.
qac-3229File scope static, '%1s', is written but never used.
+
MSC14RecommendationDo not introduce unnecessary platform dependencies
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0202[I] '-' character in '[]' conversion specification is implementation defined.
qac-0240[I] This file contains the control-M character at the end of a line.
qac-0241[I] This file contains the control-Z character - was this transferred from a PC?
qac-0242[I] This file contains the control-M character in the middle of a line.
qac-0243[I] Treating an invalid character as whitespace.
qac-0246[E] Binary integer constants are a language extension.
qac-0284[I] Multiple character constants have implementation defined values.
qac-0551[E] Cast may not operate on the left operand of the assignment operator.
qac-0581[I] Floating-point constant may be too small to be representable.
qac-0601[E] Function 'main()' is not of type 'int (void)' or 'int (int, char *[])'.
qac-0633[E] Empty structures and unions are a language extension.
qac-0634[I] Bit-field %1s in %2s has not been declared explicitly as unsigned or signed.
qac-0635[C99] Bit-field %1s in %2s has been declared with a type not explicitly supported.
qac-0660[C11] Defining an unnamed member in a struct or union.
qac-0662[C11] Accessing a member of an unnamed struct or union member.
qac-0830[E] Unrecognized text encountered after a preprocessing directive.
qac-0831[E] Use of '\\' in this '#include' line is a PC extension - this usage is non-portable.
qac-0840[E] Extra tokens at end of #include directive.
qac-0899[E] Unrecognized preprocessing directive has been ignored - assumed to be a language extension.
qac-1001[E] '#include %s' is a VMS extension.
qac-1002[E] '%s' is not a legal identifier in ISO C.
qac-1003[E] '#%s' is a language extension for in-line assembler. All statements located between #asm and #endasm will be ignored.
qac-1006[E] This in-line assembler construct is a language extension. The code has been ignored.
qac-1008[E] '#%s' is not a legal ISO C preprocessing directive.
qac-1012[E] Use of a C++ reference type ('type &') will be treated as a language extension.
qac-1014[E] Non-standard type specifier - this will be treated as a language extension.
qac-1015[E] '%s' is not a legal keyword in ISO C - this will be treated as a language extension.
qac-1019[E] '@ address' is not supported in ISO C - this will be treated as a language extension.
qac-1020[E] '__typeof__' is not supported in ISO C, and is treated as a language extension.
qac-1021[E] A statement expression is not supported in ISO C, and is treated as a language extension.
qac-1022[E] '__alignof__' is a language extension. It is mapped to the standard '_Alignof' operator.
qac-1026[E] The indicated @word construct has been ignored.
qac-1028[E] Use of the sizeof operator in a preprocessing directive is a language extension.
qac-1029[E] Whitespace encountered between backslash and new-line has been ignored.
qac-1034[E] Macro defined with named variable argument list. This is a language extension.
qac-1035[E] No macro arguments supplied for variable argument list. This is a language extension.
qac-1036[E] Comma before ## ignored in expansion of variadic macro. This is a language extension.
qac-1037[E] Arrays of length zero are a language extension.
qac-1038[E] The sequence ", ##__VA_ARGS__" is a language extension.
qac-1041[E] Empty aggregate initializers are a language extension.
qac-1042[E] Using I64 or UI64 as an integer constant suffix. This is a language extension.
qac-1043[E] Defining an anonymous union object. This is a language extension.
qac-1044[E] Defining an anonymous struct object. This is a language extension.
qac-1045[E] Use of the #include_next preprocessing directive is a language extension.
qac-1046[E] Function is being declared with default argument syntax. This is a language extension.
qac-1434[I] This enum constant is not representable in a 16 bit integer type.
qac-3664[E] Using a dot operator to access an individual bit is a language extension.
+
MSC15RecommendationDo not depend on undefined behavior
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0160[U] Using unsupported conversion specifier number %1s.
qac-0161[U] Unknown length modifier used with 'i' or 'd' conversion specifier, number %1s.
qac-0162[U] Unknown length modifier used with 'o' conversion specifier, number %1s.
qac-0163[U] Unknown length modifier used with 'u' conversion specifier, number %1s.
qac-0164[U] Unknown length modifier used with 'x' conversion specifier, number %1s.
qac-0165[U] Unknown length modifier used with 'X' conversion specifier, number %1s.
qac-0166[U] Unknown length modifier used with 'f' conversion specifier, number %1s.
qac-0167[U] Unknown length modifier used with 'e' conversion specifier, number %1s.
qac-0168[U] Unknown length modifier used with 'E' conversion specifier, number %1s.
qac-0169[U] Unknown length modifier used with 'g' conversion specifier, number %1s.
qac-0170[U] Unknown length modifier used with 'G' conversion specifier, number %1s.
qac-0171[U] Unknown length modifier used with 'c' conversion specifier, number %1s.
qac-0172[U] Unknown length modifier used with '%%' conversion specifier, number %1s.
qac-0173[U] Unknown length modifier used with 's' conversion specifier, number %1s.
qac-0174[U] Unknown length modifier used with 'n' conversion specifier, number %1s.
qac-0175[U] Unknown length modifier used with 'p' conversion specifier, number %1s.
qac-0176[U] Incomplete conversion specifier, number %1s.
qac-0177[U] Field width of format conversion specifier exceeds 509 characters.
qac-0178[U] Precision of format conversion specifier exceeds 509 characters.
qac-0179[U] Argument type does not match conversion specifier number %1s.
qac-0184[U] Insufficient arguments to satisfy conversion specifier, number %1s.
qac-0185[U] Call contains more arguments than conversion specifiers.
qac-0186[U] A call to this function must include at least one argument.
qac-0190[U] Using unsupported conversion specifier number %1s.
qac-0191[U] Unknown length modifier used with 'd/i/n' conversion specifier, number %1s.
qac-0192[U] Unknown length modifier used with 'o' conversion specifier, number %1s.
qac-0193[U] Unknown length modifier used with 'u' conversion specifier, number %1s.
qac-0194[U] Unknown length modifier used with 'x/X' conversion specifier, number %1s.
qac-0195[U] Unknown length modifier used with 'e/E/f/F/g/G' conversion specifier, number %1s.
qac-0196[U] Unknown length modifier used with 's' conversion specifier, number %1s.
qac-0197[U] Unknown length modifier used with 'p' conversion specifier, number %1s.
qac-0198[U] Unknown length modifier used with '%%' conversion specifier, number %1s.
qac-0199[U] Unknown length modifier used with '[' conversion specifier, number %1s.
qac-0200[U] Unknown length modifier used with 'c' conversion specifier, number %1s.
qac-0201[U] Incomplete conversion specifier, number %1s.
qac-0203[U] Value of character prior to '-' in '[]' is greater than following character.
qac-0204[U] Field width of format conversion specifier exceeds 509 characters.
qac-0206[U] Argument type does not match conversion specifier number %1s.
qac-0207[U] 'scanf' expects address of objects being stored into.
qac-0208[U] Same character occurs in scanset more than once.
qac-0235[U] Unknown escape sequence.
qac-0275[U] Floating value is out of range for conversion to destination type.
qac-0301[u] Cast between a pointer to object and a floating type.
qac-0302[u] Cast between a pointer to function and a floating type.
qac-0304[U] The address of an array declared 'register' may not be computed.
qac-0307[u] Cast between a pointer to object and a pointer to function.
qac-0309[U] Integral type is not large enough to hold a pointer value.
qac-0323[C] Cast between a pointer to incomplete type and a floating type.
qac-0327[C] Cast between a pointer to void and a floating type.
qac-0337[U] String literal has undefined value. This may be a result of using '#' on \\.
qac-0400[U] '%1s' is modified more than once between sequence points - evaluation order unspecified.
qac-0401[U] '%1s' may be modified more than once between sequence points - evaluation order unspecified.
qac-0402[U] '%1s' is modified and accessed between sequence points - evaluation order unspecified.
qac-0403[U] '%1s' may be modified and accessed between sequence points - evaluation order unspecified.
qac-0475[u] Operand of 'sizeof' is an expression designating a bit-field.
qac-0543[U] 'void' expressions have no value and may not be used in expressions.
qac-0544[U] The value of an incomplete 'union' may not be used.
qac-0545[U] The value of an incomplete 'struct' may not be used.
qac-0602[U] The identifier '%s' is reserved for use by the library.
qac-0603[U] The macro identifier '%s' is reserved.
qac-0623[U] '%s' has incomplete type and no linkage - this is undefined.
qac-0625[U] '%s' has been declared with both internal and external linkage - the behaviour is undefined.
qac-0626[U] '%s' has different type to previous declaration (which is no longer in scope).
qac-0630[U] More than one definition of '%s' (with external linkage).
qac-0632[U] Tentative definition of '%s' with internal linkage cannot have unknown size.
qac-0636[U] There are no named members in this 'struct' or 'union'.
qac-0654[U] Using 'const' or 'volatile' in a function return type is undefined.
qac-0658[U] Parameter cannot have 'void' type.
qac-0661[U] '%1s()' may not have a storage class specifier of '%2s' when declared at block scope.
qac-0667[U] '%s' is declared as a typedef and may not be redeclared as an object at an inner scope without an explicit type specifier.
qac-0668[U] '%s' is declared as a typedef and may not be redeclared as a member of a 'struct' or 'union' without an explicit type specifier.
qac-0672[U] The initializer for a 'struct', 'union' or array is not enclosed in braces.
qac-0676[u] Array element is of function type. Arrays cannot be constructed from function types.
qac-0678[u] Array element is array of unknown size. Arrays cannot be constructed from incomplete types.
qac-0680[u] Array element is 'void' or an incomplete 'struct' or 'union'. Arrays cannot be constructed from incomplete types.
qac-0706[U] Label '%s' is not unique within this function.
qac-0745[U] 'return;' found in '%s()', which has been defined with a non-'void' return type.
qac-0777[U] External identifier does not differ from other identifier(s) (e.g. '%1s') within the specified number of significant characters.
qac-0779[U] Identifier does not differ from other identifier(s) (e.g. '%1s') within the specified number of significant characters.
qac-0813[U] Using any of the characters ' " or /* in '#include <%s>' gives undefined behaviour.
qac-0814[U] Using the characters ' or /* in '#include "%s"' gives undefined behaviour.
qac-0821[C] '#include' does not identify a header or source file that can be processed.
qac-0836[U] Definition of macro named 'defined'.
qac-0837[U] Use of '#undef' to remove the operator 'defined'.
qac-0848[U] Attempting to #undef '%s', which is a predefined macro name.
qac-0853[U] Macro arguments contain a sequence of tokens that has the form of a preprocessing directive.
qac-0854[U] Attempting to #define '%s', which is a predefined macro name.
qac-0864[U] '#line' directive specifies line number which is not in the range 1 to 32767.
qac-0865[U] '#line' directive is badly formed.
qac-0867[U] '#line' has not been followed by a line number.
qac-0872[U] Result of '##' operator is not a legal preprocessing token.
qac-0874[U] Character string literal and wide character string literal are adjacent.
qac-0885[U] The token 'defined' is generated in the expansion of this macro.
qac-0887[U] Use of 'defined' must match either 'defined(identifier)' or 'defined identifier'.
qac-0888[U] 'defined' requires an identifier as an argument.
qac-0914[U] Source file does not end with a newline character.
qac-0915[U] Source file ends with a backslash character followed by a newline.
qac-0942[U] A * can only be used to specify array size within function prototype scope.
rcma-1509'%1s' has external linkage and has multiple definitions.
rcma-1510'%1s' has external linkage and has incompatible declarations.
qac-3113[U] 'return' statement includes no expression but function '%s()' is implicitly of type 'int'.
qac-3114[U] Function '%s()' is implicitly of type 'int' but ends without returning a value.
qac-3239[U] inline function '%1s' has external linkage, but is not defined within this translation unit.
qac-3311[u] An earlier jump to this statement will bypass the initialization of local variables.
qac-3312[u] This goto statement will jump into a previous block and bypass the initialization of local variables.
qac-3319[U] Function called with number of arguments which differs from number of parameters in definition.
qac-3437[u] '%1s' is only provided by the standard library as a macro, but is being used as a value here.
qac-3438[U] #undef'ing the assert macro to call a function of that name causes undefined behaviour.
+
MSC17RecommendationFinish every set of statements associated with a case label with a break statement
+ + + + + +
QacDescription
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MSC20RecommendationDo not use a switch statement to transfer control into a complex block
+ + + + + +
QacDescription
qac-2019'Switch' label is located within a nested code block.
+
MSC30RuleDo not use the rand() function for generating pseudorandom numbers
+ + + + + +
QacDescription
certccm-5022'%s' is being used.
+
MSC32RuleProperly seed pseudorandom number generators
+ + + + + +
QacDescription
certccm-5031PRNG is not seeded before usage.
+
MSC33RuleDo not pass invalid data to the asctime() function
+ + + + + +
QacDescription
certccm-5032'%s' is being used.
+
MSC37RuleEnsure that control never reaches the end of a non-void function
+ + + + + +
QacDescription
qac-2888This function has been declared with a non-void 'return' type but ends with an implicit 'return ;' statement.
+
MSC38RuleDo not treat a predefined identifier as an object if it might only be implemented as a macro
+ + + + + + + + + +
QacDescription
qac-3437[u] '%1s' is only provided by the standard library as a macro, but is being used as a value here.
qac-3475[u] '%1s' is only provided by the standard library as a macro, but is being declared as a value here.
+
MSC39RuleDo not call va_arg() on a va_list that has an indeterminate value
+ + + + + +
QacDescription
qac-3497[U] The va_list object '%1s' is both passed as an argument and accessed with va_arg.
+
MSC40RuleDo not violate constraints
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0232[C] Value of hex escape sequence is not representable in type 'unsigned char'.
qac-0233[C] Value of octal escape sequence is not representable in type 'unsigned char'.
qac-0244[C] Value of character constant is not representable in type 'int'.
qac-0268[S] Comment open at end of translation unit.
qac-0278[C] Overflow in signed arithmetic operation on constant operands.
qac-0321[C] Declaration within 'for' statement defines an identifier '%1s' which is not an object.
qac-0322[C] Illegal storage class specifier used in 'for' statement declaration.
qac-0338[C] Octal or hex escape sequence value is too large for 'unsigned char' or 'wchar_t' type.
qac-0422[C] Function call contains fewer arguments than prototype specifies.
qac-0423[C] Function call contains more arguments than prototype specifies.
qac-0426[C] Called function has incomplete return type.
qac-0427[C] Object identifier used as if it were a function or a function pointer identifier.
qac-0429[C] Function argument is not of arithmetic type.
qac-0430[C] Function argument is not of compatible 'struct'/'union' type.
qac-0431[C] Function argument points to a more heavily qualified type.
qac-0432[C] Function argument is not of compatible pointer type.
qac-0435[C] The 'struct'/'union' member '%s' does not exist.
qac-0436[C] Left operand of '.' must be a 'struct' or 'union' object.
qac-0437[C] Left operand of '->' must be a pointer to a 'struct' or 'union' object.
qac-0446[C] Operand of ++/-- must have scalar (arithmetic or pointer) type.
qac-0447[C] Operand of ++/-- must be a modifiable object.
qac-0448[C] Operand of ++/-- must not be a pointer to an object of unknown size.
qac-0449[C] Operand of ++/-- must not be a pointer to a function.
qac-0451[C] Subscripting requires a pointer (or array lvalue).
qac-0452[C] Cannot subscript a pointer to an object of unknown size.
qac-0453[C] An array subscript must have integral type.
qac-0454[C] The address-of operator '&' cannot be applied to an object declared with 'register'.
qac-0456[C] This expression does not have an address - '&' may only be applied to an lvalue or a function designator.
qac-0457[C] The address-of operator '&' cannot be applied to a bit-field.
qac-0458[C] Indirection operator '*' requires operand of pointer type.
qac-0460[C] The keyword static is used in the declaration of the index of an array which is not a function parameter.
qac-0461[C] The keyword static is used in the declaration of an inner index of a multi-dimensional array.
qac-0462[C] A type qualifier (const, volatile or restrict) is used in the declaration of the index of an array which is not a function parameter.
qac-0463[C] A type qualifier (const, volatile or restrict) is used in the declaration of an inner index of a multi-dimensional array.
qac-0466[C] Unary '+' requires arithmetic operand.
qac-0467[C] Operand of '!' must have scalar (arithmetic or pointer) type.
qac-0468[C] Unary '-' requires arithmetic operand.
qac-0469[C] Bitwise not '~' requires integral operand.
qac-0476[C] 'sizeof' cannot be applied to a bit-field.
qac-0477[C] 'sizeof' cannot be applied to a function.
qac-0478[C] 'sizeof' cannot be applied to an object of unknown size.
qac-0481[C] Only scalar expressions may be cast to other types.
qac-0482[C] Expressions may only be cast to 'void' or scalar types.
qac-0483[C] A pointer to an object of unknown size cannot be the operand of an addition operator.
qac-0484[C] A pointer to an object of unknown size cannot be the operand of a subtraction operator.
qac-0485[C] Only integral expressions may be added to pointers.
qac-0486[C] Only integral expressions and compatible pointers may be subtracted from pointers.
qac-0487[C] If two pointers are subtracted, they must be pointers that address compatible types.
qac-0493[C] Type of left operand is not compatible with this operator.
qac-0494[C] Type of right operand is not compatible with this operator.
qac-0495[C] Left operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
qac-0496[C] Right operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
qac-0513[C] Relational operator used to compare pointers to incompatible types.
qac-0514[C] Relational operator used to compare a pointer with an incompatible operand.
qac-0515[C] Equality operator used to compare a pointer with an incompatible operand.
qac-0536[C] First operand of '&&', '||' or '?' must have scalar (arithmetic or pointer) type.
qac-0537[C] Second operand of '&&' or '||' must have scalar (arithmetic or pointer) type.
qac-0540[C] 2nd and 3rd operands of conditional operator '?' must have compatible types.
qac-0541[C] Argument no. %s does not have object type.
qac-0542[C] Controlling expression must have scalar (arithmetic or pointer) type.
qac-0546[C] 'enum %s' has unknown content. Use of an enum tag with undefined content is not permitted.
qac-0547[C] This declaration of tag '%s' conflicts with a previous declaration.
qac-0550[C] Left operand of '+=' or '-=' is a pointer to an object of unknown size.
qac-0554[C] 'static %s()' has been declared and called but no definition has been given.
qac-0555[C] Invalid assignment to object of void type or array type.
qac-0556[C] Left operand of assignment must be a modifiable object.
qac-0557[C] Right operand of assignment is not of arithmetic type.
qac-0558[C] Right operand of '+=' or '-=' must have integral type when left operand is a pointer.
qac-0559[C] Right operand of '<<=', '>>=', '&=', '|=', '^=' or '%=' must have integral type.
qac-0560[C] Left operand of '<<=', '>>=', '&=', '|=', '^=' or '%=' must have integral type.
qac-0561[C] Right operand of assignment is not of compatible 'struct'/'union' type.
qac-0562[C] Right operand of assignment points to a more heavily qualified type.
qac-0563[C] Right operand of assignment is not of compatible pointer type.
qac-0564[C] Left operand of assignment must be an lvalue (it must designate an object).
qac-0565[C] Left operand of '+=' or '-=' must be of arithmetic or pointer to object type.
qac-0580[C] Constant is too large to be representable.
qac-0588[C] Width of bit-field must be an integral constant expression.
qac-0589[C] Enumeration constant must be an integral constant expression.
qac-0590[C] Array bound must be an integral constant expression.
qac-0591[C] A 'case' label must be an integral constant expression.
qac-0605[C] A declaration must declare a tag or an identifier.
qac-0616[C] Illegal combination of type specifiers or storage class specifiers.
qac-0619[C] The identifier '%1s' has already been defined in the current scope within the ordinary identifier namespace.
qac-0620[C] Cannot initialize '%s' because it has unknown size.
qac-0621[C] The struct/union '%s' cannot be initialized because it has unknown size.
qac-0622[C] The identifier '%s' has been declared both with and without linkage in the same scope.
qac-0627[C] '%s' has different type to previous declaration in the same scope.
qac-0628[C] '%s' has different type to previous declaration at wider scope.
qac-0629[C] More than one definition of '%s' (with internal linkage).
qac-0631[C] More than one declaration of '%s' (with no linkage).
qac-0638[C] Duplicate member name '%s' in 'struct' or 'union'.
qac-0640[C] '%s' in 'struct' or 'union' type may not have 'void' type.
qac-0641[C] '%s' in 'struct' or 'union' type may not have function type.
qac-0642[C] '%s' in 'struct' or 'union' type may not be an array of unknown size.
qac-0643[C] '%s' in 'struct' or 'union' type may not be a 'struct' or 'union' with unknown content.
qac-0644[C] Width of bit-field must be no bigger than the width of an 'int'.
qac-0645[C] A zero width bit-field cannot be given a name.
qac-0646[C] Enumeration constants must have values representable as 'int's.
qac-0649[C] K&R style declaration of parameters is not legal after a function header that includes a parameter list.
qac-0650[C] Illegal storage class specifier on named function parameter.
qac-0651[C] Missing type specifiers in function declaration.
qac-0653[C] Duplicate definition of 'struct', 'union' or 'enum' tag '%s'.
qac-0655[C] Illegal storage class specifier on unnamed function parameter.
qac-0656[C] Function return type cannot be function or array type, or an incomplete struct/union (for function definition).
qac-0657[C] Unnamed parameter specified in function definition.
qac-0659[C] The identifier '%s' was not given in the parameter list.
qac-0664[C] Parameter specified with type 'void'.
qac-0665[C] Two parameters have been declared with the same name '%1s'.
qac-0669[C] The restrict qualifier can only be applied to pointer types derived from object or incomplete types.
qac-0671[C] Initializer for object of arithmetic type is not of arithmetic type.
qac-0673[C] Initializer points to a more heavily qualified type.
qac-0674[C] Initializer for pointer is of incompatible type.
qac-0675[C] Initializer is not of compatible 'struct'/'union' type.
qac-0677[C] Array size is negative, or unrepresentable.
qac-0682[C] Initializer for object of a character type is a string literal.
qac-0683[C] Initializer for object of a character type is a wide string literal.
qac-0684[C] Too many initializers.
qac-0685[C] Initializer for any object with static storage duration must be a constant expression.
qac-0690[C] String literal contains too many characters to initialize object.
qac-0698[C] String literal used to initialize an object of incompatible type.
qac-0699[C] String literal used to initialize a pointer of incompatible type.
qac-0708[C] No definition found for the label '%s' in this function.
qac-0709[C] Initialization of locally declared 'extern %s' is illegal.
qac-0736[C] 'case' label does not have unique value within this 'switch' statement.
qac-0737[C] More than one 'default' label found in 'switch' statement.
qac-0738[C] Controlling expression in a 'switch' statement must have integral type.
qac-0746[C] 'return exp;' found in '%s()' whose return type is 'void'.
qac-0747[C] 'return exp;' found in '%s()' whose return type is qualified 'void'.
qac-0755[C] 'return' expression is not of arithmetic type.
qac-0756[C] 'return' expression is not of compatible 'struct'/'union' type.
qac-0757[C] 'return' expression points to a more heavily qualified type.
qac-0758[C] 'return' expression is not of compatible pointer type.
qac-0766[C] 'continue' statement found outside an iteration statement.
qac-0767[C] 'break' statement found outside a 'switch' or iteration statement.
qac-0768[C] 'case' or 'default' found outside a 'switch' statement.
qac-0774[C] 'auto' may not be specified on global declaration of '%s'.
qac-0775[C] 'register' may not be specified on global declaration of '%s'.
qac-0801[C] The '##' operator may not be the first token in a macro replacement list.
qac-0802[C] The '##' operator may not be the last token in a macro replacement list.
qac-0803[C] The '#' operator may only appear before a macro parameter.
qac-0804[C] Macro parameter '%s' is not unique.
qac-0811[C] The glue operator '##' may only appear in a '#define' preprocessing directive.
qac-0821[C] '#include' does not identify a header or source file that can be processed.
qac-0834[C] Function-like macro '%s()' is being redefined as an object-like macro.
qac-0835[C] Macro '%s' is being redefined with different parameter names.
qac-0844[C] Macro '%s' is being redefined with a different replacement list.
qac-0845[C] Object-like macro '%s' is being redefined as a function-like macro.
qac-0851[C] More arguments in macro call than specified in definition.
qac-0852[S] Unable to find the ')' that marks the end of the macro call.
qac-0866[C] The string literal in a '#line' directive cannot be a 'wide string literal'.
qac-0873[C] Preprocessing token cannot be converted to an actual token.
qac-0877[C] '#if' and '#elif' expressions may contain only integral constants.
qac-0940[C] Illegal usage of a variably modified type.
qac-0941[C] A variable length array may not be initialized.
qac-0943[C] Jump to label '%s' is a jump into the scope of an identifier with variably modified type.
qac-0944[C] The label '%s' is inside the scope of an identifier with variably modified type.
qac-1023[C] Using '_Alignof' on function types is illegal.
qac-1024[C] Using '_Alignof' on incomplete types is illegal.
qac-1025[C] Using '_Alignof' on bit-fields is illegal.
qac-1033[C] The identifier __VA_ARGS__ may only be used in the replacement list of a variadic macro.
qac-1047[EE] Function is being declared with default argument syntax after a previous call to the function. This is not allowed.
qac-1048[EE] Default argument values are missing for some parameters in this function declaration. This is not allowed.
qac-1050[EE] Nested functions cannot be 'extern' or 'static'.
qac-1061[C] Structure '%1s' with flexible array member '%2s' cannot be used in the declaration of structure member '%3s'.
qac-1062[C] Structure '%1s' with flexible array member '%2s' cannot be used in the declaration of array elements.
qac-3236[C] 'inline' may not be applied to function 'main'.
qac-3237[C] inline function '%1s' has external linkage and is defining an object, '%2s', with static storage duration.
qac-3238[C] inline function '%1s' has external linkage and is referring to an object, '%2s', with internal linkage.
qac-3244[C] 'inline' may only be used in the declaration of a function identifier.
+
MSC41RuleNever hard code sensitive information
+ + + + + +
QacDescription
qac-3122Hard-coded 'magic' string literal, %1s.
+
POS30Rule_OptionalUse the readlink() function properly
+ + + + + +
QacDescription
certccm-5033'%s' is being used.
+
POS33Rule_OptionalDo not use vfork()
+ + + + + +
QacDescription
certccm-5023'%s' is being used.
+
POS34Rule_OptionalDo not call putenv() with a pointer to an automatic variable as the argument
+ + + + + +
QacDescription
certccm-5024'%s' is being used.
+
POS35Rule_OptionalAvoid race conditions while checking for the existence of a symbolic link
+ + + + + + + + + + + + + +
QacDescription
qac-4886Definite: Time-of-check time-of-use race condition when checking for the existence of a symbolic link.
qac-4887Apparent: Time-of-check time-of-use race condition when checking for the existence of a symbolic link.
qac-4888Suspicious: Time-of-check time-of-use race condition when checking for the existence of a symbolic link.
+
POS36Rule_OptionalObserve correct revocation order while relinquishing privileges
+ + + + + + + + + + + + + +
QacDescription
qac-4891Definite: Revocation order was not observed while relinquishing privileges.
qac-4892Apparent: Revocation order was not observed while relinquishing privileges.
qac-4893Suspicious: Revocation order was not observed while relinquishing privileges.
+
POS37Rule_OptionalEnsure that privilege relinquishment is successful
+ + + + + + + + + + + + + +
QacDescription
qac-4876Definite: Permanent user rights drop success is not checked.
qac-4877Apparent: Permanent user rights drop success is not checked.
qac-4878Suspicious: Permanent user rights drop success is not checked.
+
POS38Rule_OptionalBeware of race conditions when using fork and file descriptors
+ + + + + + + + + +
QacDescription
qac-4951Definite: Beware of race conditions when using fork and file descriptors.
qac-4952Apparent: Beware of race conditions when using fork and file descriptors.
+
POS39Rule_OptionalUse the correct byte ordering when transferring data between systems
+ + + + + + + + + + + + + +
QacDescription
qac-4906Definite: Data may not be correctly converted between host and network byte order.
qac-4907Apparent: Data may not be correctly converted between host and network byte order.
qac-4908Suspicious: Data may not be correctly converted between host and network byte order.
+
POS44Rule_OptionalDo not use signals to terminate threads
+ + + + + +
QacDescription
certccm-5034'%s' is being used.
+
POS47Rule_OptionalDo not use threads that can be canceled asynchronously
+ + + + + +
QacDescription
certccm-5035Asynchronous thread cancellation is used.
+
POS48Rule_OptionalDo not unlock or destroy another POSIX thread's mutex
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-4971Definite: Attempt to destroy a mutex which has not been created by the current thread
qac-4972Apparent: Attempt to destroy a mutex which has not been created by the current thread
qac-4981Definite: Attempt to unlock a mutex which has not been locked by the current thread
qac-4982Apparent: Attempt to unlock a mutex which has not been locked by the current thread
+
POS49Rule_OptionalWhen data must be accessed by multiple threads, provide a mutex and guarantee no adjacent data is also accessed
+ + + + + + + + + +
QacDescription
mta-1774Definite: data race for an object '%1s' which shares its physical storage location with one or more others.
mta-1775Apparent: data race for an object '%1s' which shares its physical storage location with one or more others.
+
POS50Rule_OptionalDeclare objects shared between POSIX threads with appropriate storage durations
+ + + + + + + + + + + + + +
QacDescription
qac-4926Definite: The lifetime of the variable passed to the thread creation function is shorter than the lifetime of the thread.
qac-4927Apparent: The lifetime of the variable passed to the thread creation function is shorter than the lifetime of the thread.
qac-4928Suspicious: The lifetime of the variable passed to the thread creation function is shorter than the lifetime of the thread.
+
POS51Rule_OptionalAvoid deadlock with POSIX threads by locking in predefined order
+ + + + + + + + + +
QacDescription
mta-1772Mutex '%1s' violates the lock hierarchy, as it is acquired before '%2s' elsewhere %3s% of the time.
mta-1773Mutexes '%1s' and '%2s' are not ordered in the lock hierarchy.
+
POS52Rule_OptionalDo not perform operations that can block while holding a POSIX lock
+ + + + + + + + + +
QacDescription
qac-4966Definite: Performing a blocking action while holding a POSIX lock.
qac-4967Apparent: Performing a blocking action while holding a POSIX lock.
+
POS53Rule_OptionalDo not use more than one mutex for concurrent waiting operations on a condition variable
+ + + + + +
QacDescription
mta-1769Condition variable '%1s' used with multiple mutexes.
+
POS54Rule_OptionalDetect and handle POSIX library errors
+ + + + + +
QacDescription
qac-3200'%s' returns a value which is not being used.
+
PRE00RecommendationPrefer inline or static functions to function-like macros
+ + + + + +
QacDescription
qac-3453A function could probably be used instead of this function-like macro.
+
PRE01RecommendationUse parentheses within macros around parameter names
+ + + + + +
QacDescription
qac-3410Macro parameter not enclosed in ().
+
PRE02RecommendationMacro replacement lists should be parenthesized
+ + + + + +
QacDescription
qac-3409The replacement list of function-like macro '%1s' is not enclosed in ().
+
PRE03RecommendationPrefer typedefs to defines for encoding non-pointer types
+ + + + + +
QacDescription
qac-3413Macro definition could be replaced by a typedef.
+
PRE04RecommendationDo not reuse a standard header file name
+ + + + + +
QacDescription
certccm-5001The header '%s' is a standard header file name.
+
PRE05RecommendationUnderstand macro replacement when concatenating tokens or performing stringification
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0341Using the stringify operator '#'.
qac-0342Using the glue operator '##'.
qac-0801[C] The '##' operator may not be the first token in a macro replacement list.
qac-0802[C] The '##' operator may not be the last token in a macro replacement list.
qac-0803[C] The '#' operator may only appear before a macro parameter.
qac-0811[C] The glue operator '##' may only appear in a '#define' preprocessing directive.
qac-0872[U] Result of '##' operator is not a legal preprocessing token.
qac-0880Using # and ## operators in the same macro definition.
qac-0881Using multiple ## operators in the same macro definition.
qac-0884Using multiple # operators in the same macro definition.
+
PRE06RecommendationEnclose header files in an inclusion guard
+ + + + + +
QacDescription
qac-0883Include file code is not protected against repeated inclusion
+
PRE07RecommendationAvoid using repeated question marks
+ + + + + +
QacDescription
qac-3601Trigraphs (??x) are an ISO feature.
+
PRE08RecommendationGuarantee that header file names are unique
+ + + + + +
QacDescription
certccm-5002The header '%s' file name shadows a previously included header.
+
PRE09RecommendationDo not replace secure functions with deprecated or obsolescent functions
+ + + + + +
QacDescription
certccm-5003The obsolete function '%s' will be used as a result of this macro expansion
+
PRE10RecommendationWrap multi-statement macros in a do-while loop
+ + + + + + + + + +
QacDescription
qac-3412Macro defines an unrecognized code-fragment.
qac-3458Macro defines a braced code statement block.
+
PRE11RecommendationDo not conclude macro definitions with a semicolon
+ + + + + +
QacDescription
qac-3412Macro defines an unrecognized code-fragment.
+
PRE12RecommendationDo not define unsafe macros
+ + + + + +
QacDescription
qac-3456Parameter '%1s' will be evaluated more than once when this macro is used.
+
PRE30RuleDo not create a universal character name through concatenation
+ + + + + +
QacDescription
qac-0905[U] Producing a universal character name through token concatenation is undefined.
+
PRE31RuleAvoid side effects in arguments to unsafe macros
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-3462Argument to macro '%s' appears to contain a side effect, but it is not used.
qac-3463Argument to macro '%s' contains a side effect that will not be evaluated at runtime.
qac-3464Argument to macro '%s' contains a side effect that will be evaluated more than once.
qac-3465Argument to macro '%s' contains a side effect that might not be evaluated at runtime.
qac-3466Variable argument list to macro '%s' appears to contain an expression with side effects.
qac-3467Variable argument list to macro '%s' appears to contain an expression with side effects that will be used more than once.
+
PRE32RuleDo not use preprocessor directives in invocations of function-like macros
+ + + + + +
QacDescription
qac-0853[U] Macro arguments contain a sequence of tokens that has the form of a preprocessing directive.
+
SIG00RecommendationMask signals handled by noninterruptible signal handlers
+ + + + + +
QacDescription
certccm-5019'%s' is being used.
+
SIG01RecommendationUnderstand implementation-specific details regarding signal handler persistence
+ + + + + +
QacDescription
certccm-5020'%s' is being used.
+
SIG30RuleCall only asynchronous-safe functions within signal handlers
+ + + + + + + + + +
QacDescription
qac-2028Signal handler '%1s' calls async-unsafe functions.
qac-2030The signal handler passed here might not be async-safe.
+
SIG31RuleDo not access shared objects in signal handlers
+ + + + + + + + + +
QacDescription
qac-2029Signal handler '%1s' accesses shared objects.
qac-2030The signal handler passed here might not be async-safe.
+
SIG34RuleDo not call signal() from within interruptible signal handlers
+ + + + + +
QacDescription
certccm-5021'%s' is being used.
+
SIG35RuleDo not return from a computational exception signal handler
+ + + + + + + + + + + + + +
QacDescription
qac-4846Definite: Signal handler returns from a computational exception.
qac-4847Apparent: Signal handler returns from a computational exception.
qac-4848Suspicious: Signal handler returns from a computational exception.
+
STR04RecommendationUse plain char for characters in the basic character set
+ + + + + + + + + + + + + +
QacDescription
qac-0432[C] Function argument is not of compatible pointer type.
qac-0674[C] Initializer for pointer is of incompatible type.
qac-0699[C] String literal used to initialize a pointer of incompatible type.
+
STR05RecommendationUse pointers to const when referring to string literals
+ + + + + + + + + +
QacDescription
qac-0752String literal passed as argument to function whose parameter is not a 'pointer to const'.
qac-0753String literal assigned to pointer which is not a 'pointer to const'.
+
STR06RecommendationDo not assume that strtok() leaves the parse string unchanged
+ + + + + +
QacDescription
certccm-5007'%s' is being used.
+
STR07RecommendationUse the bounds-checking interfaces for string manipulation
+ + + + + +
QacDescription
certccm-5008'%s' is being used.
+
STR09RecommendationDon't assume numeric values for expressions with type plain character
+ + + + + + + + + +
QacDescription
qac-2106Integral promotion : plain char promoted to signed int.
qac-2107Integral promotion : plain char promoted to unsigned int.
+
STR10RecommendationDo not concatenate different type of string literals
+ + + + + +
QacDescription
qac-0874[U] Character string literal and wide character string literal are adjacent.
+
STR11RecommendationDo not specify the bound of a character array initialized with a string literal
+ + + + + +
QacDescription
qac-1312The array being initialized is not large enough to hold a terminating null byte for the string initializer.
+
STR30RuleDo not attempt to modify string literals
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-0556[C] Left operand of assignment must be a modifiable object.
qac-0752String literal passed as argument to function whose parameter is not a 'pointer to const'.
qac-0753String literal assigned to pointer which is not a 'pointer to const'.
qac-0754[U] String literal is being modified.
+
STR31RuleGuarantee that storage for strings has sufficient space for character data and the null terminator
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2840Constant: Dereference of an invalid pointer value.
qac-2841Definite: Dereference of an invalid pointer value.
qac-2842Apparent: Dereference of an invalid pointer value.
qac-2843Suspicious: Dereference of an invalid pointer value.
qac-2845Constant: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2846Definite: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2847Apparent: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2848Suspicious: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2930Constant: Computing an invalid pointer value.
qac-2931Definite: Computing an invalid pointer value.
qac-2932Apparent: Computing an invalid pointer value.
qac-2933Suspicious: Computing an invalid pointer value.
qac-2935Constant: Dereference of an invalid char pointer value.
qac-2936Definite: Dereference of an invalid char pointer value.
qac-2937Apparent: Dereference of an invalid char pointer value.
qac-2938Suspicious: Dereference of an invalid char pointer value.
certccm-5009'%s' is being used.
certccm-5038'%s' is being used.
+
STR32RuleDo not pass a non-null-terminated character sequence to a library function that expects a string
+ + + + + + + + + + + + + +
QacDescription
qac-2835Constant: Non-null terminated string used in a string function.
qac-2836Definite: Non-null terminated string used in a string function.
qac-2839Possible: Non-null terminated string used in a string function.
+
STR34RuleCast characters to unsigned char before converting to larger integer sizes
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2140Implicit conversion from plain char to wider signed integer type.
qac-2141Implicit conversion from plain char to wider unsigned integer type.
qac-2143Implicit conversion from plain char to enum type.
qac-2144Implicit conversion from signed char to wider signed integer type.
qac-2145Implicit conversion from signed char to wider unsigned integer type.
qac-2147Implicit conversion from signed char to enum type.
qac-2148Explicit conversion from plain char to wider signed integer type.
qac-2149Explicit conversion from plain char to wider unsigned integer type.
qac-2151Explicit conversion from plain char to enum type.
qac-2152Explicit conversion from signed char to wider signed integer type.
qac-2153Explicit conversion from signed char to wider unsigned integer type.
qac-2155Explicit conversion from signed char to enum type.
+
STR37RuleArguments to character-handling functions must be representable as an unsigned char
+ + + + + + + + + +
QacDescription
qac-4413An expression of 'essentially character' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4414An expression of 'essentially character' type (%1s) is being converted to unsigned type, '%2s' on assignment.
+
STR38RuleDo not confuse narrow and wide character strings and functions
+ + + + + +
QacDescription
qac-0432[C] Function argument is not of compatible pointer type.
+
+
+
+ +This section targets to provide an overview of Guidelines Recategorization Plan. +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GuidelineDescriptionCategoryRevised Category
ARR02Explicitly specify array bounds, even if implicitly defined by an initializerRecommendationRecommendation
ARR30Do not form or use out-of-bounds pointers or array subscriptsRuleRule
ARR32Ensure size arguments for variable length arrays are in a valid rangeRuleRule
ARR36Do not subtract or compare two pointers that do not refer to the same arrayRuleRule
ARR37Do not add or subtract an integer to a pointer to a non-array objectRuleRule
ARR38Guarantee that library functions do not form invalid pointersRuleRule
ARR39Do not add or subtract a scaled integer to a pointerRuleRule
CON30Clean up thread-specific storageRuleRule
CON31Do not destroy a mutex while it is lockedRuleRule
CON32Prevent data races when accessing bit-fields from multiple threadsRuleRule
CON33Avoid race conditions when using library functionsRuleRule
CON34Declare objects shared between threads with appropriate storage durationsRuleRule
CON35Avoid deadlock by locking in a predefined orderRuleRule
CON36Wrap functions that can spuriously wake up in a loopRuleRule
CON37Do not call signal() in a multithreaded programRuleRule
CON38Preserve thread safety and liveness when using condition variablesRuleRule
CON39Do not join or detach a thread that was previously joined or detachedRuleRule
CON40Do not refer to an atomic variable twice in an expressionRuleRule
CON41Wrap functions that can fail spuriously in a loopRuleRule
CON43Do not allow data races in multithreaded codeRuleRule
DCL00Const-qualify immutable objectsRecommendationRecommendation
DCL01Do not reuse variable names in subscopesRecommendationRecommendation
DCL05Use typedefs of non-pointer types onlyRecommendationDisapplied
DCL06Use meaningful symbolic constants to represent literal valuesRecommendationRecommendation
DCL07Include the appropriate type information in function declaratorsRecommendationRecommendation
DCL10Maintain the contract between the writer and caller of variadic functionsRecommendationRecommendation
DCL11Understand the type issues associated with variadic functionsRecommendationRecommendation
DCL13Declare function parameters that are pointers to values not changed by the function as constRecommendationRecommendation
DCL15Declare file-scope objects or functions that do not need external linkage as staticRecommendationRecommendation
DCL16Use 'L', not 'l', to indicate a long valueRecommendationRecommendation
DCL18Do not begin integer constants with 0 when specifying a decimal valueRecommendationRecommendation
DCL19Minimize the scope of variables and functionsRecommendationRecommendation
DCL20Explicitly specify void when a function accepts no argumentsRecommendationRecommendation
DCL21Understand the storage of compound literalsRecommendationRecommendation
DCL23Guarantee that mutually visible identifiers are uniqueRecommendationRecommendation
DCL30Declare objects with appropriate storage durationsRuleRule
DCL31Declare identifiers before using themRuleRule
DCL36Do not declare an identifier with conflicting linkage classificationsRuleRule
DCL37Do not declare or define a reserved identifierRuleRule
DCL38Use the correct syntax when declaring a flexible array memberRuleRule
DCL39Avoid information leakage when passing a structure across a trust boundaryRuleRule
DCL40Do not create incompatible declarations of the same function or objectRuleRule
DCL41Do not declare variables inside a switch statement before the first case labelRuleRule
ENV03Sanitize the environment when invoking external programsRecommendationRecommendation
ENV30Do not modify the object referenced by the return value of certain functionsRuleRule
ENV31Do not rely on an environment pointer following an operation that may invalidate itRuleRule
ENV32All exit handlers must return normallyRuleRule
ENV33Do not call system()RuleRule
ENV34Do not store pointers returned by certain functionsRuleRule
ERR30Set errno to zero before calling a library function known to set errno, and check errno only after the function returns a value indicating failureRuleRule
ERR32Do not rely on indeterminate values of errnoRuleRule
ERR33Detect and handle standard library errorsRuleDisapplied
ERR34Detect errors when converting a string to a numberRuleRule
EXP00Use parentheses for precedence of operationRecommendationRecommendation
EXP02Be aware of the short-circuit behavior of the logical AND and OR operatorsRecommendationRecommendation
EXP03Do not assume the size of a structure is the sum of the sizes of its membersRecommendationRecommendation
EXP05Do not cast away a const qualificationRecommendationRecommendation
EXP07Do not diminish the benefits of constants by assuming their values in expressionsRecommendationRecommendation
EXP08Ensure pointer arithmetic is used correctlyRecommendationRecommendation
EXP10Do not depend on the order of evaluation of subexpressions or the order in which side effects take placeRecommendationRecommendation
EXP11Do not make assumptions regarding the layout of structures with bit-fieldsRecommendationRecommendation
EXP12Do not ignore values returned by functionsRecommendationDisapplied
EXP13Treat relational and equality operators as if they were nonassociativeRecommendationRecommendation
EXP15Do not place a semicolon on the same line as an if, for, or while statementRecommendationDisapplied
EXP16Do not compare function pointers to constant valuesRecommendationRecommendation
EXP19Use braces for the body of an if, for, or while statementRecommendationRecommendation
EXP20Perform explicit tests to determine success, true and false, and equalityRecommendationRecommendation
EXP30Do not depend on the order of evaluation for side effectsRuleRule
EXP32Do not access a volatile object through a nonvolatile referenceRuleRule
EXP33Do not read uninitialized memoryRuleRule
EXP34Do not dereference null pointersRuleRule
EXP35Do not modify objects with temporary lifetimeRuleRule
EXP36Do not cast pointers into more strictly aligned pointer typesRuleRule
EXP37Call functions with the correct number and type of argumentsRuleRule
EXP39Do not access a variable through a pointer of an incompatible typeRuleRule
EXP40Do not modify constant objectsRuleRule
EXP42Do not compare padding dataRuleRule
EXP43Avoid undefined behavior when using restrict-qualified pointersRuleRule
EXP44Do not rely on side effects in operands to sizeof, _Alignof, or _GenericRuleRule
EXP45Do not perform assignments in selection statementsRuleRule
EXP46Do not use a bitwise operator with a Boolean-like operandRuleRule
EXP47Do not call va_arg with an argument of the incorrect typeRuleRule
FIO01Be careful using functions that use file names for identificationRecommendationRecommendation
FIO03Do not make assumptions about fopen() and file creationRecommendationRecommendation
FIO06Create files with appropriate access permissionsRecommendationRecommendation
FIO08Take care when calling remove() on an open fileRecommendationRecommendation
FIO10Take care when using the rename() functionRecommendationRecommendation
FIO21Do not create temporary files in shared directoriesRecommendationRecommendation
FIO30Exclude user input from format stringsRuleRule
FIO32Do not perform operations on devices that are only appropriate for filesRuleRule
FIO34Distinguish between characters read from a file and EOF or WEOFRuleRule
FIO37Do not assume that fgets() or fgetws() returns a nonempty string when successfulRuleRule
FIO38Do not copy a FILE objectRuleRule
FIO39Do not alternately input and output from a stream without an intervening flush or positioning callRuleRule
FIO40Reset strings on fgets() or fgetws() failureRuleRule
FIO41Do not call getc(), putc(), getwc(), or putwc() with a stream argument that has side effectsRuleRule
FIO42Close files when they are no longer neededRuleRule
FIO44Only use values for fsetpos() that are returned from fgetpos()RuleRule
FIO45Avoid TOCTOU race conditions while accessing filesRuleRule
FIO46Do not access a closed fileRuleRule
FIO47Use valid format stringsRuleRule
FLP02Avoid using floating-point numbers when precise computation is neededRecommendationRecommendation
FLP06Convert integers to floating point for floating point operationsRecommendationRecommendation
FLP30Do not use floating-point variables as loop countersRuleRule
FLP32Prevent or detect domain and range errors in math functionsRuleRule
FLP34Ensure that floating-point conversions are within range of the new typeRuleRule
FLP36Preserve precision when converting integral values to floating-point typeRuleRule
FLP37Do not use object representations to compare floating-point valuesRuleRule
INT02Understand integer conversion rulesRecommendationRecommendation
INT04Enforce limits on integer values originating from tainted sourcesRecommendationRecommendation
INT05Do not use input functions to convert character data if they cannot handle all possible inputsRecommendationRecommendation
INT07Use only explicitly signed or unsigned char type for numeric valuesRecommendationRecommendation
INT08Verify that all integer values are in rangeRecommendationRecommendation
INT09Ensure enumeration constants map to unique valuesRecommendationRecommendation
INT10Do not assume a positive remainder when using the % operatorRecommendationRecommendation
INT12Do not make assumptions about the type of a plain int bit-field when used in an expressionRecommendationRecommendation
INT13Use bitwise operators only on unsigned operandsRecommendationRecommendation
INT16Do not make assumptions about representation of signed integersRecommendationRecommendation
INT18Evaluate integer expressions in a larger size before comparing or assigning to that sizeRecommendationRecommendation
INT30Ensure that unsigned integer operations do not wrapRuleRule
INT31Ensure that integer conversions do not result in lost or misinterpreted dataRuleRule
INT32Ensure that operations on signed integers do not result in overflowRuleRule
INT33Ensure that division and remainder operations do not result in divide-by-zero errorsRuleRule
INT34Do not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operandRuleRule
INT35Use correct integer precisionsRuleRule
INT36Converting a pointer to integer or integer to pointerRuleRule
MEM02Immediately cast the result of a memory allocation function call into a pointer to the allocated typeRecommendationRecommendation
MEM03Clear sensitive information stored in reusable resourcesRecommendationRecommendation
MEM05Avoid large stack allocationsRecommendationRecommendation
MEM30Do not access freed memoryRuleRule
MEM31Free dynamically allocated memory when no longer neededRuleRule
MEM33Allocate and copy structures containing a flexible array member dynamicallyRuleRule
MEM34Only free memory allocated dynamicallyRuleRule
MEM35Allocate sufficient memory for an objectRuleRule
MEM36Do not modify the alignment of objects by calling realloc()RuleRule
MSC01Strive for logical completenessRecommendationRecommendation
MSC04Use comments consistently and in a readable fashionRecommendationRecommendation
MSC07Detect and remove dead codeRecommendationRecommendation
MSC09Character encoding: Use subset of ASCII for safetyRecommendationRecommendation
MSC12Detect and remove code that has no effect or is never executedRecommendationRecommendation
MSC13Detect and remove unused valuesRecommendationRecommendation
MSC14Do not introduce unnecessary platform dependenciesRecommendationRecommendation
MSC15Do not depend on undefined behaviorRecommendationRecommendation
MSC17Finish every set of statements associated with a case label with a break statementRecommendationRecommendation
MSC20Do not use a switch statement to transfer control into a complex blockRecommendationRecommendation
MSC30Do not use the rand() function for generating pseudorandom numbersRuleRule
MSC32Properly seed pseudorandom number generatorsRuleRule
MSC33Do not pass invalid data to the asctime() functionRuleRule
MSC37Ensure that control never reaches the end of a non-void functionRuleRule
MSC38Do not treat a predefined identifier as an object if it might only be implemented as a macroRuleRule
MSC39Do not call va_arg() on a va_list that has an indeterminate valueRuleRule
MSC40Do not violate constraintsRuleRule
MSC41Never hard code sensitive informationRuleRule
POS30Use the readlink() function properlyRule_OptionalRule_Optional
POS33Do not use vfork()Rule_OptionalRule_Optional
POS34Do not call putenv() with a pointer to an automatic variable as the argumentRule_OptionalRule_Optional
POS35Avoid race conditions while checking for the existence of a symbolic linkRule_OptionalRule_Optional
POS36Observe correct revocation order while relinquishing privilegesRule_OptionalRule_Optional
POS37Ensure that privilege relinquishment is successfulRule_OptionalRule_Optional
POS38Beware of race conditions when using fork and file descriptorsRule_OptionalRule_Optional
POS39Use the correct byte ordering when transferring data between systemsRule_OptionalRule_Optional
POS44Do not use signals to terminate threadsRule_OptionalRule_Optional
POS47Do not use threads that can be canceled asynchronouslyRule_OptionalRule_Optional
POS48Do not unlock or destroy another POSIX thread's mutexRule_OptionalRule_Optional
POS49When data must be accessed by multiple threads, provide a mutex and guarantee no adjacent data is also accessedRule_OptionalRule_Optional
POS50Declare objects shared between POSIX threads with appropriate storage durationsRule_OptionalRule_Optional
POS51Avoid deadlock with POSIX threads by locking in predefined orderRule_OptionalRule_Optional
POS52Do not perform operations that can block while holding a POSIX lockRule_OptionalRule_Optional
POS53Do not use more than one mutex for concurrent waiting operations on a condition variableRule_OptionalRule_Optional
POS54Detect and handle POSIX library errorsRule_OptionalDisapplied
PRE00Prefer inline or static functions to function-like macrosRecommendationDisapplied
PRE01Use parentheses within macros around parameter namesRecommendationRecommendation
PRE02Macro replacement lists should be parenthesizedRecommendationRecommendation
PRE03Prefer typedefs to defines for encoding non-pointer typesRecommendationRecommendation
PRE04Do not reuse a standard header file nameRecommendationRecommendation
PRE05Understand macro replacement when concatenating tokens or performing stringificationRecommendationRecommendation
PRE06Enclose header files in an inclusion guardRecommendationRecommendation
PRE07Avoid using repeated question marksRecommendationRecommendation
PRE08Guarantee that header file names are uniqueRecommendationDisapplied
PRE09Do not replace secure functions with deprecated or obsolescent functionsRecommendationRecommendation
PRE10Wrap multi-statement macros in a do-while loopRecommendationRecommendation
PRE11Do not conclude macro definitions with a semicolonRecommendationDisapplied
PRE12Do not define unsafe macrosRecommendationDisapplied
PRE30Do not create a universal character name through concatenationRuleRule
PRE31Avoid side effects in arguments to unsafe macrosRuleRule
PRE32Do not use preprocessor directives in invocations of function-like macrosRuleRule
SIG00Mask signals handled by noninterruptible signal handlersRecommendationRecommendation
SIG01Understand implementation-specific details regarding signal handler persistenceRecommendationRecommendation
SIG30Call only asynchronous-safe functions within signal handlersRuleRule
SIG31Do not access shared objects in signal handlersRuleRule
SIG34Do not call signal() from within interruptible signal handlersRuleRule
SIG35Do not return from a computational exception signal handlerRuleRule
STR04Use plain char for characters in the basic character setRecommendationRecommendation
STR05Use pointers to const when referring to string literalsRecommendationRecommendation
STR06Do not assume that strtok() leaves the parse string unchangedRecommendationRecommendation
STR07Use the bounds-checking interfaces for string manipulationRecommendationRecommendation
STR09Don't assume numeric values for expressions with type plain characterRecommendationRecommendation
STR10Do not concatenate different type of string literalsRecommendationRecommendation
STR11Do not specify the bound of a character array initialized with a string literalRecommendationRecommendation
STR30Do not attempt to modify string literalsRuleRule
STR31Guarantee that storage for strings has sufficient space for character data and the null terminatorRuleRule
STR32Do not pass a non-null-terminated character sequence to a library function that expects a stringRuleRule
STR34Cast characters to unsigned char before converting to larger integer sizesRuleRule
STR37Arguments to character-handling functions must be representable as an unsigned charRuleRule
STR38Do not confuse narrow and wide character strings and functionsRuleRule
+
+
+ +This section targets to provide an overview of Guidelines Compliance Summary. +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GuidelineCategoryDescriptionCompliance
ARR02RecommendationExplicitly specify array bounds, even if implicitly defined by an initializerCompliant
ARR30RuleDo not form or use out-of-bounds pointers or array subscriptsCompliant
ARR32RuleEnsure size arguments for variable length arrays are in a valid rangeCompliant
ARR36RuleDo not subtract or compare two pointers that do not refer to the same arrayCompliant
ARR37RuleDo not add or subtract an integer to a pointer to a non-array objectCompliant
ARR38RuleGuarantee that library functions do not form invalid pointersCompliant
ARR39RuleDo not add or subtract a scaled integer to a pointerCompliant
CON30RuleClean up thread-specific storageCompliant
CON31RuleDo not destroy a mutex while it is lockedCompliant
CON32RulePrevent data races when accessing bit-fields from multiple threadsCompliant
CON33RuleAvoid race conditions when using library functionsCompliant
CON34RuleDeclare objects shared between threads with appropriate storage durationsCompliant
CON35RuleAvoid deadlock by locking in a predefined orderCompliant
CON36RuleWrap functions that can spuriously wake up in a loopCompliant
CON37RuleDo not call signal() in a multithreaded programCompliant
CON38RulePreserve thread safety and liveness when using condition variablesCompliant
CON39RuleDo not join or detach a thread that was previously joined or detachedCompliant
CON40RuleDo not refer to an atomic variable twice in an expressionCompliant
CON41RuleWrap functions that can fail spuriously in a loopCompliant
CON43RuleDo not allow data races in multithreaded codeCompliant
DCL00RecommendationConst-qualify immutable objectsCompliant with deviations:
+
+ + + + + + + + + +
QacDescription
qac-3204The variable '%s' is only set once and so it could be declared with the 'const' qualifier.
qac-3227The parameter '%s' is never modified and so it could be declared with the 'const' qualifier.
+
DCL01RecommendationDo not reuse variable names in subscopesCompliant
DCL05RecommendationUse typedefs of non-pointer types onlyDisapplied
DCL06RecommendationUse meaningful symbolic constants to represent literal valuesCompliant with deviations:
+
+ + + + + + + + + +
QacDescription
qac-3120Hard-coded 'magic' integer constant, '%1s'.
qac-3132Hard coded 'magic' number, '%1s', used to define the size of an array.
+
DCL07RecommendationInclude the appropriate type information in function declaratorsCompliant with deviations:
+
+ + + + + +
QacDescription
qac-3450Function '%s', with internal linkage, is being defined without a previous declaration.
+
DCL10RecommendationMaintain the contract between the writer and caller of variadic functionsCompliant
DCL11RecommendationUnderstand the type issues associated with variadic functionsCompliant
DCL13RecommendationDeclare function parameters that are pointers to values not changed by the function as constCompliant
DCL15RecommendationDeclare file-scope objects or functions that do not need external linkage as staticCompliant
DCL16RecommendationUse 'L', not 'l', to indicate a long valueCompliant
DCL18RecommendationDo not begin integer constants with 0 when specifying a decimal valueCompliant
DCL19RecommendationMinimize the scope of variables and functionsCompliant with deviations:
+
+ + + + + + + + + + + + + +
QacDescription
qac-3210The global identifier '%1s' is declared here but is not used in this translation unit.
rcma-1505The function '%1s' is only referenced in the translation unit where it is defined.
rcma-1532The function '%1s' is only referenced in one translation unit - but not the one in which it is defined.
+
DCL20RecommendationExplicitly specify void when a function accepts no argumentsCompliant
DCL21RecommendationUnderstand the storage of compound literalsCompliant
DCL23RecommendationGuarantee that mutually visible identifiers are uniqueCompliant with deviations:
+
+ + + + + + + + + +
QacDescription
qac-0776[L] External identifier matches other external identifier(s) (e.g. '%1s') in first 6 characters - program does not conform strictly to ISO:C90.
qac-0778[L] Identifier matches other identifier(s) (e.g. '%1s') in first 31 characters - program does not conform strictly to ISO:C90.
+
DCL30RuleDeclare objects with appropriate storage durationsCompliant
DCL31RuleDeclare identifiers before using themCompliant
DCL36RuleDo not declare an identifier with conflicting linkage classificationsCompliant
DCL37RuleDo not declare or define a reserved identifierCompliant
DCL38RuleUse the correct syntax when declaring a flexible array memberCompliant
DCL39RuleAvoid information leakage when passing a structure across a trust boundaryCompliant
DCL40RuleDo not create incompatible declarations of the same function or objectCompliant with deviations:
+
+ + + + + + + + + +
QacDescription
qac-0776[L] External identifier matches other external identifier(s) (e.g. '%1s') in first 6 characters - program does not conform strictly to ISO:C90.
qac-0778[L] Identifier matches other identifier(s) (e.g. '%1s') in first 31 characters - program does not conform strictly to ISO:C90.
+
DCL41RuleDo not declare variables inside a switch statement before the first case labelCompliant
ENV03RecommendationSanitize the environment when invoking external programsCompliant
ENV30RuleDo not modify the object referenced by the return value of certain functionsCompliant
ENV31RuleDo not rely on an environment pointer following an operation that may invalidate itCompliant
ENV32RuleAll exit handlers must return normallyCompliant
ENV33RuleDo not call system()Compliant
ENV34RuleDo not store pointers returned by certain functionsCompliant
ERR30RuleSet errno to zero before calling a library function known to set errno, and check errno only after the function returns a value indicating failureCompliant
ERR32RuleDo not rely on indeterminate values of errnoCompliant
ERR33RuleDetect and handle standard library errorsDisapplied
ERR34RuleDetect errors when converting a string to a numberCompliant
EXP00RecommendationUse parentheses for precedence of operationCompliant
EXP02RecommendationBe aware of the short-circuit behavior of the logical AND and OR operatorsCompliant
EXP03RecommendationDo not assume the size of a structure is the sum of the sizes of its membersCompliant
EXP05RecommendationDo not cast away a const qualificationCompliant
EXP07RecommendationDo not diminish the benefits of constants by assuming their values in expressionsCompliant with deviations:
+
+ + + + + + + + + +
QacDescription
qac-3120Hard-coded 'magic' integer constant, '%1s'.
qac-3132Hard coded 'magic' number, '%1s', used to define the size of an array.
+
EXP08RecommendationEnsure pointer arithmetic is used correctlyCompliant
EXP10RecommendationDo not depend on the order of evaluation of subexpressions or the order in which side effects take placeCompliant
EXP11RecommendationDo not make assumptions regarding the layout of structures with bit-fieldsCompliant with deviations:
+
+ + + + + +
QacDescription
qac-0751Casting to char pointer type.
+
EXP12RecommendationDo not ignore values returned by functionsDisapplied
EXP13RecommendationTreat relational and equality operators as if they were nonassociativeCompliant
EXP15RecommendationDo not place a semicolon on the same line as an if, for, or while statementDisapplied
EXP16RecommendationDo not compare function pointers to constant valuesCompliant
EXP19RecommendationUse braces for the body of an if, for, or while statementCompliant
EXP20RecommendationPerform explicit tests to determine success, true and false, and equalityCompliant
EXP30RuleDo not depend on the order of evaluation for side effectsCompliant
EXP32RuleDo not access a volatile object through a nonvolatile referenceCompliant
EXP33RuleDo not read uninitialized memoryCompliant
EXP34RuleDo not dereference null pointersCompliant
EXP35RuleDo not modify objects with temporary lifetimeCompliant
EXP36RuleDo not cast pointers into more strictly aligned pointer typesCompliant
EXP37RuleCall functions with the correct number and type of argumentsCompliant
EXP39RuleDo not access a variable through a pointer of an incompatible typeCompliant with deviations:
+
+ + + + + +
QacDescription
qac-0751Casting to char pointer type.
+
EXP40RuleDo not modify constant objectsCompliant
EXP42RuleDo not compare padding dataCompliant
EXP43RuleAvoid undefined behavior when using restrict-qualified pointersCompliant
EXP44RuleDo not rely on side effects in operands to sizeof, _Alignof, or _GenericCompliant
EXP45RuleDo not perform assignments in selection statementsCompliant with deviations:
+
+ + + + + +
QacDescription
qac-3416Logical operation performed on expression with persistent side effects.
+
EXP46RuleDo not use a bitwise operator with a Boolean-like operandCompliant
EXP47RuleDo not call va_arg with an argument of the incorrect typeCompliant
FIO01RecommendationBe careful using functions that use file names for identificationCompliant
FIO03RecommendationDo not make assumptions about fopen() and file creationCompliant
FIO06RecommendationCreate files with appropriate access permissionsCompliant
FIO08RecommendationTake care when calling remove() on an open fileCompliant
FIO10RecommendationTake care when using the rename() functionCompliant
FIO21RecommendationDo not create temporary files in shared directoriesCompliant
FIO30RuleExclude user input from format stringsCompliant
FIO32RuleDo not perform operations on devices that are only appropriate for filesCompliant
FIO34RuleDistinguish between characters read from a file and EOF or WEOFCompliant
FIO37RuleDo not assume that fgets() or fgetws() returns a nonempty string when successfulCompliant
FIO38RuleDo not copy a FILE objectCompliant
FIO39RuleDo not alternately input and output from a stream without an intervening flush or positioning callCompliant
FIO40RuleReset strings on fgets() or fgetws() failureCompliant
FIO41RuleDo not call getc(), putc(), getwc(), or putwc() with a stream argument that has side effectsCompliant
FIO42RuleClose files when they are no longer neededCompliant
FIO44RuleOnly use values for fsetpos() that are returned from fgetpos()Compliant
FIO45RuleAvoid TOCTOU race conditions while accessing filesCompliant
FIO46RuleDo not access a closed fileCompliant
FIO47RuleUse valid format stringsCompliant
FLP02RecommendationAvoid using floating-point numbers when precise computation is neededCompliant
FLP06RecommendationConvert integers to floating point for floating point operationsCompliant
FLP30RuleDo not use floating-point variables as loop countersCompliant
FLP32RulePrevent or detect domain and range errors in math functionsCompliant
FLP34RuleEnsure that floating-point conversions are within range of the new typeCompliant
FLP36RulePreserve precision when converting integral values to floating-point typeCompliant
FLP37RuleDo not use object representations to compare floating-point valuesCompliant
INT02RecommendationUnderstand integer conversion rulesCompliant with deviations:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1251Suffixed integer constant causes implicit conversion of other operand.
qac-1290An integer constant of 'essentially signed' type is being converted to unsigned type on assignment.
qac-2100Integral promotion : unsigned char promoted to signed int.
qac-2101Integral promotion : unsigned short promoted to signed int.
qac-2105Integral promotion : signed short promoted to signed int.
qac-2109Integral promotion : _Bool promoted to signed int.
qac-4471A non-constant expression of 'essentially unsigned' type (%1s) is being passed to a function parameter of wider unsigned type, '%2s'.
+
INT04RecommendationEnforce limits on integer values originating from tainted sourcesCompliant
INT05RecommendationDo not use input functions to convert character data if they cannot handle all possible inputsCompliant
INT07RecommendationUse only explicitly signed or unsigned char type for numeric valuesCompliant
INT08RecommendationVerify that all integer values are in rangeCompliant
INT09RecommendationEnsure enumeration constants map to unique valuesCompliant
INT10RecommendationDo not assume a positive remainder when using the % operatorCompliant
INT12RecommendationDo not make assumptions about the type of a plain int bit-field when used in an expressionCompliant
INT13RecommendationUse bitwise operators only on unsigned operandsCompliant with deviations:
+
+ + + + + +
QacDescription
qac-4544A non-negative constant expression of 'essentially signed' type (%1s) is being used as the right-hand operand of this shift operator (%2s).
+
INT16RecommendationDo not make assumptions about representation of signed integersCompliant
INT18RecommendationEvaluate integer expressions in a larger size before comparing or assigning to that sizeCompliant
INT30RuleEnsure that unsigned integer operations do not wrapCompliant with deviations:
+
+ + + + + + + + + +
QacDescription
qac-3383Cannot identify wraparound guard for unsigned arithmetic expression.
qac-3384Cannot identify wraparound guard for dependent unsigned arithmetic expression.
+
INT31RuleEnsure that integer conversions do not result in lost or misinterpreted dataCompliant
INT32RuleEnsure that operations on signed integers do not result in overflowCompliant
INT33RuleEnsure that division and remainder operations do not result in divide-by-zero errorsCompliant
INT34RuleDo not shift an expression by a negative number of bits or by greater than or equal to the number of bits that exist in the operandCompliant
INT35RuleUse correct integer precisionsCompliant
INT36RuleConverting a pointer to integer or integer to pointerCompliant with deviations:
+
+ + + + + +
QacDescription
qac-0306[I] Cast between a pointer to object and an integral type.
+
MEM02RecommendationImmediately cast the result of a memory allocation function call into a pointer to the allocated typeCompliant
MEM03RecommendationClear sensitive information stored in reusable resourcesCompliant
MEM05RecommendationAvoid large stack allocationsCompliant
MEM30RuleDo not access freed memoryCompliant
MEM31RuleFree dynamically allocated memory when no longer neededCompliant
MEM33RuleAllocate and copy structures containing a flexible array member dynamicallyCompliant
MEM34RuleOnly free memory allocated dynamicallyCompliant
MEM35RuleAllocate sufficient memory for an objectCompliant
MEM36RuleDo not modify the alignment of objects by calling realloc()Compliant
MSC01RecommendationStrive for logical completenessCompliant with deviations:
+
+ + + + + +
QacDescription
qac-2000No 'else' clause exists for this 'if' statement.
+
MSC04RecommendationUse comments consistently and in a readable fashionCompliant
MSC07RecommendationDetect and remove dead codeCompliant with deviations:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2881The code in this 'default' clause is unreachable.
qac-2982This assignment is redundant. The value of this object is never used before being modified.
qac-2983This assignment is redundant. The value of this object is never subsequently used.
qac-2984This operation is redundant. The value of the result is always '%1s'.
qac-2985This operation is redundant. The value of the result is always that of the left-hand operand.
qac-2986This operation is redundant. The value of the result is always that of the right-hand operand.
qac-3205The identifier '%1s' is not used and could be removed.
qac-3210The global identifier '%1s' is declared here but is not used in this translation unit.
rcma-1503The function '%1s' is defined but is not used within this project.
+
MSC09RecommendationCharacter encoding: Use subset of ASCII for safetyCompliant
MSC12RecommendationDetect and remove code that has no effect or is never executedCompliant
MSC13RecommendationDetect and remove unused valuesCompliant with deviations:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2982This assignment is redundant. The value of this object is never used before being modified.
qac-2983This assignment is redundant. The value of this object is never subsequently used.
qac-2984This operation is redundant. The value of the result is always '%1s'.
qac-2985This operation is redundant. The value of the result is always that of the left-hand operand.
qac-2986This operation is redundant. The value of the result is always that of the right-hand operand.
qac-3205The identifier '%1s' is not used and could be removed.
+
MSC14RecommendationDo not introduce unnecessary platform dependenciesCompliant
MSC15RecommendationDo not depend on undefined behaviorCompliant
MSC17RecommendationFinish every set of statements associated with a case label with a break statementCompliant
MSC20RecommendationDo not use a switch statement to transfer control into a complex blockCompliant
MSC30RuleDo not use the rand() function for generating pseudorandom numbersCompliant
MSC32RuleProperly seed pseudorandom number generatorsCompliant
MSC33RuleDo not pass invalid data to the asctime() functionCompliant
MSC37RuleEnsure that control never reaches the end of a non-void functionCompliant
MSC38RuleDo not treat a predefined identifier as an object if it might only be implemented as a macroCompliant
MSC39RuleDo not call va_arg() on a va_list that has an indeterminate valueCompliant
MSC40RuleDo not violate constraintsCompliant
MSC41RuleNever hard code sensitive informationCompliant
POS30Rule_OptionalUse the readlink() function properlyCompliant
POS33Rule_OptionalDo not use vfork()Compliant
POS34Rule_OptionalDo not call putenv() with a pointer to an automatic variable as the argumentCompliant
POS35Rule_OptionalAvoid race conditions while checking for the existence of a symbolic linkCompliant
POS36Rule_OptionalObserve correct revocation order while relinquishing privilegesCompliant
POS37Rule_OptionalEnsure that privilege relinquishment is successfulCompliant
POS38Rule_OptionalBeware of race conditions when using fork and file descriptorsCompliant
POS39Rule_OptionalUse the correct byte ordering when transferring data between systemsCompliant
POS44Rule_OptionalDo not use signals to terminate threadsCompliant
POS47Rule_OptionalDo not use threads that can be canceled asynchronouslyCompliant
POS48Rule_OptionalDo not unlock or destroy another POSIX thread's mutexCompliant
POS49Rule_OptionalWhen data must be accessed by multiple threads, provide a mutex and guarantee no adjacent data is also accessedCompliant
POS50Rule_OptionalDeclare objects shared between POSIX threads with appropriate storage durationsCompliant
POS51Rule_OptionalAvoid deadlock with POSIX threads by locking in predefined orderCompliant
POS52Rule_OptionalDo not perform operations that can block while holding a POSIX lockCompliant
POS53Rule_OptionalDo not use more than one mutex for concurrent waiting operations on a condition variableCompliant
POS54Rule_OptionalDetect and handle POSIX library errorsDisapplied
PRE00RecommendationPrefer inline or static functions to function-like macrosDisapplied
PRE01RecommendationUse parentheses within macros around parameter namesCompliant
PRE02RecommendationMacro replacement lists should be parenthesizedCompliant
PRE03RecommendationPrefer typedefs to defines for encoding non-pointer typesCompliant
PRE04RecommendationDo not reuse a standard header file nameCompliant
PRE05RecommendationUnderstand macro replacement when concatenating tokens or performing stringificationCompliant
PRE06RecommendationEnclose header files in an inclusion guardCompliant
PRE07RecommendationAvoid using repeated question marksCompliant
PRE08RecommendationGuarantee that header file names are uniqueDisapplied
PRE09RecommendationDo not replace secure functions with deprecated or obsolescent functionsCompliant
PRE10RecommendationWrap multi-statement macros in a do-while loopCompliant with deviations:
+
+ + + + + +
QacDescription
qac-3412Macro defines an unrecognized code-fragment.
+
PRE11RecommendationDo not conclude macro definitions with a semicolonDisapplied
PRE12RecommendationDo not define unsafe macrosDisapplied
PRE30RuleDo not create a universal character name through concatenationCompliant
PRE31RuleAvoid side effects in arguments to unsafe macrosCompliant
PRE32RuleDo not use preprocessor directives in invocations of function-like macrosCompliant
SIG00RecommendationMask signals handled by noninterruptible signal handlersCompliant
SIG01RecommendationUnderstand implementation-specific details regarding signal handler persistenceCompliant
SIG30RuleCall only asynchronous-safe functions within signal handlersCompliant
SIG31RuleDo not access shared objects in signal handlersCompliant
SIG34RuleDo not call signal() from within interruptible signal handlersCompliant
SIG35RuleDo not return from a computational exception signal handlerCompliant
STR04RecommendationUse plain char for characters in the basic character setCompliant
STR05RecommendationUse pointers to const when referring to string literalsCompliant
STR06RecommendationDo not assume that strtok() leaves the parse string unchangedCompliant
STR07RecommendationUse the bounds-checking interfaces for string manipulationCompliant
STR09RecommendationDon't assume numeric values for expressions with type plain characterCompliant
STR10RecommendationDo not concatenate different type of string literalsCompliant
STR11RecommendationDo not specify the bound of a character array initialized with a string literalCompliant
STR30RuleDo not attempt to modify string literalsCompliant
STR31RuleGuarantee that storage for strings has sufficient space for character data and the null terminatorCompliant
STR32RuleDo not pass a non-null-terminated character sequence to a library function that expects a stringCompliant
STR34RuleCast characters to unsigned char before converting to larger integer sizesCompliant
STR37RuleArguments to character-handling functions must be representable as an unsigned charCompliant
STR38RuleDo not confuse narrow and wide character strings and functionsCompliant
+
+
+ +This section targets to provide an overview of Deviation Permits.
+All the rules corresponding to the deviation permits are disabled inside Helix QAC and will not cause any violation or deviation in the Deviation records section below. +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GuidelineCategoryDescriptionRatioSub RulesCharacteristicsReason
DCL00RecommendationConst-qualify immutable objects2/5
+ + + + + + + + + +
QacDescription
qac-3204The variable '%s' is only set once and so it could be declared with the 'const' qualifier.
qac-3227The parameter '%s' is never modified and so it could be declared with the 'const' qualifier.
+
Other / AcceptedRecoBreach
DCL05RecommendationUse typedefs of non-pointer types only1/1 (all)
+ + + + + +
QacDescription
certccm-5004This typedef is applied to a pointer type.
+
Other / AcceptedRecoBreach
DCL06RecommendationUse meaningful symbolic constants to represent literal values2/6
+ + + + + + + + + +
QacDescription
qac-3120Hard-coded 'magic' integer constant, '%1s'.
qac-3132Hard coded 'magic' number, '%1s', used to define the size of an array.
+
Other / AcceptedRecoBreach
DCL07RecommendationInclude the appropriate type information in function declarators1/6
+ + + + + +
QacDescription
qac-3450Function '%s', with internal linkage, is being defined without a previous declaration.
+
Other / AcceptedRecoBreach
DCL19RecommendationMinimize the scope of variables and functions3/6
+ + + + + + + + + + + + + +
QacDescription
qac-3210The global identifier '%1s' is declared here but is not used in this translation unit.
rcma-1505The function '%1s' is only referenced in the translation unit where it is defined.
rcma-1532The function '%1s' is only referenced in one translation unit - but not the one in which it is defined.
+
Maintainability / ModularityRFAL Library contains functions which may be used by the user but are not called in the project used for checking compliance.
DCL23RecommendationGuarantee that mutually visible identifiers are unique2/8
+ + + + + + + + + +
QacDescription
qac-0776[L] External identifier matches other external identifier(s) (e.g. '%1s') in first 6 characters - program does not conform strictly to ISO:C90.
qac-0778[L] Identifier matches other identifier(s) (e.g. '%1s') in first 31 characters - program does not conform strictly to ISO:C90.
+
Maintainability / AnalysabilityProject is following C99 which defines 63 signficant characters.
DCL40RuleDo not create incompatible declarations of the same function or object2/5
+ + + + + + + + + +
QacDescription
qac-0776[L] External identifier matches other external identifier(s) (e.g. '%1s') in first 6 characters - program does not conform strictly to ISO:C90.
qac-0778[L] Identifier matches other identifier(s) (e.g. '%1s') in first 31 characters - program does not conform strictly to ISO:C90.
+
Maintainability / AnalysabilityProject is following C99 which defines 63 signficant characters.
ERR33RuleDetect and handle standard library errors1/1 (all)
+ + + + + +
QacDescription
qac-3200'%s' returns a value which is not being used.
+
Maintainability / AnalysabilityTreating the return codes of functions in all places without exception handling would make the code hard to read and maintain. Error checking has been reduced to the places where needed.
EXP07RecommendationDo not diminish the benefits of constants by assuming their values in expressions2/6
+ + + + + + + + + +
QacDescription
qac-3120Hard-coded 'magic' integer constant, '%1s'.
qac-3132Hard coded 'magic' number, '%1s', used to define the size of an array.
+
Other / AcceptedRecoBreach
EXP11RecommendationDo not make assumptions regarding the layout of structures with bit-fields1/2
+ + + + + +
QacDescription
qac-0751Casting to char pointer type.
+
Other / AcceptedRecoBreach +
0751-See EXP39 +
+
EXP12RecommendationDo not ignore values returned by functions1/1 (all)
+ + + + + +
QacDescription
qac-3200'%s' returns a value which is not being used.
+
Maintainability / AnalysabilitySee ERR33.
EXP15RecommendationDo not place a semicolon on the same line as an if, for, or while statement1/1 (all)
+ + + + + +
QacDescription
qac-3109Null statement follows other code on the same line.
+
Other / AcceptedRecoBreach
EXP39RuleDo not access a variable through a pointer of an incompatible type1/3
+ + + + + +
QacDescription
qac-0751Casting to char pointer type.
+
Other / NonMatchEXP39 states "Modifying a variable through a pointer of an incompatible type (other than unsigned char)". Therefore 0751 is disabled.
EXP45RuleDo not perform assignments in selection statements1/4
+ + + + + +
QacDescription
qac-3416Logical operation performed on expression with persistent side effects.
+
Other / NonMatchEXP45 is only targeting assignment inside expressions. 3416 is a considered an invalid mapping.
INT02RecommendationUnderstand integer conversion rules7/119
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1251Suffixed integer constant causes implicit conversion of other operand.
qac-1290An integer constant of 'essentially signed' type is being converted to unsigned type on assignment.
qac-2100Integral promotion : unsigned char promoted to signed int.
qac-2101Integral promotion : unsigned short promoted to signed int.
qac-2105Integral promotion : signed short promoted to signed int.
qac-2109Integral promotion : _Bool promoted to signed int.
qac-4471A non-constant expression of 'essentially unsigned' type (%1s) is being passed to a function parameter of wider unsigned type, '%2s'.
+
Other / AcceptedRecoBreachCode complies to MISRA restrictions for types and casts (Dir-1.1, Rule-1.1 ,10.1-10.8, 11.1-8) with documented exceptions. No further restrictions employed.
INT13RecommendationUse bitwise operators only on unsigned operands1/5
+ + + + + +
QacDescription
qac-4544A non-negative constant expression of 'essentially signed' type (%1s) is being used as the right-hand operand of this shift operator (%2s).
+
Other / AcceptedRecoBreach
INT30RuleEnsure that unsigned integer operations do not wrap2/8
+ + + + + + + + + +
QacDescription
qac-3383Cannot identify wraparound guard for unsigned arithmetic expression.
qac-3384Cannot identify wraparound guard for dependent unsigned arithmetic expression.
+
Maintainability / TestabilityNo apparent nor definite wraparound happening, checks for wraparound are omitted.
INT36RuleConverting a pointer to integer or integer to pointer1/9
+ + + + + +
QacDescription
qac-0306[I] Cast between a pointer to object and an integral type.
+
Maintainability / ModifiabilityUsing STM32 HAL already creates many violations. Also needed to do pointer arithmetic, calculating offsets inside a buffer.
MSC01RecommendationStrive for logical completeness1/3
+ + + + + +
QacDescription
qac-2000No 'else' clause exists for this 'if' statement.
+
Other / AcceptedRecoBreach
MSC07RecommendationDetect and remove dead code9/28
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2881The code in this 'default' clause is unreachable.
qac-2982This assignment is redundant. The value of this object is never used before being modified.
qac-2983This assignment is redundant. The value of this object is never subsequently used.
qac-2984This operation is redundant. The value of the result is always '%1s'.
qac-2985This operation is redundant. The value of the result is always that of the left-hand operand.
qac-2986This operation is redundant. The value of the result is always that of the right-hand operand.
qac-3205The identifier '%1s' is not used and could be removed.
qac-3210The global identifier '%1s' is declared here but is not used in this translation unit.
rcma-1503The function '%1s' is defined but is not used within this project.
+
Usability / User error protectionAll the violations were checked and fixing the violation would deteriorate robustness: Removing checks which are unnecessary at the given position, removing trailing iterator increment, etc. Also suppressed for MISRA Rule-2.2
MSC13RecommendationDetect and remove unused values6/14
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2982This assignment is redundant. The value of this object is never used before being modified.
qac-2983This assignment is redundant. The value of this object is never subsequently used.
qac-2984This operation is redundant. The value of the result is always '%1s'.
qac-2985This operation is redundant. The value of the result is always that of the left-hand operand.
qac-2986This operation is redundant. The value of the result is always that of the right-hand operand.
qac-3205The identifier '%1s' is not used and could be removed.
+
Usability / User error protectionAll the violations were checked and fixing the violation would deteriorate robustness: Removing checks which are unnecessary at the given position, removing trailing iterator increment, etc. Also suppressed for MISRA Rule-2.2
POS54Rule_OptionalDetect and handle POSIX library errors1/1 (all)
+ + + + + +
QacDescription
qac-3200'%s' returns a value which is not being used.
+
Maintainability / AnalysabilityOnly memcpy, memmove and memset are used which don't return errors. The more general 3200(already suppressed as part of ERR33) would only report other violations.
PRE00RecommendationPrefer inline or static functions to function-like macros1/1 (all)
+ + + + + +
QacDescription
qac-3453A function could probably be used instead of this function-like macro.
+
Performance / Resource utilizationSuppressed due to code optimization and efficiency. Compare MISRA Dir-4.9.
PRE08RecommendationGuarantee that header file names are unique1/1 (all)
+ + + + + +
QacDescription
certccm-5002The header '%s' file name shadows a previously included header.
+
Other / AcceptedRecoBreach
PRE10RecommendationWrap multi-statement macros in a do-while loop1/2
+ + + + + +
QacDescription
qac-3412Macro defines an unrecognized code-fragment.
+
Other / AcceptedRecoBreach
PRE11RecommendationDo not conclude macro definitions with a semicolon1/1 (all)
+ + + + + +
QacDescription
qac-3412Macro defines an unrecognized code-fragment.
+
Other / AcceptedRecoBreach
PRE12RecommendationDo not define unsafe macros1/1 (all)
+ + + + + +
QacDescription
qac-3456Parameter '%1s' will be evaluated more than once when this macro is used.
+
Other / AcceptedRecoBreach
+
+
+ +This section targets to provide an overview of Deviation Records. +
+
+
+ +

File: rfal/include/rfal_utils.h

+
+ + + + + + + + + +
LinesCountSuppressed QacsComment
1471
+ + + + +
certccm-5003The obsolete function '%s' will be used as a result of this macro expansion
+
CERT C 9 - string.h from Cosmic only provides functions with low qualified parameters
+

File: rfal/source/rfal_iso15693_2.c

+
+ + + + + + + + + +
LinesCountSuppressed QacsComment
5241
+ + + + +
qac-2911Definite: Wraparound in unsigned arithmetic operation.
+
CERT INT30 - Intentional underflow, part of the coding
+

File: rfal/source/rfal_isoDep.c

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
10271
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
7961
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
27311
+ + + + +
qac-0310Casting to different object pointer type.
+
MISRA 11.3 - Intentional safe cast to avoiding large buffer duplication
27941
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
2279-22801
+ + + + +
qac-0310Casting to different object pointer type.
+
MISRA 11.3 - Intentional safe cast to avoiding buffer duplication
13601
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
+

File: rfal/source/rfal_nfc.c

+
+ + + + + + + + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
19241
+ + + + +
qac-0310Casting to different object pointer type.
+
MISRA 11.3 - Intentional safe cast to avoiding large buffer duplication
2051
+ + + + +
qac-2880This code is unreachable.
+
MISRA 2.1 - Unreachable code due to configuration option being set/unset
21491
+ + + + +
qac-0310Casting to different object pointer type.
+
MISRA 11.3 - Intentional safe cast to avoiding large buffer duplication
+

File: rfal/source/rfal_nfcDep.c

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
16811
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
26891
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
16091
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
26301
+ + + + +
qac-0310Casting to different object pointer type.
+
MISRA 11.3 - Intentional safe cast to avoiding large buffer duplication
+

File: rfal/source/rfal_nfca.c

+
+ + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
7391
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
3141
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
+

File: rfal/source/rfal_t4t.c

+
+ + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
1361
+ + + + +
qac-2880This code is unreachable.
+
MISRA 2.1 - Unreachable code due to configuration option being set/unset
1271
+ + + + +
qac-2880This code is unreachable.
+
MISRA 2.1 - Unreachable code due to configuration option being set/unset
+

File: rfal/source/st25r3916/rfal_analogConfigTbl.h

+
+ + + + + + + + + +
LinesCountSuppressed QacsComment
404-4061
+ + + + +
qac-3674Array size defined implicitly by the number of initializers.
+
CERT ARR02 - Flexible array will be used with sizeof, on adding elements error-prone manual update of size would be required
+

File: rfal/source/st25r3916/rfal_dpoTbl.h

+
+ + + + + + + + + +
LinesCountSuppressed QacsComment
53-551
+ + + + +
qac-3674Array size defined implicitly by the number of initializers.
+
CERT ARR02 - Flexible array will be used with sizeof, on adding elements error-prone manual update of size would be required
+

File: rfal/source/st25r3916/rfal_rfst25r3916.c

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
20591
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
36371
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
20281
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
24021
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
20431
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
24771
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
21311
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
26721
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
21831
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
22611
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
25651
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
10551
+ + + + +
qac-2880This code is unreachable.
+
MISRA 2.1 - Inconsistently marked as unreachable code
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileRecommendationRuleTotal
rfal/source/st25r3916/rfal_rfst25r3916.c12012
rfal/source/st25r3916/rfal_dpoTbl.h101
rfal/source/rfal_t4t.c202
rfal/source/st25r3916/rfal_analogConfigTbl.h101
rfal/source/rfal_nfcDep.c415
rfal/source/rfal_nfca.c202
rfal/source/rfal_isoDep.c628
rfal/source/rfal_iso15693_2.c112
rfal/source/rfal_nfc.c325
rfal/include/rfal_utils.h101
Total33639
+ +
+
+Note: Qac messages can be mapped by more than one rule or group. In such case it will be counted several times. +
+
+
+ + +There are no duplicated suppressions. + +

File: common/firmware/STM/utils/Inc/utils.h

+
+ + + + + + + + + + + + +
LineUnused QacsComment
79
+ + + + +
qac-0431[C] Function argument points to a more heavily qualified type.
+
MISRA 1.1 - string.h from Cosmic only provides functions with low qualified parameters
81
+ + + + +
qac-0431[C] Function argument points to a more heavily qualified type.
+
MISRA 1.1 - string.h from Cosmic only provides functions with low qualified parameters
+

File: rfal/include/rfal_utils.h

+
+ + + + + + + + + + + + +
LineUnused QacsComment
148
+ + + + +
qac-0431[C] Function argument points to a more heavily qualified type.
+
MISRA 1.1 - string.h from Cosmic only provides functions with low qualified parameters
150
+ + + + +
qac-0431[C] Function argument points to a more heavily qualified type.
+
MISRA 1.1 - string.h from Cosmic only provides functions with low qualified parameters
+

File: rfal/source/rfal_isoDep.c

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LineUnused QacsComment
2564
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and above clamping of maxTxBR guarantee no invalid enum values to be created
2557
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and above clamping of maxTxBR guarantee no invalid enum values to be created
2185
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalIsoDepFSxI is guaranteed whithin 4bit range
2653
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and range of loop variable guarantee no invalid enum values to be created
2640
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and range of loop variable guarantee no invalid enum values to be created
416
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Members of the union will not be used concurrently, only one frame at a time
1400
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and above masks guarantee no invalid enum values to be created
+

File: rfal/source/rfal_nfc.c

+
+ + + + + + + + + + + + +
LineUnused QacsComment
77
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Members of the union will not be used concurrently, only one interface at a time
219
+ + + + +
qac-2880This code is unreachable.
+
MISRA 2.1 - Unreachable code due to configuration option being set/unset
+

File: rfal/source/rfal_nfcDep.c

+
+ + + + + + + +
LineUnused QacsComment
1930
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and definition of rfalNfcDepBRS2DSI guarantee no invalid enum values to be created
+

File: rfal/source/rfal_nfca.c

+
+ + + + + + + +
LineUnused QacsComment
746
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Guaranteed that no invalid enum values are created: see guard_eq_RFAL_NFCA_T2T, ....
+

File: rfal/source/rfal_nfcb.c

+
+ + + + + + + +
LineUnused QacsComment
545
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of rfalNfcbSlots and the limited loop guarantee that no invalid enum values are created.
+

File: rfal/source/st25r3916/rfal_analogConfigTbl.h

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
LineUnused QacsComment
717
+ + + + +
qac-3406Object/function '%s', with external linkage, has been defined in a header file.
+
MISRA 8.9 - Externally generated table included by the library
405
+
+
MISRA 8.9 - Externally generated table included by the library
716
+ + + + +
qac-3674Array size defined implicitly by the number of initializers.
+
CERT ARR02 - Flexible array will be used with sizeof, on adding elements error-prone manual update of size would be required
405
+ + + + +
qac-3406Object/function '%s', with external linkage, has been defined in a header file.
+
MISRA 8.6 - Externally generated table included by the library
717
+
+
MISRA 8.6 - Externally generated table included by the library
+

File: rfal/source/st25r3916/rfal_dpoTbl.h

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
LineUnused QacsComment
65
+ + + + +
qac-3674Array size defined implicitly by the number of initializers.
+
CERT ARR02 - Flexible array will be used with sizeof, on adding elements error-prone manual update of size would be required
66
+
+
MISRA 8.9 - Externally generated table included by the library
66
+ + + + +
qac-3406Object/function '%s', with external linkage, has been defined in a header file.
+
MISRA 8.6 - Externally generated table included by the library
54
+
+
MISRA 8.9 - Externally generated table included by the library
54
+ + + + +
qac-3406Object/function '%s', with external linkage, has been defined in a header file.
+
MISRA 8.6 - Externally generated table included by the library
+

File: rfal/source/st25r3916/rfal_rfst25r3916.c

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
LineUnused QacsComment
3657
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Guaranteed that no invalid enum values may be created. See also equalityGuard_RFAL_BR_106 ff.
3387
+ + + + +
qac-0759An object of union type has been defined.
+
MISRA 19.2 - Allocating Union where members are of the same type, just different names. Thus no problem can occur.
280
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Both members are of the same type, just different names. Thus no problem can occur.
1639
+ + + + +
5209No description
+
MISRA 4.9 - External function (sqrt()) requires double
3890
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Guaranteed that no invalid enum values may be created. See also equalityGuard_RFAL_BR_106 ff.
+
+
+ +There are no continuous suppressions by file. +
+
+ +Active Diagnostics refers to diagnostics that are not suppressed (note: no suppressed diagnostics have been taken into account for the calculation of information in this document). +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FilesActive DiagnosticsViolated RulesViolation CountCompliance Index
rfal/include/rfal_analogConfig.h000100.00
rfal/include/rfal_cd.h000100.00
rfal/include/rfal_chip.h000100.00
rfal/include/rfal_dpo.h000100.00
rfal/include/rfal_isoDep.h000100.00
rfal/include/rfal_nfc.h000100.00
rfal/include/rfal_nfcDep.h000100.00
rfal/include/rfal_nfca.h000100.00
rfal/include/rfal_nfcb.h000100.00
rfal/include/rfal_nfcf.h000100.00
rfal/include/rfal_nfcv.h000100.00
rfal/include/rfal_rf.h000100.00
rfal/include/rfal_st25tb.h000100.00
rfal/include/rfal_st25xv.h000100.00
rfal/include/rfal_t1t.h000100.00
rfal/include/rfal_t2t.h000100.00
rfal/include/rfal_t4t.h000100.00
rfal/include/rfal_utils.h000100.00
rfal/source/rfal_analogConfig.c000100.00
rfal/source/rfal_cd.c000100.00
rfal/source/rfal_cdHb.c000100.00
rfal/source/rfal_crc.c000100.00
rfal/source/rfal_crc.h000100.00
rfal/source/rfal_dpo.c000100.00
rfal/source/rfal_iso15693_2.c000100.00
rfal/source/rfal_iso15693_2.h000100.00
rfal/source/rfal_isoDep.c000100.00
rfal/source/rfal_nfc.c000100.00
rfal/source/rfal_nfcDep.c000100.00
rfal/source/rfal_nfca.c000100.00
rfal/source/rfal_nfcb.c000100.00
rfal/source/rfal_nfcf.c000100.00
rfal/source/rfal_nfcv.c000100.00
rfal/source/rfal_st25tb.c000100.00
rfal/source/rfal_st25xv.c000100.00
rfal/source/rfal_t1t.c000100.00
rfal/source/rfal_t2t.c000100.00
rfal/source/rfal_t4t.c000100.00
rfal/source/st25r3916/rfal_analogConfigTbl.h000100.00
rfal/source/st25r3916/rfal_dpoTbl.h000100.00
rfal/source/st25r3916/rfal_features.h000100.00
rfal/source/st25r3916/rfal_rfst25r3916.c000100.00
rfal/source/st25r3916/st25r3916.c000100.00
rfal/source/st25r3916/st25r3916.h000100.00
rfal/source/st25r3916/st25r3916_aat.c000100.00
rfal/source/st25r3916/st25r3916_aat.h000100.00
rfal/source/st25r3916/st25r3916_com.c000100.00
rfal/source/st25r3916/st25r3916_com.h000100.00
rfal/source/st25r3916/st25r3916_irq.c000100.00
rfal/source/st25r3916/st25r3916_irq.h000100.00
rfal/source/st25r3916/st25r3916_led.c000100.00
rfal/source/st25r3916/st25r3916_led.h000100.00
Total000100.00
+ +

+Nota: Calculation of Compliance Index
+The Compliance Index is the percentage of groups which have no messages in them.
+For each file it is calculated as follows:
+
+( Ntotal - Nerror ) / Ntotal x 100
+
+Ntotal is the total number of enforced rules (i.e. the number of rules that have at least one message mapped to it directly).
+Nerror is the number of rules for which messages appear in that file.
+The File Compliance Index is the mean of all the individual file compliances.
+ +
+
+
+
+ + diff --git a/core/embed/io/nfc/rfal/doc/ST25R3916_MisraComplianceReport.html b/core/embed/io/nfc/rfal/doc/ST25R3916_MisraComplianceReport.html new file mode 100644 index 0000000000..8e6841ddf0 --- /dev/null +++ b/core/embed/io/nfc/rfal/doc/ST25R3916_MisraComplianceReport.html @@ -0,0 +1,10580 @@ + + + + + +Helix QAC GEP/GCS/GRP Report + + + + +
+
+
+
+
+ +This section targets to provide an overview of Guidelines Enforcement Plan (GEP).
+
+This document will only focus on STMicroelectronics NFC RF Abstraction Layer (RFAL).
+
+The project has been designed to comply with the standard ISO/IEC 9899:1999 ([C99]). +
+
+

1. Tools version

+
+ + + + + + + + + + + + + + + + + +
ComponentVersionTargetOptions
rcma2.3.0C_CPP
m3cm2.6.0C
qac9.9.0C
    -d : __schedule_barrier=_ignore_semi
+
    -namelength : 63
+
    -prodoption : df::function_timeout=20000
+
+

2. Configuration

+This section targets to provide the main configuration options used for MISRA compliance.
+
+The project complies to [C99],
+the variables length has been consequently set to a dedicated value (cf 'namelength' option in table above). +
+
+Repository/components:
+
    +
  • MCU target:
  • +
      RFAL-ST25R3916

    +
  • RFAL informations:
  • +
      Path: rfal
    +
      Version: v3.0.0
    +
  • Project repositories SHA1:
  • +
      common: bd63699
    +
      nucleo: afd8cc1
    +
      rfal: 5b33cb9
    +
    +
+

3. Assistance/Enforcement

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GuidelineCategoryDescriptionAssistance/Enforcement Sub Rules
Dir-1.1RequiredAny implementation-defined behaviour on which the output of the program depends shall be documented and understood
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0202[I] '-' character in '[]' conversion specification is implementation defined.
qac-0240[I] This file contains the control-M character at the end of a line.
qac-0241[I] This file contains the control-Z character - was this transferred from a PC?
qac-0242[I] This file contains the control-M character in the middle of a line.
qac-0243[I] Treating an invalid character as whitespace.
qac-0246[E] Binary integer constants are a language extension.
qac-0284[I] Multiple character constants have implementation defined values.
qac-0285[I] Character constant contains character which is not a member of the basic source character set.
qac-0286[I] String literal contains character which is not a member of the basic source character set.
qac-0287[I] Header name contains character which is not a member of the basic source character set.
qac-0288[I] Source file '%s' has comments containing characters which are not members of the basic source character set.
qac-0289[I] Source file '%s' has preprocessing tokens containing characters which are not members of the basic source character set.
qac-0292[I] Source file '%s' has comments containing one of the characters '$', '@' or '`'.
qac-0299[I] Source file '%s' includes #pragma directives containing characters which are not members of the basic source character set.
qac-0314[I] Cast from a pointer to object type to a pointer to void.
qac-0315[I] Implicit conversion from a pointer to object type to a pointer to void.
qac-0497[E] Performing pointer arithmetic on pointer to void.
qac-0551[E] Cast may not operate on the left operand of the assignment operator.
qac-0581[I] Floating-point constant may be too small to be representable.
qac-0601[E] Function 'main()' is not of type 'int (void)' or 'int (int, char *[])'.
qac-0633[E] Empty structures and unions are a language extension.
qac-0634[I] Bit-field %1s in %2s has not been declared explicitly as unsigned or signed.
qac-0635[C99] Bit-field %1s in %2s has been declared with a type not explicitly supported.
qac-0660[C11] Defining an unnamed member in a struct or union.
qac-0662[C11] Accessing a member of an unnamed struct or union member.
qac-0830[E] Unrecognized text encountered after a preprocessing directive.
qac-0831[E] Use of '\\' in this '#include' line is a PC extension - this usage is non-portable.
qac-0840[E] Extra tokens at end of #include directive.
qac-0899[E] Unrecognized preprocessing directive has been ignored - assumed to be a language extension.
qac-0981[E] Redundant semicolon in 'struct' or 'union' member declaration list is a language extension.
qac-1001[E] '#include %s' is a VMS extension.
qac-1002[E] '%s' is not a legal identifier in ISO C.
qac-1003[E] '#%s' is a language extension for in-line assembler. All statements located between #asm and #endasm will be ignored.
qac-1006[E] This in-line assembler construct is a language extension. The code has been ignored.
qac-1008[E] '#%s' is not a legal ISO C preprocessing directive.
qac-1012[E] Use of a C++ reference type ('type &') will be treated as a language extension.
qac-1014[E] Non-standard type specifier - this will be treated as a language extension.
qac-1015[E] '%s' is not a legal keyword in ISO C - this will be treated as a language extension.
qac-1019[E] '@ address' is not supported in ISO C - this will be treated as a language extension.
qac-1020[E] '__typeof__' is not supported in ISO C, and is treated as a language extension.
qac-1021[E] A statement expression is not supported in ISO C, and is treated as a language extension.
qac-1022[E] '__alignof__' is a language extension. It is mapped to the standard '_Alignof' operator.
qac-1026[E] The indicated @word construct has been ignored.
qac-1028[E] Use of the sizeof operator in a preprocessing directive is a language extension.
qac-1029[E] Whitespace encountered between backslash and new-line has been ignored.
qac-1034[E] Macro defined with named variable argument list. This is a language extension.
qac-1035[E] No macro arguments supplied for variable argument list. This is a language extension.
qac-1036[E] Comma before ## ignored in expansion of variadic macro. This is a language extension.
qac-1037[E] Arrays of length zero are a language extension.
qac-1038[E] The sequence ", ##__VA_ARGS__" is a language extension.
qac-1039[E] Treating array of length one as potentially flexible member.
qac-1041[E] Empty aggregate initializers are a language extension.
qac-1042[E] Using I64 or UI64 as an integer constant suffix. This is a language extension.
qac-1043[E] Defining an anonymous union object. This is a language extension.
qac-1044[E] Defining an anonymous struct object. This is a language extension.
qac-1045[E] Use of the #include_next preprocessing directive is a language extension.
qac-1046[E] Function is being declared with default argument syntax. This is a language extension.
qac-1049[E] Nested functions are a language extension.
qac-1086[E] '_Alignof (expression)' is a common non-standard extension. ISO C11 only defines '_Alignof (type)'.
qac-1090[E] '__label__' is not supported in ISO C, and is treated as a language extension.
qac-1094[E] '_Static_assert (expression)' with no message is a common non-standard extension.
qac-1130[E] The '__has_include' operator is a language extension.
qac-1131[E] The '__has_include_next' operator is a language extension.
qac-2070Using [[attribute]] syntax.
qac-2071[E] This attribute syntax is a language extension.
qac-2072[E] This attribute specifier is unexpected in this source position, and will be ignored.
qac-2850Constant: Implicit conversion to a signed integer type of insufficient size.
qac-2851Definite: Implicit conversion to a signed integer type of insufficient size.
qac-2852Apparent: Implicit conversion to a signed integer type of insufficient size.
qac-2853Suspicious: Implicit conversion to a signed integer type of insufficient size.
qac-2855Constant: Casting to a signed integer type of insufficient size.
qac-2856Definite: Casting to a signed integer type of insufficient size.
qac-2857Apparent: Casting to a signed integer type of insufficient size.
qac-2858Suspicious: Casting to a signed integer type of insufficient size.
qac-2860Constant: Implementation-defined value resulting from left shift operation on expression of signed type.
qac-2861Definite: Implementation-defined value resulting from left shift operation on expression of signed type.
qac-2862Apparent: Implementation-defined value resulting from left shift operation on expression of signed type.
qac-2863Suspicious: Implementation-defined value resulting from left shift operation on expression of signed type.
qac-2895Constant: Negative value cast to an unsigned type.
qac-2896Definite: Negative value cast to an unsigned type.
qac-2897Apparent: Negative value cast to an unsigned type.
qac-2898Suspicious: Negative value cast to an unsigned type.
qac-3116Unrecognized #pragma arguments '%s' This #pragma directive has been ignored.
qac-3445[E] Conditional expression with middle operand omitted is a language extension.
qac-3664[E] Using a dot operator to access an individual bit is a language extension.
+
Dir-1.1-C99RequiredAny implementation-defined behaviour on which the output of the program depends shall be documented and understood
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0371[L] Nesting levels of blocks exceeds 127 - program does not conform strictly to ISO:C99.
qac-0372[L] More than 63 levels of nested conditional inclusion - program does not conform strictly to ISO:C99.
qac-0375[L] Nesting of parenthesized expressions exceeds 63 - program does not conform strictly to ISO:C99.
qac-0380[L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99.
qac-0388[L] '#include "%s"' causes nesting to exceed 15 levels - program does not conform strictly to ISO:C99.
qac-0390[L] Number of members in 'struct' or 'union' exceeds 1023 - program does not conform strictly to ISO:C99.
qac-0391[L] Number of enumeration constants exceeds 1023 - program does not conform strictly to ISO:C99.
qac-0392[L] Nesting of 'struct' or 'union' types exceeds 63 - program does not conform strictly to ISO:C99.
qac-0613[L] Size of object '%1s' exceeds 65535 bytes - program does not conform strictly to ISO:C99.
qac-0615[L] More than 511 block scope identifiers defined within a block - program does not conform strictly to ISO:C99.
qac-0786[L] Identifier matches other macro name(s) (e.g. '%1s') in first 63 characters.
qac-0789[L] Identifier matches other identifier(s) (e.g. '%1s') in first 63 characters - program does not conform strictly to ISO:C99.
qac-0793[L] Macro identifier matches other macro identifier(s) (e.g. '%1s') in first 63 characters - program does not conform strictly to ISO:C99.
qac-0796Identifier matches other identifier(s) (e.g. '%1s') in an outer scope within the ISO:C99 limit of 63 significant characters
qac-1077[C11] The keyword '_Noreturn' has been used.
qac-1078[C11] The keyword '_Alignas' has been used.
qac-1079[C11] The keyword '_Alignof' has been used.
qac-1081[C11] The keyword '_Atomic' has been used.
qac-1082[C11] The keyword '_Generic' has been used.
qac-1083[C11] The keyword '_Static_assert' has been used.
qac-1084[C11] The keyword '_Thread_local' has been used.
+
Dir-2.1RequiredAll source files shall compile without any compilation errorsUnassisted

+Remarks:
+Dedicated checks deployed in Jenkins.
Dir-3.1RequiredAll code shall be traceable to documented requirementsUnassisted

+Remarks:
+Limited management of requirements.
Dir-4.1RequiredRun-time failures shall be minimized
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2791Definite: Right hand operand of shift operator is negative or too large.
qac-2792Apparent: Right hand operand of shift operator is negative or too large.
qac-2793Suspicious: Right hand operand of shift operator is negative or too large.
qac-2794Possible: Tainted right hand operand of shift operator is negative or too large.
qac-2801Definite: Overflow in signed arithmetic operation.
qac-2802Apparent: Overflow in signed arithmetic operation.
qac-2803Suspicious: Overflow in signed arithmetic operation.
qac-2804Possible: Overflow in signed arithmetic tainted operation.
qac-2811Definite: Dereference of NULL pointer.
qac-2812Apparent: Dereference of NULL pointer.
qac-2813Suspicious: Dereference of NULL pointer.
qac-2821Definite: Arithmetic operation on NULL pointer.
qac-2822Apparent: Arithmetic operation on NULL pointer.
qac-2823Suspicious: Arithmetic operation on NULL pointer.
qac-2831Definite: Division by zero.
qac-2832Apparent: Division by zero.
qac-2833Suspicious: Division by zero.
qac-2841Definite: Dereference of an invalid pointer value.
qac-2842Apparent: Dereference of an invalid pointer value.
qac-2843Suspicious: Dereference of an invalid pointer value.
qac-2845Constant: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2846Definite: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2847Apparent: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2848Suspicious: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2871Infinite loop identified.
qac-2872This loop, if entered, will never terminate.
qac-2877This loop will never be executed more than once.
qac-2935Constant: Dereference of an invalid char pointer value.
qac-2936Definite: Dereference of an invalid char pointer value.
qac-2937Apparent: Dereference of an invalid char pointer value.
qac-2938Suspicious: Dereference of an invalid char pointer value.
+
Dir-4.10RequiredPrecautions shall be taken in order to prevent the contents of a header file being included more then once
+ + + + + +
QacDescription
qac-0883Include file code is not protected against repeated inclusion
+
Dir-4.11RequiredThe validity of values passed to library functions shall be checkedUnassisted

+Remarks:
+No automated check deployed.
+Manual checks done by developers.
Dir-4.12RequiredDynamic memory allocation shall not be used
+ + + + + +
QacDescription
m3cm-5118Use of memory allocation or deallocation function: calloc, malloc, realloc or free.
+
Dir-4.13AdvisoryFunctions which are designed to provide operations on a resource should be called in an appropriate sequence
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2726Definite: Use of uninitialized resource.
qac-2727Apparent: Use of uninitialized resource.
qac-2728Suspicious: Use of uninitialized resource.
qac-2731Definite: Use of destroyed resource.
qac-2732Apparent: Use of destroyed resource.
qac-2733Suspicious: Use of destroyed resource.
qac-2746Definite: Use of uninitialized file handle.
qac-2747Apparent: Use of uninitialized file handle.
qac-2748Suspicious: Use of uninitialized file handle.
qac-4866Definite: Memory is used after free.
qac-4867Apparent: Memory is used after free.
qac-4868Suspicious: Memory is used after free.
+
Dir-4.14RequiredThe validity of values received from external sources shall be checked
+ + + + + +
QacDescription
qac-2956Definite: Using object '%s' with tainted value.
+
Dir-4.2AdvisoryAll usage of assembly language should be documented
+ + + + + + + + + +
QacDescription
qac-1003[E] '#%s' is a language extension for in-line assembler. All statements located between #asm and #endasm will be ignored.
qac-1006[E] This in-line assembler construct is a language extension. The code has been ignored.
+
Dir-4.3RequiredAssembly language shall be encapsulated and isolated
+ + + + + + + + + +
QacDescription
qac-3006This function contains a mixture of in-line assembler statements and C statements.
qac-3008This function contains a mixture of in-line assembler statements and C code.
+
Dir-4.4AdvisorySections of code should not be "commented out"
+ + + + + + + + + +
QacDescription
qac-2052This line comment appears to comment out source code.
qac-2053This block comment appears to comment out source code.
+
Dir-4.5AdvisoryIdentifiers in the same name space with overlapping visibility should be typographically unambiguous
+ + + + + +
QacDescription
rcma-1710Identifiers have the same matching pattern '%1s'.
+
Dir-4.6Advisorytypedefs that indicate size and signedness should be used in place of the basic numerical types
+ + + + + +
QacDescription
m3cm-5209Use of basic type '%s'.
+
Dir-4.7RequiredIf a function returns error information, then that error information shall be tested
+ + + + + +
QacDescription
qac-2504Return value of '%s' is not checked for error status.
+
Dir-4.8AdvisoryIf a pointer to a structure or union is never dereferenced within a translation unit, then the implementation of the object should be hidden
+ + + + + +
QacDescription
qac-3630The implementation of this struct/union type should be hidden.
+
Dir-4.9AdvisoryA function should be used in preference to a function-like macro where they are interchangeable
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-3469This usage of a function-like macro looks like it could be replaced by an equivalent function call.
qac-3471Some uses of this function-like macro look like they could be replaced by equivalent function calls.
qac-3472All toplevel uses of this function-like macro look like they could be replaced by equivalent function calls.
qac-3473This usage of a function-like setter macro looks like it could be replaced by a similar function call.
+
Rule-1.1RequiredThe program shall contain no violations of the standard C syntax and constraints, and shall not exceed the implementation's translation limits
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0232[C] Value of hex escape sequence is not representable in type 'unsigned char'.
qac-0233[C] Value of octal escape sequence is not representable in type 'unsigned char'.
qac-0244[C] Value of character constant is not representable in type 'int'.
qac-0268[S] Comment open at end of translation unit.
qac-0321[C] Declaration within 'for' statement defines an identifier '%1s' which is not an object.
qac-0322[C] Illegal storage class specifier used in 'for' statement declaration.
qac-0323[C] Cast between a pointer to incomplete type and a floating type.
qac-0327[C] Cast between a pointer to void and a floating type.
qac-0338[C] Octal or hex escape sequence value is too large for 'unsigned char' or 'wchar_t' type.
qac-0422[C] Function call contains fewer arguments than prototype specifies.
qac-0423[C] Function call contains more arguments than prototype specifies.
qac-0426[C] Called function has incomplete return type.
qac-0427[C] Object identifier used as if it were a function or a function pointer identifier.
qac-0429[C] Function argument is not of arithmetic type.
qac-0430[C] Function argument is not of compatible 'struct'/'union' type.
qac-0431[C] Function argument points to a more heavily qualified type.
qac-0432[C] Function argument is not of compatible pointer type.
qac-0435[C] The 'struct'/'union' member '%s' does not exist.
qac-0436[C] Left operand of '.' must be a 'struct' or 'union' object.
qac-0437[C] Left operand of '->' must be a pointer to a 'struct' or 'union' object.
qac-0446[C] Operand of ++/-- must have scalar (arithmetic or pointer) type.
qac-0447[C] Operand of ++/-- must be a modifiable object.
qac-0448[C] Operand of ++/-- must not be a pointer to an object of unknown size.
qac-0449[C] Operand of ++/-- must not be a pointer to a function.
qac-0451[C] Subscripting requires a pointer (or array lvalue).
qac-0452[C] Cannot subscript a pointer to an object of unknown size.
qac-0453[C] An array subscript must have integral type.
qac-0454[C] The address-of operator '&' cannot be applied to an object declared with 'register'.
qac-0456[C] This expression does not have an address - '&' may only be applied to an lvalue or a function designator.
qac-0457[C] The address-of operator '&' cannot be applied to a bit-field.
qac-0458[C] Indirection operator '*' requires operand of pointer type.
qac-0460[C] The keyword static is used in the declaration of the index of an array which is not a function parameter.
qac-0461[C] The keyword static is used in the declaration of an inner index of a multi-dimensional array.
qac-0462[C] A type qualifier (const, volatile or restrict) is used in the declaration of the index of an array which is not a function parameter.
qac-0463[C] A type qualifier (const, volatile or restrict) is used in the declaration of an inner index of a multi-dimensional array.
qac-0466[C] Unary '+' requires arithmetic operand.
qac-0467[C] Operand of '!' must have scalar (arithmetic or pointer) type.
qac-0468[C] Unary '-' requires arithmetic operand.
qac-0469[C] Bitwise not '~' requires integral operand.
qac-0476[C] 'sizeof' cannot be applied to a bit-field.
qac-0477[C] 'sizeof' cannot be applied to a function.
qac-0478[C] 'sizeof' cannot be applied to an object of unknown size.
qac-0481[C] Only scalar expressions may be cast to other types.
qac-0482[C] Expressions may only be cast to 'void' or scalar types.
qac-0483[C] A pointer to an object of unknown size cannot be the operand of an addition operator.
qac-0484[C] A pointer to an object of unknown size cannot be the operand of a subtraction operator.
qac-0485[C] Only integral expressions may be added to pointers.
qac-0486[C] Only integral expressions and compatible pointers may be subtracted from pointers.
qac-0487[C] If two pointers are subtracted, they must be pointers that address compatible types.
qac-0493[C] Type of left operand is not compatible with this operator.
qac-0494[C] Type of right operand is not compatible with this operator.
qac-0495[C] Left operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
qac-0496[C] Right operand of '%', '<<', '>>', '&', '^' or '|' must have integral type.
qac-0513[C] Relational operator used to compare pointers to incompatible types.
qac-0514[C] Relational operator used to compare a pointer with an incompatible operand.
qac-0515[C] Equality operator used to compare a pointer with an incompatible operand.
qac-0536[C] First operand of '&&', '||' or '?' must have scalar (arithmetic or pointer) type.
qac-0537[C] Second operand of '&&' or '||' must have scalar (arithmetic or pointer) type.
qac-0540[C] 2nd and 3rd operands of conditional operator '?' must have compatible types.
qac-0541[C] Argument no. %s does not have object type.
qac-0542[C] Controlling expression must have scalar (arithmetic or pointer) type.
qac-0546[C] 'enum %s' has unknown content. Use of an enum tag with undefined content is not permitted.
qac-0547[C] This declaration of tag '%s' conflicts with a previous declaration.
qac-0550[C] Left operand of '+=' or '-=' is a pointer to an object of unknown size.
qac-0554[C] 'static %s()' has been declared and called but no definition has been given.
qac-0555[C] Invalid assignment to object of void type or array type.
qac-0556[C] Left operand of assignment must be a modifiable object.
qac-0557[C] Right operand of assignment is not of arithmetic type.
qac-0558[C] Right operand of '+=' or '-=' must have integral type when left operand is a pointer.
qac-0559[C] Right operand of '<<=', '>>=', '&=', '|=', '^=' or '%=' must have integral type.
qac-0560[C] Left operand of '<<=', '>>=', '&=', '|=', '^=' or '%=' must have integral type.
qac-0561[C] Right operand of assignment is not of compatible 'struct'/'union' type.
qac-0562[C] Right operand of assignment points to a more heavily qualified type.
qac-0563[C] Right operand of assignment is not of compatible pointer type.
qac-0564[C] Left operand of assignment must be an lvalue (it must designate an object).
qac-0565[C] Left operand of '+=' or '-=' must be of arithmetic or pointer to object type.
qac-0580[C] Constant is too large to be representable.
qac-0588[C] Width of bit-field must be an integral constant expression.
qac-0589[C] Enumeration constant must be an integral constant expression.
qac-0590[C] Array bound must be an integral constant expression.
qac-0591[C] A 'case' label must be an integral constant expression.
qac-0605[C] A declaration must declare a tag or an identifier.
qac-0616[C] Illegal combination of type specifiers or storage class specifiers.
qac-0619[C] The identifier '%1s' has already been defined in the current scope within the ordinary identifier namespace.
qac-0620[C] Cannot initialize '%s' because it has unknown size.
qac-0621[C] The struct/union '%s' cannot be initialized because it has unknown size.
qac-0622[C] The identifier '%s' has been declared both with and without linkage in the same scope.
qac-0627[C] '%s' has different type to previous declaration in the same scope.
qac-0628[C] '%s' has different type to previous declaration at wider scope.
qac-0629[C] More than one definition of '%s' (with internal linkage).
qac-0631[C] More than one declaration of '%s' (with no linkage).
qac-0638[C] Duplicate member name '%s' in 'struct' or 'union'.
qac-0640[C] '%s' in 'struct' or 'union' type may not have 'void' type.
qac-0641[C] '%s' in 'struct' or 'union' type may not have function type.
qac-0642[C] '%s' in 'struct' or 'union' type may not be an array of unknown size.
qac-0643[C] '%s' in 'struct' or 'union' type may not be a 'struct' or 'union' with unknown content.
qac-0644[C] Width of bit-field must be no bigger than the width of an 'int'.
qac-0645[C] A zero width bit-field cannot be given a name.
qac-0646[C] Enumeration constants must have values representable as 'int's.
qac-0649[C] K&R style declaration of parameters is not legal after a function header that includes a parameter list.
qac-0650[C] Illegal storage class specifier on named function parameter.
qac-0651[C] Missing type specifiers in function declaration.
qac-0653[C] Duplicate definition of 'struct', 'union' or 'enum' tag '%s'.
qac-0655[C] Illegal storage class specifier on unnamed function parameter.
qac-0656[C] Function return type cannot be function or array type, or an incomplete struct/union (for function definition).
qac-0657[C] Unnamed parameter specified in function definition.
qac-0659[C] The identifier '%s' was not given in the parameter list.
qac-0664[C] Parameter specified with type 'void'.
qac-0665[C] Two parameters have been declared with the same name '%1s'.
qac-0669[C] The restrict qualifier can only be applied to pointer types derived from object or incomplete types.
qac-0671[C] Initializer for object of arithmetic type is not of arithmetic type.
qac-0673[C] Initializer points to a more heavily qualified type.
qac-0674[C] Initializer for pointer is of incompatible type.
qac-0675[C] Initializer is not of compatible 'struct'/'union' type.
qac-0677[C] Array size is negative, or unrepresentable.
qac-0682[C] Initializer for object of a character type is a string literal.
qac-0683[C] Initializer for object of a character type is a wide string literal.
qac-0684[C] Too many initializers.
qac-0685[C] Initializer for any object with static storage duration must be a constant expression.
qac-0690[C] String literal contains too many characters to initialize object.
qac-0698[C] String literal used to initialize an object of incompatible type.
qac-0699[C] String literal used to initialize a pointer of incompatible type.
qac-0708[C] No definition found for the label '%s' in this function.
qac-0709[C] Initialization of locally declared 'extern %s' is illegal.
qac-0736[C] 'case' label does not have unique value within this 'switch' statement.
qac-0737[C] More than one 'default' label found in 'switch' statement.
qac-0738[C] Controlling expression in a 'switch' statement must have integral type.
qac-0746[C] 'return exp;' found in '%s()' whose return type is 'void'.
qac-0747[C] 'return exp;' found in '%s()' whose return type is qualified 'void'.
qac-0755[C] 'return' expression is not of arithmetic type.
qac-0756[C] 'return' expression is not of compatible 'struct'/'union' type.
qac-0757[C] 'return' expression points to a more heavily qualified type.
qac-0758[C] 'return' expression is not of compatible pointer type.
qac-0766[C] 'continue' statement found outside an iteration statement.
qac-0767[C] 'break' statement found outside a 'switch' or iteration statement.
qac-0768[C] 'case' or 'default' found outside a 'switch' statement.
qac-0774[C] 'auto' may not be specified on global declaration of '%s'.
qac-0775[C] 'register' may not be specified on global declaration of '%s'.
qac-0801[C] The '##' operator may not be the first token in a macro replacement list.
qac-0802[C] The '##' operator may not be the last token in a macro replacement list.
qac-0803[C] The '#' operator may only appear before a macro parameter.
qac-0804[C] Macro parameter '%s' is not unique.
qac-0811[C] The glue operator '##' may only appear in a '#define' preprocessing directive.
qac-0817[S] Closing quote or bracket '>' missing from include filename.
qac-0818[Q] Cannot find '%s' - Perhaps the appropriate search path was not given ?
qac-0821[C] '#include' does not identify a header or source file that can be processed.
qac-0834[C] Function-like macro '%s()' is being redefined as an object-like macro.
qac-0835[C] Macro '%s' is being redefined with different parameter names.
qac-0844[C] Macro '%s' is being redefined with a different replacement list.
qac-0845[C] Object-like macro '%s' is being redefined as a function-like macro.
qac-0851[C] More arguments in macro call than specified in definition.
qac-0852[S] Unable to find the ')' that marks the end of the macro call.
qac-0866[C] The string literal in a '#line' directive cannot be a 'wide string literal'.
qac-0873[C] Preprocessing token cannot be converted to an actual token.
qac-0877[C] '#if' and '#elif' expressions may contain only integral constants.
qac-0940[C] Illegal usage of a variably modified type.
qac-0941[C] A variable length array may not be initialized.
qac-0943[C] Jump to label '%s' is a jump into the scope of an identifier with variably modified type.
qac-0944[C] The label '%s' is inside the scope of an identifier with variably modified type.
qac-1023[C] Using '_Alignof' on function types is illegal.
qac-1024[C] Using '_Alignof' on incomplete types is illegal.
qac-1025[C] Using '_Alignof' on bit-fields is illegal.
qac-1033[C] The identifier __VA_ARGS__ may only be used in the replacement list of a variadic macro.
qac-1047[EE] Function is being declared with default argument syntax after a previous call to the function. This is not allowed.
qac-1048[EE] Default argument values are missing for some parameters in this function declaration. This is not allowed.
qac-1050[EE] Nested functions cannot be 'extern' or 'static'.
qac-1061[C] Structure '%1s' with flexible array member '%2s' cannot be used in the declaration of structure member '%3s'.
qac-1062[C] Structure '%1s' with flexible array member '%2s' cannot be used in the declaration of array elements.
qac-1080[EE] A typedef or pointer to function is being declared with default argument syntax. This is not allowed.
qac-1087[C] Objects declared with '_Thread_local' must have linkage or static storage duration.
qac-1088[C] '_Thread_local' must appear on every declaration of an object, or on none.
qac-1089[C] '_Thread_local' may not form part of a function declaration.
qac-1091[EE] Declaration of a GNU local label must be the first statement in the block.
qac-1092[EE] No definition found for the label '%s' in this scope.
qac-1093[C] Failed static assertion '%s'.
qac-1095[S] The message passed to '_Static_assert' must be a string literal.
qac-1096[C] The expression passed to '_Static_assert' must be an integer constant expression.
qac-1112[C] The _Atomic specifier may not be used to qualify this type.
qac-1113[C] Implicit conversion may not add or remove the _Atomic qualifier.
qac-1117[C] This is not a valid alignment expression.
qac-1118[C] An explicitly specified alignment must be at least as strict as the default.
qac-1120[C] This is not an object which can be declared with an alignment specifier.
qac-1124[C] This '_Generic' selection contains multiple 'default' associations.
qac-1125[C] This association does not describe a unique type in the '_Generic' selection.
qac-1126[C] The controlling expression of this '_Generic' selection does not match any association.
qac-1127[C] This '_Generic' association describes an incomplete or variably-modified type.
qac-1133[EE] Using the '__has_include' or '__has_include_next' operator outside of an #if or #elif directive.
qac-2025This appears to jump across a nested function scope boundary.
qac-3236[C] 'inline' may not be applied to function 'main'.
qac-3237[C] inline function '%1s' has external linkage and is defining an object, '%2s', with static storage duration.
qac-3238[C] inline function '%1s' has external linkage and is referring to an object, '%2s', with internal linkage.
qac-3244[C] 'inline' may only be used in the declaration of a function identifier.
+
Rule-1.1-C99RequiredThe program shall contain no violations of the standard C syntax and constraints, and shall not exceed the implementation's translation limits
+ + + + + + + + + + + + + +
QacDescription
qac-2050The 'int' type specifier has been omitted from a function declaration.
qac-2051The 'int' type specifier has been omitted from an object declaration.
qac-3335No function declaration. Implicit declaration inserted: 'extern int %s();'.
+
Rule-1.2AdvisoryLanguage extensions should not be used
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0246[E] Binary integer constants are a language extension.
qac-0497[E] Performing pointer arithmetic on pointer to void.
qac-0551[E] Cast may not operate on the left operand of the assignment operator.
qac-0601[E] Function 'main()' is not of type 'int (void)' or 'int (int, char *[])'.
qac-0633[E] Empty structures and unions are a language extension.
qac-0635[C99] Bit-field %1s in %2s has been declared with a type not explicitly supported.
qac-0660[C11] Defining an unnamed member in a struct or union.
qac-0662[C11] Accessing a member of an unnamed struct or union member.
qac-0830[E] Unrecognized text encountered after a preprocessing directive.
qac-0831[E] Use of '\\' in this '#include' line is a PC extension - this usage is non-portable.
qac-0840[E] Extra tokens at end of #include directive.
qac-0899[E] Unrecognized preprocessing directive has been ignored - assumed to be a language extension.
qac-0981[E] Redundant semicolon in 'struct' or 'union' member declaration list is a language extension.
qac-1001[E] '#include %s' is a VMS extension.
qac-1002[E] '%s' is not a legal identifier in ISO C.
qac-1003[E] '#%s' is a language extension for in-line assembler. All statements located between #asm and #endasm will be ignored.
qac-1006[E] This in-line assembler construct is a language extension. The code has been ignored.
qac-1008[E] '#%s' is not a legal ISO C preprocessing directive.
qac-1012[E] Use of a C++ reference type ('type &') will be treated as a language extension.
qac-1014[E] Non-standard type specifier - this will be treated as a language extension.
qac-1015[E] '%s' is not a legal keyword in ISO C - this will be treated as a language extension.
qac-1019[E] '@ address' is not supported in ISO C - this will be treated as a language extension.
qac-1020[E] '__typeof__' is not supported in ISO C, and is treated as a language extension.
qac-1021[E] A statement expression is not supported in ISO C, and is treated as a language extension.
qac-1022[E] '__alignof__' is a language extension. It is mapped to the standard '_Alignof' operator.
qac-1026[E] The indicated @word construct has been ignored.
qac-1028[E] Use of the sizeof operator in a preprocessing directive is a language extension.
qac-1029[E] Whitespace encountered between backslash and new-line has been ignored.
qac-1034[E] Macro defined with named variable argument list. This is a language extension.
qac-1035[E] No macro arguments supplied for variable argument list. This is a language extension.
qac-1036[E] Comma before ## ignored in expansion of variadic macro. This is a language extension.
qac-1037[E] Arrays of length zero are a language extension.
qac-1038[E] The sequence ", ##__VA_ARGS__" is a language extension.
qac-1039[E] Treating array of length one as potentially flexible member.
qac-1041[E] Empty aggregate initializers are a language extension.
qac-1042[E] Using I64 or UI64 as an integer constant suffix. This is a language extension.
qac-1043[E] Defining an anonymous union object. This is a language extension.
qac-1044[E] Defining an anonymous struct object. This is a language extension.
qac-1045[E] Use of the #include_next preprocessing directive is a language extension.
qac-1046[E] Function is being declared with default argument syntax. This is a language extension.
qac-1049[E] Nested functions are a language extension.
qac-1083[C11] The keyword '_Static_assert' has been used.
qac-1086[E] '_Alignof (expression)' is a common non-standard extension. ISO C11 only defines '_Alignof (type)'.
qac-1090[E] '__label__' is not supported in ISO C, and is treated as a language extension.
qac-1094[E] '_Static_assert (expression)' with no message is a common non-standard extension.
qac-1122[EW] This non-standard usage of '_Alignof' retrieves the alignment of an array.
qac-1130[E] The '__has_include' operator is a language extension.
qac-1131[E] The '__has_include_next' operator is a language extension.
qac-2070Using [[attribute]] syntax.
qac-2071[E] This attribute syntax is a language extension.
qac-2072[E] This attribute specifier is unexpected in this source position, and will be ignored.
qac-3445[E] Conditional expression with middle operand omitted is a language extension.
qac-3664[E] Using a dot operator to access an individual bit is a language extension.
+
Rule-1.2-C99AdvisoryLanguage extensions should not be used
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1077[C11] The keyword '_Noreturn' has been used.
qac-1078[C11] The keyword '_Alignas' has been used.
qac-1079[C11] The keyword '_Alignof' has been used.
qac-1081[C11] The keyword '_Atomic' has been used.
qac-1082[C11] The keyword '_Generic' has been used.
qac-1083[C11] The keyword '_Static_assert' has been used.
qac-1084[C11] The keyword '_Thread_local' has been used.
+
Rule-1.3RequiredThere shall be no occurrence of undefined or critical unspecified behaviour
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0160[U] Using unsupported conversion specifier number %1s.
qac-0161[U] Unknown length modifier used with 'i' or 'd' conversion specifier, number %1s.
qac-0162[U] Unknown length modifier used with 'o' conversion specifier, number %1s.
qac-0163[U] Unknown length modifier used with 'u' conversion specifier, number %1s.
qac-0164[U] Unknown length modifier used with 'x' conversion specifier, number %1s.
qac-0165[U] Unknown length modifier used with 'X' conversion specifier, number %1s.
qac-0166[U] Unknown length modifier used with 'f' conversion specifier, number %1s.
qac-0167[U] Unknown length modifier used with 'e' conversion specifier, number %1s.
qac-0168[U] Unknown length modifier used with 'E' conversion specifier, number %1s.
qac-0169[U] Unknown length modifier used with 'g' conversion specifier, number %1s.
qac-0170[U] Unknown length modifier used with 'G' conversion specifier, number %1s.
qac-0171[U] Unknown length modifier used with 'c' conversion specifier, number %1s.
qac-0172[U] Unknown length modifier used with '%%' conversion specifier, number %1s.
qac-0173[U] Unknown length modifier used with 's' conversion specifier, number %1s.
qac-0174[U] Unknown length modifier used with 'n' conversion specifier, number %1s.
qac-0175[U] Unknown length modifier used with 'p' conversion specifier, number %1s.
qac-0176[U] Incomplete conversion specifier, number %1s.
qac-0177[U] Field width of format conversion specifier exceeds 509 characters.
qac-0178[U] Precision of format conversion specifier exceeds 509 characters.
qac-0179[U] Argument type does not match conversion specifier number %1s.
qac-0184[U] Insufficient arguments to satisfy conversion specifier, number %1s.
qac-0185[U] Call contains more arguments than conversion specifiers.
qac-0186[U] A call to this function must include at least one argument.
qac-0190[U] Using unsupported conversion specifier number %1s.
qac-0191[U] Unknown length modifier used with 'd/i/n' conversion specifier, number %1s.
qac-0192[U] Unknown length modifier used with 'o' conversion specifier, number %1s.
qac-0193[U] Unknown length modifier used with 'u' conversion specifier, number %1s.
qac-0194[U] Unknown length modifier used with 'x/X' conversion specifier, number %1s.
qac-0195[U] Unknown length modifier used with 'e/E/f/F/g/G' conversion specifier, number %1s.
qac-0196[U] Unknown length modifier used with 's' conversion specifier, number %1s.
qac-0197[U] Unknown length modifier used with 'p' conversion specifier, number %1s.
qac-0198[U] Unknown length modifier used with '%%' conversion specifier, number %1s.
qac-0199[U] Unknown length modifier used with '[' conversion specifier, number %1s.
qac-0200[U] Unknown length modifier used with 'c' conversion specifier, number %1s.
qac-0201[U] Incomplete conversion specifier, number %1s.
qac-0203[U] Value of character prior to '-' in '[]' is greater than following character.
qac-0204[U] Field width of format conversion specifier exceeds 509 characters.
qac-0206[U] Argument type does not match conversion specifier number %1s.
qac-0207[U] 'scanf' expects address of objects being stored into.
qac-0208[U] Same character occurs in scanset more than once.
qac-0235[U] Unknown escape sequence.
qac-0275[U] Floating value is out of range for conversion to destination type.
qac-0301[u] Cast between a pointer to object and a floating type.
qac-0302[u] Cast between a pointer to function and a floating type.
qac-0304[U] The address of an array declared 'register' may not be computed.
qac-0307[u] Cast between a pointer to object and a pointer to function.
qac-0309[U] Integral type is not large enough to hold a pointer value.
qac-0337[U] String literal has undefined value. This may be a result of using '#' on \\.
qac-0400[U] '%1s' is modified more than once between sequence points - evaluation order unspecified.
qac-0401[U] '%1s' may be modified more than once between sequence points - evaluation order unspecified.
qac-0402[U] '%1s' is modified and accessed between sequence points - evaluation order unspecified.
qac-0403[U] '%1s' may be modified and accessed between sequence points - evaluation order unspecified.
qac-0404[U] More than one read access to volatile objects between sequence points.
qac-0405[U] More than one modification of volatile objects between sequence points.
qac-0475[u] Operand of 'sizeof' is an expression designating a bit-field.
qac-0543[U] 'void' expressions have no value and may not be used in expressions.
qac-0544[U] The value of an incomplete 'union' may not be used.
qac-0545[U] The value of an incomplete 'struct' may not be used.
qac-0602[U] The identifier '%s' is reserved for use by the library.
qac-0603[U] The macro identifier '%s' is reserved.
qac-0623[U] '%s' has incomplete type and no linkage - this is undefined.
qac-0625[U] '%s' has been declared with both internal and external linkage - the behaviour is undefined.
qac-0626[U] '%s' has different type to previous declaration (which is no longer in scope).
qac-0630[U] More than one definition of '%s' (with external linkage).
qac-0632[U] Tentative definition of '%s' with internal linkage cannot have unknown size.
qac-0636[U] There are no named members in this 'struct' or 'union'.
qac-0654[U] Using 'const' or 'volatile' in a function return type is undefined.
qac-0658[U] Parameter cannot have 'void' type.
qac-0661[U] '%1s()' may not have a storage class specifier of '%2s' when declared at block scope.
qac-0667[U] '%s' is declared as a typedef and may not be redeclared as an object at an inner scope without an explicit type specifier.
qac-0668[U] '%s' is declared as a typedef and may not be redeclared as a member of a 'struct' or 'union' without an explicit type specifier.
qac-0672[U] The initializer for a 'struct', 'union' or array is not enclosed in braces.
qac-0676[u] Array element is of function type. Arrays cannot be constructed from function types.
qac-0678[u] Array element is array of unknown size. Arrays cannot be constructed from incomplete types.
qac-0680[u] Array element is 'void' or an incomplete 'struct' or 'union'. Arrays cannot be constructed from incomplete types.
qac-0706[U] Label '%s' is not unique within this function.
qac-0745[U] 'return;' found in '%s()', which has been defined with a non-'void' return type.
qac-0813[U] Using any of the characters ' " or /* in '#include <%s>' gives undefined behaviour.
qac-0814[U] Using the characters ' or /* in '#include "%s"' gives undefined behaviour.
qac-0836[U] Definition of macro named 'defined'.
qac-0837[U] Use of '#undef' to remove the operator 'defined'.
qac-0840[E] Extra tokens at end of #include directive.
qac-0848[U] Attempting to #undef '%s', which is a predefined macro name.
qac-0853[U] Macro arguments contain a sequence of tokens that has the form of a preprocessing directive.
qac-0854[U] Attempting to #define '%s', which is a predefined macro name.
qac-0864[U] '#line' directive specifies line number which is not in the range 1 to 32767.
qac-0865[U] '#line' directive is badly formed.
qac-0867[U] '#line' has not been followed by a line number.
qac-0872[U] Result of '##' operator is not a legal preprocessing token.
qac-0874[U] Character string literal and wide character string literal are adjacent.
qac-0885[U] The token 'defined' is generated in the expansion of this macro.
qac-0887[U] Use of 'defined' must match either 'defined(identifier)' or 'defined identifier'.
qac-0888[U] 'defined' requires an identifier as an argument.
qac-0905[U] Producing a universal character name through token concatenation is undefined.
qac-0914[U] Source file does not end with a newline character.
qac-0915[U] Source file ends with a backslash character followed by a newline.
qac-0942[U] A * can only be used to specify array size within function prototype scope.
qac-1119[U] Multiple declarations of '%1s' have different explicit alignments.
qac-1331Type or number of arguments doesn't match previous use of the function.
qac-1332Type or number of arguments doesn't match prototype found later.
qac-1333Type or number of arguments doesn't match function definition found later.
rcma-1509'%1s' has external linkage and has multiple definitions.
rcma-1510'%1s' has external linkage and has incompatible declarations.
qac-2726Definite: Use of uninitialized resource.
qac-2727Apparent: Use of uninitialized resource.
qac-2728Suspicious: Use of uninitialized resource.
qac-2731Definite: Use of destroyed resource.
qac-2732Apparent: Use of destroyed resource.
qac-2733Suspicious: Use of destroyed resource.
qac-2746Definite: Use of uninitialized file handle.
qac-2747Apparent: Use of uninitialized file handle.
qac-2748Suspicious: Use of uninitialized file handle.
qac-2800Constant: Overflow in signed arithmetic operation.
qac-2801Definite: Overflow in signed arithmetic operation.
qac-2802Apparent: Overflow in signed arithmetic operation.
qac-2803Suspicious: Overflow in signed arithmetic operation.
qac-2804Possible: Overflow in signed arithmetic tainted operation.
qac-2806Definite: Calling a standard library wide character handling function with an invalid character value.
qac-2807Apparent: Calling a standard library wide character handling function with an invalid character value.
qac-2808Suspicious: Calling a standard library wide character handling function with an invalid character value.
qac-2810Constant: Dereference of NULL pointer.
qac-2811Definite: Dereference of NULL pointer.
qac-2812Apparent: Dereference of NULL pointer.
qac-2813Suspicious: Dereference of NULL pointer.
qac-2820Constant: Arithmetic operation on NULL pointer.
qac-2821Definite: Arithmetic operation on NULL pointer.
qac-2822Apparent: Arithmetic operation on NULL pointer.
qac-2823Suspicious: Arithmetic operation on NULL pointer.
qac-2830Constant: Division by zero.
qac-2831Definite: Division by zero.
qac-2832Apparent: Division by zero.
qac-2833Suspicious: Division by zero.
qac-2840Constant: Dereference of an invalid pointer value.
qac-2841Definite: Dereference of an invalid pointer value.
qac-2842Apparent: Dereference of an invalid pointer value.
qac-2843Suspicious: Dereference of an invalid pointer value.
qac-2935Constant: Dereference of an invalid char pointer value.
qac-3113[U] 'return' statement includes no expression but function '%s()' is implicitly of type 'int'.
qac-3114[U] Function '%s()' is implicitly of type 'int' but ends without returning a value.
qac-3239[U] inline function '%1s' has external linkage, but is not defined within this translation unit.
qac-3311[u] An earlier jump to this statement will bypass the initialization of local variables.
qac-3312[u] This goto statement will jump into a previous block and bypass the initialization of local variables.
qac-3319[U] Function called with number of arguments which differs from number of parameters in definition.
qac-3320Type of argument no. %s differs from its type in definition of function.
qac-3437[u] '%1s' is only provided by the standard library as a macro, but is being used as a value here.
qac-3438[U] #undef'ing the assert macro to call a function of that name causes undefined behaviour.
qac-4866Definite: Memory is used after free.
qac-4867Apparent: Memory is used after free.
qac-4868Suspicious: Memory is used after free.
+
Rule-1.4RequiredEmergent language features shall not be used
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1077[C11] The keyword '_Noreturn' has been used.
qac-1078[C11] The keyword '_Alignas' has been used.
qac-1079[C11] The keyword '_Alignof' has been used.
qac-1081[C11] The keyword '_Atomic' has been used.
qac-1082[C11] The keyword '_Generic' has been used.
qac-1084[C11] The keyword '_Thread_local' has been used.
+
Rule-10.1RequiredOperands shall not be of an inappropriate essential type.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-3101Unary '-' applied to an operand of type unsigned int or unsigned long gives an unsigned result.
qac-3102Unary '-' applied to an operand whose underlying type is unsigned.
qac-4115Operand of logical && or || operator is not an 'essentially Boolean' expression.
qac-4116Operand of logical ! operator is not an 'essentially Boolean' expression.
qac-4500An expression of 'essentially Boolean' type (%1s) is being used as an array subscript.
qac-4501An expression of 'essentially Boolean' type (%1s) is being used as the %2s operand of this arithmetic operator (%3s).
qac-4502An expression of 'essentially Boolean' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).
qac-4503An expression of 'essentially Boolean' type (%1s) is being used as the left-hand operand of this shift operator (%2s).
qac-4504An expression of 'essentially Boolean' type (%1s) is being used as the right-hand operand of this shift operator (%2s).
qac-4505An expression of 'essentially Boolean' type (%1s) is being used as the %2s operand of this relational operator (%3s).
qac-4507An expression of 'essentially Boolean' type (%1s) is being used as the operand of this increment/decrement operator (%2s).
qac-4510An expression of 'essentially character' type (%1s) is being used as an array subscript.
qac-4511An expression of 'essentially character' type (%1s) is being used as the %2s operand of this arithmetic operator (%3s).
qac-4512An expression of 'essentially character' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).
qac-4513An expression of 'essentially character' type (%1s) is being used as the left-hand operand of this shift operator (%2s).
qac-4514An expression of 'essentially character' type (%1s) is being used as the right-hand operand of this shift operator (%2s).
qac-4518An expression of 'essentially character' type (%1s) is being used as the %2s operand of this logical operator (%3s).
qac-4519An expression of 'essentially character' type (%1s) is being used as the first operand of this conditional operator (%2s).
qac-4521An expression of 'essentially enum' type (%1s) is being used as the %2s operand of this arithmetic operator (%3s).
qac-4522An expression of 'essentially enum' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).
qac-4523An expression of 'essentially enum' type (%1s) is being used as the left-hand operand of this shift operator (%2s).
qac-4524An expression of 'essentially enum' type (%1s) is being used as the right-hand operand of this shift operator (%2s).
qac-4527An expression of 'essentially enum' type is being used as the operand of this increment/decrement operator.
qac-4528An expression of 'essentially enum' type (%1s) is being used as the %2s operand of this logical operator (%3s).
qac-4529An expression of 'essentially enum' type (%1s) is being used as the first operand of this conditional operator (%2s).
qac-4532An expression of 'essentially signed' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).
qac-4533An expression of 'essentially signed' type (%1s) is being used as the left-hand operand of this shift operator (%2s).
qac-4534An expression of 'essentially signed' type (%1s) is being used as the right-hand operand of this shift operator (%2s).
qac-4538An expression of 'essentially signed' type (%1s) is being used as the %2s operand of this logical operator (%3s).
qac-4539An expression of 'essentially signed' type (%1s) is being used as the first operand of this conditional operator (%2s).
qac-4542A non-negative constant expression of 'essentially signed' type (%1s) is being used as the %2s operand of this bitwise operator (%3s).
qac-4543A non-negative constant expression of 'essentially signed' type (%1s) is being used as the left-hand operand of this shift operator (%2s).
qac-4548A non-negative constant expression of 'essentially signed' type (%1s) is being used as the %2s operand of this logical operator (%3s).
qac-4549A non-negative constant expression of 'essentially signed' type (%1s) is being used as the first operand of this conditional operator (%2s).
qac-4558An expression of 'essentially unsigned' type (%1s) is being used as the %2s operand of this logical operator (%3s).
qac-4559An expression of 'essentially unsigned' type (%1s) is being used as the first operand of this conditional operator (%2s).
qac-4568An expression of 'essentially floating' type (%1s) is being used as the %2s operand of this logical operator (%3s).
qac-4569An expression of 'essentially floating' type (%1s) is being used as the first operand of this conditional operator (%2s).
+
Rule-10.2RequiredExpressions of essentially character type shall not be used inappropriately in addition and subtraction operations
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1810An operand of 'essentially character' type is being added to another operand of 'essentially character' type.
qac-1811An operand of 'essentially character' type is being subtracted from an operand of 'essentially signed' type.
qac-1812An operand of 'essentially character' type is being subtracted from an operand of 'essentially unsigned' type.
qac-1813An operand of 'essentially character' type is being balanced with an operand of 'essentially floating' type in this arithmetic operation.
qac-1814An operand of 'essentially enum' type is being added or subtracted from an operand of 'essentially character' type.
+
Rule-10.3RequiredThe value of an expression shall not be assigned to an object with a narrower essential type or of a different essential type category.
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0570This switch case label of 'essential type' '%1s', is not consistent with a controlling expression of essential type '%2s'.
qac-0572This switch case label of 'essential type' '%1s' is not consistent with a controlling expression which has an essential type of lower rank (%2s).
qac-1257An integer constant suffixed with L or LL is being converted to a type of lower rank on assignment.
qac-1264A suffixed floating constant is being converted to a different floating type on assignment.
qac-1265An unsuffixed floating constant is being converted to a different floating type on assignment.
qac-1266A floating constant is being converted to integral type on assignment.
qac-1291An integer constant of 'essentially unsigned' type is being converted to signed type on assignment.
qac-1292An integer constant of 'essentially signed' type is being converted to type char on assignment.
qac-1293An integer constant of 'essentially unsigned' type is being converted to type char on assignment.
qac-1294An integer constant of 'essentially signed' type is being converted to type _Bool on assignment.
qac-1295An integer constant of 'essentially unsigned' type is being converted to type _Bool on assignment.
qac-1296An integer constant of 'essentially signed' type is being converted to enum type on assignment.
qac-1297An integer constant of 'essentially unsigned' type is being converted to enum type on assignment.
qac-1298An integer constant of 'essentially signed' type is being converted to floating type on assignment.
qac-1299An integer constant of 'essentially unsigned' type is being converted to floating type on assignment.
qac-2850Constant: Implicit conversion to a signed integer type of insufficient size.
qac-2890Constant: Negative value implicitly converted to an unsigned type.
qac-2900Constant: Positive integer value truncated by implicit conversion to a smaller unsigned type.
qac-4401An expression of 'essentially Boolean' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4402An expression of 'essentially Boolean' type (%1s) is being converted to enum type, '%2s' on assignment.
qac-4403An expression of 'essentially Boolean' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4404An expression of 'essentially Boolean' type (%1s) is being converted to unsigned type, '%2s' on assignment.
qac-4405An expression of 'essentially Boolean' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4410An expression of 'essentially character' type (%1s) is being converted to Boolean type, '%2s' on assignment.
qac-4412An expression of 'essentially character' type (%1s) is being converted to enum type, '%2s' on assignment.
qac-4413An expression of 'essentially character' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4414An expression of 'essentially character' type (%1s) is being converted to unsigned type, '%2s' on assignment.
qac-4415An expression of 'essentially character' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4420An expression of 'essentially enum' type (%1s) is being converted to Boolean type, '%2s' on assignment.
qac-4421An expression of 'essentially enum' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4422An expression of 'essentially enum' type (%1s) is being converted to a different enum type, '%2s' on assignment.
qac-4423An expression of 'essentially enum' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4424An expression of 'essentially enum' type (%1s) is being converted to unsigned type, '%2s' on assignment.
qac-4425An expression of 'essentially enum' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4430An expression of 'essentially signed' type (%1s) is being converted to Boolean type, '%2s' on assignment.
qac-4431An expression of 'essentially signed' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4432An expression of 'essentially signed' type (%1s) is being converted to enum type, '%2s' on assignment.
qac-4434A non-constant expression of 'essentially signed' type (%1s) is being converted to unsigned type, '%2s' on assignment.
qac-4435A non-constant expression of 'essentially signed' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4437A constant expression of 'essentially signed' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4440An expression of 'essentially unsigned' type (%1s) is being converted to Boolean type, '%2s' on assignment.
qac-4441An expression of 'essentially unsigned' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4442An expression of 'essentially unsigned' type (%1s) is being converted to enum type, '%2s' on assignment.
qac-4443A non-constant expression of 'essentially unsigned' type (%1s) is being converted to a wider signed type, '%2s' on assignment.
qac-4445An expression of 'essentially unsigned' type (%1s) is being converted to floating type, '%2s' on assignment.
qac-4446A non-constant expression of 'essentially unsigned' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4447A constant expression of 'essentially unsigned' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4450An expression of 'essentially floating' type (%1s) is being converted to Boolean type, '%2s' on assignment.
qac-4451An expression of 'essentially floating' type (%1s) is being converted to character type, '%2s' on assignment.
qac-4452An expression of 'essentially floating' type (%1s) is being converted to enum type, '%2s' on assignment.
qac-4453An expression of 'essentially floating' type (%1s) is being converted to signed type, '%2s' on assignment.
qac-4454An expression of 'essentially floating' type (%1s) is being converted to unsigned type, '%2s' on assignment.
qac-4460A non-constant expression of 'essentially signed' type (%1s) is being converted to narrower signed type, '%2s' on assignment.
qac-4461A non-constant expression of 'essentially unsigned' type (%1s) is being converted to narrower unsigned type, '%2s' on assignment.
qac-4462A non-constant expression of 'essentially floating' type (%1s) is being converted to narrower floating type, '%2s' on assignment.
qac-4463A constant expression of 'essentially signed' type (%1s) is being converted to narrower signed type, '%2s' on assignment.
qac-4464A constant expression of 'essentially unsigned' type (%1s) is being converted to narrower unsigned type, '%2s' on assignment.
qac-4465A constant expression of 'essentially floating' type (%1s) is being converted to narrower floating type, '%2s' on assignment.
+
Rule-10.4RequiredBoth operands of an operator in which the usual arithmetic conversions are performed shall have the same essential type category
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1800The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this arithmetic operation.
qac-1802The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this relational operation.
qac-1803The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this equality operation.
qac-1804The %1s operand (essential type: '%2s') will be implicitly converted to a floating type, '%3s', in this conditional operation.
qac-1820The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation.
qac-1821The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this bitwise operation.
qac-1822The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this relational operation.
qac-1823The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this equality operation.
qac-1824The %1s operand is non-constant and 'essentially signed' (%2s) but will be implicitly converted to an unsigned type (%3s) in this conditional operation.
qac-1830The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation.
qac-1831The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this bitwise operation.
qac-1832The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this relational operation.
qac-1833The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this equality operation.
qac-1834The %1s operand is constant, 'essentially signed' (%2s) and negative but will be implicitly converted to an unsigned type (%3s) in this conditional operation.
qac-1840The %1s operand is constant, 'essentially signed' (%2s) and non-negative but will be implicitly converted to an unsigned type (%3s) in this arithmetic operation.
qac-1841The %1s operand is constant, 'essentially signed' (%2s) and non-negative but will be implicitly converted to an unsigned type (%3s) in this bitwise operation.
qac-1842The %1s operand is constant, 'essentially signed' (%2s) and non-negative but will be implicitly converted to an unsigned type (%3s) in this relational operation.
qac-1843The %1s operand is constant, 'essentially signed' (%2s) and non-negative but will be implicitly converted to an unsigned type (%3s) in this equality operation.
qac-1844The %1s operand is constant, 'essentially signed' (%2s) and non-negative but will be implicitly converted to an unsigned type (%3s) in this conditional operation.
qac-1850The %1s operand is 'essentially unsigned' (%2s) but will be implicitly converted to a signed type (%3s) in this arithmetic operation.
qac-1851The %1s operand is 'essentially unsigned' (%2s) but will be implicitly converted to a signed type (%3s) in this bitwise operation.
qac-1852The %1s operand is 'essentially unsigned' (%2s) but will be implicitly converted to a signed type (%3s) in this relational operation.
qac-1853The %1s operand is 'essentially unsigned' (%2s) but will be implicitly converted to a signed type (%3s) in this equality operation.
qac-1854The %1s operand is 'essentially unsigned' (%2s) but will be implicitly converted to a signed type (%3s) in this conditional operation.
qac-1860The operands of this arithmetic operator are of different 'essential signedness' but will generate a result of type 'signed int'.
qac-1861The operands of this bitwise operator are of different 'essential signedness' but will generate a result of type 'signed int'.
qac-1862The operands of this relational operator are of different 'essential signedness' but will both be promoted to 'signed int' for comparison.
qac-1863The operands of this equality operator are of different 'essential signedness' but will both be promoted to 'signed int' for comparison.
qac-1864The 2nd and 3rd operands of this conditional operator are of different 'essential signedness'. The result will be in the promoted type 'signed int'.
qac-1880The operands of this relational operator are expressions of different 'essential type' categories (%1s and %2s).
qac-1881The operands of this equality operator are expressions of different 'essential type' categories (%1s and %2s).
qac-1882The 2nd and 3rd operands of this conditional operator are expressions of different 'essential type' categories (%1s and %2s).
+
Rule-10.5AdvisoryThe value of an expression should not be cast to an inappropriate essential type
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-4301An expression of 'essentially Boolean' type (%1s) is being cast to character type '%2s'.
qac-4302An expression of 'essentially Boolean' type (%1s) is being cast to enum type '%2s'.
qac-4303An expression of 'essentially Boolean' type (%1s) is being cast to signed type '%2s'.
qac-4304An expression of 'essentially Boolean' type (%1s) is being cast to unsigned type '%2s'.
qac-4305An expression of 'essentially Boolean' type (%1s) is being cast to floating type '%2s'.
qac-4310An expression of 'essentially character' type (%1s) is being cast to Boolean type, '%2s'.
qac-4312An expression of 'essentially character' type (%1s) is being cast to enum type, '%2s'.
qac-4315An expression of 'essentially character' type (%1s) is being cast to floating type, '%2s'.
qac-4320An expression of 'essentially enum' type (%1s) is being cast to Boolean type, '%2s'.
qac-4322An expression of 'essentially enum' type (%1s) is being cast to a different enum type, '%2s'.
qac-4330An expression of 'essentially signed' type (%1s) is being cast to Boolean type '%2s'.
qac-4332An expression of 'essentially signed' type (%1s) is being cast to enum type, '%2s'.
qac-4340An expression of 'essentially unsigned' type (%1s) is being cast to Boolean type '%2s'.
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
qac-4350An expression of 'essentially floating' type (%1s) is being cast to Boolean type '%2s'.
qac-4351An expression of 'essentially floating' type (%1s) is being cast to character type '%2s'.
qac-4352An expression of 'essentially floating' type (%1s) is being cast to enum type, '%2s'.
+
Rule-10.6RequiredThe value of a composite expression shall not be assigned to an object with wider essential type
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-4490A composite expression of 'essentially signed' type (%1s) is being converted to wider signed type, '%2s' on assignment.
qac-4491A composite expression of 'essentially unsigned' type (%1s) is being converted to wider unsigned type, '%2s' on assignment.
qac-4492A composite expression of 'essentially floating' type (%1s) is being converted to wider floating type, '%2s' on assignment.
qac-4499An expression which is the result of a ~ or << operation has been converted to a wider essential type on assignment.
+
Rule-10.7RequiredIf a composite expression is used as one operand of an operator in which the usual arithmetic conversions are performed then the other operand shall not have wider essential type
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1890A composite expression of 'essentially signed' type (%1s) is being implicitly converted to a wider signed type, '%2s'.
qac-1891A composite expression of 'essentially unsigned' type (%1s) is being implicitly converted to a wider unsigned type, '%2s'.
qac-1892A composite expression of 'essentially floating' type (%1s) is being implicitly converted to a wider floating type, '%2s'.
qac-1893The 2nd and 3rd operands of this conditional operator are both 'essentially signed' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other.
qac-1894The 2nd and 3rd operands of this conditional operator are both 'essentially unsigned' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other.
qac-1895The 2nd and 3rd operands of this conditional operator are both 'essentially floating' ('%1s' and '%2s') but one is a composite expression of a narrower type than the other.
+
Rule-10.8RequiredThe value of a composite expression shall not be cast to a different essential type category or a wider essential type
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-4389A composite expression of 'essentially char' type (%1s) is being cast to a different type category, '%2s'.
qac-4390A composite expression of 'essentially signed' type (%1s) is being cast to a wider signed type, '%2s'.
qac-4391A composite expression of 'essentially unsigned' type (%1s) is being cast to a wider unsigned type, '%2s'.
qac-4392A composite expression of 'essentially floating' type (%1s) is being cast to a wider floating type, '%2s'.
qac-4393A composite expression of 'essentially signed' type (%1s) is being cast to a different type category, '%2s'.
qac-4394A composite expression of 'essentially unsigned' type (%1s) is being cast to a different type category, '%2s'.
qac-4395A composite expression of 'essentially floating' type (%1s) is being cast to a different type category, '%2s'.
qac-4398An expression which is the result of a ~ or << operation has been cast to a different essential type category.
qac-4399An expression which is the result of a ~ or << operation has been cast to a wider type.
+
Rule-11.1RequiredConversions shall not be performed between a pointer to a function and any other type
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-0302[u] Cast between a pointer to function and a floating type.
qac-0305[I] Cast between a pointer to function and an integral type.
qac-0307[u] Cast between a pointer to object and a pointer to function.
qac-0313Casting to different function pointer type.
+
Rule-11.2RequiredConversions shall not be performed between a pointer to an incomplete type and any other type
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-0308Non-portable cast involving pointer to an incomplete type.
qac-0323[C] Cast between a pointer to incomplete type and a floating type.
qac-0324[u] Cast between a pointer to incomplete type and an integral type.
qac-0325[u] Cast between a pointer to incomplete type and a pointer to function.
+
Rule-11.3RequiredA cast shall not be performed between a pointer to object type and a pointer to a different object type
+ + + + + + + + + +
QacDescription
qac-0310Casting to different object pointer type.
qac-3305Pointer cast to stricter alignment.
+
Rule-11.4AdvisoryA conversion should not be performed between a pointer to object and an integer type
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0303[I] Cast between a pointer to volatile object and an integral type.
qac-0306[I] Cast between a pointer to object and an integral type.
qac-0360An expression of pointer type is being converted to type _Bool on assignment.
qac-0361An expression of pointer type is being cast to type _Bool.
qac-0362An expression of essentially Boolean type is being cast to a pointer.
+
Rule-11.5AdvisoryA conversion should not be performed from pointer to void into pointer to object
+ + + + + + + + + +
QacDescription
qac-0316[I] Cast from a pointer to void to a pointer to object type.
qac-0317[I] Implicit conversion from a pointer to void to a pointer to object type.
+
Rule-11.6RequiredA cast shall not be performed between pointer to void and an arithmetic type
+ + + + + + + + + +
QacDescription
qac-0326[I] Cast between a pointer to void and an integral type.
qac-0327[C] Cast between a pointer to void and a floating type.
+
Rule-11.7RequiredA cast shall not be performed between pointer to object and a non-integer arithmetic type
+ + + + + + + + + +
QacDescription
qac-0301[u] Cast between a pointer to object and a floating type.
qac-0328[U] Cast between a pointer to object and an essential type other than signed/unsigned.
+
Rule-11.8RequiredA cast shall not remove any const or volatile qualification from the type pointed to by a pointer
+ + + + + + + + + +
QacDescription
qac-0311Dangerous pointer cast results in loss of const qualification.
qac-0312Dangerous pointer cast results in loss of volatile qualification.
+
Rule-11.9RequiredThe macro NULL shall be the only permitted form of integer null pointer constant
+ + + + + + + + + +
QacDescription
qac-3003This character constant is being interpreted as a null pointer constant.
qac-3004This integral constant expression is being interpreted as a null pointer constant.
+
Rule-12.1AdvisoryThe precedence of operators within expressions should be made explicit
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-3389Extra parentheses recommended to clarify the ordering of a % operator and another arithmetic operator (* / % + -).
qac-3391Extra parentheses recommended. A conditional operation is the operand of another conditional operator.
qac-3392Extra parentheses recommended. A shift, relational or equality operation is the operand of a second identical operator.
qac-3394Extra parentheses recommended. A shift, relational or equality operation is the operand of a different operator with the same precedence.
qac-3395Extra parentheses recommended. A * or / operation is the operand of a + or - operator.
qac-3396Extra parentheses recommended. A binary operation is the operand of a conditional operator.
qac-3397Extra parentheses recommended. A binary operation is the operand of a binary operator with different precedence.
qac-3433Expression operand to sizeof is not parenthesized.
+
Rule-12.2RequiredThe right hand operand of a shift operator shall lie in the range zero to one less than the width in bits of the essential type of the left hand operand
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0499Right operand of shift operator is greater than or equal to the width of the essential type of the left operand.
qac-2790Constant: Right hand operand of shift operator is negative or too large.
qac-2791Definite: Right hand operand of shift operator is negative or too large.
qac-2792Apparent: Right hand operand of shift operator is negative or too large.
qac-2793Suspicious: Right hand operand of shift operator is negative or too large.
qac-2794Possible: Tainted right hand operand of shift operator is negative or too large.
+
Rule-12.3AdvisoryThe comma operator should not be used
+ + + + + + + + + +
QacDescription
qac-3417The comma operator has been used outside a 'for' statement.
qac-3418The comma operator has been used in a 'for' statement.
+
Rule-12.4AdvisoryEvaluation of constant expressions should not lead to unsigned integer wrap-around
+ + + + + +
QacDescription
qac-2910Constant: Wraparound in unsigned arithmetic operation.
+
Rule-12.5MandatoryThe sizeof operator shall not have an operand which is a function parameter declared as 'array of type'
+ + + + + +
QacDescription
qac-1321Operand of sizeof is a function parameter of array type.
+
Rule-13.1RequiredInitializer lists shall not contain persistent side-effects
+ + + + + +
QacDescription
qac-3421Expression with persistent side effects is used in an initializer list.
+
Rule-13.2RequiredThe value of an expression and its persistent side-effects shall be the same under all permitted evaluation orders
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0400[U] '%1s' is modified more than once between sequence points - evaluation order unspecified.
qac-0401[U] '%1s' may be modified more than once between sequence points - evaluation order unspecified.
qac-0402[U] '%1s' is modified and accessed between sequence points - evaluation order unspecified.
qac-0403[U] '%1s' may be modified and accessed between sequence points - evaluation order unspecified.
qac-0404[U] More than one read access to volatile objects between sequence points.
qac-0405[U] More than one modification of volatile objects between sequence points.
+
Rule-13.3AdvisoryA full expression containing an increment (++) or decrement (--) operator should have no other potential side effects other than that caused by the increment or decrement operator
+ + + + + + + + + +
QacDescription
qac-3387A full expression containing an increment (++) or decrement (--) operator should have no potential side effects other than that caused by the increment or decrement operator.
qac-3440Using the value resulting from a ++ or -- operation.
+
Rule-13.4AdvisoryThe result of an assignment operator should not be used
+ + + + + + + + + +
QacDescription
qac-3226The result of an assignment is being used in an arithmetic operation or another assigning operation.
qac-3326The result of an assignment is being used in a logical operation.
+
Rule-13.5RequiredThe right hand operand of a logical && or || operator shall not contain persistent side effects
+ + + + + +
QacDescription
qac-3415Right hand operand of '&&' or '||' is an expression with persistent side effects.
+
Rule-13.6MandatoryThe operand of the sizeof operator shall not contain any expression which has potential side-effects
+ + + + + + + + + +
QacDescription
qac-0945[C99] Operand of sizeof is an expression of variable length array type with side effects.
qac-3307The operand of 'sizeof' is an expression with implied side effects, but they will not be evaluated.
+
Rule-14.1RequiredA loop counter shall not have essentially floating type
+ + + + + + + + + +
QacDescription
qac-3339Floating point variable used as 'while' loop control variable.
qac-3340Floating point variable used as 'for' loop control variable.
+
Rule-14.2RequiredA for loop shall be well-formed
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2461Loop control variable in this 'for' statement, %1s, has file scope.
qac-2462The variable initialized in the first expression of this 'for' statement is not the variable identified as the 'loop control variable' (%1s).
qac-2463The variable incremented in the third expression of this 'for' statement is not the variable identified as the 'loop control variable' (%1s).
qac-2464Loop control variable, %1s, modified twice in for-loop header.
qac-2467Loop control variable in this 'for' statement, %1s, is not modified inside loop.
qac-2468Loop control variable in this 'for' statement, %1s, is not modified inside loop but has file scope.
qac-2469Loop control variable in this 'for' statement, %1s, is modified in the body of the loop.
qac-2471Unable to identify a 'for' loop control variable.
qac-2472More than one possible 'for' loop control variable.
qac-2476No variable appears to be initialized in the first expression of this 'for' statement (control variable identified as %1s).
qac-2477No variable appears to be incremented in the third expression of this 'for' statement (control variable identified as %1s).
+
Rule-14.3RequiredControlling expressions shall not be invariant
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2741This 'if' controlling expression is a constant expression and its value is 'true'.
qac-2742This 'if' controlling expression is a constant expression and its value is 'false'.
qac-2990The value of this loop controlling expression is always 'true'.
qac-2991The value of this 'if' controlling expression is always 'true'.
qac-2992The value of this 'if' controlling expression is always 'false'.
qac-2993The value of this 'do - while' loop controlling expression is always 'false'. The loop will only be executed once.
qac-2994The value of this 'while' or 'for' loop controlling expression is always 'false'. The loop will not be entered.
qac-2997The first operand of this conditional operator is always 'true'.
qac-2998The first operand of this conditional operator is always 'false'.
qac-3493The first operand of this conditional operator is always constant 'true'.
qac-3494The first operand of this conditional operator is always constant 'false'.
+
Rule-14.4RequiredThe controlling expression of an if-statement and the controlling expression of an iteration-statement shall have essentially Boolean type
+ + + + + +
QacDescription
qac-3344Controlling expression is not an 'essentially Boolean' expression.
+
Rule-15.1AdvisoryThe goto statement should not be used
+ + + + + +
QacDescription
qac-2001A 'goto' statement has been used.
+
Rule-15.2RequiredThe goto statement shall jump to a label declared later in the same function
+ + + + + +
QacDescription
qac-3310This 'goto' statement involves a backward jump.
+
Rule-15.3RequiredAny label referenced by a goto statement shall be declared in the same block, or in any block enclosing the goto statement
+ + + + + +
QacDescription
qac-3327This goto statement references a label that is declared in a separate block.
+
Rule-15.4AdvisoryThere should be no more than one break or goto statement used to terminate any iteration statement
+ + + + + + + + + +
QacDescription
qac-0771More than one 'break' statement has been used to terminate this iteration statement.
qac-0772Multiple jump statements are used to terminate this iteration statement, including 'goto'.
+
Rule-15.5AdvisoryA function should have a single point of exit at the end
+ + + + + +
QacDescription
qac-2889This function has more than one 'return' path.
+
Rule-15.6RequiredThe body of an iteration-statement or a selection-statement shall be a compound-statement
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2212Body of control statement is not enclosed within braces.
qac-2214Body of control statement is on the same line and is not enclosed within braces.
qac-2218Body of switch statement is not enclosed within braces.
qac-2219Body of switch statement is on the same line and is not enclosed within braces.
qac-3402Braces are needed to clarify the structure of this 'if'-'if'-'else' statement.
+
Rule-15.7RequiredAll if ... else if constructs shall be terminated with an else statement
+ + + + + + + + + +
QacDescription
qac-2004No concluding 'else' exists in this 'if'-'else'-'if' statement.
qac-2013This 'if .. else if ' construct 'else' statement is empty.
+
Rule-16.1RequiredAll switch statements shall be well-formed
+ + + + + + + + + +
QacDescription
qac-2008Code statements precede the first label in this 'switch' construct.
qac-3234Declarations precede the first label in this 'switch' construct.
+
Rule-16.2RequiredA switch label shall only be used when the most closely-enclosing compound statement is the body of a switch statement
+ + + + + +
QacDescription
qac-2019'Switch' label is located within a nested code block.
+
Rule-16.3RequiredAn unconditional break statement shall terminate every switch-clause
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
qac-2020Final 'switch' clause does not end with an explicit 'jump' statement.
qac-2023The preceding 'switch' clause is not empty and ends with a jump statement other than 'break'.
qac-2024Final 'switch' clause ends with a 'jump' statement other than 'break'.
+
Rule-16.4RequiredEvery switch statement shall have a default label
+ + + + + + + + + +
QacDescription
qac-2002No 'default' label found in this 'switch' statement.
qac-2016This 'switch' statement 'default' clause is empty.
+
Rule-16.5RequiredA default label shall appear as either the first or the last switch label of a switch statement
+ + + + + +
QacDescription
qac-2012This 'default' label is neither the first nor the last label within the 'switch' block.
+
Rule-16.6RequiredEvery switch statement shall have at least two switch-clauses
+ + + + + +
QacDescription
qac-3315This 'switch' statement is redundant.
+
Rule-16.7RequiredA switch-expression shall not have essentially Boolean type
+ + + + + +
QacDescription
qac-0735Switch expression is of essentially Boolean type.
+
Rule-17.1RequiredThe features of shall not be used
+ + + + + + + + + + + + + +
QacDescription
qac-1337Function defined with a variable number of parameters.
m3cm-5130Use of standard header file .
m3cm-5140Use of variable arguments handling identifier: va_arg, va_start, va_end, va_copy
+
Rule-17.2RequiredFunctions shall not call themselves, either directly or indirectly
+ + + + + + + + + +
QacDescription
rcma-1520Functions are indirectly recursive.
qac-3670Recursive call to function containing this call.
+
Rule-17.3MandatoryA function shall not be declared implicitly
+ + + + + +
QacDescription
qac-3335No function declaration. Implicit declaration inserted: 'extern int %s();'.
+
Rule-17.4MandatoryAll exit paths from a function with non-void return type shall have an explicit return statement with an expression
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0745[U] 'return;' found in '%s()', which has been defined with a non-'void' return type.
qac-2887Function 'main' ends with an implicit 'return' statement.
qac-2888This function has been declared with a non-void 'return' type but ends with an implicit 'return ;' statement.
qac-3113[U] 'return' statement includes no expression but function '%s()' is implicitly of type 'int'.
qac-3114[U] Function '%s()' is implicitly of type 'int' but ends without returning a value.
+
Rule-17.5AdvisoryThe function argument corresponding to a parameter declared to have an array type shall have an appropriate number of elements
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-2781Definite: Function argument has fewer elements than the array dimension in the parameter declaration for non-inlined call.
qac-2782Apparent: Function argument has fewer elements than the array dimension in the parameter declaration for non-inlined call.
qac-2783Suspicious: Function argument has fewer elements than the array dimension in the parameter declaration for non-inlined call.
qac-2784Possible: Function argument has fewer elements than the array dimension in the parameter declaration for non-inlined call.
+
Rule-17.6MandatoryThe declaration of an array parameter shall not contain the static keyword between the [ ]
+ + + + + +
QacDescription
qac-1058[C99] The keyword 'static' is used in the declaration of a function parameter of array type.
+
Rule-17.7RequiredThe value returned by a function having non-void return type shall be used
+ + + + + +
QacDescription
qac-3200'%s' returns a value which is not being used.
+
Rule-17.8AdvisoryA function parameter should not be modified
+ + + + + + + + + + + + + +
QacDescription
qac-1338The parameter '%1s' is being modified.
qac-1339Evaluating the address of the parameter '%1s'.
qac-1340Storing the address of the parameter '%1s' in a constant pointer.
+
Rule-18.1RequiredA pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operand
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2840Constant: Dereference of an invalid pointer value.
qac-2841Definite: Dereference of an invalid pointer value.
qac-2842Apparent: Dereference of an invalid pointer value.
qac-2843Suspicious: Dereference of an invalid pointer value.
qac-2930Constant: Computing an invalid pointer value.
qac-2931Definite: Computing an invalid pointer value.
qac-2932Apparent: Computing an invalid pointer value.
qac-2933Suspicious: Computing an invalid pointer value.
qac-2935Constant: Dereference of an invalid char pointer value.
qac-2936Definite: Dereference of an invalid char pointer value.
qac-2937Apparent: Dereference of an invalid char pointer value.
qac-2938Suspicious: Dereference of an invalid char pointer value.
+
Rule-18.2RequiredSubtraction between pointers shall only be applied to pointers that address elements of the same array
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2668Subtraction of a pointer to an array and a pointer to a non-array.
qac-2761Definite: Subtracting pointers that address different objects.
qac-2762Apparent: Subtracting pointers that address different objects.
qac-2763Suspicious: Subtracting pointers that address different objects.
qac-2766Definite: Subtracting pointers that address different members of the same object.
qac-2767Apparent: Subtracting pointers that address different members of the same object.
qac-2768Suspicious: Subtracting pointers that address different members of the same object.
+
Rule-18.3RequiredThe relational operators >, >=, < and <= shall not be applied to objects of pointer type except where they point into the same object
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-2669Comparison of a pointer to an array and a pointer to a non-array.
qac-2771Definite: Comparing pointers that address different objects.
qac-2772Apparent: Comparing pointers that address different objects.
qac-2773Suspicious: Comparing pointers that address different objects.
+
Rule-18.4AdvisoryThe +, -, += and -= operators should not be applied to an expression of pointer type
+ + + + + +
QacDescription
qac-0488Performing pointer arithmetic.
+
Rule-18.5AdvisoryDeclarations should contain no more than two levels of pointer nesting
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-3260Typedef defined with more than 2 levels of indirection.
qac-3261Member of struct/union defined with more than 2 levels of indirection.
qac-3262Object defined or declared with more than 2 levels of indirection.
qac-3263Function defined or declared with a return type which has more than 2 levels of indirection.
+
Rule-18.6RequiredThe address of an object with automatic storage shall not be copied to another object that persists after the first object has ceased to exist
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2916Definite: Storing the address of an object in a pointer that has greater lifetime.
qac-2917Apparent: Storing the address of an object in a pointer that has greater lifetime.
qac-2918Suspicious: Storing the address of an object in a pointer that has greater lifetime.
qac-3217Address of automatic object exported to a pointer with linkage or wider scope.
qac-3225Address of automatic object exported using a function parameter.
qac-3230Address of automatic object assigned to local pointer with static storage duration.
qac-4140Address of automatic object exported in function return value.
+
Rule-18.7RequiredFlexible array members shall not be declared
+ + + + + +
QacDescription
qac-1060[C99] A flexible array member has been declared.
+
Rule-18.8RequiredVariable-length array types shall not be used
+ + + + + + + + + +
QacDescription
qac-1051[C99] A variable length array has been declared.
qac-1052[C99] A variable length array of unspecified size has been declared.
+
Rule-19.1MandatoryAn object shall not be assigned or copied to an overlapping object
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-0681[U] Assignment between two incompatible members of the same union.
qac-2776Definite: Copy between overlapping objects.
qac-2777Apparent: Copy between overlapping objects.
qac-2778Suspicious: Copy between overlapping objects.
+
Rule-19.2AdvisoryThe union keyword should not be used
+ + + + + + + + + +
QacDescription
qac-0750A union type specifier has been defined.
qac-0759An object of union type has been defined.
+
Rule-2.1RequiredA project shall not contain unreachable code
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0594Negative 'case' label expression is incompatible with unsigned controlling expression in 'switch' statement.
qac-1460'Switch' label value, %1s, not contained in enum type.
rcma-1503The function '%1s' is defined but is not used within this project.
qac-2744This 'while' or 'for' loop controlling expression is a constant expression and its value is 'false'. The loop will not be entered.
qac-2880This code is unreachable.
qac-2882This 'switch' statement will bypass the initialization of local variables.
qac-3219Static function '%1s()' is not used within this translation unit.
+
Rule-2.2RequiredThere shall be no dead code
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2980The value of this function parameter is never used before being modified.
qac-2981This initialization is redundant. The value of this object is never used before being modified.
qac-2982This assignment is redundant. The value of this object is never used before being modified.
qac-2983This assignment is redundant. The value of this object is never subsequently used.
qac-2985This operation is redundant. The value of the result is always that of the left-hand operand.
qac-2986This operation is redundant. The value of the result is always that of the right-hand operand.
qac-2987This function call produces no side effects and is redundant.
qac-2995The result of this logical operation is always 'true'.
qac-2996The result of this logical operation is always 'false'.
qac-3110The left-hand operand of this ',' has no side effects.
qac-3112This statement has no side-effect - it can be removed.
qac-3404Statement contains a redundant * operator at top level. *p++ means *(p++) not (*p)++.
qac-3422Statement contains a redundant operator at top level.
qac-3423Statement contains a redundant cast at top level.
qac-3424Statement contains a redundant & or | at top level.
qac-3425One branch of this conditional operation is a redundant expression.
qac-3426Right hand side of comma expression has no side effect and its value is not used.
qac-3427Right hand side of logical operator has no side effect and its value is not used.
+
Rule-2.3AdvisoryA project should not contain unused type declarations
+ + + + + + + + + +
QacDescription
rcma-1535The typedef '%1s' is declared but not used within this project.
qac-3205The identifier '%1s' is not used and could be removed.
+
Rule-2.4AdvisoryA project should not contain unused tag declarations
+ + + + + + + + + + + + + +
QacDescription
rcma-1536The tag '%1s' is declared but not used within this project.
rcma-1755The tag '%1s' is declared but not used within this project.
qac-3213The tag '%1s' is not used and could be removed.
+
Rule-2.5AdvisoryA project should not contain unused macro declarations
+ + + + + +
QacDescription
rcma-1534The macro '%1s' is declared but not used within this project.
+
Rule-2.6AdvisoryA function should not contain unused label declarations
+ + + + + +
QacDescription
qac-3202The label '%s:' is not used in this function and could be removed.
+
Rule-2.7AdvisoryThere should be no unused parameters in functions
+ + + + + +
QacDescription
qac-3206The parameter '%s' is not used in this function.
+
Rule-20.1Advisory#include directives should only be preceded by preprocessor directives or comments
+ + + + + +
QacDescription
m3cm-5087Use of #include directive after code fragment.
+
Rule-20.10AdvisoryThe # and ## preprocessor operators should not be used
+ + + + + + + + + +
QacDescription
qac-0341Using the stringify operator '#'.
qac-0342Using the glue operator '##'.
+
Rule-20.11RequiredA macro parameter immediately following a # operator shall not immediately be followed by a ## operator
+ + + + + +
QacDescription
qac-0892This macro parameter is preceded by '#' and followed by '##'.
+
Rule-20.12RequiredA macro parameter used as an operand to the # or ## operators, which is itself subject to further macro replacement, shall only be used as an operand to these operators
+ + + + + + + + + +
QacDescription
qac-0893Macro argument '%1s' is both expanded as a macro and used with the '%2s' operator.
qac-0895Macro parameter '%s' is inconsistently subject to macro replacement.
+
Rule-20.13RequiredA line whose first token is # shall be a valid preprocessing directive
+ + + + + +
QacDescription
qac-3115Unrecognized preprocessing directive has been ignored because of conditional inclusion directives.
+
Rule-20.14RequiredAll #else, #elif and #endif preprocessor directives shall reside in the same file as the #if, #ifdef or #ifndef directive to which they are related
+ + + + + + + + + +
QacDescription
qac-3317'#if...' not matched by '#endif' in included file. This is probably an error.
qac-3318'#else'/'#elif'/'#endif' in included file matched '#if...' in parent file. This is probably an error.
+
Rule-20.2RequiredThe ', " or \ characters and the /* or // character sequences shall not occur in a header file name
+ + + + + + + + + + + + + +
QacDescription
qac-0813[U] Using any of the characters ' " or /* in '#include <%s>' gives undefined behaviour.
qac-0814[U] Using the characters ' or /* in '#include "%s"' gives undefined behaviour.
qac-0831[E] Use of '\\' in this '#include' line is a PC extension - this usage is non-portable.
+
Rule-20.3RequiredThe #include directive shall be followed by either a or "filename" sequence
+ + + + + + + + + + + + + +
QacDescription
qac-0817[S] Closing quote or bracket '>' missing from include filename.
qac-0821[C] '#include' does not identify a header or source file that can be processed.
qac-0840[E] Extra tokens at end of #include directive.
+
Rule-20.4RequiredA macro shall not be defined with the same name as a keyword
+ + + + + +
QacDescription
qac-3439Macro redefines a keyword.
+
Rule-20.4-C99RequiredA macro shall not be defined with the same name as a keyword
+ + + + + +
QacDescription
qac-3468The name of this macro is a reserved identifier in C90 and a keyword in C99.
+
Rule-20.5Advisory#undef should not be used
+ + + + + +
QacDescription
qac-0841Using '#undef'.
+
Rule-20.6RequiredTokens that look like a preprocessing directive shall not occur within a macro argument
+ + + + + +
QacDescription
qac-0853[U] Macro arguments contain a sequence of tokens that has the form of a preprocessing directive.
+
Rule-20.7RequiredExpressions resulting from the expansion of macro parameters shall be enclosed in parentheses
+ + + + + + + + + +
QacDescription
qac-3430Macro argument expression may require parentheses.
qac-3432Simple macro argument expression is not parenthesized.
+
Rule-20.8RequiredThe controlling expression of a #if or #elif preprocessing directive shall evaluate to 0 or 1
+ + + + + +
QacDescription
qac-0894'#%s' directive controlling expression does not evaluate to zero or one.
+
Rule-20.9RequiredAll identifiers used in the controlling expression of #if or #elif preprocessing directives shall be #define'd before evaluation
+ + + + + +
QacDescription
qac-3332The macro '%s' used in this '#if' or '#elif' expression is not defined.
+
Rule-21.1Required#define and #undef shall not be used on a reserved identifier or reserved macro name
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0603[U] The macro identifier '%s' is reserved.
qac-0836[U] Definition of macro named 'defined'.
qac-0837[U] Use of '#undef' to remove the operator 'defined'.
qac-0848[U] Attempting to #undef '%s', which is a predefined macro name.
qac-0854[U] Attempting to #define '%s', which is a predefined macro name.
qac-4600The macro '%1s' is also defined in '<%2s>'.
qac-4601The macro '%1s' is the name of an identifier in '<%2s>'.
qac-4620The macro '%1s' may also be defined as a macro in '<%2s>'.
qac-4621The macro '%1s' may also be defined as a typedef in '<%2s>'.
+
Rule-21.10RequiredThe Standard Library time and date functions shall not be used
+ + + + + + + + + +
QacDescription
m3cm-5127Use of standard header file .
m3cm-5139Use of time handling identifier: clock, difftime, mktime, time, timespec_get, asctime, ctime, gmtime, localtime, strftime, wcsftime
+
Rule-21.11RequiredThe standard header file shall not be used
+ + + + + + + + + +
QacDescription
m3cm-5131Use of standard header file .
m3cm-5141Use of type-generic math identifier
+
Rule-21.12AdvisoryThe exception handling features of should not be used
+ + + + + +
QacDescription
m3cm-5136Use of exception handling identifier: feclearexcept, fegetexceptflag, feraiseexcept, fesetexceptflag or fetestexcept.
+
Rule-21.13MandatoryAny value passed to a function in shall be representable as an unsigned char or be the value EOF
+ + + + + + + + + + + + + +
QacDescription
qac-2796Definite: Calling a standard library character handling function with an invalid character value.
qac-2797Apparent: Calling a standard library character handling function with an invalid character value.
qac-2798Suspicious: Calling a standard library character handling function with an invalid character value.
+
Rule-21.14RequiredThe Standard Library function memcmp shall not be used to compare null terminated strings
+ + + + + + + + + +
QacDescription
qac-2785Constant: Null terminated string is being passed as argument to Standard Library function memcmp.
qac-2786Definite: Null terminated string is being passed as argument to Standard Library function memcmp.
+
Rule-21.15RequiredThe pointer arguments to the Standard Library functions memcpy, memmove and memcmp shall be pointers to qualified or unqualified versions of compatible types
+ + + + + + + + + + + + + +
QacDescription
qac-1487[I] Comparing the representations of objects of different types.
qac-1495[I] Destination and source objects have incompatible types.
qac-1496[I] Destination and source objects may have incompatible types.
+
Rule-21.16RequiredThe pointer arguments to the Standard Library function memcpy shall point to either a pointer type, an essentially signed type, an essentially unsigned type, an essentially Boolean type or an essentially enum type
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1488[I] Comparison of a struct object representation.
qac-1489[I] Comparison of a union object representation.
qac-1490[I] Comparison of a floating point object representation.
qac-1491[I] Comparison of an object representation.
qac-1497Comparison of a string object representation.
+
Rule-21.17MandatoryUse of the string handling functions from shall not result in accesses beyond the bounds of the objects referenced by their pointer parameters
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2835Constant: Non-null terminated string used in a string function.
qac-2836Definite: Non-null terminated string used in a string function.
qac-2935Constant: Dereference of an invalid char pointer value.
qac-2936Definite: Dereference of an invalid char pointer value.
qac-2937Apparent: Dereference of an invalid char pointer value.
qac-2938Suspicious: Dereference of an invalid char pointer value.
+
Rule-21.18MandatoryThe size_t argument passed to any function in shall have an appropriate value
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2840Constant: Dereference of an invalid pointer value.
qac-2841Definite: Dereference of an invalid pointer value.
qac-2842Apparent: Dereference of an invalid pointer value.
qac-2843Suspicious: Dereference of an invalid pointer value.
qac-2845Constant: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2846Definite: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2847Apparent: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2848Suspicious: Maximum number of characters to be read/written is larger than the target buffer size.
qac-2865Constant: Using 0 as size parameter of a function call.
qac-2866Definite: Using 0 as size parameter of a function call.
qac-2867Apparent: Using 0 as size parameter of a function call.
qac-2868Suspicious: Using 0 as size parameter of a function call.
qac-2935Constant: Dereference of an invalid char pointer value.
qac-2936Definite: Dereference of an invalid char pointer value.
qac-2937Apparent: Dereference of an invalid char pointer value.
qac-2938Suspicious: Dereference of an invalid char pointer value.
qac-4880Constant: Pointed to object has smaller size than the size_t argument.
qac-4881Definite: Pointed to object has smaller size than the size_t argument.
qac-4882Apparent: Pointed to object has smaller size than the size_t argument.
qac-4883Suspicious: Pointed to object has smaller size than the size_t argument.
+
Rule-21.19MandatoryThe pointers returned by the Standard Library functions lovaleconv, getenv, setlocale or strerror shall only be used as if they have pointer to const-qualified type
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-1492The result of library function '%1s' is used to modify the referenced object.
qac-1493The result of library function '%1s' is used as a pointer to a modifiable object.
qac-1494The result of library function '%1s' might be modified.
qac-1498The string referenced by type 'struct lconv' member '%1s' is being modified.
+
Rule-21.2RequiredA reserved identifier or macro name shall not be declared
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0602[U] The identifier '%s' is reserved for use by the library.
qac-4602The identifier '%1s' is declared as a macro in '<%2s>'.
qac-4603The object/function '%1s'is being defined with the same name as an ordinary identifier defined in '<%2s>'.
qac-4604The object/function '%1s' is being declared with the same name as an ordinary identifier defined in '<%2s>'.
qac-4605The typedef '%1s' is also defined in '<%2s>'.
qac-4606The typedef '%1s' has the same name as another ordinary identifier in '<%2s>'.
qac-4607The enum constant '%1s' has the same name as another ordinary identifier in '<%2s>'.
qac-4608The tag '%1s' is also defined in '<%2s>'.
+
Rule-21.20MandatoryThe pointer returned by the Standard Library functions asctime, ctime, gmtime, localtime, localeconv, getenv, setlocale, or strerror shall not be used following a subsequent call to the same function
+ + + + + + + + + + + + + +
QacDescription
qac-2681Definite: Using an invalidated value '%s' returned from a Standard Library function.
qac-2682Apparent: Using an invalidated value '%s' returned from a Standard Library function.
qac-2683Suspicious: Using an invalidated value '%s' returned from a Standard Library function.
+
Rule-21.21RequiredThe Standard Library system of shall not be used
+ + + + + +
QacDescription
m3cm-5150Use of function: system.
+
Rule-21.3RequiredThe memory allocation and deallocation functions of shall not be used
+ + + + + +
QacDescription
m3cm-5118Use of memory allocation or deallocation function: calloc, malloc, realloc or free.
+
Rule-21.4RequiredThe standard header file shall not be used
+ + + + + + + + + +
QacDescription
m3cm-5132Use of standard header file .
m3cm-5137Use of nonlocal jump identifier: setjmp, longjmp
+
Rule-21.5RequiredThe standard header file shall not be used
+ + + + + + + + + +
QacDescription
m3cm-5123Use of standard header file .
m3cm-5138Use of signal handling identifier: signal, raise
+
Rule-21.6RequiredThe Standard Library input/output functions shall not be used
+ + + + + +
QacDescription
m3cm-5124The Standard Library input/output functions shall not be used
+
Rule-21.7RequiredThe atof, atoi, atol and atoll functions of shall not be used
+ + + + + +
QacDescription
m3cm-5125Use of function: atof, atoi, atol or atoll.
+
Rule-21.8RequiredThe Standard Library termination functions of shall not be used
+ + + + + + + + + + + + + + + + + +
QacDescription
m3cm-5128Use of function: getenv.
m3cm-5150Use of function: system.
m3cm-5151Use of function: abort or exit.
m3cm-5152Use of function: _Exit or quick_exit.
+
Rule-21.9RequiredThe library functions bsearch and qsort of shall not be used
+ + + + + +
QacDescription
m3cm-5135Use of function: bsearch or qsort.
+
Rule-22.1RequiredAll resources obtained dynamically by means of Standard Library functions shall be explicitly released
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2701Definite: Opened file is not closed.
qac-2702Apparent: Opened file is not closed.
qac-2703Suspicious: Opened file is not closed.
qac-2706Definite: Allocated memory is not deallocated.
qac-2707Apparent: Allocated memory is not deallocated.
qac-2708Suspicious: Allocated memory is not deallocated.
qac-2736Definite: Created resource is not destroyed.
qac-2737Apparent: Created resource is not destroyed.
qac-2738Suspicious: Created resource is not destroyed.
+
Rule-22.10RequiredThe value of errno shall only be tested when the last function to be called was an errno-setting-function
+ + + + + +
QacDescription
qac-2503Testing of 'errno' is not immediately preceded by a call to an 'errno' setting function.
+
Rule-22.2MandatoryA block of memory shall only be freed if it was allocated by means of a Standard Library function
+ + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2716Definite: Memory deallocated multiple times.
qac-2717Apparent: Memory deallocated multiple times.
qac-2718Suspicious: Memory deallocated multiple times.
qac-2721Definite: Deallocation of non dynamic memory.
qac-2722Apparent: Deallocation of non dynamic memory.
qac-2723Suspicious: Deallocation of non dynamic memory.
+
Rule-22.3RequiredThe same file shall not be open for read and write access at the same time on different streams
+ + + + + + + + + + + + + +
QacDescription
qac-2691Definite: The same file will be open with write access and another mode.
qac-2692Apparent: The same file will be open with write access and another mode.
qac-2693Suspicious: The same file will be open with write access and another mode.
+
Rule-22.4MandatoryThere shall be no attempt to write to a stream which has been opened as read-only
+ + + + + + + + + + + + + +
QacDescription
qac-2686Definite: Writing to a file opened for reading.
qac-2687Apparent: Writing to a file opened for reading.
qac-2688Suspicious: Writing to a file opened for reading.
+
Rule-22.5MandatoryA pointer to a FILE object shall not be dereferenced
+ + + + + + + + + +
QacDescription
qac-1485A pointer to a FILE object is dereferenced.
qac-1486A pointer to a FILE object is converted to a different type.
+
Rule-22.6MandatoryThe value of a pointer to a FILE shall not be used after the associated stream has been closed
+ + + + + + + + + + + + + +
QacDescription
qac-2696Definite: Attempt to access a file which has been closed.
qac-2697Apparent: Attempt to access a file which has been closed.
qac-2698Suspicious: Attempt to access a file which has been closed.
+
Rule-22.7RequiredThe macro EOF shall on ly be compared with the unmodified return value from any Standard Library function capable of returning EOF
+ + + + + + + + + + + + + +
QacDescription
qac-2671Definite: The value being compared with macro EOF does not originate from an EOF returning function.
qac-2676Definite: The value originating from an EOF returning function was modified before being compared with macro EOF.
qac-2678Suspicious: The value originating from an EOF returning function was modified before being compared with macro EOF.
+
Rule-22.8RequiredThe value of errno shall be set to zero prior to a call to an errno-setting-function
+ + + + + +
QacDescription
qac-2500Call to '%s' is not immediately preceded by the zero-ing of 'errno'.
+
Rule-22.9RequiredThe value of errno shall be tested against zero after calling an errno-setting-function
+ + + + + +
QacDescription
qac-2501Call to '%s' is not immediately followed by the testing of 'errno'.
+
Rule-3.1RequiredThe character sequences /* and // shall not be used within a comment.
+ + + + + +
QacDescription
qac-3108Nested comments are not recognized in the ISO standard.
+
Rule-3.2RequiredLine-splicing shall not be used in // comments.
+ + + + + +
QacDescription
m3cm-5134C++ style comment uses line splicing.
+
Rule-4.1RequiredOctal and hexadecimal escape sequences shall be terminated
+ + + + + + + + + +
QacDescription
qac-3636Octal escape sequence '%s' is not terminated.
qac-3637Hexadecimal escape sequence '%s' is not terminated.
+
Rule-4.2AdvisoryTrigraphs should not be used
+ + + + + +
QacDescription
qac-3601Trigraphs (??x) are an ISO feature.
+
Rule-5.1RequiredExternal identifiers shall be distinct
+ + + + + +
QacDescription
qac-0777[U] External identifier does not differ from other identifier(s) (e.g. '%1s') within the specified number of significant characters.
+
Rule-5.2RequiredIdentifiers declared in the same scope and name space shall be distinct
+ + + + + +
QacDescription
qac-0779[U] Identifier does not differ from other identifier(s) (e.g. '%1s') within the specified number of significant characters.
+
Rule-5.3RequiredAn identifier declared in an inner scope shall not hide an identifier declared in an outer scope
+ + + + + + + + + + + + + +
QacDescription
qac-0795Identifier matches other identifier(s) (e.g. '%1s') in an outer scope within the specified number of significant characters.
qac-2547This declaration of tag '%s' hides a more global declaration.
qac-3334This declaration of '%1s' hides a more global declaration.
+
Rule-5.4RequiredMacro identifiers shall be distinct
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-0788This identifier, '%1s', is used as both a macro name and a function-like macro parameter name.
qac-0791[U] Macro identifier does not differ from other macro identifier(s) (e.g. '%1s') within the specified number of significant characters.
qac-0797This identifier, '%1s', is used as both a macro name and a function-like macro parameter name.
qac-0798This identifier, '%1s', is used as both a macro name and a function-like macro parameter name.
+
Rule-5.5RequiredIdentifiers shall be distinct from macro names
+ + + + + + + + + +
QacDescription
qac-0784Identifier '%1s' is also used as a macro name.
qac-0787Identifier does not differ from other macro name(s) (e.g. '%1s') within the specified number of significant characters.
+
Rule-5.6RequiredA typedef name shall be a unique identifier
+ + + + + + + + + + + + + +
QacDescription
rcma-1506The identifier '%1s' is declared as a typedef and is used elsewhere for a different kind of declaration.
rcma-1507'%1s' is used as a typedef for different types.
rcma-1508The typedef '%1s' is declared in more than one location.
+
Rule-5.7RequiredA tag name shall be a unique identifier
+ + + + + + + + + +
QacDescription
rcma-1750'%1s' has multiple definitions.
qac-2547This declaration of tag '%s' hides a more global declaration.
+
Rule-5.8RequiredIdentifiers that define objects or functions with external linkage shall be unique
+ + + + + + + + + + + + + +
QacDescription
rcma-1525Object/function '%1s' with external linkage has same identifier as another object/function with internal linkage.
rcma-1526Object '%1s' with no linkage has same identifier as another object/function with external linkage.
rcma-1756External identifier '%1s' shall be unique.
+
Rule-5.9AdvisoryIdentifiers that define objects or functions with internal linkage should be unique
+ + + + + + + + + + + + + +
QacDescription
rcma-1525Object/function '%1s' with external linkage has same identifier as another object/function with internal linkage.
rcma-1527Object/function '%1s' with internal linkage has same identifier as another object/function with internal linkage.
rcma-1528Object '%1s' with no linkage has same identifier as another object/function with internal linkage.
+
Rule-6.1RequiredBit-fields shall only be declared with an appropriate type
+ + + + + + + + + +
QacDescription
qac-0634[I] Bit-field %1s in %2s has not been declared explicitly as unsigned or signed.
qac-0635[C99] Bit-field %1s in %2s has been declared with a type not explicitly supported.
+
Rule-6.2RequiredSingle-bit named bit fields shall not be of a signed type
+ + + + + +
QacDescription
qac-3660Named bit-field consisting of a single bit declared with a signed type.
+
Rule-7.1RequiredOctal constants shall not be used
+ + + + + + + + + +
QacDescription
qac-0336Macro defined as an octal constant.
qac-0339Octal constant used.
+
Rule-7.2RequiredA "u" or "U" suffix shall be applied to all integer constants that are represented in an unsigned type
+ + + + + +
QacDescription
qac-1281Integer literal constant is of an unsigned type but does not include a "U" suffix.
+
Rule-7.3RequiredThe lowercase character "l" shall not be used in a literal suffix
+ + + + + +
QacDescription
qac-1280A lowercase letter L (l) has been used in an integer or floating suffix.
+
Rule-7.4RequiredA string literal shall not be assigned to an object unless the object's type is "pointer to const-qualified char"
+ + + + + + + + + + + + + +
QacDescription
qac-0752String literal passed as argument to function whose parameter is not a 'pointer to const'.
qac-0753String literal assigned to pointer which is not a 'pointer to const'.
qac-0754[U] String literal is being modified.
+
Rule-8.1RequiredTypes shall be explicitly specified
+ + + + + + + + + +
QacDescription
qac-2050The 'int' type specifier has been omitted from a function declaration.
qac-2051The 'int' type specifier has been omitted from an object declaration.
+
Rule-8.10RequiredAn inline function shall be declared with the static storage class
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-3240inline function '%1s' is being defined with external linkage.
qac-3241This inline function declaration for '%1s' is implicitly static.
qac-3242This inline function declaration for '%1s' prevents it from being defined with internal linkage.
qac-3243inline function '%1s' is also an 'external definition'.
+
Rule-8.11AdvisoryWhen an array with external linkage is declared, its size should be explicitly specified
+ + + + + +
QacDescription
qac-3684Array declared with unknown size.
+
Rule-8.12RequiredWithin an enumerator list, the value of an implicitly-specified enumeration constant shall be unique
+ + + + + +
QacDescription
qac-0724The value of this implicitly-specified enumeration constant is not unique.
+
Rule-8.13AdvisoryA pointer should point to a const-qualified type whenever possible
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-3673The object addressed by the pointer parameter '%1s' is not modified and so the pointer could be of type 'pointer to const'.
qac-3677The elements of the array parameter '%1s' are not modified and so they could be qualified as 'const'.
qac-3678The object referenced by '%1s' is not modified through it, so '%1s' could be declared with type '%2s'.
qac-3679The object referenced by '%1s' is not modified through it, so '%1s' could be declared with type '%2s'.
+
Rule-8.14RequiredThe restrict type qualifier shall not be used
+ + + + + +
QacDescription
qac-1057[C99] The keyword 'restrict' has been used.
+
Rule-8.2RequiredFunction types shall be in prototype form with named parameters
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-1335Parameter identifiers missing in function prototype declaration.
qac-1336Parameter identifiers missing in declaration of a function type.
qac-3001Function has been declared with an empty parameter list.
qac-3002Defining '%1s()' with an identifier list and separate parameter declarations is an obsolescent feature.
qac-3007"void" has been omitted when defining a function with no parameters.
+
Rule-8.3RequiredAll declarations of an object or function shall use the same names and type qualifiers
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-0606Object '%s' is declared using typedefs which are different to those in a previous declaration.
qac-0624Function '%s' is declared using typedefs which are different to those in a previous declaration.
qac-1330The parameter identifiers in this function declaration differ from those in a previous declaration.
qac-3675Function parameter declared with type qualification which differs from previous declaration.
+
Rule-8.4RequiredA compatible declaration shall be visible when an object or function with external linkage is defined
+ + + + + + + + + +
QacDescription
qac-3331The definition for identifier '%s' with external linkage conflicts with a previous declaration in the same scope.
qac-3408'%1s' has external linkage and is being defined without any previous declaration.
+
Rule-8.5RequiredAn external object or function shall be declared once in one and only one file
+ + + + + + + + + + + + + +
QacDescription
rcma-1513Identifier '%1s' with external linkage has separate non-defining declarations in more than one location.
qac-3449Multiple declarations of external object or function.
qac-3451The global identifier '%s' has been declared in more than one file.
+
Rule-8.6RequiredAn identifier with external linkage shall have exactly one external definition
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-0630[U] More than one definition of '%s' (with external linkage).
rcma-1509'%1s' has external linkage and has multiple definitions.
rcma-1752The object '%1s' with external linkage is declared but not defined within this project.
rcma-1753The function '%1s' with external linkage is declared but not defined within this project.
qac-3406Object/function '%s', with external linkage, has been defined in a header file.
+
Rule-8.7AdvisoryFunctions and objects should not be defined with external linkage if they are referenced in only one translation unit
+ + + + + + + + + + + + + +
QacDescription
rcma-1504The object '%1s' is only referenced in the translation unit where it is defined.
rcma-1505The function '%1s' is only referenced in the translation unit where it is defined.
rcma-1514The object '%1s' is only referenced by function '%2s', in the translation unit where it is defined
+
Rule-8.8RequiredThe static storage class specifier shall be used in all declarations of objects and functions that have internal linkage
+ + + + + +
QacDescription
qac-3224This identifier has previously been declared with internal linkage but is not declared here with the static storage class specifier.
+
Rule-8.9AdvisoryAn object should be defined at block scope if its identifier only appears in a single function
+ + + + + + + + + + + + + +
QacDescription
rcma-1514The object '%1s' is only referenced by function '%2s', in the translation unit where it is defined
rcma-1533The object '%1s' is only referenced by function '%2s'.
qac-3218File scope static, '%1s', is only accessed in one function.
+
Rule-9.1MandatoryThe value of an object with automatic storage duration shall not be read before it has been set
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2883This 'goto' statement will always bypass the initialization of local variables.
qac-2961Definite: Using value of uninitialized automatic object '%s'.
qac-2962Apparent: Using value of uninitialized automatic object '%s'.
qac-2963Suspicious: Using value of uninitialized automatic object '%s'.
qac-2971Definite: Passing address of uninitialized object '%s' to a function parameter declared as a pointer to const.
qac-2972Apparent: Passing address of uninitialized object '%s' to a function parameter declared as a pointer to const.
qac-2973Suspicious: Passing address of uninitialized object '%s' to a function parameter declared as a pointer to const.
+
Rule-9.2RequiredThe initializer for an aggregate or union shall be enclosed in braces
+ + + + + + + + + + + + + +
QacDescription
qac-0692Union initializer is missing the optional {.
qac-0693Struct initializer is missing the optional {.
qac-0694Array initializer is missing the optional {.
+
Rule-9.3RequiredArrays shall not be partially initialized
+ + + + + + + + + +
QacDescription
qac-0686Array has fewer initializers than its declared size. Default initialization is applied to the remainder of the array elements.
qac-0691Array initialized with designators has fewer initializers than its declared size. Default initialization is applied to the remainder of the array elements.
+
Rule-9.4RequiredAn element of an object shall not be initialized more than once
+ + + + + + + + + + + + + +
QacDescription
qac-1397Array element '%s' has already been initialized.
qac-1398Structure member '%s' has already been initialized.
qac-1399A union member has already been initialized.
+
Rule-9.5RequiredWhere designated initializers are used to initialize an array object the size of the array shall be specified explicitly
+ + + + + +
QacDescription
qac-3676Designators are used to initialize an array of unspecified size.
+
+
+
+ +This section targets to provide an overview of Guidelines Recategorization Plan. +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GuidelineDescriptionCategoryRevised Category
Dir-1.1Any implementation-defined behaviour on which the output of the program depends shall be documented and understoodRequiredRequired
Dir-1.1-C99Any implementation-defined behaviour on which the output of the program depends shall be documented and understoodRequiredRequired
Dir-2.1All source files shall compile without any compilation errorsRequiredDisapplied
Dir-3.1All code shall be traceable to documented requirementsRequiredDisapplied
Dir-4.1Run-time failures shall be minimizedRequiredRequired
Dir-4.10Precautions shall be taken in order to prevent the contents of a header file being included more then onceRequiredRequired
Dir-4.11The validity of values passed to library functions shall be checkedRequiredDisapplied
Dir-4.12Dynamic memory allocation shall not be usedRequiredRequired
Dir-4.13Functions which are designed to provide operations on a resource should be called in an appropriate sequenceAdvisoryAdvisory
Dir-4.14The validity of values received from external sources shall be checkedRequiredRequired
Dir-4.2All usage of assembly language should be documentedAdvisoryAdvisory
Dir-4.3Assembly language shall be encapsulated and isolatedRequiredRequired
Dir-4.4Sections of code should not be "commented out"AdvisoryAdvisory
Dir-4.5Identifiers in the same name space with overlapping visibility should be typographically unambiguousAdvisoryAdvisory
Dir-4.6typedefs that indicate size and signedness should be used in place of the basic numerical typesAdvisoryAdvisory
Dir-4.7If a function returns error information, then that error information shall be testedRequiredDisapplied
Dir-4.8If a pointer to a structure or union is never dereferenced within a translation unit, then the implementation of the object should be hiddenAdvisoryDisapplied
Dir-4.9A function should be used in preference to a function-like macro where they are interchangeableAdvisoryDisapplied
Rule-1.1The program shall contain no violations of the standard C syntax and constraints, and shall not exceed the implementation's translation limitsRequiredRequired
Rule-1.1-C99The program shall contain no violations of the standard C syntax and constraints, and shall not exceed the implementation's translation limitsRequiredRequired
Rule-1.2Language extensions should not be usedAdvisoryAdvisory
Rule-1.2-C99Language extensions should not be usedAdvisoryAdvisory
Rule-1.3There shall be no occurrence of undefined or critical unspecified behaviourRequiredRequired
Rule-1.4Emergent language features shall not be usedRequiredRequired
Rule-10.1Operands shall not be of an inappropriate essential type.RequiredRequired
Rule-10.2Expressions of essentially character type shall not be used inappropriately in addition and subtraction operationsRequiredRequired
Rule-10.3The value of an expression shall not be assigned to an object with a narrower essential type or of a different essential type category.RequiredRequired
Rule-10.4Both operands of an operator in which the usual arithmetic conversions are performed shall have the same essential type categoryRequiredRequired
Rule-10.5The value of an expression should not be cast to an inappropriate essential typeAdvisoryAdvisory
Rule-10.6The value of a composite expression shall not be assigned to an object with wider essential typeRequiredRequired
Rule-10.7If a composite expression is used as one operand of an operator in which the usual arithmetic conversions are performed then the other operand shall not have wider essential typeRequiredRequired
Rule-10.8The value of a composite expression shall not be cast to a different essential type category or a wider essential typeRequiredRequired
Rule-11.1Conversions shall not be performed between a pointer to a function and any other typeRequiredRequired
Rule-11.2Conversions shall not be performed between a pointer to an incomplete type and any other typeRequiredRequired
Rule-11.3A cast shall not be performed between a pointer to object type and a pointer to a different object typeRequiredRequired
Rule-11.4A conversion should not be performed between a pointer to object and an integer typeAdvisoryAdvisory
Rule-11.5A conversion should not be performed from pointer to void into pointer to objectAdvisoryAdvisory
Rule-11.6A cast shall not be performed between pointer to void and an arithmetic typeRequiredRequired
Rule-11.7A cast shall not be performed between pointer to object and a non-integer arithmetic typeRequiredRequired
Rule-11.8A cast shall not remove any const or volatile qualification from the type pointed to by a pointerRequiredRequired
Rule-11.9The macro NULL shall be the only permitted form of integer null pointer constantRequiredRequired
Rule-12.1The precedence of operators within expressions should be made explicitAdvisoryAdvisory
Rule-12.2The right hand operand of a shift operator shall lie in the range zero to one less than the width in bits of the essential type of the left hand operandRequiredRequired
Rule-12.3The comma operator should not be usedAdvisoryAdvisory
Rule-12.4Evaluation of constant expressions should not lead to unsigned integer wrap-aroundAdvisoryAdvisory
Rule-12.5The sizeof operator shall not have an operand which is a function parameter declared as 'array of type'MandatoryMandatory
Rule-13.1Initializer lists shall not contain persistent side-effectsRequiredRequired
Rule-13.2The value of an expression and its persistent side-effects shall be the same under all permitted evaluation ordersRequiredRequired
Rule-13.3A full expression containing an increment (++) or decrement (--) operator should have no other potential side effects other than that caused by the increment or decrement operatorAdvisoryDisapplied
Rule-13.4The result of an assignment operator should not be usedAdvisoryAdvisory
Rule-13.5The right hand operand of a logical && or || operator shall not contain persistent side effectsRequiredRequired
Rule-13.6The operand of the sizeof operator shall not contain any expression which has potential side-effectsMandatoryMandatory
Rule-14.1A loop counter shall not have essentially floating typeRequiredRequired
Rule-14.2A for loop shall be well-formedRequiredRequired
Rule-14.3Controlling expressions shall not be invariantRequiredRequired
Rule-14.4The controlling expression of an if-statement and the controlling expression of an iteration-statement shall have essentially Boolean typeRequiredRequired
Rule-15.1The goto statement should not be usedAdvisoryAdvisory
Rule-15.2The goto statement shall jump to a label declared later in the same functionRequiredRequired
Rule-15.3Any label referenced by a goto statement shall be declared in the same block, or in any block enclosing the goto statementRequiredRequired
Rule-15.4There should be no more than one break or goto statement used to terminate any iteration statementAdvisoryAdvisory
Rule-15.5A function should have a single point of exit at the endAdvisoryDisapplied
Rule-15.6The body of an iteration-statement or a selection-statement shall be a compound-statementRequiredRequired
Rule-15.7All if ... else if constructs shall be terminated with an else statementRequiredRequired
Rule-16.1All switch statements shall be well-formedRequiredRequired
Rule-16.2A switch label shall only be used when the most closely-enclosing compound statement is the body of a switch statementRequiredRequired
Rule-16.3An unconditional break statement shall terminate every switch-clauseRequiredRequired
Rule-16.4Every switch statement shall have a default labelRequiredRequired
Rule-16.5A default label shall appear as either the first or the last switch label of a switch statementRequiredRequired
Rule-16.6Every switch statement shall have at least two switch-clausesRequiredRequired
Rule-16.7A switch-expression shall not have essentially Boolean typeRequiredRequired
Rule-17.1The features of shall not be usedRequiredRequired
Rule-17.2Functions shall not call themselves, either directly or indirectlyRequiredRequired
Rule-17.3A function shall not be declared implicitlyMandatoryMandatory
Rule-17.4All exit paths from a function with non-void return type shall have an explicit return statement with an expressionMandatoryMandatory
Rule-17.5The function argument corresponding to a parameter declared to have an array type shall have an appropriate number of elementsAdvisoryAdvisory
Rule-17.6The declaration of an array parameter shall not contain the static keyword between the [ ]MandatoryMandatory
Rule-17.7The value returned by a function having non-void return type shall be usedRequiredDisapplied
Rule-17.8A function parameter should not be modifiedAdvisoryAdvisory
Rule-18.1A pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operandRequiredRequired
Rule-18.2Subtraction between pointers shall only be applied to pointers that address elements of the same arrayRequiredRequired
Rule-18.3The relational operators >, >=, < and <= shall not be applied to objects of pointer type except where they point into the same objectRequiredRequired
Rule-18.4The +, -, += and -= operators should not be applied to an expression of pointer typeAdvisoryAdvisory
Rule-18.5Declarations should contain no more than two levels of pointer nestingAdvisoryAdvisory
Rule-18.6The address of an object with automatic storage shall not be copied to another object that persists after the first object has ceased to existRequiredRequired
Rule-18.7Flexible array members shall not be declaredRequiredRequired
Rule-18.8Variable-length array types shall not be usedRequiredRequired
Rule-19.1An object shall not be assigned or copied to an overlapping objectMandatoryMandatory
Rule-19.2The union keyword should not be usedAdvisoryAdvisory
Rule-2.1A project shall not contain unreachable codeRequiredRequired
Rule-2.2There shall be no dead codeRequiredRequired
Rule-2.3A project should not contain unused type declarationsAdvisoryDisapplied
Rule-2.4A project should not contain unused tag declarationsAdvisoryAdvisory
Rule-2.5A project should not contain unused macro declarationsAdvisoryDisapplied
Rule-2.6A function should not contain unused label declarationsAdvisoryAdvisory
Rule-2.7There should be no unused parameters in functionsAdvisoryAdvisory
Rule-20.1#include directives should only be preceded by preprocessor directives or commentsAdvisoryAdvisory
Rule-20.10The # and ## preprocessor operators should not be usedAdvisoryAdvisory
Rule-20.11A macro parameter immediately following a # operator shall not immediately be followed by a ## operatorRequiredRequired
Rule-20.12A macro parameter used as an operand to the # or ## operators, which is itself subject to further macro replacement, shall only be used as an operand to these operatorsRequiredRequired
Rule-20.13A line whose first token is # shall be a valid preprocessing directiveRequiredRequired
Rule-20.14All #else, #elif and #endif preprocessor directives shall reside in the same file as the #if, #ifdef or #ifndef directive to which they are relatedRequiredRequired
Rule-20.2The ', " or \ characters and the /* or // character sequences shall not occur in a header file nameRequiredRequired
Rule-20.3The #include directive shall be followed by either a or "filename" sequenceRequiredRequired
Rule-20.4A macro shall not be defined with the same name as a keywordRequiredRequired
Rule-20.4-C99A macro shall not be defined with the same name as a keywordRequiredRequired
Rule-20.5#undef should not be usedAdvisoryAdvisory
Rule-20.6Tokens that look like a preprocessing directive shall not occur within a macro argumentRequiredRequired
Rule-20.7Expressions resulting from the expansion of macro parameters shall be enclosed in parenthesesRequiredRequired
Rule-20.8The controlling expression of a #if or #elif preprocessing directive shall evaluate to 0 or 1RequiredRequired
Rule-20.9All identifiers used in the controlling expression of #if or #elif preprocessing directives shall be #define'd before evaluationRequiredRequired
Rule-21.1#define and #undef shall not be used on a reserved identifier or reserved macro nameRequiredRequired
Rule-21.10The Standard Library time and date functions shall not be usedRequiredRequired
Rule-21.11The standard header file shall not be usedRequiredRequired
Rule-21.12The exception handling features of should not be usedAdvisoryAdvisory
Rule-21.13Any value passed to a function in shall be representable as an unsigned char or be the value EOFMandatoryMandatory
Rule-21.14The Standard Library function memcmp shall not be used to compare null terminated stringsRequiredRequired
Rule-21.15The pointer arguments to the Standard Library functions memcpy, memmove and memcmp shall be pointers to qualified or unqualified versions of compatible typesRequiredRequired
Rule-21.16The pointer arguments to the Standard Library function memcpy shall point to either a pointer type, an essentially signed type, an essentially unsigned type, an essentially Boolean type or an essentially enum typeRequiredRequired
Rule-21.17Use of the string handling functions from shall not result in accesses beyond the bounds of the objects referenced by their pointer parametersMandatoryMandatory
Rule-21.18The size_t argument passed to any function in shall have an appropriate valueMandatoryMandatory
Rule-21.19The pointers returned by the Standard Library functions lovaleconv, getenv, setlocale or strerror shall only be used as if they have pointer to const-qualified typeMandatoryMandatory
Rule-21.2A reserved identifier or macro name shall not be declaredRequiredRequired
Rule-21.20The pointer returned by the Standard Library functions asctime, ctime, gmtime, localtime, localeconv, getenv, setlocale, or strerror shall not be used following a subsequent call to the same functionMandatoryMandatory
Rule-21.21The Standard Library system of shall not be usedRequiredRequired
Rule-21.3The memory allocation and deallocation functions of shall not be usedRequiredRequired
Rule-21.4The standard header file shall not be usedRequiredRequired
Rule-21.5The standard header file shall not be usedRequiredRequired
Rule-21.6The Standard Library input/output functions shall not be usedRequiredRequired
Rule-21.7The atof, atoi, atol and atoll functions of shall not be usedRequiredRequired
Rule-21.8The Standard Library termination functions of shall not be usedRequiredRequired
Rule-21.9The library functions bsearch and qsort of shall not be usedRequiredRequired
Rule-22.1All resources obtained dynamically by means of Standard Library functions shall be explicitly releasedRequiredRequired
Rule-22.10The value of errno shall only be tested when the last function to be called was an errno-setting-functionRequiredRequired
Rule-22.2A block of memory shall only be freed if it was allocated by means of a Standard Library functionMandatoryMandatory
Rule-22.3The same file shall not be open for read and write access at the same time on different streamsRequiredRequired
Rule-22.4There shall be no attempt to write to a stream which has been opened as read-onlyMandatoryMandatory
Rule-22.5A pointer to a FILE object shall not be dereferencedMandatoryMandatory
Rule-22.6The value of a pointer to a FILE shall not be used after the associated stream has been closedMandatoryMandatory
Rule-22.7The macro EOF shall on ly be compared with the unmodified return value from any Standard Library function capable of returning EOFRequiredRequired
Rule-22.8The value of errno shall be set to zero prior to a call to an errno-setting-functionRequiredRequired
Rule-22.9The value of errno shall be tested against zero after calling an errno-setting-functionRequiredRequired
Rule-3.1The character sequences /* and // shall not be used within a comment.RequiredRequired
Rule-3.2Line-splicing shall not be used in // comments.RequiredRequired
Rule-4.1Octal and hexadecimal escape sequences shall be terminatedRequiredRequired
Rule-4.2Trigraphs should not be usedAdvisoryAdvisory
Rule-5.1External identifiers shall be distinctRequiredRequired
Rule-5.2Identifiers declared in the same scope and name space shall be distinctRequiredRequired
Rule-5.3An identifier declared in an inner scope shall not hide an identifier declared in an outer scopeRequiredRequired
Rule-5.4Macro identifiers shall be distinctRequiredRequired
Rule-5.5Identifiers shall be distinct from macro namesRequiredRequired
Rule-5.6A typedef name shall be a unique identifierRequiredRequired
Rule-5.7A tag name shall be a unique identifierRequiredRequired
Rule-5.8Identifiers that define objects or functions with external linkage shall be uniqueRequiredRequired
Rule-5.9Identifiers that define objects or functions with internal linkage should be uniqueAdvisoryAdvisory
Rule-6.1Bit-fields shall only be declared with an appropriate typeRequiredRequired
Rule-6.2Single-bit named bit fields shall not be of a signed typeRequiredRequired
Rule-7.1Octal constants shall not be usedRequiredRequired
Rule-7.2A "u" or "U" suffix shall be applied to all integer constants that are represented in an unsigned typeRequiredRequired
Rule-7.3The lowercase character "l" shall not be used in a literal suffixRequiredRequired
Rule-7.4A string literal shall not be assigned to an object unless the object's type is "pointer to const-qualified char"RequiredRequired
Rule-8.1Types shall be explicitly specifiedRequiredRequired
Rule-8.10An inline function shall be declared with the static storage classRequiredRequired
Rule-8.11When an array with external linkage is declared, its size should be explicitly specifiedAdvisoryAdvisory
Rule-8.12Within an enumerator list, the value of an implicitly-specified enumeration constant shall be uniqueRequiredRequired
Rule-8.13A pointer should point to a const-qualified type whenever possibleAdvisoryAdvisory
Rule-8.14The restrict type qualifier shall not be usedRequiredRequired
Rule-8.2Function types shall be in prototype form with named parametersRequiredRequired
Rule-8.3All declarations of an object or function shall use the same names and type qualifiersRequiredRequired
Rule-8.4A compatible declaration shall be visible when an object or function with external linkage is definedRequiredRequired
Rule-8.5An external object or function shall be declared once in one and only one fileRequiredRequired
Rule-8.6An identifier with external linkage shall have exactly one external definitionRequiredRequired
Rule-8.7Functions and objects should not be defined with external linkage if they are referenced in only one translation unitAdvisoryDisapplied
Rule-8.8The static storage class specifier shall be used in all declarations of objects and functions that have internal linkageRequiredRequired
Rule-8.9An object should be defined at block scope if its identifier only appears in a single functionAdvisoryAdvisory
Rule-9.1The value of an object with automatic storage duration shall not be read before it has been setMandatoryMandatory
Rule-9.2The initializer for an aggregate or union shall be enclosed in bracesRequiredRequired
Rule-9.3Arrays shall not be partially initializedRequiredRequired
Rule-9.4An element of an object shall not be initialized more than onceRequiredRequired
Rule-9.5Where designated initializers are used to initialize an array object the size of the array shall be specified explicitlyRequiredRequired
+
+
+ +This section targets to provide an overview of Guidelines Compliance Summary. +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GuidelineCategoryDescriptionCompliance
Dir-1.1RequiredAny implementation-defined behaviour on which the output of the program depends shall be documented and understoodCompliant with deviations:
+
+ + + + + + + + + +
QacDescription
qac-0292[I] Source file '%s' has comments containing one of the characters '$', '@' or '`'.
qac-0315[I] Implicit conversion from a pointer to object type to a pointer to void.
+
Dir-1.1-C99RequiredAny implementation-defined behaviour on which the output of the program depends shall be documented and understoodCompliant with deviations:
+
+ + + + + +
QacDescription
qac-0380[L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99.
+
Dir-2.1RequiredAll source files shall compile without any compilation errorsDisapplied
Dir-3.1RequiredAll code shall be traceable to documented requirementsDisapplied
Dir-4.1RequiredRun-time failures shall be minimizedCompliant
Dir-4.10RequiredPrecautions shall be taken in order to prevent the contents of a header file being included more then onceCompliant
Dir-4.11RequiredThe validity of values passed to library functions shall be checkedDisapplied
Dir-4.12RequiredDynamic memory allocation shall not be usedCompliant
Dir-4.13AdvisoryFunctions which are designed to provide operations on a resource should be called in an appropriate sequenceCompliant
Dir-4.14RequiredThe validity of values received from external sources shall be checkedCompliant
Dir-4.2AdvisoryAll usage of assembly language should be documentedCompliant
Dir-4.3RequiredAssembly language shall be encapsulated and isolatedCompliant
Dir-4.4AdvisorySections of code should not be "commented out"Compliant
Dir-4.5AdvisoryIdentifiers in the same name space with overlapping visibility should be typographically unambiguousCompliant
Dir-4.6Advisorytypedefs that indicate size and signedness should be used in place of the basic numerical typesCompliant
Dir-4.7RequiredIf a function returns error information, then that error information shall be testedDisapplied
Dir-4.8AdvisoryIf a pointer to a structure or union is never dereferenced within a translation unit, then the implementation of the object should be hiddenDisapplied
Dir-4.9AdvisoryA function should be used in preference to a function-like macro where they are interchangeableDisapplied
Rule-1.1RequiredThe program shall contain no violations of the standard C syntax and constraints, and shall not exceed the implementation's translation limitsCompliant
Rule-1.1-C99RequiredThe program shall contain no violations of the standard C syntax and constraints, and shall not exceed the implementation's translation limitsCompliant
Rule-1.2AdvisoryLanguage extensions should not be usedCompliant
Rule-1.2-C99AdvisoryLanguage extensions should not be usedCompliant
Rule-1.3RequiredThere shall be no occurrence of undefined or critical unspecified behaviourCompliant
Rule-1.4RequiredEmergent language features shall not be usedCompliant
Rule-10.1RequiredOperands shall not be of an inappropriate essential type.Compliant
Rule-10.2RequiredExpressions of essentially character type shall not be used inappropriately in addition and subtraction operationsCompliant
Rule-10.3RequiredThe value of an expression shall not be assigned to an object with a narrower essential type or of a different essential type category.Compliant
Rule-10.4RequiredBoth operands of an operator in which the usual arithmetic conversions are performed shall have the same essential type categoryCompliant
Rule-10.5AdvisoryThe value of an expression should not be cast to an inappropriate essential typeCompliant
Rule-10.6RequiredThe value of a composite expression shall not be assigned to an object with wider essential typeCompliant
Rule-10.7RequiredIf a composite expression is used as one operand of an operator in which the usual arithmetic conversions are performed then the other operand shall not have wider essential typeCompliant
Rule-10.8RequiredThe value of a composite expression shall not be cast to a different essential type category or a wider essential typeCompliant
Rule-11.1RequiredConversions shall not be performed between a pointer to a function and any other typeCompliant
Rule-11.2RequiredConversions shall not be performed between a pointer to an incomplete type and any other typeCompliant
Rule-11.3RequiredA cast shall not be performed between a pointer to object type and a pointer to a different object typeCompliant
Rule-11.4AdvisoryA conversion should not be performed between a pointer to object and an integer typeCompliant with deviations:
+
+ + + + + +
QacDescription
qac-0306[I] Cast between a pointer to object and an integral type.
+
Rule-11.5AdvisoryA conversion should not be performed from pointer to void into pointer to objectCompliant
Rule-11.6RequiredA cast shall not be performed between pointer to void and an arithmetic typeCompliant
Rule-11.7RequiredA cast shall not be performed between pointer to object and a non-integer arithmetic typeCompliant
Rule-11.8RequiredA cast shall not remove any const or volatile qualification from the type pointed to by a pointerCompliant
Rule-11.9RequiredThe macro NULL shall be the only permitted form of integer null pointer constantCompliant
Rule-12.1AdvisoryThe precedence of operators within expressions should be made explicitCompliant
Rule-12.2RequiredThe right hand operand of a shift operator shall lie in the range zero to one less than the width in bits of the essential type of the left hand operandCompliant
Rule-12.3AdvisoryThe comma operator should not be usedCompliant
Rule-12.4AdvisoryEvaluation of constant expressions should not lead to unsigned integer wrap-aroundCompliant
Rule-12.5MandatoryThe sizeof operator shall not have an operand which is a function parameter declared as 'array of type'Compliant
Rule-13.1RequiredInitializer lists shall not contain persistent side-effectsCompliant
Rule-13.2RequiredThe value of an expression and its persistent side-effects shall be the same under all permitted evaluation ordersCompliant
Rule-13.3AdvisoryA full expression containing an increment (++) or decrement (--) operator should have no other potential side effects other than that caused by the increment or decrement operatorDisapplied
Rule-13.4AdvisoryThe result of an assignment operator should not be usedCompliant
Rule-13.5RequiredThe right hand operand of a logical && or || operator shall not contain persistent side effectsCompliant
Rule-13.6MandatoryThe operand of the sizeof operator shall not contain any expression which has potential side-effectsCompliant
Rule-14.1RequiredA loop counter shall not have essentially floating typeCompliant
Rule-14.2RequiredA for loop shall be well-formedCompliant
Rule-14.3RequiredControlling expressions shall not be invariantCompliant with deviations:
+
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2991The value of this 'if' controlling expression is always 'true'.
qac-2992The value of this 'if' controlling expression is always 'false'.
qac-2998The first operand of this conditional operator is always 'false'.
qac-3493The first operand of this conditional operator is always constant 'true'.
qac-3494The first operand of this conditional operator is always constant 'false'.
+
Rule-14.4RequiredThe controlling expression of an if-statement and the controlling expression of an iteration-statement shall have essentially Boolean typeCompliant
Rule-15.1AdvisoryThe goto statement should not be usedCompliant
Rule-15.2RequiredThe goto statement shall jump to a label declared later in the same functionCompliant
Rule-15.3RequiredAny label referenced by a goto statement shall be declared in the same block, or in any block enclosing the goto statementCompliant
Rule-15.4AdvisoryThere should be no more than one break or goto statement used to terminate any iteration statementCompliant
Rule-15.5AdvisoryA function should have a single point of exit at the endDisapplied
Rule-15.6RequiredThe body of an iteration-statement or a selection-statement shall be a compound-statementCompliant
Rule-15.7RequiredAll if ... else if constructs shall be terminated with an else statementCompliant
Rule-16.1RequiredAll switch statements shall be well-formedCompliant
Rule-16.2RequiredA switch label shall only be used when the most closely-enclosing compound statement is the body of a switch statementCompliant
Rule-16.3RequiredAn unconditional break statement shall terminate every switch-clauseCompliant with deviations:
+
+ + + + + + + + + +
QacDescription
qac-2023The preceding 'switch' clause is not empty and ends with a jump statement other than 'break'.
qac-2024Final 'switch' clause ends with a 'jump' statement other than 'break'.
+
Rule-16.4RequiredEvery switch statement shall have a default labelCompliant
Rule-16.5RequiredA default label shall appear as either the first or the last switch label of a switch statementCompliant
Rule-16.6RequiredEvery switch statement shall have at least two switch-clausesCompliant
Rule-16.7RequiredA switch-expression shall not have essentially Boolean typeCompliant
Rule-17.1RequiredThe features of shall not be usedCompliant
Rule-17.2RequiredFunctions shall not call themselves, either directly or indirectlyCompliant
Rule-17.3MandatoryA function shall not be declared implicitlyCompliant
Rule-17.4MandatoryAll exit paths from a function with non-void return type shall have an explicit return statement with an expressionCompliant
Rule-17.5AdvisoryThe function argument corresponding to a parameter declared to have an array type shall have an appropriate number of elementsCompliant
Rule-17.6MandatoryThe declaration of an array parameter shall not contain the static keyword between the [ ]Compliant
Rule-17.7RequiredThe value returned by a function having non-void return type shall be usedDisapplied
Rule-17.8AdvisoryA function parameter should not be modifiedCompliant
Rule-18.1RequiredA pointer resulting from arithmetic on a pointer operand shall address an element of the same array as that pointer operandCompliant
Rule-18.2RequiredSubtraction between pointers shall only be applied to pointers that address elements of the same arrayCompliant
Rule-18.3RequiredThe relational operators >, >=, < and <= shall not be applied to objects of pointer type except where they point into the same objectCompliant
Rule-18.4AdvisoryThe +, -, += and -= operators should not be applied to an expression of pointer typeCompliant
Rule-18.5AdvisoryDeclarations should contain no more than two levels of pointer nestingCompliant
Rule-18.6RequiredThe address of an object with automatic storage shall not be copied to another object that persists after the first object has ceased to existCompliant
Rule-18.7RequiredFlexible array members shall not be declaredCompliant
Rule-18.8RequiredVariable-length array types shall not be usedCompliant
Rule-19.1MandatoryAn object shall not be assigned or copied to an overlapping objectCompliant
Rule-19.2AdvisoryThe union keyword should not be usedCompliant
Rule-2.1RequiredA project shall not contain unreachable codeCompliant with deviations:
+
+ + + + + +
QacDescription
rcma-1503The function '%1s' is defined but is not used within this project.
+
Rule-2.2RequiredThere shall be no dead codeCompliant with deviations:
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2982This assignment is redundant. The value of this object is never used before being modified.
qac-2983This assignment is redundant. The value of this object is never subsequently used.
qac-2985This operation is redundant. The value of the result is always that of the left-hand operand.
qac-2986This operation is redundant. The value of the result is always that of the right-hand operand.
qac-2995The result of this logical operation is always 'true'.
qac-2996The result of this logical operation is always 'false'.
qac-3112This statement has no side-effect - it can be removed.
+
Rule-2.3AdvisoryA project should not contain unused type declarationsDisapplied
Rule-2.4AdvisoryA project should not contain unused tag declarationsCompliant
Rule-2.5AdvisoryA project should not contain unused macro declarationsDisapplied
Rule-2.6AdvisoryA function should not contain unused label declarationsCompliant
Rule-2.7AdvisoryThere should be no unused parameters in functionsCompliant
Rule-20.1Advisory#include directives should only be preceded by preprocessor directives or commentsCompliant
Rule-20.10AdvisoryThe # and ## preprocessor operators should not be usedCompliant
Rule-20.11RequiredA macro parameter immediately following a # operator shall not immediately be followed by a ## operatorCompliant
Rule-20.12RequiredA macro parameter used as an operand to the # or ## operators, which is itself subject to further macro replacement, shall only be used as an operand to these operatorsCompliant
Rule-20.13RequiredA line whose first token is # shall be a valid preprocessing directiveCompliant
Rule-20.14RequiredAll #else, #elif and #endif preprocessor directives shall reside in the same file as the #if, #ifdef or #ifndef directive to which they are relatedCompliant
Rule-20.2RequiredThe ', " or \ characters and the /* or // character sequences shall not occur in a header file nameCompliant
Rule-20.3RequiredThe #include directive shall be followed by either a or "filename" sequenceCompliant
Rule-20.4RequiredA macro shall not be defined with the same name as a keywordCompliant
Rule-20.4-C99RequiredA macro shall not be defined with the same name as a keywordCompliant
Rule-20.5Advisory#undef should not be usedCompliant
Rule-20.6RequiredTokens that look like a preprocessing directive shall not occur within a macro argumentCompliant
Rule-20.7RequiredExpressions resulting from the expansion of macro parameters shall be enclosed in parenthesesCompliant
Rule-20.8RequiredThe controlling expression of a #if or #elif preprocessing directive shall evaluate to 0 or 1Compliant
Rule-20.9RequiredAll identifiers used in the controlling expression of #if or #elif preprocessing directives shall be #define'd before evaluationCompliant
Rule-21.1Required#define and #undef shall not be used on a reserved identifier or reserved macro nameCompliant
Rule-21.10RequiredThe Standard Library time and date functions shall not be usedCompliant
Rule-21.11RequiredThe standard header file shall not be usedCompliant
Rule-21.12AdvisoryThe exception handling features of should not be usedCompliant
Rule-21.13MandatoryAny value passed to a function in shall be representable as an unsigned char or be the value EOFCompliant
Rule-21.14RequiredThe Standard Library function memcmp shall not be used to compare null terminated stringsCompliant
Rule-21.15RequiredThe pointer arguments to the Standard Library functions memcpy, memmove and memcmp shall be pointers to qualified or unqualified versions of compatible typesCompliant
Rule-21.16RequiredThe pointer arguments to the Standard Library function memcpy shall point to either a pointer type, an essentially signed type, an essentially unsigned type, an essentially Boolean type or an essentially enum typeCompliant
Rule-21.17MandatoryUse of the string handling functions from shall not result in accesses beyond the bounds of the objects referenced by their pointer parametersCompliant
Rule-21.18MandatoryThe size_t argument passed to any function in shall have an appropriate valueCompliant
Rule-21.19MandatoryThe pointers returned by the Standard Library functions lovaleconv, getenv, setlocale or strerror shall only be used as if they have pointer to const-qualified typeCompliant
Rule-21.2RequiredA reserved identifier or macro name shall not be declaredCompliant
Rule-21.20MandatoryThe pointer returned by the Standard Library functions asctime, ctime, gmtime, localtime, localeconv, getenv, setlocale, or strerror shall not be used following a subsequent call to the same functionCompliant
Rule-21.21RequiredThe Standard Library system of shall not be usedCompliant
Rule-21.3RequiredThe memory allocation and deallocation functions of shall not be usedCompliant
Rule-21.4RequiredThe standard header file shall not be usedCompliant
Rule-21.5RequiredThe standard header file shall not be usedCompliant
Rule-21.6RequiredThe Standard Library input/output functions shall not be usedCompliant
Rule-21.7RequiredThe atof, atoi, atol and atoll functions of shall not be usedCompliant
Rule-21.8RequiredThe Standard Library termination functions of shall not be usedCompliant
Rule-21.9RequiredThe library functions bsearch and qsort of shall not be usedCompliant
Rule-22.1RequiredAll resources obtained dynamically by means of Standard Library functions shall be explicitly releasedCompliant
Rule-22.10RequiredThe value of errno shall only be tested when the last function to be called was an errno-setting-functionCompliant
Rule-22.2MandatoryA block of memory shall only be freed if it was allocated by means of a Standard Library functionCompliant
Rule-22.3RequiredThe same file shall not be open for read and write access at the same time on different streamsCompliant
Rule-22.4MandatoryThere shall be no attempt to write to a stream which has been opened as read-onlyCompliant
Rule-22.5MandatoryA pointer to a FILE object shall not be dereferencedCompliant
Rule-22.6MandatoryThe value of a pointer to a FILE shall not be used after the associated stream has been closedCompliant
Rule-22.7RequiredThe macro EOF shall on ly be compared with the unmodified return value from any Standard Library function capable of returning EOFCompliant
Rule-22.8RequiredThe value of errno shall be set to zero prior to a call to an errno-setting-functionCompliant
Rule-22.9RequiredThe value of errno shall be tested against zero after calling an errno-setting-functionCompliant
Rule-3.1RequiredThe character sequences /* and // shall not be used within a comment.Compliant
Rule-3.2RequiredLine-splicing shall not be used in // comments.Compliant
Rule-4.1RequiredOctal and hexadecimal escape sequences shall be terminatedCompliant
Rule-4.2AdvisoryTrigraphs should not be usedCompliant
Rule-5.1RequiredExternal identifiers shall be distinctCompliant
Rule-5.2RequiredIdentifiers declared in the same scope and name space shall be distinctCompliant
Rule-5.3RequiredAn identifier declared in an inner scope shall not hide an identifier declared in an outer scopeCompliant
Rule-5.4RequiredMacro identifiers shall be distinctCompliant
Rule-5.5RequiredIdentifiers shall be distinct from macro namesCompliant
Rule-5.6RequiredA typedef name shall be a unique identifierCompliant
Rule-5.7RequiredA tag name shall be a unique identifierCompliant
Rule-5.8RequiredIdentifiers that define objects or functions with external linkage shall be uniqueCompliant
Rule-5.9AdvisoryIdentifiers that define objects or functions with internal linkage should be uniqueCompliant
Rule-6.1RequiredBit-fields shall only be declared with an appropriate typeCompliant
Rule-6.2RequiredSingle-bit named bit fields shall not be of a signed typeCompliant
Rule-7.1RequiredOctal constants shall not be usedCompliant
Rule-7.2RequiredA "u" or "U" suffix shall be applied to all integer constants that are represented in an unsigned typeCompliant
Rule-7.3RequiredThe lowercase character "l" shall not be used in a literal suffixCompliant
Rule-7.4RequiredA string literal shall not be assigned to an object unless the object's type is "pointer to const-qualified char"Compliant
Rule-8.1RequiredTypes shall be explicitly specifiedCompliant
Rule-8.10RequiredAn inline function shall be declared with the static storage classCompliant
Rule-8.11AdvisoryWhen an array with external linkage is declared, its size should be explicitly specifiedCompliant
Rule-8.12RequiredWithin an enumerator list, the value of an implicitly-specified enumeration constant shall be uniqueCompliant
Rule-8.13AdvisoryA pointer should point to a const-qualified type whenever possibleCompliant
Rule-8.14RequiredThe restrict type qualifier shall not be usedCompliant
Rule-8.2RequiredFunction types shall be in prototype form with named parametersCompliant
Rule-8.3RequiredAll declarations of an object or function shall use the same names and type qualifiersCompliant
Rule-8.4RequiredA compatible declaration shall be visible when an object or function with external linkage is definedCompliant
Rule-8.5RequiredAn external object or function shall be declared once in one and only one fileCompliant
Rule-8.6RequiredAn identifier with external linkage shall have exactly one external definitionCompliant
Rule-8.7AdvisoryFunctions and objects should not be defined with external linkage if they are referenced in only one translation unitDisapplied
Rule-8.8RequiredThe static storage class specifier shall be used in all declarations of objects and functions that have internal linkageCompliant
Rule-8.9AdvisoryAn object should be defined at block scope if its identifier only appears in a single functionCompliant
Rule-9.1MandatoryThe value of an object with automatic storage duration shall not be read before it has been setCompliant
Rule-9.2RequiredThe initializer for an aggregate or union shall be enclosed in bracesCompliant
Rule-9.3RequiredArrays shall not be partially initializedCompliant
Rule-9.4RequiredAn element of an object shall not be initialized more than onceCompliant
Rule-9.5RequiredWhere designated initializers are used to initialize an array object the size of the array shall be specified explicitlyCompliant
+
+
+ +This section targets to provide an overview of Deviation Permits.
+All the rules corresponding to the deviation permits are disabled inside PRQA and will not cause any violation or deviation in the Deviation records section below. +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
GuidelineCategoryDescriptionRatioSub RulesCharacteristicsReason
Dir-1.1RequiredAny implementation-defined behaviour on which the output of the program depends shall be documented and understood2/85
+ + + + + + + + + +
QacDescription
qac-0292[I] Source file '%s' has comments containing one of the characters '$', '@' or '`'.
qac-0315[I] Implicit conversion from a pointer to object type to a pointer to void.
+
Maintainability / Analysability +
0292-Invalid characters in comments: Doxygen comments are used. +
0315-Library string.h functions (memcpy, etc.) are used and trigger this implicit conversion. +
+
Dir-1.1-C99RequiredAny implementation-defined behaviour on which the output of the program depends shall be documented and understood1/21
+ + + + + +
QacDescription
qac-0380[L] Number of macro definitions exceeds 4095 - program does not conform strictly to ISO:C99.
+
Maintainability / Analysability +
0380-Already CMSIS and STM32HAL trigger this. +
+
Dir-2.1RequiredAll source files shall compile without any compilation errorsNAUn-Assisted
Dir-3.1RequiredAll code shall be traceable to documented requirementsNAUn-Assisted
Dir-4.11RequiredThe validity of values passed to library functions shall be checkedNAUn-Assisted
Dir-4.7RequiredIf a function returns error information, then that error information shall be tested1/1 (all)
+ + + + + +
QacDescription
qac-2504Return value of '%s' is not checked for error status.
+
Usability / User error protectionSee Rule-17.7
+
2504-This check is also awkward to use - manual specification of all functions using -errorstatusreturningfunction,-erf would be required. +
+
Dir-4.8AdvisoryIf a pointer to a structure or union is never dereferenced within a translation unit, then the implementation of the object should be hidden1/1 (all)
+ + + + + +
QacDescription
qac-3630The implementation of this struct/union type should be hidden.
+
Usability / User error protectionThis rule clashes with our library approach.
+
3630-This rule triggers for declaration in our header files, where we are giving the user the option to deeply inspect received NFC answers using structs. +
+
Dir-4.9AdvisoryA function should be used in preference to a function-like macro where they are interchangeable4/4 (all)
+ + + + + + + + + + + + + + + + + +
QacDescription
qac-3469This usage of a function-like macro looks like it could be replaced by an equivalent function call.
qac-3471Some uses of this function-like macro look like they could be replaced by equivalent function calls.
qac-3472All toplevel uses of this function-like macro look like they could be replaced by equivalent function calls.
qac-3473This usage of a function-like setter macro looks like it could be replaced by a similar function call.
+
Performance / Resource utilizationSuppressed due to code optimization and efficiency.
Rule-11.4AdvisoryA conversion should not be performed between a pointer to object and an integer type1/5
+ + + + + +
QacDescription
qac-0306[I] Cast between a pointer to object and an integral type.
+
Maintainability / ModifiabilityUsing STM32 HAL already creates many violations. Also needed to do pointer arithmetic, calculating offsets inside a buffer.
Rule-13.3AdvisoryA full expression containing an increment (++) or decrement (--) operator should have no other potential side effects other than that caused by the increment or decrement operator2/2 (all)
+ + + + + + + + + +
QacDescription
qac-3387A full expression containing an increment (++) or decrement (--) operator should have no potential side effects other than that caused by the increment or decrement operator.
qac-3440Using the value resulting from a ++ or -- operation.
+
Maintainability / AnalysabilityRFAL uses the increment often for building buffers (array[i++] = 42; ...). Splitting this would decrease readability.
Rule-14.3RequiredControlling expressions shall not be invariant5/11
+ + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2991The value of this 'if' controlling expression is always 'true'.
qac-2992The value of this 'if' controlling expression is always 'false'.
qac-2998The first operand of this conditional operator is always 'false'.
qac-3493The first operand of this conditional operator is always constant 'true'.
qac-3494The first operand of this conditional operator is always constant 'false'.
+
Portability / AdaptabilityRFAL is configurable through compile time switches. This causes some ifs to have invariant conditions at the used configuration. Suppress 14.3 for if statements.
Rule-15.5AdvisoryA function should have a single point of exit at the end1/1 (all)
+ + + + + +
QacDescription
qac-2889This function has more than one 'return' path.
+
Maintainability / AnalysabilitySuppressed due to readability and simplicity of code logic.
Rule-16.3RequiredAn unconditional break statement shall terminate every switch-clause2/4
+ + + + + + + + + +
QacDescription
qac-2023The preceding 'switch' clause is not empty and ends with a jump statement other than 'break'.
qac-2024Final 'switch' clause ends with a 'jump' statement other than 'break'.
+
Maintainability / AnalysabilitySuppressed due to readability and simplicity of code logic.
Rule-17.7RequiredThe value returned by a function having non-void return type shall be used1/1 (all)
+ + + + + +
QacDescription
qac-3200'%s' returns a value which is not being used.
+
Maintainability / AnalysabilityTreating the return codes of functions in all places without exception handling would makes the code hard to read and maintain. Error checking has been reduced to the places where needed.
Rule-2.1RequiredA project shall not contain unreachable code1/7
+ + + + + +
QacDescription
rcma-1503The function '%1s' is defined but is not used within this project.
+
Maintainability / ModularityRFAL provides many functions - some are not used within the checked project.
Rule-2.2RequiredThere shall be no dead code7/18
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
QacDescription
qac-2982This assignment is redundant. The value of this object is never used before being modified.
qac-2983This assignment is redundant. The value of this object is never subsequently used.
qac-2985This operation is redundant. The value of the result is always that of the left-hand operand.
qac-2986This operation is redundant. The value of the result is always that of the right-hand operand.
qac-2995The result of this logical operation is always 'true'.
qac-2996The result of this logical operation is always 'false'.
qac-3112This statement has no side-effect - it can be removed.
+
Usability / User error protectionAll the violations were checked and fixing the violation would deteriorate robustness: Removing checks which are unnecessary at the given position, removing trailing iterator increment, etc.
Rule-2.3AdvisoryA project should not contain unused type declarations2/2 (all)
+ + + + + + + + + +
QacDescription
qac-3205The identifier '%1s' is not used and could be removed.
rcma-1535The typedef '%1s' is declared but not used within this project.
+
Compatibility / InteroperabilityRFAL defines enums for all identifiers available in NFC Forum - some are unused.
Rule-2.5AdvisoryA project should not contain unused macro declarations1/1 (all)
+ + + + + +
QacDescription
rcma-1534The macro '%1s' is declared but not used within this project.
+
Compatibility / InteroperabilityRFAL defines macros for all identifiers of NFC Forum and RF chip register map - some are not used.
Rule-8.7AdvisoryFunctions and objects should not be defined with external linkage if they are referenced in only one translation unit3/3 (all)
+ + + + + + + + + + + + + +
QacDescription
rcma-1504The object '%1s' is only referenced in the translation unit where it is defined.
rcma-1505The function '%1s' is only referenced in the translation unit where it is defined.
rcma-1514The object '%1s' is only referenced by function '%2s', in the translation unit where it is defined
+
Maintainability / ModularityRFAL defines functions which could be called by the user but are not called in the current project.
+
+
+ +This section targets to provide an overview of Deviation Records. +
+
+
+ +

File: rfal/include/rfal_analogConfig.h

+
+ + + + + + + + + +
LinesCountSuppressed QacsComment
2731
+ + + + +
qac-1060[C99] A flexible array member has been declared.
+
MISRA 18.7 - Flexible Array Members are the only meaningful way of denoting a variable length input buffer which follows a fixed header structure.
+

File: rfal/include/rfal_isoDep.h

+
+ + + + + + + + + +
LinesCountSuppressed QacsComment
2841
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Both members of the union will not be used concurrently, device is only of type A or B at a time. Thus no problem can occur.
+

File: rfal/include/rfal_nfc.h

+
+ + + + + + + + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
2691
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Members of the union will not be used concurrently, only one interface at a time
2121
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Members of the union will not be used concurrently, only one protocol at a time
2001
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Members of the union will not be used concurrently, only one technology at a time
+

File: rfal/include/rfal_nfcDep.h

+
+ + + + + + + + + +
LinesCountSuppressed QacsComment
3151
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Both members of the union will not be used concurrently , device is only initiatior or target a time. No problem can occur.
+

File: rfal/include/rfal_nfcv.h

+
+ + + + + + + + + +
LinesCountSuppressed QacsComment
2211
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Both members are of the same type, just different names. Thus no problem can occur.
+

File: rfal/source/rfal_isoDep.c

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
2185-21861
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalIsoDepFSxI is guaranteed whithin 4bit range
1400-14022
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and above masks guarantee no invalid enum values to be created
10271
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
7961
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
25571
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and above clamping of maxTxBR guarantee no invalid enum values to be created
25641
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and above clamping of maxTxBR guarantee no invalid enum values to be created
27311
+ + + + +
qac-0310Casting to different object pointer type.
+
MISRA 11.3 - Intentional safe cast to avoiding large buffer duplication
27941
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
26531
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and range of loop variable guarantee no invalid enum values to be created
2279-22801
+ + + + +
qac-0310Casting to different object pointer type.
+
MISRA 11.3 - Intentional safe cast to avoiding buffer duplication
13601
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
4161
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Members of the union will not be used concurrently, only one frame at a time
26401
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and range of loop variable guarantee no invalid enum values to be created
+

File: rfal/source/rfal_nfc.c

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
19241
+ + + + +
qac-0310Casting to different object pointer type.
+
MISRA 11.3 - Intentional safe cast to avoiding large buffer duplication
771
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Members of the union will not be used concurrently, only one interface at a time
2051
+ + + + +
qac-2880This code is unreachable.
+
MISRA 2.1 - Unreachable code due to configuration option being set/unset
21491
+ + + + +
qac-0310Casting to different object pointer type.
+
MISRA 11.3 - Intentional safe cast to avoiding large buffer duplication
+

File: rfal/source/rfal_nfcDep.c

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
16811
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
26891
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
1930-19322
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of enum rfalBitRate and definition of rfalNfcDepBRS2DSI guarantee no invalid enum values to be created
16091
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
26301
+ + + + +
qac-0310Casting to different object pointer type.
+
MISRA 11.3 - Intentional safe cast to avoiding large buffer duplication
+

File: rfal/source/rfal_nfca.c

+
+ + + + + + + + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
7391
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
746-7471
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Guaranteed that no invalid enum values are created: see guard_eq_RFAL_NFCA_T2T, ....
3141
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
+

File: rfal/source/rfal_nfcb.c

+
+ + + + + + + + + +
LinesCountSuppressed QacsComment
545-5461
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Layout of rfalNfcbSlots and the limited loop guarantee that no invalid enum values are created.
+

File: rfal/source/rfal_t4t.c

+
+ + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
1361
+ + + + +
qac-2880This code is unreachable.
+
MISRA 2.1 - Unreachable code due to configuration option being set/unset
1271
+ + + + +
qac-2880This code is unreachable.
+
MISRA 2.1 - Unreachable code due to configuration option being set/unset
+

File: rfal/source/st25r3916/rfal_analogConfigTbl.h

+
+ + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
405-4061
+ + + + +
qac-3406Object/function '%s', with external linkage, has been defined in a header file.
+
MISRA 8.6 - Externally generated table included by the library
1
+ + + + +
rcma-1514The object '%1s' is only referenced by function '%2s', in the translation unit where it is defined
+
MISRA 8.6 - Externally generated table included by the library
+

File: rfal/source/st25r3916/rfal_dpoTbl.h

+
+ + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
54-551
+ + + + +
qac-3406Object/function '%s', with external linkage, has been defined in a header file.
+
MISRA 8.6 - Externally generated table included by the library
1
+ + + + +
rcma-1514The object '%1s' is only referenced by function '%2s', in the translation unit where it is defined
+
MISRA 8.6 - Externally generated table included by the library
+

File: rfal/source/st25r3916/rfal_rfst25r3916.c

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
LinesCountSuppressed QacsComment
16391
+ + + + +
m3cm-5209Use of basic type '%s'.
+
MISRA 4.9 - External function (sqrt()) requires double
20591
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
36371
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
20281
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
38901
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Guaranteed that no invalid enum values may be created. See also equalityGuard_RFAL_BR_106 ff.
2801
+ + + + +
qac-0750A union type specifier has been defined.
+
MISRA 19.2 - Both members are of the same type, just different names. Thus no problem can occur.
24021
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
20431
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
36571
+ + + + +
qac-4342An expression of 'essentially unsigned' type (%1s) is being cast to enum type '%2s'.
+
MISRA 10.5 - Guaranteed that no invalid enum values may be created. See also equalityGuard_RFAL_BR_106 ff.
24771
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
21311
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
26721
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
33871
+ + + + +
qac-0759An object of union type has been defined.
+
MISRA 19.2 - Allocating Union where members are of the same type, just different names. Thus no problem can occur.
21831
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
22611
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
25651
+ + + + +
qac-2003The preceding 'switch' clause is not empty and does not end with a 'jump' statement. Execution will fall through.
+
MISRA 16.3 - Intentional fall through
10551
+ + + + +
qac-2880This code is unreachable.
+
MISRA 2.1 - Inconsistently marked as unreachable code
+
+
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FileRequiredAdvisoryTotal
rfal/source/st25r3916/rfal_rfst25r3916.c12517
rfal/source/st25r3916/rfal_dpoTbl.h112
rfal/source/st25r3916/rfal_analogConfigTbl.h112
rfal/source/rfal_t4t.c202
rfal/source/rfal_nfcDep.c426
rfal/source/rfal_nfcb.c011
rfal/source/rfal_nfca.c213
rfal/source/rfal_isoDep.c6814
rfal/source/rfal_nfc.c314
rfal/include/rfal_nfcv.h011
rfal/include/rfal_isoDep.h011
rfal/include/rfal_analogConfig.h101
rfal/include/rfal_nfc.h033
rfal/include/rfal_nfcDep.h011
Total322658
+
+
+ + +There are no duplicated suppressions. + +

File: common/firmware/STM/utils/Inc/utils.h

+
+ + + + + + + + + + + + +
LineUnused QacsComment
81
+ + + + +
qac-0431[C] Function argument points to a more heavily qualified type.
+
MISRA 1.1 - string.h from Cosmic only provides functions with low qualified parameters
79
+ + + + +
qac-0431[C] Function argument points to a more heavily qualified type.
+
MISRA 1.1 - string.h from Cosmic only provides functions with low qualified parameters
+

File: rfal/source/rfal_iso15693_2.c

+
+ + + + + + + +
LineUnused QacsComment
524
+ + + + +
qac-2911Definite: Wraparound in unsigned arithmetic operation.
+
CERT INT30 - Intentional underflow, part of the coding
+

File: rfal/source/rfal_nfc.c

+
+ + + + + + + +
LineUnused QacsComment
219
+ + + + +
qac-2880This code is unreachable.
+
MISRA 2.1 - Unreachable code due to configuration option being set/unset
+

File: rfal/source/st25r3916/rfal_analogConfigTbl.h

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
LineUnused QacsComment
717
+ + + + +
qac-3406Object/function '%s', with external linkage, has been defined in a header file.
+
MISRA 8.9 - Externally generated table included by the library
404
+ + + + +
qac-3674Array size defined implicitly by the number of initializers.
+
CERT ARR02 - Flexible array will be used with sizeof, on adding elements error-prone manual update of size would be required
716
+ + + + +
qac-3674Array size defined implicitly by the number of initializers.
+
CERT ARR02 - Flexible array will be used with sizeof, on adding elements error-prone manual update of size would be required
405
+
+
MISRA 8.9 - Externally generated table included by the library
717
+
+
MISRA 8.6 - Externally generated table included by the library
+

File: rfal/source/st25r3916/rfal_dpoTbl.h

+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
LineUnused QacsComment
53
+ + + + +
qac-3674Array size defined implicitly by the number of initializers.
+
CERT ARR02 - Flexible array will be used with sizeof, on adding elements error-prone manual update of size would be required
66
+
+
MISRA 8.9 - Externally generated table included by the library
66
+ + + + +
qac-3406Object/function '%s', with external linkage, has been defined in a header file.
+
MISRA 8.6 - Externally generated table included by the library
54
+
+
MISRA 8.9 - Externally generated table included by the library
65
+ + + + +
qac-3674Array size defined implicitly by the number of initializers.
+
CERT ARR02 - Flexible array will be used with sizeof, on adding elements error-prone manual update of size would be required
+
+
+ +There are no continuous suppressions by file. +
+
+ +Active Diagnostics refers to diagnostics that are not suppressed (note: no suppressed diagnostics have been taken into account for the calculation of information in this document). +
+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
FilesActive DiagnosticsViolated RulesViolation CountCompliance Index
rfal/include/rfal_analogConfig.h000100.00
rfal/include/rfal_cd.h000100.00
rfal/include/rfal_chip.h000100.00
rfal/include/rfal_dpo.h000100.00
rfal/include/rfal_isoDep.h000100.00
rfal/include/rfal_nfc.h000100.00
rfal/include/rfal_nfcDep.h000100.00
rfal/include/rfal_nfca.h000100.00
rfal/include/rfal_nfcb.h000100.00
rfal/include/rfal_nfcf.h000100.00
rfal/include/rfal_nfcv.h000100.00
rfal/include/rfal_rf.h000100.00
rfal/include/rfal_st25tb.h000100.00
rfal/include/rfal_st25xv.h000100.00
rfal/include/rfal_t1t.h000100.00
rfal/include/rfal_t2t.h000100.00
rfal/include/rfal_t4t.h000100.00
rfal/include/rfal_utils.h000100.00
rfal/source/rfal_analogConfig.c000100.00
rfal/source/rfal_cd.c000100.00
rfal/source/rfal_cdHb.c000100.00
rfal/source/rfal_crc.c000100.00
rfal/source/rfal_crc.h000100.00
rfal/source/rfal_dpo.c000100.00
rfal/source/rfal_iso15693_2.c000100.00
rfal/source/rfal_iso15693_2.h000100.00
rfal/source/rfal_isoDep.c000100.00
rfal/source/rfal_nfc.c000100.00
rfal/source/rfal_nfcDep.c000100.00
rfal/source/rfal_nfca.c000100.00
rfal/source/rfal_nfcb.c000100.00
rfal/source/rfal_nfcf.c000100.00
rfal/source/rfal_nfcv.c000100.00
rfal/source/rfal_st25tb.c000100.00
rfal/source/rfal_st25xv.c000100.00
rfal/source/rfal_t1t.c000100.00
rfal/source/rfal_t2t.c000100.00
rfal/source/rfal_t4t.c000100.00
rfal/source/st25r3916/rfal_analogConfigTbl.h000100.00
rfal/source/st25r3916/rfal_dpoTbl.h000100.00
rfal/source/st25r3916/rfal_features.h000100.00
rfal/source/st25r3916/rfal_rfst25r3916.c000100.00
rfal/source/st25r3916/st25r3916.c000100.00
rfal/source/st25r3916/st25r3916.h000100.00
rfal/source/st25r3916/st25r3916_aat.c000100.00
rfal/source/st25r3916/st25r3916_aat.h000100.00
rfal/source/st25r3916/st25r3916_com.c000100.00
rfal/source/st25r3916/st25r3916_com.h000100.00
rfal/source/st25r3916/st25r3916_irq.c000100.00
rfal/source/st25r3916/st25r3916_irq.h000100.00
rfal/source/st25r3916/st25r3916_led.c000100.00
rfal/source/st25r3916/st25r3916_led.h000100.00
Total000100.00
+ +

+Nota: Calculation of Compliance Index
+The Compliance Index is the percentage of groups which have no messages in them.
+For each file it is calculated as follows:
+
+( Ntotal - Nerror ) / Ntotal x 100
+
+Ntotal is the total number of enforced rules (i.e. the number of rules that have at least one message mapped to it directly).
+Nerror is the number of rules for which messages appear in that file.
+The File Compliance Index is the mean of all the individual file compliances.
+ +
+
+
+
+ + diff --git a/core/embed/io/nfc/rfal/doc/_htmresc/st_logo.png b/core/embed/io/nfc/rfal/doc/_htmresc/st_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..b6180c707499da9cb56ef8dd46e9a069acc60075 GIT binary patch literal 22182 zcmdpe(_Y?_F!H>PQtOX=DTf1ONblEGr|S1^_@vd|p4pLw=UizgA;EPhXs5bX)-dM9lvV z2tZ~w9socFkd+YC@XS8z^2*kn&$xVl6*^6hl*7)S!4tJ$dt{)CB8Cu%ED!WRDn#;1 z;${2(;;|W2B0kI$82oSEojyoAdlI2&xSNJ?L> z+{uAkX|=Y|pZ<$#`ASd6B{NhpkStgR)ZRLd9CQTD&undAs_l3SO8C5^%ygt9Bir@X zA0(xDr9{bV^6YjNAGCpaak)V%`aZjyDA0r1&{I~S1F7)W-2pFj+=goZu|0fklY~8@ zz4X>p?^&4)fIhBoBxH)NrGofpEln1Z49a`_ojG-xi?YGIm1+haq28^?CnCH!pQgBj zJ}`HEJJ&ft{&NiP$COr!%}09lpHHcO`M=(!ZVJ7x$!F#I9A_LF$sn>76_Yr%AZ~C& z=F{zN4QzrNNCW();Wk(Uh0Lb($H#pn4u814C?AxC^~}Bu2^_F?`&^$GRrw1BOUihW z_8L3PRCk}v8RdF)qscx%o3U6Ptdj>?6ebhaLIFgVqEh0f3|h|~o*((L%I`R_o7b-3 zMT%oWUPu`tkc7-q4DfC*&_t6(aATHTRu-x@pMc#DtfU>u7EmUs0`GkBI2&`BoX zDhl7`AH0)w_W9J~(m#xMh@*Iisy-}*O{jkyka7bbT`~)QCR2T(!O?c!6fqt7$0F3W z^AHqHDgj$jc9!w@0q@P5aKHew)Cm)&I$eH>w^+0; zLn3v1A~!|@s0o>=YB4o{LS(7HH<#V71CozP`H(-w>>j7F3W*X#Bl?ig>rI0loZ#`; z?Prf=G6If7vkpu%x_nr=ZwA{CQzP;otzg%rJ^~g=h zv5LD3l+n`B;|ckq!`bq ztADUet^boQ=fqD3x!{AD08Jj9T(=ix8O$W2PMiBhMv88|Ne*_#u$1k9$i1DKrcbNN z`)%|TynIc99w^U&7}(a4(1ejLBM$;e3o|Drd;h7o&l|LGDoev#%Rx$n^6x8dfPDbM zn?sAmv2CLum`%!#8StB+G&!uY@Am{ue9`_I!oW`FQBbSaLG}{k;Isx0PFC18gmD4qlrFVpj zJi?p(h8(m0rJ#nwId)=3eV0sYp7*x`0HC5u65zVJLe2KRan`Z;fjOuFsiUEI&jg)N zERW;geZ%95%LHW+3_S~g!V+_0O$x2j^3k=RPUN86vOc)fATp>0v60UPk6NT6&3vI{ z&HJd+sA7p&C?E<2^(Lvo{9w2GrfWg?#rHWCjO-cML`eVz0MTYJWfXVVa66C2SLTz; zri`>LabDUJ1#Xqz;hwIZ1|pVar@Uj{g4p_Uw@0N+#)Avom);~ah^}}E> z1>W~iI=HptLgU~pd^%8OxXTE;-Ei+%Y3^-;`iGrJPY4p^EKO(llOh5^=x3V}wV!=l zFC1v0L}o+3Z~P5j5#db&QE3W@vw1DkkplFq?emv(Z8FH-V)xJVmtH`+B0(%B6iK0P71fzPF_y z;B(n8xCbCsU+hzYT8x&?NP3xdATDD4??am+E^8d!1i$ohNlEUk9CdpYDetEFBUVi)pC@ zbv~vct~NUY&7WvHyr>Xw>Lb7MP7&T7g5Ga6m%Cf@jU8*JCdRF^Dm%S(3fVWjR|_vl zhE#Fnp||UXT#HY2UYUa8#PP{ydIWFZwug|$7kK~v)31G8I*e%> z5T8gk{<(a684mK1a!;X0@&<1&8hZG%z*sgVlG4+a2m4K?&&ckiUrp#4z8xoqS0SvM zVWRn8<&1Hd09!fIbVd6%Og1?WCRc3temCH@2ZI9K6^{Ry#SsYI@G@93bV_Dd7}wNK z3Hf3dFvFvBgFak}0+-$?oj<=Y$UqSQ)35Y�Q4YCS#%zxuLbNetWSwC4KA#Fjs8L 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�# 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%0D_oT$gqI{n&a@SI_ymC-5pR4+^`!xn0&^4*#6c3 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

ypbUPAeG4gL@Ta)N6&{~F(?Pg5~*L5(60z(UA& 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%0D=JZaogP0`(MokX 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%0AV58rQDVe&8U9t#IIj0^9pZk{jZ_H{eSp*4$2 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ʆ`~@AUYvv*9>E_INCS#g@-%DHp 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

_ux8Y2UEguJ*lrk#5?pgYBJ>N75a;&2p2pVGN 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

-X?E8l`;HfhUkM6tOU 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 z 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 =202HPwF&j4{ITp2V46w6b%RmMd7{ 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

@>Xb}Ri!uspi3|&c01N@wudeh^ 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 QRPC8%2-5I*(#PLmj(v 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/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%0Dqzps&i!3p5NrX8_i6|W zPw^M}wn|eXdY}1ARry84`I|RE1((%YUXe~@2Z+^dDb*gaczHOsNHRVLOiWLi%axB-aS7~ zv|sB-)`QuR$5(-#=r^en{@7yS_o2d71(=0>o>{FcN^6$vj%A)zzLJ{v7xEk;PsIt& zrO*m{l6_2nPe8L=a#MvF6T*hxaq#X}-Z|j)nBJ?1RK@HqRf)rc1;hPnVli`hzV#Cq zhL_lS0Kx-A^n%z76?tOG=J?8vm!bKKN|`-9zy*#b&?_La#>A=|p}`lD#?a0wFC7}u z6siop2T!b4U2-v%a|?9nYOi3}N!BF7d+lcZ{{3lV*($Xv7nf%3{kAcm_p|0x!S7^W zZH2<6?4@_pP@jLKahbAC>-c(92dy&EUu|mw^vdo`E{E_3xk7Y@Yg%aI+BkIBP81Dq z#GH`IPR7Vu7j8Fyrv?*sZj7Gthetp33fDLxzPcfHlPn1#CPf&rlKl z$Z2iyOuN%Mq7wVf;5f!U960d&ax`f%%Yoa3~A1Sal?Z z?xLfAPN?vQD@eaiagfTn(KmdYva0m0X{Fw#@q09aZGuG{g9F+^CAHTkkt`4DckcpZ z0f&WaozO4}PkLR2-SxuE2dc$8A_r7xZstw!wlD{B;YBV{k!eqKS(ux1zCx+6OZt_S zOaI@?%Sd|#8g6WWRV%2M?t8<+?Z+q7h1@e{Ar_#DurFJ))e#>AJXpp*>|kQO{K9Qw zzBW9#M9?M69_2U2U!;d!6b$FUeIIu@#SdR@wFZn!@fjKEWP25x)vvDLA~+uU4U$i< zt+ec^yU>SyQNUjquu!x-H7nUBuYcEDW7H7M1c`>aLUNH zX=9Q%jX|ci(9w_7enj(Qs93mvaw_pGR4lh4Jd1VOB{7-0*jz(=V+!T>npf9!Kux68 z=$(39Ay%J_T~b-OY8-yGkBx&vtdkBcxSYgMk)}*px_noSC(PgV1Oxl4c(hngJ1BFs zenR}(n@;0P1|?1S&H=I85+M}f2i?fREQAk;9RC1+yzNo*a3Aor(M6sC!eWA!}=Q(*s(u{mqx2Dj7 zssQBZzj!6L+kd2Km-l!;dl$*x?qvI0Vu8oryn)NqzA*|(3&60{CgrHVpge0hju=S= z+yswMQY4ew9uX-T$vdXfas122Wn-ogvRb1Av`_n= zFJ4skIW5okUjgU<3+N7S{9Y%b!Qt44IVwlg!M+uTY*WLNH+E=8 zAe^X$Fu1WPJyOmNQK4XAz36VYY~^mSiqJ0ymH|Oc7Db$FB!#0$6VvIRr`s^R;-Qs1 zAy*%JW>V!0XvoqRrQN$X-!m#z?U9Yb6gglGDMd(np#)pmCRz%Sc_rFc(-61NxN;(j zUI~<5fg7&)b^S0w`Zu+E$2~h-Bpft~?d$d9Qa?<+~R)}C~IkR6n5X8KQcFNb;9lT((tu#k=Ac0hqKf4riO)vdt;G`4q@lE+S4G(@P?cDOExp1*N zpfQ<5!S`7tjhBT3Lyz^6?W{p9V$CdD9iPVD^TNGspf>E4tZp^}x2Yul4#}7AJ3YE5 zgx)JO&rOoqNc%-R86Yic0f-y0a96($pglUz?}o}K3E4I*!8gd)N66y2QQ2)3duI=A zNE18|@+j(s^;RD_34*D@ve(#J6$680xV%Yj9$?@$6@p`gGz!Di7JNekMvQ8!SZM%m z1$7VY`(8-UNvnis-PMTL-->OZ?3g;q4~jFYj~6C?b$5roohl1J6j@eFhh7U=90PbtZdMj(!Lf5G8=V;3PK z6r4NXPa-cXIUD$u+aV4rlW$St2tbmkEVPH+O0#%F&!qrVxr+PJN5PJn1CWcwEi3oA zlafnZFzlbSFSGoz2iME_$OA#%4#a_a-Vr}nj`sUsAKxf9_XZ;;AYY^PlEMYYtj4m{ zTbA0l5v8S@t6XmXkB`x!tmXTSxxI;b%ZQJax=?ZmwPZQzqM?-Oe4oQ_oj1z=?d#A8 z77|v~fK+a=5)3~s*@f$~?teBI_~^+>7wy9#B`=;HFlGycfZTiUQEey?u3EUi%j!`@ z6Wxu%QF-+WZ=2gPm2j%_k9cMp&w4I0dDPtpQ%n`phnsxc>RT+8_exQHaHOL{J^U_T zYwG2a#UUD0%sE%x&tdmmG=F&4N`Y*teEDL#!9IP1aH(U~IbFI-66e*i^~=BoSpZ#9 z-Chyo4VT){U-o~!?{L8W6kg8E)6+7igojTb`Ro*|h5CD2w|Cj7Bw&jl+0S?I7 zFXH91f9>;^;m<$W>teB}_hw7m@|KU!;QF9Nl`vdK!reM1E(o6vF}OYe>}iMZB-=hF zz6$SE_su*Z4o~gVX)j|ZgsVj09gn=#DK94(XspJTcj{@oe~J07p$J*k9fo2mXjd3D zGJHSq8Z|RT6&|K<;BAff)BmQz++-h^@#-0g935?4NLnG@eN3WR<<@wkfm42o&;N?siyAqmp>XD* zlb2-CWU1LuyrQj`ERFw{Z6+2iQ}bbKvDX)uihF(L^MA!htiR#R)Z~gu6lrF*Zq40o zsyW`KbM?U`7H35gpT_F#zFmgxte-RT6ik@wrde)Fl~sXs?|A=jsD=1rm0t?-H+=n9 z`fXW1z?(EWl!EI{*nekT9=i6KYKH(vf#RRtW&i*6fR3g+*&qPVF@+wUH9pKL&q8^y8^8I5AuioMX9453zPjj8&iHn z0RRPr_rdEQI*bj;`ybU=U;fAtNd1XXf5x^B)bI{FVJ75F){WHbGsYaY{LE>3(LZU| zexmQH&Z0*}#CUsb*nVX5f{K2K=VeMwy>iac*H(9l9{=SA1rerObPDgfBEO)?~wk*MD`4x~~_7EFb;H|WQ{)>*I(iVi)qq)o}SR!;oEnC4E9#xeA%oFth<>V z%W#4|*d5l#d=BeBKK|FzLu2J%Zn-oN!m8QkSjJUEhv27qh^Cfe;fC z2QI0?#wBWVP3@>^{j~m?k)0&s=c|`+{KMxSs^dVgg8m9c)-mUFm%y%fUSG~AR|&iu z$rkr5&S(9=rHlPQO5~Ise3K97CxTu$y7DZlbO8&i z&Ck?ep?9ADS_Qz07=zJ83yzmL}MV{q9q&G$U)2 z4+6emY>7ijZ_2iKW;)YDG)^7$z(Bt^qvJ_y3^*rV1BuQ{NL_8>(4)o zW{cYOE^5aBluOpe?bO`tBE-?rLJiagy@Y#Rm*D~%B7t>}X;(aKBa1x4hlEr5A3p{4 zheoRVgtom}XWj=ROFUFjA$&EvFjysnV7Q6X1=X|`ZYZ~n&!4kM=fgDq5S*f%;*`@Hz`;>RLjQ%=F*51)(*j&#!@q=>D=W_-0!fp_r&i`CHC|%b8 zPPHX=4BE6&uEa)9>$;`4%};mbqRaezzr`aI+2_5N+a97_M(DIEz_Pyms&&pm{_?wj zP^7P1T*#rM2T<*28KVQj1Ly7bLVr~eXD|~4CQDIbLMpy)YU?7E1VPm2Fblc{Z{_FK zWqiRhsz^SH0Y_PStdd=Wyh7Qe=nunzw3CblE(I%^78>T-dW%+SoviV=g#H8IX4iYk z&ox75{XW8+*{bvDF7$7Q!#sn4z-WWd_OohOfOnr15Q&&Z6yH;dkws>0zS@_Vh9J)3 z&-=THNuk#!A2t@Thy!@q*W9J_a`o(bZf0qCqGDMV8QA4xJaRlKhy^qC=?Q!~#pJ1p zip&4YKzQ=Tf9Bw>&72MEMG$_ZsLcULPEA^$txIFEa)D6hIy4Luu!Pb_f_(QyhV+VQZsN~igM52Quj@s z5bq5psc#kFa+x~tyF=WB{rWH}E{#4)u$fr*RlZmm39Sqc>*tvR6R)dcfTNW@NImTP z4&i$0S92sl9}Wj+ngGd6_)Dw<{5|tu|7tP_Qr9!!Gi6=h1%aW`Q2O^sjj@|5m^VSB zy1#^^u=x^`qR|78Hk!=eQ=kHH@4j38VK-2|{8pc%FU_NZ=K}bm;d8EzqPr-+Bz%1O zB*$CElXY_mO_e1P$P!*uT_b(-%DgfkjReZ%RX||;mCgnpeSOh$m%q=p$KS!%ep`xV z$_L1)VzF+uY>Js~TyyB5epcPf>+d&@THxE)XsJ0mXIkO{901j$Hs)OWeCr9}YaJ@# z;c=eU>CC@(l|MuRG-lxyJ8qkyhGPsc6+}(a)w}aKfQ)xvp-V&9MrKp=E7ns4(|gNc zP3YO<2@o*x%F@`xUfwg~gISVV ziKS3$xXVxz zwLx|qWu+57;);45C>-V&8pytPQtHsmLjGr}SN|XAx|Qf=7itQ(&&XxKA+a-y0CMHh zcc!Py4?@eM1zj1^hBEq$a$Oxch3nXZ_);`L+?GVu9hG6#;$obrd z)cQo*^0eRc3wH87NP=h)u-H_#X>w0AfOc{ETlMQ!Jr}SMU;x0XSv?VwdfA1pql?#{ z?s>G&`k|1ni$$>T?tQ?gea5<53}9=M@~=bWjcK z6g(I?lgYdJ?NPt~kZ7pmZh_zgXK#O7A)O$Xh^Y3yp+0zU&y-WF>Jxd4tqJjV(Md`s z%qXTmO^~_chGA8cy;o2!cceG@nL(4jkI5$I`xp!|1g8KT(Lz2=LX0vhVD+z&IgA$( z=~C3aDAe-eRO3|T2?F*#Dg8Vx^Y0^J>dLPdCnVHYsfzHJUxT%c(UVXtL1*_mc&9^4 zgASg}5qMa{|J4haFpIvzf-!(FhBG}>6i!6_iQs=47G)O$kbmgT%b?tr@3AhtuSmW! z0S_y}{9d)Qe$B2PnU)}{ z@o~!?IO+r>m_v%7=xw9@$_fw(oVi1H2@Dh-27S2cefT3CXxDMSUc&boW4{tK>3`Be z?+ZjhYUNs236EkrhaEjDOqo4hy%+f}(7zHwoc&awMTE}X5K418AGkVORQ(q+7K|>= zJ;i*b^6LFlbubjSpw*$pd4U{QmW%F1osLP z(Uo#phSNBw9CP}WQkMI7H(Wg$x%T#tXIb;mVaw^b{~~5H(N*}8W91a{*nZ;ll`0g} z;_7cAJ%h4{~b z^@Bdq_VT*YMPV@$Mp4b~J@k{qofTTq+>H#S(EoncLDrrsg601vdzO6DE_d>jFD6&s zPIL8s?W={Z4U2-ublYe_!Q-k8iG2PKm4T;YkSf*i=b1L^cNJ&NOt00 zqa4R<-$1b-!ObUFh6;29?U$f zBFxdsLNB`@cHG6`CQfhCD-B-W1_Dqtu5C|k5Iom%&<#}ZOPuimsGQq`yqwieyiZ0w zIT3sqN@38!AG0r!@;?1X9w(O8su`EoO`--P9n9{kMUlsGNe410t;_+WMPg*2RT0WU zkBjEZNuL`m1x}a5sOn;3&+~2)*6R&7LJ+VQ>>8+d+`x#Z?CJTkB^3)n-2Im1Onx`B zn|a%yx_9oTUu0wbF-vF6qHJvm#FflE@Fa>hFHJzj5o#|X{(`lrPeoz0?iWvM~y448Hh8t>hrmqdEo~1moL!!7f=}4fU^iDFpgetyQA_-6z^JjhD0I zqBecTmHIQ4p!<>@@Xwr7+h3%iq8g_kvd8bpW$Zn(lqQ$2DDd~qS+4=}H#$o4eeA_! zS&WNjHGx11N$EsRTvg1w^k#h6qsJ_cmh*p<3#i2=~!VBUzuGmq%=w&(jwW_U$sZud9Gr!A5j?PmeitE%-h($lg&B&yjdwc`u| z+SNk}G`DRr!#OQ%J`d{J=sKT)1vkg*ghh8}5vR6vanu6l+n#% zuj)gD?tbS~C0aGV@Q{#yLAvP|we5X>bQj(c6$SF`bk)p3t=DV|%c{HMa&$4YjkG*v zngS1y1j?&N)P>NMBbS*OEeWs_7$#~b*Zfj{daYF)9lqn>tqsQ45{L-38v-xt%T=f< zVyfz}U-fgqnfjS^cQ&4>WX^rb-@ML2eeu7-kUt>@!4MY;G1kRXUto3RQ9oOM;YP;s z?z{S@b+FFRkeTm*S`}(4<9*GPL@8+Ev~b+7Ep&>w#+9pP7lx(K=LDq!9pl%0SzZI|-=mXW}WVr8=^&%L_3q z)ULg25d9$YChuxKJ5l<5ykMnJEGBSVC(%{Di*&qY0n1{`@WXL~Hpe{%Qr2jp{#eKh z7NH~LJZ#iU3gc<#x6jkVZvJ|VBk?RxOy)sCrqKG_oL!erp}PJ48qlyXqi?FsAWca_&?DtM8;C@OoWg97RyM#$o7aPa+#|H{>Ua-fYt}p zwUJ+PP!@rwoQ$sDXw&m@ewzC4`9gQQ3I-vXAOdvgO`C=pGdzGJuuwtKL zebX7qQJ&W4;YdW78b#Ws|E<=C!jvV4MZwyF>;RAGxuoX9g4bx%<~S+_$y1ygzG`vc zA$2)EY(2dNEC!{n&-KQ%ih7_Wi*_Y{BE`PtE>{4lJuQ0tK()7D&%wh<0?kg=!aUWo zcL~i9?`s+rZhfy!2x0Gkzxg&}fGen{*1#BMGsnSXaBdQ4tOK;P$5Sk3x0@-% zQ06Y+5AQ;4`QRpPOyl(YKSV&-6a;$?>{(qV1aI;ZQechr z@svI`&MJ;z@cf(6uiFKwEU(G6EqdU9F++u6FYZN~@fVoqgq5O#TLA@nCkmEuI-jdn zt^{Aj(YH_JVGw%V^76DkXXSt1am?IC%@C;wV-6-b7s^j#!DElN7l>Jk6g4gV7J2$5gWev zt$r+mOJSUu77Lu;b$Zl4NTRc&weLDk?G*dDP33xDiqWz-OLcGnudN#k)$Eo2gfhp* zG_c3M^lL#b)E#oxX3x)%W~YKyt!a z>|o(|y1Zw%HJebH&xanTkNU+ghWv|YBkmbYXgJevlY;|SWO5B~ zwgxPjI=XmH1XQ-~aspP>HHnHAQlOX*!3?droz2X1;9HlsIKW;LtN)nZ2h z9cH!gl6t%aMu4xUTju;dwKi>kLC193e54~!gUhl~d)%71f{_A2!$I_{|C;oYpX~d^ zVS$$xy_fnv5fMU8PO|6O!|bK`Jv|Z9l=ZnH>mdbh`E)gdc*2DLQeAI`DI@X~G5(fd zu=f``Qp97yBo6hrRV@G*7%vwyB)~Fb`gMr9LERMTu;<4EfTaQJg!pTW$E3t;yb<4E z+HcMCVkVt)c13R(@rT*RwXTML-YW#?o1RB~*XwTk0-B7amS1E|8`;`BV0P_`^>7s z*AAv~oJq3xYFvq3V=5sm9B45O>0lRPj=m%~vmZgQ^cPElSGuRn@4EvBH*fc+VAwAh za$AqRscuG%zXm@qv(oBr2R^p#Blz2fd>+OWvo^D^9FaYEiI%p=8iPAhNnEz}AiJ#> z;ylG@EFkJH5|FUfs2D!U1;EW(tmmayM=-#yBJrX_tQXlS9RQ!aTH=#lVcg@_&OAu8_FrZs$q58yP3>Iq-NT5QCth9td!2&1|=aMzds%@=5}xE zc^|+ini!(knyo>(*D$hvOMdr6r~G_0O2d;0+qwlb#m;@*sjU5c?z(L{QM|A%e_&@+ zTL_2^*2TTZC)l~%=mPoOClILc;;kJp#X)K&vzK2(E586@jhswChGiceYfn!u;} zw82?&R@dLJYH|j9i6k1TnInz}@|$jbYQQblZIEE!^H`rbbn&v&uMt&j2x3MlI@RXY zi~_CH?_^Ld;QEVWt^BRuXWKJ)gG)Qz=MWP=PCe;~Cd;01ZH8Cuhcgi+S+)Fo@w>P% z`?7yQ5DKxaQy%+WzKJQQtxpW|mt^BXu|($czXgG4#)`eko<(?XVfmNO;9n-P`PPu1 z+b{KC|LoD&6OoTl*7Y+W>3&N<$Z+i1^zzsHk)SWl5?{W@siOS=lzW(TvQ7rB4vYv} z&=lzseU0kFw^r^U^+W>^9N=>16NPVHL23`lQv9%w9x)7o|HEKSbV)vcHLdZg2H+XQ6k^f*xF>u#Vd4BLU_T z>ae(>Kb&WM1-wREy-33vW(#mT{!+rDC58=&);U;%+r0$wj3lr->v^}}%mXqlE?VjO zBi{pVK9&h~jekO6QpBs=F!Qa^Z>C+yyM2AV6|XF7$xuFZCWNYzV9)PeGnhZbR(`$G zqa0X+eIkDnU2on^{Zd-l&o|)-*z$v{V$$Lxz`p#K4@qe|3hU$$Y$N-y^Supr-hZZm zhxr=66^ln#vsW1lruV-4nL4Nzs`C)ttWNe5*JP6i*0d~!*dz@CtrvDiGRH8ws6gEX zA5HOt!415PH{X*6aisP~llL*+^YU-fv+sK+AFvM(L`>{|{{E-0a_GwPyVhd+CRZj0 z{bK(|O6;@!QWSzOex%p|`Gq~oKEqjIPhFhd0GWBd>g*S9#9Wvx&qPHp_a9FH6nTm0 z2&CgpAc=!fZhebp;VxXG-j*?i2`{28Kb*GwB*+V8CGd><7)~Uo6`3z;)GbxxABF!7 zQ@o;ai30QDxs&U!Q4(y0CAnfyC@n~}=WJ{|({GaC#ozg0v@o$RZ#2M$)TUw-Ax_X1 zqUB_FW;T?C?Ba7)acAxKT>dDAas5ZPr1Pjgef~geZ84<8am2h?(-hNMf%Bh=#*^KKjCUUxZ$bb30P|Ur=MLi%#d-nB%ye#H-_BWMR4Ala9 z@s-4UtH3Uryu%Jnl)>5G%k$_t)~f}U(C-yxnYAT2Ajp>lUcWmwLpY^9?%_oueQecI z;5oQ_&9(2oT;UIFa**J;ikC^uw|W3u%!!qbO8Z1wczcJnq5fxsdSqSxs+~R!5Q6eH z1y#?gz=M9d^^ptKjd1j&gwo!B{%+^yvrewg!QA){qTZqmJW$7TOTGHKnk=cwqy`T| zR0>X|{#q`?+LsD z5-8i}yh3q|P(kJQp#~|}=-xot-sA}#K1-5svoh)hO?TmJeBR4ykr@NdbxcBcSTz7B ze^FI`Zc8#z%O74-h45ozkbWzQF9~KB<5^fT%Gy+3t|l9gVLGk4oC19!-4|v_A?z%;YH@&| zUbvOLFKNZaa-(+xno)qrkF@n6#hplqv8?C3XP(G?>GOwOLP|>{lb=Y{sdaExaL#o$ z#lF@qX(iF#gl`Sy`YLlJZXQk>-#^0T6!rv7uKG;HH<+er#5PgETobIs-Tp#n=5dk1 zx>d)5$}~!v;ykO6F@YxMHxiWel2Q@@*mg~ujECo_d)VucwWGhusJrc|yvu#1-0DN5 zSDIW{UaDC1c*&8yNjO#)Y5;$w1SU;Vfuol1vrnM&6VANB2{k_)Etbbcin`tC;qde; z2<=h<7511=W!|dRnwZC@DLGkybDGriI@csOOgDST!8BxCQcTInys-4u-G?q(7XzTy z%ievX&b&KP{z1TTx?OnqLI>fiq^8W9X4#y4)G7n+(`%2dSvBCDzUnqj|BLGyMi z{Qf;kGUhf-2@S3-zxtiBU>Oz>z(nl;jb3u|Wv^A_9rc-NH8hd>WM!Z)L~c0SnVPQJ z5!mJA?Xe;OAax)+4aeKLc(>vh%0i0)eI8nljv=dtv%ioiQ6sP7o=dBXnf{*&KaZ3D ze>V`-Dmcwb98@_U2Ugu4O1N?730?O)VPf^vdW_;Z_l_p2H{0Fm`n`g3D8!x2+oh(g zwGy!Eq!8?I))&7tlzt1(O8-?lr4A;;fSMYPx$(l{@K@fcc*o+2VdDwsUf&untPa9G z0uPte*DdPbfX+eZ0^7`)-1JRcbS`+YnT(rA{TMcSQ7diI>+N;r`~BRHSZxXAtRGN& zakqX)s|937Bf7U)i}EtPV3|`uBXEOUxZ2CICoOrtVCYyuY^Xln{1A;M{>?KOLinyv z=kYc8#7weWx68$h`8c)Jy7T)#^+rTDR(b@<>bqp-_sko+_fyYU(eH#UYbWm(fbN+5 zaa-JOyrvFUx2$^rDqkg6!PZA--?k|d!K*9%+xrb@>%nvXMh{gyF^T?IN@**=R+ipd z%N{rc6?3fPIkVS{J)`>42k`sB4PW_&PR^rz$qicAbZMDhgSMEXs=Lz;BYWT8ZNE_~O}=&1?mxUrEzqx1^^ECL6IFUDqjY2xGhbO5eH%CZzQ8K3vF~R>*ET58>pgK8HQ`QhgS4tDC zke*}=Tf}W{!f}9uJb^wN6WN}>gy!Io^C{7G?M)Lb!O2BymO<7wMl-eS@~T4K%&@0* zvg?UY)38;L-@}#V#18*gDYoasLVzzyErviMb+y1g;Q*IQ(5uJZSln)$ zA6qfI?G?f1`q5vau$)`>98o_<*SB*mB6L;Q8TfpfrLG>71%%N}{M!4JK*HjI%%I?t zfHw>^lbq)^J%z@Sx%qOa#p#X*J#y9Bdz_4a|KSxQwIKAphsQSGiLlb^G({3NW8;M~ zyQfVi+bK2bt5K5U;=G5MY%3~>#A`V}Vy<+}3!^KscG4w@WwqWL7hb|o77UaVT>e?X zQ}e#Bst)3Wt>Ccjw9=qx1oM-=qsh13ad$~xoLIleO?mDnEhr`Pv^L2y=gaI8s9VNz z1q&5cMOK-P0^`1LLW90R^Ew$9?3h?3XUt~;V`bE>+C&7EwVL71XI}TY#3nIsD#!@y z>t0G{eIGjWNhZpfC>QNffEy*}+MKU|l@+(J^@$q^pbRO_e$V~!6$_x}%bG~wCRuBmr2 zGSI>Fs=UDKruq0!4V3(usZrvVBD_!_Nf!u7nu!rua`;Z}Xihgqf;S z0dJEQ$p22m)+ytm8W1AkEI9LYF%n66sAfaR&)Dy>mufM!Kz6I;1PgumI9hLS;H?&L z1hgOQ*~Iu}_+}&8um5cSGu90LE%$Zp${YJ7-^vf{aqxkkd=VI(|Lkk_To@DS6EGrn zQ`+&}4Sy%`o!{zLxeDcXb}h0~=6U^RN?e#!6G^Twsb4>R)1qMn>Whk55i32681Di^ z0K$MHu-U!Z`hE3bsV|RdIC=i+TH!PV;v(wTGaoP5-5sdQdv4dDX*Th90@v5axOk>| z)2!?KEGF~Hn2jibm4-x*<;kM#R3iJNHAUt^`f9k!>ixR3tnIWm48oeTj2g^L7ViUJ zH<8PJVcnik%b$gP*v<4Nd7U7b2?~8r@&GpgNOTovflqCbJNug-3R)JNg`*uNX=D9U z=T}yTL47XYGb+R%(q?nK(D(9~Y0fg5Q^iKaL*2OQEl>gVKrri-0q4`jb?^617sYFY zm=~AT&X8YweWX3LH7F5%nr8f?s2VjX$L%;*PY8W}7#NhVVNcG2*Zl(>RWQlR>D%iy zwuAr7Y-mJ7>zu4Pz*MI9=#LW`i#r}m?1&h+=E8gntZrhd2$MEyW&L#%d13fR2Az>D zKCC$l`R(gm<-POc@X<8f&&x3 zT6!SFqB5K`oa}d#*9bdNQP>Ad3Yjo;nh@s={~q!WdwFDiR91@k?u$U5OvfXd?AS_m zDt>BY$pwBy*cCZaJC%=jDk99rckH>C1u5I$pO7u5sY#Fb0608 zS5YZ{*cWPwp>bD$E)Wm^00002000mG04@N#3n7-+1(mxI$#HjgcP@7>;ax1<#dpD7 za^2m)-OP*?%>bML00SJh-OYW6-4tXOH*9tk-RKtQZk3tqsp z_80;H1ONbr0BB~20CyX*Y-2arSb&^>3F?v<7lOSr?f?Io_EZ;?Zy-7BBwRuMdu1jX z^tBh?iK!ZKMf=G-g+roBPYZTclb@|xx1TqoeTI`jZ-A2)O+E@TX$|Z#!Xis@g6uXG zTcf+7NQPT`&l#I_JjAs^Kv36W;eVza)|%6@tRvok;8N^FoI>#Qi%gf~Iyb0QN-_;S zD1!N*SM{PP#o`@s+rjxJcD3_hQ05!OuNOvn0TA@yzV_jva-uST+EQwgFGDpzcM+P-EZq%ti5z*Emtf;{YaY?714#x%JI93O+?V~ed=E!0 zU4sIBsiGxTqKlSYr928wwr)JezTLI5N8}rVcf${Zgn*rwu-fV^$B2=*0VxBmyMuvo zf3hmd371PZc3c$hOo{{#U|zU3I3%p0Hs7Krg=WF%64q`ts(amn=(VfQ8v>#%Oo?JB zfx8)>Lf}1g!R;MY-$ms2=Su5yml`;g03d|gT$_+9T-D)F!qga-%j{0;azC#Q(Bi7}j=YyN=$yjW)|G4{Z z#?xJ;rX8qvTXEeGzg;Rq>1Q%n8<*xYs(PcVii9Vi==WOS?@6tsL}f#3vroBw(1o+d zEN{wjYVL^YXY74IYdI(zH$y>XdD;EZd0bTu6FmGahtZXc+P6esEKzghV<>|gl*$MLrS$(@ z1Q#~Nr+BD)qa)*bpb`VdM`UT;H!lP8*&fam3Q+RD%c_Id)19#o7Vz`CY(;P7?hy1*7omqr5693&v3*)uO>h6W(9z%kA zNac=sV;rBMziJ%TH-Oo+{z6<(Z7I(|&ey0R?!VWr;s8Rq?^$X`s(!Y~q26V;S#Kp`g zZpi7w2c1W%>u5espZuKa%JlLLI9SIU*?TQppC3Ecn=a_cBn?CaWuF@#TL_`+9>dp= z6)M8ldkdC!mA=112BVRqVG8OGh5!_K>HILm0OU_VOox2-K<@DCtzdSylthyFT8+03$uA4Z z(}=K8-H^XKTC_y7Fz3|K@E$*SiYPOSp%%6UW^lJ`1n7a@f%dyKhdsLcH}Iln{Z90Mr6)?EGeMsH~t$ z*WQ{HTnt8Zi@x2aNYW@ZM4`1bF&rAufX1a$^rI-{VYU&jR!qNRBywuU!9LWvP-R;x z5m^P6Z~ADbF@TEe{F3{OEF>T!KyMM$ILoEiJX=6<6B8>1n?87#6SJbx7g^(R^Djd; zxuLkgrarV*evhQCXN|u-F^e(;0Z-LDEF{toBcQnxZrHQk=Jwypnzuy5G{;!9I%C4*Ws9Wbux`2u@^A^>Q{f@i;FbV2M5!nC%*MwTsd$O;q#i7F+H(~8dP?O z{4(n5Tgbbp`w+J+dX?SAj?1&kBooItCPCFx zQF{fH*%7FwbEIu{Z5#PeQgzQ0supt#ts;+0>#~5xwFjB9AfBI8*za=dMno@6GG-~1H;lQ*%TWyj-C{P3h7C$*U(?N3?GWD>mJ29WQj=%BL0wvnGm7Fx0-@-d zyiV54xw50Ha&UVI-m-t{yF1(%E&;mjDc5peN_xL!5x98o%jmUNlre7p`~W3jF0h4K z0;C)1GkuK?i@1C6Dx}=z2UUSqnR`%2E;~ec{NJ5_LpBP#iZ=CogSPfM&u#EiV5jiC zf3r?*4CZ6`IO7c3-B7vn@5O`3?DGiLPX#eaq}KDzg|Gn#_>gt&Kv`N~9Y|b`3{K4RxmC4MD<^?R(#x2+R>StB<`myGA0s=xJ}N*%2m zs@Vyu>{%<=`wHrSxZ zWmjyH0M}4%6b>amHC~%07H+6m%z103KrV@~ya6Fq>938rY?z8yxWP*4vVH$WM$*xR zdEk9w=W*Ky@OwS<@>Fe09nOZh5T7JmUS8HbbRX`=bAn1_MH$=_LhiuTiyos6RNg#v zTHO+meygDt=Ft8=>MzlqXS-Y&U{F@4MZGtxi|W*$_(muYE$j*e2a68IjeABYG0k=k zZGMFv3p{$?Z!PZC`7SR`llTl%CJwVEuOLozxDc&Uf2}HNI;FU@`PK?E=V*3}c5lOR z{yvULjDCNJV zr#{UJiy!1$!1U&MV7^HS>WXlwdPh=xiZszY+Hp3DjvcWzxCnk7zCuxE%8spu8wahP z9r_j+&A7Y&j+rz!$uBg}h$!z+HKo*APKGE}26pMtzCdpVqr$&s`q6sn5i+(SMMdoe zfQ8t&UPmBjh6eU_qYS&J4$(%yJ=k{3cz2plCIB_dqFB+mP)lXgzM@n5$!lze;vi9F zS1+DuH!E+H$q0cdJ04vu4eh&^Dj8$mt}UlK)3Fptu-*nmJ_XQ=b>(Z^1(;5#n;Ady z$QPgYv6mD!ZU zT3i^p3jHdvK>F>~5nI6`^ra{aGthK(EECiut zB#MW<(DU(3@YOCzur}1v4TQUo#9@M0E7`HA&<$%x-#H29H`rB$LZ4>$^q9l3#wibI zrKZm8(Bw-BQb(}-vJ!^L24ktx!kC+On|=adx+7z!>_-t36)_k$O>gaompHu8bJTa# z?5!`={31uVRqS?C`%kcU#0CgLNCRtP=HSw3h3< zv;N|+C9dTJUj`xQ+FQt7{FXQoeMaS1I_Hj#sI|l+N(agoa=x@}wHn+$&m*0R+j&Sl zakydf@r9O%U)ds<&Nz}G7h)|oCy{jiCY+mmn|~v?Z6N-?Ek@NVgqbJQPXSS>WF{X} zbzf_9+$$Vr-e0`}h`<7bXK2^Z>-S=YJBQI^taQJK?~?-Cat7uT;{~qct*foZsxQz%UEVbNEO1wkM8oHk7WzWq3h!44mVV`)G0tUIjUs6xkT=It6)T z1m^KxsZCCAzgo6EgX^Ah-udn!)#Hop9tImGGuOx_8M!{&_@4!-R^L+>V8(~ur6x@5 zt_X%2ODUo;Y=tKp0U}vGk@po);qDqIxXqgOY?n!P#MpUjy!;jZ8V~Aq2j-pA305qI z>-e<1jGZtHXr0k)of!`uYELxITB;^`e687CfzUlVuqlwbJRnZvx-=JD zbjAz{H)L_pZE41>u3{txFp6lEu8yRtoU$~=Dl)vajMvEB^5-!dMNUOY#V3gagsrsu z?iUq&*27XXlt-u*u^1Z=^WBS{5?+#DO`m>mu2w@b#b$ZE2GDMMv#z zu(dPJ2JL0&0Ovlg0zKK8B!eiIzv!!Jn{V{0ED1nWmb|pVRIz=VnBhxzBT%n0*l4&7 zg&}m@%&UrAcz59*TNkM1KktK0E{#a0vQW_}olkhLTR2}KnPqK^auw$xVOG+i+L{vg z7MlCfsP{A4f|?YZUct!otS#v{pHOE6%-U%hmU{7nR6z}lfK!p;AfKd|xRkVn1h3C; zMtBCu2eoCVhppnL1v=`;1LReV&`Hh2lrSmrabOg2#s!MkR-^TOb#$n>)g`zK>)Leh zYLRJ`zI9coD-LXdjKoTsSiw-WSy~yNPO@tRU0LFbSZQXWv`QePit`{yt0KXpQZZu> zF)gbs;{srqa)&1NCZAqYLX7}Or-CobMzwtAu?}vP43}of3ur;dhS-65n z>ty~SL#dTrhPw$y#(pT;0hiqVUL(RALV0ewDI`Q;zJ6(ogX;QslgSM6+Efq?nX-Oy z!YOODB3k~W*eL?amuGbxIlb5yjH5-d*1J}nq?w%64k6yOcP6ZiJENI*%c_@O){z0G z-y7~^J(I~3OqGr@{>R9^kkVBI?7KFvauKcz8hS@K1jv~K0xic?Hn9%XFRdg5wZ>Wu z5yBG>_sT$$w!u1GzV4ifzc-9-f8f!GmOMl@m~&Hc;SV_QYl15Dsvmms3ij1K=N_cG z-1EU|U*~zQ6^@YcrPe}raBPt~A{aqzks=kPkOJl4N~)>^8!=BlW?#R6xsGDodiSxw zNhvYX5^|oLg4QtsmvYxzKjD}ma|d28*iHR`QDtla*&?~N%hvhyECNe(?_IKx_g~_aCrOYUMtuOb3S21+I6P0=^$^6B ziGV(istr>7>n-asjGmohjLVsn^<{X&|c;pi@!;U6)-0 z<2U@{4%hso=&7O(eo@!m^BuGNF$=2h8YCqBnZt)w#t{-#;q8W+#0RBkmx0LY`UD?J z6`qOjC2ovyO-fm z{SmES-?!%yh?cqHR&|8A%#4genpTGi_BVd^dB{-9gUD>nK_RqY*i3|b=xzl&H*Y6XrUd_ zLz!mJad$~-<}UWHA5)S)8jKx92buRg?w)wNLupo%c4?zJYpV<{T0{4bO=D zWN*vJ9~4T7{#-?J;NHMT3h+TQZv?9p1uhbHX9QI$QLRroeY}n=%X1B(8w^$oDn31Q zFIE`Nds&o;Q0WFi&aErqkTB(2KTuO{K1r*ZzeSh7(TTnw8fbUOB5TgP1Gbv4e9IlL z_3xn#D=umV5|=g8HZwN=b_j(tWXWni1qaTeq^O>h-l3 zbrnsLNfSffGyiG$HRU(^tW4$m!r*~UjGi5>%e*_bhx{ch4buBpMu?{l_@meu{UG{sEG>+;Xl)MqT z^#tNs&2(!aPxAALptMLEv3SWBE_HGoW&uwF3)@D?V~_326-iwN$OvI&hofGgX-k-T z)re#9BPH~YCD3l2DwNc40mIq;yeTvyBu>#2I$$s0W=<^Kq$^quat#iXiI@Bh9uZD zKVgiSUBu+>IBU(OCgz)w$hw}ii!7>+Xy#ga4ou>YYlKU?ZTLHQJ(s>y6wWzhSBcs( z>g~3^!%M;x+x!8zZ)!y3B*IHLwHOSLvdf+PH7{d1*g6WK2C*Z?nvThvgt!#_G9k@| z_w8n5OeX9L(LQ2Vc^T6x-3?<=-%`-Wd(j{;W8PK6j?nXEV;}mIp@pNqyE*D)lNAyg{1n zNW;Fye&!WRnbv@3NVG73BEI<|%m*{meb6b7$5zLv0@W!cTT+JS zNyPi?8H^T=l)JMEt_n{v>qL)KBtMmFbPzB?~aG3!);KoOpAX~@Wdrb z${>oP#A|TOW|0vOj99=O-e%`pWIBxoO0XAtZa=q{pgEX=r~tf->KBD23<*fUor#bk zrqU|(`--A-FDh07h#&+0*fS`14<<)Q3buYyjOrzQ~Ew${k@RynV*T60Fg$JE> zHM>1u266^s^&9k^JKo@?a3!HIX^c6`y~s=vohd6I>8A1>g4R6>F$C$XZ0otqgVXJ!AMGRBDG>vklY``DWU+qF1n z;qguqDyaokhiXX`CzR*Y*Gtnh5C)_g?*mS83GQEIu2!+TLty*c#ncwRZ~W8N1>2{} zwP2*~hhOa;JSQkO-Q9Ed%YMka9EM{Hgu%$*N9|SXw2dQJ6fF$6ywWleA2msL8V#up zV|DMWDi>GwtyXYm=;-ta^$Q4k^LveN%o2yi`8H27m#*G(PJFEd=W!*5EpC2i&oC$=%*JFyphHLQ%t!jFik1- z0sdmGlG1rG$@M^>hWR0El*Fnu6ushXnW)Lt>7L>|aH--=a3z9(ua;A%T}A)1P;)us zk9G}NC3N^8w_k2&V+JdV+K4f@^sLGuz;&|LAJ$8FvGHY!bixIa9<&Je9aYb}ucZC0 zuu|t&>>_^4!)|Mk_+YAFQrJ<5YnAz_GHQAY!%lJzAig7hVT4DruY;Xu@>fDEj~0+? z!ERE+(OR6{r=^w7Y7bofUc@ea2QTRv$rKAW=f|`4`zJUL`%<<- zdO1Jee{uL0Ms%Rjrre^qMLg|>2BgNJmqaC@F8N|3owe#FWWsC@!W&%`d6J*RsYlNe zq+;xQXUcL^G7;~^*}RhMhe57SzOh1n2vn=ptRk^GEd&j;HJb_?+Qr0%+^%|REg>-t zAxcI`!-^|4rTYlcqhXnUqKyB#QN4d#?nUng>+om^3?>z~Nx5r|vTjZYPJpj@>!1c$ z;x7UAd|`%MiEe_UzUHKtExmY^0l6h0 z6b6uBwObn&NlMxSyC?21WKE}e5IqF_LsbM3uLnupRP;f34`tx ziRsmYH-qtj&KM1(sJNq?LiAs(9V4H3C(SG)1iMeD8>v+VN8uyxzG|5wn^s%{*;*`k zw{||Lo{+sp0j|W24KombPqK8qeCG_?#k4*Im+`B9CfoCOFk6B<4`RMJE9o(glmpP~ z(p|5O+lnV-V9~Nf`_dD`oS-F3LM#d~9n56EM_&|<%;)$EpV-OU(RwKlF1%0i91l@x zHu|HYhW+`H_DNjkd$-2E>b(o?q`w?9LU-D8HtJkDWO|-EsGu~jfG0y5ndYXbW3_!f zpx7g30aJgg^Q0PXK*#8gozr-R zUZtlR8?Ewn;sJWDSlUs+Oj%x|o+XCXZmf+ot>A0Uw@Z8jvEN>VFxN;sk`xuN^Wh(B zBogYL{Kc9L9B2rxzm?N80bGJ)+#%B+W$JG0imN@;hO0Rvhojs5Tj3vC2>#wR*ZLPiEvh0+tEpPr<`79OK zZg1rKy`(RFae#!XXpyWvJXYAFuXEG^mlS{X>v{TBA4LzDo`p$%*bkh>Y-6TThc>8S z7V@@PqPZv4yC3a)bi{(Dp-^6$;Y0p-^A^=;fKpB&9^fA+ma?~A8m1ttglIw1cuhwj zkWK>ahmqRb3Z-z>c((1zVi>vCq8KLk5xhnVWM$p)+d}bc!<-RH9A5VKfRNIhByzF)^b z?9|=;BK9?G=xH*vmLT4{^a`<$_DG0Fru@bK*w?sQM|5(P!>xveNH}3$yEg234I8LG zm(;LS#xnN3_REE>F-36!10;TU=yJn4xqHSUd6|wRo;ApnIWHY-ZDe+FL(0AA)f(>s z=tU53mAUsNU}aIrGOW6iq}R(*xvjxfiE27Jg?DU^0A+TaEVnES4z!ZP2}k9G(n=an z1ENF9&hxyDyjYzg0UPxel=n!oYE*alf)KtrAUCCQy4*cZ?l0O@^J6+dFc{;ukAFGQ z6~$G&fm&hk@?>pZ%cE8cbcfB9eo9qlddEhXUkr+8;Vl%T8LUsORVhK=V!l1(j_&ax zwv^PmE`Hf+tW|o~tM4~szodOy%MW%nD0VY*RT$-Q(XlSIb@}ga37j8hg+l!qwvQ>KYIJJmXUcQ7?i$+uP52p%BCWd{wWu*| z8`dAX@Gt0y$hG|#Ur&y7&eQlA*GZfGF=eo0Nn(beeaM2e*5Nmw*CAbPc(mm~-#JE* zq?9OFih!8EZ&VgLwbfhL+g7JKbn-o>dG+Xu$zxOfWj?|0i@?V7%GCh6Ab24XvqvU# z2R4_s900ih<{kIG&!l`hIF@KsPNkPWpI|Y`7bBy3Ms+n!3D^`4FHYFp`29mpItwgy z2#&BO>st~aDKG;&VLY7rda7>``z2jZnV%!>Z{i}x+pe9aU~XuD5Oj;bRZ8!T?E(Zt z_}ex0)@`U2_4Ou212fB*k@f-Iz0Q=y3H;6y*DMWQ(e(ha!IG!z4Y+CspQo;1;HjH% zm4^9T&@jo8ZjkGVPDh?7A087R=rMF>^*XEOS9!r@%a9!Ms4WzzCa{^8X$J%yx}Zn~R!z35yH)Tf{XC`^Bfw`u!ExA8p(W^r zT67Dz$`9k_i;NP0G*1puheJk2#gjr6WCF^|MABd#ac$->lZG;%@7HBtmg!4m#4vdb z#%K^U&QcNVSn+{vLriSs>w345Vq!Q7_!-lExvtZz8bG1rhYttmYC}uy2M&94DWVKe zQhqR77ZR#4g^(!w1)^y5IC6Ud;)3G)L>Skc6!5MNvN5%R?||eA*VS6%)~3T>ZR{jA zgOmu7#a<7?Xv3jy*7(pMsl|dsD-B<)^KEOrsrZ`&w%tS_0`ROMkPDD5O|EN#Uo@Mzlq&p zn2cg#Swc@v1H3tWbPDDGR7jc>8ByB6_SuLygW^MUtOYe%PxkiABUZ7M8c6bvYSKZ} zJ9sB3$pTww=1q9Rz)@V6=^bRT>1){oY|TKTB75OyUnOuYP$o^iq6|_VECP*hyHpWq zH&)x|Q4V8XyaGtyrpSUgsXl|(%4B1xEwRN8^wrI(jO3_OghajQsE3C0|Gns50)rwZOysRVPgx*nJ=4_A3uD6Q6r|;?p=#HB(YS zJh{-Q>r7dqanu-0`85x9+GQr7T0Y9d0OtwG=1}L3?X$Oq_kY}_mX4E95qU^}-#(&z z3yX6ailh_TG`8P#nklKItCmX=mC_drCad-*o+`W2fnTea@0BSS=ZS>!?nuYuX25$f zAq}$%vv$vYWN~P>CHOmQf8;%EB?Lp@$Xenr3dBjI_m&ullijoJ@1zfwbb1@`TeOunq)k*R447rmBDns9w5w4horBa86-p}cLQI(*N6T8$^sq* zA-atCh+EhOWEyJAv{k6 zo+0%SnRFaof{DlA1L+0+a-fSnv}dlat>jAQO$HuF`eIx?ua>8WeDlvy$4*ZQn^X>+ zU5812hS~wWmMp1dCav9mnxk~lXPB;ov0|&RCOrdOY)l#Pi)tH1zb0q>Pk=SwA*69(avM3$3## z^(sP8QUtrXE~_@|tg7spyI9!6X%_YXTYs4#eMcR-83WOIe~6tB_XK#r=M!Ku4fyEN zj&w~8&t=K@s`lBbj%hU`RpJ+;yrlvw&sWh`+hA1~?{DD^(?xm#BV6rp315Q&XSc`s z<}hUbNr*p}uDk5^><)#fmn(9a)^!0Jr!ShZm|lGlOm`x8tyl;Dkzu#eQ;!V9wu6Ip zO$=(?(O*Jz)zBZ#qWLPy3ej}a&*NDY5kKDv@offY??Gt29SalvO+>s33N`iB7h3*~ z21~e}#yff*a?=Sfs%NiCO5wME`2kwu(Xarc`use9Y@4fKM$Twv!)?18FEF9MO{n?t zq@%Ces8don{KCy(edJ7ua~n--cSS>@9JE6l&fzRk9QtmcA$gETqge zzRre!JN;PLu95nbQb8;F^;udY7UC30me_B6@U2AUM!b6BL+J7Nb z(d+H5YWnbZ$SX>tW(f#v(-b36^oh`@4lT|YD!fxg(1a`bepheIS4fvpI%J&@vJ4Cw zRPSZiwL`sd&VlRtHx?yo3Km5C6MQIcoR#3+L}oEa9@7)GnH5Esw_4+~t{Q7-gyZ7j zaZp>GHil`AE+9F6sq{;q;@4udojW@w<6!O;h?YYoBnqxc1&Z+~(n5B^xSK-&GV=20 zXjI!3wUW!Nj6d;t92DGp1i=9~C84M06I;=0C6OXO`-pAm%e3zu1SR8PR+PK#g$38J z=))?@&Nd7!OZ((;vgKc19?j|fx5uN5>-s!Wmb8#pl0cIuh+uAz>AP`K=X zJ*lSRw_FB@s{vZ*XOzClu>dnNpdqGVaf$4{@IvKEY$tg} zW{}r4wo8F*8{fZKK!-k7w}1Qtp-4Ct^yx0e>Rq?aRAhLP*fvGoBfWQ^{!hc%d?4l^ zJg^tA3r#enU!md)KLM6tI12a$$`h;Bym+Tjy->~}BP}*q4{KYgp)-b%>#tp|7r6NT z&Ip8vsv7mIL~uZj-_M@8BiPISQybAL#g(lUAG1pE0Qc3re6?nCk8#9S^jvDdC~2UL z-7cG={(A_lcC+2bWsVQ=AXHw$aJI0Sr`^}VB5PRd$TOiMw$L81>I77qVxTIe+ZSza zl6I_vG$wqKi(Ea4oB(u8ld?`|4I|dZR$cOx-GyV0lKG9tsD0nOyKq}7adNY?YLgHL zEo{BTi1xuTs1)|z<`k4D8!9X%8ueTi^(f@_y#U-a)Xsp%@2GK!Bu4hyc>TLq6Qy4P zlakQJX5cfXhAicgyRiX8Bq5e639rwD?qOne@t%vT-dNe8pddVAIW_l97t<((nS_A9 z2NnbpA0l>(5G?{#iz~#(>&4=cDEj3mJ{*^(THZQ(la~==Et={O}GpN$CaTK*i zd|XL&!NDufNPs$i`dA9JaKF&>m-7yeH?~;`s^#^Q;K(~jEUJRW2_1nZ;E)RbSR8Qn z_=Yq3$*vM>ByY{XY?+}NU?kqmr9X1URGz$of^bt{8e23wtOyFmAXIZ)4IkF(>fOX! zL*K00_Yc(xYb6JLg+ayIUJz($xK^P1rrkd!V=+(ZI+!*@B#2DpSI7}9E>|A15$b_z zq({Zl6Orey2?oO)}CT}T1UxH6(P6DM7;bszS zeJB&@=>vb@%FG+W^wC;&j1=hKJqXbk&A=QW%snM#EIXZ$@3Gn8VNfy*wlbzuuq z!1Py=s$hYIX6(H{nMCO%wFv>f`%7LLF}J=+l2M11t0+4HhFlv}8nFAvgl1ikY2{#p zje7Qz+JvVnrC&${coy~E9E?#5vxTxi-Gfieo_LCWTa=q7Q50145qmJ?G!#jc=}w)3 ziAT-a9YVwA2rfFXh4luSBf(Z8T)j%HV8yvcBwa0w;(-Vd(ABGtDPY!vThn4Eo+zaf z_>YsO0L?@sw2dHN9Zy1M@Rh07jK}g)W$urZ9m<}MF>SS4cJOu;#>YH>W$ zaaVBBspTsTwSZ;Y9!M*<1GuzERdKuj$E|zW)-`i`jUI4-@JnW*Hqmas-rkiKvk`Ov zNB-;k>$F|fl*dp41=95v$dLmtJV?vhmw>hCGcIdG$AOrSGd~l+zV)@PlhB%-9#C(85g=YC=s)dnlf6%0*pU*kM zCZeIkqHP!unZ3SXmAURc;#f>|a%NhaXn=ZRUWCg_B(ov#_H=|D1@Ry<0a6BBdMQcP zkbx_;$SPCA5FNK056+yL{5~uCT;KvugY@rZ|G_Kv2r<1kzy7b1ni||K9@13#>pvI+ zcRi(noe(M~5kDlB+*F*ZT$@;wEg}K+eOKP`pJl7h0l4OEg#-bObWp%kgJ~_m_z%i- zGsh0T94Y?6GweaMny)N};ag81pZG^>8>ah--u)-+Ap8&=OVaI)2~oX-{x`ce0v(sS zB23_AHW58FmGE!B&!jgOr`G|C7CHj&QqJE&f0ZHIU9IFksn(-cVJhN}fE9}t!9 zyRk&`5!UH@DFSHgc4O~RT+2H(FiJ0t*QkpKzN^jF>;BG+xK{-Qk{F$RD_Z1&mqXo-m{o)v6a>xVH+A8MNHF7r-M`}LO88@9$m zZ!%edeQ#`(l~6}y!{ooW2L!h-kM_dz8d=IUykbJGW)Z&?*8Aoj*Zn<~nVT?T?!%R`CgiFmrkJHs+&83C}+08LDQ> zgzcpOXt4>F(V4rRW!AAW5HbJ1#Cn7D0H{Ej>M{goO}0@|Dcyt1zVZ+mWS@Ly9Xvfq z1ifg)29vJf!kUb%+;1RPD+~F@ofjh08-92N>Xgh89aezKR{YA3V0s;Y`v0zO>NtjQ72*`zS_Xb*2k87f@Z%)hkL;*W6n z^u!ZALfCW0F%m5=>u*|5eqau*EBWi&pl>Y%Fz_a46FeEt!cnMW?7juCF|$qMB1`dd zaZpFD!m<*M{HoX}B*PEEnQ$oi@lqo79hkSSL9ymLudI&x>uFk5S3@mZ5{(wajB5!$ zSm<=3O>%pqiM5)`e;#`v2^5VQ?3XmFK6ZjUGE_^f79`foEyUMcFV~*90oeBICx}E2 z8z>YdFB50p*Q}>^Gc6z`&$8$UadU?Tu&j!4t`k)()nGYucI6f2wS{m;`CQ?Zdub+i zkv7mrcBvCTPK38NRv+A-;J}};r7>oAiV}rlkvL`{a#=w3*PzmjpxJDF0Xo4;0hi0j zaWCi)d7*RF6DFr#e{x;G9j_hmr0rN{hKKX zxVO&Wh;_ai13eAdrs2#)8^^r_4A&xLF1FcDtXLG|GHB{?1z{q#e7!$skc-lpTXOKN z6F1tC*n}eKBu!?EAuH@^+a6OcZLL-Y@486~cfy`mtdv&%)4K}DbK|Dnev5%!XWX`Q|(b@2A+;T!khWD9dDJk=M(daO#$Mu%XvFn5N_ew$-i$7fejKX z{Xw>kFPUKk0F3ptjuUxKf@pqGa|RMMpoTU8J)`VjiY+ zbDzDl?zg)%F*@bPjzr-JPA>XGL|R6j3Y0=;SxU@H?46d^woPz|rE$Tt1_)3jNT>wP z)%17*m)HxGmxJ_K*HMV!4x&0BpL8y`kA8-y9>(jRtX!J_>6M&og?N&1kCH}Yq2oJ9uu6<*q}o}DPKO1 zm|JrD4)aT~kM(4L*1-D_H>x&RZ>OVTSpC3hyG)IoTGH#Bsl@OXEa+LpGbomKZ80hW z=~T;Jl&18a$vp0B;W~e(Pqe>nX^I8K8Grq!KFilIQ#B8%gm0kR3yq!f`;Z*mP0EBYCVU)m2N19mCzo7j$FJ}& z87=9PF;xkVj)q~0sPTQR&q4)ZA(WoQ@0NgOKM$~!ELoEN1=t8xOc*IbG`1I}FY1^sIGf)}>emaKA$+Y)68LcqHN}05hJ7*6Wri%_mqSfTV;z z`E;#rtXes&bD&Y@$ya4wYpBfIn7w=CPlP{+W;VlA*=!nzK4(7gk~$~dJIL`QM+EnQ za+FvBgWVd1T|&vPfRP|PTl@VqC0q<@N(H+Uc%&rz^%$HbO40+_%LdLiwIkSDgH8o( zlSWq+tw${?>sIOz9z1M4V4ip$M?y%^4G9|+7?ln5#bL^^gs)N$({1^aHW?{vU`Q@8 zHhRx~mWU&B0n0o0m^1@&W;D}EC?Ly+Fqxw=BR)N5+R5Td-zfEN>~y^vM@5j zqh)g~sW=_X)XD?)Po{awj;~lb^WxGG5ARRLl?d%Tsm zC;~X1C>J_Z_xxxV2<%#0RV%Fq&YSx6wj}SMktaP~;Eu#+^#FTl@~2e1bm*0K41k9n z0~B^>)pSsj%EWX7Q2nmKF%)bTZ~tOf;uhR*S5^?81GOFsRd0YuJATz=_%uNzFeOAw zl}q;W*F&}7BoFc&hl*xANDsPLRJb&BJ>HhwPUcj(xiJlpJbFPf5iZ|kTG3!}!t^F> zIAbPy%J#VmTzClJD&5xK$2mrttB|MYZxLVUWZidi4|N&z>|OQS(Nrx~3?S=8ZHC-p zN>p5UXd`DaAGm!Gd{0c-$6od!F@4;pbEK6Z%2)}+y}`56-Iu(EUi~2~-b+|r)?y^V z&cR+a-2%bzYP<1K@X~LQM`L1zl6WS>ijy-b!YImFozw(!o^Y>9D^Tc$*Fz`<55NJi zr8!uaqlZ?6B9RWyoB1Mh%aWr`)IWd@YRed~viJ~x`lkbRohxBi+$#&Q}4KHxn zBknQE$?1=Q){<#@y>}{zvAdR;&)+xc(#ys z!#w6YDY6I|kA-@Ain`~$+;uS&Pq&%r!ol+XWq#*8K7R;*@pdMeftmHiN)NSM5yi^a zC947pe)zT<#1A?TFE083Q;Ep6UO9RaAxND#swVL+3H>1UhrxoDaPTK?tQ`i={`%)W zStjmr(JmrkS0vRBcmgEAsjH@OxNH zUs))O#7RtPNCc@42uuM39$aYh;G)8jP++N%7Edza*ev5Uk3@_1cwh}Bi9Bf3A8Ih88G*Cx7xb{iJH75e!SNIc zH|06juK4`8HYeWF%eDY%=B$zgyOcW>W%-7tx2gXGlyyoPfc>K)5$9|aCwWJZ@p^i= zL-wyD>5_hVVh4*3Tl+NE7?C4q)8sJlr`&^FZO&1~;WWb`zf)z#Jr(haR< zEqps#OKSQ3*RxyET9kKEp4}YOYgmey&r?FG2&9hKRk)(uRkR)2HNaLpn=nNbDn~sL zsEXHtK!Zat*pEmc?5f=5AT|ry3a+F3U6rl7@0=yEh9E+t21%ktzF)X00&UKCrVmCvVdo9|*mV;#R3s z&A5FDIic+Bz&$uE;#t2H2xK@kAgi-UeK5J`*uo_K)@>z#*6){~<%xjumU5sYL|@TH z9zK$Qk-&7MDbO7$X~ut~)|&FyBKz{VDJ$CSr|Nxo-O8{ap3 zxP}U7*mRHB&Em$jwM1;*;6(5fpX4+kv<_Ug>&AXs+O!bvCNe~_7irAr+gM|D;ohZN z=0(Q<^uM`{R88!3_`m3}%AuvVTOg9J`QGLw%5HEXKt+wGlxy61GNf5~=5;LK2YTNz zJoe^Ee)uPij0QFolBUx=p@5_59%V!o4YqXVOhI@~ZhIDwpMkHlz5k#}hx3o!w+9}F zhO6QYMO8joCK69TlrgV%;ax)+dHZfZuPlV zh6pVTDIQ6Vh1v$~nY;A(E*RF_p){SKA{r(Mc}OtF`E?6>p!H$sV@S zA?!0zctog{SPsoS9b(Bb4>$XyBAdCoFlAmf#*2Yn{>zA z9LS2jcE;_vC0M33;tiRjTmDyUY@MFU%qxU!G1KcoxBk)@LP=u-UQ@S=jb^MqayGT* z7|K5^XMx{MJEsbYXDIWhw@%d+bS904asx&!@LZ|nnc26lg(XWT+_WcD3k`*>H}5AA zaN%^$`H5)*mRM%_8?NrItKtQ)k0$02R;o z`@5<&m%a=vzBX5zyJUziBCU7)?soAKWHaE_Po_XF%g=Zt$uJ(M_*07ff%CxFhzS8p z6x2onL%EMx#2G0-h6>41RxFCe-DnmNt3Dm1G>KAgDK&9`I&2linjiCmQHBH!9!F`K zZftDOAo2~jpltSz$mx;%GubWO>^Ge#K)x%n1d%0beC(NeYQmU++F0$f2)CzK#7k5} zes11(+lTFg(UfY>=tT9b-l)tDg8?3ek- z)cI!_hL}*^ek->c{xJcn8)IYz%|g* zQj=G9J{QuX0lLw-#f*7K8HRiObmyo>^Pv(5vf!T#JA$_zo-x-)0L|A~WD z_%q1WP!kIrJ4>?~j#dRE$QL*B-ndy;BhE#d3b^6Z4nw0MlLECwS}PwlPW!F0r1U0J zq^jB#a8p6u{V{3ROw$4f_H?YLdh4I;aK>5bs1q`>Kb_FnX2IjgPnT7(Pp1S|fwR1gz^Jdm0WtvoM#7L)E6sO9rQ0Qo?ql{9jQN}g z&Y(=d-Zv;2AtiT76Yj;b{eVnMYoF0JJwYe^m(CUl|*E^wY8g(Gg`c@=81 z1388Xhq>|nu#5-ulF`w1smBSa$>V%vjHW@;2(bx8w5yDpNYYA$*frL@u z^}Q&umUgj)*g*>%F|YcJAN>>dhaiBtM}1?Qcx*wvrs)x>KVUf%YG?i@l_5$BloHAH zwg|&R21D(6h7M~9>t|k+Up5Wey82T_Dc-I`w%S!x4s5lhs3^XMMZ5RJMC_OKmGCH= zxnr%T@Gc-wKx8!pwY=T8TjP((^$K3*z2E12WL^K&XY4!gCI1BVOSPaD)5lfy_+g)2 z4fW}yCH2#UHxrrM^g)OwKt^|zcRsr^a%&S>3}2wt<8+QObN0#xWmwRp=waMF>a*=DJI_H0LB(E_KhT z9`BfWJ{o35;<<9C`|lt2rKEfKXRpx1 z;W_S4W5QwxJOgI7CQ6sj_J270`9shq;L6T9&t;jVV@7T9W21h+CeWQ{#k1bex(I`@ z5(4gd1x$H^Xlq_S{_#tqgGX!8Tud)IitQ}OaQwiwzzkrs^X>BuXEoALCX(BNJd>$q? zu6W7WfGV?Ty2YYiuFXnpFW%?k0)GFHFO33p6Z6IrS|F9tIsy;Lf_K3hMZO}a%><4M zNmFE@Ph9`uf^D+k`{KL-xX}sG1UM}_kGaaoZo|E={TrZSf2eN1pd;AFGj5y3_bacW zm6d7xP=y`SBsX$1_0FGQK9pa^{=_ZA+vpiE38gpXlf6t2Hij1T?c=#e1a4m}?k8k9 zp8?VSMD>6LZvzAG1??f;GoBJua#-wrI8PXKrC;Nj&#%cOdbkh1)AIqLV(ib~5$@xRGAK;vZxLX>`E>gsnv(a;h}C(ZGCy6}!RQsXGg zT`929|02j`kgv=0+~cie^aN>wMgmNbdQ(BD$A%;;j!+{le{8_8&?Rnsmk-{nuBNTN z#wyrGG)!qx#aC;inEsEEz`xXYW`>^~!47C95Sb|-8~Ti5e|a<87-x%`fmU=_e>hgO zuQDp&s81TMCdVa8z~eCj*Ms+AQm7V^s_Z3pNtzacEskJmE!>6kqTU{*Aj5fNm# z5M0p_?P<>ApLX>u#b!Mmud=s(EBCwhph?agi3U0&V-(sat_VYrJK~e8iGluBp5Q$f zG}hh=kd1g#m(iAKW82Ec%(lVpv0_0&?;#gYbM!x=z>{o8$+!e=y14Om*VGo$Y@7D> zZgdb3N4(J zosv;6=sJOVj*FjkcibK!$M5*A2Mo!A7tk%jjZuYN>)5+o#uL%(QK}hZLZ*G;&kX$B z3cly}s0-1(nW8(cSe_NW!X7?@4vsU2x_zwaJ6j5dtq<@x%JS%>&6rXQ*>!%d^@qZS zIAn6b9nc3!MXu1YJbMDm{~;38xkW^2LxrYRqxFu~qk-^+?H)iK$L-=6Z)uWeg?}MM zZ<^(9Wd^piGeBL(4(yCeBe6b*ru zo}j&vcN0RBOzl>Ce|8);k@XTu3w7+*m3eMzTcjM=m$D5WkoKz9G_%&b7|u}6cB{-G zM2W)xBe?FQ2pNlacT#A>{MY$m&4LzyDG=8B<44>_I>~#|O&6>bmnd;-0Z|MDL~e1u z@T<&P^7zWt7$>%h}p@EwUdXsHV-urO4k$s|~Ar+)ehW#46#D(O%k&I&%T4ql>xt;>Gipq*Y1x%EAZzvZnB>HWV zZ$VIRPK>HqLBI?+2P*X3nSsN57y~V8C(|%_VL2m?o=Zmm=|g#O(;+^4lCYrUkQ~Mr z+Ay?jtY>^IQwv;E!UQy(Fl$wibMIPEI=*rYUpTT7Y^W{AoDUAD2v97}$N1J!Zx2Ph zpAW$phXW<2|Eo>8MHj_6kzDft*K(?aR%T=*QXRMXljrwqcxr_hllaBeFvYep2pFbX z#R`mbGHK1WUGcZl8Zb0qT*g4YFpO&=Q}3Q01)D(Cx#CuZ?COeCPJ!}ch9|V@`pSOM zQTkPd7Vh4}DKG4=mK4+iV+AqZ5Zd(H{$gg^mF`pJAylbW<0SdxG`CgtWNtP2md(tM z_g)zQL~AD%@+DSVQ#Z%BLyALoo?kiOL` z8=b=-5~>7ibFUruTa}Ip_VIy2Ng&g%HZ^phgbAh?c9&y}ZIly9YKK5mU=Sy8_X8Dz z8N5s>$)RK!!{a51k$zc8&%5IYKlRUW2P4Z%vekma+`R7M9xROG$cnWN!ovLA4Z!4! zI88)8%Rv^}ExQuAzkcl(TQ0z4f7i7tPCz4H7>Phi+@ugQycaqEwv6*azfP~{oV#Y7 z6?;biJc#d@UaHO#ToC)-;85TofCiZXqjnmggDvwFiJ{?#wWT#m{AABv&RD%``Ar29 zS)XjYJRaNmt_))SglZ9cpD`A+phucm&R!1UKWX@^7cqi+3!BXgS27$$AZ+9;0^UITw=>8p(`)%_`62O?$(D2qS_eHVWIZDS z^Ki}cNzbC*YRFW#l8oF%*}EetoP7G+f!!6SHCY88Pdf$vQ&uY1xjU9t1FFU?2D71F zRMt(g1a?Cqa#j!2p-unF2LDqHntXn9ZKW7kqGKGH0x+$Yc9Ix*)ds0uTSULtB zN9|*DdfIM$vxe0>`v0Ki{lIiiX4!^G9^Pz?_5+s=IHjbAy(X?!QeUDfSg8}JEmeL1 z4`z{hk;dmKyOOkAP!k*O-IFOE*c(fsH`?IuDnZ=tl@$1FtY@hv>K`e4a)Dt^M!7#; zg?S-3-83Bwbu=#hemXFe2hsz2dr%g(Z}0nLw^eQMp(Sel3BZKZT5>nJY`oMI^0}sz z9W9ZC!_4zEFFJCy>i5sd_URCycQ~#;(N+@c`F2u^!zL!!Ur%ODF{&pz;SuXL4l;fk z;uglVJ2O3c3ePYGWNx$}V~NaTvFj^X=>$gk4XJE~BhsW>D;hY>Q}M>%Vv){U>~;9|>(Dso}iQ*X)e1p(BMm^-Tx~HDnjH z*nrfz6uVV`olt9y_`es;Zvd5>Sq)}D84+vGpJA`E_3 zlpeg4uv@#!GCf-l0ADt-iND3qVH8)~Re>=X_F*EeLJZ^_*y|CCLl%XTnK@8{f^zZb zf8L-*buDx*8^(Efe3goIX4Bc(nrcvm(xyH@yCc$g zXzLdLxoYiE!DzZ)ek>3Q0-BnUewzKZSw!H3A7pP^&NPlbl$gh56QUc*EGzQQFS?Y& zsgzy;s5BeGGAInFZW^=<2It+gsTkVR24WQqLR-FSpyEy0kUN2pKl|=#@-H4W$b7D3tAX|5IJi{P|r7kQch8T^QuMb1bJS{4o)N17-=a!$yS=9}+ zEG~tqgBA2j#Z@1u0v~b%FO``eGBLa4C-OP9f_GA21G21Acc^#Nck$h((SlFHW!=h% zF6x5knm@-#{BU&~>y%7#E@hA%Uq3Iaq*QBJVokF^j!sziv=nqj@=wmJyWIeDgS zUI?}OU+~s+ge>4TH8A9AZ^(Qp&{qZeDB|uYrtAwV(?LO{cuy{W{8uQuK0>q>Qv}Pv z5h$|uoxUVj8A@GbYR}-5fk3f$lr+ZMa04vI`c|5!E|6uA7mNUKq)UJJj|gYRHa@pj z#b1g`%1Xco)mx^779AK8_=In)&{NJXJm1fx&XPLCJuqt_gxApldP_+Bzo5N0lrlK^?ptssxQDhF;rzKpG;j8XG5qRG~zNuM_ zp#5-TPkhE71bL`WntC)F3Uvdx49d%;11B)lX0~LIGo&7 zEJJ56FD|0+9-o3sXv&#gs^bs(pHQXWq|9Xfyqn6)o`z>QASBm5>6HVon^&c_-WeI0 zGGGJsyLv;>qXRlMdb?1mU@K2IdLs8T#8htak6$mSsxJjA|CexhjQr!rSBZ2H)5@TZ znG$Yjd}7)whx^3@wy(03v|o~7uTpE>yvY`Re5YIxMH2?qmAw{7W~wm&9l7F`MygE$ zs}c2rkR6AQ+ej7T%i>l*^>v4@WpD8bXyw*78cw#{A3cS-vv^$tZqhMo#<<#+fV3Qq zjKbBFVkks!{7f`ULLl1MZee|hc0|kjW=!&i#231E>=^Cr$vz5n#dF_zitUDuC`r3i zp_N^>Hg3Q#I+;0GOW-vjH2_0EyuU`&H|lh9oqNSCSM*pd(1m$D8dQ<&Qhe5?=@N+s z2DyLe`q83{$nKN|Jk;x+(veRQZ`wbhqk%2hg4A9%&RrQ*w9{E~;wQYeNJCiBLSc$f zC(2_*p#)tHwecA304Uhj<2uP~WYD2Pw2kWsqsn~ep+xq;)e{`g*gluMuHrc zxnSJPyxCKY9js}KJxI96ZAFlT+q%;RoMcf-HW9lAki?vCQsxOfJz$x54o{f(v9o*~hR0Y4@ue&wH0 zkqg0x_@Xom2yxkP`WuLKBXm~B6P;($Q}VErSRYm$T{-r|hG{muVCFOs!i!EHcAm3u zaUUgxhbW3ub0lm#69}ehtm5B^>^!e+#&N z2uL%0&5EbLDSZwhVJIm@iFxyrlX7`z0K3j;;qW)l(TFU(X!X9#KalI|o&G&$qoMDo zQ_k$ZiO2Te;1A%nAhu*}zS7gil>Q+QWajt(j~LDS0{@Bp%^QD|c!s~tH=Xc-on5V< zMTJx5=~(8VzV<`Qhd*R1uvd)r?ul(yim0kh-$)v{besl55ZwF&jE8iN8hZ^J`Wt!w z0Dzc>dc5va>G#S*;|xFS3IBvcpF9wV2j}0vNe29Y0P}Bbi;=7IKW~r;BH;N?2N(US zrVm!I?SDc>&&9RI>#-YCd)@?DGJBO#-Um;1>O7b}P+oXnB2Y3yn4BxuB+?TlR#mPQ zWUOLwL)@$vFY7Mvta;0x~fZO!I$#x7odR%>y?VdH)^8~=C%Y%b`2 zDSBoP{dV%%N6%~r;-a!b&Gswjk=OMP`P_aZ_qCA>(=AN7YDE>cR1@W1(Y{tS-_cX- zsisT`v`D_1szknx=C9(Z_e5ioi)WrDx2w61HJvO{4->Xw95O9O6`Yl)*K^6fCCkJ( zK1oG5ijhs~cHu%Pv98XVS_CcAVn8!TXlO`B)ksNA<-Qz1EJ+CZGPytS;gw+9M0Vaz zE#kvrUVuXUzle+iSNnl!RJiw*!YI0uDN^e zvK1rImuyuL$z|!A?VXc301;2Jew6Hs*=xcGQTYrakMgo~3sD_@kB^ey+uYjWSHZ-k zPcPMi@sPIaabvKt1O4ydyNe;67cE+9g**qSC!X z4&Yq#uw7V(icUH=S8jv;(3NaUos4r6A!X8~Nf8kHR-w?*fcFgmDyR_Xd2v)MBG*&4 zUpbLh=8#GAzN6V@)j0y_567@bfe}6?*y%#6&|s2oB;oYAOa`;fj2d{pG-TULv1MrS z=I~X_u8d%zMD>Ey5Jx%TQIU*{2_onP4nl+Ntrdxa+7==IfPL~dRogN)i}=nJq9uIb zl>H6QA;UTrL0frt~V2j-IPDIayt4<>pB>V^~QP;gT+y?K<1OQe3vBGkO(pt z)m{=vHk0(*$u5}~<5OaC!-cKI;Mu*3Xk9pf6 zmKRcRMfjHm7$z{kjyRY?QVxnC9+(9|TmBWWg#MQf3&xXBs#-qc1uKZEbjabB%X2-okgn>~yJpdkM}dfo~Bi$%i(p!>H{peX?Vf#7eSe*EyK_0A81LOz*l zuQ`WG+;CIsVETJOk|gxM)OB{yzs!*IdLdX9wVHp(k3oW7|5-XEc!#5hxhjv;l2zf4 zSZ?a9Ucu4!YTc#sxSp2ZsD4+!Q#)=by8fZej>2+lYt!>qQb`A|b5%}k7;Cs2%gz2C zJ+H^Dwczc%2^4SVl$Bg8)df-3GEAu+O8Y4OP6d(J??2=-#liO>LE`?&+gI!#)N-2H zeFE_ai&Q~0lH;O+`_+yAp6}%!h)=VNu>>Eh#hRs;Ka*1emh)OL{U>>Vr2+ntb@eCR zI0Cy(ST)-)QnCd+RgYQtt1py~erHG59Le=joLc+t|A4FUe=8yPr{&ct>F57|$G<-t z4NJ!P8tN~i1CJ+?feoJ18>qM%Y1+T1TjiN8$Q?-VNK zF?^-0K8(QF&&elupWV$!MScSZccXJNtv^-2!K1iyT3N$^*41PT!-i7mf#UmJ+JC}q z1c)^eU-`ub_4GqM2>y|~t*Zqu;Pn9~UfH@Vx^KQ-TvKZYOBBm~Msvw%7?;>?nhuvd z&*zzj@B33=@7byqsS5FQnp#R5jAyHvs3a;*`y2zfKKTQJs>OI3Xwi+P43ja?+=^2E zvupYE-*~I{>+MTCTW(dNOn{W}5VbpdM-40EJlI6JLfk+$AS!nfdyG5|uG|#G{qUCD zOa^xB4)$F@bu6*laWk|qw@Yt{pmk?9-pW+tXeX4MIS<2|cCcZatNngkdS|Nm=MGV$z>^_1S-3*E?ZOM*S6nN!syx3j+T8k%RyInQc zjEZ!u>-&rjGe9O_OloZVggHyKxB%v&SHe#r^X2=MZIlnoF-F#CkxE3Oi=}54;L1s^ zjh;h7k8<#$Wv7CuCd>)!=f*8Z7$p74^Zx!rMoT+7tcOV;A~j?!I>BP}HQ_%X2+j%x znwbsSU*&b$-KM8RY3)?Rxr@X$aXvKX!}=H&fAyzY>q?-za{v~+@Gse+n83`~;tG>D zrbI#k;sESdnuobkZ{k1WQum(9jAHaLShJ-*Ke@5|;w=UcJhA4KT{^&S7@N6^?8eWv zf~vm;w}dt1YVEVj6w#R~;EYY(XR^`rSB__+TYjF;`MvKZ5Kyf64o~kk2=ajEyaRi% z$hvbkGVxa{gCN&m>3t+Rq-Dq($5$KWvz@xsYI}In-%y*Ws_|fm0bBAH=c$HX{~1#n z(%c_+kce}2s{J{rS#KJTO}Yp>+9E^Qc<7MD86Q`5Z9^rH=o*KvK9GfXwYrHDkk;ZOl$AQ_6*-<-tG-`M-%n%C?Z1 zWCoYr@{@C08uX|2g*h~pcthmH=x*VxduOMo$O8qRfhJN@5ym0ZZms1?55`&cFQ=-r ze_CPVSF8h@79ju~2P2%)4zE5YO8cMvdW9r8r||i@rIsU&s@dh$QYXz8%U;R#BT5C=rI+`*LmR?Td#7t|u(4#NcOHI>_UB*l^m|a-%hMveF z1^_wP@2}QN^e(>3dk&TdY{2<6B_1mYJKppj2!W)Xkkt1a*VYuZq!c#65beNQHmzB{RRP+Wni{W`j8V)67FkX8u&KV-;KB(jv>%t zl@MxCU7rGFFa3TOpZe%SPt+R0sM?Xl@X&UAu;^%!_?*iQ0UDg5pFIO+bDcgf?J!vs5+i zIU+=49o+B=lYv=x{oB{i`RMBOZ;W2$Zc-ZBfOVj-Gdj6{`zfWB#$fbREz6>fM*MKj zj(h-qQ~107S3isgCwu0{I^=%Jqq2&T`;l|L5>(WLUOzs*zmG2}$uH}g-7NVQ>0#RW{95zW&Y4_vH<44(ATpj%udnwPYh;^ z`?_h{d5Vm1Yzm7sbkBJrwZV?_-5mt6dCQ%}|@99Ea5i1!kVh5j(Z>{s+GBC7> zjvs%@M-Wz$QWou;=lE(vz70O!A3g=LR_vYKt!BT*P$(%Z656<^V{IyBGm1l$cvqu{ z_mV+Dz{Hscce7w+{|`Ag;1WVO4BFR#p>c80xG9{*u_fANJ?TD+0q>}F?2*JGbTKQl zm8oqqa?GGxq!V&tZiNyzsekWJ)_KV>^9LT4Vypeb-;?v*8H}>MiIp0skc)xGic5QM z^~hsSKOK1q7Q6Co?V-r@jI_IwSwEs*>8SEX%%}^_`TOQWomHS)$5v9P5UFc^*u}W` z{*}AdfbdLY#lzOGUvQV4v#Ki>L=s55svr1-dW2uN2l!J2th^<(95c(>Op-v@o>W}B zPv4!kZ+_; z;RZV=ES3f_(@npv#YrZizPn$pATvtNHL~yp6FwM#=kt?QAd^STUSR zio;7>KpIb}cP!`#*2ZMi;+grS|I6r^eO}=nsd!}|H(R;Atml~pIvm|pC$3ch%#W!# z7}L@L015v261Cp~uzTs8b1c>Zs2@1q$vN!F`Yf1djru)7uL%PQ{ysIt&l&~4P*}F& zDKl~Dx(ouc8;b6`Uz(%!yp`C^JNdq*E8@%O#_)z#;r1tT9)twa}EejjnD}#Gg zTX)asRUgvH=qE3N-{hYDkchqyFbfD@6CGh7ArV;_Z?Wj~k`I+S?i34B+?4ZG;o~Hc zMS+#x)R5~5d>^D)`uYRQ0IzB(yUV^HD&W|cLVMjFa{0?zJt4jXh(F5TVtH2dDXCad zNylV^K5@klT3e4B$nAgW_PQ4`{!DY{A;iv-E3Zr=??2Uz>Sm2gkmJ%ch(Ss}Tbbu1 z3vp7+LnbYaT?5nnuUG908-Xu@Z9an)kMxD((ZltW>1g~R*@W4g`ZnzR2Kjfb$d<8G zqDFSj;sQm~1c(Qa<-RH*G*FqJE3UhgSf499uI^9M19_(7mN_%Miz599$hLu2yz0;~R2BiBC4W^|l#LP}5)6zy|GV zC38g4*^54jp2vzU~A zDd%=2wj!0dl2>v`s1lE|FmYRPN~~|JOeXruy?AqEF2jB$qZ4*=)6Mc3JIdKEoux-#D;Ag|Yl~ zli}_|>Ti|@PgNeOY0o>qkI=t;hntX!%l+K%D2MmFiF|fZ*QG zT16VfHm)(8jj1&3L7JTO*HC0PdXI|`y4AW2~6PrkIF{UL}RQ?pG+4<;*wW|vyk%zVxo;Eyhu zpL#YRw}b&<0(Xokx_7^oFLwRk+nF>31=K>&U^KVZSPe?;XHSLpJ4w%$6)udmxy>Xj zzEFu?Mp3=ye@{8BpH7xodw^$jc=ZxnjrK;u3k^JY{~QZyG?2@{2Hj~7)EK$2c?!$v zbKkv<72ZF$`%?W!h#~p*ZpY9d0emRf!6_danw=hz_5{VLx4Q)_!^zq5U9PND) z{b}D#R*H6J2ae&_i;pYIN=&NR-UMO;y`0p0@hwc6y4OPIR-2DMo9Cd$kah^V{7YyP z3a*v-D-uA?x8cCOUkq@zJ1P{P_(XiJLinm+ilDKe5xbGySVe3H(P1d4mVAdaztb3% z_LK0rJ!{0ACL?hG6>aDhjE~-B+ve3^y+#}V6@y0Lyf~&kj~r|}60g%dx5DzrN|#U2 zFNzm!68#tMNo}zj)na(PbcXIX5%yNo;_H5_frUhzukby{E8?6+(bM8J;LroWv>kaO zWu`tevKE+R1~Q^m+JcdO94X)Ba595Acx zzeX02jY7ul+A0s;2_b5C(B{iC79f2Ue67dIT2WgJHh z8o1CktmTb76#I(4s4dmAdhDjmKxYdDV#0w{3Z5(qb;x=6i=R*-+V&{RMfe%!(XO-9 zZDPc6uwwKz0HP*w=yimK$6GC$9{An7&xbH}GGtu^oYm;U(Ws7~9NTLJ%xPJKz9a6T zk46ruL&Ug#;Dn@S3J(rJ(7{h`_NtwVNd)o_jTz!Bfh&Z5Tw+AcTJ+{^3GEA6844?+ z=1??FYpf!C3kT)*&~pp^i34D2zE^TTqR5q-8_3P*XYSlgRq(C%Jrmw&Lk$dlM__ob z^>@cb9JI44yBKWFxU@m4$+WueR%6ftGb0OUmlp4MC8)3; zyHOvb{4SYM)=~CeTxshUsQQ3+kKfP%(+=jiHGj4a@YIH}u${vU(7RmZH;F%TE7O+x zEDsu+21y>3eYtgsQa~P*cX#`bHkejrY+0|e0t+ozt+&us>j56X8~2qAWxKJ>&hHN7 zg1FgZ-sM|~c>lZMA3s4Z`YlCdv zJ093lYQZz7#1ZRyJNHzM>r*ryRE+Voq#KOVQB+FxE~AjNtdq-vy7P$>5Cr8m2aG@v zewX$xluG0zzISyQ6bP)hxwMAZfzR8*;k|u4=A8K^v=rXJ^RH?T;UT5i1P1*sc?2u# z(6PBw@Gm;Z3N>ul^NYs1j-3gWiJaAAQqomCJeTg-U4-Jk_Msm^rEF&VmJYq^EQ`d+uqfxMB)hS% zO5I0Ah+#|oYR@kvo3a|QSZ@IFz)G$D&waOieSd1U%lV{eqb0UXrB=FPPO5Dv|2iZ? zsa{ka2n{rsAzn|CSuBgv?l7VlMAsVDoS}foUrF(wH|9qTe7F^B zMi)D1Ui?p)@W~hFvVKd}7EpGko8)qEFeT8{D#fw|vj(Q)3c3L5SSuH)d~5`-*KVJ5 zq`M>iIf}bevCVCD;tjmpPfQCV!+0R?LGlZaQI|Tta|@xvKd-UkdFoCXsp_2mPDT8$C zXZ$>OD%7CSu(2D96wtl!)oZ1R=z%zI!6x$6*)>aaH#idD$JuQ><-Tvxu>i9w2QeR5 z&C3YoK;EkdJTS))UWm-4_%9@^-mB@BSJ5x;q03cE*Xex&GyZ?)5@y;; z0?jiH+qb2lejxaNRAp;AIz_3*M3RlE;HGFjZ!T>OG0NDL{>57cL8ep6GQ|PSjME^DXLnhvf;`XtDuhQtCa8o-v!tt zkK22F5x4Ai){(5tq8s#b^thX<(q+u`JPFf$+9#`p%uKic^Cc}Ceb->mNi8b_SdWI^ z4IVh{wdGCT`KL+c200u?5hw!EF)v-Jq|J0r8;mWZ$1b z)Phs;Q1AYeU-@veq?C^5XB^^$fr<&-unVz1|K7pa;$a{Iy%Z&RQ_|w2#Km zUd~r;8~ZdG{nv_(x>Kz!>Xl#GAt>!b{-Q~)*RvtP&3C%xN@R=-QYPZt(e;A-tD(iI z8Bo<_3jXfJ{KfeMT?`*(Nw50dorMT^QdwbvS+}3ieL7`?IX&kmJXEp5MEm4sr6C?` zYRXkUP?ric`2hV${8{8uQ`&5D+sMTg82rg|<6+Jo+KJ)AfmA^0i*9r*Lm2c{&KgHN zFd3e4PSl!3w{B!Zq{Q}_{b=Zq`N7U+uTt7DKlj&$a**jUat5QEmI6P~ZOg$C*LW6x%x?T`7{z}8efFAIhh?w^2Xf7A{W-AN!zC;0!()P_6 zy?SaIXh-2*Mpiz^Wjk_-DEuVp?~7=wKkFW4|7hBK1`vB0b&t*NI~kOx3X5t_^9=M? zl7cc|9Zb+VSI(!cFpMJzk9)C(P(JU~(?DsRuEc=Jz_z6#-y?Z0kmzPeXYcHk_6S5U;~1?np2`1Cej` z^DWhX?c^D{ytobzrqklR(qm8yzb|f3)IhK0{Se=42`@f9zFkqvi#H}Uc*6a*tmyEg zj$7EcFP(ItPbRuEQ{us|OQp^lG)_n`M6H93GVHahtaej%KzvQqnD9&F+?N_DAE3KW z{ONr8S2x>6CPEK+gh z|MH443VY!inz&1WF<<^AyYa9I-1oc?Heapw*xf-yt964gS@JzdxNe{1xr!52!9o5f zUlGrw@4VJpCVegA0gvD&rcEaJ+Tazg8BEx47MspLRLKa3r__&)e9<7`v08HOTtNpi zloFLzCE?%QGd#BEzWxdhV<^#Z>2z3jj`tZnF(tSFa07GPy2B(O)W#<>s*qi%G3f zW{b~ExQb4nyijYQfav(MEr)WjqeJ4O#OiA11hOe`$b=~PJ3ii8DR$`)0ZB#Txm6W z|LZQ6nevzlT&+OVhsWJ3@SAvkOfCu>7_oj0rKaJ_Z7nB=I$&&)X)NRh%E+|g9nB{g zs_=-U)T2Xo1S5l){zEDwwj~*R)4?J^Tk%se*dXUTQwR&n9OngN2jhP{r82 z!sIzXGeFqC8VnZ(jvqQBCOCAyaRuE`1Yd~eq~6fg8L<# zPD{iAQK-*22(-*)883)9H9-Hwiq)y#pqBHuSbGZA3i@xlJOBzAiZLu-ZZJD&`t6q| z$c&P6N3Dt0?+b+kl&V~4zb0~a;1F4!yJ36^1p`1c`-DjAVj{J}L&Bf&_G2r^NjM6W$s>yxt>~wP^X0N!7>rOW?mB}R5^U9$V^7kpb zNDMc+va26)hcJ9Y4@?(RA4HWsymnxLw{;?0a(O1+^SK_5!mPXxcwQD#k7at1N2t=> zLlh+P7uOGqj>FjrbAjVwMQXakQj@k9cNuKtU(26aOqmP*hdwXrN?V>Ru5t!ITJDSg z8bNDsBb{ayk+lND(QVPgrjly=Y#O>hUF%p-8#9)7(MWE^(eydVpYw1Rn6#jMJoSVO z63{`}Kr~x=?N-_b{k%a%Refh>M^?JH`T&;?^lmjP4<&+I9I|i!7js!&;N2=%H z&6!zm&&u(FUmC-;8RhV;nGvsa?}~{J&RHvcDnn^6H{ks;D`~hCAseikHio~oE25j5 z#*`0-Qste3-8@m7cz<_maVrmt$8&?N)3oK69De0auc&^nC=~Q=PIzta8atG~WO|6< zdjiEwGHI@OgagJIp59MeaOA+x^51E0Q?~smkPoH!Y`UARvWsJjAEt>(-p-~WL1Ky`9ceiwkyuh zKgM3MItcVZ8XNr|V3EP{sKy`)>dAz?qUqL9&R-(KQ^j{L=s*~2(g7XQ`MQ@dp@ zQnQ%hUe|F!G0+85;3Z;%%KCJ?COVf@F1w~ief~S^%3p`%?b?$`1T-i)cC1F~S0({R zyCM4US=wyAJZc~WkMZ~LZe^9&`hi^mpe}p3E<6BbEit#{BCPeK!CrkV_%HwR^uzz^ zlZ2pW4l-bLh5*ghq<;A}OmtJ^{m6fZh50%!<1`}{*ea5(Lm2LD#(D?wIl5G;i31SZr?t`|D;>5f8-t2avbRuDAltmi}IRSjvXJ58G+^YGY#{QAt5eC(yM;zG~VL9ful8Dzl zHV_t{0YS4e^m;zc!Fc(n%-Fy)(U~SoDVd-BEPRH34b#+O(8X_Yi{So(^fb1=U&I3G z^2fJIi7=u^d#TaI^XiM4h(bkO?dqPV*Yxl}uu2*szn@yZDbsDJRc$ZTM~ARsrfTV# zol{-v!#p4JynHvLI&-wcC+gpkMb%_;cZ-Y-rTk)OnAYV@+9f;O|9`mA9_wF_AK|u2 zB6z5x#FL&Sxn&ptcV9U-%T?$VoavC~{23rq#3|-GpN|AsFPrsHfN#*}nqHM>j2g$; z*tECsj-*Fx?!$pQt>3C{xCVXr6{On#Wk-8`T4IUI5}U) z3-hVz-DEUycA#of*0%MmwY@b$bGEF%O=Y3FM?O9M?f&um33k}qy1V{3y&C2mRtiX} zBiwlZH}6px7+Gb$hMI-HV*eXS8fc7A(IFxJOREXs5J}ZrNt#)$8*d>Jyr1#MExKn7; zsKFaJG>Abs#4e}6Ah|HK`BuU;w6T~skN6_`uraq{3X0Uyc`rLRl&NJCk66rVD_uF; zwN!s5z0$9z|827}qFz0KV>#BC@$&-fUX9FL7GFT=i{QE3{$tI*yVVi<0b~@*XYLq( z84XpNC;uD_v^B0cb(n}6!Sq3|*$D?K)~%pBlb2Q1vkZ9il}Orz|0I<6_e${;|2woG zC7#Wv!k1(YyxfNwJ~o}v6a!{Mi8lN_P+ePKSJrlp4!ny7fZ|$htT>8$)isNZbWJ8D zA)j&?f`O*Q+wdQSpUK%A`X^#U$kbVXooaXa0o0 z206ew^Z*_^V&Nx9fJ?o)r+m=|q?6?xrc6>s`iRrBJlW68Z@s?wn8e)NdJ zzwz8*1cKnf*^c@<$0$Y`?6{(76O4+HM-oXtU3Ay`$T;j{Aw+RX>#kUF7dk*Q9K_5> z5iOwTqQBln!5j64EwCh8HE#AJKg)m!&MFmKe^*-utwj-1!lHaY)v@T}7hI{7#xd2W z&*Xkws+m{L%-SRRd;mprQVV!>mH}fSmdS21PNOK4B?LTVw*H{4agYP};Sc&Xf8anY-Y^udPka4wt>13x|&9 z(5kbh&GpBw!lo(J&1yPA*arz=%l`?G6&6=&P#YjG-m@g;GuN|z%o7jr#KjIuGu8|% zG8rsGJ}(_4@m>cxiT_haeyA%{)y&V~PW@;aHdRfpfO7C;1(8RQVh{xFE$Q#w}H2Ni)00w66-IB3AJPkhAH* z`Jzgr@eobr8WYq{?Pc417X~bG`H~FyYm26x^7~X$`&2*h(0gq9+MR{>FBSx~GDo0V zvLge^00YK1lH@+9ysV|frzEcV_p!V{?X*{*EF&(9Lyff9ZfF>;gl9GHT`~Gs=!yi# zssbRKU-S-LSlvjK8l5!?Xxgw_piGxDNDN?%-=qxfr}Rj}nv^?XWtnJHAKk{4#ht2A zdvjVcJz~K8cscxnCG)n*T@Ss&k8mzqM?DjRp27s7!qlaNKKG>UEb0 zo(7@Hg&XQ&NedU)Mbp6X7mM2Uf48RQw*8Fy&(r~^pG#=&WMV6>7f!T%v*PM-R|$M+ zD=GN*D;s^0qP>$+B@XJ(2TTqVedNzb6PKKIVY1zdFT zxh&}Fzq(>Oz%_U7j}~jnUCUsj%h?Q1ku?{y&)OlEfnRvcvIc8X`~UA4;-`Y8%u*l7 zeJ#kwSeK=YsuW^cpTplRvz7l4i{~bcU)FJawqH>{ zqsIM0#e>wI`t7I-Tk(7Rl3g8x4YjprHW#0ie!bXs_W|6@dHlYjqie;;5Ujji;|Y$J zp*ZU6rBa%;#owbBnA9FEsroBy&yDI$b=l5QA7??IzrkZE0h#3$(oOFCH{Ov$z~pks z#BSM!kJ5em6Y??6F(oRX2IYSw}uo2WI#BC|3kj0Ce% zP~d`8S$RFT+s)NZ;0yeIAlK6a{ZG%MFWgzJqVj6}$c)on8t4}4Q{a_jW%1Q#-vrSq z^T20p|Ha+=L!#qB|7ih}Zq;Xi{!iZ5rp-iDkmUR@AOfgg)}}Ns=u|=kPrP#v?eFkO z1HUadhwryRuJJUDo_4%#6g%3fn8Hs#;|8FK8t|8QMF_|W-_@sBY+-?xbZ8vM zM#M_*uH+sfL(h*Dltt=6kU)ONsQ8~e(pyM#%BjU0l&zgcYL_7gvf7VnM0$dYHeN@^ ziHJyYL_v#R53OFbWis=avUyF5iGD?;Q0=)5FwrmyE4VVRehnMtAfIG;HNWf$NLyQd zY3xM(vgs<0D{a@@m23(*^t#G5xDcg#8XE14C&g71b9}7^w!%5O1M{O^Op;Qyb*@30McL|)K5gNaITdY`{ z6wrB{XcQ7{bUrTC)bD&R{alGsy1JZD)yTHAvYB!;1_;NqKj!^U^qr^Z(co<1ZU1TX z4HWZRc4BarONp)n`i+MZQs2`YYCoo}T}hv`o0p4;VgO_X*;E4BCY={d5S`hej|X<3 zkYr4RKytdWfc%IdQD1h_!dmt?o-YuatUkBp2ck9 zg*USapK(l9;oh#Ia&~6Q8-)-@VWpSKU*xnB9d&If=s_D-Yv41@u1|KK>EA2K$w1?WVgUc} zNahoan?6Jr7Ll=y8EXZ9MZy;u1~3{_vNh++*>r;LelXS=SXtCaH;Ebs7Wsk1I%U$R z^sr#aC;;S``r4Jg`AQhDPVitR@M2CT*N`a*RJA5vgp#pPR#xFa4S#4 zWY%FFgYz)=fXfo<979ps=`t<;Z#~3HN0?8RM3JV4Wm@Vaj>!RO&`}ajN`+1@ePx^Oj)2m6;TTydE?SALwfo#$ zadFE|aUE!F;2sc=wiP1|l&faP-)_FGD2IbC?v{KDkbvkNu>G_!>OeGG4WnMVq+WUX zwuz$cq&OL-!iZoe#9?jGJ$}bd5H^lR-Rlc;gM3@Q%dGkI4rp4__vzcWn|2cb6o3Yd z=CgjO%05otBSnot{6%-D`4V5~fBxdPhadDp|KeZ$FW)`WiK^pn{gD=fVa7kobHBoI zL2jYVjkY{9MK~T+d@obc)tOd@*o(>=>~23K#(GncwBZvJSG@B#dLU1c`_O0>Tx8*S zrys6U$FW@5bf$jEN@V!c9ImGN3O`)Jt7h2X@#x{t^7JA}>x}Z{r}D;O30`^q&JnWChKYAZC*%@)F_+|N_wL3Su0+A9uI->!wLFJhsH*psdE1XW~fo(-x6_h||x+mw<&qPA)q>VF;=vID^_wR&18g>9ICvrF>U>IZ0qRMkuQv5StT8F@gpuWGOE=Z3TWOqurJF+{ z5bl~yFt(tNGFBXq$(dww3^Nm_^q6ok@8OMW8!yJ}J2@N)NBbnu)@fhS%+G zdCu}~gzHE%P_M!Zorcem&6hZxVNH=;k`t3v%e#{r&v4At1d0L1$&R7ePS9*Jl(2op zRya(ZifdtBHJ?Zu-Q2d$NIwF+P3H7GjR3KM!$=~WHwKFLmt>NAT=?$tp)i;Os06c8guaEr znuRsHB3es6MPA=Zo$7Y7EVP9Al&dN zKPdxMb&q2gl(5`F7U3Rn$Hy+gYh5YaMv;o!a|^KWuOtlffD*ldrMaYi`j5OvoJ6jH z6>K9<(>?VQu`{De@KM5`E!>fceQ$q^3CmyClPuL%JBp;rQJPsv7}1u7vvUyyKiPn! zs}l&~$(kMxS$D@&3$tW_%5X6eAEh4joH78Kcwgy>xik~di1a6Ox(amh_PCoL_gxP8 znZ(7rWLq!pZhn{U0Fx-%hiR2BMYBq&32B~C+djA>geBF?&QeH?H6Mt{m`| zPR}gHj~hYJr8sG|njbPiHNiC2K&^0p0r!W7<9!}uw^uN^mmmZnLVqAFateq5v`KMc z7!&-u%Dm3d#JXWw-2udYiQnxtK*qMgDynRh)KH;x8iI1`7fYLl@xTDfGmgMUsT7pEF?g(bM2 z>`Pmgzn0OgV}~T_zmIcQFC_QBynIm%&hjWKne(drU73Frr((mYm((9znWw0`__W<&`sNN$3m=CZd_fcB7eqYZ0BeKp1N5&vx2bJkst6b0@v&ZbjMG z?!Rf}VZTge6~@26(QFx7BkFqpS2H%WW5j7wyZdfTq*Pk_!$`H)mpOzV+$H)tGwDhXDz^O<2-TG%{Oxl~f_- zy(hs^t5Nd;AGJ(8V&SUyietZJQ2%7f;29wf@}znj)!s1}3)khe{Qy=#slW9B#(fnq zk13S6OKhn~qC&w8gnupi|6gJ96mSRk4{>A(JDRK$GpI)djAe`gl%~GO9r;@g^ZU1R zM20UI^iV+^*=27VT{!`n$HvbtZB)CAMU#!H>T4de|ITD}pMT@X03(&rK8hicPEukT zio>IP_)e0Nf>j@j#N_A%OGry8k&`5UlK;4v24TO*M{QPk-jkQ*4sf>n`3=fR1c~&y zw(TY9`4n9@)}ae!tfXxH{CI-gbDcVucfe>|NbT#rmSj@edqjm5j@!+CPyNCM&RY-y zg|FiURQ&PjOxe#@jS{g+lEr{o+1cY60nWbN6KzH9{#?CY z^~hSL>ybukhx97jb)P$Euy`v;Ql_p%#Xd_^(dmHdT~CM?##>LV*NeRDJ2BFcguF}% zh!kP@kwZc~=X{`BCE!MC4lJ!NwiIfza7uL|OL3c$qHBr&7o$x6K@9xCL87s9#mKjA z?sJ`br$M2ITh}Mjvo9Mjo}YE@g;G<;F;VHK;eYM`6Yj25%Pg>$=TzO>eK4+RP0G>U69 z7Ac}>A8iRk3b)^}>mn&`HR#==s;!b{gDy!hz??fEQz_3B%4HB}h;cmZefH=xLZx%L z2$0m%K&Nb4PbG+zzyifFwjxtYb{@WjpWl~MJh6*OIR`WO7Aax^hZ32u_u8;mrvgA> zX}t6FO%onMjuW`Ro}oi~0=^^J*<_VWvWPM}Os(^awCe~wT`a$(Gh#MyTgAhQTe) zXce(589BRYY_LZS4y}TtDNR(58j<;k1N$-WM8$Hj?6W-si@S)^iKx(wpDUAJv0~!E z4W`!&cgTKgHLBNa+m%+3>v%Knjp3p}%o1pO1*e&^DJ_*ECvHQYjp2rbzsIDvkzm}% z3^6$%WO}Tf3G6wRFO4z&@H455jGF1hS}*GR#idp_H{qs$>G=<}vqw-Kb+Q)f^M%6= z7SJvbqH(#`=p2&b9v+L7hdm|7QTNfBef5fHZIJERBc_t_2lYHbpK2tBU|qa2o^m{%bmhv=Afm|004xKhaRHzR#g>DHZ;=wq zWflNEfzqH6--OUdZ$x(9n?UWiM6wn?8H}+2Vs5Vh^7s$g`|z+q;5IolmHdC(r@rjp z_#ZYR8qZZ}_M)>iD+oY!HkkeV1Zg30;gB%n!`l^}kafsaNi~5@!1`g+GxuFIjOHLe zrcvKRc&|5xfV#$NJ>AA7jltR|%2qgziinukKAMB*3+<9NxW+oo+L!~l@@&Dz z`SG*r9Nz}V%$e2G0$zXxbKd3*e5T8A)K*X0z+|jVmv>#sy9HZB3sjW<6f)ZeG9N8Y zki<>F4~@a6#UsxY@z}qHf?d(32qrYz2QanehG1fK%}lTEjZ#{rRDDRZq!I?| zaofWA9}5fw+8;4?&ke|5YH7ew*Yu5`Z$PEJc$;99%nl5POobVVgHzGk*K%VKnohFQ z=d{snR?t&zOVbLn)xv=aQ~AmJijdP{Vjp56V!!$5LTLTb^qkOof_Xh~X^An zP$jM&cQyjo@ zpiq=}*+4Fb~yeu)>0n=!$U2CWij&t(lDB}ruzd-kUCb>nsBpX(%I4`1RohOF_ z$x1@=XV|R+;!;^Q%6^%63-bZvGk$8(!i%IljGBdds?tCaIb0##!}j4;SXqZ@5H}-3 z_mS~(aUq=nh{^8Gc6txT7?jc8ijyN?`UDMzRLDN33?Dl*$9x%4Cfe4vb(&cR*o)>A zhbeB5@rX+hrapm}Dnm7`SvAXJ*X*1VsF86vyM?J3CC z+<8ek^uxUsH36is{mdsSMiv6F!^!lBk(%(hf#sE^Hd-sqR%mwVEK%cmhz}>!EFaEw|-b$Db z#2c&3UgQnV)xS)kx#?r#K!}1L@{kl{0PiEg0jUodh_4Ibn20z)oOvsSN2~R14VLg4 z=a?ls7r7Z}Zb#yPho0vOWD0_0-&l4B1>1PdAWw^1gAbTrT9oFwvPEI$uD{o*okzNX zAVE^Ul`!oJttyGB+3wDu1-m377d{hL*CV?fXdYW}3e7Fsmv;o4`6jhNqua1L#4=Gk ziRegw!UcBC@UqxBP|BUJ54LZM^3hP8C%v36R#LmQ^*syY6w2mF;{%g3_E?OH)ZAl`JhumMsGZC zOL%e!T|J0xFI)C)QpHuNPB9C4?6Hp*rl#(nR=n)=D(i(+Z|wMCeumy50Dl2f?p&q- z-x|-d+Qow%@Vs|Awpa$)U88}nM#6AGrUI3k;Cbkz5LV4$ev((S-j#rVap-RZOc8DM z@^9fXFvN0HOnDFR9;dyG@KC=>16n$vb6mg}GBs$dc@+l{I@$hlC7gmP3#bFbfh%n) z$zv~1h4Kpk`b2h0(Am?0Qv4z+J3=SdA#7>Iu;5v#oj2O;&lj`?=oE1+GsSI|s7pXz zo*^S7#Eif~1lvA-Q!??o*yhjx5#fI(f&Up$sLfFX;;pk-)vu&oZW1l(*^=*wl- zJ{gxe_Fa=e0&@x(rDbYDl{94`w-}RGBl|}-N*0%xI28vJ;5yMefV;P{;7_Rp9#Y(p)2pmHeJ>QVr z)ep4_e!b7hGCq(r95Gw<(SWeq+6$7%PxXB`5@Qfj*{;c8oVp?1u;;t|X3&iQ-7h5D zz#GR!B(H}pd-BEnr1&%14AmzAf=ni2d#sx6k~G^Kw5$DR0EVa_Wf&*kktI(v zBCsSiy?+h-GjUTed?;?5JLIMUvzw(oNFmp*DZ{~3NMfw9+kCzWh#R(>Ys2kmcVs)4 zQTz@;=~nPYcyqo|%no2*z-zPwrEA2su{Phi3`#6RhoH*SAc7tCaY0sm17MI@G~EHdJ-jRtwN7_MEt# z6da0x3gxyk(uhcu#{8zI0DXhxO~&7}mT7{_ZMBC%YezbyC!%}o=$k)cn!_Tzs5_<}5rCtV`|`hW=oUefPW;qGTJ)7LV*Ti;~~UdEU2tsvI9@){@YCJ1w_ zu>ETdCPNcNA>*6OeTvZWgY3M6S&OYo2|4+W%lwodYRKINAOK#DogOot6FL@!e>99S z>C^~6mj8JPdam*DvTKNZVUXCV<{u;ih67Uo&$|Kf&V1)7zP>xR^MI57!Z^QwR4Iys zlL%P`c8{;{lO)@C>kR9+vYX&YDMH$*k26j;qko|f<&XTYOqOZYfj|gp=dkGK>{@V1 zRz?$pi4ohicHVrQ8pIvbRIwdr-5vG1sRkKf&W_Od!KO9+*$ldb(5a~n0zxyh*_&o|HE;AHdBhdm!2nt*0$ z+pF=6_J3*|aedK2#eiBkJnQlNxvc5t}Eo4#xZi zF}5(?8qJW19fHo=aP@^(HwHqdY6kaCL*d6G3dgv;neUJnaALFC_U-GWbC*2vR^3e|zxGEuqF@2jqa>2{FcJ1mYOe5Pn2YgtBfuqzmsJ`P?6qMXe@} z#C>8xZ?VIsm)Z7esvlw|Sf!4i0|0{(lJvIj+x zl2@Qu#z9)8Or-HJ1*`6sku6u^PI2kRJ2-#Fv`{amPUR0FQ-p$PzojOR+8MBvdUskC zFI=cdB=#*>bC+9ORO?oj@{@(|DUw=l+6@l*1#*Q&yEbfkm*}4{AMYHroKuQ~3cm ztBg-^(aIBhr7X)76cH(5^E78p9`bf753grY>!nqD(i0rL`9V_?$D^f7xwrZZa-{ zrf{J@1%^9!!e)#NDyop8<I5x~RE9xKwf2!&drxOW){*A;!&s2eqxmpw#bA%yynl&t`#uFYmXe~G zKoz#BxC`=yw&IFLyd!V6ESJ$FcCfx) zRj@LN7~x-EcMr;=X$OVdG)%?XUy5F>z{v=QX2e4xe2oJRCBj~{qi0dShtnHl`phBj zss{Sv*Bi)hTyM}6%dq|5gSz~$sZIETIG&krXfcTRzr;=xURkE=ovXO(4gSvf`e4Yq zC?Pq8nf~2-9nXj#5-0?eZx?!j-t3d6NjkU6zJ|Q5C+2*Xq=zk~vSb6G#hM!Mgq? zeE#MCZ?dF>gYAmaPw|0PmB&M~cB$x-Fc{xE(7?ny=m&kCM=0$e^>IL=@Ex7u3{L}Y zT(I&qKNLz(J;bBT!|8@aB`U#(s{2p1DN8}$;%boMFC}BG)D#^Wv^lnU`NQAIP-I~R z5i+zRmbZ&wpYCUl`t9mu-cp&g?DS-O-BnH3ittxK1ZAhPo}?tLk^G^6g>S+R`lJmV z>-G|x`kv8+CN>%s;3)p%J;I;WhMh|w4Pbb~>RO9*yPjHvbB&tn1OFd?B6CLGB zI{BFfPEPHBX65WDti(an!cIE(?simgAJdbM{QoBh&T1OXCK4D!kgu&mqKZsACwhq* zmToy9S~vwAC_U&hpAKBjsEkPJ#!MQSmsQUVSp2i7$IIR@FD!K))*0oMciu<6^xB%r zC)+zZbvsq;twcrD(t80o_T2QN32QgBE74*50*tACxnv4~xmX zBQ;H~N#sa4f!FUN?w2_i_M$NFLE4z-MSG_cSf9SR6SJ*5Xcg+SVe2#m@N7s=8zZxz z%bhb@i??!96~VIAW>MOmc73y?F12{O?Oox^^R1pQ`qHBn_$;@g1b{jYLa_GM{l~}` z9@hNE#E$>MOtYv7z6(l!$2t@ z`eFa;%9+I^lrTvJ3zrDI&l)X;(`>_MO&Cv>D<75{CYF?kieE*EIH?XZW#XGWQ`MZU zcQrc125a(_=Hs%+v5H2HZ}5a-1&4P{tR25>SA;TUvLh<)S)qkN0CPGlj^D-M21`uR zAHQnEW)hl@JmV<+T7*PRI&F_fC>7_f3&2eIP@W`*d7+jv(PA~?q0X#=K9n#YN%l_4r;cBsy=p12_ZCMA+{8v?w^=J3~1>84aO&0 z*M#E31BWri9d%B-F3!pR^RL@WdICChWL4Ro-qW#F@vf>45Cp4KoPrY{6dHY1C@TBLV9yAj?uz$;Ii8!8O8nHtKVYcp4gk4n6qUnZ3 z-B0vj|KYE)(eBF}WiQZ=J4*axkNprUL;D_I%I2R${iFZdGyk=__8C5l8a_$C?Js^V zWQzA96X>RWl_HMsf9n+#ziYO~YW>D9Km64m+!die@pnkTXVF>4*1>COz_>uAZ9_zx zqY|>_Jut3rwB=uSR-UzoH#bqJ@m2XE!GVa=CU-vKH@I0|g-=vlO9HX&1sexx4oSW=J zdX#zyHGD%5Ll%X%9#XyBO>^OMdg7Mph8U2@Yl4|@YJ|rpo^qvQ4-c!F0F-4T&zx;4 zd^VfhJcI0C=m$AgEE@=z4RldBC&l@?x={*?B|w}1I(0`|w|gnO=k5!;TZ{;thJIL<3R(EG}pqr2=Wwyw9}E zOh!W#+hYWVw1w-t1yZTs(kq6d$DF+{edx)(jDToCNy=hopCeUNSuX{CGz?_A>`X>G z&=si)uJ*U&G&wjE=3tpq6zeH!hD$lL))l`DSAqi2RB>T0CA~jeG!r83jQ_Oqjh}o0AbOO3+TZ;gFEbL2V*KO)^EU@f??^dpsdODw;<;rqOKE$dWxok$d^{9+ zY@0CZD{rqRthA#l9ori|6kRH-He-&iuC6L_?u@Km>){nYaQ(ZYkuVac63aC;-vp$) z*9_hcvO$w^L09s2Kt1RE{da=({*r5){8#|I1Asybu1qd35JpoawVVfPP3L#}`MSSLv;Njo}*`wCRxl_HFWq{)##~ zM|?2>k#b9@^@}lW5JAN>-XVzchZQj-2lW0PK(|#bp9uRc)@}&1*j0U@R=^aH2tcI} z{P4WJ6T#91%tp4dp6Gx_uH{+5Dg5}Jgv~j8{Q%mu$a8x_@?Yg&p=rI5sef}#? z_&t7uzths_sC|x)e^%p7vh+ND{L`6po$<84`X@hbj2PPZC)%Uq=)e5esB?x=`p2Mh z=U{lK-elPtq*+cGSSh0@y~x^AW6?Iw2li@yoMY<}b2`ftDQcsgKC!3VAxKWpPPqKZ zmd6vUiWu0t=jooPMV(N$f{&{lf=iAY`LR^=gqKn++WWDUOG#xHaXr#T(-~UmqAy}J z_mBVP1?w6pZLf;Bml(!tOu_qvEgA}s3eyStXLULyW80EkYH8Teu>kVmZulm^ZtJSo z7Z3u5bUwf6b}FK)lv?~DdxSSY!M60p(MN#}IQB)2sUW~e7L#zOh9#kLUH|-d9U%O7 zLuyAxCJ`8H2sZ5!Lkuv>r)_XgwN|t&Pa=j&T?5GVEh0AdZ~!YF!&icBD3!+c*DD%< zbVsONt3P5{ywQLyp|9l~laLHIskmCa9#2m|4|YrJ*BO%}K!_dTiY%(%L($YUcODp^ z9HZNNv@cKD2`%O@Zb_NQ0~fyN%jXofa;JKoNR@>cZzL5hIuH|>WqYab`m)2h6Ak%W z@tYP*EoJ7O-#@7WmPkt{X7X1wQVOq*nIXcbb`uU&mHDcM%)QgXN*nlLGe9Qr3L-WU zJXvxkyuM^eo12?xJ>huGK{?d}sz}m@tIi}Z7h;X!Sg6!PNoMHc{FRz@+?In(o6_G~ z7|1DAgbBp8bZ_a$YB*yGRKjTs{N3%KA1sX_}eY;g9%F<60EKjwyDy^hw1KbOn1K*=kYB@S?)JKqixDx$C(k!rd-; z6wJLL+a##*;8Lq!!QiaUj!<8s(~7%Ixf6T4`WdJ7rpVb65~%&}xy+1o7azLKgaE+q z=M#bTkArI+m5MxlLZzvXLYvYYSht?I@-aBHkAD}NK!<<4K(T9nRBxMLq$+efgZr$4eM>0b^yGCOcZD;r8y*AHapAbOC!0r5*Bwy}*V5S@5P;tEOfAEDS-B3O86J2){v z=B(*+eItWG2MO`Mq&um0c=FU6Mq#my9GKaB-`Y>*>y0zA4&v{l*0U8j3rjlDKSr56Pl`3@2wS5c1INI(SWQP-Jy+oSBqx(KQ~^8#gI&5Pxkmp*X9bH}@1I#%aZL>) zGlQ9nt%(pO+&U(iO@j2%*j6F~Ms}>N@%9nZh%11j>(^KvUa8`*4;bcCY#2^!eNb5k zI!G{=J%Aw@n1<}PdPT00)-F5IMqN}T3S=%&V)YqMmr4qDjYUBa|Guws z%a-c%=1syxeP~|BDLmZ-%*mXJt$`U<31#at`y9EpE0h;s1%Syc0$JN6an8za_45%V zdF8pYGitNbu33(^Lrj{8es)7`AEQ+V=`X^kf;lg>8#y%|c~?8o+jakZm1b2plY_P7 zLMo?Oy4h!tW&=>Z$+k9CjV$;gYAdWpMA0&xLY{00fggI@`tD~E5`Kb+^1qqQk8Quj_)P)3eYLL178XR{~>5`cg-oF;jBlk{NbiX)s)$A&H7KFixx@Sxc&> zGd;5iIf*@bNxM=}*se%YRhePKOo+jp#5|hkx!iSK>MJJ>+X}=SZkq~v1Lp*_O74_^ zn%}QUW@6eDHX!YJ*IsH_Lxj88qBHOToCCdf-WP>;=>a4bT7c*jF;!3aH$OydIRY7t zL{1oN7M6KuLyhtQ_>u%YXpgwICb&NC&!wkwa#zf|Qa$EZJd@}C4&5PNrSf?!>C5!k zQpkN?kWK`J^2Bo~+R{sdAApZuBehJ$)Bixnyi> zr~}8OA)=1WE3DQ;jksbUYHLOk%4+-0b5jyjEO55}#TGO4tH5{pioKN9qMQ!%?98o; z1Ig>gmQNhVAg`7SLOGipzf%}(%)?TYHIPFIk%1~rIkflPST1tQ3 z029Ui8yVUH?$`M%=Z|&YP`O2zl!}v$PLi2nw?dX)N`o?L{JD4MC_$bK7CRWk&`D5} zK=W=7hG^IeR_MBbVqkdxoA7X|<_A+uSf4 zh28JAE?Pmm{!BWp-F#y%&*P_)J3x#`Ht~#U-z;}!H(=z&@4M-4PJO#2Zn<+*(R^8s zMOENy)F_ZLtG@2$xnmJ)DUGr1WQ~vZ6nF$l(ggJJ@Vr5$ptsfYSkC_t5p@xk;N!bl zIr)-V)1guv$OMvX8TB%^oEJf?jA6_Tkk+Oi-5_e5Q**lcc6!s)OH3ZT28Y3Fb1$u7 z<4buo|F@6Mlqw64#hYYz$=IurBxOPYZP85Dx;XL z_?S%b>twg`zX?2sDsERhV2+9TZ0vh=srXnFbM@u9k$s!IvzwYQbWPC)_dg$1Wda0T zhzeDO|6nGb^;P1P?q`)+QHG&fTp3cdAP7mLcBSeH`P5vMh~MIRmLF2TD+q_C#w92( z2+1N+AVbT3Q@0sbaO_O_-M|aSndKOeO@8s#2a)^JYW{DFz)Z48rrG zty9ntdoQJmqnZ&yli-Q#_ky)(smcTmcyxg&$6;4tq2w!DEk^4E>92LMYmZxcRNL6e z8?0qz>Y$m6Qj(lC^APMSI+W2J{(QHHe4~WqRoFVJc~RcJpx^S}J^M;5uE|4B{$Ta$ zasGofD>sHqlBbypEJG)=EsVuS2j42%DA6lr42ECUW=4&GP=v z`SJXCyV+gFn?FsY1@0Af)Q7eb!Getwe3MVTGH^^%t4(z3Jp~8t8~A00*P@6iWS_Flq@nRH((>yVbq=&C`HyWk`P}SBd);~koZnBq>}{=% zUlr?m8CR;uF1wJl+;W!65aT6@Rr-lIp1b88=Rq9kb$kmkJ6w>Ij}neufSC{qNdKXv z?W9bu$dNi^l`wG6>v2DKtzrn~(f7 znA_}0fc?oEDn=QQ>jS~wx?!`!s2k#qKXW1a9<2}5SD}s|4?Lb3z6KX_j0z7Wkf@h0 z`V-r{84Qve>k7sC#R0vHi)@d7qLkli4PJdKbymUav+88tBSq>r6c@m(3$OL-obW$y z8|FX=tO|rv35EK&>R31eDoE0MtW1`G_%>ua0i^3F-N`rIf6ayQdpKGM{|K0z=nmkc z8Q}r~``H7Xr?mcd)MyRba&z@d=p5&)OlhZ_D#Mpca)jR!8!gu;%H9wa%!Z|9^orm1 z$8wLWMDtF;%exFpMmK>DE`dH?E-0S#YN>^ao>_wv`H^MtKhiY7Ofku_ko-gXt$a2^ zD!#nx>|unjtUYpj%@6XaoRn*jluqtx7rngXNss{f`qmwB5}0OD*eBKogY-i3D6Gsz z2~X@RxA4=3O9>IqQYNSQoG2L~YHJzQw)qt+7X0{P z`!~$(>cj_VSgr(=uUmh^XCl5MV`aBdh)g7JmaACn7kh@DL0NK2xjV5qFMVZoJi@^w zRChszf1TGTYQg?BrfCGpAV&tpq$se$b`v)FjWxAqXUmtnEoZC%e! zX*``g*sG(&BVS#TA^ZlN3ErN6b4K-r%KcZ>7d1BoTZehNt|FPNB zP|R>H6ML;+O&>|mL3!ca&f8E5%^4t;BpT!cuW*z77=7~>lgD#1NX{jTQ}nqy*2E0F z)S7e8T5wiW6so@l3QT5}jO@mQZEEalM=5e?>pc&6Xe!|`Pkjn`4bn9tDMjL`H7fpr z6AO27G$akSDC?oqUg%qVY355RJwH_ygXbrLZsZ2)7xVTqLA6!K%Nl_mnx5WBXhSku zTNaKg=0{HB(V{3#(4V*^-(GgL6Zmio0ZQsAa~?<_j@fTWO|;SQ9LY!q+;6ck+snwO zoC!rW*9UR@IuU+M$QKZM>*|@@vmCJPbT(GEZl3+Eh7}DaDj0WFN0A;IG9^hJvsp!o zBz24MfDNsNm;N2MdYgkPUP10wRHH2B>KoGQHykGF__&vGq#V=kjJxjmG^)2(>Bf93 zWGbe-Ixz-54Ja=At^;}^1ag*K9Ioz$YEIR5rWOVbp6;s!YOi%XK%TyIs>Cj5E@r~M zCSrT`zK(vWF6=Qz9oTm?kDrC0=eU**zWh>OV!tPD!ZrJ#G1G?h__Ov$IG7%9Zq%bf zoK>72L|PqWZ{MSrb(2aq;n_sKjF|qeROvFpqUYR)@Y1eVVGASe+}x2#?uaLv%}NkE zJx|dCMGvM_RAuR|D4h3pKL>RW^X0aq&z#QXq$7}t;F)n>eDm0lvaWh6FH2%J)mLkB5jvdSo-`{PK=jPg8p3+XTiVStF)JNzHU$b= zKusXfF~}t9M_*({b{(!MHI@*Eu!;aHUEUKqvsTD?l*BoPq*z%nw#D!`XE6V8v{)g?f|vm-`18^%k@3$zxSuUst`8;%U|-gB3c>~3;Bda z)?sA8nINmGH&2_1!j~o*X%F(;;tktXv?tSWEAg3Q8{1;WFU6e@Y_)p0p>?wsH3vDh z@&FL}I#ya*HX}SS9tK|4c+;P*qNeWdRIg#Hq@u&ArOnhE#$BV&CKcYGNDB+Of4aZm zXq(+?o2w<(ZAiN0;jkY`ItD#C-#{wiZsf%@JSNri)I19i;Br|CIT|&*I`&-UvN%{+zb}R_BeSze2|JBCTEkQBBu(Dd*ZP1?j`3{bs@Ez_bv1M(Zvnk zd=qml?|x#BBe98v2a2nO3K^YKwZF25Key(0Z|HY%tin_C$M6eWF#CsFci|OjcJbOR zeV0ov=2Seak?_p46BBT7OETWC1|C~$wi=>=9v~x?(?vW}y$^s5%_JsDXArsW}{lIc@oe;AW0-`M_<2R&?L| zlV1)bqX9lMdskAoHOU6+AXV<+yeoOoVzMH?wUHu!#~D|x##?M@Xu%5lN*Kn^G0Xky zsQLSUCHRQRP<;vUH?SNYIbB2aGS=t6ct`frF47z+cKzNp7$r2w`oCT8Si<40NjIIz zn#@Z`uXroCxJLCK1X%Gb!<;EaT1I5(R9#xy{iY1&)cw+f$>a0om-Og9F9a&2-MZ$g zZpi27;;(2x5VXTgr#>Pl7uimwLZRUQr!m4DY86aUXqqt2N$04-j z!PU{6#`#4=li^42*A`i*!D7Ewu-e9OWX|;$6(%Slh0KJ}^6Z}2>boi&pQ3f5rjRqK zh@_tW*U#Abjm8RGy&nITc5b|B?-4rCb#=Ox`W6;;n^R^Ri8?GHG|61KxexKzS+{dG zu)^*@K8PaEXpEbNI_ocvyC91i4N|>7D-*S=8VnVq6C7n9qQ`b9)oXC-$^{0WQX4`g z8fTZX94o$uDFk>2$#(i8eXY%D(kmYs|Bo!D!zKRFT+$2>4)A)j7rl`TCSa-Iu;1i? z|9ex#kMS?7k`~2yoGp;Ptdcle(t!tCP5GaF-|th4mM8dSUq~fn6&w@{{xxzh>YTl2 zbrc*>0-X@oyhdTWDRcghJ2VkC<*yQ`s5l=9NmsG6)D^@2!F6*_P06svs97c5qu{oL z3*Ud(RN|0dero^IJ1Jzryc%sl7NS+vDyoaatSSmdS^x4?R5=IJI=tDspTOi@Dyf4K zK)v_Hu2a~ zOspXjEDBc*{az4Xwk+<<2-6glV?wd}h6Jn2+`dpYkYlh)Z{FKXsP^uKl|tB`SZ3e6 zp3--A6bssw_=T0syZ}{T#vzo!ejtyjCFg&?i~0Uj`$uDwC3zE|)tJw>tKhd%Q2(F9 z)8pl_mQ*0QV*IRB$P^*~rbehsjeNlj%G_-t*e6F{rT-u=BdGE_94BziPr8jn)>-xj zZ;O)H^ycyxgd9Dzs|Snu%X#&G$ZTCH_cS?SwW^xUMm7t(YgpF*{Ho#u?@1yRN0k?H zW|VSfZVb6ME>4Dh1n~dFet;sQ{mH+@9r&ULVZx&TSu6dTzZj6VW^d!c4kd;kc7gPV zfNZco%;)TQmAi)kY?mjI_PyyAvjjWj1-0(73qJuF{r^A)}r z>~jj^yuFkNKDZ+-+nlkcd>a1nnRjz5e$94TJFo z%qVUD%G~uAu@qif^--;CjLg+Zd6X|468wKX_X;_o*3dGT-q0%q`+vm zK-zXqKUm7P{30T7M@p2gzg$rcgP^Xf2bE}A%D(L&OtXwag3pNuvpn)$dh=a!+r^O{}`*jXT==; ze=BZ!;PRkSCr@q2K8l~4>9F(Th->mP#r*G^e$xKfQvF|BnAVDb=x5sv>|F?YOK~5V z!+t=h3E}jTD!Td`Vep@g3LF3#0PXvY@0Exe>s(&_Ews_}n`I}z)bw`rml#0qkw`Bq zqDGjzWZ0lJ`A^)9`o{@G0|_$AynvIXowxTBKkv%_fwf^>J9(ov0^an)R4{)A@nvkj zOCvqjG7n3U7uhK1zGvf0Rq(8fls5wk1U_ zUPI}$ASY2DYQy*3aX*i?AKri1#akHZ%a5^tZY>`1($LE-nFRiSDz7KtwEhU`nQ6Dm@QnvtDf7r`MvvPBlblGwrru=uRhN6>ix-4 zZQP~Y?$76s{syW7r0C9UDRV9{;&WNN0sIZUzyFIDH&^5Sz^6THogc~k2yHXu&Mm!u z{uaMg@Z3S&6J0RH?|v6?j@F2VPyj$L5FR!zk$G`CIkLWjE)Dc|Xv_5zYNTLEAqX%j zhgw6m=}7P2wFfQ38IrruHNJiG7Jok_-2Y)|zaV*3%!fYM1CR%1sq{z9oMZmvk4Qo0 z=;miUQo@E-Q>&+2-&;q5>fm=wK@?O%B2ytYi~rl7`m=91SrI}?Z>(Z??sU5q$)SY1 zW>_cwlOdLyx}-hGby^^h>llW?Pyy{ky4zrmsGv;|2ovzbt|$0hA)!PFAI!JYA>^o2 zs)djA;bgy3)SzD}MO19|-cfiZP*om00yW(Jcu+Sq!E9dHY+NkpD$CokGzt*S>8kbn z>-03z(yi=qRx2)!Hqi=sab7sxaM9zrhU00!(A6b+r6B9{o8|Jt9c@}HumeN9Y)?r^> z^}ArTa9#%twMy=?AwL=Twx}~QE9)zSGVGK!tqlg23mx*xy2u9f*wM6OQH$Ch ziekh|{k@8Hhfo#BUKE@|fAKT{!H%oz3@@8pi^6XSa>2OvPE z?fAoeX3d-(!N}sZc6fDpe`oiwiFQ3~JBUeXu;TuE>vV8fcNC;SF*whVt6gee-wx_> z&yFKm(b!@8U8p5us<+vatk-LsjZSt%z#^>F?OLi)+I<7aeM$m{1ivt^(eTZAMN+rI zlOp)`b)$*S6PwS$-}gW3Z40X$CQpDg_02b(NehNd8;OsA(F4<+?1*%#Jd{YpeT zq|jF@bd~DkNzRO|7ViOGp10^!*)$WB z7}FNM?W}Jnelu=5VULX%h+8WZ3zY81$Yuwntb9r=%*xg{MII_Wcs=k-0?=w8SS^vK{va%Q#Bn<`0 z{OB!EzHX{q&W9oo;p5?er!RZ$p8I3xyMfUzW&wMv0NWj7+}kLE8Lbof=&+z;K8R6| zKaG@XacWEZGQX(|>2H(a+@Lhe+sa@)1LOe_R@I5Td-XVv(2Cu>)+Uf&{XL$!IFlh{ zuF*XlcWr=?fbM4Q>wVy-M`b-BR=lTtp8JcT_j6NM%ZvKqN_jGx>X9mGK;Y_y#_j^ScpAqB^ zc--?gLWg+2GJhqr?rD&)Bi!m+Zar+ClGeZ6m^}0E>mL8HMTpC2@Yn!=mjodHe+S67 z`MHV`bBNNjIrSJPu(4iFF0D^~NvqA>Kkn8#;P;kH0mKdIe3lqU=>)%WfVHOxBgJpb z1dG6ma>h+ogIIS!>1B_|1siMjd*#-RiMU#SD7^8~rJkoV)En_W*LMP7@Z2(@jwk+l(vFTk1EcX`cf(NB52 znK2md#^E3Ra?F3>%JZ0XlYZWU8Oy6{3jvas5|L>r4s0^u*UyWXwYYFd%Dc^dcwAhs zS)as;1pez3A3R@6?ig4f`3zCJXG9a-hhe-PpAVbvVp1R+F-=0CS$|x3(^6wgQ)3F@ zgUfXWZ~e5B&I)D)4d!OrN~Yhmv{J=pzO&GQS&V3qE}1bvlyl1T_My>q!ah$ruf2{D`zW|QMQMvc zaHDtIIysEgR?CLtB{QS_Tvs<&-SELVO{*6xH@8wE0iAxLbNU_sya?(fO{7hyr}&H{zPJw7 zDt;e@Nwdi+QI$PHNKwoTW-?_k&c`*>(`A%SJ1_Ya| zWKj$9V&gMxWU+@yRh5iA(ag}9HJHvJ&di0&V6%G+77>Tndr|^$zOpZQQLzc8ACt9! zK~#9Ig#I7pGaZ5eD%n_CRy*qy7isU==GrA}D;jXY4}#L#Y|q}dw`ejoSMXK~N*Hpq zFmud{z+$fZH9w0n=cPJ2V^1k{#$vJeSfm8zqi#;{y)LWB<2R63h~RCQ?JXjf`QR?+ z&M6f;nYVY>X#eT|xYm>f6!l4h_!PC{xaj4CaZ~2QvFKamTm!FyJX1H)yVlQ*fY7Bye)kJ3 zalM^5P>zV*aTm4XmoA5uK{+wNG}U=th!=l-v-S8@dzZanN!t7Ff?P0sjIMeRkwDET zGO_}UX^;eSBHMRGLB-2;C6x$U1u|qBI~j<&8)S&BB`1j!q4Wjdb^2Te*tG4vdP3vw z{?kKo_hS>!Z}lL4**zUp+QI0J=|x-4k*b#vQdu9MlJ`gj=$8>y9=qH14a!y) z_kr$>Q+RRgmpc0ys6EGjJ^XXLZ}C@A z`bF>S3^1861FCmSKjOo>1rv9mTEn`V_$a>L!TFEvhx|T-YvW%t>+tkTe*;J#6SPQ( z$!qx+?S_8DzlM78pZ_2JN8Cw=0e8hG@lO06KR>;l9vnYE_A^V!^i1wE{_&47X#?px z8vbrogk`b(FxNjbhr4)`*dv5=KmJK7CXB|OP}n%$DZ6tDVM!%j$3M~1%yxG zHP1bgyQ0yUaY^^Q7I~Qbas`ioL3RIoLlhW!&fbn=anYy4hbz_j(0}tk3z^J#l$c=t zd0y>Vh7Pvo`0lF8$o}hsfL3}^BK4w7%WH9=0W&r>W<5}ofcRDz1Z^{|VFKb5TkaG(BryuOE2afqEwk5$xH|hffuY+ZDf2Y|bM?11TlgngqT05xau&_-qlbKO2 z%35FPKOhzmU_XO0s%!ZP-^ok*J@Cd1^4`5V=NUi{qr+e~j_!7`*&FUi^;H_lEqQq+ zO3PPoCo3Z}2+RhMQOF_p{l5n>|7Y_l-Dp~}I4zGgwQkqxraygGA=agICs}II(|)94 zML&PaleJmBJ<-66(~pm`@&vIYsvmOE+IOz_3Z?6w`WcxI5_9ragqdLj`{n<%WS}op zcUZ)G*THxGYXeq4n-!c+WYZk+4Qb{Lec@E zelj3D0L5SCU$lgfU$l;iJQxq?of&$B5AS*h^lSPwd>)K7S5-j%v5NSaC>jaO;N0(7 zp@cYzMA|N$$g=Ks$X2svk4x=ajU8QKq92E=PM-%?Bf+6U>!P8oXS!^5pJeLH-nUJlPa#W_eviL0!HnRsR50(}lCS z2UpI6wZ5}y+t5w54Z=Y}+WvWDR0$Ib?%4loNyM-x|4vIgRv%-3SJ=$OVlnsp1JJD2`hzeUeVMo!mSM?Ye0 z_3cUfKjbmkIcw!3X_#LmTT{_ko0(g8c&C=zr&R+ot%Ajo2a)cPTbGN2M_+$pS8&Up zsxx0#TucX5)Ag<&!lobZVx>j&O`4enlIX&F=c{aSiiw3%n@lA&w;R-hr9(L>j+Ok-u;eoK3Z83*sf-nCN{T+uD9Qy96^ zQ;SnoLjGB1dMLrGQX5|<_w9^SL`k1*s%rup)}wdBdIO20mGPl7sepE~#cVp$l(;s3uhDOXI?fv_X^7#2p$hSFbrBpDlsZE}y%ITY~4$~5`ZcxLiqpdMi z%9GZsT4Mj3mnV)+yx=^*L83i29S0D6mcA7G_x~_OIe7^Ei}!O}+SybDvtZCsQ!J0z z>W}kJGHgN1zu#j)x-Y+mipbI}wel%sUD0BqF9>he!%|8u6I>Wo_N%M6EUoxGLi$t8d2T8rja3zVCze^f zc3<3hu`d}yMZ@jal^#m~Y*MZE6(qmXX2uy-1;X`R4OJavjaeRL8Him+-M57-6l~*6 z&En9@I51Wyy+)G=Y_Rv|NzVk~CAmL`F584>KeEtr@&pc*TUT{EX1Gye@y z#aS8IziOE`X0!xV8l z?I*BHb`~|tP^?p>qMSw~c$89&+JDc`@LLQu<9s$&_;mF(?U~p%n=NX^EWYCn4@}Vc zPVNh<9UG0+sv|kXnxfaiF#u?X1#pV z;xPx8#vB}5o@0%uR_Unh#dDoF1(&IC7=IF%UM6Ql%vftd^vicCW|f0$}y*V-RnlZ-i6eyf!pi{yx2L-U(E1EN_0Q zcH5Svgf>sI-OiFvXCX6R%u&_IrRq-RY( zrB%|r9k#^}kJDj8Yk?R6UY@|xw5|)%HU02 zAo7UL;mQXgvQwi8n-y$o?*Uz4-S+GHn*`0+@nVNHu)<6+RPZK2nenZ$w&0^t5xj9=reMB71W~LGPSrIuuY%eQP+`Ib1(Kx{b={Ie^B2B6>o?l! zlsmT2iu1CE;YKXJp@M6dqUX%fxSfQz)|}CzKE9Kta+|a?ouA1g1fHyJ29bekvbC3- zb|^h_$|Y$@nABTbG~`nK952^YhO2zISh!!TQA>Zv1Y$8z&&ldX!AE>MK}?J*#7tAG z!Oj%XicB(rDNEp->IaS}zFD))y{_fD06X(Q6%Z|))Hf+(kLC+xg`Vy~5$4=$H=Oku z25lOM<&>HpDRkxoHQ9lh*za>kKfv2Yh1fdP?O;tlt|Um(zWWYz={as=BQ1_dv$I;= z&lrG+-AbtrDy+}8Y+B1*IT%a-S|)7~a`XQVumjmW$KVdH)zI52VU2jWnK7f&?-+Xh zP-tESstt+=)HGR4)mb%~7#0==lbm|qBq=mK+&Vl*;E@yTlLd=Lr{M?Q&Bzighretw zHK20ErQV2!rN$T=t&x9}yNCbIjbeB^SGEJJx)cQG>DWxn=;In2lYe!()}|dqyD7qY z`%#$<^lOCZ5XO>|F@nOzL;i<2(xc6Jv~gB4Ito>3dv1k<1N}7+(;b zbCksaqVcA3PT6#HSgvQEg0cz?ICm9PA7Tte9CaFcX4px%jan`USyZ-sb=IfuP=P^F zZKXge$QrLSW+L<}Ei}q~dKElVV3Sa$DS?HS7NIs`;bCvpFolz(eE25t#G?;%&8J9e3{t}uO)8+Nm5)2 z$uOzE$&9hWl!w*V`q;Sc9eD7_KYJ_-0oVw1Ybyz z8b9p73U;qdZ3UV%^VDi<6vP zf_zGWTsmgj+&jDa!Z6YL?OX5z^vc{Nu+ILOZNi>L_6jE`64QE}hlw^$9A&w!igTrgRe$TinGVr) zgjR`UnSN>-mv^S!8NSVRin~D4P#@&gd^W%+WfMYT5Q?u_A1eU&)am}Z8O8Ovxpe;$ z4ZPQ~x4I#L5jX4ABu--UJM7*z_UeNyaCHZnzUO6)rWBX5GE*W0~$|2;GstP6;hjKftedylPbEAIz*=jBwM;hEKc~XlqRw354&1 z9tE$Xm3RLi2VxMR6@@#^3Nlj@TtVa_Dj{Mrfpr!I<I5|sE%kGRVG)_;19xqB7 z^jj(1-S#%H=uH5xt>j%{)_3jxPc ziq4~=>B{RXz~?Y&ZRYVuiLJA<1ABPs>x_HL42PqktfB)xSc~IM-#IpMyt*eRY*uw& z)}J1`i$RUYTP$1|;()AS+xc>-C9CMn-#DO6o4?se^$G|lE0aS3E2qexkp*Z#=m0i8 zXyxk0&PFFvb79qMmi=Sf+!DG(-aOW`-+2R&Ex5DLuJEmNM>{CW+&Dd zcVbIhgzR&24GO$9+N;@oG3<@Co*ac4h@PazZ0(x(jAw;w8Y!qYJY`mQl~B+khHVW9 zf~Ev?VjR8ykA9LN)l^3Rp3(7*t1C}VtfE$bZ}6A|;*N1vcXZC%1y&k3cdfnh4Jt3a{3QUxpN zRBsF3ePp4APyjC+w3djc{NZ{3S{SwwNfa~QIVN!qBo->8pRP^m!}O|bzD%Q$)C)v$~`M4PoNY9 z2|#do0SN7Y%oKChXZfkb9|Z=t=II2HwvI<3Rur_4;aCLqx#`>qw?II!F$P~e8m}?< zG6ZSUIyUUx>!D=2K4W(ZIyO^7kCd>o8s7c*YiRk7*(+hWR6KaZTG6mAQ7Zz;^|^7! zqf!0L%t8?G-pFd&snHOGoo-7At%NyERLdWwF6OW$+w3SAFM^$|v1ofNe|j`b{1897 z2n~^4W(pRlI<-+;Mwv^gx}6+pcpRkesf)5_hrr}$V`KDpxcaOpdrp`u$9)ePO$6~4 zQDU?QnJ^m3sMQ0$FLqap_H(Im#00p^L;+@;A#)0YubOhXtshM3U}Z8Qc$$|s;O{}y ztPPUeIF()cZiR5)@XX`P&a_XP4F__S%80BwI(jxT45~P3u_~(dKzfkadH=S8&pn3u z2wzdlEN&vt9D6dMfGWa`*>K8<_x2;qSEwaR*MRBQm@7?*QKo7lQC1d*3O-A?P0^84 zn)lsxdXo9wE^IvYimefAt~n*^RP5C4YU1p}>ZiyIR-r`zyburo z00002000mG04@Ms?%mzp-Ce=l-Q8Um++A?p-QC@A!54&gcLaB6M$C!;0000PfPrNq zAczwixoc)?!f(Q;5p9AOK=+7V5$qE_;U~Pn>tcQV0SAci@?M!U1NMX|7y!A}O+6I^ zw)H-zu*BZ(h>%M`Y=jpgUUAL<0000001VAT0P=0$$Mk)@dF#QU7$FCW``4KIUW+<- z8yP_&TWw9UL0jR%cyyn{-ejDLr=pX zGp!BaklBqmpn|dAfX7qES+V0od9Qji6KK0*_hZZ5-Q&gpS=r*>?#9J(763ny7gi0z ztq>d4nOS0W8;xj4()lNikX@eXy7cTQwwaFjNIUXuv`w?i6fw@JzUeVr2Zo$dV(lpc z^z|Eq;!G64D~ZNkmmh;Aw~*x>9ad<0GM!s}PqX z*fnkEtr7_>7KQ<~c9~2bXL~6yu1yj4vj@sWlKR0i-7z|{{E-|mxM%=j_Z@6OmJiG} z+x}q|jYP*QCl8rEcb8XYUJDp=3^5gFx~~ct7X$C>`KR_WKK{b)-oz^SD9wMN=rb@y z6bE_3qCC3%9FAOy4cBxjoFF$8m5Dg01A816hkLbr6=kPC7+eY*z3dh&;YhqzwF(<_ zo2T$RW6u={#sDz3{NI6WDb!*(vQjlyz!J z{14TS=93s9g#H?<{<&2V7eCwHoh|vzQclGVHjPMBtC~Kgv9}M~h&JPk#@ADjVPo?H zhBK!1Rfq66zsFEZxaW1*>2#|3CBulq;W4YwvYYmOsx58@oqSwA0OsocnC$y{Fy2g@ z+U6#-w)ec}F*|5b+D?2l_%n`Q72S6{b7BHKSEZ&6$_Plre^6!EMgPI_x6HM!NM&S`#yg5%B4#rL~fSNKg4c~k4(?@A-K z@X$CZ4RwizR!3t{cC0wlI+#h0(UY4kiQ6;FB+C|I&*Hx~r{N`X-yvwRv^Tyem9i2X zWJ`kBi2dH?Wql0DxIlbPkV7KjEqBM%?4A}W^tuSM>-`Bz=U3|?h&d5Nz;Xa0-j#8*kVr=Lf3gmOHeLzEk$ zAJIQiLJ~8?{*+*dU0q#O;Il1p1MDQD!>bl_XprdY&%sbrioH~~Ra;tw5#+!3uRV7S zZ0ZGfb-r8cZ9T$i@5tly)ToTWJg_ts<+qd(Ja<(Adx=_^6BrW*^bO4Bczt{*kd2rY~YojhZ55 zscgv+w+wQJifnb~Ni3_`ymMX&znpd$F-{c12L`1y{y6{wq=Ob&Rwj0O|1yI{){axO z8k65Qhg*|aQwi;(DWQ%e4EX&~^VlJCinSiC(&q^2dYMY%f=or1(Fn6I6us{Ds4-PE zqLjS!#;?jH_wF#%Fquw0-Az{evjReWPJGUMHnDtfp6aZW;d0#uko(&1JE5AT#Gl+U zjD0mI%qi@<)om-1cb{b3Ev07|9=MgXUZ*;9y-x|*nVd>TS;dFQ2`~8p~z;f`sUhJ^e=W?9h`Eep( zu=0OD+kN2Qy$moE#XCAXtz4PSg2gbw(0P+$iDKccBktZk)0aJaEzWXr?|G8WV$bF^ z6~XaM4snsyWVmC!vRy50N-~Q3!P)rG@bN!wlf2{QFmmGWoJyFzKH}8DOq~UG80W;{ zRUC5IhC&`Wb0DX6K6n!Y7@;UYWeKmLr^(+i#7R4_!?$mHreBYh@x%c(RJQ`~}rHM`@tuV);cTiJlP&Ir5616UiVb!!GXFSD=}QYbb^@z`22vX{X3 zC&ZW>k0KU3CwgB4Eu?&v-H7aw!u9DVvoYNUz#)9W0zHov|#D&;A5?UD9ed)&QG z-wZ4Z*Rvi{g~e_%EC-wlSgpkeK>23do2&bopVe*0);PN>Oc`&`l_>E1!P|yeD zX7LRU3!O-;J zD2L2P{9Qt6rCjqLG-3Nz6|B)U!_%l3i+3oCB~-sDtSF>iT>*3W44HTp9f#(RS-R2^ z3oW5u>%B~;WH|cTg7ng*vy~SctV`gNU^m`R!+beKYs2xKggYjU6=CMRNyPS6@@T(Q zI$z4GH6?S)rR3@@{T&3kvzM3%2P}1SXuLe!qDBmq{JE#MP6TEelBuEFD`vsRjZlG# z$1ks^MV6pyAQjCaLRFQHXDr-B<%Vjr|Ii3yqVF)^9HQNwUflEplHa{wBLXC3dMo>$W9>^o>vg4H;x zBlX*&%&`z#I2YJRMp{M_QMG&KmIXMK2y1boF~(LtkC5$`*`FL*6w1f4d#k0U zzS_>}xD$QPE(0?e(hG58boz znEK4P|JC=F)w!5Bn8>3l``2uX5_c41=Y7Bk>jfn<6c*(6vhm+OeY3jQM1mAhRFK@U z8nWgXS;zfOefOBCB+_96mv1L{sqNj@C)R1lFa|zB zW&>Ci)-1;kHbo7GVq$OBlD#8{x`jY6EJ&Y^bXk`~K;Xdog=ci$<C zzGB>^r$3QvLajv-L+_)vY3l=lt5ut;M8lP$Ma$V8_LGwFo|(3AVck>ogH(E8m9yl+ zM^G`Eq9ZoA8R2de9yvRisv6T_1aF^hO{l!+bALqQoPNPL#GT6#WlW|r59BJ#`jHt$ zEBhu8r}EQNG|YqTq}$om=QNmvqCe|ZJ`rZsPq#^Q8q5(HIeJa9mY>^~1;DjqK(uT3K9t=05s)ng^w zZdm4`nRD4F*zWW!9XY?MwZ`fuonjL&?r4e9UqjWgzMiXKpCgjju>j#M!y}&oY35I##MFNhytry5 za^pyR$?jq0hvK8s%ip+Hk`2d$No_Fl&tMLd;-o;`puwbI9R%rFV4Q_Jh-7WrZRj>t z5#2Uj&xfBv#PD-Rm^vp=P$o{M{zYQZkP5Y(AY3hD{hEM-!N!KWLy@7x$y%>lNK(5Q z0mE0zji)cezr?-vV{IwFpCXS>?;4x`>xxD(0TUqS!e;P{4phUjy~qi#Mj?J`C{x;I zyc_-AA1p}~z^DibmLH8gmXheX!wrwhcK&;In87EnF!I~>EC-A3r$R}L)vY)*Udmey zFdiA^r1CxS_!{%U%-cacLpSUL+~L+KW@s_e%V<;~S6!R?z;I;!>&*0~N_q@ib6T}2 z?4$H70k9h!tlJ>vuL9WwkV`sG`BZLZDFy{*(o`4w8pn=#G+?#nk`^K;Wtb33W`k5& z=)l$liHR(0Rxw0qrDTTR-a@%4aa1>Z+?6qzvs35l76k_~e8RodX z52kffXZK9woN83EqMJqTu%5Nw5{Qe6W46v6M)GS@C0Dz-JM|15xI}GOm>YHx+&Z{y z+vBvd2A?fks)CgcJvu&=%%0XH=MO3Ut)=t{;Om3t&uJ`)V}h-MGml{)2Gz>&33`S_ zY5nO>9hC)4)1Tg4h|R{n);mlK0j;4!a5O=lr$Ja$J6^3B>&n(3D^Qcf!%gZh2SCSX z$I#}Sb_4~jMRWNvy6c5sS3?pVxzfw9Y)3vB76PjK<>;hw8Fb5oKSdVT-y>#J)$oHa zXH**6+fs$~^{4gmna2h=O!c;XNl1PZbocse96=aEdr1c~FRG%f`4`Gfu2!45$PVq! z8iH-NZTK;^RKGFTqRx}P;8YrxD1_(l$hTXNylBp1b%ln=EOz1^cx^Q=u=}tv>W<;NfxxR~)XIHosX64{D2Im}>(!V)GznlNFf z)K!bmbFC$-g{t3&lZsNE^Z#+&fvj(cYqp~P+slY579ml!jY4rIRS&V z(t|lrZH8h;f49A|DD8tq6cOkxbRBSrqi>qtR|VV!nPHrcs=j(7OdZ2^ht-?x4(?NH6sDD}{;-6UZuDk&F>lk< z?q=eYaCuEegxi!Q=eFO4z38>BGNZfZ_76u&2wk<-MB5w@XHkqk#h z)7=%o-pu6T7r`AOW>Yq_8|K10ZUGi1R;KUkwfQM&r)T3%xDKeL^hBXauzUmR*t$`T zU4`1vb%3G)7*7V40_=>{Yqg*l7HD2DP*52z1L?BJi9BKP#AYU0FTKJU;Ejn}p6vh{ zK1u?O*}oN$TQj25oQtKjDi$G~f{=OlU9rn;LA~lJA%w=R_h)yf{T| z@`Z726l$Y1?WPUhd?ZOkHKfBk#lZ>TS=l-X{fkUl6)y0(4$U#e=Oyy%SJ(Ir$fMt^ zw|8&^Xo;PCn{_()TIl%y;C%7Vqr?S~gV8^@v&HONNUS{U$9|%rbxBF8m>5_*kdiqT zmm>tAv`=b8CB9f++HcrT->uhVEs;uJ`gXq8M}wS3n#$=)qutm0&9F=QJiI%}R+nlo z^ZTE2ntFWO+1V%diS{X%g7|Df?i~8rILE%WR zFEhRE9N#O>K`1cdBu<+93$RX3a73hO4J5 z4JGKucP0V84AyG6tuqPa<;;a^NixPP4+}3-|`ilV;ZUi4Es32;uv` zFtHoVBa=j%zYcBxbEbT+b7Y0hvx>gf(>`*Byn5tTvCXg4)7H0cVPQ9hp&WSE`G(0f}BPUB)0WY)44e-_?6!4X0=h2?obPQ7Y+XpRJ|kc^@HQMcjFb|#d1!9fl^nPZemB6kI*v~;yW6y(lUL}@ z_vd5;vsAqIXFR}C)Yor*Ec=;)8u9c$m@pX$d!I}F#$=`?A8kE@U0q7SKRg$GVePgQ z73ml(`jZa=K3!GkLJx3*Vc9z$s^24IC*dO8Lpo`gdQW z^sTukM;!~LOuB+l_BEUTJyJd9hP4@HbimrAU;FCjyY6Ytb+_*+&Tb6ZI+30h*z8+R zxi=CBu_l`Ex%9YZmx2luj{9KY)X;O4@Pzh_TLIFZ)d&oP?uW`eZ%xj@dqGr2wp8}+ zf$5<%8Zd2%D-GW(GRj0F_;t4~3U+u@)p+dnoh&=0F#o1+MnGTgYSSvh6?TTb+&R5` z?z55Doz*qmNx3G2clYz(NlTuMqK>Ggx&wY7(nDzUUt<$O&)sOtRZ>s(1gz zn#vi_W}+LNP+MnUy2I+-D~jfo&jY`zA0!}}v8LEpS+}r#@a0tc$r3We-3z4eRb*K{ z@XJP|yi^FuV|D!)fo~K54VU0Dt22fy4yrN-?UE`y%|~N5b=BJ|Mr_IcAUaxd@(nNY zEbcZ_Rg{B}jPOjYW#e@AT)cW@?gLa#F!7zaYkuRaAy&K~R2W!O8!XCA{ zjRmH~n9sK!S)j`?VD#!0bx6FdPy1%+5S7TgB%BTzz%WD!uoO*zH}g?!$T5ygU>Y0t zmXB%P)*`}D1WMSfUdFa%FW5dw+aB@J>%uM31V5E$Nkr82<$g_8KMa2$&*}>d?(CSo z5}@Ii)mjzs@D9u$U{MG20zeMHXyYPa!!V>`RSS8<>BTP-Axdj&^zf2GQLiQ>?h`$~ zP?l$wy`^=wN9TcwNBMbSGrM&C3qJje9k>|C?0N`I$d5AF3(Gc~2--1kVOCm6v1_F! z5WXFP^z?j@JK(W{cJ;n4Pqa#3OFYSU~u76IrT*{B%+FGXlxCwujX+zhIfvjB-e~i0iEe^mdQiz2f zfGuTxW>dY%@8FD`%cFQ!(FKoEir>>Ja&}TT=Scdo@C^R+-ke?n$ZPF<>GR(I}->t8e|{Jd5s6kaP8criYe9aBs6F z;j7~ii3O8W1u%%WChM(;ki`pYO}2n!Y(AH;_8Cq#c-@4C_MN2*{Efsyj`ULU%Oe~n z49^X%4Ei<=^;;G0bMLdnH+%q>*fSnVgfynNIqsA`FGGQV#zZ*pOZ9x)ROh83UMDc@ z7;>W*W*>*5Zg6xPQg3FXp7ZxShky#Y+PBU3p4UEe*?D}&YAwCmn(5e}9pNcxJ_gLr zs4^T$i3<+18>uFe^Oh%~k}y;3(O9|AS6%IX1;WVNWjQ=6gEX17| z4aNq~$*QNdluCRX{%3C6+?av5hiP%R>&y$ziO`(qWbbVihOKxxuoiuV`nlVU5MWu0KIuaGX^*o!XM>Y>i*Rn~9Vt)u` zz1w-TqyLlq%;#LP*p0FN>isU5RHnaQYRa8(Xt?SY;lSikEm>0Pw1A}eE!ffzVeby< zGgQmT*)s!V(lIWh_6S&;chXNZUx^7uTqVum|4ZzN<1JTL=mX2RB#}*{8|T_N_9~Y| zos-B5VnQG=ZO|F-b!3IH9hTQm^#*>DoP?b^Oj6-F!8*D+My4BnIwyJ$80WQPsx=)D*&Q;9a)aU9 z$xW<(>Av0#@w(O`h)ZwzEE$u@V}05wn~R2uS+59QXc6MC)7^7RB?cD3IAiW7Bo<(D zhYDNQ0pmU2+$BvKd7aQx@x+mR?OtO!`RHK9cNO+4hD=@?rGHaM8s+!uoL}J2udqok z@@o}w({{Aa`+H>_8m<(a{!J`AYElDen+MP{QZa49uTpQjNtxFkw*{S3opWpa<*o~^ zHXWMiK1XiK|UcB0X{{9nw1<@wG1T-M)LA zLZpUBpeK|2CKw7Q+q%8;P5&t$FAhh{otTZp^@0cqbr}e95A%3e+eYH;F z`yyu-)YA}!ZI?rsg~|||l?eR%nm5+ztIM`5Ndul`dHQ4ck1I9XRtg`{wnmz$ctxn8 zfsQNSe_q(0((cH1uCrq_lL~zjnrVser<|AztOzVxIElF8SgkLu4sJyXR(HHmWn0&L zsZp$@cobL4#IXX^FNt*EvE2qNoH=ZU>CM`OSf`OxADNYDpeyM- zRrNmA$P}k`#+4UtVTk0_FJE7OYe&T+QJQ7fZ!g);c4Rm!Zn0MkK`KtcfE@-N+vBu~ zs1XU^Zh`ytvWLGi+s9b*wKGnEIq)Tx*r6wT?@z<+R$~NAouLjD=~7@TfRVLMpu5eMUZw zw#zrsqgWW@Y7Dx>k$^8wA)HcW9J<)xd4ZctrrRo!2e_L>FsIAJ7;?fPZU$m^W0Sxw zcwd>OXM93C_M>L)P2BM|l(U}RgxVyaqAi@Igb(s~D^g&tp{^s+UNEvpM(i948;D{; zP%v1eO#2F&J_UNcn(6XW_5QuiIXXBsVajDAyZ&pA{q61E}-CUh4_$P4D={>FqlA<=$5YVqS}gFrB7H$zA}q>@{4 z{3M16C!)lhvvJenrxs$l#5GY(nUX3#NpAcE_+-BJTf66?})cBOo3#OH-5Q??4H z<@SUzPLV>~0Ffm&jjX8N(ggB9#Q5F)xlCS^6Z3zo+1!8r^lhQu7B};)>v@I$q*mrx~Xzz!;)roOOpdT=F_ zHyG*{YLuZLmhB;L%Hp|k;Zl*Ru*Vdxr2^v&dbZwj;8r?SD@=W#kng51 z!DS(#z9B zOD@(iXsxKZY{IT!DZtXXAxIu@pc(9i^zjGnR@VIEIhh{|vN;}tsEeL93R+Hd^sVCF z?`%PpY;maCS6KWMireg9!Aqr0;Ot$0(B+wdQe?}pxpA(C{ZQS#j7h`{+DXmGCOM=Y zb1dxzG3)fF&KH-awW7HqZ)@AA=@o0Q5fg=@&RY_gqIbOQ6B?59-Qm6sJ(JkE`HJr6 zBbPL^U0j(NOam@_>bSXtFmx*F(hj`5&vl*6RuH{>S|5=>xdwf0+vK@gFLueBO{X4j zY*sl?==Pj0SQB~rBz`~)>`wQ)u@0X~xjmIRM7fTlJS_D5<_00|qiOZLNtm{--Zich zE?fVdy>kEOch|h#aSXBjed|T!8sng2)WMkVeI8|;?x&|i7T~~p$$2h5dRw;Zl~A7Ya?i?nuFK?@opRTHTrd7F!-vymDi|y=jSV;l ztJ>c`Ag4>UtanBJdHVz^j<{h2N)IQ3c}6en{lsU-f%|QM(A;o0c^(HWE;(20dNr#B zxh_7ibJ@1jGiBw8QpaJnr6dFJsw{`SbG+G9L`_AOvHId{P6zdzDeQvBc#P3NVAk1#BBmDyLQop z1|sQs3~@DHIqa=$chizInRU7syiFOQb-y4lp!=SKJuO)Zhp)>_8Hw7@8<``nsl+RAS z;Jc7e%vBO47(N*GC2m6s4p!cj9R3nuY&A=h$W-6+nPfH*a|BZC>1VrKI!J7md*c_8MpW^v5c~E z_#lZwVOSx)C%8=?AkH}awJgbk+7+baSE!8ZV_0TdF3XGkFoT%Jb6aKn1>AqUS?G}1(Owa)ltg66dSN;>Ri3XBwX*t z?;W@H3M6_=&qFS@tmVi)))JEdML@d0O>hSeuQmB7M;r<*GNdMWZU~B_1sX-m@fUYR zLZ~*n;*~lnV72sytD|Jy*Sh!#)aCKQ>vH>OX=63Pn`s0(R}vMznYnsF}DU&iG*M4=h))+((F>;ITP+Th-+%n-&bP;4b);DM{(hV zjx$7wo7#@>*2Z$$C^&FV!pUIoCpU6Bq~jf|{^<~JfsIMG!={ZhU}}B%EZ@G@2a(Nj z1#P{~?pv_nYPd{TaqceZ?~#5<(ptyjU3`bxMSi6VoXc!?t~0m>PJgoi7wl@nUPx`# zUCTfx-0jVVObsvI#INsRAA4z(;^39{9M1c=v*~8*r!_KDh3jCQusceO;34U1E|oUd z{Ssn(xnjP|)A=w8P`Jedk-sqd?UGyN|4Ks-brevz#F2I|xs5B!bX#{J=mqMZ@h?bg8z4HDicp@=x3Gix$~3**on0HMfq&djhi;fTgURO zJMoT`%V2P@a@9nUM7-oqd_2E_zOJLsOrw8ko?cGH&bBVY zhv#D7u;XlbE6I1NL=;3rFE!Wm*%$J%9%_=^m{HtRyO8R_QL{(V%4|2Km$Us}H8Sp* z<(4J-E1Fs`d#I^-RvaVTMN%-B*k*e^$#w4!t@4BO8&jIbkn8PMqtafHRCQkyq+d)e zCU@u7D88lwH`a?5xJcJFeCa*MM}Z`b(CA8J*m3Pw`C`k_utQ}}nLZJc&^n?q)!{ZX zYqcWM4H_^(M2-@+ne7rBFx(drML_K0@~lNh!s$*7u9CvA)_Ff$fnSG8!LJn3g+MK9 zPFmiS9Bw!$J^E_)svU6Dblmy)@nh5N`RV+h?gyrn*@@~`QjY2=s9`Avoc#mJoz0p5`~75s6BGeY(C?0O$kJT@`dyyY8y!#B&o-dq}>IKA_Vbb zmDJFVprEK?`^{M~1r370eG{38_Lyzxvl>1O)=@z^;)KTcA5Uqq~nedte9UT#il{9piXswpUshyr_AK zMOrsxF1cheNmrsLoupDMj*$wjj&Qo1!$B}Aw}sCq<&udR(!_=pP(}K-=vN|v<8oJr@_=%S) zDd{UvAIKb$85wAO{Nyq((Y(}w4d=!-$$Dk3mw#3979g@!i%3G+0=j4c9)P8 zRjIJ>_jamWh~GP=x`Ia|7AY)qPUZ2}M&HB#>MXx&60ZD`$X7+K-x7+5!in4#_ zeus-lEMR|Wy~2)jD=ZaFHdMiSe|Hfza7(RhoRDJ@A-Dnx-ZwsNf>4nTm!9ENt!Ul> zC5H^!SB#4_2>{ZPLr4VxI_Nd0f}lZg(s^AF(M1$2keK$5M8S#k)dfNMC+UV>f2o5& z&zPl|h5oS$VK~qF8&r1h>D!6g-`_PBiKlx=^X_Da+4#X7d3iJEofUZ^bqB}K0wo`8OTrs}Q?xD12B-cY#ZNNcyZ&Cek zx*BwD4X?RVy$#X7zxvz3oie;kW2na#<@J|vb1x3`ay<@4tQfyq8PDA8yLr&e`StE$ z7Z(|#&PQT;Sgjl4a(WV<%y9s{@$={>*=opoiRtuQKY)y57e(`XWTl5PcD&Etc+Ne( zCWpH!m+UDz(qJy}O+#}$T^x|z>(Vg%9Tvr}MTnArJ2hO(cD?6;R@2+l#6o$!;sI*v zGrq!aUia%wwQfPT4!l@~w_#O78)h4zP;`2?eZLxK_wG8PTBq7M0E=rEADPEqFGP`M z)x+aZ6$D2#xz?+$QN@G1220$E3o8X9%4Qj)dk8DG`m!E03wb1VQ7*>dB;)&mwbHU>=- zM1PCiq78e%FyvV^U2o3GgnNig*dvdb*)+LaN6`}(%eMXk1F-;u0PCa*LCokTJ$qb2 zWXo3`E_AgbaqT$}UZh^)x#sCwEGT5%;rHur)T?BWN27_vAxiH}D9sLgad);R{?{Rx zAKW4b=y1SXH6uxK;r+e9wgYOgu}wn#8$&p(M4T*p-ep&t_EOoAHnGZ0gxI)+On7X;(DRox0ntm2I47L;AY<~rXO~d0Ka~wI zCct1U1B}hzzWb6x-B#C38kCbPip>%$$Y7nbtIwTFVw@#-N1T8#${tK+fyLBb8u;94 z@thk-dShz~F{rKt!2zYRI|Zp0Kp;3pk}Aj!-avO@bef$=#@j$u5}w^JJ?7~wWLste<_lKH(R2_J8x}qpWCY#|-tB}R+cFAP zhO8N2O@#(M1teQIxIYbe9?Rv8usILEK9e`#v9LG^v$oE9rK<=iCYDK!Kej8}L(Q9* zl_LS0Hr*AURp!4qv5co1z661D*=yL@J~KX+pktQ-1BvzZC3}DZ;=zF`M6D`(LZ1jR zmZn=(M{~K2ErW5g!f{#oJyfgdDr|$>!WIWOBi>HmL<)1#q5la(d)pr_OTvTW5R{Qm zuNmEq>_@o30H4U-PliqCl@y~ssM@e;4S@Nh}X=RGHDr}ZHu(UCK1nPHBRi`H)ZY=KlN?BbEA zM9mxY7UXlp4i|LEzf_e$3l=5DAKs$Z=^h00tY2h4ZYc~e5E+@^ADRybD zMO}P0rO94Zy|Nez2!@@lv@_tZ++dRuL>PP~^VRB$LfKfPEI_KSE7+}Vg%M*zW%}ko zj_^KPFDg$-LG8cA9nZwO6p~Zi9dik`)$Kt9x+p?@zkO%bZDy9$?(wd7%mLKs6rGv^ z9nncCLHUjz8(Ox+MCu9dt-q@M1(6IL_7blx6fV7NFai4FolHS-*AnwWKVkwG zspehGC4qaxXw~Iy!bPFr^QC5rP*Ovv%Co3CvQ3Uh6Dk#`hR^SAFhgH4+y!{C72xpi zw%_*M=8l`#>g~Lb+;;p2W~$9MyL6B0>S3zAT@QbG6k_}soE@jn&%TB171Bx3S?cRJ zhHxD^^U)MmLYGU`c~E3x7HOKjxNWGlo@;sWW_`;9pt*IseG2w@d#icwif7~thcO*{7L=iWJWwB8dqjOEw z08?QABUBmL-SaG7ON%r;DI9FFCrbe|kmr>n#9BXzZ9Gzr3zI&3FBkpc#2)g zuAnIjUn1ovT8i=J8N(1TPZ8@j-?>rL1mk-plckCDntX#nUdBYA3-u21gl=GT2!eWY zu0h)v11xdE<3K&94eZlv<492h$WP1?pg8c1_B^9@u8T=VUQm5J{xCMQePSd_JSWsM zgh^L)f3oh-VCzsaHawy5vj^-?10ypc-xlBZu0w#CY;3FnN%G8e)dI!Wm#eF|^PJ;rMeG!9k%pP}GL-LPlVi{Xv9@gE(<|mg7ZdF&(Uq<@Ozc@qwQGDC_w4cAK z<8fIa8pTf-hx`NwVO=v(%#)E*1uWgKJe0Y5A~4pXosus>*<)^1U zXp66b(4B}-FuA+K>&3xFrDyI!0l#Ls)ldEvbvP@t)Xm?(VNtFxeG4p4$rj4lSpt~h zxK|Kh?c@)Fv1jPLKn4SVX+j9d&3btk7v#e1#ANPT^%0I;AjaTon7A+ekA467X<^~O+RU-){8IB7 z4&`g-vLsd$Y=PGzv4fS^Gq9C|A@vj@-7DQ|5Dh*?i2aDYME>oXNQbiD9(+za7+>mT8^n|I+5BfIC<&>8YgA(V;wFO{g*quosm z(pBSO>UQds^5_3M{xF&~R6o4`zp{AWbGZlVq0yXiYrCF)DPxymc8F)GUpCxsk=~< zFVj6niZ&dSxC3GNT?DO5`8*aNo(Hlw-^nN3la{QsRb5kyc(3{d<9l-zA%A)F@D)%v? z;hRzgKGf$gA$yq}(5zzq12Wxg`aZ;`Q~Xu^sNUVR5dIiru86SwGaMtSAO)(iq91s2 zYS<5ygXl9DP~oyB*Id~gIdVhdjH{Q!@&@liQiWPWtlEDe1bk5JVCEh#k$jht5y+0R z^uPNx$9T(_#7bY`2{dTaqDfH#4A}t@eYo@8;Fqjm9mSa@$nB{f7?o&vLPT$`CKGg? zl}&Z}tc$Of@baUmHA&VC1Iz$jO)pGLAq2!fQr&(9f9R;wfpi8PGa-0Q!IHmPJ`7cN z?g~Fm1NOEp?4RU)Hmdh**1sLe=!c!mCN6@0<@M#iU6UDgLdVfy;AtH#WvuQ3u= z7VVu)fX6``)>&+Tz?QlmN1!zvyS!5hrbayA9hATbeAaWp+PEoo%CE-wiffSIbQSj&n3&mO+I-L6bfNji{U(@hO6reYWLip)_G&KHrM6{+wyz!OwhRZ*Z1Q=lF96(_g}DTKjw zf`uHrgqDI*+K-AtG++DJ=o-S5U?mf8@~_c=01WsNM1#bHs6CMf*{h3or0m2&R6vL<`y^ayaAPhisCZES676e?s{=J9Qsc}52iNPsMoNX~c-i3~S`HfiTnEPhw zP|xufNh@4EKHJRq>QUa`8U5yrZlqh@onIDG@N-BUScB%U;H1(x+UUW`w za);%af%%%i#K06q98`RsT@B24eb0CX)80~Q4+kcKA5=ncwfP>?;*W467KNh zN?+Bpb!xX#N-;*j7{rvUG}S;$&nE z8$tGSO9M95xj~#o;_q(TY)U@eFQ&7fIDjZ*7rKUJ*oIE*Lngq*wE4y9&J0Rt9FYWt zBheQt6>tZ%zdqq+HSrk{jz%ydJ;qc$2oHFE$}-rON0U`y3lS7w9C=wOq|^s6uCXz) zt~G1gnlrtg4;G|^XUTCL$six^sP9*G)CavRdE-v;v=;oVT?XzluH^i?mK2!bW10M5%y@nJn`Ug_tmenDFa*OTE%g!ZJD(D z1_)^nR}gyFLd!tGD#!_OKH;A&l(;#prY=vm;h@=#w)9W4veaFeJItzOGLFY&&Xv4e zpuk`a=qo)JT8v%#MTaafe|6?O2yS^45OnSV3o!y_NjI_TNpu~<$phX(@keH@x zeh_$(U$u`0JACPL+MzQ_?Da=kFFApN*LC{mUbf(74L>s!yvl`_g{m;k?om>+xZPsD zUDKnENs|vz`kI*jw%(#!X*o(=99ZVKQpUtAzXLLiP7w#ug{h-s{8yrYjQ zm(9*Sw&evU?msVZe&q$V?**jf<>-|6oXk?UPuZk&B2UE^pqMa#b}4`Fw1u=TR*kCv z#-zr<`Me}v$5%#!HYi|R@$w;Z%ADmHBYIxL_75AQKk&8A-bcXHZBBSD7W|6S z2l~B$J3vI8KRhfVmp*}a=?B)m{f&)ywm(yiwg;cRLbl`AHVDCA8hQ)v;nwa;E@B$j zDgO3YVa4gew8znk@^JrT7c|Dm?tfeK$5Uf{V`=6^)MhDnBjkg$6BOK=%lqe~Au=Bab*K-<}llku1vN)`sL~ zo+=wjF9ov{G5rrN?ym^A2B{6jTj66Bh{)W=XJU1G%L<{TrJ^?ln2v93A||ccAJ$=? zURQkZ@i4R%7+3bZ4UFC(5JufsrYyN`D)T+wc6{vfy!)YrQjJ3dS;wrY?h`i z4H4bMx61LU)$~_6E8znPXS(pflVb?OLE3fH_eTmKkRxLvIkVJccg?&@k+irZ=EkS& z%7%*5aGL%F8TV;gkaZbxn^k3%cGh+yB5~WB(mMWF&WvTbVGNya_0-~A-HxsIT#kV* z)KkVRcYjm&5%4Y`dNMQxzrfZvEopgDx}y6;yvmQWD6v8JBGr;;<5z?BxDDy9NSMnB zWy`j1a>aZYfH_bH;Z>0EzAmW?$gYp3&FnYkkFD%vN7E=7!if`}SDhH&JrdAYGoZe{ zU~9Yh9M z0q!i^*Av2&1@j5(LE;@?s8LkP{zgCFm2f%`Exf?LsbmAOg?QNOT~{!yqwzBd{j(W= z%nsVJYv)Fj8F;4-(dh=(dE9?l^h@_+mE)2XsLM-U#bFXxxIWCYO(%>!eOwfD%zHfg zrVgW~>A564Y18wJIX124&vChfA9=g}EiXh%9r^zh!M&R}+;O>BTeU+z=kmotXkiTu z#A@&}H(-KOF5jpWY6WJcOrzSm*84ZSVj3=@89tSLS;Mq>ChNjy(q4TG7ZBdm zqX6zx%(u2ek8Cu$&InluyrmQRF6XVq(Vn8Q!D~0&j=1T=w8qYJ{ZycJP%g+W zl{~*KO=%jj^EuInRUxTAB+)U1C<}a5W4|F(_2SasL>$ZdCcxHVo4lG{)`olHFFLiG zushg->Tq@3L+rvd@yO7wd`Eu#oukC{1L3sQ7!42$gc`enB<+Sfp$e9CVv~FJE)${aDF)#`# zeCyj1dF^+ZBggA?eu-~axI9l2XZf8oM=17sEZm-LylDRUhNCxSmIughL)}Jkn_HE%8?QB+2#CCDM4KXF33O6cQ}W{nYh0jyQ;Q}8ZndugBy-B}S5R~lN=!!lCU^U=ExSOsTvaD8(-kDwPYZOMEN}FS5ophSV(XNw`;&!66yOO1 z!{iiOu~q=yoD#8SiVVxH2gOiLm^ZBN-~mLgVR(Gq*+It3*pyJzoB-{ek%5HhUGU^r zEHtzj##7GV%YZHYoMr1m8Un@hgC$aFA3c-Ljth z28w7U8lJvTE%rbV`&N?_oO6e)qZEu5RK_`8MNt`qfQ06bt3nE{oNzl9RiIcUYtkVyCw>4QuBqv6K^x>*a7)yVfgB9Sf8nIOWT^M6P<9J)HE z6{{0y0bcB@&GzPqrnr*Nak;Y}B~**7t7kRl19Qd_z*o%}$rgROSItsbQug zD^{nUS)mS+p&$6|f(Ng8CN4i{Fv&>JzvlGU#F}RM1cB*!cMl{GcPwjhJ`J-{2v~RA zL@VA}S*uZZk=|#20eWMyoZm1Cac_2I*Riuz5^GjThUT)%HOaO@-Cftu(09q2Pmc5v z#u2v2Q&{WBggxB)0e%+FvVd27g3sG{c*arynpAh-OlKh6TOr5D#BjWRBkMa&)Uzz{ z`+MNcElm4tPJfF1?%EBe9qap<76a)9V%M~|4F#6!h6wNzA{mZs{IeI0vv{RPtVh%E7qzdD ze94RqD$^5Y^X+|NsECq?bn@#Hx?AXWN|G#0Jf_KR4iNI}w)Pn+Du&tJg(`bSJo^vf zoF<~qU+;zuLDyh0mZ>!$%2U)-`j?i%LKAxb1=(`i`+O*(d``K7o4B+N+I(uOWl{vw zch?EB9gzYA_xe%9o(xWCKiy2^)#}E>EW;-p)vba8R%C5P(tROArxz4}GDs*L;ZXh< z_T@TsTyNz>c(wiCPb+{Tcsq+En4UbCD zwCW_+q6NCH)XJuHBS!?kX<~J7S`!tID92C=C#{AMp+T?>q;b|*m2M4U2RYj?u42Hj zO{78>3CS$o5y9R`MvLB3+?8f{3x~MoZ?c(y8b|-bs==4I=_eavC<9;g`EmBUHNxO#lUEBcU z;X>wD6n%utnaG}MG&>E~%V*O`>1N8C!jz@WqD-gvSB~hB?Xz}VUVXc`ZGqH&(Bepx zea2k3n@1-c&osJRrk_@vy7PXIa~x{es2jM3r}hts27kx>2&QNDE<}6C=i<-5^o2W7 zOOTZ#f#cQ5>e%n4Xj&&$yR-2j_U*kaH!RwetyBdq#N#G+PkAU^*`|*}=smDKLME*j zIx5$t5ndtJAyYd^l(y3cKkRS%%@k_1R1RgVi`SiE9D%<`Qg}OXUP%Ml&j%$5=s?d# zxpri`6gasO!!g9g2|1+ifz&C`fo`x5m-Rd+1BfH!%r$ZWJ}`gOV0JfL;d6JwuIevn zNTHBwGa&~VNiI_dGa}1wH}JLB0K;5u+S+u#J-7HQ%C>Qo1`MSf)qVXh#hfqD?m;5v znK@Pr`JSLJ(NT&}xvtd8S(|W8DIR7Ms2x$Fe@-a!*pvHZK>ST1SH7;iCQD#u({~ep z3(R9a^eK0=GwsqcZeIBcW#mK+l?lIjYmpF-LasSje$s!sEIxi0O<_Gz-r=wuZOY-7 z@v^RaRFyNr>qzZ?nBS1jW6Ne9 zL?OC`Uz#UA@o9YAj2ia(NcDgUL5v}Ze4H(1@7?_eh_Gz0JG*pEkb$Xc#v(N${F5be zj9aOzDRyGQYp`meIrF4I9nr*vC1`l=`)o-!zYvJOLBRuQe4VYn>_Sc~Rs0aRj-Fy` zSxw>2ot=M~n|El~mZ~^5J{n%&gNW0|2Twr~leyP%aaN{Ev*;3f=6V(Nk(DPe9jt`{ zP~q&+449Fl-hoe3GFw&oKbb!j#qfe+GJa9a+Mioq-8UrlW~(Iz7}pU%&jWiMZbYgO zDvcyV=mzC?Vm<^L?(D{gTO@ILTA)fEuVZ2c;^|=UQql&%m)lqn4#499{hT0HQ**N_ z=WVT_-~X~8)iJb!J4~*#z|1gAuMULtnE##aqmc%V=G)lu9}pDIYK8WyI~vWF{!z$a zxU7K~R|Wn^rtC7HN~$H~OU=pf9(iYa??={;NHMQfO;u&^r z$*Mt8e-~h4{1x+NCE>sGK>|z^_7s({GB6x*nVVroUha2|u-t6I4AD^*d*!jOZDe{7 z%va%dUQXV4;nTXXhFswKWFe&y@RQ~Nl(Y~ODI>s?FoHcBDf@}x8#%j?MT$ZR#qUC4 z!+x+Ts`$ZQCV|M7y^Ic#HjcKiaUU;y>&teiTj14`nK5?>6uSHJQWCOy5}Dul1n<$J zPhgO?I{aipsl~|HSaTE_6aVpF+9CfO&F7dD4$AEvkHA9yDb*)Oag7p`l_LCg+!o2q zu!XMB`_=i_D;#O}xWoAAG)wjN+vK@vg6iZ1Wks+!3&=gYDO@kV_>9t4EzRU?Fh(y> zBSkX;X^`?96XZAe74_iwSm>2Jcrx=z&8Nw1NZN2S>96{L%+c}>rWBXBbhGyt?+WA! z)FQh>txa{s$Wf*Uz4za-h-hJdIn=RVD1d0Cqs?vr4bPu$pX`hmVlsuyVlRmKEpe5K zqa<|LA{@I5Yb394ivlkdIP*ZP30n3o;3lWH66@PGBU2TfI8QhfPOc*@OYeJQsPgc? zWtno^va*}&xzsJ8-q7_e@vPL1WT+B-jO@qA%JKegivDrBOiooz3WT1m3iKheMYfH> zYV$hp6>SnYd)09QXAHic)P^N<)wQVpfyI@{;f-{n%OJP3{C>*oV=v$<)(*-KpXr|d zlLZO%hxRO6|3CyACESOda~Fm?h%|5M)^(f}3BjOClWBEZq}uUW8(4GI?ZZ1`H$F`k z^x1KO3bE;_ufxs#%?s$VLi9dI#atSzsQ3_6ity?;pq3IGvv()2kojzj)C#FhUsDB? z@2)EW2UXy^6%pd6aP^=h?WLqfQSnUg%&L*t^aXz&xIVtD1G|vruGe|p5biFQYbml8 zwHR>o&hDbsf9PPki^7?Hn({Z6l}x*CNd9hQSYs=AL&+mr$v!I0IC6}pHt5Fd_$4>y z-l*|vitLRQ2iOz3tHrWj*0q;gnEZg=&V=7C3Sz=XR=sd5j*suO9xvHL=o78^mTt7R zKv-hNa7n++xs)rs1Ab)8X#^Vt6USO|J*gEnTV$B@@M*QD z?J4V$DlPq-VbzGaA54AsuvvWO8vV3#+_BY~O)8Fif2waWY;idUqA@y=I(G4A>Yz5k zY#LC{c&O_g(|)uWW^B7dsa#`w*W(hRAhT*yS_+|s+yE1CI4@DN%^+oP(WMg8ta%+t zAiA2ioanm$ww$&Awj)Wayls&;+N*E^aqGrooWBLiYq5GJTDe8@SD{Fyu-{w0ad8Ix zGyz2V!X$D|Il3Cy!W|v9_7hOaTDn3q>w@RKXP~-dEJ*fd9UCdXcO?<_4h~@jv|s1` z_vbuni5^~n7!E{*Zof}lGsH(H-DDL-oZfeiiVid_B@E2MAJ7XB(Q$W zH>Hj^5r}oUg;bCnWTnuCZaN!e;9$IzZq<@-Hv7sC^ncd$ynJs(DVUct=gMu#5=Zyf zcfQ`3TH#X!2E>IEO09xhEGemc(r*@-0ICvb{ljk9#)Ql^bi_@!JApq7ohbi~uS+{{2= z$}AUY%=Zu}wL&xyh+9VrV<}v_P0>l>@p=S1I$x6g@8hGyiJ1?WCC{yM88m-<*`HlD zns`prMaQrUpjRiZ#Zn{*ox6;FiOB=(P}STNFsqY#t_=B&Gxs8frZv}Wm}X}-5fN_8 zbj=`#IId8JkApGi?y}9Z#acwydoZa!nazoxsEml}$n;h5-P4wujJx=m9F zl5yTumY^B{nWt!T(@|r>$h83dww!-MxS=`Ds9Qw0Qw~D_w9M37Zp4iB!l%^Z<}ByL zpb?P<*{fUN@PjE(ANH`eN23iZ>$g_v<@5lCHu0?CpO<)HL{$w}V)kSOhW?{dO^alb zR^MLEghKIkqaGEZy1e@W$ywgaqhiM7zdl;BurmediI>48b;;+C&BT9Pojmx zy-9T;e@a~i4NER1My-5p9Qbdq3JO;&Gzpkp1ZXHX04%^PF97!Fz8Mr)AL47Rh_Fst zTXn^lCxZJb9x^N$-C02eP(?=2`I=?C_p?_^ZnP&zA&UrA03eni5GALE;^!4;E@Op} z{SxuScW$YT!%8ivv*vvD!zctMpM@~oW?r2BkX4jgL^rAvaS=CQUYvzbLnPk#1=gnm z=XmmPV*d0eRNeS$rz803>{XQR+VACXzcuzP|25SsAcy=f&vGnkF_`As1I z!e*1oF`zrVy>O^pKt{1+Z{3J)N8V0rJA?cfOVKO1|4~M9%mxmtvbTfqf}BN9<+ssO z=haVgTTgCp^yb^G>Z~2!qn}9(aAk`EGQRM79On7F5xR1DZ=g85$+>Zu1RctAoAjen z z8*A2O9v;sFzbd$V&|}EFRjU~w^0>Bos=wYtYm=+__38S>LfvV0(aPyz^oNDY$z1E#M<##J##+1 z?h#ID@p^sz)&<7<-)CJOWw=h5x!jWu?)w&Ma%$ifng3N*@+k{0+tGbi8RW%wF!9b zkxm7Hp6tpQfV!MK?<;xI^x~#chBPEM8z2TZR2$LZB#K#Vm=TdY^92Q|K$q@zpbmmU z1);fv02!x%tdgo~E!T>Ty%|C;J5jB2-aF*p2pg-I>WP%(^|EqT`IVh zE%`$s}-K$pQf%weclpK;lRY=(HuPQ6%jQZ5GGa&EGpJyU7n zZX(H@y)H=cGMEpkbTE!4F@OpXfx5)eN-z@sQgcUaeE~C`gfR&*q>Tmu$`x-O0CX_v zT@KkW+@;AdE{+_woiH~QA*3I(h*^DJccXJ#WS`5*Y(sl=LHh9wrn$-|^4d_*3>R~8 zNcG|(vYoOB>^SPEs6a)>b(LPyHE|^*v|GzIUbbe%5`W*I3Nb8ZF5-s!b8CIu7b*;U zPUU)2{3^7llzT$M|Ab_Ycso4&39Fr&y+@LP*0Wt#KO!2hKtg9HsCE+b8tH@qpjxv& z9gKo5Z6_-}Y;O>^n8JdCH$UkAXeL+zf1nzh3Ob%y3o`+ng7D~`h^8n+`lLZGVamw` zDF~Jj5y@Uef`mn2-d&gl&w;Fn{8H3ppLw;zw&PTVtT3nob*`$Kx`7Ff1=aD`|e%fZfCOjVU;Rq z%RQ0qi)3{Ql;Lg_7+}eQD~kJj*J>pG0F7@i@VgNcGpFt3(>Oq$s=$ek z-{j7NRRXAe@9~VTib4r6xcNK{cGg2GpyV^t6X(@RM_|rmR7GyVPI9#0X>S=2z-Dn2 zlun~t!3T-$X(>cwN}6Qdp`|&OB=GEtPmfKEl26Z0UE}SFfGd}ryu|u70aZ5z*v$05 zLPXtxg~Cm!$WUcVGAAS)wGQ;s;TVX7Im~R#WT7WQL*8p4FS3^d1ZKvVo6F6*Lo2es z%^sm<3b7_v9%c<~xXq-SBoHWH1QC*p`lhIac72y+$51W%^*IiBej6u-aQmi8ioKxt zhPO_zh{DM)Gm;56XG^*=*e((%9py!qRjOD5H!dn%X;#O2!#WH&2Ns4cU-DQiULW=| zo=scv+R2JXsCu;49yE}t&IlfAgxgQgh6d}bi~8JA65A*Z zf=*qfnSGy-8ZOw4w4}vh_&D67$25;@?G$TBR=RldU@y1tAHC1#%iTh#a9yG!LEON= z;|`rSTC(&YABA);K|QMzi{ZE9yW&WH6^&K9+|J+>ZFiRA7d_F+dDiU6_J+1OuA#fG z@TU}R$P?2prF+8i`;$Eb^vHdx3^>-JlcNhU+mjzKgfC^sLDF32+=(XAyqy&)FvX<^ z-OIOF9LrbsE{910`sC?v^S1J1)w%4-qC16D?J?1#-`n%cb(VYMb5+Bk;7UfabB=2Q zI{~rgkfh`4iaU4JJC!we{M1)i^be}k=87~scx+$oI5X+CwCRqLSF>l2s1s}o`s#{( z6mJD=XW0|y^+*goL>mz|9eTWSKVk zG-=9b&9{?J9`KL*LonawgKIcB72Kf4L=CEqf}bOVg5FmFF-l9_*dQFPL{a}J0Vbq4 zB!`ft0Px3l@t$7DX^_B9&e&uu$yJgI*QBDl!^uFv>Kf6c(B@o88ul&^?%|%Xtux)~ z9i|@wmjn1VdrOCTP$+VDH^6RMma$S987OF8NS&Uyat@De4_p#UkB)TRZQcJEZE+x7 zTNapPRd?dfF^cpCum^$^vSFe7#hm_0lkS5x0ciHMa?$lU0L})5QNl>bIX+J$)mAPp^Fqf2%d1$ z_F?lfPvBIye5QLm?c%3`pxGp^g)k36E}Wfm=64rp{V!P4**X3up`!4fGtUZi=mB1 zo_hyXF9F5)w^29AbNy?67A!OP8vYcyT{x_pI_hvM~Ri>v8jpzvmJJ6=)9(DR0CtZ(pW4WU zc<6J-Omwp&5uzt0X%q>*lY%B5lA87zwPOb`stg+il^{yNyaf(=?%U$&#=0RPczZjF zMA$CGEQW~Ic z@tYKXJ%0c1nAwFG22F&lKKpk#0ANzOM-S!(~ zs03R=XBu=9>$6qV-@MKVE87lm_%Xb{jLQGVzK*N2nKa+%E&4R=e`|BYgPWL0f2(?S(ZvVB|o*N<1%XB8WCOT$XZ9 zbS|nEnR&8U{gEARnN+ZiyHnHs^`;kkeMjrJqen^eoqVsK3q?KtXNAY<_Ue-3>FK-G z^=opmdgJnqPUG9-^t;e%sH z>lLw1UmK%}jD<1fU1NBI)^gUXo9<*+C9kW(nCftJr&d%)seP-jj*m{QhZzDm`?7JOOZ>Coi>tA%KG&y}ThmN{9ai0X(R|?x zYdc%+ES^RgNKdlWx+OK@$4h9)@r)_>jlL0Yu3ADcQqxHBz?cF)&vRQ zEga=Ge}G<8%QFg(w&iig5R#J;PG2$?5@DN(D+)*;{J_O<$i0}^q|vy(82uVDCNs@q zKz(H*lyJm~uP)zNdK~D^^rK-^=UOxNI;f>(ZPHb$x{~$Nzz3S^jGAEZxJS7EWAr&9 zRJYl2FQ0=_g-!dRJkpB>_uzf^ppcYZ$oY|{x*Fd~`!#^np6Bh{=JZjA_XiCHiBo18 znFz#?34;jFz~UV~n2#8~z!=CFVVAnY)}W{BlVfgSL)t7fSrgVA`a%eY(}i$36#pu+N)VP(#}FkM#YDtoabuizLUBs8mnsM^RgeTV z|7LQ>Fm0Bd{_Ec8i?n&S>_%Lsa7TuAJLoP6|0-SI}vw??C?V` zLy6Ip9`vUUjp#Y^EX@GhdM@uAq|h8K+kbkS9I;TYOHlo2gnm58PBQ_Kd$$$RY)&t`Q0yav?($m}<43 zYQJg~8@VW%#QHRt*3Vj8)QBzH_EMILXan?SF{dYLFR>FbXZzgn_$bJ~AxlQDus;n5K3v$_7E^ZMw5QeDnKRi$fUQ8SAXe zmLm#i*&)Agh)!5VAEPJLrBRP2qcGh-%(C8dZ6Nv;qG_o#9CVn2cJ&m}!IUYhbpY^( zmVbryy>a{I7XOeHz;DEqF%6sSo=uHjlt{IX0Zi^04ofb(CRFCKz?;IO#nz%F}T+>iO zo84LBo^pbzzuKNoO2~j4s~sKYg&N#qBy*5YjrdZl^R1(@P!BKaJ`rS9YMyEsS+%BT(P6H2h5O^90^uUy|(_PIq) zlO->lZgs(R6s+;(u`xzNCDGn6cQP0HZIk5O0DQvojd^Nsj!-1i`@7T{v9+o|pOV>& z{IAE8>OdCDx|m~~8L$nWwKm8ehz-H|V3bLphaEl4J^C3PaePsW z`ECDeB#<5CKT%K6UvzK*7asz4c zGNH6z(Q()5+t$09#<293v+k@$CAKL&T%c}Od!_sL?9ENoR}wqx3p-LdeoA|NPQByN zFD+{4#ho!jYA5>F1f3(>k^5`Y6mpKxFJR6mu)8@AXq>Sn-*Z3L0~j=EaY0`I7N`z~ z^7C*sW(W<~f})FbboGe5oUZKigr%9R?qDZn=0wB3g;oW>axG-0QnRz2`(PE6wdaPS zqQoI!1KZx${jzVACiv)3(wijIcNK-D>zRx zCQ1V)nrO#;ujoP-O95s2I99$$CVGgNXyw|mG427kAQ??pd)e`~Ga-~PCgAgtT|)+c zYEqVY@O1)SOMb}%EjskN8SJ|qejYKcnl`%t$tvVTCv}zuX6^+Fcx(2SJ8 zrNbQkk&-#~rGWzIBn@Uu!WYzwnHBJ(<_ii9jnADPp+{18?j(Q;+nFCpHHar;0ah;w)Ud@_(p?B(_Ye1Q|`$xN(8LX+ujvjcva z57yei*HOx%6nr2 zx@zXO^;te^7cw&984<7^2NTF|j5r;b6$J+BB? z*!uOdbb^oG|C1XZcJ5lZXA+gDp}=5qzAgoRF`c0jf6frt8aez=gouByFzS#lnBj~4 z20HUpG!T!>Vk|MEFBrU*A~#Zyq4}eV7f>u>5h_=9v0+<)q<=ci|AkXejxm_%(OfJP{g==9SQ@iP%v7mSx|;@4AI?oT$P@JW&^(&Ih;9&vWRy%hm}e zo-Dx=mPR*5zHg&Vw(8uWV*OE>_Ov@j4HgnTp?a-q525VJ6!ub9F}sqbOK<5t0C z{pR$J9SH5-(y2a(yNWQjD&~EwY0-F!=e2rsy!Z#>Pg`r*g1 zIlcF|x2#=VGe8uPHdYx2B;h2%5Z=bHS{|f2ch*JjCIYVTsAZo61)})tH)~#7IyyAw z0GwYLhfoKu*jrgAJv5#|+JrAr)9;S+jWq)G{Lzl6-v_9B)KTbVCp|nO+&;;V;_1VV zTXko9@08$qoDGB?8J;=mJZ>08uqVf6B6s=o+3jXab;T08OTq1*%=}~i?CCb?ESFe+ ze_O>2QLs7Tu068!25`70<>664MpiBkZ=@ZZ14s&zu~3xhf-Kxm^Lk6-W&r2)@I>EH zOU;j%ld-V7eU_q)yPeTpW7&$}^J?;8Xj^Mo#LN($pf z>q|(WpoM)*Cb5i+a3qlmofWvQsn2$2d^o?+I=sl1gT{>F=e7SdHBJ`}@?~g{n^=CA zl=U3w9WJVbi@d*IY|pIb1LjYK6wR>aQ|NBGaZJx;2dlGx-f>j$H3a@nF(oXfC~@lA zPZ*o?ber*nl_k_BZ9#F`D43E$`7`%}fpB`&Rr|1DYiTJe9YB=rnc30&ke$wF-<8bZ z@pkp%r>5n`1%2eH2(rIg=g_~alqja_loF!{5=3EM-LOA#eyR|K3Jl9ME5eM{R$zk&G##O zrKPe_z(Ti`cZ1F_>k9=eqHs7Ne9-$+lBI>1;|TE!2!RT};|esjcyYftkuQTt=BI3W>^UhME2Yq;ffAympfmlC0b8x93Vd zNwZlcrFj}_sQ{y}ak6qm8QdfePc0;2JUFry;@uiE3ly~m_q8un#54&{bl3e-2mPZD zM63Jd3VcRN{Jwhq%2~qCj$wz)NPO~4>NN`BS0neZw&lRU7)>(N^yvfQ7fiWl zGH8}puz-kUGaEvs&)s+f;EhqPv^)5gDE3L}J$scUb}o|Ln@{0{Qkpl-)K zg;U2Q`7mXwY4CG*?K7P)G;yHR!uRVK=$vz`3;s3i`w5ooyt6LljoIxg?7p19wKdl3 zw6&|)I?YtxB(%}l)coccVa$Bx$ACeiK_}CYB*D+rvjD zwLyq8r`qMS{*ZQB>hnh++r?7EcdFXe+&`>)TFUN@r;X zdD`k1dr)<&pzfH9`9yfyZi41CcLT!YTf@%JiCds`l7#5i7V{q@vR!ddzdr9|E3TpW zO$9Hvra@FT)3owJ4qfG&mi6&c^7}NN4tMKz>;BX|OoeJ|adGpXZ2e}_8INgFncde0 zZR7SeW^`+J!2-6cIYW0A-IWlHlx>LVrcd)dm)s-aR%;Jr)=Y~^XL*+M7;7u@35t3h z!)^IuCPjYg^xmAk^r$&&!}19fs1W4Jzj8bAx8z^(GM>5p9#j>I^GvJoTGmiP{P8`P z&j;w?7S6YOBJ<)YrU1Er(){Q(qSu{F(8saAX&`hjmC#AnfvSx&PqcI(-*E}eIZ`+x zUFDCb#?A2Z0#?((`*Im$8rc~d!1u;-@tn>qT*)5}vKk>(Mh&R==<0}t=z2|cvjqQ+ znml`1ReTk$J|4p?0MN9`ZhQvryr0XKIY2uI5U*RPwc>Ru@Oy-g)Wn7l3bolH|Mb*1 zt0+@I@_C&D+=f}8v{cPMRse7TZV-~7Wwra)gh`~v`G*bBV%8TQ{at>_Y^y{=m6KQ& z5=NOOr*6zaX=cp~i(Qwtl5|h{_rO$tW`t6VN1b3ZiYbw97+CbTyeZN`N!obAUdZ?@ zob~k42POrO;0Q`1vF+^Wfvc?3Jhu!BrNR=dNCiPi6p=kRa&rzU^p^+ndHYQl7RhmQ z_ahgID4mzP9!jk{&ejlxi))s1%F6Xy%>o*9H+3lQv`Pztj9pcG3Wf;>O_OHd_$*7t znDLD6i`~__t*6I<>haq7mP%RjR_7q}%9eYs+hiZ0SXaH3^kgB<+Ny%XnSQ^tSN#6g zaJ!^|PZ5kumZxFyEvkL-u-tia3X9FCY{drzd|dFf;mr3ia$F^=+1n^66m)V5=|mHE z!h+d2`1APQnchRc1huF0;-RZ>rEEv=4ip1|?Um@6*cZ$nkHb+&o$CPum`K%-&~L8yRPWYjCf`a%(PaXD1lFG`#JO_W9BAmHzakHwpumw`du zfBIU~e{2#=l=JU=Th+^9>%;xzS%lYt_gfAl{T!emO1Tt+T3B-r*i@Sa0{Bb6QnlHi zkPj`#+?$Mizg7*b1=zdy0RvODH>y0U>mBH>*+!1=k3JU%Zi;9dYS>f%W%(9X(S#7! zEam0sWW*er59+f}@=61iq)|r9=Vb{z`T9fRQoE0L5}RyDU<~H}MHGGEG`UC`qBi<8 zyljSy`)H}ONT8o)~E*Uk_%I>&*p0n?YNopZh1y78? zt$a+Gvc1>R%Ne2k!}dqgV3snwQk`hJ42{9sfW`G_EQ^ls5+}dB`lM09CBU#IuGy!% zh76=3jL3Q7Rv3`LxCl(lhry4Ppp6(&v`9_qW`oc`YFIgl+!E{?MGlfhYeao`-T#EK ziBztHlZV3(A?7eYu^}}|O+MLAOD>Ssn2`=;8(eR<$meKfCwR(89HP9!sY!oIG(^J-8rx z1Z@w@QQOze*(&1?693|I!QF*|jUv_c_Py#n=W|nK1a$4I;o3Tef%NZ=)En0|!wG-# zufdIu<^GY)1xL(eLVh0uOBbFsJZG3?3=tyVq3t+EzcyR3iXk5n+YPUwWLjiZT>dgZxRWYN)Du=${=a{ilIOwAacaU%^R@S_6Y zYI+S*bSRY$<+bWwN|5v!N(KBDi4Ar0j}JJeuN?*)dBEohRoF0WkKvMWYq_`Gg)S=_ zf%H(}8aS(=z|}FKB$>eaJJvvn$h{A;*JO;w=>7?GK4aKe7+(_$p^HUEJSle!MskPy z4DORj52_j?6d#Ne%sjBSw6t7nk3qvf(Is`o7Omn7Si+@Q+Ed~iv=```=Z}YK-0(Cp zJUe3I+_uTtVpsXM3dp|DH0kBj1!ym-(WFVyFkcWAPO+*RgkaC}NsElIr=$C><&eDt zB+_$Gdc!IO8;MXessiDtU{3F>un@(>ui|L#p@JwfY2oXLh!o$*!kxjOGi+ixA`+1+%PxGrm-t@A%IwUo4Ip2!|xN2`60_?G1)%i^ohG)hKdQ*uLg} z6Z8b>zh3x6s6Ngz>|>C|)2-8^B|kndzuu+}s=Ev_G)`awr7om6KfkzP0vV`3r@9ju z7_+)$!G%&B5yRR-@_t$jrWL0Jn{y1W=}uv0!#(njBOFmJC(KRwgLzq`)5gMf8^IPz zJ$+DT>gB@lOyEwQllUq!3BLz(eA?vVsEf>@G}Y=ovg~?XA}(p+lrPs+>tLek6BKz8-*-^?$(-* zlwP4zFO>|;xSOEb_x=4TLe@%W5WrwUIb0eR+P47I@1%haUju*)DNi)oF$3rKO_iMC zUM#6!uw}H6CZ{H>1K-Hn@h*zZsVy|rHb=Bo+i=IE&<}zXgHHFNb=m`iOEMs`tzI8oTu; zYx}6i43hGjXM?3f0@DALK5?n$H6^HN7!7G<)*Q#O?v2bst}UGx`g@~M>o&S$U9SVH z$;dUH0joZE#1OdE(pgA2iM*p131CwXo0>|zK8tc+Yuw4c`-+TFK$B$OI4Fu+qe%KJ z$eTlHXgdeciNzU`pkGgt-8w_7c3I^d|20yt0W*W9oe$z}iLAN*#O~VF`1SG_!*SNs zQoJuA8nt+MCGhcUGX!bRx}5bN)ID*me%BAWoxHXHT>4DpTRa*d6xD4=)(uK^Dqet^1ies+~;ds7_oc8Wo|ttf@f1T)gQ&mSo+Sm zZ?yc()NEJlhEBc3E#x(ML9PHfDrdNE$aHK^Fu>XbJA!@BkZcBHt7@+;_#_Z6%0Igb z)>@g{;wSrhEH%BUbC8MSOK<0{?NT;t+rm=)7V+MlTSxSo==1V7x(CT9JE_BVJb0mR zVB(Sb^2GoAF~Yj(apf)N3u_A+csk%4+Qy+WKPjc_zz1E0`nhB!M6V^dw+Fm#(f)H4 zT|s%vthq|vXV5nAKT96zLZjAF)W_Z<6_E7>+4*_~DDtrP-vo#|MDjAh;+1I7QXHL~< z{jFKQkCRDIX3XAb_4~xyNzfvD6_a@AhJ$gLw(5N?Yw+1KQr9jv81_4OXB2E$GqwNx z)9_I=7Z|{W#FQ@p7u2x(%ZOSfg*g%k}ofPvHV9h`@EKlx`brL@} zJ1%S%`%PUjPHMSbCxkA@Y&MTJT3y?i8STqi^MBqae|@5=zaFQ7t*OI0dO1-fxEql>kflIn|}?jGQ$tT819*XI4FBlsrXc!W?37JZ4m+XC>VQ* zR3Zrw#Ezn&M9K_7yK)?Hh~~>vqPyAo(pSlYWqr)evX!qu={{g`PC)XP>_5wX^wLrg zFjjDym%{Z%;=BlC-@Km%Z7m|iB$QP(E;+XtHyFVk$0BkgLTI#~fW;`5ZN?`AR0+#{ zR^$trlHVV~3?jDvCvfdA=l9%rwZpy)^4o@B45SZ z^!b=h0O?Gq>!X2~lhd!LQ`4X^`#G2Q7>{(DAq&Z}Nl{JJ@51npV?7OMyQL;i`sh9p zBhU*UXsf?od7-)(NbcDTDXNcqxy?IhMC_|^;h<@9jYT1HA1H_?dkl&lXu5oggSP_$ z@W>{T~u-F!Uhf6f3z+J>^dg7@umUs+< zRJXs=Kaz`XnlN$vIZ?5YbLT(&LAfixW_=O~x(89Pkq{eHm1E3!;iSkT(ArewKtQ_oMbl={%d)zX$N@GtkWHl^P`wI8mi zvRJm%U$zB*NGfw0wrvM%Yx?g58K`QOZM6Y+tMd-wDGKx(ovGExYy2s-k&T$2G@siI zg3POq%CIawi9h!=slf~w;I&&Y_IOBV%o-;GJbPk^Z~YqsKme**>;PU3@q3h0pbM^6 zTv_z8AMyacH}^}}*oqBn070+luMZECfzb-le1z~kM<9VV&y;R~v?grKv z*42Q|61*%?K2zJI5dEaQd$!7ICF$ooCSynBa{N!!Ao2!%NSum?w$<0{JD4ab(B9Fi z{cvX1BlkVgm7WvQ5ZXd`jKMsLC6(EJJ;wEo>sxk9ju*_CU*bAN6@W*&uF9H#J?JkQo)JK9c9mC}`cqM$ zT6eb*ir$E24L^B44R$T!Xb=mntO>ISvw3e?xK@Q^!TbH3(9GrC`IBATf#gjBcRw%xyMqh5ChOVXU3 zRo|0WX)af1;LvI({i0H1>0YDtZsn#OWT&fe`mt8wB3$mqCO^Khk6*EBN&_UcIEJY& zYOLc4I0=q@*-P&b=}x1uCH&w`Q6zH|Vx1?`Us5|traLDkF#N&yy~!_N=|1;MMqglF zPKH^OXHD@Oc|n~Z!y3!=#gm{l-!VR7{fLIK%3^>J!a#D2bdRJ>NWw{WllhqRgEJ#3FOUmnqI=ybBnY5* z92rfR^min73WKVW2$nM4r5s%O<2}vMu?~Uxw~ND7NlBZGQ*m|9*V~U#(nO4t`7(K; zvnBBhh)xUHV{=n)0@2BL7c0x?Z$SmDkU2Ru*mk5_;Wr$AnB#jL{2itUzOCsOh>*l= zV5%?N*NAJQ!7t5~l?@aNW%|T=5QiD_cX<$FN-KEmJ08&e1+GX6KEU``wbSyPqX|i0 zCwpC9ftQ%BD}q1>P+Av}D&fxUB}Yorb9MqMN#km@_w@$G7Y;~Z zb|p3fmd?Vs@wSQ$cG(Zx>EBg*GZO_e@Z*`A>-}X9`kCAxIF1rEcg# zqQ&c|GJ57PQlOEzGo6fmhe{oa7f-p!)Bb@9@BF8o-T*+n;UDEOF06pK_#~F&m4uNd zIfYHE;U}U=8@j(sY*J}b@S3n%{GF<{w~R1e#Q#TpDrQ>;AFnnE>FPWtzblL5Q!3mi z)=hn80{6ZDx=`RsOf)1*Trfmzc_ePPjkbjyyiGrGvX#ynx3(Di4ecA^>^ zxcF+-;E5K@O6<=gb)<`YDff|S!Cu292ea;0rEqfXy!mM;>E3XhGW8zlpwuxdM(NAh z3x1hcA2xz9XP&Mm+;#bEm?letDKb8r2{30iCZGj@I3-3F2OBPj#(rSD@M+qavbdMG zn(GTj3uYR)(ZC@9h6pCKR{OM&4HphDAX*A{j+sG;E>xD(^#b@Rh4c$@_;D}CP*e!$ zHPS&sb$ceR>8n&{m8DcgSY@%r;j(<`om$0ANw2Ul^mLMJ!7gUtI6Jssb4cM0q5Gc9 zF1R8@Et+`k#t=`Dru8W=JQ6|A6^-Mm72jZAbn5}pW!5ai2!JsE%Q{mUoHbRW|627N z=32V^h2Oq`#E9zJZS&?Q4y!~gVwi27wdHr*m}JP&I{LU(nMn2x%Mup270Dz?MIinN*JeyrA9E-TKWH1Efujefhv`=hMUCnmlYD3#L6U38*KS`Nx)xvG&OK zor>!=9~tl)WM16lyRxhQh@c|(AoFL<=~JJ%e4)+{wN2l?YXe)Q&bkBg9JVam16g)) zP*$ApmTk!8eZpG6`+}Th4kS#lzq(R7)@D`Dlu2z0)y{r&b}V;kMv49E$7%bju>*@~ zbcg@r)GE{e5{5_HJLC zKgn6Vm170~1}JA5Gs6q>SJMT^uR|Kredj_hS|*#q0y

pk5||NkG$n0pE6yKOE$hh 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

vfvi{}_?WJzrZVctQ zF?kutZ<9F0`)2$CGalI^{*!i)R^(6zmS32FiHJUH3)0&s`qix1LqkFtaZEeMTH8z| zfbTjrxbCi3WBJ)y=5GIM3NFw^#?v<18mGiD&LB(ABP>hJ^f2rn*@sl=m_d$w&2Pt( zTMOc*f-`8?i)@w*f!|Ex4fi+2ASVCh`PKy5aQoAGu=YYbg$|A`L7{ifgiP@%Eot&u%fl6{DQ8+Lv#eK?71jp@jGxPS$co|`cYid zvdc&vMx|Ln$h>V#(|21v5_Ru6tF*~YGhgEYFk#?uadMXY(8icH(x$RFs4Pv&mRk6a z$BT9t>|t9WfAuB!ttdVL@%snu4Dx%0AlW*fm_e$&UrSk^W8Z(Y0{ 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%0ALT9wy>h6#{FwCophWX5ItyVyNLx6ms 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 Z+T;lLM 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%0D&R_q9Fh?C;)r}KnG+C3$&=3UkB`j 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

EhRVAv#J=97*q(IM$+Cd{owwmHUWDNH-X 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 literal 0 HcmV?d00001 diff --git a/core/embed/io/nfc/rfal/include/rfal_analogConfig.h b/core/embed/io/nfc/rfal/include/rfal_analogConfig.h new file mode 100644 index 0000000000..dfb29797b0 --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_analogConfig.h @@ -0,0 +1,560 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2020 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_AnalogConfig.h + * + * \author bkam + * + * \brief RF Chip Analog Configuration Settings + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-HAL + * \brief RFAL Hardware Abstraction Layer + * @{ + * + * \addtogroup AnalogConfig + * \brief RFAL Analog Config Module + * @{ + * + */ + +#ifndef RFAL_ANALOG_CONFIG_H +#define RFAL_ANALOG_CONFIG_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * DEFINES + ****************************************************************************** + */ + +#define RFAL_ANALOG_CONFIG_LUT_SIZE \ + (87U) /*!< Maximum number of Configuration IDs in the Loop Up Table */ +#define RFAL_ANALOG_CONFIG_LUT_NOT_FOUND \ + (0xFFU) /*!< Index value indicating no Configuration IDs found */ + +#define RFAL_ANALOG_CONFIG_TBL_SIZE \ + (1024U) /*!< Maximum number of Register-Mask-Value in the Setting List */ + +/* + ****************************************************************************** + * The Analog Configuration is structured as following + * +---------+-----------------------+-----------------------------+ + * | ModeID | Num RVM configuration | RVM (Register, Value, Mask) | + * | (16bit) | (8bit) | (24bit) | + * +---------+-----------------------+-----------------------------+ + * + * The Mode ID coding for different use cases is described below + * + * 1. ModeID coding for NFC technologies (not chip specific) + * +----------------------------------------------------------------------+ + * | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + * +----------------------------------------------------------------------+ + * | P/L | TECH != CHIP | BR | DIR | + * +----------------------------------------------------------------------+ + * + * 2. ModeID coding for chip specific modes and events + * +----------------------------------------------------------------------+ + * | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + * +----------------------------------------------------------------------+ + * | P/L | TECH == CHIP | CHIP_SPECIFIC | + * +----------------------------------------------------------------------+ + * + * 3. Special ModeID coding for Direction == DPO + * +----------------------------------------------------------------------+ + * | 15 | 14 | 13 | 12 | 11 | 10 | 9 | 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 | + * +----------------------------------------------------------------------+ + * | P/L | DPO_LVL | TECH* | BR | DIR == DPO | + * +----------------------------------------------------------------------+ + * ^ + * | + * +----- reuse of TECH_RFU bits as DPO level indicator + ****************************************************************************** + */ + +/* Mask bit */ +#define RFAL_ANALOG_CONFIG_POLL_LISTEN_MODE_MASK \ + (0x8000U) /*!< Mask bit of Poll Mode in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_TECH_MASK \ + (0x7F00U) /*!< Mask bits for Technology in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_MASK \ + (0x00F0U) /*!< Mask bits for Bit rate in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_DIRECTION_MASK \ + (0x000FU) /*!< Mask bits for Direction in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_CHIP_SPECIFIC_MASK \ + (0x00FFU) /*!< Mask bits for Chip Specific Technology */ + +/* Shift values */ +#define RFAL_ANALOG_CONFIG_POLL_LISTEN_MODE_SHIFT \ + (15U) /*!< Shift value of Poll Mode in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_TECH_SHIFT \ + (8U) /*!< Shift value for Technology in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_SHIFT \ + (4U) /*!< Shift value for Technology in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_DIRECTION_SHIFT \ + (0U) /*!< Shift value for Direction in Analog Configuration ID */ + +/* P/L: bit 15 */ +#define RFAL_ANALOG_CONFIG_POLL \ + (0x0000U) /*!< Poll Mode bit setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_LISTEN \ + (0x8000U) /*!< Listen Mode bit setting in Analog Configuration ID */ + +/* TECH: bit 14-8 */ +#define RFAL_ANALOG_CONFIG_TECH_CHIP \ + (0x0000U) /*!< Chip-Specific bit setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_TECH_NFCA \ + (0x0100U) /*!< NFC-A Technology bits setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_TECH_NFCB \ + (0x0200U) /*!< NFC-B Technology bits setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_TECH_NFCF \ + (0x0400U) /*!< NFC-F Technology bits setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_TECH_AP2P \ + (0x0800U) /*!< AP2P Technology bits setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_TECH_NFCV \ + (0x1000U) /*!< NFC-V Technology bits setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_TECH_RFU (0x2000U) /*!< RFU for Technology bits */ +#define RFAL_ANALOG_CONFIG_TECH_RFU2 (0x4000U) /*!< RFU for Technology bits */ + +/* BR: bit 7-4 */ +#define RFAL_ANALOG_CONFIG_BITRATE_COMMON \ + (0x0000U) /*!< Common settings for all bit rates in Analog Configuration ID \ + */ +#define RFAL_ANALOG_CONFIG_BITRATE_106 \ + (0x0010U) /*!< 106kbits/s settings in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_212 \ + (0x0020U) /*!< 212kbits/s settings in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_424 \ + (0x0030U) /*!< 424kbits/s settings in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_848 \ + (0x0040U) /*!< 848kbits/s settings in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_1695 \ + (0x0050U) /*!< 1695kbits/s settings in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_3390 \ + (0x0060U) /*!< 3390kbits/s settings in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_6780 \ + (0x0070U) /*!< 6780kbits/s settings in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_211p88 \ + (0x0090U) /*!< 211.88kbits/s (ISO15693 x8) in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_105p94 \ + (0x00A0U) /*!< 105.94kbits/s (ISO15693 x4) in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_53 \ + (0x00B0U) /*!< 53kbits/s (ISO15693 x2) setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_26 \ + (0x00C0U) /*!< 26kbit/s (1 out of 4) NFC-V setting Analog Configuration ID \ + */ +#define RFAL_ANALOG_CONFIG_BITRATE_1p6 \ + (0x00D0U) /*!< 1.6kbit/s (1 out of 256) NFC-V setting Analog Config ID */ +#define RFAL_ANALOG_CONFIG_BITRATE_RFU (0x00E0U) /*!< RFU for Bitrate bits */ +#define RFAL_ANALOG_CONFIG_BITRATE_RFU2 (0x00F0U) /*!< RFU for Bitrate bits */ + +/* DIR: bit 3-0 */ +#define RFAL_ANALOG_CONFIG_NO_DIRECTION \ + (0x0000U) /*!< No direction setting in Analog Conf ID (Chip Specific only) \ + */ +#define RFAL_ANALOG_CONFIG_TX \ + (0x0001U) /*!< Transmission bit setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_RX \ + (0x0002U) /*!< Reception bit setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_ANTICOL \ + (0x0003U) /*!< Anticollision setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_DPO \ + (0x0004U) /*!< DPO setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_DLMA \ + (0x0005U) /*!< DLMA setting in Analog Configuration ID */ +#define RFAL_ANALOG_CONFIG_DIRECTION_RFU2 \ + (0x0006U) /*!< RFU for Direction bits */ +#define RFAL_ANALOG_CONFIG_DIRECTION_RFU3 \ + (0x0007U) /*!< RFU for Direction bits */ +#define RFAL_ANALOG_CONFIG_DIRECTION_RFU4 \ + (0x0008U) /*!< RFU for Direction bits */ +#define RFAL_ANALOG_CONFIG_DIRECTION_RFU5 \ + (0x0009U) /*!< RFU for Direction bits */ +#define RFAL_ANALOG_CONFIG_DIRECTION_RFU6 \ + (0x000AU) /*!< RFU for Direction bits */ +#define RFAL_ANALOG_CONFIG_DIRECTION_RFU7 \ + (0x000BU) /*!< RFU for Direction bits */ +#define RFAL_ANALOG_CONFIG_DIRECTION_RFU8 \ + (0x000CU) /*!< RFU for Direction bits */ +#define RFAL_ANALOG_CONFIG_DIRECTION_RFU9 \ + (0x000DU) /*!< RFU for Direction bits */ +#define RFAL_ANALOG_CONFIG_DIRECTION_RFU10 \ + (0x000EU) /*!< RFU for Direction bits */ +#define RFAL_ANALOG_CONFIG_DIRECTION_RFU11 \ + (0x000FU) /*!< RFU for Direction bits */ + +/* bit 7-0 */ +#define RFAL_ANALOG_CONFIG_CHIP_INIT \ + (0x0000U) /*!< Chip-Specific event: Startup;Reset;Initialize */ +#define RFAL_ANALOG_CONFIG_CHIP_DEINIT \ + (0x0001U) /*!< Chip-Specific event: Deinitialize */ +#define RFAL_ANALOG_CONFIG_CHIP_FIELD_ON \ + (0x0002U) /*!< Chip-Specific event: Field On */ +#define RFAL_ANALOG_CONFIG_CHIP_FIELD_OFF \ + (0x0003U) /*!< Chip-Specific event: Field Off */ +#define RFAL_ANALOG_CONFIG_CHIP_WAKEUP_ON \ + (0x0004U) /*!< Chip-Specific event: Wake-up On */ +#define RFAL_ANALOG_CONFIG_CHIP_WAKEUP_OFF \ + (0x0005U) /*!< Chip-Specific event: Wake-up Off */ +#define RFAL_ANALOG_CONFIG_CHIP_LISTEN_ON \ + (0x0006U) /*!< Chip-Specific event: Listen On */ +#define RFAL_ANALOG_CONFIG_CHIP_LISTEN_OFF \ + (0x0007U) /*!< Chip-Specific event: Listen Off */ +#define RFAL_ANALOG_CONFIG_CHIP_POLL_COMMON \ + (0x0008U) /*!< Chip-Specific event: Poll common */ +#define RFAL_ANALOG_CONFIG_CHIP_LISTEN_COMMON \ + (0x0009U) /*!< Chip-Specific event: Listen common */ +#define RFAL_ANALOG_CONFIG_CHIP_LOWPOWER_ON \ + (0x000AU) /*!< Chip-Specific event: Low Power On */ +#define RFAL_ANALOG_CONFIG_CHIP_LOWPOWER_OFF \ + (0x000BU) /*!< Chip-Specific event: Low Power Off */ + +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_00 \ + (0x0010U) /*!< Chip-Specific event: Power Level 00 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_01 \ + (0x0011U) /*!< Chip-Specific event: Power Level 01 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_02 \ + (0x0012U) /*!< Chip-Specific event: Power Level 02 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_03 \ + (0x0013U) /*!< Chip-Specific event: Power Level 03 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_04 \ + (0x0014U) /*!< Chip-Specific event: Power Level 04 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_05 \ + (0x0015U) /*!< Chip-Specific event: Power Level 05 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_06 \ + (0x0016U) /*!< Chip-Specific event: Power Level 06 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_07 \ + (0x0017U) /*!< Chip-Specific event: Power Level 07 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_08 \ + (0x0018U) /*!< Chip-Specific event: Power Level 08 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_09 \ + (0x0019U) /*!< Chip-Specific event: Power Level 09 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_10 \ + (0x001AU) /*!< Chip-Specific event: Power Level 10 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_11 \ + (0x001BU) /*!< Chip-Specific event: Power Level 11 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_12 \ + (0x001CU) /*!< Chip-Specific event: Power Level 12 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_13 \ + (0x001DU) /*!< Chip-Specific event: Power Level 13 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_14 \ + (0x001EU) /*!< Chip-Specific event: Power Level 14 (e.g DPO, WLC) */ +#define RFAL_ANALOG_CONFIG_CHIP_POWER_LVL_15 \ + (0x001FU) /*!< Chip-Specific event: Power Level 15 (e.g DPO, WLC) */ + +#define RFAL_ANALOG_CONFIG_UPDATE_LAST \ + (0x00U) /*!< Value indicating Last configuration set during update */ +#define RFAL_ANALOG_CONFIG_UPDATE_MORE \ + (0x01U) /*!< Value indicating More configuration set coming during update */ + +/* + ****************************************************************************** + * GLOBAL MACROS + ****************************************************************************** + */ + +#define RFAL_ANALOG_CONFIG_ID_GET_POLL_LISTEN(id) \ + (RFAL_ANALOG_CONFIG_POLL_LISTEN_MODE_MASK & \ + (id)) /*!< Check if id indicates Listen mode */ + +#define RFAL_ANALOG_CONFIG_ID_GET_TECH(id) \ + (RFAL_ANALOG_CONFIG_TECH_MASK & \ + (id)) /*!< Get the technology of Configuration ID */ +#define RFAL_ANALOG_CONFIG_ID_IS_CHIP(id) \ + (RFAL_ANALOG_CONFIG_TECH_MASK & \ + (id)) /*!< Check if ID indicates Chip-specific */ +#define RFAL_ANALOG_CONFIG_ID_IS_NFCA(id) \ + (RFAL_ANALOG_CONFIG_TECH_NFCA & (id)) /*!< Check if ID indicates NFC-A */ +#define RFAL_ANALOG_CONFIG_ID_IS_NFCB(id) \ + (RFAL_ANALOG_CONFIG_TECH_NFCB & (id)) /*!< Check if ID indicates NFC-B */ +#define RFAL_ANALOG_CONFIG_ID_IS_NFCF(id) \ + (RFAL_ANALOG_CONFIG_TECH_NFCF & (id)) /*!< Check if ID indicates NFC-F */ +#define RFAL_ANALOG_CONFIG_ID_IS_AP2P(id) \ + (RFAL_ANALOG_CONFIG_TECH_AP2P & (id)) /*!< Check if ID indicates AP2P */ +#define RFAL_ANALOG_CONFIG_ID_IS_NFCV(id) \ + (RFAL_ANALOG_CONFIG_TECH_NFCV & (id)) /*!< Check if ID indicates NFC-V */ + +#define RFAL_ANALOG_CONFIG_ID_GET_BITRATE(id) \ + (RFAL_ANALOG_CONFIG_BITRATE_MASK & \ + (id)) /*!< Get Bitrate of Configuration ID */ +#define RFAL_ANALOG_CONFIG_ID_IS_COMMON(id) \ + (RFAL_ANALOG_CONFIG_BITRATE_MASK & \ + (id)) /*!< Check if ID indicates common bitrate */ +#define RFAL_ANALOG_CONFIG_ID_IS_106(id) \ + (RFAL_ANALOG_CONFIG_BITRATE_106 & \ + (id)) /*!< Check if ID indicates 106kbits/s */ +#define RFAL_ANALOG_CONFIG_ID_IS_212(id) \ + (RFAL_ANALOG_CONFIG_BITRATE_212 & \ + (id)) /*!< Check if ID indicates 212kbits/s */ +#define RFAL_ANALOG_CONFIG_ID_IS_424(id) \ + (RFAL_ANALOG_CONFIG_BITRATE_424 & \ + (id)) /*!< Check if ID indicates 424kbits/s */ +#define RFAL_ANALOG_CONFIG_ID_IS_848(id) \ + (RFAL_ANALOG_CONFIG_BITRATE_848 & \ + (id)) /*!< Check if ID indicates 848kbits/s */ +#define RFAL_ANALOG_CONFIG_ID_IS_1695(id) \ + (RFAL_ANALOG_CONFIG_BITRATE_1695 & \ + (id)) /*!< Check if ID indicates 1695kbits/s */ +#define RFAL_ANALOG_CONFIG_ID_IS_3390(id) \ + (RFAL_ANALOG_CONFIG_BITRATE_3390 & \ + (id)) /*!< Check if ID indicates 3390kbits/s */ +#define RFAL_ANALOG_CONFIG_ID_IS_6780(id) \ + (RFAL_ANALOG_CONFIG_BITRATE_6780 & \ + (id)) /*!< Check if ID indicates 6780kbits/s */ +#define RFAL_ANALOG_CONFIG_ID_IS_26(id) \ + (RFAL_ANALOG_CONFIG_BITRATE_26 & \ + (id)) /*!< Check if ID indicates 1 out of 4 bitrate */ +#define RFAL_ANALOG_CONFIG_ID_IS_1p6(id) \ + (RFAL_ANALOG_CONFIG_BITRATE_1p6 & \ + (id)) /*!< Check if ID indicates 1 out of 256 bitrate */ + +#define RFAL_ANALOG_CONFIG_ID_GET_DIRECTION(id) \ + (RFAL_ANALOG_CONFIG_DIRECTION_MASK & \ + (id)) /*!< Get Direction of Configuration ID */ +#define RFAL_ANALOG_CONFIG_ID_IS_TX(id) \ + (RFAL_ANALOG_CONFIG_TX & (id)) /*!< Check if id indicates TX */ +#define RFAL_ANALOG_CONFIG_ID_IS_RX(id) \ + (RFAL_ANALOG_CONFIG_RX & (id)) /*!< Check if id indicates RX */ + +#define RFAL_ANALOG_CONFIG_CONFIG_NUM(x) \ + (sizeof(x) / sizeof((x)[0])) /*!< Get Analog Config number */ + +/*! Set Analog Config ID value by: Mode, Technology, Bitrate and Direction */ +#define RFAL_ANALOG_CONFIG_ID_SET(mode, tech, br, direction) \ + (RFAL_ANALOG_CONFIG_ID_GET_POLL_LISTEN(mode) | \ + RFAL_ANALOG_CONFIG_ID_GET_TECH(tech) | \ + RFAL_ANALOG_CONFIG_ID_GET_BITRATE(br) | \ + RFAL_ANALOG_CONFIG_ID_GET_DIRECTION(direction)) + +/* + ****************************************************************************** + * GLOBAL DATA TYPES + ****************************************************************************** + */ + +typedef uint8_t + rfalAnalogConfigMode; /*!< Polling or Listening Mode of Configuration */ +typedef uint8_t rfalAnalogConfigTech; /*!< Technology of Configuration */ +typedef uint8_t rfalAnalogConfigBitrate; /*!< Bitrate of Configuration */ +typedef uint8_t rfalAnalogConfigDirection; /*!< Transmit/Receive direction of + Configuration */ + +typedef uint8_t rfalAnalogConfigRegAddr[2]; /*!< Register Address to ST Chip */ +typedef uint8_t rfalAnalogConfigRegMask; /*!< Register Mask Value */ +typedef uint8_t rfalAnalogConfigRegVal; /*!< Register Value */ + +typedef uint16_t rfalAnalogConfigId; /*!< Analog Configuration ID */ +typedef uint16_t rfalAnalogConfigOffset; /*!< Analog Configuration offset + address in the table */ +typedef uint8_t rfalAnalogConfigNum; /*!< Number of Analog settings for the + respective Configuration ID */ + +/*! Struct that contain the Register-Mask-Value set. Make sure that the whole + * structure size is even and unaligned! */ +typedef struct { + rfalAnalogConfigRegAddr addr; /*!< Register Address */ + rfalAnalogConfigRegMask mask; /*!< Register Mask Value */ + rfalAnalogConfigRegVal val; /*!< Register Value */ +} rfalAnalogConfigRegAddrMaskVal; + +/*! Struct that represents the Analog Configs */ +typedef struct { + uint8_t id[sizeof(rfalAnalogConfigId)]; /*!< Configuration ID */ + rfalAnalogConfigNum num; /*!< Number of Config Sets to follow */ + rfalAnalogConfigRegAddrMaskVal regSet[]; + /*!< Register-Mask-Value sets */ /* PRQA S 1060 # MISRA 18.7 - + Flexible Array Members are + the only meaningful way of + denoting a variable length + input buffer which follows a + fixed header structure. */ +} rfalAnalogConfig; + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief Initialize the Analog Configuration + * + * Reset the Analog Configuration LUT pointer to reference to default settings. + * + ***************************************************************************** + */ +void rfalAnalogConfigInitialize(void); + +/*! + ***************************************************************************** + * \brief Indicate if the current Analog Configuration Table is complete and + *ready to be used. + * + * \return true if current Analog Configuration Table is complete and ready to + *be used. \return false if current Analog Configuration Table is incomplete + * + ***************************************************************************** + */ +bool rfalAnalogConfigIsReady(void); + +/*! + ***************************************************************************** + * \brief Write the whole Analog Configuration table in raw format + * + * Writes the Analog Configuration and Look Up Table with the given raw table + * + * NOTE: Function does not check the validity of the given Table contents + * + * \param[in] configTbl : location of config Table to be loaded + * \param[in] configTblSize : size of the config Table to be loaded + * + * \return RFAL_ERR_NONE : if setting is updated + * \return RFAL_ERR_PARAM : if configTbl is invalid + * \return RFAL_ERR_NOMEM : if the given Table is bigger exceeds the max size + * \return RFAL_ERR_REQUEST : if the update Configuration Id is disabled + * + ***************************************************************************** + */ +ReturnCode rfalAnalogConfigListWriteRaw(const uint8_t *configTbl, + uint16_t configTblSize); + +/*! + ***************************************************************************** + * \brief Write the Analog Configuration table with new analog settings. + * + * Writes the Analog Configuration and Look Up Table with the new list of + *register-mask-value and Configuration ID respectively. + * + * NOTE: Function does not check for the validity of the Register Address. + * + * \param[in] more : 0x00 indicates it is last Configuration ID settings; + * 0x01 indicates more Configuration ID setting(s) are + *coming. \param[in] *config : reference to the configuration list of current + *Configuraiton ID. + * + * \return RFAL_ERR_PARAM : if Configuration ID or parameter is invalid + * \return RFAL_ERR_NOMEM : if LUT is full + * \return RFAL_ERR_REQUEST : if the update Configuration Id is disabled + * \return RFAL_ERR_NONE : if setting is updated + * + ***************************************************************************** + */ +ReturnCode rfalAnalogConfigListWrite(uint8_t more, + const rfalAnalogConfig *config); + +/*! + ***************************************************************************** + * \brief Read the whole Analog Configuration table in raw format + * + * Reads the whole Analog Configuration Table in raw format + * + * \param[out] tblBuf : location to the buffer to place the Config + *Table \param[in] tblBufLen : length of the buffer to place the Config + *Table \param[out] configTblSize : Config Table size + * + * \return RFAL_ERR_PARAM : if configTbl or configTblSize is invalid + * \return RFAL_ERR_NOMEM : if configTblSize is not enough for the whole table + * \return RFAL_ERR_NONE : if read is successful + * + ***************************************************************************** + */ +ReturnCode rfalAnalogConfigListReadRaw(uint8_t *tblBuf, uint16_t tblBufLen, + uint16_t *configTblSize); + +/*! + ***************************************************************************** + * \brief Read the Analog Configuration table. + * + * Read the Analog Configuration Table + * + * \param[in] configOffset : offset to the next Configuration ID in the List + *Table to be read. \param[out] more : 0x00 indicates it is last + *Configuration ID settings; 0x01 indicates more Configuration ID setting(s) are + *coming. \param[out] config : configuration id, number of configuration + *sets and register-mask-value sets \param[in] numConfig : the remaining + *configuration settings space available; + * + * \return RFAL_ERR_NOMEM : if number of Configuration for respective + *Configuration ID is greater the the remaining configuration setting space + *available \return RFAL_ERR_NONE : if read is successful + * + ***************************************************************************** + */ +ReturnCode rfalAnalogConfigListRead(rfalAnalogConfigOffset *configOffset, + uint8_t *more, rfalAnalogConfig *config, + rfalAnalogConfigNum numConfig); + +/*! + ***************************************************************************** + * \brief Set the Analog settings of indicated Configuration ID. + * + * Update the chip with indicated analog settings of indicated Configuration ID. + * + * \param[in] configId : configuration ID + * + * \return RFAL_ERR_PARAM : if Configuration ID is invalid + * \return RFAL_ERR_INTERNAL : if error updating setting to chip + * \return RFAL_ERR_NONE : if new settings is applied to chip + * + ***************************************************************************** + */ +ReturnCode rfalSetAnalogConfig(rfalAnalogConfigId configId); + +/*! + ***************************************************************************** + * \brief Generates Analog Config mode ID + * + * Converts RFAL mode and bitrate into Analog Config Mode ID. + * + * Update the chip with indicated analog settings of indicated Configuration ID. + * + * \param[in] md : RFAL mode format + * \param[in] br : RFAL bit rate format + * \param[in] dir : Analog Config communication direction + * + * \return Analog Config Mode ID + * + ***************************************************************************** + */ +uint16_t rfalAnalogConfigGenModeID(rfalMode md, rfalBitRate br, uint16_t dir); + +#endif /* RFAL_ANALOG_CONFIG_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_cd.h b/core/embed/io/nfc/rfal/include/rfal_cd.h new file mode 100644 index 0000000000..3f37c78790 --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_cd.h @@ -0,0 +1,173 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2019 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_cd.h + * + * \author + * + * \brief Implementation of a Card Detection Algorithm + * + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-HL + * \brief RFAL Higher Layer + * @{ + * + * \addtogroup CD + * \brief RFAL Card Detection + * @{ + * + */ + +#ifndef RFAL_CD_H +#define RFAL_CD_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_platform.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +/* + ****************************************************************************** + * GLOBAL MACROS + ****************************************************************************** + */ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! Card Detection NFC technology type */ +typedef enum { + RFAL_CD_TECH_NONE = 0x00, /*!< No NFC Technology */ + RFAL_CD_TECH_NFCA = 0x01, /*!< NFC Technology NFCB */ + RFAL_CD_TECH_NFCB = 0x02, /*!< NFC Technology NFCB */ + RFAL_CD_TECH_NFCF = 0x04, /*!< NFC Technology NFCF */ + RFAL_CD_TECH_NFCV = 0x08, /*!< NFC Technology NFCV */ + RFAL_CD_TECH_OTHER = 0x10 /*!< NFC Technology OTHER */ +} rfalCdTech; + +/*! Card Detection result|outcome type */ +typedef enum { + RFAL_CD_NOT_FOUND = 0, /* 1 + * \param[in] values : pointer with content to be written on the register(s) + * \param[in] len : number of consecutive registers to be written + * + * + * \return RFAL_ERR_PARAM : Invalid register or bad request + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : Write done with no error + ***************************************************************************** + */ +ReturnCode rfalChipWriteReg(uint16_t reg, const uint8_t* values, uint8_t len); + +/*! + ***************************************************************************** + * \brief Reads a register on the RF Chip + * + * Checks if the given register is valid and if so, reads the value(s) + * of the RF Chip register(s) + * + * \param[in] reg : register address to be read, or the first if len > 1 + * \param[out] values : pointer where the register(s) read content will be + *placed \param[in] len : number of consecutive registers to be read + * + * \return RFAL_ERR_PARAM : Invalid register or bad request + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : Read done with no error + ***************************************************************************** + */ +ReturnCode rfalChipReadReg(uint16_t reg, uint8_t* values, uint8_t len); + +/*! + ***************************************************************************** + * \brief Change a register on the RF Chip + * + * Change the value of the register bits on the RF Chip Test set in the + *valueMask. + * + * \param[in] reg : register address to be modified + * \param[in] valueMask : mask value of the register bits to be changed + * \param[in] value : register value to be set + * + * \return RFAL_ERR_PARAM : Invalid register or bad request + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_OK : Change done with no error + ***************************************************************************** + */ +ReturnCode rfalChipChangeRegBits(uint16_t reg, uint8_t valueMask, + uint8_t value); + +/*! + ***************************************************************************** + * \brief Writes a Test register on the RF Chip + * + * Writes the value on the RF Chip Test register + * + * \param[in] reg : register address to be written + * \param[in] value : value to be written on the register + * + * + * \return RFAL_ERR_PARAM : Invalid register or bad request + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : Write done with no error + ***************************************************************************** + */ +ReturnCode rfalChipWriteTestReg(uint16_t reg, uint8_t value); + +/*! + ***************************************************************************** + * \brief Reads a Test register on the RF Chip + * + * Reads the value of the RF Chip Test register + * + * \param[in] reg : register address to be read + * \param[out] value : pointer where the register content will be placed + * + * \return RFAL_ERR_PARAM :Invalid register or bad request + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : Read done with no error + ***************************************************************************** + */ +ReturnCode rfalChipReadTestReg(uint16_t reg, uint8_t* value); + +/*! + ***************************************************************************** + * \brief Change a Test register on the RF Chip + * + * Change the value of the register bits on the RF Chip Test set in the + *valueMask. + * + * \param[in] reg : test register address to be modified + * \param[in] valueMask : mask value of the register bits to be changed + * \param[in] value : register value to be set + * + * \return RFAL_ERR_PARAM : Invalid register or bad request + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_OK : Change done with no error + ***************************************************************************** + */ +ReturnCode rfalChipChangeTestRegBits(uint16_t reg, uint8_t valueMask, + uint8_t value); + +/*! + ***************************************************************************** + * \brief Execute command on the RF Chip + * + * Checks if the given command is valid and if so, executes it on + * the RF Chip + * + * \param[in] cmd : direct command to be executed + * + * \return RFAL_ERR_PARAM : Invalid command or bad request + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : Direct command executed with no error + ***************************************************************************** + */ +ReturnCode rfalChipExecCmd(uint16_t cmd); + +/*! + ***************************************************************************** + * \brief Set RFO + * + * Sets the RFO driver resistance value used when the + * field is on (unmodulated/active) + * + * \param[in] rfo : the RFO value to be used + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipSetRFO(uint8_t rfo); + +/*! + ***************************************************************************** + * \brief Get RFO + * + * Gets the RFO driver resistance value used when the + * field is on (unmodulated/active) + * + * \param[out] result : the current RFO value + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipGetRFO(uint8_t* result); + +/*! + ***************************************************************************** + * \brief Get LM Field Indicator + * + * Gets an indicator of the signal on RFI while in Passive Listen Mode + * + * \param[out] result : the current RFI value + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipGetLmFieldInd(uint8_t* result); + +/*! + ***************************************************************************** + * \brief Set Listen Mode Modulation + * + * Sets the modulation (modulated and unmodulated state) when Passive Listen + * Mode is used + * + * \param[in] mod : modulation to be used in modulated state + * \param[in] unmod : modulation to be used in unmodulated state + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipSetLMMod(uint8_t mod, uint8_t unmod); + +/*! + ***************************************************************************** + * \brief Get Listen Mode Modulation + * + * Gets the modulation (modulated and unmodulated state) when Passive Listen + * Mode is used + * + * \param[out] mod : modulation set in modulated state + * \param[out] unmod : modulation set in unmodulated state + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipGetLMMod(uint8_t* mod, uint8_t* unmod); + +/*! + ***************************************************************************** + * \brief Measure Amplitude + * + * Measures the RF Amplitude + * + * \param[out] result : result of RF measurement + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipMeasureAmplitude(uint8_t* result); + +/*! + ***************************************************************************** + * \brief Measure Phase + * + * Measures the Phase + * + * \param[out] result : result of Phase measurement + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipMeasurePhase(uint8_t* result); + +/*! + ***************************************************************************** + * \brief Measure Capacitance + * + * Measures the Capacitance + * + * \param[out] result : result of Capacitance measurement + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipMeasureCapacitance(uint8_t* result); + +/*! + ***************************************************************************** + * \brief Measure Power Supply + * + * Measures the Power Supply + * + * \param[in] param : measurement parameter (chip specific) + * \param[out] result : result of the measurement + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipMeasurePowerSupply(uint8_t param, uint8_t* result); + +/*! + ***************************************************************************** + * \brief Measure I and Q + * + * Measures I and Q channels + * + * \param[out] resI : 8 bit long result of the I channel (signed) + * \param[out] resQ : 8 bit long result of the Q channel (signed) + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipMeasureIQ(int8_t* resI, int8_t* resQ); + +/*! + ***************************************************************************** + * \brief Measure combined I and Q + * + * Measures I and Q channels and combines them + * + * \param[out] result : I and Q combined + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipMeasureCombinedIQ(uint8_t* result); + +/*! + ***************************************************************************** + * \brief Set Antenna mode + * + * Sets the antenna mode. + * Differential or single ended antenna mode (RFO1 or RFO2) + * + * \param[in] single : FALSE differential ; single ended mode + * \param[in] rfiox : FALSE RFI1/RFO1 ; TRUE RFI2/RFO2 + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalChipSetAntennaMode(bool single, bool rfiox); + +#endif /* RFAL_CHIP_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_defConfig.h b/core/embed/io/nfc/rfal/include/rfal_defConfig.h new file mode 100644 index 0000000000..783ee4686b --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_defConfig.h @@ -0,0 +1,340 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_defConfig.h + * + * \author Gustavo Patricio + * + * \brief RF Abstraction Layer (RFAL) default Config file + * + * This file contains a base/default configuration for the + * RFAL library. + * Users can and shall define their on configuration acording + * to their speficic system needs on rfal_platform.h. + * + * \addtogroup RFAL + * @{ + * + */ + +#ifndef RFAL_CONFIG_H +#define RFAL_CONFIG_H + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include "rfal_features.h" + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ + +/* +****************************************************************************** +* RFAL FEATURES DEFAULT CONFIGURATION +****************************************************************************** +*/ +#ifndef RFAL_FEATURE_LISTEN_MODE +#if RFAL_SUPPORT_CE || RFAL_SUPPORT_MODE_LISTEN_ACTIVE_P2P +#define RFAL_FEATURE_LISTEN_MODE \ + true /*!< Enable RFAL support for Listen Mode */ +#endif /* SUPPORT LISTEN_MODE */ +#endif /* RFAL_FEATURE_LISTEN_MODE */ + +#ifndef RFAL_FEATURE_WAKEUP_MODE +#define RFAL_FEATURE_WAKEUP_MODE \ + true /*!< Enable RFAL support for the Wake-Up mode */ +#endif /* RFAL_FEATURE_WAKEUP_MODE */ + +#ifndef RFAL_FEATURE_LOWPOWER_MODE +#define RFAL_FEATURE_LOWPOWER_MODE \ + false /*!< RFAL support for the Low Power mode, Disabled by default */ +#endif /* RFAL_FEATURE_LOWPOWER_MODE */ + +#ifndef RFAL_FEATURE_NFCA +#if RFAL_SUPPORT_MODE_POLL_NFCA +#define RFAL_FEATURE_NFCA \ + true /*!< Enable RFAL support for NFC-A (ISO14443A) \ + */ +#endif /* RFAL_SUPPORT_MODE_POLL_NFCA */ +#endif /* RFAL_FEATURE_NFCA */ + +#ifndef RFAL_FEATURE_T1T +#if RFAL_SUPPORT_MODE_POLL_NFCA +#define RFAL_FEATURE_T1T true /*!< Enable RFAL support for T1T (Topaz) */ +#endif /* RFAL_SUPPORT_MODE_POLL_NFCA */ +#endif /* RFAL_FEATURE_T1T */ + +#ifndef RFAL_FEATURE_T2T +#if RFAL_SUPPORT_MODE_POLL_NFCA +#define RFAL_FEATURE_T2T true /*!< Enable RFAL support for T2T */ +#endif /* RFAL_SUPPORT_MODE_POLL_NFCA */ +#endif /* RFAL_FEATURE_T2T */ + +#ifndef RFAL_FEATURE_T4T +#if RFAL_SUPPORT_MODE_POLL_NFCA +#define RFAL_FEATURE_T4T true /*!< Enable RFAL support for T4T */ +#endif /* RFAL_SUPPORT_MODE_POLL_NFCA */ +#endif /* RFAL_FEATURE_T2T */ + +#ifndef RFAL_FEATURE_NFCB +#if RFAL_SUPPORT_MODE_POLL_NFCB +#define RFAL_FEATURE_NFCB \ + true /*!< Enable RFAL support for NFC-B (ISO14443B) \ + */ +#endif /* RFAL_SUPPORT_MODE_POLL_NFCB */ +#endif /* RFAL_FEATURE_NFCB */ + +#ifndef RFAL_FEATURE_ST25TB +#if RFAL_SUPPORT_MODE_POLL_NFCB +#define RFAL_FEATURE_ST25TB true /*!< Enable RFAL support for ST25TB */ +#endif /* RFAL_SUPPORT_MODE_POLL_NFCB */ +#endif /* RFAL_FEATURE_ST25TB */ + +#ifndef RFAL_FEATURE_NFCF +#if RFAL_SUPPORT_MODE_POLL_NFCF +#define RFAL_FEATURE_NFCF true /*!< Enable RFAL support for NFC-F (FeliCa) */ +#endif /* RFAL_SUPPORT_MODE_POLL_NFCF */ +#endif /* RFAL_FEATURE_NFCF */ + +#ifndef RFAL_FEATURE_NFCV +#if RFAL_SUPPORT_MODE_POLL_NFCV +#define RFAL_FEATURE_NFCV \ + true /*!< Enable RFAL support for NFC-V (ISO15693) \ + */ +#endif /* RFAL_SUPPORT_MODE_POLL_NFCV */ +#endif /* RFAL_FEATURE_NFCV */ + +#ifndef RFAL_FEATURE_ISO_DEP +#if RFAL_SUPPORT_MODE_POLL_NFCA || RFAL_SUPPORT_MODE_POLL_NFCB || \ + RFAL_SUPPORT_CE +#define RFAL_FEATURE_ISO_DEP \ + true /*!< Enable RFAL support for ISO-DEP (ISO14443-4) */ +#endif /* RFAL_SUPPORT_MODE_ */ +#endif /* RFAL_FEATURE_ISO_DEP */ + +#ifndef RFAL_FEATURE_ISO_DEP_POLL +#if RFAL_SUPPORT_MODE_POLL_NFCA || RFAL_SUPPORT_MODE_POLL_NFCB +#define RFAL_FEATURE_ISO_DEP_POLL \ + true /*!< Enable RFAL support for Poller mode (PCD) ISO-DEP (ISO14443-4) */ +#endif /* RFAL_SUPPORT_MODE_ */ +#endif /* RFAL_FEATURE_ISO_DEP */ + +#ifndef RFAL_FEATURE_ISO_DEP_LISTEN +#if RFAL_SUPPORT_CE +#define RFAL_FEATURE_ISO_DEP_LISTEN \ + true /*!< Enable RFAL support for Listen mode (PICC) ISO-DEP (ISO14443-4) */ +#endif /* RFAL_SUPPORT_MODE_ */ +#endif /* RFAL_FEATURE_ISO_DEP */ + +#ifndef RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN +#if RFAL_FEATURE_ISO_DEP +#define RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN \ + 256U /*!< ISO-DEP I-Block max length. Please use values as defined by \ + rfalIsoDepFSx */ +#endif /* RFAL_FEATURE_ISO_DEP */ +#endif /* RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN */ + +#ifndef RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN +#if RFAL_FEATURE_ISO_DEP +#define RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN \ + 512U /*!< ISO-DEP APDU max length. \ + */ +#endif /* RFAL_FEATURE_ISO_DEP */ +#endif /* RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN */ + +#ifndef RFAL_FEATURE_NFC_DEP +#if RFAL_SUPPORT_MODE_POLL_NFCA && RFAL_SUPPORT_MODE_POLL_NFCF +#define RFAL_FEATURE_NFC_DEP \ + true /*!< Enable RFAL support for NFC-DEP (NFCIP1/P2P) */ +#endif /* RFAL_SUPPORT_MODE_POLL_NFCA/F */ +#endif /* RFAL_FEATURE_NFC_DEP */ + +#ifndef RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN +#if RFAL_FEATURE_NFC_DEP +#define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN \ + 254U /*!< NFC-DEP Block/Payload length. Allowed values: 64, 128, 192, 254 */ +#endif /* RFAL_FEATURE_NFC_DEP */ +#endif /* RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN */ + +#ifndef RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN +#if RFAL_FEATURE_NFC_DEP +#define RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN 512U /*!< NFC-DEP PDU max length. */ +#endif /* RFAL_FEATURE_NFC_DEP */ +#endif /* RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN */ + +#ifndef RFAL_FEATURE_NFC_RF_BUF_LEN +#define RFAL_FEATURE_NFC_RF_BUF_LEN \ + 258U /*!< RF buffer length used by RFAL NFC layer */ +#endif /* RFAL_FEATURE_NFC_RF_BUF_LEN */ + +#ifndef RFAL_FEATURE_ST25xV +#define RFAL_FEATURE_ST25xV \ + false /*!< ST25xV Module configuration missing. Disabled by default */ +#endif + +#ifndef RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG +#define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG \ + false /*!< Dynamic Analog Configs configuration missing. Disabled by default \ + */ +#endif + +#ifndef RFAL_FEATURE_DPO +#define RFAL_FEATURE_DPO \ + false /*!< Dynamic Power Module configuration missing. Disabled by default \ + */ +#endif + +#ifndef RFAL_FEATURE_DLMA +#define RFAL_FEATURE_DLMA \ + false /*!< Dynamic LMA Module configuration missing. Disabled by default */ +#endif + +/* +****************************************************************************** +* RFAL OPTIONAL MACROS +****************************************************************************** +*/ + +#ifndef platformProtectST25RIrqStatus +#define platformProtectST25RIrqStatus() /*!< Protect unique access to IRQ \ + status var - IRQ disable on single \ + thread environment (MCU) ; Mutex \ + lock on a multi thread environment \ + */ +#endif /* platformProtectST25RIrqStatus */ + +#ifndef platformUnprotectST25RIrqStatus +#define platformUnprotectST25RIrqStatus() /*!< Unprotect the IRQ status var - \ + IRQ enable on a single thread \ + environment (MCU) ; Mutex unlock \ + on a multi thread environment */ +#endif /* platformUnprotectST25RIrqStatus */ + +#ifndef platformProtectWorker +#define platformProtectWorker() /*!< Protect RFAL Worker/Task/Process from \ + concurrent execution on multi thread \ + platforms */ +#endif /* platformProtectWorker */ + +#ifndef platformUnprotectWorker +#define platformUnprotectWorker() /*!< Unprotect RFAL Worker/Task/Process from \ + concurrent execution on multi thread \ + platforms */ +#endif /* platformUnprotectWorker */ + +#ifndef platformIrqST25RPinInitialize +#define platformIrqST25RPinInitialize() /*!< Initializes ST25R IRQ pin */ +#endif /* platformIrqST25RPinInitialize */ + +#ifndef platformIrqST25RSetCallback +#define platformIrqST25RSetCallback(cb) /*!< Sets ST25R ISR callback */ +#endif /* platformIrqST25RSetCallback */ + +#ifndef platformLedsInitialize +#define platformLedsInitialize() /*!< Initializes the pins used as LEDs to \ + outputs */ +#endif /* platformLedsInitialize */ + +#ifndef platformLedOff +#define platformLedOff(port, pin) /*!< Turns the given LED Off */ +#endif /* platformLedOff */ + +#ifndef platformLedOn +#define platformLedOn(port, pin) /*!< Turns the given LED On */ +#endif /* platformLedOn */ + +#ifndef platformLedToggle +#define platformLedToggle(port, pin) /*!< Toggles the given LED */ +#endif /* platformLedToggle */ + +#ifndef platformGetSysTick +#define platformGetSysTick() /*!< Get System Tick ( 1 tick = 1 ms) */ +#endif /* platformGetSysTick */ + +#ifndef platformTimerDestroy +#define platformTimerDestroy(timer) /*!< Stops and released the given timer */ +#endif /* platformTimerDestroy */ + +#ifndef platformLog +#define platformLog(...) /*!< Log method */ +#endif /* platformLog */ + +#ifndef platformAssert +#define platformAssert(exp) /*!< Asserts whether the given expression is true \ + */ +#endif /* platformAssert */ + +#ifndef platformErrorHandle +#define platformErrorHandle() /*!< Global error handler or trap */ +#endif /* platformErrorHandle */ + +#ifdef RFAL_USE_I2C + +#ifndef platformSpiTxRx +#define platformSpiTxRx(txBuf, rxBuf, len) /*!< SPI transceive */ +#endif /* platformSpiTxRx */ + +#else /* RFAL_USE_I2C */ + +#ifndef platformI2CTx +#define platformI2CTx(txBuf, len, last, txOnly) /*!< I2C Transmit */ +#endif /* platformI2CTx */ + +#ifndef platformI2CRx +#define platformI2CRx(txBuf, len) /*!< I2C Receive */ +#endif /* platformI2CRx */ + +#ifndef platformI2CStart +#define platformI2CStart() /*!< I2C Start condition */ +#endif /* platformI2CStart */ + +#ifndef platformI2CStop +#define platformI2CStop() /*!< I2C Stop condition */ +#endif /* platformI2CStop */ + +#ifndef platformI2CRepeatStart +#define platformI2CRepeatStart() /*!< I2C Repeat Start */ +#endif /* platformI2CRepeatStart */ + +#ifndef platformI2CSlaveAddrWR +#define platformI2CSlaveAddrWR( \ + add) /*!< I2C Slave address for Write operation */ +#endif /* platformI2CSlaveAddrWR */ + +#ifndef platformI2CSlaveAddrRD +#define platformI2CSlaveAddrRD( \ + add) /*!< I2C Slave address for Read operation */ +#endif /* platformI2CSlaveAddrRD */ + +#endif /* RFAL_USE_I2C */ + +#endif /* RFAL_CONFIG_H */ + +/** + * @} + * + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_dpo.h b/core/embed/io/nfc/rfal/include/rfal_dpo.h new file mode 100644 index 0000000000..6c3f72ab56 --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_dpo.h @@ -0,0 +1,223 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * $Revision: $ + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_dpo.h + * + * \author Martin Zechleitner + * + * \brief Dynamic Power adjustment + * + * This module provides an interface to perform the power adjustment + * dynamically + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-HAL + * \brief RFAL Hardware Abstraction Layer + * @{ + * + * \addtogroup DPO + * \brief RFAL Dynamic Power Module + * @{ + * + */ + +#ifndef RFAL_DPO_H +#define RFAL_DPO_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_platform.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_DPO_TABLE_MAX_ENTRIES 4U /*!< Max DPO table entries */ +#define RFAL_DPO_TABLE_PARAM_LEN \ + sizeof(rfalDpoEntry) /*!< DPO Parameter length */ +#define RFAL_DPO_TABLE_SIZE_MAX \ + (RFAL_DPO_TABLE_MAX_ENTRIES * \ + RFAL_DPO_TABLE_PARAM_LEN) /*!< Max DPO table size */ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! DPO table entry struct */ +typedef struct { + uint8_t rfoRes; /*!< Setting for the resistance level of the RFO */ + uint8_t inc; /*!< Threshold for incrementing the output power */ + uint8_t dec; /*!< Threshold for decrementing the output power */ +} rfalDpoEntry; + +/*! Function pointer to methode doing the reference measurement */ +typedef ReturnCode (*rfalDpoMeasureFunc)(uint8_t* res); + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief Initialize dynamic power table + * + * This function sets the internal dynamic power table to the default + * values stored in rfal_DpoTbl.h + * + ***************************************************************************** + */ +void rfalDpoInitialize(void); + +/*! + ***************************************************************************** + * \brief Set the measurement methode + * + * This function sets the measurement method used for reference measurement. + * Based on the measurement the power will then be adjusted + * + * \param[in] pFunc: callback of measurement function + * + ***************************************************************************** + */ +void rfalDpoSetMeasureCallback(rfalDpoMeasureFunc pFunc); + +/*! + ***************************************************************************** + * \brief Write dynamic power table + * + * Load the dynamic power table + * + * \param[in] powerTbl : location of power Table to be loaded + * \param[in] powerTblEntries : number of entries of the power Table to be + *loaded + * + * \return RFAL_ERR_NONE : No error + * \return RFAL_ERR_PARAM : if configTbl is invalid + * \return RFAL_ERR_NOMEM : if the given Table is bigger exceeds the max size + ***************************************************************************** + */ +ReturnCode rfalDpoTableWrite(const rfalDpoEntry* powerTbl, + uint8_t powerTblEntries); + +/*! + ***************************************************************************** + * \brief Dynamic power table Read + * + * Read the dynamic power table + * + * \param[out] tblBuf : location to the rfalDpoEntry[] to place the + *Table \param[in] tblBufEntries : number of entries available in tblBuf to + *place the power Table \param[out] tableEntries : returned number of entries + *actually written into tblBuf + * + * \return RFAL_ERR_NONE : No error + * \return RFAL_ERR_PARAM : if configTbl is invalid or parameters are invalid + ***************************************************************************** + */ +ReturnCode rfalDpoTableRead(rfalDpoEntry* tblBuf, uint8_t tblBufEntries, + uint8_t* tableEntries); + +/*! + ***************************************************************************** + * \brief Dynamic power adjust + * + * It measures the current output and adjusts the power accordingly to + * the dynamic power table. + * This method | The adjustment shall be performed when the device + * is already emiting RF field + * + * \return RFAL_ERR_NONE : No error + * \return RFAL_ERR_PARAM : if configTbl is invalid or parameters are + *invalid \return RFAL_ERR_WRONG_STATE : if the current state is valid for DPO + *Adjustment + ***************************************************************************** + */ +ReturnCode rfalDpoAdjust(void); + +/*! + ***************************************************************************** + * \brief Get Current Dynamic power table entry + * + * Return current used DPO power table entry settings + * + * \return RFAL_ERR_NONE : Current DpoEntry. This includes d_res, inc and dec + * + ***************************************************************************** + */ +const rfalDpoEntry* rfalDpoGetCurrentTableEntry(void); + +/*! + ***************************************************************************** + * \brief Get Current Dynamic power table index + * + * \return the index currently used DPO table entry + * + ***************************************************************************** + */ +uint8_t rfalDpoGetCurrentTableIndex(void); + +/*! + ***************************************************************************** + * \brief Dynamic power set enabled state + * + * \param[in] enable : new active state + * + * Set state to enable or disable the Dynamic power adjustment + * + ***************************************************************************** + */ +void rfalDpoSetEnabled(bool enable); + +/*! + ***************************************************************************** + * \brief Get the Dynamic power enabled state + * + * Get state of the Dynamic power adjustment + * + * \return true : DPO is enabled + * \return false : DPO is disabled + ***************************************************************************** + */ +bool rfalDpoIsEnabled(void); + +#endif /* RFAL_DPO_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_isoDep.h b/core/embed/io/nfc/rfal/include/rfal_isoDep.h new file mode 100644 index 0000000000..981e0398d0 --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_isoDep.h @@ -0,0 +1,1108 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_isoDep.h + * + * \author Gustavo Patricio + * + * \brief Implementation of ISO-DEP protocol + * + * This implementation was based on the following specs: + * - ISO/IEC 14443-4 2nd Edition 2008-07-15 + * - NFC Forum Digital Protocol 1.1 2014-01-14 + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-AL + * \brief RFAL Abstraction Layer + * @{ + * + * \addtogroup ISO-DEP + * \brief RFAL ISO-DEP Module + * @{ + * + */ + +#ifndef RFAL_ISODEP_H_ +#define RFAL_ISODEP_H_ +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_nfcb.h" +#include "rfal_platform.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* If module is disabled remove the need for the user to set lengths */ +#if !RFAL_FEATURE_ISO_DEP +#undef RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN +#undef RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN + +#define RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN \ + (1U) /*!< ISO-DEP I-Block max length, set to "none" */ +#define RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN \ + (1U) /*!< ISO-DEP APDU max length, set to "none" */ +#endif /* !RFAL_FEATURE_ISO_DEP */ + +/* + ****************************************************************************** + * DEFINES + ****************************************************************************** + */ + +#define RFAL_ISODEP_PROLOGUE_SIZE \ + (3U) /*!< Length of Prologue Field for I-Block Format */ + +#define RFAL_ISODEP_PCB_LEN (1U) /*!< PCB length */ +#define RFAL_ISODEP_DID_LEN (1U) /*!< DID length */ +#define RFAL_ISODEP_NAD_LEN (1U) /*!< NAD length */ +#define RFAL_ISODEP_NO_DID \ + (0x10U) /*!< DID value indicating the ISO-DEP layer not to use DID */ +#define RFAL_ISODEP_NO_NAD \ + (0xFFU) /*!< NAD value indicating the ISO-DEP layer not to use NAD */ + +#define RFAL_ISODEP_FWI_MASK (0xF0U) /*!< Mask bits of FWI */ +#define RFAL_ISODEP_FWI_SHIFT (4U) /*!< Shift val of FWI */ +#define RFAL_ISODEP_FWI_DEFAULT \ + (4U) /*!< Default value for FWI Digital 1.0 11.6.2.17 */ +#define RFAL_ISODEP_ADV_FEATURE \ + (0x0FU) /*!< Indicate 256 Bytes FSD and Advanc Proto Feature support:NAD & \ + DID */ + +#define RFAL_ISODEP_DID_MAX (14U) /*!< Maximum DID value */ + +#define RFAL_ISODEP_BRI_MASK \ + (0x07U) /*!< Mask bits for Poll to Listen Send bitrate */ +#define RFAL_ISODEP_BSI_MASK \ + (0x70U) /*!< Mask bits for Listen to Poll Send bitrate */ +#define RFAL_ISODEP_SAME_BITRATE_MASK \ + (0x80U) /*!< Mask bit indicate only same bit rate D for both direction \ + support */ +#define RFAL_ISODEP_BITRATE_RFU_MASK (0x08U) /*!< Mask bit for RFU */ + +/*! Maximum Frame Waiting Time = ((256 * 16/fc) * 2^FWImax) = ((256*16/fc)*2^14) + * = (67108864)/fc = 2^26 (1/fc) */ +#define RFAL_ISODEP_MAX_FWT ((uint32_t)1U << 26) + +#define RFAL_ISODEP_FSDI_DEFAULT \ + RFAL_ISODEP_FSXI_256 /*!< Default Frame Size Integer in Poll mode */ +#define RFAL_ISODEP_FSX_KEEP \ + (0xFFU) /*!< Flag to keep FSX from activation */ +#define RFAL_ISODEP_DEFAULT_FSCI \ + RFAL_ISODEP_FSXI_256 /*!< FSCI default value to be used in Listen Mode */ +#define RFAL_ISODEP_DEFAULT_FSC \ + RFAL_ISODEP_FSX_256 /*!< FSC default value (aligned \ + RFAL_ISODEP_DEFAULT_FSCI) */ +#define RFAL_ISODEP_DEFAULT_SFGI \ + (0U) /*!< SFGI Default value to be used in Listen Mode */ +#define RFAL_ISODEP_DEFAULT_FWI \ + (8U) /*!< Default Listener FWI (Max) Digital 2.0 B7 & B3 */ + +#define RFAL_ISODEP_APDU_MAX_LEN RFAL_ISODEP_FSX_1024 /*!< Max APDU length */ + +#define RFAL_ISODEP_ATTRIB_RES_MBLI_NO_INFO \ + (0x00U) /*!< MBLI indicating no information on its internal input buffer \ + size */ +#define RFAL_ISODEP_ATTRIB_REQ_PARAM1_DEFAULT \ + (0x00U) /*!< Default values of Param 1 of ATTRIB_REQ Digital 1.0 12.6.1.3-5 \ + */ +#define RFAL_ISODEP_ATTRIB_HLINFO_LEN \ + (32U) /*!< Maximum Size of Higher Layer Information */ +#define RFAL_ISODEP_ATS_HB_MAX_LEN \ + (15U) /*!< Maximum length of Historical Bytes Digital 1.1 13.6.2.23 */ +#define RFAL_ISODEP_ATTRIB_REQ_MIN_LEN \ + (9U) /*!< Minimum Length of ATTRIB_REQ command */ +#define RFAL_ISODEP_ATTRIB_RES_MIN_LEN \ + (1U) /*!< Minimum Length of ATTRIB_RES response */ + +#define RFAL_ISODEP_SPARAM_VALUES_MAX_LEN \ + (16U) /*!< Maximum Length of the value field on S(PARAMETERS) */ +#define RFAL_ISODEP_SPARAM_TAG_BLOCKINFO \ + (0xA0U) /*!< S(PARAMETERS) tag Block information */ +#define RFAL_ISODEP_SPARAM_TAG_BRREQ \ + (0xA1U) /*!< S(PARAMETERS) tag Bit rates Request */ +#define RFAL_ISODEP_SPARAM_TAG_BRIND \ + (0xA2U) /*!< S(PARAMETERS) tag Bit rates Indication */ +#define RFAL_ISODEP_SPARAM_TAG_BRACT \ + (0xA3U) /*!< S(PARAMETERS) tag Bit rates Activation */ +#define RFAL_ISODEP_SPARAM_TAG_BRACK \ + (0xA4U) /*!< S(PARAMETERS) tag Bit rates Acknowledgement */ + +#define RFAL_ISODEP_SPARAM_TAG_SUP_PCD2PICC \ + (0x80U) /*!< S(PARAMETERS) tag Supported bit rates from PCD to PICC */ +#define RFAL_ISODEP_SPARAM_TAG_SUP_PICC2PCD \ + (0x81U) /*!< S(PARAMETERS) tag Supported bit rates from PICC to PCD */ +#define RFAL_ISODEP_SPARAM_TAG_SUP_FRAME \ + (0x82U) /*!< S(PARAMETERS) tag Supported framing options PICC to PCD */ +#define RFAL_ISODEP_SPARAM_TAG_SEL_PCD2PICC \ + (0x83U) /*!< S(PARAMETERS) tag Selected bit rate from PCD to PICC */ +#define RFAL_ISODEP_SPARAM_TAG_SEL_PICC2PCD \ + (0x84U) /*!< S(PARAMETERS) tag Selected bit rate from PICC to PCD */ +#define RFAL_ISODEP_SPARAM_TAG_SEL_FRAME \ + (0x85U) /*!< S(PARAMETERS) tag Selected framing options PICC to PCD */ + +#define RFAL_ISODEP_SPARAM_TAG_LEN (1) /*!< S(PARAMETERS) Tag Length */ +#define RFAL_ISODEP_SPARAM_TAG_BRREQ_LEN \ + (0U) /*!< S(PARAMETERS) tag Bit rates Request Length */ +#define RFAL_ISODEP_SPARAM_TAG_PICC2PCD_LEN \ + (2U) /*!< S(PARAMETERS) bit rates from PCD to PICC Length */ +#define RFAL_ISODEP_SPARAM_TAG_PCD2PICC_LEN \ + (2U) /*!< S(PARAMETERS) bit rates from PICC to PCD Length */ +#define RFAL_ISODEP_SPARAM_TAG_BRACK_LEN \ + (0U) /*!< S(PARAMETERS) tag Bit rates Acknowledgement Length */ + +#define RFAL_ISODEP_ATS_TA_DPL_212 \ + (0x01U) /*!< ATS TA DSI 212 kbps support bit mask */ +#define RFAL_ISODEP_ATS_TA_DPL_424 \ + (0x02U) /*!< ATS TA DSI 424 kbps support bit mask */ +#define RFAL_ISODEP_ATS_TA_DPL_848 \ + (0x04U) /*!< ATS TA DSI 848 kbps support bit mask */ +#define RFAL_ISODEP_ATS_TA_DLP_212 \ + (0x10U) /*!< ATS TA DSI 212 kbps support bit mask */ +#define RFAL_ISODEP_ATS_TA_DLP_424 \ + (0x20U) /*!< ATS TA DRI 424 kbps support bit mask */ +#define RFAL_ISODEP_ATS_TA_DLP_848 \ + (0x40U) /*!< ATS TA DRI 848 kbps support bit mask */ +#define RFAL_ISODEP_ATS_TA_SAME_D \ + (0x80U) /*!< ATS TA same bit both directions bit mask */ +#define RFAL_ISODEP_ATS_TB_FWI_MASK \ + (0xF0U) /*!< Mask bits for FWI (Frame Waiting Integer) in TB byte */ +#define RFAL_ISODEP_ATS_TB_SFGI_MASK \ + (0x0FU) /*!< Mask bits for SFGI (Start-Up Frame Guard Integer) in TB byte */ + +#define RFAL_ISODEP_ATS_T0_TA_PRESENCE_MASK \ + (0x10U) /*!< Mask bit for TA presence */ +#define RFAL_ISODEP_ATS_T0_TB_PRESENCE_MASK \ + (0x20U) /*!< Mask bit for TB presence */ +#define RFAL_ISODEP_ATS_T0_TC_PRESENCE_MASK \ + (0x40U) /*!< Mask bit for TC presence */ +#define RFAL_ISODEP_ATS_T0_FSCI_MASK \ + (0x0FU) /*!< Mask bit for FSCI presence \ + */ +#define RFAL_ISODEP_ATS_T0_OFFSET (0x01U) /*!< Offset of T0 in ATS Response */ + +#define RFAL_ISODEP_MAX_I_RETRYS \ + (2U) /*!< Number of retries for a I-Block Digital 2.0 16.2.5.4 */ +#define RFAL_ISODEP_MAX_R_RETRYS \ + (3U) /*!< Number of retries for a R-Block Digital 2.0 B9 - nRETRY \ + ACK/NAK: [2,5] */ +#define RFAL_ISODEP_MAX_WTX_NACK_RETRYS \ + (3U) /*!< Number of S(WTX) replied with NACK Digital 2.0 B9 - nRETRY \ + WTX[2,5] */ +#define RFAL_ISODEP_MAX_WTX_RETRYS \ + (20U) /*!< Number of overall S(WTX) retries Digital 2.0 16.2.5.2 */ +#define RFAL_ISODEP_MAX_WTX_RETRYS_ULTD \ + (255U) /*!< Use unlimited number of overall S(WTX) */ +#define RFAL_ISODEP_MAX_DSL_RETRYS \ + (0U) /*!< Number of retries for a S(DESELECT) Digital 2.0 B9 - nRETRY \ + DESELECT: [0,5] */ +#define RFAL_ISODEP_RATS_RETRIES \ + (1U) /*!< RATS retries upon fail Digital 2.0 B7 - nRETRY RATS \ + [0,1] */ + +/*! Frame Size for Proximity Card Integer definitions */ +typedef enum { + RFAL_ISODEP_FSXI_16 = + 0, /*!< Frame Size for Proximity Card Integer with 16 bytes */ + RFAL_ISODEP_FSXI_24 = + 1, /*!< Frame Size for Proximity Card Integer with 24 bytes */ + RFAL_ISODEP_FSXI_32 = + 2, /*!< Frame Size for Proximity Card Integer with 32 bytes */ + RFAL_ISODEP_FSXI_40 = + 3, /*!< Frame Size for Proximity Card Integer with 40 bytes */ + RFAL_ISODEP_FSXI_48 = + 4, /*!< Frame Size for Proximity Card Integer with 48 bytes */ + RFAL_ISODEP_FSXI_64 = + 5, /*!< Frame Size for Proximity Card Integer with 64 bytes */ + RFAL_ISODEP_FSXI_96 = + 6, /*!< Frame Size for Proximity Card Integer with 96 bytes */ + RFAL_ISODEP_FSXI_128 = + 7, /*!< Frame Size for Proximity Card Integer with 128 bytes */ + RFAL_ISODEP_FSXI_256 = + 8, /*!< Frame Size for Proximity Card Integer with 256 bytes */ + RFAL_ISODEP_FSXI_512 = 9, /*!< Frame Size for Proximity Card Integer with 512 + bytes ISO14443-3 Amd2 2012 */ + RFAL_ISODEP_FSXI_1024 = 10, /*!< Frame Size for Proximity Card Integer with + 1024 bytes ISO14443-3 Amd2 2012 */ + RFAL_ISODEP_FSXI_2048 = 11, /*!< Frame Size for Proximity Card Integer with + 2048 bytes ISO14443-3 Amd2 2012 */ + RFAL_ISODEP_FSXI_4096 = 12 /*!< Frame Size for Proximity Card Integer with + 4096 bytes ISO14443-3 Amd2 2012 */ +} rfalIsoDepFSxI; + +/*! Frame Size for Proximity Card definitions */ +typedef enum { + RFAL_ISODEP_FSX_16 = 16, /*!< Frame Size for Proximity Card with 16 bytes */ + RFAL_ISODEP_FSX_24 = 24, /*!< Frame Size for Proximity Card with 24 bytes */ + RFAL_ISODEP_FSX_32 = 32, /*!< Frame Size for Proximity Card with 32 bytes */ + RFAL_ISODEP_FSX_40 = 40, /*!< Frame Size for Proximity Card with 40 bytes */ + RFAL_ISODEP_FSX_48 = 48, /*!< Frame Size for Proximity Card with 48 bytes */ + RFAL_ISODEP_FSX_64 = 64, /*!< Frame Size for Proximity Card with 64 bytes */ + RFAL_ISODEP_FSX_96 = 96, /*!< Frame Size for Proximity Card with 96 bytes */ + RFAL_ISODEP_FSX_128 = + 128, /*!< Frame Size for Proximity Card with 128 bytes */ + RFAL_ISODEP_FSX_256 = + 256, /*!< Frame Size for Proximity Card with 256 bytes */ + RFAL_ISODEP_FSX_512 = 512, /*!< Frame Size for Proximity Card with 512 bytes + ISO14443-3 Amd2 2012 */ + RFAL_ISODEP_FSX_1024 = 1024, /*!< Frame Size for Proximity Card with 1024 + bytes ISO14443-3 Amd2 2012 */ + RFAL_ISODEP_FSX_2048 = 2048, /*!< Frame Size for Proximity Card with 2048 + bytes ISO14443-3 Amd2 2012 */ + RFAL_ISODEP_FSX_4096 = 4096, /*!< Frame Size for Proximity Card with 4096 + bytes ISO14443-3 Amd2 2012 */ +} rfalIsoDepFSx; + +/* + ****************************************************************************** + * GLOBAL MACROS + ****************************************************************************** + */ + +/* + ****************************************************************************** + * GLOBAL DATA TYPES + ****************************************************************************** + */ + +/*! RATS format Digital 1.1 13.6.1 */ +typedef struct { + uint8_t CMD; /*!< RATS command byte: 0xE0 */ + uint8_t PARAM; /*!< Param indicating FSDI and DID */ +} rfalIsoDepRats; + +/*! ATS response format Digital 1.1 13.6.2 */ +typedef struct { + uint8_t TL; /*!< Length Byte, including TL byte itself */ + uint8_t T0; /*!< Format Byte T0 indicating if TA, TB, TC */ + uint8_t TA; /*!< Interface Byte TA(1) */ + uint8_t TB; /*!< Interface Byte TB(1) */ + uint8_t TC; /*!< Interface Byte TC(1) */ + uint8_t HB[RFAL_ISODEP_ATS_HB_MAX_LEN]; /*!< Historical Bytes */ +} rfalIsoDepAts; + +/*! PPS Request format (Protocol and Parameter Selection) ISO14443-4 5.3 */ +typedef struct { + uint8_t PPSS; /*!< Start Byte: [ 1101b | CID[4b] ] */ + uint8_t PPS0; /*!< Parameter 0:[ 000b | PPS1[1n] | 0001b ] */ + uint8_t PPS1; /*!< Parameter 1:[ 0000b | DSI[2b] | DRI[2b] ]*/ +} rfalIsoDepPpsReq; + +/*! PPS Response format (Protocol and Parameter Selection) ISO14443-4 5.4 */ +typedef struct { + uint8_t PPSS; /*!< Start Byte: [ 1101b | CID[4b] ] */ +} rfalIsoDepPpsRes; + +/*! ATTRIB Command Format Digital 1.1 15.6.1 */ +typedef struct { + uint8_t cmd; /*!< ATTRIB_REQ command byte */ + uint8_t + nfcid0[RFAL_NFCB_NFCID0_LEN]; /*!< NFCID0 of the card to be selected */ + struct { + uint8_t PARAM1; /*!< PARAM1 of ATTRIB command */ + uint8_t PARAM2; /*!< PARAM2 of ATTRIB command */ + uint8_t PARAM3; /*!< PARAM3 of ATTRIB command */ + uint8_t PARAM4; /*!< PARAM4 of ATTRIB command */ + } Param; /*!< Parameter of ATTRIB command */ + uint8_t + HLInfo[RFAL_ISODEP_ATTRIB_HLINFO_LEN]; /*!< Higher Layer Information */ +} rfalIsoDepAttribCmd; + +/*! ATTRIB Response Format Digital 1.1 15.6.2 */ +typedef struct { + uint8_t mbliDid; /*!< Contains MBLI and DID */ + uint8_t + HLInfo[RFAL_ISODEP_ATTRIB_HLINFO_LEN]; /*!< Higher Layer Information */ +} rfalIsoDepAttribRes; + +/*! S(Parameters) Command Format ISO14443-4 (2016) Table 4 */ +typedef struct { + uint8_t tag; /*!< S(PARAMETERS) Tag field */ + uint8_t length; /*!< S(PARAMETERS) Length field */ + uint8_t value[RFAL_ISODEP_SPARAM_VALUES_MAX_LEN]; /*!< S(PARAMETERS) Value + field */ +} rfalIsoDepSParameter; + +/*! Activation info as Poller and Listener for NFC-A and NFC-B */ +typedef union { /* PRQA S 0750 # MISRA 19.2 - Both members of the union will + not be used concurrently, device is only of type A or B at a + time. Thus no problem can occur. */ + + /*! NFC-A information */ + union { + struct { + rfalIsoDepAts ATS; /*!< ATS response (Poller mode) */ + uint8_t ATSLen; /*!< ATS response length (Poller mode) */ + } Listener; + struct { + rfalIsoDepRats RATS; /*!< RATS request (Listener mode) */ + } Poller; + } A; + + /*! NFC-B information */ + union { + struct { + rfalIsoDepAttribRes + ATTRIB_RES; /*!< ATTRIB_RES (Poller mode) */ + uint8_t ATTRIB_RESLen; /*!< ATTRIB_RES length (Poller mode) */ + } Listener; + struct { + rfalIsoDepAttribCmd ATTRIB; /*!< ATTRIB request (Listener mode) */ + uint8_t ATTRIBLen; /*!< ATTRIB request length (Listener mode) */ + } Poller; + } B; +} rfalIsoDepActivation; + +/*! ISO-DEP device Info */ +typedef struct { + uint8_t FWI; /*!< Frame Waiting Integer */ + uint32_t FWT; /*!< Frame Waiting Time (1/fc) */ + uint32_t dFWT; /*!< Delta Frame Waiting Time (1/fc) */ + uint32_t SFGI; /*!< Start-up Frame Guard time Integer */ + uint32_t SFGT; /*!< Start-up Frame Guard Time (ms) */ + uint8_t FSxI; /*!< Frame Size Device/Card Integer (FSDI or FSCI) */ + uint16_t FSx; /*!< Frame Size Device/Card (FSD or FSC) */ + uint32_t MBL; /*!< Maximum Buffer Length (optional for NFC-B) */ + rfalBitRate DSI; /*!< Bit Rate coding from Listener (PICC) to Poller (PCD) */ + rfalBitRate DRI; /*!< Bit Rate coding from Poller (PCD) to Listener (PICC) */ + uint8_t DID; /*!< Device ID */ + uint8_t NAD; /*!< Node ADdress */ + bool supDID; /*!< DID supported flag */ + bool supNAD; /*!< NAD supported flag */ + bool supAdFt; /*!< Advanced Features supported flag */ +} rfalIsoDepInfo; + +/*! ISO-DEP Device structure */ +typedef struct { + rfalIsoDepActivation activation; /*!< Activation Info */ + rfalIsoDepInfo info; /*!< ISO-DEP (ISO14443-4) device Info */ +} rfalIsoDepDevice; + +/*! ATTRIB Response parameters */ +typedef struct { + uint8_t mbli; /*!< MBLI */ + uint8_t HLInfo[RFAL_ISODEP_ATTRIB_HLINFO_LEN]; /*!< Hi Layer Information */ + uint8_t HLInfoLen; /*!< Hi Layer Information Length */ +} rfalIsoDepAttribResParam; + +/*! ATS Response parameter */ +typedef struct { + uint8_t fsci; /*!< Frame Size of Proximity Card Integer */ + uint8_t fwi; /*!< Frame Waiting Time Integer */ + uint8_t sfgi; /*!< Start-Up Frame Guard Time Integer */ + bool didSupport; /*!< DID Supported */ + uint8_t ta; /*!< Max supported bitrate both direction */ + uint8_t *hb; /*!< Historical Bytes data */ + uint8_t hbLen; /*!< Historical Bytes Length */ +} rfalIsoDepAtsParam; + +/*! Structure of I-Block Buffer format from caller */ +typedef struct { + uint8_t prologue[RFAL_ISODEP_PROLOGUE_SIZE]; /*!< Prologue/SoD buffer */ + uint8_t inf[RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN]; /*!< INF/Payload buffer */ +} rfalIsoDepBufFormat; + +/*! Structure of APDU Buffer format from caller */ +typedef struct { + uint8_t prologue[RFAL_ISODEP_PROLOGUE_SIZE]; /*!< Prologue/SoD buffer */ + uint8_t apdu[RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN]; /*!< APDU/Payload buffer */ +} rfalIsoDepApduBufFormat; + +/*! Listen Activation Parameters Structure */ +typedef struct { + rfalIsoDepBufFormat *rxBuf; /*!< Receive Buffer struct reference */ + uint16_t *rxLen; /*!< Received INF data length in Bytes */ + bool *isRxChaining; /*!< Received data is not complete */ + rfalIsoDepDevice *isoDepDev; /*!< ISO-DEP device info */ +} rfalIsoDepListenActvParam; + +/*! Structure of parameters used on ISO DEP Transceive */ +typedef struct { + rfalIsoDepBufFormat *txBuf; /*!< Transmit Buffer struct reference */ + uint16_t txBufLen; /*!< Transmit Buffer INF field length in Bytes*/ + bool isTxChaining; /*!< Transmit data is not complete */ + rfalIsoDepBufFormat *rxBuf; /*!< Receive Buffer struct reference in Bytes */ + uint16_t *rxLen; /*!< Received INF data length in Bytes */ + bool *isRxChaining; /*!< Received data is not complete */ + uint32_t FWT; /*!< FWT to be used (ignored in Listen Mode) */ + uint32_t dFWT; /*!< Delta FWT to be used */ + uint16_t ourFSx; /*!< Our device Frame Size (FSD or FSC) */ + uint16_t FSx; /*!< Other device Frame Size (FSD or FSC) */ + uint8_t DID; /*!< Device ID (RFAL_ISODEP_NO_DID if no DID) */ +} rfalIsoDepTxRxParam; + +/*! Structure of parameters used on ISO DEP APDU Transceive */ +typedef struct { + rfalIsoDepApduBufFormat *txBuf; /*!< Transmit Buffer struct reference */ + uint16_t txBufLen; /*!< Transmit Buffer INF field length in Bytes*/ + rfalIsoDepApduBufFormat + *rxBuf; /*!< Receive Buffer struct reference in Bytes */ + uint16_t *rxLen; /*!< Received INF data length in Bytes */ + rfalIsoDepBufFormat *tmpBuf; /*!< Temp buffer for Rx I-Blocks (internal) */ + uint32_t FWT; /*!< FWT to be used (ignored in Listen Mode) */ + uint32_t dFWT; /*!< Delta FWT to be used */ + uint16_t FSx; /*!< Other device Frame Size (FSD or FSC) */ + uint16_t ourFSx; /*!< Our device Frame Size (FSD or FSC) */ + uint8_t DID; /*!< Device ID (RFAL_ISODEP_NO_DID if no DID) */ +} rfalIsoDepApduTxRxParam; + +/* + ****************************************************************************** + * GLOBAL FUNCTION PROTOTYPES + ****************************************************************************** + */ + +/*! + ****************************************************************************** + * \brief Initialize the ISO-DEP protocol + * + * Initialize the ISO-DEP protocol layer with default config + ****************************************************************************** + */ +void rfalIsoDepInitialize(void); + +/*! + ****************************************************************************** + * \brief Initialize the ISO-DEP protocol + * + * Initialize the ISO-DEP protocol layer with additional parameters allowing + * to customise the protocol layer for specific behaviours + * + + * \param[in] compMode : Compliance mode to be performed + * \param[in] maxRetriesR : Number of retries for a R-Block + * Digital 2.0 B9 - nRETRY ACK/NAK: [2,5] + * \param[in] maxRetriesSnWTX : Number of retries for a S(WTX) (only in case + * of NAKs) Digital 2.0 B9 - nRETRY WTX[2,5] + * \param[in] maxRetriesSWTX : Number of overall S(WTX) retries. + * Use RFAL_ISODEP_MAX_WTX_RETRYS_ULTD for + disabling + * this limit check Digital 2.0 16.2.5.2 + * \param[in] maxRetriesSDSL : Number of retries for a S(DESELECT) + * Digital 2.0 B9 - nRETRY DESELECT: [0,5] + * \param[in] maxRetriesI : Number of retries for a I-Block + * Digital 2.0 16.2.5.4 + * \param[in] maxRetriesRATS : Number of retries for RATS + * Digital 2.0 B7 - nRETRY RATS [0,1] + * + ****************************************************************************** + */ +void rfalIsoDepInitializeWithParams(rfalComplianceMode compMode, + uint8_t maxRetriesR, + uint8_t maxRetriesSnWTX, + uint8_t maxRetriesSWTX, + uint8_t maxRetriesSDSL, uint8_t maxRetriesI, + uint8_t maxRetriesRATS); + +/*! + ***************************************************************************** + * \brief FSxI to FSx + * + * Convert Frame Size for proximity coupling Device Integer (FSxI) to + * Frame Size for proximity coupling Device (FSx) + * + * FSD - maximum frame size for NFC Forum Device in Poll Mode + * FSC - maximum frame size for NFC Forum Device in Listen Mode + * + * FSxI = FSDI or FSCI + * FSx = FSD or FSC + * + * The FSD/FSC value includes the header and CRC + * + * \param[in] FSxI : Frame Size for proximity coupling Device Integer + * + * \return fsx : Frame Size for proximity coupling Device (FSD or FSC) + * + ***************************************************************************** + */ +uint16_t rfalIsoDepFSxI2FSx(uint8_t FSxI); + +/*! + ***************************************************************************** + * \brief FWI to FWT + * + * Convert Frame Waiting time Integer (FWI) to Frame Waiting Time (FWT) in + * 1/fc units + * + * \param[in] fwi : Frame Waiting time Integer + * + * \return fwt : Frame Waiting Time in 1/fc units + * + ***************************************************************************** + */ +uint32_t rfalIsoDepFWI2FWT(uint8_t fwi); + +/*! + ***************************************************************************** + * \brief Check if the buffer data contains a valid RATS command + * + * Check if it is a well formed RATS command with 2 bytes + * This function does not check the validity of FSDI and DID + * + * \param[in] buf : reference to buffer containing the data to be checked + * \param[in] bufLen : length of data in the buffer in bytes + * + * \return true if the data indicates a RATS command; false otherwise + ***************************************************************************** + */ +bool rfalIsoDepIsRats(const uint8_t *buf, uint8_t bufLen); + +/*! + ***************************************************************************** + * \brief Check if the buffer data contains a valid ATTRIB command + * + * Check if it is a well formed ATTRIB command, but does not check the + * validity of the information inside + * + * \param[in] buf : reference to buffer containing the data to be checked + * \param[in] bufLen : length of data in the buffer in bytes + * + * \return true if the data indicates a ATTRIB command; false otherwise + ***************************************************************************** + */ +bool rfalIsoDepIsAttrib(const uint8_t *buf, uint8_t bufLen); + +/*! + ***************************************************************************** + * \brief Start Listen Activation Handling + * + * Start Listen Activation Handling and setup to receive first I-block which may + * contain complete or partial APDU after activation is completed + * + * Pass in RATS for T4AT, or ATTRIB for T4BT, to handle ATS or ATTRIB Response + *respectively The Activation Handling handles ATS and ATTRIB Response; and + *additionally PPS Response if a PPS is received for T4AT. The method uses the + *current RFAL state machine to determine if it is expecting RATS or ATTRIB + * + * Activation is completed if PPS Response is sent or if first PDU is received + *in T4T-A Activation is completed if ATTRIB Response is sent in T4T-B + * + * \ref rfalIsoDepListenGetActivationStatus provide status if activation is + *completed. \ref rfalIsoDepStartTransceive shall be called right after + *activation is completed + * + * \param[in] atsParam : reference to ATS parameters + * \param[in] attribResParam : reference to ATTRIB_RES parameters + * \param[in] buf : reference to buffer containing RATS or ATTRIB + * \param[in] bufLen : length in bytes of the given bufffer + * \param[in] actParam : reference to incoming reception information will + *be placed + * + * + * \warning Once the Activation has been completed the method + * rfalIsoDepGetTransceiveStatus() must be called. + * If activation has completed due to reception of a data block (not PPS) the + * buffer owned by the caller and passed on actParam must still contain this + *data. The first data will be processed (I-Block or S-DSL) by + *rfalIsoDepGetTransceiveStatus() inform the caller and then for the next + *transaction use rfalIsoDepStartTransceive() + * + * \return RFAL_ERR_NONE : RATS/ATTRIB is valid and activation has started + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_PROTO : Invalid request + * \return RFAL_ERR_NOTSUPP : Feature not supported + ***************************************************************************** + */ +ReturnCode rfalIsoDepListenStartActivation( + rfalIsoDepAtsParam *atsParam, + const rfalIsoDepAttribResParam *attribResParam, const uint8_t *buf, + uint16_t bufLen, rfalIsoDepListenActvParam actParam); + +/*! + ***************************************************************************** + * \brief Get the current Activation Status + * + * \return RFAL_ERR_NONE if Activation is already completed + * \return RFAL_ERR_BUSY if Activation is ongoing + * \return RFAL_ERR_LINK_LOSS if Remote Field is turned off + ***************************************************************************** + */ +ReturnCode rfalIsoDepListenGetActivationStatus(void); + +/*! + ***************************************************************************** + * \brief Get the ISO-DEP Communication Information + * + * Gets the maximum INF length in bytes based on current Frame Size + * for proximity coupling Device (FSD or FSC) excluding the header and CRC + * + * \return maximum INF length in bytes + ***************************************************************************** + */ +uint16_t rfalIsoDepGetMaxInfLen(void); + +/*! + ***************************************************************************** + * \brief ISO-DEP Start Transceive + * + * This method triggers a ISO-DEP Transceive containing a complete or + * partial APDU + * It transmits the given message and handles all protocol retransmitions, + * error handling and control messages + * + * The txBuf contains a complete or partial APDU (INF) to be transmitted + * The Prologue field will be manipulated by the Transceive + * + * If the buffer contains a partial APDU and is not the last block, + * then isTxChaining must be set to true + * + * \param[in] param: reference parameters to be used for the Transceive + * + * \return RFAL_ERR_PARAM : Bad request + * \return RFAL_ERR_WRONG_STATE : The module is not in a proper state + * \return RFAL_ERR_NONE : The Transceive request has been started + ***************************************************************************** + */ +ReturnCode rfalIsoDepStartTransceive(rfalIsoDepTxRxParam param); + +/*! + ***************************************************************************** + * \brief Get the Transceive status + * + * Returns the status of the ISO-DEP Transceive + * + * \warning When the other device is performing chaining once a chained + * block is received the error RFAL_ERR_AGAIN is sent. At this point + * caller must handle the received data immediately. + * When RFAL_ERR_AGAIN is returned an ACK has already been sent to + * the other device and the next block might be incoming. + * If rfalWorker() is called frequently it will place the next + * block on the given buffer + * + * + * \return RFAL_ERR_NONE : Transceive has been completed successfully + * \return RFAL_ERR_BUSY : Transceive is ongoing + * \return RFAL_ERR_PROTO : Protocol error occurred + * \return RFAL_ERR_TIMEOUT : Timeout error occurred + * \return RFAL_ERR_SLEEP_REQ : Deselect has been received and responded + * \return RFAL_ERR_NOMEM : The received INF does not fit into the + * receive buffer + * \return RFAL_ERR_LINK_LOSS : Communication is lost because Reader/Writer + * has turned off its field + * \return RFAL_ERR_AGAIN : received one chaining block, continue to call + * this method to retrieve the remaining blocks + ***************************************************************************** + */ +ReturnCode rfalIsoDepGetTransceiveStatus(void); + +/*! + ***************************************************************************** + * \brief ISO-DEP Start APDU Transceive + * + * This method triggers a ISO-DEP Transceive containing a complete APDU + * It transmits the given message and handles all protocol retransmitions, + * error handling and control messages + * + * The txBuf contains a complete APDU to be transmitted + * The Prologue field will be manipulated by the Transceive + * + * \warning the txBuf will be modified during the transmission + * \warning the maximum RF frame which can be received is limited by + *param.tmpBuf + * + * \param[in] param: reference parameters to be used for the Transceive + * + * \return RFAL_ERR_PARAM : Bad request + * \return RFAL_ERR_WRONG_STATE : The module is not in a proper state + * \return RFAL_ERR_NONE : The Transceive request has been started + ***************************************************************************** + */ +ReturnCode rfalIsoDepStartApduTransceive(rfalIsoDepApduTxRxParam param); + +/*! + ***************************************************************************** + * \brief Get the APDU Transceive status + * + * \return RFAL_ERR_NONE : if Transceive has been completed successfully + * \return RFAL_ERR_BUSY : if Transceive is ongoing + * \return RFAL_ERR_PROTO : if a protocol error occurred + * \return RFAL_ERR_TIMEOUT : if a timeout error occurred + * \return RFAL_ERR_SLEEP_REQ : if Deselect is received and responded + * \return RFAL_ERR_NOMEM : if the received INF does not fit into the + * receive buffer + * \return RFAL_ERR_LINK_LOSS : if communication is lost because Reader/Writer + * has turned off its field + ***************************************************************************** + */ +ReturnCode rfalIsoDepGetApduTransceiveStatus(void); + +/*! + ***************************************************************************** + * \brief ISO-DEP Send RATS + * + * This sends a RATS to make a NFC-A Listen Device to enter + * ISO-DEP layer (ISO14443-4) and checks if the received ATS is valid + * + * \param[in] FSDI : Frame Size Device Integer to be used + * \param[in] DID : Device ID to be used or RFAL_ISODEP_NO_DID for not use + *DID \param[out] ats : pointer to place the ATS Response \param[out] atsLen + *: pointer to place the ATS length + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, ATS received + ***************************************************************************** + */ +ReturnCode rfalIsoDepRATS(rfalIsoDepFSxI FSDI, uint8_t DID, rfalIsoDepAts *ats, + uint8_t *atsLen); + +/*! + ***************************************************************************** + * \brief ISO-DEP Send PPS + * + * This sends a PPS to make a NFC-A Listen Device change the communications + * bit rate from 106kbps to one of the supported bit rates + * Additionally checks if the received PPS response is valid + * + * \param[in] DID : Device ID + * \param[in] DSI : DSI code the divisor from Listener (PICC) to Poller + *(PCD) \param[in] DRI : DRI code the divisor from Poller (PCD) to Listener + *(PICC) \param[out] ppsRes : pointer to place the PPS Response + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, PPS Response received + ***************************************************************************** + */ +ReturnCode rfalIsoDepPPS(uint8_t DID, rfalBitRate DSI, rfalBitRate DRI, + rfalIsoDepPpsRes *ppsRes); + +/*! + ***************************************************************************** + * \brief ISO-DEP Send ATTRIB + * + * This sends a ATTRIB to make a NFC-B Listen Device to enter + * ISO-DEP layer (ISO14443-4) and checks if the received ATTRIB Response is + *valid + * + * \param[in] nfcid0 : NFCID0 to be used for the ATTRIB + * \param[in] PARAM1 : ATTRIB PARAM1 byte (communication parameters) + * \param[in] DSI : DSI code the divisor from Listener (PICC) to Poller + *(PCD) \param[in] DRI : DRI code the divisor from Poller (PCD) to + *Listener (PICC) \param[in] FSDI : PCD's Frame Size to be announced on + *the ATTRIB \param[in] PARAM3 : ATTRIB PARAM1 byte (protocol type) + * \param[in] DID : Device ID to be used or RFAL_ISODEP_NO_DID for not + *use DID \param[in] HLInfo : pointer to Higher layer INF (NULL if none) + * \param[in] HLInfoLen : Length HLInfo + * \param[in] fwt : Frame Waiting Time to be used (from SENSB_RES) + * \param[out] attribRes : pointer to place the ATTRIB Response + * \param[out] attribResLen : pointer to place the ATTRIB Response length + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, ATTRIB Response received + ***************************************************************************** + */ +ReturnCode rfalIsoDepATTRIB(const uint8_t *nfcid0, uint8_t PARAM1, + rfalBitRate DSI, rfalBitRate DRI, + rfalIsoDepFSxI FSDI, uint8_t PARAM3, uint8_t DID, + const uint8_t *HLInfo, uint8_t HLInfoLen, + uint32_t fwt, rfalIsoDepAttribRes *attribRes, + uint8_t *attribResLen); + +/*! + ***************************************************************************** + * \brief Deselect PICC + * + * This function sends a deselect command to PICC and waits for its + * responce in a blocking way + * + * \return RFAL_ERR_NONE : Deselect successfully sent and acknowledged by + *PICC \return RFAL_ERR_PROTO : Protocol error occurred \return + *RFAL_ERR_TIMEOUT : No response rcvd from PICC + * + ***************************************************************************** + */ +ReturnCode rfalIsoDepDeselect(void); + +/*! + ***************************************************************************** + * \brief Start Deselect + * + * This function starts the exchange to send deselect command to PICC and + * waits for its response + * + * \return RFAL_ERR_NONE : Deselect successfully sent and acknowledged by + *PICC \return RFAL_ERR_PROTO : Protocol error occurred \return + *RFAL_ERR_TIMEOUT : No response rcvd from PICC + * + ***************************************************************************** + */ +ReturnCode rfalIsoDepStartDeselect(void); + +/*! + ***************************************************************************** + * \brief Deselect Get Status + * + * This function sends a deselect command to PICC and waits for it`s + * responce in a blocking way + * + * \return RFAL_ERR_NONE : Deselect successfully sent and acknowledged by + *PICC \return RFAL_ERR_PROTO : Protocol error occurred \return + *RFAL_ERR_TIMEOUT : No response rcvd from PICC + * + ***************************************************************************** + */ +ReturnCode rfalIsoDepGetDeselectStatus(void); + +/*! + ***************************************************************************** + * \brief ISO-DEP Poller Handle NFC-A Activation + * + * This performs a NFC-A Activation into ISO-DEP layer (ISO14443-4) with the + *given parameters. It sends RATS and if the higher bit rates are supported by + * both devices it additionally sends PPS + * Once Activated all details of the device are provided on isoDepDev + * + * \param[in] FSDI : Frame Size Device Integer to be used + * \param[in] DID : Device ID to be used or RFAL_ISODEP_NO_DID for + *not use DID \param[in] maxBR : Max bit rate supported by the Poller + * \param[out] rfalIsoDepDev : ISO-DEP information of the activated Listen + *device + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, activation successful + ***************************************************************************** + */ +ReturnCode rfalIsoDepPollAHandleActivation(rfalIsoDepFSxI FSDI, uint8_t DID, + rfalBitRate maxBR, + rfalIsoDepDevice *rfalIsoDepDev); + +/*! + ***************************************************************************** + * \brief ISO-DEP Poller Handle NFC-B Activation + * + * This performs a NFC-B Activation into ISO-DEP layer (ISO14443-4) with the + *given parameters. It sends ATTRIB and calculates supported higher bit rates of + *both devices and performs activation. Once Activated all details of the device + *are provided on isoDepDev + * + * \param[in] FSDI : Frame Size Device Integer to be used + * \param[in] DID : Device ID to be used or RFAL_ISODEP_NO_DID for + *not use DID \param[in] maxBR : Max bit rate supported by the Poller + * \param[in] PARAM1 : ATTRIB PARAM1 byte (communication parameters) + * \param[in] nfcbDev : pointer to the NFC-B Device containing the + *SENSB_RES \param[in] HLInfo : pointer to Higher layer INF (NULL if + *none) \param[in] HLInfoLen : Length HLInfo \param[out] rfalIsoDepDev : + *ISO-DEP information of the activated Listen device + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, activation successful + ***************************************************************************** + */ +ReturnCode rfalIsoDepPollBHandleActivation(rfalIsoDepFSxI FSDI, uint8_t DID, + rfalBitRate maxBR, uint8_t PARAM1, + const rfalNfcbListenDevice *nfcbDev, + const uint8_t *HLInfo, + uint8_t HLInfoLen, + rfalIsoDepDevice *rfalIsoDepDev); + +/*! + ***************************************************************************** + * \brief ISO-DEP Poller Handle S(Parameters) + * + * This checks if PICC supports S(PARAMETERS), retieves PICC's + * capabilities and sets the Bit Rate at the highest supported by both + * devices + * + * \param[out] rfalIsoDepDev : ISO-DEP information of the activated Listen + *device \param[in] maxTxBR : Maximum Tx bit rate supported by PCD + * \param[in] maxRxBR : Maximum Rx bit rate supported by PCD + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, S(PARAMETERS) selection successful + ***************************************************************************** + */ +ReturnCode rfalIsoDepPollHandleSParameters(rfalIsoDepDevice *rfalIsoDepDev, + rfalBitRate maxTxBR, + rfalBitRate maxRxBR); + +/*! + ***************************************************************************** + * \brief ISO-DEP Poller Start NFC-A Activation + * + * This starts a NFC-A Activation into ISO-DEP layer (ISO14443-4) with the + *given parameters. It sends RATS and if the higher bit rates are supported by + * both devices it additionally sends PPS + * Once Activated all details of the device are provided on isoDepDev + * + * + * \see rfalIsoDepPollAGetActivationStatus + * + * \param[in] FSDI : Frame Size Device Integer to be used + * \param[in] DID : Device ID to be used or RFAL_ISODEP_NO_DID for + *not use DID \param[in] maxBR : Max bit rate supported by the Poller + * \param[out] rfalIsoDepDev : ISO-DEP information of the activated Listen + *device + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, start of asynchronous operation + *successful + ***************************************************************************** + */ +ReturnCode rfalIsoDepPollAStartActivation(rfalIsoDepFSxI FSDI, uint8_t DID, + rfalBitRate maxBR, + rfalIsoDepDevice *rfalIsoDepDev); + +/*! + ***************************************************************************** + * \brief ISO-DEP Poller Get NFC-A Activation Status + * + * Returns the activation status started by rfalIsoDepPollAStartActivation + * + * \see rfalIsoDepPollAStartActivation + * + * \return RFAL_ERR_BUSY : Operation is ongoing + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, activation successful + ***************************************************************************** + */ +ReturnCode rfalIsoDepPollAGetActivationStatus(void); + +/*! + ***************************************************************************** + * \brief ISO-DEP Poller Start NFC-B Activation + * + * This starts a NFC-B Activation into ISO-DEP layer (ISO14443-4) with the + *given parameters. It will send ATTRIB and calculate supported higher bit rates + *of both devices and perform activation. Once Activated all details of the + *device are provided on isoDepDev + * + * \see rfalIsoDepPollBGetActivationStatus + * + * \param[in] FSDI : Frame Size Device Integer to be used + * \param[in] DID : Device ID to be used or RFAL_ISODEP_NO_DID for + *not use DID \param[in] maxBR : Max bit rate supported by the Poller + * \param[in] PARAM1 : ATTRIB PARAM1 byte (communication parameters) + * \param[in] nfcbDev : pointer to the NFC-B Device containing the + *SENSB_RES \param[in] HLInfo : pointer to Higher layer INF (NULL if + *none) \param[in] HLInfoLen : Length HLInfo \param[out] rfalIsoDepDev : + *ISO-DEP information of the activated Listen device + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, start of asynchronous operation + *successful + ***************************************************************************** + */ +ReturnCode rfalIsoDepPollBStartActivation(rfalIsoDepFSxI FSDI, uint8_t DID, + rfalBitRate maxBR, uint8_t PARAM1, + const rfalNfcbListenDevice *nfcbDev, + const uint8_t *HLInfo, + uint8_t HLInfoLen, + rfalIsoDepDevice *rfalIsoDepDev); + +/*! + ***************************************************************************** + * \brief ISO-DEP Poller Get NFC-B Activation Status + * + * Returns the activation status started by rfalIsoDepPollBStartActivation + * + * \see rfalIsoDepPollBStartActivation + * + * \return RFAL_ERR_BUSY : Operation is ongoing + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, activation successful + ***************************************************************************** + */ +ReturnCode rfalIsoDepPollBGetActivationStatus(void); + +#endif /* RFAL_ISODEP_H_ */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_nfc.h b/core/embed/io/nfc/rfal/include/rfal_nfc.h new file mode 100644 index 0000000000..5613bbeb15 --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_nfc.h @@ -0,0 +1,500 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_nfc.h + * + * \brief RFAL NFC device + * + * This module provides the required features to behave as an NFC Poller + * or Listener device. It grants an easy to use interface for the following + * activities: Technology Detection, Collision Resolution, Activation, + * Data Exchange, and Deactivation + * + * This layer is influenced by (but not fully aligned with) the NFC Forum + * specifications, in particular: Activity 2.0 and NCI 2.0 + * + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-HL + * \brief RFAL Higher Layer + * @{ + * + * \addtogroup NFC + * \brief RFAL NFC Device + * @{ + * + */ + +#ifndef RFAL_NFC_H +#define RFAL_NFC_H + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include "rfal_isoDep.h" +#include "rfal_nfcDep.h" +#include "rfal_nfca.h" +#include "rfal_nfcb.h" +#include "rfal_nfcf.h" +#include "rfal_nfcv.h" +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_st25tb.h" +#include "rfal_utils.h" + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ + +#define RFAL_NFC_TECH_NONE 0x0000U /*!< No technology */ +#define RFAL_NFC_POLL_TECH_A 0x0001U /*!< Poll NFC-A technology Flag */ +#define RFAL_NFC_POLL_TECH_B 0x0002U /*!< Poll NFC-B technology Flag */ +#define RFAL_NFC_POLL_TECH_F 0x0004U /*!< Poll NFC-F technology Flag */ +#define RFAL_NFC_POLL_TECH_V 0x0008U /*!< Poll NFC-V technology Flag */ +#define RFAL_NFC_POLL_TECH_AP2P \ + 0x0010U /*!< Poll AP2P technology Flag */ +#define RFAL_NFC_POLL_TECH_ST25TB \ + 0x0020U /*!< Poll ST25TB technology Flag */ +#define RFAL_NFC_POLL_TECH_PROP \ + 0x0040U /*!< Poll Proprietary technology Flag */ +#define RFAL_NFC_LISTEN_TECH_A 0x1000U /*!< Listen NFC-A technology Flag */ +#define RFAL_NFC_LISTEN_TECH_B 0x2000U /*!< Listen NFC-B technology Flag */ +#define RFAL_NFC_LISTEN_TECH_F 0x4000U /*!< Listen NFC-F technology Flag */ +#define RFAL_NFC_LISTEN_TECH_AP2P \ + 0x8000U /*!< Listen AP2P technology Flag */ + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ + +/*! Checks if a device is currently activated */ +#define rfalNfcIsDevActivated(st) \ + (((st) >= RFAL_NFC_STATE_ACTIVATED) && ((st) < RFAL_NFC_STATE_DEACTIVATION)) + +/*! Checks if a device is in discovery */ +#define rfalNfcIsInDiscovery(st) \ + (((st) >= RFAL_NFC_STATE_START_DISCOVERY) && \ + ((st) < RFAL_NFC_STATE_ACTIVATED)) + +/*! Checks if remote device is in Poll mode */ +#define rfalNfcIsRemDevPoller(tp) \ + (((tp) >= RFAL_NFC_POLL_TYPE_NFCA) && ((tp) <= RFAL_NFC_POLL_TYPE_AP2P)) + +/*! Checks if remote device is in Listen mode */ +#define rfalNfcIsRemDevListener(tp) \ + (((int16_t)(tp) >= (int16_t)RFAL_NFC_LISTEN_TYPE_NFCA) && \ + ((tp) <= RFAL_NFC_LISTEN_TYPE_AP2P)) + +/*! Sets the discover parameters to its default values */ +#define rfalNfcDefaultDiscParams(dp) \ + if ((dp) != NULL) { \ + RFAL_MEMSET((dp), 0x00, sizeof(rfalNfcDiscoverParam)); \ + ((dp))->compMode = RFAL_COMPLIANCE_MODE_NFC; \ + ((dp))->devLimit = 1U; \ + ((dp))->nfcfBR = RFAL_BR_212; \ + ((dp))->ap2pBR = RFAL_BR_424; \ + ((dp))->maxBR = RFAL_BR_KEEP; \ + ((dp))->isoDepFS = RFAL_ISODEP_FSXI_256; \ + ((dp))->nfcDepLR = RFAL_NFCDEP_LR_254; \ + ((dp))->GBLen = 0U; \ + ((dp))->p2pNfcaPrio = false; \ + ((dp))->wakeupEnabled = false; \ + ((dp))->wakeupConfigDefault = true; \ + ((dp))->wakeupPollBefore = false; \ + ((dp))->wakeupNPolls = 1U; \ + ((dp))->totalDuration = 1000U; \ + ((dp))->techs2Find = RFAL_NFC_TECH_NONE; \ + ((dp))->techs2Bail = RFAL_NFC_TECH_NONE; \ + } + +/* +****************************************************************************** +* GLOBAL ENUMS +****************************************************************************** +*/ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! Main state */ +typedef enum { + RFAL_NFC_STATE_NOTINIT = 0, /*!< Not Initialized state */ + RFAL_NFC_STATE_IDLE = 1, /*!< Initialize state */ + RFAL_NFC_STATE_START_DISCOVERY = 2, /*!< Start Discovery loop state */ + RFAL_NFC_STATE_WAKEUP_MODE = 3, /*!< Wake-Up state */ + RFAL_NFC_STATE_POLL_TECHDETECT = 10, /*!< Technology Detection state */ + RFAL_NFC_STATE_POLL_COLAVOIDANCE = 11, /*!< Collision Avoidance state */ + RFAL_NFC_STATE_POLL_SELECT = 12, /*!< Wait for Selection state */ + RFAL_NFC_STATE_POLL_ACTIVATION = 13, /*!< Activation state */ + RFAL_NFC_STATE_LISTEN_TECHDETECT = 20, /*!< Listen Tech Detect */ + RFAL_NFC_STATE_LISTEN_COLAVOIDANCE = 21, /*!< Listen Collision Avoidance */ + RFAL_NFC_STATE_LISTEN_ACTIVATION = 22, /*!< Listen Activation state */ + RFAL_NFC_STATE_LISTEN_SLEEP = 23, /*!< Listen Sleep state */ + RFAL_NFC_STATE_ACTIVATED = 30, /*!< Activated state */ + RFAL_NFC_STATE_DATAEXCHANGE = 31, /*!< Data Exchange Start state */ + RFAL_NFC_STATE_DATAEXCHANGE_DONE = 33, /*!< Data Exchange terminated */ + RFAL_NFC_STATE_DEACTIVATION = 34 /*!< Deactivation state */ +} rfalNfcState; + +/*! Device type */ +typedef enum { + RFAL_NFC_LISTEN_TYPE_NFCA = 0, /*!< NFC-A Listener device type */ + RFAL_NFC_LISTEN_TYPE_NFCB = 1, /*!< NFC-B Listener device type */ + RFAL_NFC_LISTEN_TYPE_NFCF = 2, /*!< NFC-F Listener device type */ + RFAL_NFC_LISTEN_TYPE_NFCV = 3, /*!< NFC-V Listener device type */ + RFAL_NFC_LISTEN_TYPE_ST25TB = 4, /*!< ST25TB Listener device type */ + RFAL_NFC_LISTEN_TYPE_AP2P = 5, /*!< AP2P Listener device type */ + RFAL_NFC_LISTEN_TYPE_PROP = 6, /*!< Proprietary Listen dev type */ + RFAL_NFC_POLL_TYPE_NFCA = 10, /*!< NFC-A Poller device type */ + RFAL_NFC_POLL_TYPE_NFCB = 11, /*!< NFC-B Poller device type */ + RFAL_NFC_POLL_TYPE_NFCF = 12, /*!< NFC-F Poller device type */ + RFAL_NFC_POLL_TYPE_NFCV = 13, /*!< NFC-V Poller device type */ + RFAL_NFC_POLL_TYPE_AP2P = 15 /*!< AP2P Poller device type */ +} rfalNfcDevType; + +/*! Device interface */ +typedef enum { + RFAL_NFC_INTERFACE_RF = 0, /*!< RF Frame interface */ + RFAL_NFC_INTERFACE_ISODEP = 1, /*!< ISO-DEP interface */ + RFAL_NFC_INTERFACE_NFCDEP = 2 /*!< NFC-DEP interface */ +} rfalNfcRfInterface; + +/*! Deactivation type */ +typedef enum { + RFAL_NFC_DEACTIVATE_IDLE = 0, /*!< Deactivate and go to IDLE */ + RFAL_NFC_DEACTIVATE_SLEEP = 1, /*!< Deactivate and go to SELECT */ + RFAL_NFC_DEACTIVATE_DISCOVERY = 2 /*!< Deactivate and restart DISCOVERY */ +} rfalNfcDeactivateType; + +/*! Device struct containing all its details */ +typedef struct { + rfalNfcDevType type; /*!< Device's type */ + union { /* PRQA S 0750 # MISRA 19.2 - Members of the union will not be used + concurrently, only one technology at a time */ + rfalNfcaListenDevice nfca; /*!< NFC-A Listen Device instance */ + rfalNfcbListenDevice nfcb; /*!< NFC-B Listen Device instance */ + rfalNfcfListenDevice nfcf; /*!< NFC-F Listen Device instance */ + rfalNfcvListenDevice nfcv; /*!< NFC-V Listen Device instance */ + rfalSt25tbListenDevice st25tb; /*!< ST25TB Listen Device instance*/ + } dev; /*!< Device's instance */ + + uint8_t *nfcid; /*!< Device's NFCID */ + uint8_t nfcidLen; /*!< Device's NFCID length */ + rfalNfcRfInterface rfInterface; /*!< Device's interface */ + + union { /* PRQA S 0750 # MISRA 19.2 - Members of the union will not be used + concurrently, only one protocol at a time */ + rfalIsoDepDevice isoDep; /*!< ISO-DEP instance */ + rfalNfcDepDevice nfcDep; /*!< NFC-DEP instance */ + } proto; /*!< Device's protocol */ +} rfalNfcDevice; + +/*! Callbacks for Proprietary|Other Technology Activity 2.1 & + * EMVCo 3.0 9.2 */ +typedef ReturnCode (*rfalNfcPropCallback)(void); + +/*! Struct that holds the Proprietary NFC callbacks */ +typedef struct { + rfalNfcPropCallback + rfalNfcpPollerInitialize; /*!< Prorietary NFC Initialization callback */ + rfalNfcPropCallback + rfalNfcpPollerTechnologyDetection; /*!< Prorietary NFC Technoly Detection + callback */ + rfalNfcPropCallback + rfalNfcpPollerStartCollisionResolution; /*!< Prorietary NFC Start + Collision Resolution callback + */ + rfalNfcPropCallback + rfalNfcpPollerGetCollisionResolutionStatus; /*!< Prorietary NFC Get + Collision Resolution status + callback */ + rfalNfcPropCallback + rfalNfcpStartActivation; /*!< Prorietary NFC Start Activation callback */ + rfalNfcPropCallback + rfalNfcpGetActivationStatus; /*!< Prorietary NFC Get Activation status + callback */ +} rfalNfcPropCallbacks; + +/*! Discovery parameters */ +typedef struct { + rfalComplianceMode compMode; /*!< Compliancy mode to be used */ + uint16_t techs2Find; /*!< Technologies to search for */ + uint16_t techs2Bail; /*!< Bail-out after certain NFC technologies */ + uint16_t totalDuration; /*!< Duration of a whole Poll + Listen cycle NCI 2.1 + Table 46 */ + uint8_t devLimit; /*!< Max number of devices Activity 2.1 + Table 11 */ + rfalBitRate maxBR; /*!< Max Bit rate to be used NCI 2.1 + Table 28 */ + + rfalBitRate nfcfBR; /*!< Bit rate to poll for NFC-F NCI 2.1 Table 27 */ + uint8_t nfcid3[RFAL_NFCDEP_NFCID3_LEN]; /*!< NFCID3 to be used on the + ATR_REQ/ATR_RES */ + uint8_t GB[RFAL_NFCDEP_GB_MAX_LEN]; /*!< General bytes to be used on the + ATR-REQ NCI 2.1 Table 29 */ + uint8_t GBLen; /*!< Length of the General Bytes NCI 2.1 + Table 29 */ + rfalBitRate ap2pBR; /*!< Bit rate to poll for AP2P NCI 2.1 Table 31 */ + bool p2pNfcaPrio; /*!< NFC-A P2P (true) or ISO14443-4/T4T (false) priority */ + rfalNfcPropCallbacks propNfc; /*!< Proprietary Technlogy callbacks */ + + rfalIsoDepFSxI isoDepFS; /*!< ISO-DEP Poller announced maximum frame size + Digital 2.2 Table 60 */ + uint8_t nfcDepLR; /*!< NFC-DEP Poller & Listener maximum frame size + Digital 2.2 Table 90 */ + + rfalLmConfPA lmConfigPA; /*!< Configuration for Passive Listen mode NFC-A */ + rfalLmConfPF lmConfigPF; /*!< Configuration for Passive Listen mode NFC-A */ + + void (*notifyCb)(rfalNfcState st); /*!< Callback to Notify upper layer */ + + bool wakeupEnabled; /*!< Enable Wake-Up mode before polling */ + bool wakeupConfigDefault; /*!< Wake-Up mode default configuration */ + rfalWakeUpConfig wakeupConfig; /*!< Wake-Up mode configuration */ + bool wakeupPollBefore; /*!< Flag to Poll wakeupNPolls times before entering + Wake-up */ + uint16_t wakeupNPolls; /*!< Number of polling cycles before|after entering + Wake-up */ +} rfalNfcDiscoverParam; + +/*! Buffer union, only one interface is used at a time */ +typedef union { /* PRQA S 0750 # MISRA 19.2 - Members of the union will not be + used concurrently, only one interface at a time */ + uint8_t rfBuf[RFAL_FEATURE_NFC_RF_BUF_LEN]; /*!< RF buffer */ + rfalIsoDepApduBufFormat + isoDepBuf; /*!< ISO-DEP buffer format (with header/prologue) */ + rfalNfcDepPduBufFormat + nfcDepBuf; /*!< NFC-DEP buffer format (with header/prologue) */ +} rfalNfcBuffer; + +/*******************************************************************************/ + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief RFAL NFC Worker + * + * It runs the internal state machine and runs the RFAL RF worker. + ***************************************************************************** + */ +void rfalNfcWorker(void); + +/*! + ***************************************************************************** + * \brief RFAL NFC Initialize + * + * It initializes this module and its dependencies + * + * \return RFAL_ERR_WRONG_STATE : Incorrect state for this operation + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcInitialize(void); + +/*! + ***************************************************************************** + * \brief RFAL NFC Discovery + * + * It set the device in Discovery state. + * In discovery it will Poll and/or Listen for the technologies configured, + * and perform Wake-up mode if configured to do so. + * + * The device list passed on disParams must not be empty. + * The number of devices on the list is indicated by the devLimit and shall + * be at >= 1. + * + * \param[in] disParams : discovery configuration parameters + * + * \return RFAL_ERR_WRONG_STATE : Incorrect state for this operation + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcDiscover(const rfalNfcDiscoverParam *disParams); + +/*! + ***************************************************************************** + * \brief RFAL NFC Get State + * + * It returns the current state + * + * \return rfalNfcState : the current state + ***************************************************************************** + */ +rfalNfcState rfalNfcGetState(void); + +/*! + ***************************************************************************** + * \brief RFAL NFC Get Devices Found + * + * It returns the location of the device list and the number of + * devices found. + * + * \param[out] devList : device list location + * \param[out] devCnt : number of devices found + * + * \return RFAL_ERR_WRONG_STATE : Incorrect state for this operation + * Discovery still ongoing + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcGetDevicesFound(rfalNfcDevice **devList, uint8_t *devCnt); + +/*! + ***************************************************************************** + * \brief RFAL NFC Get Active Device + * + * It returns the location of the device current Active device + * + * \param[out] dev : device info location + * + * \return RFAL_ERR_WRONG_STATE : Incorrect state for this operation + * No device activated + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcGetActiveDevice(rfalNfcDevice **dev); + +/*! + ***************************************************************************** + * \brief RFAL NFC Select Device + * + * It selects the device to be activated. + * It shall be called when more than one device has been identified to + * indicate which device shall be actived + * + * \param[in] devIdx : device index to be activated + * + * \return RFAL_ERR_WRONG_STATE : Incorrect state for this operation + * Not in select state + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcSelect(uint8_t devIdx); + +/*! + ***************************************************************************** + * \brief RFAL NFC Start Data Exchange + * + * After a device has been activated, it starts a data exchange. + * It handles automatically which interface/protocol to be used and acts + *accordingly. + * + * In Listen mode the first frame/data shall be sent by the Reader/Initiator + * therefore this method must be called first with txDataLen set to zero + * to retrieve the rxData and rcvLen locations. + * + * + * \param[in] txData : data to be transmitted + * \param[in] txDataLen : size of the data to be transmitted (in bits or + *bytes - see below) \param[out] rxData : location of the received data + *after operation is completed \param[out] rvdLen : location of the length + *of the received data (in bits or bytes - see below) \param[in] fwt : + *FWT to be used in case of RF interface. If ISO-DEP or NFC-DEP interface is + *used, this will be ignored + * + * \warning In order to support a wider range of protocols, when RF interface is + *used the lengths are in number of bits (not bytes). Therefore both input + *txDataLen and output rvdLen refer to bits. If ISO-DEP or NFC-DEP interface is + *used those are expressed in number of bytes. + * + * + * \return RFAL_ERR_WRONG_STATE : Incorrect state for this operation + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcDataExchangeStart(uint8_t *txData, uint16_t txDataLen, + uint8_t **rxData, uint16_t **rvdLen, + uint32_t fwt); + +/*! + ***************************************************************************** + * \brief RFAL NFC Get Data Exchange Status + * + * Gets current Data Exchange status + * + * \return RFAL_ERR_NONE : Transceive done with no error + * \return RFAL_ERR_BUSY : Transceive ongoing + * \return RFAL_ERR_AGAIN : received one chaining block, copy received + *data and continue to call this method to retrieve the remaining blocks \return + *RFAL_ERR_XXXX : Error occurred \return RFAL_ERR_TIMEOUT : No + *response \return RFAL_ERR_FRAMING : Framing error detected \return + *RFAL_ERR_PAR : Parity error detected \return RFAL_ERR_CRC : + *CRC error detected \return RFAL_ERR_LINK_LOSS : Link Loss - External Field + *is Off \return RFAL_ERR_RF_COLLISION : Collision detected \return RFAL_ERR_IO + *: Internal error + ***************************************************************************** + */ +ReturnCode rfalNfcDataExchangeGetStatus(void); + +/*! + ***************************************************************************** + * \brief RFAL NFC Deactivate + * + * It triggers the deactivation procedure to terminate communications with + * remote device. + * In case the deactivation type is RFAL_NFC_DEACTIVATE_SLEEP the field is + * kept On and device selection shall follow. Otherwise the field will + * be turned Off. + * + * \warning In case the deactivation type is RFAL_NFC_DEACTIVATE_IDLE the + * deactivation procedure is executed immediately and in a blocking manner + * + * \param[in] deactType : Type of deactivation to be performed + * + * \return RFAL_ERR_WRONG_STATE : Incorrect state for this operation + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcDeactivate(rfalNfcDeactivateType deactType); + +#endif /* RFAL_NFC_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_nfcDep.h b/core/embed/io/nfc/rfal/include/rfal_nfcDep.h new file mode 100644 index 0000000000..f92ff41d7f --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_nfcDep.h @@ -0,0 +1,843 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_nfcDep.h + * + * \author Gustavo Patricio + * + * \brief Implementation of NFC-DEP protocol + * + * NFC-DEP is also known as NFCIP - Near Field Communication + * Interface and Protocol + * + * This implementation was based on the following specs: + * - NFC Forum Digital 1.1 + * - ECMA 340 3rd Edition 2013 + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-AL + * \brief RFAL Abstraction Layer + * @{ + * + * \addtogroup NFC-DEP + * \brief RFAL NFC-DEP Module + * @{ + */ + +#ifndef RFAL_NFCDEP_H_ +#define RFAL_NFCDEP_H_ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* If module is disabled remove the need for the user to set lengths */ +#if !RFAL_FEATURE_NFC_DEP +#undef RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN +#undef RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN + +#define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN \ + 1U /*!< NFC-DEP Block/Payload length, set to "none" */ +#define RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN \ + 1U /*!< NFC-DEP PDU length, set to "none" */ +#endif /* !RFAL_FEATURE_NFC_DEP */ + +/* + ****************************************************************************** + * DEFINES + ****************************************************************************** + */ +#define RFAL_NFCDEP_FRAME_SIZE_MAX_LEN \ + 254U /*!< Maximum Frame Size Digital 2.0 Table 90 */ +#define RFAL_NFCDEP_DEPREQ_HEADER_LEN \ + 5U /*!< DEP_REQ header length: CMD_TYPE + CMD_CMD + PBF + DID + NAD */ + +/*! Length NFCIP DEP REQ or RES header (incl LEN) */ +#define RFAL_NFCDEP_DEP_HEADER \ + (RFAL_NFCDEP_LEN_LEN + RFAL_NFCDEP_CMDTYPE_LEN + RFAL_NFCDEP_CMD_LEN + \ + RFAL_NFCDEP_DEP_PFB_LEN) +#define RFAL_NFCDEP_HEADER \ + (RFAL_NFCDEP_CMDTYPE_LEN + RFAL_NFCDEP_CMD_LEN) /*!< NFCIP header length */ +#define RFAL_NFCDEP_SB_LEN \ + 1U /*!< SB length on NFCIP fram for NFC-A */ +#define RFAL_NFCDEP_LEN_LEN \ + 1U /*!< LEN length on NFCIP frame */ +#define RFAL_NFCDEP_CMDTYPE_LEN \ + 1U /*!< Length of the cmd type (REQ | RES) on NFCIP frame */ +#define RFAL_NFCDEP_CMD_LEN \ + 1U /*!< Length of the cmd on NFCIP frame */ +#define RFAL_NFCDEP_DID_LEN \ + 1U /*!< Length of did on NFCIP frame */ +#define RFAL_NFCDEP_DEP_PFB_LEN \ + 1U /*!< Length of the PFB field on NFCIP frame */ + +#define RFAL_NFCDEP_DSL_RLS_LEN_NO_DID \ + (RFAL_NFCDEP_LEN_LEN + RFAL_NFCDEP_CMDTYPE_LEN + \ + RFAL_NFCDEP_CMD_LEN) /*!< Length of DSL_REQ and RLS_REQ with no DID */ +#define RFAL_NFCDEP_DSL_RLS_LEN_DID \ + (RFAL_NFCDEP_DSL_RLS_LEN_NO_DID + \ + RFAL_NFCDEP_DID_LEN) /*!< Length of DSL_REQ and RLS_REQ with DID */ + +#define RFAL_NFCDEP_FS_VAL_MIN \ + 64U /*!< Minimum LR value */ +#define RFAL_NFCDEP_LR_VAL_MASK \ + 0x03U /*!< Bit mask for a LR value */ +#define RFAL_NFCDEP_PP_LR_MASK \ + 0x30U /*!< Bit mask for LR value in PP byte on a ATR REQ/RES */ +#define RFAL_NFCDEP_PP_LR_SHIFT \ + 4U /*!< Position of LR value in PP byte on a ATR REQ/RES */ + +#define RFAL_NFCDEP_DID_MAX \ + 14U /*!< Max DID value Digital 14.6.2.3 */ +#define RFAL_NFCDEP_DID_KEEP \ + 0xFFU /*!< Keep DID value already configured */ +#define RFAL_NFCDEP_DID_NO \ + 0x00U /*!< No DID shall be used */ +#define RFAL_NFCDEP_NAD_NO \ + 0x00U /*!< No NAD shall be used */ + +#define RFAL_NFCDEP_OPER_RTOX_REQ_DIS \ + 0x01U /*!< Operation config: RTOX REQ disable */ +#define RFAL_NFCDEP_OPER_RTOX_REQ_EN \ + 0x00U /*!< Operation config: RTOX REQ enable */ + +#define RFAL_NFCDEP_OPER_ATN_DIS \ + 0x00U /*!< Operation config: ATN disable */ +#define RFAL_NFCDEP_OPER_ATN_EN \ + 0x02U /*!< Operation config: ATN enable */ + +#define RFAL_NFCDEP_OPER_EMPTY_DEP_DIS \ + 0x04U /*!< Operation config: empty DEPs disable */ +#define RFAL_NFCDEP_OPER_EMPTY_DEP_EN \ + 0x00U /*!< Operation config: empty DEPs enable */ + +#define RFAL_NFCDEP_OPER_FULL_MI_DIS \ + 0x00U /*!< Operation config: full chaining DEPs disable */ +#define RFAL_NFCDEP_OPER_FULL_MI_EN \ + 0x08U /*!< Operation config: full chaining DEPs enable */ + +#define RFAL_NFCDEP_BRS_MAINTAIN \ + 0xC0U /*!< Value signalling that BR is to be maintained (no PSL) */ +#define RFAL_NFCDEP_BRS_Dx_MASK \ + 0x07U /*!< Value signalling that BR is to be maintained (no PSL) */ +#define RFAL_NFCDEP_BRS_DSI_POS \ + 3U /*!< Value signalling that BR is to be maintained (no PSL) */ + +#define RFAL_NFCDEP_WT_DELTA \ + (16U - RFAL_NFCDEP_WT_DELTA_ADJUST) /*!< NFC-DEP dWRT (adjusted) Digital 2.0 \ + B.10 */ +#define RFAL_NFCDEP_WT_DELTA_ADJUST \ + 4U /*!< dWRT value adjustment */ + +#define RFAL_NFCDEP_ATR_REQ_NFCID3_POS \ + 2U /*!< NFCID3 offset in ATR_REQ frame */ +#define RFAL_NFCDEP_NFCID3_LEN \ + 10U /*!< NFCID3 Length */ + +#define RFAL_NFCDEP_LEN_MIN \ + 3U /*!< Minimum length byte LEN value */ +#define RFAL_NFCDEP_LEN_MAX \ + 255U /*!< Maximum length byte LEN value */ + +#define RFAL_NFCDEP_ATRRES_HEADER_LEN \ + 2U /*!< ATR RES Header Len: CmdType: 0xD5 + Cod: 0x01 */ +#define RFAL_NFCDEP_ATRRES_MIN_LEN \ + 17U /*!< Minimum length for an ATR RES */ +#define RFAL_NFCDEP_ATRRES_MAX_LEN \ + 64U /*!< Maximum length for an ATR RES Digital 1.0 14.6.1 */ +#define RFAL_NFCDEP_ATRREQ_MIN_LEN \ + 16U /*!< Minimum length for an ATR REQ */ +#define RFAL_NFCDEP_ATRREQ_MAX_LEN \ + RFAL_NFCDEP_ATRRES_MAX_LEN /*!< Maximum length for an ATR REQ \ + Digital 1.0 14.6.1 */ + +#define RFAL_NFCDEP_GB_MAX_LEN \ + (RFAL_NFCDEP_ATRREQ_MAX_LEN - \ + RFAL_NFCDEP_ATRREQ_MIN_LEN) /*!< Maximum length the General Bytes on ATR \ + Digital 1.1 16.6.3 */ + +#define RFAL_NFCDEP_WT_INI_DEFAULT \ + RFAL_NFCDEP_WT_INI_MAX /*!< WT Initiator default value Digital 1.0 14.6.3.8 \ + */ +#define RFAL_NFCDEP_WT_INI_MIN \ + 0U /*!< WT Initiator minimum value Digital 1.0 14.6.3.8 */ +#define RFAL_NFCDEP_WT_INI_MAX \ + 14U /*!< WT Initiator maximum value Digital 1.0 14.6.3.8 A.10 */ +#define RFAL_NFCDEP_RWT_INI_MAX \ + rfalNfcDepWT2RWT(RFAL_NFCDEP_WT_INI_MAX) /*!< RWT Initiator maximum value */ + +#define RFAL_NFCDEP_WT_TRG_MAX_D10 \ + 8U /*!< WT target max Digital 1.0 14.6.3.8 A.10 */ +#define RFAL_NFCDEP_WT_TRG_MAX_D11 \ + 14U /*!< WT target max Digital 1.1 16.6.3.9 A.9 */ +#define RFAL_NFCDEP_WT_TRG_MAX_L13 \ + 10U /*!< WT target max [LLCP] 1.3 6.2.1 */ +#define RFAL_NFCDEP_WT_TRG_MAX \ + RFAL_NFCDEP_WT_TRG_MAX_D11 /*!< WT target max Digital x.x | LLCP x.x */ +#define RFAL_NFCDEP_RWT_TRG_MAX \ + rfalNfcDepWT2RWT(RFAL_NFCDEP_WT_TRG_MAX) /*!< RWT Initiator maximum value */ + +/*! Maximum Frame Waiting Time = ((256 * 16/fc)*2^FWImax) = ((256*16/fc)*2^14) = + * (1048576 / 64)/fc = (100000h*64)/fc */ +#define RFAL_NFCDEP_MAX_FWT ((uint32_t)1U << 20) + +#define RFAL_NFCDEP_WT_MASK \ + 0x0FU /*!< Bit mask for the Wait Time value */ + +#define RFAL_NFCDEP_BR_MASK_106 \ + 0x01U /*!< Enable mask bit rate 106 */ +#define RFAL_NFCDEP_BR_MASK_212 \ + 0x02U /*!< Enable mask bit rate 242 */ +#define RFAL_NFCDEP_BR_MASK_424 \ + 0x04U /*!< Enable mask bit rate 424 */ + +/* + ****************************************************************************** + * GLOBAL MACROS + ****************************************************************************** + */ + +#define rfalNfcDepWT2RWT(wt) \ + ((uint32_t)1U << (((uint32_t)(wt) & RFAL_NFCDEP_WT_MASK) + \ + 12U)) /*!< Converts WT value to RWT (1/fc) */ + +/*! Returns the BRS value from the given bit rate */ +#define rfalNfcDepDx2BRS(br) \ + ((((uint8_t)(br) & RFAL_NFCDEP_BRS_Dx_MASK) << RFAL_NFCDEP_BRS_DSI_POS) | \ + ((uint8_t)(br) & RFAL_NFCDEP_BRS_Dx_MASK)) + +#define rfalNfcDepBRS2DRI(brs) \ + (uint8_t)((uint8_t)(brs) & \ + RFAL_NFCDEP_BRS_Dx_MASK) /*!< Returns the DRI value from the given \ + BRS byte */ +#define rfalNfcDepBRS2DSI(brs) \ + (uint8_t)(((uint8_t)(brs) >> RFAL_NFCDEP_BRS_DSI_POS) & \ + RFAL_NFCDEP_BRS_Dx_MASK) /*!< Returns the DSI value from the given \ + BRS byte */ + +#define rfalNfcDepPP2LR(PPx) \ + (((uint8_t)(PPx) & RFAL_NFCDEP_PP_LR_MASK) >> \ + RFAL_NFCDEP_PP_LR_SHIFT) /*!< Returns the LR value from the given PPx byte \ + */ +#define rfalNfcDepLR2PP(LRx) \ + (((uint8_t)(LRx) << RFAL_NFCDEP_PP_LR_SHIFT) & \ + RFAL_NFCDEP_PP_LR_MASK) /*!< Returns the PP byte with the given LRx value \ + */ + +/*! Returns the Frame size value from the given LRx value */ +#define rfalNfcDepLR2FS(LRx) \ + (uint16_t)(RFAL_MIN((RFAL_NFCDEP_FS_VAL_MIN * ((uint16_t)(LRx) + 1U)), \ + RFAL_NFCDEP_FRAME_SIZE_MAX_LEN)) + +/*! + * Despite DIGITAL 1.0 14.6.2.1 stating that the last two bytes may filled with + * any value, some devices (Samsung Google Nexus) only accept when these are 0 + */ +#define rfalNfcDepSetNFCID(dst, src, len) \ + RFAL_MEMSET((dst), 0x00, RFAL_NFCDEP_NFCID3_LEN); \ + if ((len) > 0U) { \ + RFAL_MEMCPY((dst), (src), (len)); \ + } + +/* + ****************************************************************************** + * GLOBAL ENUMERATIONS + ****************************************************************************** + */ + +/*! Enumeration of NFC-DEP bit rate in ATR Digital 1.0 Table 93 and 94 */ +enum { + RFAL_NFCDEP_Bx_NO_HIGH_BR = 0x00, /*!< Peer supports no high bit rates */ + RFAL_NFCDEP_Bx_08_848 = 0x01, /*!< Peer also supports 848 */ + RFAL_NFCDEP_Bx_16_1695 = 0x02, /*!< Peer also supports 1695 */ + RFAL_NFCDEP_Bx_32_3390 = 0x04, /*!< Peer also supports 3390 */ + RFAL_NFCDEP_Bx_64_6780 = 0x08 /*!< Peer also supports 6780 */ +}; + +/*! Enumeration of NFC-DEP bit rate Dividor in PSL Digital 1.0 Table 100 */ +enum { + RFAL_NFCDEP_Dx_01_106 = RFAL_BR_106, /*!< Divisor D = 1 : bit rate = 106 */ + RFAL_NFCDEP_Dx_02_212 = RFAL_BR_212, /*!< Divisor D = 2 : bit rate = 212 */ + RFAL_NFCDEP_Dx_04_424 = RFAL_BR_424, /*!< Divisor D = 4 : bit rate = 424 */ + RFAL_NFCDEP_Dx_08_848 = RFAL_BR_848, /*!< Divisor D = 8 : bit rate = 848 */ + RFAL_NFCDEP_Dx_16_1695 = + RFAL_BR_1695, /*!< Divisor D = 16 : bit rate = 1695 */ + RFAL_NFCDEP_Dx_32_3390 = + RFAL_BR_3390, /*!< Divisor D = 32 : bit rate = 3390 */ + RFAL_NFCDEP_Dx_64_6780 = RFAL_BR_6780 /*!< Divisor D = 64 : bit rate = 6780 */ +}; + +/*! Enumeration of NFC-DEP Length Reduction (LR) Digital 1.0 Table 91 */ +enum { + RFAL_NFCDEP_LR_64 = 0x00, /*!< Maximum payload size is 64 bytes */ + RFAL_NFCDEP_LR_128 = 0x01, /*!< Maximum payload size is 128 bytes */ + RFAL_NFCDEP_LR_192 = 0x02, /*!< Maximum payload size is 192 bytes */ + RFAL_NFCDEP_LR_254 = 0x03 /*!< Maximum payload size is 254 bytes */ +}; + +/* + ****************************************************************************** + * GLOBAL DATA TYPES + ****************************************************************************** + */ + +/*! NFC-DEP callback to check if upper layer has deactivation pending */ +typedef bool (*rfalNfcDepDeactCallback)(void); + +/*! Enumeration of the nfcip communication modes */ +typedef enum { + RFAL_NFCDEP_COMM_PASSIVE, /*!< Passive communication mode */ + RFAL_NFCDEP_COMM_ACTIVE /*!< Active communication mode */ +} rfalNfcDepCommMode; + +/*! Enumeration of the nfcip roles */ +typedef enum { + RFAL_NFCDEP_ROLE_INITIATOR, /*!< Perform as Initiator */ + RFAL_NFCDEP_ROLE_TARGET /*!< Perform as Target */ +} rfalNfcDepRole; + +/*! Struct that holds all NFCIP configs */ +typedef struct { + rfalNfcDepRole role; /*!< Current NFCIP role */ + rfalNfcDepCommMode commMode; /*!< Current NFCIP communication mode */ + uint8_t oper; /*!< Operation config similar to NCI 1.0 Table 81 */ + + uint8_t did; /*!< Current Device ID (DID) */ + uint8_t nad; /*!< Current Node Addressing (NAD) */ + uint8_t bs; /*!< Bit rate in Sending Direction */ + uint8_t br; /*!< Bit rate in Receiving Direction */ + uint8_t nfcid[RFAL_NFCDEP_NFCID3_LEN]; /*!< Pointer to the NFCID to be used */ + uint8_t nfcidLen; /*!< Length of the given NFCID in nfcid */ + uint8_t + gb[RFAL_NFCDEP_GB_MAX_LEN]; /*!< Pointer General Bytes (GB) to be used */ + uint8_t gbLen; /*!< Length of the given GB in gb */ + uint8_t lr; /*!< Length Reduction (LR) to be used */ + uint8_t to; /*!< Timeout (TO) to be used */ + uint32_t fwt; /*!< Frame Waiting Time (FWT) to be used */ + uint32_t dFwt; /*!< Delta Frame Waiting Time (dFWT) to be used */ +} rfalNfcDepConfigs; + +/*! ATR_REQ command Digital 1.1 16.6.2 */ +typedef struct { + uint8_t CMD1; /*!< Command format 0xD4 */ + uint8_t CMD2; /*!< Command Value */ + uint8_t NFCID3[RFAL_NFCDEP_NFCID3_LEN]; /*!< NFCID3 value */ + uint8_t DID; /*!< DID */ + uint8_t BSi; /*!< Sending Bitrate for Initiator */ + uint8_t BRi; /*!< Receiving Bitrate for Initiator */ + uint8_t PPi; /*!< Optional Parameters presence indicator */ + uint8_t GBi[RFAL_NFCDEP_GB_MAX_LEN]; /*!< General Bytes */ +} rfalNfcDepAtrReq; + +/*! ATR_RES response Digital 1.1 16.6.3 */ +typedef struct { + uint8_t CMD1; /*!< Response Byte 0xD5 */ + uint8_t CMD2; /*!< Command Value */ + uint8_t NFCID3[RFAL_NFCDEP_NFCID3_LEN]; /*!< NFCID3 value */ + uint8_t DID; /*!< DID */ + uint8_t BSt; /*!< Sending Bitrate for Initiator */ + uint8_t BRt; /*!< Receiving Bitrate for Initiator */ + uint8_t TO; /*!< Timeout */ + uint8_t PPt; /*!< Optional Parameters presence indicator */ + uint8_t GBt[RFAL_NFCDEP_GB_MAX_LEN]; /*!< General Bytes */ +} rfalNfcDepAtrRes; + +/*! Structure of transmit I-PDU Buffer format from caller */ +typedef struct { + uint8_t prologue[RFAL_NFCDEP_DEPREQ_HEADER_LEN]; /*!< Prologue space for + NFC-DEP header*/ + uint8_t inf[RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN]; /*!< INF | Data area of the + buffer */ +} rfalNfcDepBufFormat; + +/*! Structure of APDU Buffer format from caller */ +typedef struct { + uint8_t prologue[RFAL_NFCDEP_DEPREQ_HEADER_LEN]; /*!< Prologue/SoD buffer */ + uint8_t + pdu[RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN]; /*!< Complete PDU/Payload buffer */ +} rfalNfcDepPduBufFormat; + +/*! Activation info as Initiator and Target */ +typedef union { /* PRQA S 0750 # MISRA 19.2 - Both members of the union will + not be used concurrently , device is only initiatior or + target a time. No problem can occur. */ + struct { + rfalNfcDepAtrRes ATR_RES; /*!< ATR RES (Initiator mode) */ + uint8_t ATR_RESLen; /*!< ATR RES length (Initiator mode) */ + } Target; /*!< Target */ + struct { + rfalNfcDepAtrReq ATR_REQ; /*!< ATR REQ (Target mode) */ + uint8_t ATR_REQLen; /*!< ATR REQ length (Target mode) */ + } Initiator; /*!< Initiator */ +} rfalNfcDepActivation; + +/*! NFC-DEP device Info */ +typedef struct { + uint8_t GBLen; /*!< General Bytes length */ + uint8_t WT; /*!< WT to be used (ignored in Listen Mode) */ + uint32_t FWT; /*!< FWT to be used (1/fc)(ignored Listen Mode) */ + uint32_t dFWT; /*!< Delta FWT to be used (1/fc) */ + uint8_t LR; /*!< Length Reduction coding the max payload */ + uint16_t FS; /*!< Frame Size */ + rfalBitRate DSI; /*!< Bit Rate coding from Initiator to Target */ + rfalBitRate DRI; /*!< Bit Rate coding from Target to Initiator */ + uint8_t DID; /*!< Device ID (RFAL_NFCDEP_DID_NO if no DID) */ + uint8_t NAD; /*!< Node ADdress (RFAL_NFCDEP_NAD_NO if no NAD)*/ +} rfalNfcDepInfo; + +/*! NFC-DEP Device structure */ +typedef struct { + rfalNfcDepActivation activation; /*!< Activation Info */ + rfalNfcDepInfo info; /*!< NFC-DEP device Info */ +} rfalNfcDepDevice; + +/*! NFCIP Protocol structure for P2P Target + * + * operParam : derives from NFC-Forum NCI NFC-DEP Operation Parameter + * NCI 1.1 Table 86: NFC-DEP Operation Parameter + * and it's a bit mask composed as: + * [ 0000b + * | Chain SHALL use max. Transport Data Byte[1b] + * | I-PDU with no Transport Data SHALL NOT be sent [1b] + * | NFC-DEP Target SHALL NOT send RTOX request [1b] + * ] + * + */ +typedef struct { + rfalNfcDepCommMode commMode; /*!< Initiator in Active P2P or Passive P2P*/ + uint8_t operParam; /*!< NFC-DEP Operation Parameter */ + uint8_t *nfcid; /*!< Initiator's NFCID2 or NFCID3 */ + uint8_t nfcidLen; /*!< Initiator's NFCID length (NFCID2/3) */ + uint8_t DID; /*!< Initiator's Device ID DID */ + uint8_t NAD; /*!< Initiator's Node ID NAD */ + uint8_t BS; /*!< Initiator's Bit Rates supported in Tx */ + uint8_t BR; /*!< Initiator's Bit Rates supported in Rx */ + uint8_t LR; /*!< Initiator's Length reduction */ + uint8_t *GB; /*!< Initiator's General Bytes (Gi) */ + uint8_t GBLen; /*!< Initiator's General Bytes length */ +} rfalNfcDepAtrParam; + +/*! Structure of parameters to be passed in for nfcDepListenStartActivation */ +typedef struct { + rfalNfcDepBufFormat *rxBuf; /*!< Receive Buffer struct reference */ + uint16_t *rxLen; /*!< Receive INF data length in bytes */ + bool *isRxChaining; /*!< Received data is not complete */ + rfalNfcDepDevice *nfcDepDev; /*!< NFC-DEP device info */ +} rfalNfcDepListenActvParam; + +/*! NFCIP Protocol structure for P2P Target + * + * operParam : derives from NFC-Forum NCI NFC-DEP Operation Parameter + * NCI 1.1 Table 86: NFC-DEP Operation Parameter + * and it's a bit mask composed as: + * [ 0000b + * | Chain SHALL use max. Transport Data Byte[1b] + * | I-PDU with no Transport Data SHALL NOT be sent [1b] + * | NFC-DEP Target SHALL NOT send RTOX request [1b] + * ] + * + */ +typedef struct { + rfalNfcDepCommMode commMode; /*!< Target in Active P2P or Passive P2P */ + uint8_t nfcid3[RFAL_NFCDEP_NFCID3_LEN]; /*!< Target's NFCID3 */ + uint8_t bst; /*!< Target's Bit Rates supported in Tx */ + uint8_t brt; /*!< Target's Bit Rates supported in Rx */ + uint8_t to; /*!< Target's timeout (TO) value */ + uint8_t ppt; /*!< Target's Presence optional Params(PPt)*/ + uint8_t GBt[RFAL_NFCDEP_GB_MAX_LEN]; /*!< Target's General Bytes (Gt) */ + uint8_t GBtLen; /*!< Target's General Bytes length */ + uint8_t operParam; /*!< NFC-DEP Operation Parameter */ +} rfalNfcDepTargetParam; + +/*! Structure of parameters to be passed in for nfcDepStartIpduTransceive */ +typedef struct { + rfalNfcDepBufFormat *txBuf; /*!< Transmit Buffer struct reference */ + uint16_t txBufLen; /*!< Transmit Buffer INF field length in bytes */ + bool isTxChaining; /*!< Transmit data is not complete */ + rfalNfcDepBufFormat *rxBuf; /*!< Receive Buffer struct reference */ + uint16_t *rxLen; /*!< Receive INF data length */ + bool *isRxChaining; /*!< Received data is not complete */ + uint32_t FWT; /*!< FWT to be used (ignored in Listen Mode) */ + uint32_t dFWT; /*!< Delta FWT to be used */ + uint16_t FSx; /*!< Other device Frame Size (FSD or FSC) */ + uint8_t DID; /*!< Device ID (RFAL_ISODEP_NO_DID if no DID) */ +} rfalNfcDepTxRxParam; + +/*! Structure of parameters used on NFC DEP PDU Transceive */ +typedef struct { + rfalNfcDepPduBufFormat *txBuf; /*!< Transmit Buffer struct reference */ + uint16_t txBufLen; /*!< Transmit Buffer INF field length in Bytes*/ + rfalNfcDepPduBufFormat + *rxBuf; /*!< Receive Buffer struct reference in Bytes */ + uint16_t *rxLen; /*!< Received INF data length in Bytes */ + rfalNfcDepBufFormat *tmpBuf; /*!< Temp buffer for single PDUs (internal) */ + uint32_t FWT; /*!< FWT to be used (ignored in Listen Mode) */ + uint32_t dFWT; /*!< Delta FWT to be used */ + uint16_t FSx; /*!< Other device Frame Size (FSD or FSC) */ + uint8_t DID; /*!< Device ID (RFAL_ISODEP_NO_DID if no DID) */ +} rfalNfcDepPduTxRxParam; + +/* + * ***************************************************************************** + * GLOBAL VARIABLE DECLARATIONS + ****************************************************************************** + */ + +/* + ****************************************************************************** + * GLOBAL FUNCTION PROTOTYPES + ****************************************************************************** + */ + +/*! + ****************************************************************************** + * \brief NFCIP Initialize + * + * This method resets all NFC-DEP inner states, counters and context and sets + * default values + * + ****************************************************************************** + */ +void rfalNfcDepInitialize(void); + +/*! + ****************************************************************************** + * \brief Set deactivating callback + * + * Sets the deactivating callback so that nfcip layer can check if upper layer + * has a deactivation pending, and not perform error recovery upon specific + * errors + * + * \param[in] pFunc : method pointer to deactivation flag check + ****************************************************************************** + */ +void rfalNfcDepSetDeactivatingCallback(rfalNfcDepDeactCallback pFunc); + +/*! + ****************************************************************************** + * \brief Calculate Response Waiting Time + * + * Calculates the Response Waiting Time (RWT) from the given Waiting Time (WT) + * + * \param[in] wt : the WT value to calculate RWT + * + * \return RWT value in 1/fc + ****************************************************************************** + */ +uint32_t rfalNfcDepCalculateRWT(uint8_t wt); + +/*! + ****************************************************************************** + * \brief NFC-DEP Initiator ATR (Attribute Request) + * + * This method configures the NFC-DEP layer with given parameters and then + * sends an ATR to the Target with and checks for a valid response response + * + * \param[in] param : parameters to initialize and compose the ATR + * \param[out] atrRes : location to store the ATR_RES + * \param[out] atrResLen : length of the ATR_RES received + * + * \return RFAL_ERR_NONE : No error + * \return RFAL_ERR_TIMEOUT : Timeout occurred + * \return RFAL_ERR_PROTO : Protocol error occurred + ****************************************************************************** + */ +ReturnCode rfalNfcDepATR(const rfalNfcDepAtrParam *param, + rfalNfcDepAtrRes *atrRes, uint8_t *atrResLen); + +/*! + ****************************************************************************** + * \brief NFC-DEP Initiator PSL (Parameter Selection) + * + * This method sends a PSL to the Target with the given parameters and checks + * for a valid response response + * + * The parameters must be coded according to Digital 1.1 16.7.1 + * + * \param[in] BRS : the selected Bit Rates for Initiator and Target + * \param[in] FSL : the maximum length of Commands and Responses + * + * \return RFAL_ERR_NONE : No error + * \return RFAL_ERR_TIMEOUT : Timeout occurred + * \return RFAL_ERR_PROTO : Protocol error occurred + ****************************************************************************** + */ +ReturnCode rfalNfcDepPSL(uint8_t BRS, uint8_t FSL); + +/*! + ****************************************************************************** + * \brief NFC-DEP Initiator DSL (Deselect) + * + * This method checks if the NFCIP module is configured as initiator and if + * so sends a DSL REQ, waits the target's response and checks it + * + * In case of performing as target no action is taken + * + * \return RFAL_ERR_NONE : No error + * \return RFAL_ERR_TIMEOUT : Timeout occurred + * \return RFAL_ERR_MAX_RERUNS : Timeout occurred + * \return RFAL_ERR_PROTO : Protocol error occurred + ****************************************************************************** + */ +ReturnCode rfalNfcDepDSL(void); + +/*! + ****************************************************************************** + * \brief NFC-DEP Initiator RLS (Release) + * + * This method checks if the NFCIP module is configured as initiator and if + * so sends a RLS REQ, waits target's response and checks it + * + * In case of performing as target no action is taken + * + * \return RFAL_ERR_NONE : No error + * \return RFAL_ERR_TIMEOUT : Timeout occurred + * \return RFAL_ERR_MAX_RERUNS : Timeout occurred + * \return RFAL_ERR_PROTO : Protocol error occurred + ****************************************************************************** + */ +ReturnCode rfalNfcDepRLS(void); + +/*! + ***************************************************************************** + * \brief NFC-DEP Initiator Handle Activation + * + * This performs a Activation into NFC-DEP layer with the given + * parameters. It sends ATR_REQ and if the higher bit rates are supported by + * both devices it additionally sends PSL + * Once Activated all details of the device are provided on nfcDepDev + * + * \param[in] param : required parameters to initialize and send ATR_REQ + * \param[in] desiredBR : Desired bit rate supported by the Poller + * \param[out] nfcDepDev : NFC-DEP information of the activated Listen device + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, activation successful + ***************************************************************************** + */ +ReturnCode rfalNfcDepInitiatorHandleActivation(rfalNfcDepAtrParam *param, + rfalBitRate desiredBR, + rfalNfcDepDevice *nfcDepDev); + +/*! + ****************************************************************************** + * \brief Check if buffer contains valid ATR_REQ + * + * This method checks if the given ATR_REQ is valid + * + * + * \param[in] buf : buffer holding Initiator's received request + * \param[in] bufLen : size of the msg contained on the buf in Bytes + * \param[out] nfcid3 : pointer to where the NFCID3 may be outputed, + * nfcid3 has NFCF_SENSF_NFCID3_LEN as length + * Pass NULL if output parameter not desired + * + * \return true : Valid ATR_REQ received, the ATR_RES has been computed in + *txBuf \return false : Invalid protocol request + * + ****************************************************************************** + */ +bool rfalNfcDepIsAtrReq(const uint8_t *buf, uint16_t bufLen, uint8_t *nfcid3); + +/*! + ****************************************************************************** + * \brief Check is Target has received ATR + * + * This method checks if the NFCIP module is configured as target and if a + * ATR REQ has been received ( whether is in activation or in data exchange) + * + * \return true : a ATR has already been received + * \return false : no ATR has been received + ****************************************************************************** + */ +bool rfalNfcDepTargetRcvdATR(void); + +/*! + ***************************************************************************** + * \brief NFCDEP Start Listen Activation Handling + * + * Start Activation Handling and setup to receive first frame which may + * contain complete or partial DEP-REQ after activation is completed + * + * Pass in ATR_REQ for NFC-DEP to handle ATR_RES. The Activation Handling + * handles ATR_RES and PSL_RES if a PSL_REQ is received + * + * Activation is completed if PSL_RES is sent or if first I-PDU is received + * + * \ref rfalNfcDepListenGetActivationStatus() provide status of the + * ongoing activation + * + * \warning nfcDepGetTransceiveStatus() shall be called right after activation + * is completed (i.e. rfalNfcDepListenGetActivationStatus() return + *RFAL_ERR_NONE) to check for first received frame. + * + * \param[in] param : Target parameters to be used + * \param[in] atrReq : reference to buffer containing ATR_REQ + * \param[in] atrReqLength: Length of ATR_REQ + * \param[out] rxParam : references to buffer, length and chaining + *indication for first complete LLCP to be received + * + * \return RFAL_ERR_NONE : ATR_REQ is valid and activation ongoing + * \return RFAL_ERR_PARAM : ATR_REQ or other params are invalid + * \return RFAL_ERR_LINK_LOSS : Remote Field is turned off + ***************************************************************************** + */ +ReturnCode rfalNfcDepListenStartActivation(const rfalNfcDepTargetParam *param, + const uint8_t *atrReq, + uint16_t atrReqLength, + rfalNfcDepListenActvParam rxParam); + +/*! + ***************************************************************************** + * \brief Get the current NFC-DEP Activation Status + * + * \return RFAL_ERR_NONE : Activation has completed successfully + * \return RFAL_ERR_BUSY : Activation is ongoing + * \return RFAL_ERR_LINK_LOSS : Remote Field was turned off + ***************************************************************************** + */ +ReturnCode rfalNfcDepListenGetActivationStatus(void); + +/*! + ***************************************************************************** + * \brief Start Transceive + * + * Transceives a complete or partial DEP block + * + * The txBuf contains complete or partial of DEP to be transmitted. + * The Prologue field of the I-PDU is handled internally + * + * If the buffer contains partial LLCP and is not the last block, then + * isTxChaining must be set to true + * + * \param[in] param: reference parameters to be used for the Transceive + * + * \return RFAL_ERR_PARAM : Bad request + * \return RFAL_ERR_WRONG_STATE : The module is not in a proper state + * \return RFAL_ERR_NONE : The Transceive request has been started + ***************************************************************************** + */ +ReturnCode rfalNfcDepStartTransceive(const rfalNfcDepTxRxParam *param); + +/*! + ***************************************************************************** + * \brief Return the Transceive status + * + * Returns the status of the NFC-DEP Transceive + * + * \warning When the other device is performing chaining once a chained + * block is received the error RFAL_ERR_AGAIN is sent. At this point + * caller must handle the received data immediately. + * When RFAL_ERR_AGAIN is returned an ACK has already been sent to + * the other device and the next block might be incoming. + * If rfalWorker() is called frequently it will place the next + * block on the given buffer + * + * \return RFAL_ERR_NONE : Transceive has been completed successfully + * \return RFAL_ERR_BUSY : Transceive is ongoing + * \return RFAL_ERR_PROTO : Protocol error occurred + * \return RFAL_ERR_TIMEOUT : Timeout error occurred + * \return RFAL_ERR_SLEEP_REQ : Deselect has been received and responded + * \return RFAL_ERR_NOMEM : The received I-PDU does not fit into the + * receive buffer + * \return RFAL_ERR_LINK_LOSS : Communication is lost because Reader/Writer + * has turned off its field + * \return RFAL_ERR_AGAIN : received one chaining block, continue to call + * this method to retrieve the remaining blocks + ***************************************************************************** + */ +ReturnCode rfalNfcDepGetTransceiveStatus(void); + +/*! + ***************************************************************************** + * \brief Start PDU Transceive + * + * This method triggers a NFC-DEP Transceive containing a complete PDU + * It transmits the given message and handles all protocol retransmitions, + * error handling and control messages + * + * The txBuf contains a complete PDU to be transmitted + * The Prologue field will be manipulated by the Transceive + * + * \warning the txBuf will be modified during the transmission + * \warning the maximum RF frame which can be received is limited by + *param.tmpBuf + * + * \param[in] param: reference parameters to be used for the Transceive + * + * \return RFAL_ERR_PARAM : Bad request + * \return RFAL_ERR_WRONG_STATE : The module is not in a proper state + * \return RFAL_ERR_NONE : The Transceive request has been started + ***************************************************************************** + */ +ReturnCode rfalNfcDepStartPduTransceive(rfalNfcDepPduTxRxParam param); + +/*! + ***************************************************************************** + * \brief Return the PDU Transceive status + * + * Returns the status of the NFC-DEP PDU Transceive + * + * + * \return RFAL_ERR_NONE : Transceive has been completed successfully + * \return RFAL_ERR_BUSY : Transceive is ongoing + * \return RFAL_ERR_PROTO : Protocol error occurred + * \return RFAL_ERR_TIMEOUT : Timeout error occurred + * \return RFAL_ERR_SLEEP_REQ : Deselect has been received and responded + * \return RFAL_ERR_NOMEM : The received I-PDU does not fit into the + * receive buffer + * \return RFAL_ERR_LINK_LOSS : Communication is lost because Reader/Writer + * has turned off its field + ***************************************************************************** + */ +ReturnCode rfalNfcDepGetPduTransceiveStatus(void); + +#endif /* RFAL_NFCDEP_H_ */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_nfca.h b/core/embed/io/nfc/rfal/include/rfal_nfca.h new file mode 100644 index 0000000000..10d56c8c5e --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_nfca.h @@ -0,0 +1,591 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_nfca.h + * + * \author Gustavo Patricio + * + * \brief Provides several NFC-A convenience methods and definitions + * + * It provides a Poller (ISO14443A PCD) interface as well as + * some NFC-A Listener (ISO14443A PICC) helpers. + * + * The definitions and helper methods provided by this module are only + * up to ISO14443-3 layer + * + * + * An usage example is provided here: \ref exampleRfalNfca.c + * \example exampleRfalNfca.c + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-AL + * \brief RFAL Abstraction Layer + * @{ + * + * \addtogroup NFC-A + * \brief RFAL NFC-A Module + * @{ + * + */ + +#ifndef RFAL_NFCA_H +#define RFAL_NFCA_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_t1t.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_NFCA_CASCADE_1_UID_LEN \ + 4U /*!< UID length of cascade level 1 only tag */ +#define RFAL_NFCA_CASCADE_2_UID_LEN \ + 7U /*!< UID length of cascade level 2 only tag */ +#define RFAL_NFCA_CASCADE_3_UID_LEN \ + 10U /*!< UID length of cascade level 3 only tag */ + +#define RFAL_NFCA_SENS_RES_PLATFORM_MASK \ + 0x0FU /*!< SENS_RES (ATQA) platform configuration mask Digital 1.1 Table 10 \ + */ +#define RFAL_NFCA_SENS_RES_PLATFORM_T1T \ + 0x0CU /*!< SENS_RES (ATQA) T1T platform configuration Digital 1.1 Table 10 \ + */ + +#define RFAL_NFCA_SEL_RES_CONF_MASK \ + 0x60U /*!< SEL_RES (SAK) platform configuration mask Digital 1.1 Table 19 \ + */ +#define RFAL_NFCA_SEL_RES_CONF_T2T \ + 0x00U /*!< SEL_RES (SAK) T2T configuration Digital 1.1 Table 19 */ +#define RFAL_NFCA_SEL_RES_CONF_T4T \ + 0x20U /*!< SEL_RES (SAK) T4T configuration Digital 1.1 Table 19 */ +#define RFAL_NFCA_SEL_RES_CONF_NFCDEP \ + 0x40U /*!< SEL_RES (SAK) NFC-DEP configuration Digital 1.1 Table 19 */ +#define RFAL_NFCA_SEL_RES_CONF_T4T_NFCDEP \ + 0x60U /*!< SEL_RES (SAK) T4T and NFC-DEP configuration Digital 1.1 Table 19 \ + */ + +/*! NFC-A minimum FDT(listen) = ((n * 128 + (84)) / fc) with n_min = 9 + * Digital 1.1 6.10.1 = (1236)/fc Relax with 3etu: (3*128)/fc as with multiple + * NFC-A cards, response may take longer (JCOP cards) = (1236 + 384)/fc = 1620 / + * fc */ +#define RFAL_NFCA_FDTMIN 1620U +/* + ****************************************************************************** + * GLOBAL MACROS + ****************************************************************************** + */ + +/*! Checks if device is a T1T given its SENS_RES */ +#define rfalNfcaIsSensResT1T(sensRes) \ + ((((rfalNfcaSensRes *)(sensRes))->platformInfo & \ + RFAL_NFCA_SENS_RES_PLATFORM_MASK) == RFAL_NFCA_SENS_RES_PLATFORM_T1T) + +/*! Checks if device is a T2T given its SENS_RES */ +#define rfalNfcaIsSelResT2T(selRes) \ + ((((rfalNfcaSelRes *)(selRes))->sak & RFAL_NFCA_SEL_RES_CONF_MASK) == \ + RFAL_NFCA_SEL_RES_CONF_T2T) + +/*! Checks if device is a T4T given its SENS_RES */ +#define rfalNfcaIsSelResT4T(selRes) \ + ((((rfalNfcaSelRes *)(selRes))->sak & RFAL_NFCA_SEL_RES_CONF_MASK) == \ + RFAL_NFCA_SEL_RES_CONF_T4T) + +/*! Checks if device supports NFC-DEP protocol given its SENS_RES */ +#define rfalNfcaIsSelResNFCDEP(selRes) \ + ((((rfalNfcaSelRes *)(selRes))->sak & RFAL_NFCA_SEL_RES_CONF_MASK) == \ + RFAL_NFCA_SEL_RES_CONF_NFCDEP) + +/*! Checks if device supports ISO-DEP and NFC-DEP protocol given its SENS_RES */ +#define rfalNfcaIsSelResT4TNFCDEP(selRes) \ + ((((rfalNfcaSelRes *)(selRes))->sak & RFAL_NFCA_SEL_RES_CONF_MASK) == \ + RFAL_NFCA_SEL_RES_CONF_T4T_NFCDEP) + +/*! Checks if a NFC-A listener device supports multiple protocols (ISO-DEP and + * NFC-DEP) */ +#define rfalNfcaLisDevIsMultiProto(lisDev) \ + (((rfalNfcaListenDevice *)(lisDev))->type == RFAL_NFCA_T4T_NFCDEP) + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! NFC-A Listen device types */ +typedef enum { + RFAL_NFCA_T1T = 0x01, /* Device configured for T1T Digital 1.1 Table 9 */ + RFAL_NFCA_T2T = 0x00, /* Device configured for T2T Digital 1.1 Table 19 */ + RFAL_NFCA_T4T = 0x20, /* Device configured for T4T Digital 1.1 Table 19 */ + RFAL_NFCA_NFCDEP = + 0x40, /* Device configured for NFC-DEP Digital 1.1 Table 19 */ + RFAL_NFCA_T4T_NFCDEP = + 0x60 /* Device configured for NFC-DEP and T4T Digital 1.1 Table 19 */ +} rfalNfcaListenDeviceType; + +/*! SENS_RES (ATQA) format Digital 1.1 6.6.3 & Table 7 */ +typedef struct { + uint8_t anticollisionInfo; /*!< SENS_RES Anticollision Information */ + uint8_t platformInfo; /*!< SENS_RES Platform Information */ +} rfalNfcaSensRes; + +/*! SDD_REQ (Anticollision) format Digital 1.1 6.7.1 & Table 11 */ +typedef struct { + uint8_t selCmd; /*!< SDD_REQ SEL_CMD: cascade Level */ + uint8_t selPar; /*!< SDD_REQ SEL_PAR: Byte Count[4b] | Bit Count[4b] (NVB: + Number of Valid Bits)*/ +} rfalNfcaSddReq; + +/*! SDD_RES (UID CLn) format Digital 1.1 6.7.2 & Table 15 */ +typedef struct { + uint8_t + nfcid1[RFAL_NFCA_CASCADE_1_UID_LEN]; /*!< NFCID1 cascade level NFCID */ + uint8_t bcc; /*!< BCC Exclusive-OR over first 4 bytes of SDD_RES */ +} rfalNfcaSddRes; + +/*! SEL_REQ (Select) format Digital 1.1 6.8.1 & Table 17 */ +typedef struct { + uint8_t selCmd; /*!< SDD_REQ SEL_CMD: cascade Level */ + uint8_t selPar; /*!< SDD_REQ SEL_PAR: Byte Count[4b] | Bit Count[4b] (NVB: + Number of Valid Bits)*/ + uint8_t nfcid1[RFAL_NFCA_CASCADE_1_UID_LEN]; /*!< NFCID1 data */ + uint8_t bcc; /*!< Checksum calculated as exclusive-OR over the 4 bytes of + NFCID1 CLn */ +} rfalNfcaSelReq; + +/*! SEL_RES (SAK) format Digital 1.1 6.8.2 & Table 19 */ +typedef struct { + uint8_t sak; /*!< Select Acknowledge */ +} rfalNfcaSelRes; + +/*! NFC-A listener device (PICC) struct */ +typedef struct { + rfalNfcaListenDeviceType type; /*!< NFC-A Listen device type */ + rfalNfcaSensRes sensRes; /*!< SENS_RES (ATQA) */ + rfalNfcaSelRes selRes; /*!< SEL_RES (SAK) */ + uint8_t nfcId1Len; /*!< NFCID1 Length */ + uint8_t nfcId1[RFAL_NFCA_CASCADE_3_UID_LEN]; /*!< NFCID1 (UID) */ +#ifdef RFAL_FEATURE_T1T + rfalT1TRidRes ridRes; /*!< RID_RES */ +#endif /* RFAL_FEATURE_T1T */ + bool isSleep; /*!< Device sleeping flag */ +} rfalNfcaListenDevice; + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief Initialize NFC-A Poller mode + * + * This methods configures RFAL RF layer to perform as a + * NFC-A Poller/RW (ISO14443A PCD) including all default timings and bit rate + * to 106 kbps + + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerInitialize(void); + +/*! + ***************************************************************************** + * \brief NFC-A Poller Check Presence + * + * This method checks if a NFC-A Listen device (PICC) is present on the field + * by sending an ALL_REQ (WUPA) or SENS_REQ (REQA) + * + * \param[in] cmd : Indicate if to send an ALL_REQ or a SENS_REQ + * \param[out] sensRes : If received, the SENS_RES + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_RF_COLLISION : Collision detected one or more device in the + *field \return RFAL_ERR_PAR : Parity error detected, one or more + *device in the field \return RFAL_ERR_CRC : CRC error detected, one or + *more device in the field \return RFAL_ERR_FRAMING : Framing error + *detected, one or more device in the field \return RFAL_ERR_PROTO : + *Protocol error detected, one or more device in the field \return + *RFAL_ERR_TIMEOUT : Timeout error, no listener device detected \return + *RFAL_ERR_NONE : No error, one or more device in the field + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerCheckPresence(rfal14443AShortFrameCmd cmd, + rfalNfcaSensRes *sensRes); + +/*! + ***************************************************************************** + * \brief NFC-A Poller Select + * + * This method selects a NFC-A Listener device (PICC) + * + * \param[in] nfcid1 : Listener device NFCID1 to be selected + * \param[in] nfcidLen : Length of the NFCID1 to be selected + * \param[out] selRes : pointer to place the SEL_RES + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, SEL_RES received + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerSelect(const uint8_t *nfcid1, uint8_t nfcidLen, + rfalNfcaSelRes *selRes); + +/*! + ***************************************************************************** + * \brief NFC-A Poller Start Select + * + * This method starts the selection of a NFC-A Listener device (PICC) + * + * \param[in] nfcid1 : Listener device NFCID1 to be selected + * \param[in] nfcidLen : Length of the NFCID1 to be selected + * \param[out] selRes : pointer to place the SEL_RES + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, SEL_RES received + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerStartSelect(const uint8_t *nfcid1, uint8_t nfcidLen, + rfalNfcaSelRes *selRes); + +/*! + ***************************************************************************** + * \brief NFC-A Poller Get Select Status + * + * This method gets the selection status + * + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, SEL_RES received + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerGetSelectStatus(void); + +/*! + ***************************************************************************** + * \brief NFC-A Poller Sleep + * + * This method sends a SLP_REQ (HLTA) + * No response is expected afterwards Digital 1.1 6.9.2.1 + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerSleep(void); + +/*! + ***************************************************************************** + * \brief NFC-A Poller Start Sleep + * + * This method sends a SLP_REQ (HLTA) + * No response is expected afterwards Digital 1.1 6.9.2.1 + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerStartSleep(void); + +/*! + ***************************************************************************** + * \brief NFC-A Poller Get Sleep Status + * + * Returns the Sleep status + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerGetSleepStatus(void); + +/*! + ***************************************************************************** + * \brief NFC-A Technology Detection + * + * This method performs NFC-A Technology Detection as defined in the spec + * given in the compliance mode + * + * \param[in] compMode : compliance mode to be performed + * \param[out] sensRes : location to store the SENS_RES, if received + * + * When compMode is set to ISO compliance a SLP_REQ (HLTA) is not sent + * after detection. When set to EMV a ALL_REQ (WUPA) is sent instead of + * a SENS_REQ (REQA) + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error, one or more device in the field + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerTechnologyDetection(rfalComplianceMode compMode, + rfalNfcaSensRes *sensRes); + +/*! + ***************************************************************************** + * \brief NFC-A Start Technology Detection + * + * This method starts NFC-A Technology Detection as defined in the spec + * given in the compliance mode + * + * \param[in] compMode : compliance mode to be performed + * \param[out] sensRes : location to store the SENS_RES, if received + * + * When compMode is set to ISO compliance a SLP_REQ (HLTA) is not sent + * after detection. When set to EMV a ALL_REQ (WUPA) is sent instead of + * a SENS_REQ (REQA) + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error, one or more device in the field + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerStartTechnologyDetection(rfalComplianceMode compMode, + rfalNfcaSensRes *sensRes); + +/*! + ***************************************************************************** + * \brief NFC-A Get Technology Detection Status + * + * Returns the Technology Detection status + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error, one or more device in the field + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerGetTechnologyDetectionStatus(void); + +/*! + ***************************************************************************** + * \brief NFC-A Poller Collision Resolution + * + * Collision resolution for one NFC-A Listener device/card (PICC) as + * defined in Activity 2.1 9.3.4 + * + * This method executes anti collision loop and select the device with higher + *NFCID1 + * + * When devLimit = 0 it is configured to perform collision detection only. Once + *a collision is detected the collision resolution is aborted immidiatly. If + *only one device is found with no collisions, it will properly resolved. + * + * \param[in] devLimit : device limit value (CON_DEVICES_LIMIT) + * \param[out] collPending : pointer to collision pending flag (INT_COLL_PEND) + * \param[out] selRes : location to store the last Select Response from + *listener device (PICC) \param[out] nfcId1 : location to store the NFCID1 + *(UID), ensure RFAL_NFCA_CASCADE_3_UID_LEN \param[out] nfcId1Len : pointer to + *length of NFCID1 (UID) + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_PROTO : Card length invalid + * \return RFAL_ERR_IGNORE : conDevLimit is 0 and there is a collision + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerSingleCollisionResolution(uint8_t devLimit, + bool *collPending, + rfalNfcaSelRes *selRes, + uint8_t *nfcId1, + uint8_t *nfcId1Len); + +/*! + ***************************************************************************** + * \brief NFC-A Poller Full Collision Resolution + * + * Performs a full Collision resolution as defined in Activity 2.1 9.3.4 + * + * \param[in] compMode : compliance mode to be performed + * \param[in] devLimit : device limit value, and size nfcaDevList + * \param[out] nfcaDevList : NFC-A listener device info + * \param[out] devCnt : Devices found counter + * + * When compMode is set to ISO compliance it assumes that the device is + * not sleeping and therefore no ALL_REQ (WUPA) is sent at the beginning. + * When compMode is set to NFC compliance an additional ALL_REQ (WUPA) is sent + * at the beginning. + * + * + * When devLimit = 0 it is configured to perform collision detection only. Once + *a collision is detected the collision resolution is aborted immidiatly. If + *only one device is found with no collisions, it will properly resolved. + * + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerFullCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, + rfalNfcaListenDevice *nfcaDevList, uint8_t *devCnt); + +/*! + ***************************************************************************** + * \brief NFC-A Poller Full Collision Resolution with Sleep + * + * Performs a full Collision resolution similar to + *rfalNfcaPollerFullCollisionResolution but an additional SLP_REQ (HLTA) -> + *SENS_RES (REQA) is sent regardless if there was a collision. This proprietary + *behaviour ensures proper activation of certain devices that suffer from + *influence of Type B commands as foreseen in ISO14443-3 5.2.3 or were somehow + * not detected by the first round of collision resolution + * + * \param[in] devLimit : device limit value, and size nfcaDevList + * \param[out] nfcaDevList : NFC-A listener device info + * \param[out] devCnt : Devices found counter + * + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerSleepFullCollisionResolution( + uint8_t devLimit, rfalNfcaListenDevice *nfcaDevList, uint8_t *devCnt); + +/*! + ***************************************************************************** + * \brief NFC-A Poller Start Full Collision Resolution + * + * This method starts the full Collision resolution as defined + * in Activity 1.0 or 1.1 9.3.4 + * + * \param[in] compMode : compliance mode to be performed + * \param[in] devLimit : device limit value, and size nfcaDevList + * \param[out] nfcaDevList : NFC-A listener device info + * \param[out] devCnt : Devices found counter + * + * When compMode is set to ISO compliance it assumes that the device is + * not sleeping and therefore no ALL_REQ (WUPA) is sent at the beginning. + * When compMode is set to NFC compliance an additional ALL_REQ (WUPA) is sent + *at the beginning. + * + * + * When devLimit = 0 it is configured to perform collision detection only. Once + *a collision is detected the collision resolution is aborted immidiatly. If + *only one device is found with no collisions, it will properly resolved. + * + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerStartFullCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, + rfalNfcaListenDevice *nfcaDevList, uint8_t *devCnt); + +/*! + ***************************************************************************** + * \brief NFC-A Get Full Collision Resolution Status + * + * Returns the Collision Resolution status + * + * \return RFAL_ERR_BUSY : Operation is ongoing + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, activation successful + ***************************************************************************** + */ +ReturnCode rfalNfcaPollerGetFullCollisionResolutionStatus(void); + +/*! + ***************************************************************************** + * \brief NFC-A Listener is SLP_REQ + * + * Checks if the given buffer contains valid NFC-A SLP_REQ (HALT) + * + * \param[in] buf: buffer containing data + * \param[in] bufLen: length of the data in buffer to be checked + * + * \return true if data in buf contains a SLP_REQ ; false otherwise + ***************************************************************************** + */ +bool rfalNfcaListenerIsSleepReq(const uint8_t *buf, uint16_t bufLen); + +#endif /* RFAL_NFCA_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_nfcb.h b/core/embed/io/nfc/rfal/include/rfal_nfcb.h new file mode 100644 index 0000000000..c69925441e --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_nfcb.h @@ -0,0 +1,636 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_nfcb.h + * + * \author Gustavo Patricio + * + * \brief Implementation of NFC-B (ISO14443B) helpers + * + * It provides a NFC-B Poller (ISO14443B PCD) interface and + * also provides some NFC-B Listener (ISO14443B PICC) helpers + * + * The definitions and helpers methods provided by this module are only + * up to ISO14443-3 layer (excluding ATTRIB) + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-AL + * \brief RFAL Abstraction Layer + * @{ + * + * \addtogroup NFC-B + * \brief RFAL NFC-B Module + * @{ + * + */ + +#ifndef RFAL_NFCB_H +#define RFAL_NFCB_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_NFCB_FWTSENSB \ + 7680U /*!< NFC-B FWT(SENSB) Digital 2.0 B.3 */ +#define RFAL_NFCB_DFWT 49152U /*!< NFC-B dFWT Delta 2.0 7.9.1.3 & B.3 */ +#define RFAL_NFCB_DTPOLL_10 \ + rfalConvMsTo1fc(20) /*!< NFC-B Delta Tb Poll Digital 1.0 A.2 */ +#define RFAL_NFCB_DTPOLL_20 \ + rfalConvMsTo1fc(17) /*!< NFC-B Delta Tb Poll Digital 2.1 B.3 */ + +#define RFAL_NFCB_AFI \ + 0x00U /*!< NFC-B default Application Family Digital 1.1 7.6.1.1 */ +#define RFAL_NFCB_PARAM \ + 0x00U /*!< NFC-B default SENSB_REQ PARAM */ +#define RFAL_NFCB_CRC_LEN \ + 2U /*!< NFC-B CRC length and CRC_B(AID) Digital 1.1 Table 28 */ +#define RFAL_NFCB_NFCID0_LEN \ + 4U /*!< Length of NFC-B NFCID0 */ +#define RFAL_NFCB_CMD_LEN \ + 1U /*!< Length of NFC-B Command */ + +#define RFAL_NFCB_SENSB_RES_LEN \ + 12U /*!< Standard length of SENSB_RES without SFGI byte */ +#define RFAL_NFCB_SENSB_RES_EXT_LEN \ + 13U /*!< Extended length of SENSB_RES with SFGI byte */ + +#define RFAL_NFCB_SENSB_REQ_ADV_FEATURE \ + 0x20U /*!< Bit mask for Advance Feature in SENSB_REQ */ +#define RFAL_NFCB_SENSB_RES_FSCI_MASK \ + 0x0FU /*!< Bit mask for FSCI value in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_FSCI_SHIFT \ + 4U /*!< Shift for FSCI value in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_PROTO_RFU_MASK \ + 0x08U /*!< Bit mask for Protocol Type RFU in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_PROTO_TR2_MASK \ + 0x03U /*!< Bit mask for Protocol Type TR2 in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_PROTO_TR2_SHIFT \ + 1U /*!< Shift for Protocol Type TR2 in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_PROTO_ISO_MASK \ + 0x01U /*!< Bit mask Protocol Type ISO14443 Compliant in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_FWI_MASK \ + 0x0FU /*!< Bit mask for FWI value in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_FWI_SHIFT \ + 4U /*!< Bit mask for FWI value in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_ADC_MASK \ + 0x0CU /*!< Bit mask for ADC value in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_ADC_ADV_FEATURE_MASK \ + 0x08U /*!< Bit mask for ADC.Advanced Proto Features in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_ADC_PROPRIETARY_MASK \ + 0x04U /*!< Bit mask for ADC.Proprietary Application in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_FO_DID_MASK \ + 0x01U /*!< Bit mask for DID in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_FO_NAD_MASK \ + 0x02U /*!< Bit mask for DID in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_FO_MASK \ + 0x03U /*!< Bit mask for FO value in SENSB_RES (NAD and DID) */ +#define RFAL_NFCB_SENSB_RES_SFGI_MASK \ + 0x0FU /*!< Bit mask for SFGI in SENSB_RES */ +#define RFAL_NFCB_SENSB_RES_SFGI_SHIFT \ + 4U /*!< Shift for SFGI in SENSB_RES */ + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ + +/*! Get device's FSCI given its SENSB_RES Digital 1.1 7.6.2 */ +#define rfalNfcbGetFSCI(sensbRes) \ + ((((rfalNfcbSensbRes *)(sensbRes))->protInfo.FsciProType >> \ + RFAL_NFCB_SENSB_RES_FSCI_SHIFT) & \ + RFAL_NFCB_SENSB_RES_FSCI_MASK) + +/*! Checks if the given NFC-B device indicates ISO-DEP support */ +#define rfalNfcbIsIsoDepSupported(dev) \ + ((((rfalNfcbListenDevice *)(dev))->sensbRes.protInfo.FsciProType & \ + RFAL_NFCB_SENSB_RES_PROTO_ISO_MASK) != 0U) + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! SENSB_REQ and ALLB_REQ param Digital 1.1 7.6.1 */ +typedef enum { + RFAL_NFCB_SENS_CMD_ALLB_REQ = 0x08, /*!< ALLB_REQ (WUPB) */ + RFAL_NFCB_SENS_CMD_SENSB_REQ = 0x00 /*!< SENSB_REQ (REQB) */ +} rfalNfcbSensCmd; + +/*! Number of Slots (NI) codes used for NFC-B anti collision Digital 1.1 Table + * 26 */ +typedef enum { + RFAL_NFCB_SLOT_NUM_1 = 0, /*!< N=0 : 1 slot */ + RFAL_NFCB_SLOT_NUM_2 = 1, /*!< N=1 : 2 slots */ + RFAL_NFCB_SLOT_NUM_4 = 2, /*!< N=2 : 4 slots */ + RFAL_NFCB_SLOT_NUM_8 = 3, /*!< N=3 : 8 slots */ + RFAL_NFCB_SLOT_NUM_16 = 4 /*!< N=4 : 16 slots */ +} rfalNfcbSlots; + +/*! SENSB_RES (ATQB) Application Data Format Digital 1.1 Table 28 */ +typedef struct { + uint8_t AFI; /*!< Application Family Identifier */ + uint8_t CRC_B[RFAL_NFCB_CRC_LEN]; /*!< CRC_B of AID */ + uint8_t numApps; /*!< Number of Applications */ +} rfalNfcbSensbResAppData; + +/*! SENSB_RES Protocol Info format Digital 1.1 Table 29 */ +typedef struct { + uint8_t BRC; /*!< Bit Rate Capability */ + uint8_t + FsciProType; /*!< Frame Size Card Integer [4b] | Protocol Type[4 bits] */ + uint8_t FwiAdcFo; /*!< Frame Waiting Integer [4b] | Application Data Coding + [2b] | Frame Options [2b] */ + uint8_t + SFGI; /*!< Optional: Start-Up Frame Guard Time Integer[4b] | RFU [4b] */ +} rfalNfcbSensbResProtocolInfo; + +/*! SENSB_RES format Digital 1.1 7.6.2 */ +typedef struct { + uint8_t cmd; /*!< SENSB_RES: 50h */ + uint8_t nfcid0[RFAL_NFCB_NFCID0_LEN]; /*!< NFC Identifier (PUPI)*/ + rfalNfcbSensbResAppData appData; /*!< Application Data */ + rfalNfcbSensbResProtocolInfo protInfo; /*!< Protocol Information */ +} rfalNfcbSensbRes; + +/*! NFC-B listener device (PICC) struct */ +typedef struct { + uint8_t sensbResLen; /*!< SENSB_RES length */ + rfalNfcbSensbRes sensbRes; /*!< SENSB_RES */ + bool isSleep; /*!< Device sleeping flag */ +} rfalNfcbListenDevice; + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief Initialize NFC-B Poller mode + * + * This methods configures RFAL RF layer to perform as a + * NFC-B Poller/RW (ISO14443B PCD) including all default timings + * + * It sets NFC-B parameters (AFI, PARAM) to default values + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerInitialize(void); + +/*! + ***************************************************************************** + * \brief Set NFC-B Poller parameters + * + * This methods configures RFAL RF layer to perform as a + * NFCA Poller/RW (ISO14443A PCD) including all default timings + * + * Additionally configures NFC-B specific parameters to be used on the + * following communications + * + * \param[in] AFI : Application Family Identifier to be used + * \param[in] PARAM : PARAM to be used, it announces whether Advanced + * Features or Extended SENSB_RES is supported + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerInitializeWithParams(uint8_t AFI, uint8_t PARAM); + +/*! + ***************************************************************************** + * \brief NFC-B Poller Check Presence + * + * This method checks if a NFC-B Listen device (PICC) is present on the field + * by sending an ALLB_REQ (WUPB) or SENSB_REQ (REQB) + * + * \param[in] cmd : Indicate if to send an ALLB_REQ or a SENSB_REQ + * \param[in] slots : The number of slots to be announced + * \param[out] sensbRes : If received, the SENSB_RES + * \param[out] sensbResLen : If received, the SENSB_RES length + * + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_RF_COLLISION : Collision detected one or more device in the + *field \return RFAL_ERR_PAR : Parity error detected, one or more + *device in the field \return RFAL_ERR_CRC : CRC error detected, one or + *more device in the field \return RFAL_ERR_FRAMING : Framing error + *detected, one or more device in the field \return RFAL_ERR_PROTO : + *Protocol error detected, invalid SENSB_RES received \return RFAL_ERR_NONE : No + *error, SENSB_RES received + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerCheckPresence(rfalNfcbSensCmd cmd, rfalNfcbSlots slots, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen); + +/*! + ***************************************************************************** + * \brief NFC-B Poller Start Check Presence + * + * This method starts check for a NFC-B Listen device (PICC) presence on the + *field by sending an ALLB_REQ (WUPB) or SENSB_REQ (REQB) + * + * \param[in] cmd : Indicate if to send an ALL_REQ or a SENS_REQ + * \param[in] slots : The number of slots to be announced + * \param[out] sensbRes : If received, the SENSB_RES + * \param[out] sensbResLen : If received, the SENSB_RES length + * + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error, SENSB_RES received + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerStartCheckPresence(rfalNfcbSensCmd cmd, + rfalNfcbSlots slots, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen); + +/*! + ***************************************************************************** + * \brief NFC-B Poller Get Check Presence Status + * + * This method get the presence check status + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_RF_COLLISION : Collision detected one or more device in the + *field \return RFAL_ERR_PAR : Parity error detected, one or more + *device in the field \return RFAL_ERR_CRC : CRC error detected, one or + *more device in the field \return RFAL_ERR_FRAMING : Framing error + *detected, one or more device in the field \return RFAL_ERR_PROTO : + *Protocol error detected, invalid SENSB_RES received \return RFAL_ERR_NONE : No + *error, SENSB_RES received + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerGetCheckPresenceStatus(void); + +/*! + ***************************************************************************** + * \brief NFC-B Poller Sleep + * + * This function is used to send the SLPB_REQ (HLTB) command to put the PICC + *with the given NFCID0 to state HALT so that they do not reply to further + *SENSB_REQ commands (only to ALLB_REQ) + * + * \param[in] nfcid0 : NFCID of the device to be put to Sleep + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerSleep(const uint8_t *nfcid0); + +/*! + ***************************************************************************** + * \brief NFC-B Poller Slot Marker + * + * This method sends a NFC-B Slot marker frame + * + * \param[in] slotCode : Slot Code [1-15] + * \param[out] sensbRes : If received, the SENSB_RES + * \param[out] sensbResLen : If received, the SENSB_RES length + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, SEL_RES received + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerSlotMarker(uint8_t slotCode, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen); + +/*! + ***************************************************************************** + * \brief NFC-B Poller Start Slot Marker + * + * This method starts a NFC-B Slot marker + * + * \param[in] slotCode : Slot Code [1-15] + * \param[out] sensbRes : If received, the SENSB_RES + * \param[out] sensbResLen : If received, the SENSB_RES length + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error, SEL_RES received + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerStartSlotMarker(uint8_t slotCode, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen); + +/*! + ***************************************************************************** + * \brief NFC-B Poller Get Slot Marker Status + * + * This method gets the status of the NFC-B Slot marker + * + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, SEL_RES received + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerGetSlotMarkerStatus(void); + +/*! + ***************************************************************************** + * \brief NFC-B Technology Detection + * + * This method performs NFC-B Technology Detection as defined in the spec + * given in the compliance mode + * + * \param[in] compMode : compliance mode to be performed + * \param[out] sensbRes : location to store the SENSB_RES, if received + * \param[out] sensbResLen : length of the SENSB_RES, if received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error, one or more device in the field + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerTechnologyDetection(rfalComplianceMode compMode, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen); + +/*! + ***************************************************************************** + * \brief NFC-B Start Technology Detection + * + * This method starts the NFC-B Technology Detection as defined in the spec + * given in the compliance mode + * + * \param[in] compMode : compliance mode to be performed + * \param[out] sensbRes : location to store the SENSB_RES, if received + * \param[out] sensbResLen : length of the SENSB_RES, if received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error, one or more device in the field + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerStartTechnologyDetection(rfalComplianceMode compMode, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen); + +/*! + ***************************************************************************** + * \brief NFC-B Get Technology Detection Status + * + * This method gets the NFC-B Technology Detection status + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error, one or more device in the field + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerGetTechnologyDetectionStatus(void); + +/*! + ***************************************************************************** + * \brief NFC-B Poller Collision Resolution + * + * NFC-B Collision resolution Listener device/card (PICC) as + * defined in Activity 1.1 9.3.5 + * + * This function is used to perform collision resolution for detection in case + * of multiple NFC Forum Devices with Technology B detected. + * Target with valid SENSB_RES will be stored in nfcbDevList and devCnt + *incremented. + * + * \param[in] compMode : compliance mode to be performed + * \param[in] devLimit : device limit value, and size nfcbDevList + * \param[out] nfcbDevList : NFC-B listener device info + * \param[out] devCnt : devices found counter + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerCollisionResolution(rfalComplianceMode compMode, + uint8_t devLimit, + rfalNfcbListenDevice *nfcbDevList, + uint8_t *devCnt); + +/*! + ***************************************************************************** + * \brief NFC-B Poller Collision Resolution Slotted + * + * NFC-B Collision resolution Listener device/card (PICC). The sequence can + * be configured to be according to NFC Forum Activity 1.1 9.3.5, ISO10373 + * or EMVCo + * + * This function is used to perform collision resolution for detection in case + * of multiple NFC Forum Devices with Technology B are detected. + * Target with valid SENSB_RES will be stored in nfcbDevList and devCnt + *incremented. + * + * This method provides the means to perform a collision resolution loop with + *specific initial and end number of slots. This allows to user to start the + *loop already with greater number of slots, and or limit the end number of + *slots. At the end a flag indicating whether there were collisions pending is + *returned. + * + * If RFAL_COMPLIANCE_MODE_ISO is used \a initSlots must be set to + *RFAL_NFCB_SLOT_NUM_1 + * + * + * \param[in] compMode : compliance mode to be performed + * \param[in] devLimit : device limit value, and size nfcbDevList + * \param[in] initSlots : number of slots to open initially + * \param[in] endSlots : number of slots when to stop collision resolution + * \param[out] nfcbDevList : NFC-B listener device info + * \param[out] devCnt : devices found counter + * \param[out] colPending : flag indicating whether collision are still pending + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerSlottedCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, rfalNfcbSlots initSlots, + rfalNfcbSlots endSlots, rfalNfcbListenDevice *nfcbDevList, uint8_t *devCnt, + bool *colPending); + +/*! + ***************************************************************************** + * \brief NFC-B Poller Start Collision Resolution + * + * It starts the NFC-B Collision resolution Listener device/card (PICC) as + * defined in Activity 1.1 9.3.5 + * + * This function is used to trigger the collision resolution for detection in + *case of multiple NFC Forum Devices with Technology B detected. Target with + *valid SENSB_RES will be stored in nfcbDevList and devCnt incremented. + * + * \param[in] compMode : compliance mode to be performed + * \param[in] devLimit : device limit value, and size nfcbDevList + * \param[out] nfcbDevList : NFC-B listener device info + * \param[out] devCnt : devices found counter + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerStartCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, + rfalNfcbListenDevice *nfcbDevList, uint8_t *devCnt); + +/*! + ***************************************************************************** + * \brief NFC-B Poller Start Collision Resolution Slotted + * + * Starts NFC-B Collision resolution Listener device/card (PICC). The sequence + *can be configured to be according to NFC Forum Activity 1.1 9.3.5, ISO10373 + * or EMVCo + * + * This function is used to trigger the collision resolution for detection in + *case of multiple NFC Forum Devices with Technology B are detected. Target with + *valid SENSB_RES will be stored in nfcbDevList and devCnt incremented. + * + * This method provides the means to perform a collision resolution loop with + *specific initial and end number of slots. This allows to user to start the + *loop already with greater number of slots, and or limit the end number of + *slots. At the end a flag indicating whether there were collisions pending is + *returned. + * + * If RFAL_COMPLIANCE_MODE_ISO is used \a initSlots must be set to + *RFAL_NFCB_SLOT_NUM_1 + * + * + * \param[in] compMode : compliance mode to be performed + * \param[in] devLimit : device limit value, and size nfcbDevList + * \param[in] initSlots : number of slots to open initially + * \param[in] endSlots : number of slots when to stop collision resolution + * \param[out] nfcbDevList : NFC-B listener device info + * \param[out] devCnt : devices found counter + * \param[out] colPending : flag indicating whether collision are still pending + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerStartSlottedCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, rfalNfcbSlots initSlots, + rfalNfcbSlots endSlots, rfalNfcbListenDevice *nfcbDevList, uint8_t *devCnt, + bool *colPending); + +/*! + ***************************************************************************** + * \brief NFC-B Get Collision Resolution Status + * + * Returns the Collision Resolution status + * + * \return RFAL_ERR_BUSY : Operation is ongoing + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error, activation successful + ***************************************************************************** + */ +ReturnCode rfalNfcbPollerGetCollisionResolutionStatus(void); + +/*! + ***************************************************************************** + * \brief NFC-B TR2 code to FDT + * + * Converts the TR2 code as defined in Digital 1.1 Table 33 Minimum + * TR2 Coding to Frame Delay Time (FDT) in 1/Fc + * + * \param[in] tr2Code : TR2 code as defined in Digital 1.1 Table 33 + * + * \return FDT in 1/Fc + ***************************************************************************** + */ +uint32_t rfalNfcbTR2ToFDT(uint8_t tr2Code); + +#endif /* RFAL_NFCB_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_nfcf.h b/core/embed/io/nfc/rfal/include/rfal_nfcf.h new file mode 100644 index 0000000000..ce1673a402 --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_nfcf.h @@ -0,0 +1,508 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_nfcf.h + * + * \author Gustavo Patricio + * + * \brief Implementation of NFC-F Poller (FeliCa PCD) device + * + * The definitions and helpers methods provided by this module are + * aligned with NFC-F (FeliCa - JIS X6319-4) + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-AL + * \brief RFAL Abstraction Layer + * @{ + * + * \addtogroup NFC-F + * \brief RFAL NFC-F Module + * @{ + * + */ + +#ifndef RFAL_NFCF_H +#define RFAL_NFCF_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_NFCF_NFCID2_LEN \ + 8U /*!< NFCID2 (FeliCa IDm) length */ +#define RFAL_NFCF_SENSF_RES_LEN_MIN \ + 16U /*!< SENSF_RES minimum length */ +#define RFAL_NFCF_SENSF_RES_LEN_MAX \ + 18U /*!< SENSF_RES maximum length */ +#define RFAL_NFCF_SENSF_RES_PAD0_LEN \ + 2U /*!< SENSF_RES PAD0 length */ +#define RFAL_NFCF_SENSF_RES_PAD1_LEN \ + 3U /*!< SENSF_RES PAD1 length */ +#define RFAL_NFCF_SENSF_RES_RD_LEN \ + 2U /*!< SENSF_RES Request Data length */ +#define RFAL_NFCF_SENSF_RES_BYTE1 \ + 1U /*!< SENSF_RES first byte value */ +#define RFAL_NFCF_SENSF_SC_LEN \ + 2U /*!< Felica SENSF_REQ System Code length */ +#define RFAL_NFCF_SENSF_PARAMS_SC1_POS \ + 0U /*!< System Code byte1 position in the SENSF_REQ */ +#define RFAL_NFCF_SENSF_PARAMS_SC2_POS \ + 1U /*!< System Code byte2 position in the SENSF_REQ */ +#define RFAL_NFCF_SENSF_PARAMS_RC_POS \ + 2U /*!< Request Code position in the SENSF_REQ */ +#define RFAL_NFCF_SENSF_PARAMS_TSN_POS \ + 3U /*!< Time Slot Number position in the SENSF_REQ */ +#define RFAL_NFCF_POLL_MAXCARDS \ + 16U /*!< Max number slots/cards 16 */ + +#define RFAL_NFCF_CMD_POS \ + 0U /*!< Command/Responce code length */ +#define RFAL_NFCF_CMD_LEN \ + 1U /*!< Command/Responce code length */ +#define RFAL_NFCF_LENGTH_LEN \ + 1U /*!< LEN field length */ +#define RFAL_NFCF_HEADER_LEN \ + (RFAL_NFCF_LENGTH_LEN + RFAL_NFCF_CMD_LEN) /*!< Header length */ + +#define RFAL_NFCF_NOS_LEN \ + 1U /*!< Number of Services length */ +#define RFAL_NFCF_NOB_LEN \ + 1U /*!< Number of Blocks length */ + +#define RFAL_NFCF_SENSF_NFCID2_BYTE1_POS \ + 0U /*!< NFCID2 byte1 position */ +#define RFAL_NFCF_SENSF_NFCID2_BYTE2_POS \ + 1U /*!< NFCID2 byte2 position */ + +#define RFAL_NFCF_SENSF_NFCID2_PROT_TYPE_LEN \ + 2U /*!< NFCID2 length for byte 1 and byte 2 indicating NFC-DEP or T3T \ + support */ +#define RFAL_NFCF_SENSF_NFCID2_BYTE1_NFCDEP \ + 0x01U /*!< NFCID2 byte1 NFC-DEP support Digital 1.0 Table 44 */ +#define RFAL_NFCF_SENSF_NFCID2_BYTE2_NFCDEP \ + 0xFEU /*!< NFCID2 byte2 NFC-DEP support Digital 1.0 Table 44 */ + +#define RFAL_NFCF_SYSTEMCODE \ + 0xFFFFU /*!< SENSF_RES Default System Code Digital 2.3 8.6.1.5 */ +#define RFAL_NFCF_SYSTEMCODE_LEN \ + 2U /*!< SENSF_RES System Code length Digital 2.3 8.6.1 */ + +#define RFAL_NFCF_BLOCK_LEN \ + 16U /*!< NFCF T3T Block size T3T 1.0 4.1 */ +#define RFAL_NFCF_CHECKUPDATE_RES_ST1_POS \ + 9U /*!< Check|Update Res Status Flag 1 position T3T 1.0 Table 8 */ +#define RFAL_NFCF_CHECKUPDATE_RES_ST2_POS \ + 10U /*!< Check|Update Res Status Flag 2 position T3T 1.0 Table 8 */ +#define RFAL_NFCF_CHECKUPDATE_RES_NOB_POS \ + 11U /*!< Check|Update Res Number of Blocks position T3T 1.0 Table 8 */ + +#define RFAL_NFCF_STATUS_FLAG_SUCCESS \ + 0x00U /*!< Check response Number of Blocks position T3T 1.0 Table 11 */ +#define RFAL_NFCF_STATUS_FLAG_ERROR \ + 0xFFU /*!< Check response Number of Blocks position T3T 1.0 Table 11 */ + +#define RFAL_NFCF_BLOCKLISTELEM_MAX_LEN \ + 3U /*!< Block List Element max Length (3 bytes) T3T 1.0 5.6.1 */ +#define RFAL_NFCF_BLOCKLISTELEM_LEN_BIT \ + 0x80U /*!< Block List Element Length bit (2|3 bytes) T3T 1.0 5.6.1 */ + +#define RFAL_NFCF_SERVICECODE_RDONLY \ + 0x000BU /*!< NDEF Service Code as Read-Only T3T 1.0 7.2.1 */ +#define RFAL_NFCF_SERVICECODE_RDWR \ + 0x0009U /*!< NDEF Service Code as Read and Write T3T 1.0 7.2.1 */ + +#define RFAL_NFCF_TEST_LB_CMD0 \ + 0xD8U /*!< T3T loopback CMD0 ETSI TS 102 695-1 5.6.4.4.2 */ +#define RFAL_NFCF_TEST_LB_CMD1 \ + 0x00U /*!< T3T loopback CMD1 ETSI TS 102 695-1 5.6.4.4.2 */ + +/*! NFC-F Felica command set JIS X6319-4 9.1 */ +enum { + RFAL_NFCF_CMD_POLLING = + 0x00, /*!< SENSF_REQ (Felica Poll/REQC command to identify a card ) */ + RFAL_NFCF_CMD_POLLING_RES = + 0x01, /*!< SENSF_RES (Felica Poll/REQC command response ) */ + RFAL_NFCF_CMD_REQUEST_SERVICE = + 0x02, /*!< verify the existence of Area and Service */ + RFAL_NFCF_CMD_REQUEST_RESPONSE = 0x04, /*!< verify the existence of a card */ + RFAL_NFCF_CMD_READ_WITHOUT_ENCRYPTION = + 0x06, /*!< read Block Data from a Service that requires no authentication + */ + RFAL_NFCF_CMD_READ_WITHOUT_ENCRYPTION_RES = + 0x07, /*!< read Block Data response from a Service with no authentication + */ + RFAL_NFCF_CMD_WRITE_WITHOUT_ENCRYPTION = + 0x08, /*!< write Block Data to a Service that requires no authentication + */ + RFAL_NFCF_CMD_WRITE_WITHOUT_ENCRYPTION_RES = + 0x09, /*!< write Block Data response to a Service with no authentication + */ + RFAL_NFCF_CMD_REQUEST_SYSTEM_CODE = + 0x0c, /*!< acquire the System Code registered to a card */ + RFAL_NFCF_CMD_AUTHENTICATION1 = 0x10, /*!< authenticate a card */ + RFAL_NFCF_CMD_AUTHENTICATION2 = + 0x12, /*!< allow a card to authenticate a Reader/Writer */ + RFAL_NFCF_CMD_READ = + 0x14, /*!< read Block Data from a Service that requires authentication */ + RFAL_NFCF_CMD_WRITE = + 0x16, /*!< write Block Data to a Service that requires authentication */ +}; + +/* + ****************************************************************************** + * GLOBAL MACROS + ****************************************************************************** + */ + +/*! Checks if the given NFC-F device indicates NFC-DEP support */ +#define rfalNfcfIsNfcDepSupported(dev) \ + ((((rfalNfcfListenDevice *)(dev)) \ + ->sensfRes.NFCID2[RFAL_NFCF_SENSF_NFCID2_BYTE1_POS] == \ + RFAL_NFCF_SENSF_NFCID2_BYTE1_NFCDEP) && \ + (((rfalNfcfListenDevice *)(dev)) \ + ->sensfRes.NFCID2[RFAL_NFCF_SENSF_NFCID2_BYTE2_POS] == \ + RFAL_NFCF_SENSF_NFCID2_BYTE2_NFCDEP)) + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! NFC-F SENSF_RES format Digital 1.1 8.6.2 */ +typedef struct { + uint8_t CMD; /*!< Command Code: 01h */ + uint8_t NFCID2[RFAL_NFCF_NFCID2_LEN]; /*!< NFCID2 */ + uint8_t PAD0[RFAL_NFCF_SENSF_RES_PAD0_LEN]; /*!< PAD0 */ + uint8_t PAD1[RFAL_NFCF_SENSF_RES_PAD1_LEN]; /*!< PAD1 */ + uint8_t MRTIcheck; /*!< MRTIcheck */ + uint8_t MRTIupdate; /*!< MRTIupdate */ + uint8_t PAD2; /*!< PAD2 */ + uint8_t RD[RFAL_NFCF_SENSF_RES_RD_LEN]; /*!< Request Data */ +} rfalNfcfSensfRes; + +/*! NFC-F poller device (PCD) struct */ +typedef struct { + uint8_t NFCID2[RFAL_NFCF_NFCID2_LEN]; /*!< NFCID2 */ +} rfalNfcfPollDevice; + +/*! NFC-F listener device (PICC) struct */ +typedef struct { + uint8_t sensfResLen; /*!< SENF_RES length */ + rfalNfcfSensfRes sensfRes; /*!< SENF_RES */ +} rfalNfcfListenDevice; + +typedef uint16_t rfalNfcfServ; /*!< NFC-F Service Code */ + +/*! NFC-F Block List Element (2 or 3 bytes element) T3T 1.0 5.6.1 */ +typedef struct { + uint8_t conf; /*!< Access Mode | Serv Code List Order */ + uint16_t blockNum; /*!< Block Number */ +} rfalNfcfBlockListElem; + +/*! Check Update Service list and Block list parameter */ +typedef struct { + uint8_t numServ; /*!< Number of Services */ + rfalNfcfServ *servList; /*!< Service Code List */ + uint8_t numBlock; /*!< Number of Blocks */ + rfalNfcfBlockListElem *blockList; /*!< Block Number List */ +} rfalNfcfServBlockListParam; + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief Initialize NFC-F Poller mode + * + * This methods configures RFAL RF layer to perform as a + * NFC-F Poller/RW (FeliCa PCD) including all default timings + * + * \param[in] bitRate : NFC-F bitrate to be initialize (212 or 424) + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Incorrect bitrate + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcfPollerInitialize(rfalBitRate bitRate); + +/*! + ***************************************************************************** + * \brief NFC-F Poller Check Presence + * + * This function sends a Poll/SENSF command according to NFC Activity spec + * It detects if a NCF-F device is within range + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_NONE : No error and some NFC-F device was detected + * + ***************************************************************************** + */ +ReturnCode rfalNfcfPollerCheckPresence(void); + +/*! + ***************************************************************************** + * \brief NFC-F Poller Start Check Presence + * + * This function triggers a Poll/SENSF command according to NFC Activity spec + * It detects if a NCF-F device is within range + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_NONE : No error and some NFC-F device was detected + * + ***************************************************************************** + */ +ReturnCode rfalNfcfPollerStartCheckPresence(void); + +/*! + ***************************************************************************** + * \brief NFC-F Poller Get Check Presence Status + * + * This function gets the status of the Check Presense operation + * triggered by rfalNfcfPollerStartCheckPresence() + * + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_NONE : No error and some NFC-F device was detected + * + ***************************************************************************** + */ +ReturnCode rfalNfcfPollerGetCheckPresenceStatus(void); + +/*! + ***************************************************************************** + * \brief NFC-F Poller Poll + * + * This function sends to all PICCs in field the POLL command with the given + * number of slots. + * + * \param[in] slots : the number of slots to be performed + * \param[in] sysCode : as given in FeliCa poll command + * \param[in] reqCode : FeliCa communication parameters + * \param[out] cardList : Parameter of type rfalFeliCaPollRes which will hold + *the cards found \param[out] devCnt : actual number of cards found + * \param[out] collisions : number of collisions encountered + * + * \warning the list cardList has to be as big as the number of slots for the + *Poll + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_NONE : No error and some NFC-F device was detected + * + ***************************************************************************** + */ +ReturnCode rfalNfcfPollerPoll(rfalFeliCaPollSlots slots, uint16_t sysCode, + uint8_t reqCode, rfalFeliCaPollRes *cardList, + uint8_t *devCnt, uint8_t *collisions); + +/*! + ***************************************************************************** + * \brief NFC-F Poller Full Collision Resolution + * + * Performs a full Collision resolution as defined in Activity 1.1 9.3.4 + * + * \param[in] compMode : compliance mode to be performed + * \param[in] devLimit : device limit value, and size nfcaDevList + * \param[out] nfcfDevList : NFC-F listener devices list + * \param[out] devCnt : Devices found counter + * + * NFC-F Collision Resolution uses information collected at Technlology + *dectection (if provided on nfcfDevList). Technology Detection shall be + *performed using 4 slots, therefore at least 4 slots/devLimit shall be + *allocated on nfcfDevList. + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcfPollerCollisionResolution(rfalComplianceMode compMode, + uint8_t devLimit, + rfalNfcfListenDevice *nfcfDevList, + uint8_t *devCnt); + +/*! + ***************************************************************************** + * \brief NFC-F Start Poller Collision Resolution + * + * Triggers a Collision Resolution as defined in Activity 2.1 9.3.6 + * + * NFC-F Collision Resolution uses information collected at Technlology + *dectection (if provided on nfcfDevList). Technology Detection shall be + *performed using 4 slots, therefore at least 4 slots/devLimit shall be + *allocated on nfcfDevList. + * + * \param[in] compMode : compliance mode to be performed + * \param[in] devLimit : device limit value, and size nfcaDevList + * \param[out] nfcfDevList : NFC-F listener devices list + * \param[out] devCnt : Devices found counter + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcfPollerStartCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, + rfalNfcfListenDevice *nfcfDevList, uint8_t *devCnt); + +/*! + ***************************************************************************** + * \brief NFC-F Poller Get Collision Resolution Status + * + * This function gets the status of the Collision Resolution operation + * triggered by rfalNfcfPollerStartCollisionResolution() + * + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_NONE : No error and some NFC-F device was detected + * + ***************************************************************************** + */ +ReturnCode rfalNfcfPollerGetCollisionResolutionStatus(void); + +/*! + ***************************************************************************** + * \brief NFC-F Poller Check/Read + * + * It computes a Check / Read command accoring to T3T 1.0 and JIS X6319-4 and + * sends it to PICC. If sucessfully, the rxBuf will contain the the number of + * blocks in the first byte followed by the blocks data. + * + * \param[in] nfcid2 : nfcid2 of the device + * \param[in] servBlock : parameter containing the list of Services and + * Blocks to be addressed by this command + * \param[out] rxBuf : buffer to place check/read data + * \param[in] rxBufLen : size of the rxBuf + * \param[out] rcvdLen : length of data placed in rxBuf + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_REQUEST : The request was executed with error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcfPollerCheck(const uint8_t *nfcid2, + const rfalNfcfServBlockListParam *servBlock, + uint8_t *rxBuf, uint16_t rxBufLen, + uint16_t *rcvdLen); + +/*! + ***************************************************************************** + * \brief NFC-F Poller Update/Write + * + * It computes a Update / Write command accoring to T3T 1.0 and JIS X6319-4 and + * sends it to PICC. + * + * \param[in] nfcid2 : nfcid2 of the device + * \param[in] servBlock : parameter containing the list of Services and + * Blocks to be addressed by this command + * \param[in] txBuf : buffer where the request will be composed + * \param[in] txBufLen : size of txBuf + * \param[in] blockData : data to written on the given block(s) + * \param[out] rxBuf : buffer to place check/read data + * \param[in] rxBufLen : size of the rxBuf + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_REQUEST : The request was executed with error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalNfcfPollerUpdate(const uint8_t *nfcid2, + const rfalNfcfServBlockListParam *servBlock, + uint8_t *txBuf, uint16_t txBufLen, + const uint8_t *blockData, uint8_t *rxBuf, + uint16_t rxBufLen); + +/*! + ***************************************************************************** + * \brief NFC-F Listener is T3T Request + * + * This method checks if the given data is a valid T3T command (Read or Write) + * and in case a valid request has been received it may output the request's + *NFCID2 + * + * \param[in] buf : buffer holding Initiator's received command + * \param[in] bufLen : length of received command in bytes + * \param[out] nfcid2 : pointer to where the NFCID2 may be outputed, + * nfcid2 has NFCF_SENSF_NFCID2_LEN as length + * Pass NULL if output parameter not desired + * + * \return true : Valid T3T command (Read or Write) received + * \return false : Invalid protocol request + * + ***************************************************************************** + */ +bool rfalNfcfListenerIsT3TReq(const uint8_t *buf, uint16_t bufLen, + uint8_t *nfcid2); + +#endif /* RFAL_NFCF_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_nfcv.h b/core/embed/io/nfc/rfal/include/rfal_nfcv.h new file mode 100644 index 0000000000..7f8a026b11 --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_nfcv.h @@ -0,0 +1,828 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_nfcv.h + * + * \author Gustavo Patricio + * + * \brief Implementation of NFC-V Poller (ISO15693) device + * + * The definitions and helpers methods provided by this module + * are aligned with NFC-V Digital 2.1 + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-AL + * \brief RFAL Abstraction Layer + * @{ + * + * \addtogroup NFC-V + * \brief RFAL NFC-V Module + * @{ + * + */ + +#ifndef RFAL_NFCV_H +#define RFAL_NFCV_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_NFCV_UID_LEN \ + 8U /*!< NFC-V UID length */ +#define RFAL_NFCV_MAX_BLOCK_LEN \ + 32U /*!< Max Block size: can be of up to 256 bits ISO 15693 2000 5 */ +#define RFAL_NFCV_BNO_LEN \ + 1U /*!< NFC-V Block Number length */ +#define RFAL_NFCV_CRC_LEN \ + 2U /*!< NFC-V CRC length */ +#define RFAL_NFCV_MAX_GEN_DATA_LEN \ + (RFAL_NFCV_MAX_BLOCK_LEN + RFAL_NFCV_BNO_LEN + \ + RFAL_NFCV_UID_LEN) /*!The RFAL encapsulates the different + * RF ICs (ST25R3911, ST25R391x, etc) into a common and easy to use interface. + * + * It provides interfaces to configure the RF IC, set/get timings, modes, bit + * rates, specific handlings, execute listen mode, etc. + * + * Furthermore it provides a common interface to perform a Transceive + * operations. The Transceive can be executed in a blocking or non blocking + * way.
Additionally few specific Transceive methods are available to cope + * with the specifics of these particular operations. + * + * The most common interfaces are: + *
  rfalInitialize() + *
  rfalSetFDTPoll() + *
  rfalSetFDTListen() + *
  rfalSetGT() + *
  rfalSetBitRate() + *
  rfalSetMode() + *
  rfalFieldOnAndStartGT() + *
  rfalFieldOff() + *
  rfalStartTransceive() + *
  rfalGetTransceiveStatus() + *
  rfalTransceiveBlockingTxRx() + * + * An usage example is provided here: \ref exampleRfalPoller.c + * \example exampleRfalPoller.c + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-HAL + * \brief RFAL Hardware Abstraction Layer + * @{ + * + * \addtogroup RF + * \brief RFAL RF Abstraction Layer + * @{ + * + */ + +#ifndef RFAL_RF_H +#define RFAL_RF_H + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include "rfal_features.h" +#include "rfal_platform.h" +#include "rfal_utils.h" + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ +#define RFAL_VERSION \ + 0x030001U /*!< RFAL Current Version: v3.0.1 */ + +#define RFAL_FWT_NONE \ + 0xFFFFFFFFU /*!< Disabled FWT: Wait forever for a response */ +#define RFAL_GT_NONE \ + RFAL_TIMING_NONE /*!< Disabled GT: No GT will be applied after Field On */ + +#define RFAL_TIMING_NONE \ + 0x00U /*!< Timing disabled | Don't apply */ + +#define RFAL_1FC_IN_4096FC \ + (uint32_t)4096U /*!< Number of 1/fc cycles in one 4096/fc */ +#define RFAL_1FC_IN_2048FC \ + (uint32_t)2048U /*!< Number of 1/fc cycles in one 2048/fc */ +#define RFAL_1FC_IN_512FC \ + (uint32_t)512U /*!< Number of 1/fc cycles in one 512/fc */ +#define RFAL_1FC_IN_64FC \ + (uint32_t)64U /*!< Number of 1/fc cycles in one 64/fc */ +#define RFAL_1FC_IN_8FC \ + (uint32_t)8U /*!< Number of 1/fc cycles in one 8/fc */ +#define RFAL_US_IN_MS \ + (uint32_t)1000U /*!< Number of us in one ms */ +#define RFAL_1MS_IN_1FC \ + (uint32_t)13560U /*!< Number of 1/fc cycles in 1ms */ +#define RFAL_BITS_IN_BYTE \ + (uint16_t)8U /*!< Number of bits in one byte */ + +#define RFAL_CRC_LEN \ + 2U /*!< RF CRC LEN */ + +/*! Default TxRx flags: Tx CRC automatic, Rx CRC removed, NFCIP1 mode off, AGC + * On, Tx Parity automatic, Rx Parity removed */ +#define RFAL_TXRX_FLAGS_DEFAULT \ + ((uint32_t)RFAL_TXRX_FLAGS_CRC_TX_AUTO | \ + (uint32_t)RFAL_TXRX_FLAGS_CRC_RX_REMV | \ + (uint32_t)RFAL_TXRX_FLAGS_NFCIP1_OFF | (uint32_t)RFAL_TXRX_FLAGS_AGC_ON | \ + (uint32_t)RFAL_TXRX_FLAGS_PAR_RX_REMV | \ + (uint32_t)RFAL_TXRX_FLAGS_PAR_TX_AUTO | \ + (uint32_t)RFAL_TXRX_FLAGS_NFCV_FLAG_AUTO) + +#define RFAL_LM_MASK_NFCA \ + ((uint32_t)1U << (uint8_t) \ + RFAL_MODE_LISTEN_NFCA) /*!< Bitmask for Listen Mode enabling NFCA */ +#define RFAL_LM_MASK_NFCB \ + ((uint32_t)1U << (uint8_t) \ + RFAL_MODE_LISTEN_NFCB) /*!< Bitmask for Listen Mode enabling NFCB */ +#define RFAL_LM_MASK_NFCF \ + ((uint32_t)1U << (uint8_t) \ + RFAL_MODE_LISTEN_NFCF) /*!< Bitmask for Listen Mode enabling NFCF */ +#define RFAL_LM_MASK_ACTIVE_P2P \ + ((uint32_t)1U << (uint8_t) \ + RFAL_MODE_LISTEN_ACTIVE_P2P) /*!< Bitmask for Listen Mode enabling AP2P \ + */ + +#define RFAL_LM_SENS_RES_LEN \ + 2U /*!< NFC-A SENS_RES (ATQA) length */ +#define RFAL_LM_SENSB_RES_LEN \ + 13U /*!< NFC-B SENSB_RES (ATQB) length */ +#define RFAL_LM_SENSF_RES_LEN \ + 19U /*!< NFC-F SENSF_RES length */ +#define RFAL_LM_SENSF_SC_LEN \ + 2U /*!< NFC-F System Code length */ + +#define RFAL_NFCID3_LEN \ + 10U /*!< NFCID3 length */ +#define RFAL_NFCID2_LEN \ + 8U /*!< NFCID2 length */ +#define RFAL_NFCID1_TRIPLE_LEN \ + 10U /*!< NFCID1 length */ +#define RFAL_NFCID1_DOUBLE_LEN \ + 7U /*!< NFCID1 length */ +#define RFAL_NFCID1_SINGLE_LEN \ + 4U /*!< NFCID1 length */ + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ + +/*! Returns the maximum supported bit rate for RW mode. Caller must check if + * mode is supported before, as even if mode is not supported will return the + * min */ +#define rfalGetMaxBrRW() \ + (((RFAL_SUPPORT_BR_RW_6780) \ + ? RFAL_BR_6780 \ + : ((RFAL_SUPPORT_BR_RW_3390) \ + ? RFAL_BR_3390 \ + : ((RFAL_SUPPORT_BR_RW_1695) \ + ? RFAL_BR_1695 \ + : ((RFAL_SUPPORT_BR_RW_848) \ + ? RFAL_BR_848 \ + : ((RFAL_SUPPORT_BR_RW_424) \ + ? RFAL_BR_424 \ + : ((RFAL_SUPPORT_BR_RW_212) \ + ? RFAL_BR_212 \ + : RFAL_BR_106))))))) + +/*! Returns the maximum supported bit rate for AP2P mode. Caller must check if + * mode is supported before, as even if mode is not supported will return the + * min */ +#define rfalGetMaxBrAP2P() \ + (((RFAL_SUPPORT_BR_AP2P_848) \ + ? RFAL_BR_848 \ + : ((RFAL_SUPPORT_BR_AP2P_424) \ + ? RFAL_BR_424 \ + : ((RFAL_SUPPORT_BR_AP2P_212) ? RFAL_BR_212 : RFAL_BR_106)))) + +/*! Returns the maximum supported bit rate for CE-A mode. Caller must check if + * mode is supported before, as even if mode is not supported will return the + * min */ +#define rfalGetMaxBrCEA() \ + (((RFAL_SUPPORT_BR_CE_A_848) \ + ? RFAL_BR_848 \ + : ((RFAL_SUPPORT_BR_CE_A_424) \ + ? RFAL_BR_424 \ + : ((RFAL_SUPPORT_BR_CE_A_212) ? RFAL_BR_212 : RFAL_BR_106)))) + +/*! Returns the maximum supported bit rate for CE-B mode. Caller must check if + * mode is supported before, as even if mode is not supported will return the + * min */ +#define rfalGetMaxBrCEB() \ + (((RFAL_SUPPORT_BR_CE_B_848) \ + ? RFAL_BR_848 \ + : ((RFAL_SUPPORT_BR_CE_B_424) \ + ? RFAL_BR_424 \ + : ((RFAL_SUPPORT_BR_CE_B_212) ? RFAL_BR_212 : RFAL_BR_106)))) + +/*! Returns the maximum supported bit rate for CE-F mode. Caller must check if + * mode is supported before, as even if mode is not supported will return the + * min */ +#define rfalGetMaxBrCEF() \ + (((RFAL_SUPPORT_BR_CE_F_424) ? RFAL_BR_424 : RFAL_BR_212)) + +#define rfalIsModeActiveComm(md) \ + (((md) == RFAL_MODE_POLL_ACTIVE_P2P) || \ + ((md) == RFAL_MODE_LISTEN_ACTIVE_P2P)) /*!< Checks if mode md is Active \ + Communication */ +#define rfalIsModePassiveComm(md) \ + (!rfalIsModeActiveComm(md)) /*!< Checks if mode md is Passive Communication \ + */ +#define rfalIsModePassiveListen(md) \ + (((md) == RFAL_MODE_LISTEN_NFCA) || ((md) == RFAL_MODE_LISTEN_NFCB) || \ + ((md) == \ + RFAL_MODE_LISTEN_NFCF)) /*!< Checks if mode md is Passive Listen */ +#define rfalIsModePassivePoll(md) \ + (rfalIsModePassiveComm(md) && \ + (!rfalIsModePassiveListen(md))) /*!< Checks if mode md is Passive Poll */ + +#define rfalConv1fcTo8fc(t) \ + (uint32_t)((uint32_t)(t) / \ + RFAL_1FC_IN_8FC) /*!< Converts the given t from 1/fc to 8/fc */ +#define rfalConv8fcTo1fc(t) \ + (uint32_t)((uint32_t)(t) * \ + RFAL_1FC_IN_8FC) /*!< Converts the given t from 8/fc to 1/fc */ + +#define rfalConv1fcTo64fc(t) \ + (uint32_t)( \ + (uint32_t)(t) / \ + RFAL_1FC_IN_64FC) /*!< Converts the given t from 1/fc to 64/fc */ +#define rfalConv64fcTo1fc(t) \ + (uint32_t)((uint32_t)(t) * \ + RFAL_1FC_IN_64FC) /*!< Converts the given t from 64/fc to 1/fc */ + +#define rfalConv1fcTo512fc(t) \ + (uint32_t)( \ + (uint32_t)(t) / \ + RFAL_1FC_IN_512FC) /*!< Converts the given t from 1/fc to 512/fc */ +#define rfalConv512fcTo1fc(t) \ + (uint32_t)( \ + (uint32_t)(t) * \ + RFAL_1FC_IN_512FC) /*!< Converts the given t from 512/fc to 1/fc */ + +#define rfalConv1fcTo2018fc(t) \ + (uint32_t)( \ + (uint32_t)(t) / \ + RFAL_1FC_IN_2048FC) /*!< Converts the given t from 1/fc to 2048/fc */ +#define rfalConv2048fcTo1fc(t) \ + (uint32_t)( \ + (uint32_t)(t) * \ + RFAL_1FC_IN_2048FC) /*!< Converts the given t from 2048/fc to 1/fc */ + +#define rfalConv1fcTo4096fc(t) \ + (uint32_t)( \ + (uint32_t)(t) / \ + RFAL_1FC_IN_4096FC) /*!< Converts the given t from 1/fc to 4096/fc */ +#define rfalConv4096fcTo1fc(t) \ + (uint32_t)( \ + (uint32_t)(t) * \ + RFAL_1FC_IN_4096FC) /*!< Converts the given t from 4096/fc to 1/fc */ + +#define rfalConv1fcToMs(t) \ + (uint32_t)((uint32_t)(t) / \ + RFAL_1MS_IN_1FC) /*!< Converts the given t from 1/fc to ms */ +#define rfalConvMsTo1fc(t) \ + (uint32_t)((uint32_t)(t) * \ + RFAL_1MS_IN_1FC) /*!< Converts the given t from ms to 1/fc */ + +#define rfalConv1fcToUs(t) \ + (uint32_t)(((uint32_t)(t) * RFAL_US_IN_MS) / \ + RFAL_1MS_IN_1FC) /*!< Converts the given t from 1/fc to us */ +#define rfalConvUsTo1fc(t) \ + (uint32_t)(((uint32_t)(t) * RFAL_1MS_IN_1FC) / \ + RFAL_US_IN_MS) /*!< Converts the given t from us to 1/fc */ + +#define rfalConv64fcToMs(t) \ + (uint32_t)((uint32_t)(t) / \ + (RFAL_1MS_IN_1FC / \ + RFAL_1FC_IN_64FC)) /*!< Converts the given t from 64/fc to ms */ +#define rfalConvMsTo64fc(t) \ + (uint32_t)((uint32_t)(t) * \ + (RFAL_1MS_IN_1FC / \ + RFAL_1FC_IN_64FC)) /*!< Converts the given t from ms to 64/fc */ + +#define rfalConvBitsToBytes(n) \ + (uint16_t)( \ + ((uint16_t)(n) + (RFAL_BITS_IN_BYTE - 1U)) / \ + (RFAL_BITS_IN_BYTE)) /*!< Converts the given n from bits to bytes */ +#define rfalConvBytesToBits(n) \ + (uint32_t)( \ + (uint32_t)(n) * \ + (RFAL_BITS_IN_BYTE)) /*!< Converts the given n from bytes to bits */ + +#define rfalRunBlocking(e, fn) \ + do { \ + (e) = (fn); \ + rfalWorker(); \ + } while ((e) == RFAL_ERR_BUSY) /*!< Macro used for the blocking methods */ + +/*! Computes a Transceive context \a ctx with default flags and the lengths + * in bytes with the given arguments + * \a ctx : Transceive context to be assigned + * \a tB : txBuf the pointer to the buffer to be sent + * \a tBL : txBuf length in bytes + * \a rB : rxBuf the pointer to the buffer to place the received frame + * \a rBL : rxBuf length in bytes + * \a rdL : rxRcvdLen the pointer to place the rx length + * \a t : FWT to be used on this transceive in 1/fc + */ +#define rfalCreateByteTxRxContext(ctx, tB, tBL, rB, rBL, rdL, t) \ + (ctx).txBuf = (uint8_t *)(tB); \ + (ctx).txBufLen = (uint16_t)rfalConvBytesToBits(tBL); \ + (ctx).rxBuf = (uint8_t *)(rB); \ + (ctx).rxBufLen = (uint16_t)rfalConvBytesToBits(rBL); \ + (ctx).rxRcvdLen = (uint16_t *)(rdL); \ + (ctx).flags = (uint32_t)RFAL_TXRX_FLAGS_DEFAULT; \ + (ctx).fwt = (uint32_t)(t); + +/*! Computes a Transceive context \a ctx using lengths in bytes + * with the given flags and arguments + * \a ctx : Transceive context to be assigned + * \a tB : txBuf the pointer to the buffer to be sent + * \a tBL : txBuf length in bytes + * \a rB : rxBuf the pointer to the buffer to place the received frame + * \a rBL : rxBuf length in bytes + * \a rBL : rxBuf length in bytes + * \a t : FWT to be used on this transceive in 1/fc + */ +#define rfalCreateByteFlagsTxRxContext(ctx, tB, tBL, rB, rBL, rdL, fl, t) \ + (ctx).txBuf = (uint8_t *)(tB); \ + (ctx).txBufLen = (uint16_t)rfalConvBytesToBits(tBL); \ + (ctx).rxBuf = (uint8_t *)(rB); \ + (ctx).rxBufLen = (uint16_t)rfalConvBytesToBits(rBL); \ + (ctx).rxRcvdLen = (uint16_t *)(rdL); \ + (ctx).flags = (uint32_t)(fl); \ + (ctx).fwt = (uint32_t)(t); + +#define rfalLogE(...) \ + platformLog(__VA_ARGS__) /*!< Macro for the error log method */ +#define rfalLogW(...) \ + platformLog(__VA_ARGS__) /*!< Macro for the warning log method */ +#define rfalLogI(...) \ + platformLog(__VA_ARGS__) /*!< Macro for the info log method */ +#define rfalLogD(...) \ + platformLog(__VA_ARGS__) /*!< Macro for the debug log method */ + +/* +****************************************************************************** +* GLOBAL ENUMS +****************************************************************************** +*/ + +/* RFAL Guard Time (GT) default values */ +#define RFAL_GT_NFCA \ + rfalConvMsTo1fc(5U) /*!< GTA Digital 2.0 6.10.4.1 & B.2 */ +#define RFAL_GT_NFCB \ + rfalConvMsTo1fc(5U) /*!< GTB Digital 2.0 7.9.4.1 & B.3 */ +#define RFAL_GT_NFCF \ + rfalConvMsTo1fc(20U) /*!< GTF Digital 2.0 8.7.4.1 & B.4 */ +#define RFAL_GT_NFCV \ + rfalConvMsTo1fc(5U) /*!< GTV Digital 2.0 9.7.5.1 & B.5 */ +#define RFAL_GT_PICOPASS rfalConvMsTo1fc(1U) /*!< GT Picopass */ +#define RFAL_GT_AP2P rfalConvMsTo1fc(5U) /*!< TIRFG Ecma 340 11.1.1 */ +#define RFAL_GT_AP2P_ADJUSTED \ + rfalConvMsTo1fc(5U + 25U) /*!< Adjusted GT for greater interoperability \ + (Sony XPERIA P, Nokia N9, Huawei P2) */ + +/* RFAL Frame Delay Time (FDT) Listen default values */ +#define RFAL_FDT_LISTEN_NFCA_POLLER \ + 1172U /*!< FDTA,LISTEN,MIN (n=9) Last bit: Logic "1" - tnn,min/2 Digital 1.1 \ + 6.10 ; EMV CCP Spec Book D v2.01 4.8.1.3 */ +#define RFAL_FDT_LISTEN_NFCB_POLLER \ + 1008U /*!< TR0B,MIN Digital 1.1 7.1.3 & A.3 ; EMV CCP Spec Book D \ + v2.01 4.8.1.3 & Table A.5 */ +#define RFAL_FDT_LISTEN_NFCF_POLLER \ + 2672U /*!< TR0F,LISTEN,MIN Digital 1.1 8.7.1.1 & A.4 */ +#define RFAL_FDT_LISTEN_NFCV_POLLER \ + 4310U /*!< FDTV,LISTEN,MIN t1 min Digital 2.1 B.5 ; ISO15693-3 \ + 2009 9.1 */ +#define RFAL_FDT_LISTEN_PICOPASS_POLLER \ + 3400U /*!< ISO15693 t1 min - observed adjustment */ +#define RFAL_FDT_LISTEN_AP2P_POLLER \ + 64U /*!< FDT AP2P No actual FDTListen is required as fields switch and \ + collision avoidance */ +#define RFAL_FDT_LISTEN_NFCA_LISTENER \ + 1172U /*!< FDTA,LISTEN,MIN Digital 1.1 6.10 */ +#define RFAL_FDT_LISTEN_NFCB_LISTENER \ + 1024U /*!< TR0B,MIN Digital 1.1 7.1.3 & A.3 ; EMV CCP Spec Book D \ + v2.01 4.8.1.3 & Table A.5 */ +#define RFAL_FDT_LISTEN_NFCF_LISTENER \ + 2688U /*!< TR0F,LISTEN,MIN Digital 2.1 8.7.1.1 & B.4 */ +#define RFAL_FDT_LISTEN_AP2P_LISTENER \ + 64U /*!< FDT AP2P No actual FDTListen exists as fields switch and collision \ + avoidance */ + +/* RFAL Frame Delay Time (FDT) Poll default values */ +#define RFAL_FDT_POLL_NFCA_POLLER \ + 6780U /*!< FDTA,POLL,MIN Digital 1.1 6.10.3.1 & A.2 */ +#define RFAL_FDT_POLL_NFCA_T1T_POLLER \ + 384U /*!< RRDDT1T,MIN,B1 Digital 1.1 10.7.1 & A.5 */ +#define RFAL_FDT_POLL_NFCB_POLLER \ + 6780U /*!< FDTB,POLL,MIN = TR2B,MIN,DEFAULT Digital 1.1 7.9.3 & A.3 ; \ + EMVCo 3.0 FDTB,PCD,MIN Table A.5 */ +#define RFAL_FDT_POLL_NFCF_POLLER \ + 6800U /*!< FDTF,POLL,MIN Digital 2.1 8.7.3 & B.4 */ +#define RFAL_FDT_POLL_NFCV_POLLER \ + 4192U /*!< FDTV,POLL Digital 2.1 9.7.3.1 & B.5 */ +#define RFAL_FDT_POLL_PICOPASS_POLLER 1790U /*!< FDT Max */ +#define RFAL_FDT_POLL_AP2P_POLLER \ + 6800U /*!< AP2P inhere FDT from the Technology used (use longest: \ + TR0F,POLL,MIN + TR1F) Digital 2.2 17.11.1 */ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! RFAL modes */ +typedef enum { + RFAL_MODE_NONE = 0, /*!< No mode selected/defined */ + RFAL_MODE_POLL_NFCA = + 1, /*!< Mode to perform as NFCA (ISO14443A) Poller (PCD) */ + RFAL_MODE_POLL_NFCA_T1T = + 2, /*!< Mode to perform as NFCA T1T (Topaz) Poller (PCD) */ + RFAL_MODE_POLL_NFCB = + 3, /*!< Mode to perform as NFCB (ISO14443B) Poller (PCD) */ + RFAL_MODE_POLL_B_PRIME = + 4, /*!< Mode to perform as B' Calypso (Innovatron) (PCD) */ + RFAL_MODE_POLL_B_CTS = 5, /*!< Mode to perform as CTS Poller (PCD) */ + RFAL_MODE_POLL_NFCF = 6, /*!< Mode to perform as NFCF (FeliCa) Poller (PCD) */ + RFAL_MODE_POLL_NFCV = + 7, /*!< Mode to perform as NFCV (ISO15963) Poller (PCD) */ + RFAL_MODE_POLL_PICOPASS = + 8, /*!< Mode to perform as PicoPass / iClass Poller (PCD) */ + RFAL_MODE_POLL_ACTIVE_P2P = + 9, /*!< Mode to perform as Active P2P (ISO18092) Initiator */ + RFAL_MODE_LISTEN_NFCA = + 10, /*!< Mode to perform as NFCA (ISO14443A) Listener (PICC) */ + RFAL_MODE_LISTEN_NFCB = + 11, /*!< Mode to perform as NFCA (ISO14443B) Listener (PICC) */ + RFAL_MODE_LISTEN_NFCF = + 12, /*!< Mode to perform as NFCA (ISO15963) Listener (PICC) */ + RFAL_MODE_LISTEN_ACTIVE_P2P = + 13 /*!< Mode to perform as Active P2P (ISO18092) Target */ +} rfalMode; + +/*! RFAL Bit rates */ +typedef enum { + RFAL_BR_106 = 0, /*!< Bit Rate 106 kbit/s (fc/128) */ + RFAL_BR_212 = 1, /*!< Bit Rate 212 kbit/s (fc/64) */ + RFAL_BR_424 = 2, /*!< Bit Rate 424 kbit/s (fc/32) */ + RFAL_BR_848 = 3, /*!< Bit Rate 848 kbit/s (fc/16) */ + RFAL_BR_1695 = 4, /*!< Bit Rate 1695 kbit/s (fc/8) */ + RFAL_BR_3390 = 5, /*!< Bit Rate 3390 kbit/s (fc/4) */ + RFAL_BR_6780 = 6, /*!< Bit Rate 6780 kbit/s (fc/2) */ + RFAL_BR_13560 = 7, /*!< Bit Rate 13560 kbit/s (fc) */ + RFAL_BR_211p88 = + 0xE9, /*!< Bit Rate 211,88 kbit/s (fc/64) Fast Mode VICC->VCD */ + RFAL_BR_105p94 = + 0xEA, /*!< Bit Rate 105,94 kbit/s (fc/128) Fast Mode VICC->VCD */ + RFAL_BR_52p97 = + 0xEB, /*!< Bit Rate 52.97 kbit/s (fc/256) Fast Mode VICC->VCD */ + RFAL_BR_26p48 = 0xEC, /*!< Bit Rate 26,48 kbit/s (fc/512) NFCV VICC->VCD & + VCD->VICC 1of4 */ + RFAL_BR_1p66 = + 0xED, /*!< Bit Rate 1,66 kbit/s (fc/8192) NFCV VCD->VICC 1of256 */ + RFAL_BR_KEEP = + 0xFF /*!< Value indicating to keep the same previous bit rate */ +} rfalBitRate; + +/*! RFAL Compliance modes for upper modules */ +typedef enum { + RFAL_COMPLIANCE_MODE_NFC, /*!< Perform with NFC Forum 1.1 compliance */ + RFAL_COMPLIANCE_MODE_EMV, /*!< Perform with EMVCo compliance */ + RFAL_COMPLIANCE_MODE_ISO /*!< Perform with ISO10373 compliance */ +} rfalComplianceMode; + +/*! RFAL main states flags */ +typedef enum { + RFAL_STATE_IDLE = 0, + RFAL_STATE_INIT = 1, + RFAL_STATE_MODE_SET = 2, + + RFAL_STATE_TXRX = 3, + RFAL_STATE_LM = 4, + RFAL_STATE_WUM = 5 + +} rfalState; + +/*! RFAL transceive states */ +typedef enum { + RFAL_TXRX_STATE_IDLE = 0, + RFAL_TXRX_STATE_INIT = 1, + RFAL_TXRX_STATE_START = 2, + + RFAL_TXRX_STATE_TX_IDLE = 11, + RFAL_TXRX_STATE_TX_WAIT_GT = 12, + RFAL_TXRX_STATE_TX_WAIT_FDT = 13, + RFAL_TXRX_STATE_TX_PREP_TX = 14, + RFAL_TXRX_STATE_TX_TRANSMIT = 15, + RFAL_TXRX_STATE_TX_WAIT_WL = 16, + RFAL_TXRX_STATE_TX_RELOAD_FIFO = 17, + RFAL_TXRX_STATE_TX_WAIT_TXE = 18, + RFAL_TXRX_STATE_TX_DONE = 19, + RFAL_TXRX_STATE_TX_FAIL = 20, + + RFAL_TXRX_STATE_RX_IDLE = 81, + RFAL_TXRX_STATE_RX_WAIT_EON = 82, + RFAL_TXRX_STATE_RX_WAIT_RXS = 83, + RFAL_TXRX_STATE_RX_WAIT_RXE = 84, + RFAL_TXRX_STATE_RX_READ_FIFO = 85, + RFAL_TXRX_STATE_RX_ERR_CHECK = 86, + RFAL_TXRX_STATE_RX_READ_DATA = 87, + RFAL_TXRX_STATE_RX_WAIT_EOF = 88, + RFAL_TXRX_STATE_RX_DONE = 89, + RFAL_TXRX_STATE_RX_FAIL = 90, + +} rfalTransceiveState; + +/*! RFAL transceive flags */ +enum { + RFAL_TXRX_FLAGS_CRC_TX_AUTO = + (0U << 0), /*!< CRC will be generated automatic upon transmission */ + RFAL_TXRX_FLAGS_CRC_TX_MANUAL = + (1U << 0), /*!< CRC was calculated manually, included in txBuffer */ + RFAL_TXRX_FLAGS_CRC_RX_KEEP = + (1U << 1), /*!< Upon Reception keep the CRC in rxBuffer (reflected on rcvd + length) */ + RFAL_TXRX_FLAGS_CRC_RX_REMV = (0U << 1), /*!< Remove the CRC from rxBuffer */ + RFAL_TXRX_FLAGS_NFCIP1_ON = + (1U << 2), /*!< Enable NFCIP1 mode: Add SB(F0) and LEN bytes during Tx and + skip SB(F0) byte during Rx */ + RFAL_TXRX_FLAGS_NFCIP1_OFF = + (0U << 2), /*!< Disable NFCIP1 mode: do not append protocol bytes while Tx + nor skip while Rx */ + RFAL_TXRX_FLAGS_AGC_OFF = + (1U << 3), /*!< Disable Automatic Gain Control, improving multiple devices + collision detection. \b DEPRECATED: flag is depreacted, + usage of Anticollision APIs based on Analog Config table + with RFAL_ANALOG_CONFIG_ANTICOL settings */ + RFAL_TXRX_FLAGS_AGC_ON = + (0U << 3), /*!< Enable Automatic Gain Control, improving single device + reception \b DEPRECATED: flag is deprecated, + usage of Anticollision APIs based on Analog Config table + with RFAL_ANALOG_CONFIG_ANTICOL settings */ + RFAL_TXRX_FLAGS_PAR_RX_KEEP = + (1U << 4), /*!< Disable Parity check and keep the Parity and CRC bits in + the received buffer */ + RFAL_TXRX_FLAGS_PAR_RX_REMV = + (0U << 4), /*!< Enable Parity check and remove the parity bits from the + received buffer */ + RFAL_TXRX_FLAGS_PAR_TX_NONE = + (1U << 5), /*!< Disable automatic Parity generation (ISO14443A) and use + the one provided in the buffer*/ + RFAL_TXRX_FLAGS_PAR_TX_AUTO = + (0U << 5), /*!< Enable automatic Parity generation (ISO14443A) */ + RFAL_TXRX_FLAGS_NFCV_FLAG_MANUAL = + (1U << 6), /*!< Disable automatic adaption of flag byte (ISO15693) + according to current comm params */ + RFAL_TXRX_FLAGS_NFCV_FLAG_AUTO = + (0U << 6), /*!< Enable automatic adaption of flag byte (ISO115693) + according to current comm params */ + RFAL_TXRX_FLAGS_CRC_RX_MANUAL = (1U << 7), /*!< Disable automatic CRC check */ + RFAL_TXRX_FLAGS_CRC_RX_AUTO = (0U << 7), /*!< Enable automatic CRC check */ +}; + +/*! RFAL error handling */ +typedef enum { + RFAL_ERRORHANDLING_NONE = + 0, /*!< No special error handling will be performed */ + RFAL_ERRORHANDLING_EMD = 1 /*!< EMD suppression enabled Digital 2.1 4.1.1.1 + ; EMVCo 3.0 4.9.2 ; ISO 14443-3 8.3 */ +} rfalEHandling; + +/*! Struct that holds all context to be used on a Transceive */ +typedef struct { + uint8_t *txBuf; /*!< (In) Buffer where outgoing message is located */ + uint16_t txBufLen; /*!< (In) Length of the outgoing message in bits */ + + uint8_t *rxBuf; /*!< (Out) Buffer where incoming message will be placed */ + uint16_t + rxBufLen; /*!< (In) Maximum length of the incoming message in bits */ + uint16_t *rxRcvdLen; /*!< (Out) Actual received length in bits */ + + uint32_t flags; /*!< (In) TransceiveFlags indication special handling */ + uint32_t fwt; /*!< (In) Frame Waiting Time in 1/fc */ +} rfalTransceiveContext; + +/*! System callback to indicate an event that requires a system reRun */ +typedef void (*rfalUpperLayerCallback)(void); + +/*! Callback to be executed before a Transceive */ +typedef void (*rfalPreTxRxCallback)(void); + +/*! Callback to be executed after a Transceive */ +typedef void (*rfalPostTxRxCallback)(void); + +/*! Callback to sync actual transmission start */ +typedef bool (*rfalSyncTxRxCallback)(void); + +/*! Callback upon External Field detected while in Listen Mode */ +typedef void (*rfalLmEonCallback)(void); + +/*******************************************************************************/ +/* ISO14443A */ +/*******************************************************************************/ + +/*! RFAL ISO 14443A Short Frame Command */ +typedef enum { + RFAL_14443A_SHORTFRAME_CMD_WUPA = 0x52, /*!< ISO14443A WUPA / NFC-A ALL_REQ */ + RFAL_14443A_SHORTFRAME_CMD_REQA = 0x26 /*!< ISO14443A REQA / NFC-A SENS_REQ */ +} rfal14443AShortFrameCmd; + +/*******************************************************************************/ + +/*******************************************************************************/ +/* FeliCa */ +/*******************************************************************************/ + +#define RFAL_FELICA_LEN_LEN 1U /*!< FeliCa LEN byte length */ +#define RFAL_FELICA_POLL_REQ_LEN \ + (RFAL_FELICA_LEN_LEN + 1U + 2U + 1U + \ + 1U) /*!< FeliCa Poll Request length (LEN + CMD + SC + RC + TSN) */ +#define RFAL_FELICA_POLL_RES_LEN \ + (RFAL_FELICA_LEN_LEN + 1U + 8U + 8U + \ + 2U) /*!< Maximum FeliCa Poll Response length (LEN + CMD + NFCID2 + PAD + \ + RD) */ +#define RFAL_FELICA_POLL_MAX_SLOTS \ + 16U /*!< Maximum number of slots (TSN) on FeliCa Poll */ + +/*! NFC-F RC (Request Code) codes NFC Forum Digital 1.1 Table 42 */ +enum { + RFAL_FELICA_POLL_RC_NO_REQUEST = + 0x00U, /*!< RC: No System Code information requested */ + RFAL_FELICA_POLL_RC_SYSTEM_CODE = + 0x01U, /*!< RC: System Code information requested */ + RFAL_FELICA_POLL_RC_COM_PERFORMANCE = + 0x02U /*!< RC: Advanced protocol features supported */ +}; + +/*! NFC-F TSN (Time Slot Number) codes NFC Forum Digital 1.1 Table 43 */ +typedef enum { + RFAL_FELICA_1_SLOT = 0, /*!< TSN with number of Time Slots: 1 */ + RFAL_FELICA_2_SLOTS = 1, /*!< TSN with number of Time Slots: 2 */ + RFAL_FELICA_4_SLOTS = 3, /*!< TSN with number of Time Slots: 4 */ + RFAL_FELICA_8_SLOTS = 7, /*!< TSN with number of Time Slots: 8 */ + RFAL_FELICA_16_SLOTS = 15 /*!< TSN with number of Time Slots: 16 */ +} rfalFeliCaPollSlots; + +/*! NFCF Poll Response NFC Forum Digital 1.1 Table 44 */ +typedef uint8_t rfalFeliCaPollRes[RFAL_FELICA_POLL_RES_LEN]; + +/*******************************************************************************/ + +/*******************************************************************************/ +/* Listen Mode */ +/*******************************************************************************/ + +/*! RFAL Listen Mode NFCID Length */ +typedef enum { + RFAL_LM_NFCID_LEN_04 = + RFAL_NFCID1_SINGLE_LEN, /*!< Listen mode indicates 4 byte NFCID */ + RFAL_LM_NFCID_LEN_07 = + RFAL_NFCID1_DOUBLE_LEN, /*!< Listen mode indicates 7 byte NFCID */ + RFAL_LM_NFCID_LEN_10 = + RFAL_NFCID1_TRIPLE_LEN, /*!< Listen mode indicates 10 byte NFCID */ +} rfalLmNfcidLen; + +/*! RFAL Listen Mode States */ +typedef enum { + RFAL_LM_STATE_NOT_INIT = 0x00, /*!< Not Initialized state */ + RFAL_LM_STATE_POWER_OFF = 0x01, /*!< Power Off state */ + RFAL_LM_STATE_IDLE = 0x02, /*!< Idle state Activity 1.1 5.2 */ + RFAL_LM_STATE_READY_A = + 0x03, /*!< Ready A state Activity 1.1 5.3 5.4 & 5.5 */ + RFAL_LM_STATE_READY_B = 0x04, /*!< Ready B state Activity 1.1 5.11 5.12 */ + RFAL_LM_STATE_READY_F = 0x05, /*!< Ready F state Activity 1.1 5.15 */ + RFAL_LM_STATE_ACTIVE_A = 0x06, /*!< Active A state Activity 1.1 5.6 */ + RFAL_LM_STATE_CARDEMU_4A = + 0x07, /*!< Card Emulation 4A state Activity 1.1 5.10 */ + RFAL_LM_STATE_CARDEMU_4B = + 0x08, /*!< Card Emulation 4B state Activity 1.1 5.14 */ + RFAL_LM_STATE_CARDEMU_3 = + 0x09, /*!< Card Emulation 3 state Activity 1.1 5.18 */ + RFAL_LM_STATE_TARGET_A = 0x0A, /*!< Target A state Activity 1.1 5.9 */ + RFAL_LM_STATE_TARGET_F = 0x0B, /*!< Target F state Activity 1.1 5.17 */ + RFAL_LM_STATE_SLEEP_A = 0x0C, /*!< Sleep A state Activity 1.1 5.7 */ + RFAL_LM_STATE_SLEEP_B = 0x0D, /*!< Sleep B state Activity 1.1 5.13 */ + RFAL_LM_STATE_READY_Ax = + 0x0E, /*!< Ready A* state Activity 1.1 5.3 5.4 & 5.5 */ + RFAL_LM_STATE_ACTIVE_Ax = 0x0F, /*!< Active A* state Activity 1.1 5.6 */ + RFAL_LM_STATE_SLEEP_AF = 0x10, /*!< Sleep AF state Activity 1.1 5.19 */ +} rfalLmState; + +/*! RFAL Listen Mode Passive A configs */ +typedef struct { + rfalLmNfcidLen nfcidLen; /*!< NFCID Len (4, 7 or 10 bytes) */ + uint8_t nfcid[RFAL_NFCID1_TRIPLE_LEN]; /*!< NFCID */ + uint8_t SENS_RES[RFAL_LM_SENS_RES_LEN]; /*!< NFC-106k; SENS_REQ Response */ + uint8_t SEL_RES; /*!< SEL_RES (SAK) with complete NFCID1 (UID) */ +} rfalLmConfPA; + +/*! RFAL Listen Mode Passive B configs */ +typedef struct { + uint8_t SENSB_RES[RFAL_LM_SENSB_RES_LEN]; /*!< SENSF_RES */ +} rfalLmConfPB; + +/*! RFAL Listen Mode Passive F configs */ +typedef struct { + uint8_t SC[RFAL_LM_SENSF_SC_LEN]; /*!< System Code to listen for */ + uint8_t SENSF_RES[RFAL_LM_SENSF_RES_LEN]; /*!< SENSF_RES */ +} rfalLmConfPF; + +/*! RFAL low power modes */ +typedef enum { + RFAL_LP_MODE_PD = 0, /*!< Set RF Chip in Power Down state */ + RFAL_LP_MODE_HR = + 1 /*!< Set RF Chip in Hold Reset state (available for specific devices) */ +} rfalLpMode; + +/*******************************************************************************/ + +/*******************************************************************************/ +/* Wake-Up Mode */ +/*******************************************************************************/ + +#define RFAL_WUM_REFERENCE_AUTO \ + 0xFFU /*!< Indicates new reference is set by the driver */ + +/*! RFAL Wake-Up Mode States */ +typedef enum { + RFAL_WUM_STATE_NOT_INIT = 0x00, /*!< Not Initialized state */ + RFAL_WUM_STATE_INITIALIZING = 0x01, /*!< Wake-Up mode is starting */ + RFAL_WUM_STATE_ENABLED = 0x02, /*!< Wake-Up mode is enabled */ + RFAL_WUM_STATE_ENABLED_WOKE = + 0x03, /*!< Wake-Up mode enabled and has received IRQ(s)*/ +} rfalWumState; + +/*******************************************************************************/ + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief RFAL Initialize + * + * Initializes RFAL layer and the ST25R391x + * Ensures that ST25R is properly connected and returns error if any problem + * is detected + * + * \warning rfalAnalogConfigInitialize() should be called before so that + * the Analog config table has been previously initialized. + * + * \return RFAL_ERR_HW_MISMATCH : Expected HW do not match or communication + *error \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalInitialize(void); + +/*! + ***************************************************************************** + * \brief RFAL Calibrate + * + * Performs necessary calibration of RF chip in case it is indicated by current + * register settings. E.g. antenna calibration and regulator calibration + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode rfalCalibrate(void); + +/*! + ***************************************************************************** + * \brief RFAL Adjust Regulators + * + * Adjusts ST25R391x regulators + * + * \param[out] result : the result of the calibrate antenna in mV + * NULL if result not requested + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode rfalAdjustRegulators(uint16_t *result); + +/*! + ***************************************************************************** + * \brief RFAL Set System Callback + * + * Sets a callback for the driver to call when an event has occurred that + * may require the system to be notified + * + * \param[in] pFunc : method pointer for the upper layer callback + * + ***************************************************************************** + */ +void rfalSetUpperLayerCallback(rfalUpperLayerCallback pFunc); + +/*! + ***************************************************************************** + * \brief RFAL Set Pre Tx Callback + * + * Sets a callback for the driver to call before a Transceive + * + * \param[in] pFunc : method pointer for the Pre Tx callback + * + ***************************************************************************** + */ +void rfalSetPreTxRxCallback(rfalPreTxRxCallback pFunc); + +/*! + ***************************************************************************** + * \brief RFAL Sync Pre Tx Callback + * + * Sets a callback for the driver to execute in order to Syncronize actual + * transmission start. + * If the callback is set TxRx will hold until Sync callback returns true. + * + * \param[in] pFunc : method pointer for the Sync Tx callback + * + ***************************************************************************** + */ +void rfalSetSyncTxRxCallback(rfalSyncTxRxCallback pFunc); + +/*! + ***************************************************************************** + * \brief RFAL Set Post Tx Callback + * + * Sets a callback for the driver to call after a Transceive + * + * \param[in] pFunc : method pointer for the Post Tx callback + * + ***************************************************************************** + */ +void rfalSetPostTxRxCallback(rfalPostTxRxCallback pFunc); + +/*! + ***************************************************************************** + * \brief RFAL Set LM EON Callback + * + * Sets a callback upon External Field On detected while in Passive Listen Mode + * + * \warning callabck available only on applicable devices, + * supporting Passive Listen Mode + * + * \param[in] pFunc : method pointer for the LM EON callback + * + ***************************************************************************** + */ +void rfalSetLmEonCallback(rfalLmEonCallback pFunc); + +/*! + ***************************************************************************** + * \brief RFAL Deinitialize + * + * Deinitializes RFAL layer and the ST25R + * + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode rfalDeinitialize(void); + +/*! + ***************************************************************************** + * \brief RFAL Set Mode + * + * Sets the mode that RFAL will operate on the following communications. + * Proper initializations will be performed on the ST25R + * + * \warning bit rate value RFAL_BR_KEEP is not allowed, only in rfalSetBitRate() + * + * \warning the mode will be applied immediately on the RFchip regardless of + * any ongoing operations like Transceive, ListenMode + * + * \param[in] mode : mode for the RFAL/RFchip to perform + * \param[in] txBR : transmit bit rate + * \param[in] rxBR : receive bit rate + * + * \see rfalIsGTExpired + * \see rfalMode + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode rfalSetMode(rfalMode mode, rfalBitRate txBR, rfalBitRate rxBR); + +/*! + ***************************************************************************** + * \brief RFAL Get Mode + * + * Gets the mode that RFAL is set to operate + * + * \see rfalMode + * + * \return rfalMode : The current RFAL mode + ***************************************************************************** + */ +rfalMode rfalGetMode(void); + +/*! + ***************************************************************************** + * \brief RFAL Set Bit Rate + * + * Sets the Tx and Rx bit rates with the given values + * The bit rate change is applied on the RF chip remaining in the same + * mode previous defined with rfalSetMode() + * + * If no mode is defined bit rates will not be applied and an error + * is returned + * + * \param[in] txBR : transmit bit rate + * \param[in] rxBR : receive bit rate + * + * \see rfalSetMode + * \see rfalMode + * \see rfalBitRate + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NOT_IMPLEMENTED : Mode not implemented + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode rfalSetBitRate(rfalBitRate txBR, rfalBitRate rxBR); + +/*! + ***************************************************************************** + * \brief RFAL Get Bit Rate + * + * Gets the Tx and Rx current bit rates + * + * If RFAL is not initialized or mode not set the bit rates return will + * be invalid RFAL_BR_KEEP + * + * \param[out] txBR : RFAL's current Tx Bit Rate + * \param[out] rxBR : RFAL's current Rx Bit Rate + * + * \see rfalSetBitRate + * \see rfalBitRate + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalGetBitRate(rfalBitRate *txBR, rfalBitRate *rxBR); + +/*! + ***************************************************************************** + * \brief Set Error Handling Mode + * + * Sets the error handling mode to be used by the RFAL + * + * \param[in] eHandling : the error handling mode + * + ***************************************************************************** + */ +void rfalSetErrorHandling(rfalEHandling eHandling); + +/*! + ***************************************************************************** + * \brief Get Error Handling Mode + * + * Gets the error handling mode currently used by the RFAL + * + * \return rfalEHandling : Current error handling mode + ***************************************************************************** + */ +rfalEHandling rfalGetErrorHandling(void); + +/*! + ***************************************************************************** + * \brief Set Observation Mode + * + * Sets ST25R391x observation modes for RF debug purposes + * + * \param[in] txMode : the observation mode to be used during transmission + * \param[in] rxMode : the observation mode to be used during reception + * + * \warning The Observation Mode is an advanced feature and should be set + * according to the documentation of the part number in use. + * Please refer to the corresponding Datasheet or Application Note(s) + ***************************************************************************** + */ +void rfalSetObsvMode(uint32_t txMode, uint32_t rxMode); + +/*! + ***************************************************************************** + * \brief Get Observation Mode + * + * Gets ST25R391x the current configured observation modes + * + * \param[in] txMode : the current observation mode configured for transmission + * \param[in] rxMode : the current observation mode configured for reception + * + ***************************************************************************** + */ +void rfalGetObsvMode(uint8_t *txMode, uint8_t *rxMode); + +/*! + ***************************************************************************** + * \brief Disable Observation Mode + * + * Disables the ST25R391x observation mode + ***************************************************************************** + */ +void rfalDisableObsvMode(void); + +/*! + ***************************************************************************** + * \brief RFAL Set FDT Poll + * + * Sets the Frame Delay Time (FDT) to be used on the following + * communications. + * + * FDT Poll is the minimum time following a Poll Frame during + * which no subsequent Poll Frame can be sent (without a response from + * the Listener in between) + * FDTx,PP,MIN - Digital 1.1 6.10.2 & 7.9.2 & 8.7.2 + * + * \param[in] FDTPoll : Frame Delay Time in 1/fc cycles + * + ***************************************************************************** + */ +void rfalSetFDTPoll(uint32_t FDTPoll); + +/*! + ***************************************************************************** + * \brief RFAL Set FDT Poll + * + * Gets the current Frame Delay Time (FDT) + * + * FDT Poll is the minimum time following a Poll Frame during + * which no subsequent Poll Frame can be sent (without a response from + * the Listener in between) + * FDTx,PP,MIN - Digital 1.1 6.10.2 & 7.9.2 & 8.7.2 + * + * \return FDT : current FDT value in 1/fc cycles + * + ***************************************************************************** + */ +uint32_t rfalGetFDTPoll(void); + +/*! + ***************************************************************************** + * \brief RFAL Set FDT Listen + * + * Sets the Frame Delay Time (FDT) Listen minimum to be used on the + * following communications. + * + * FDT Listen is the minimum time between a Poll Frame and a Listen Frame + * FDTx,LISTEN,MIN - Digital 1.1 6.10.1 & 7.9.1 & 8.7.1 + * + * \param[in] FDTListen : Frame Delay Time in 1/fc cycles + * + ***************************************************************************** + */ +void rfalSetFDTListen(uint32_t FDTListen); + +/*! + ***************************************************************************** + * \brief RFAL Set FDT Listen + * + * Gets the Frame Delay Time (FDT) Listen minimum + * + * FDT Listen is the minimum time between a Poll Frame and a Listen Frame + * FDTx,LISTEN,MIN - Digital 1.1 6.10.1 & 7.9.1 & 8.7.1 + * + * \return FDT : current FDT value in 1/fc cycles + * + ***************************************************************************** + */ +uint32_t rfalGetFDTListen(void); + +/*! + ***************************************************************************** + * \brief RFAL Get GT + * + * Gets the current Guard Time (GT) + * + * GT is the minimum time when a device in Listen Mode is exposed to an + * unmodulated carrier + * + * \return GT : Guard Time in 1/fc cycles + * + ***************************************************************************** + */ +uint32_t rfalGetGT(void); + +/*! + ***************************************************************************** + * \brief RFAL Set GT + * + * Sets the Guard Time (GT) to be used on the following communications. + * + * GT is the minimum time when a device in Listen Mode is exposed to an + * unmodulated carrier + * + * \param[in] GT : Guard Time in 1/fc cycles + * RFAL_GT_NONE if no GT should be applied + * + ***************************************************************************** + */ +void rfalSetGT(uint32_t GT); + +/*! + ***************************************************************************** + * \brief RFAL Is GT expired + * + * Checks whether the GT timer has expired + * + * \return true : GT has expired or not running + * \return false : GT is still running + * + ***************************************************************************** + */ +bool rfalIsGTExpired(void); + +/*! + ***************************************************************************** + * \brief RFAL Turn Field On and Start GT + * + * Turns the Field On, performing Initial Collision Avoidance + * + * After Field On, if GT was set before, it starts the GT timer to be + * used on the following communications. + * + * \return RFAL_ERR_RF_COLLISION : External field detected + * \return RFAL_ERR_NONE : Field turned On + * + ***************************************************************************** + */ +ReturnCode rfalFieldOnAndStartGT(void); + +/*! + ***************************************************************************** + * \brief RFAL Turn Field Off + * + * Turns the Field Off + * + * \return RFAL_ERR_NONE : Field turned Off + ***************************************************************************** + */ +ReturnCode rfalFieldOff(void); + +/***************************************************************************** + * Transceive * + *****************************************************************************/ + +/*! + ***************************************************************************** + * \brief RFAL Set transceive context + * + * Set the context that will be used for the following Transceive + * Output and input buffers have to be passed and all other details prior to + * the Transceive itself has been started + * + * This method only sets the context. Once set, rfalWorker has + * to be executed until is done + * + * \param[in] ctx : the context for the following Transceive + * + * \see rfalWorker + * \see rfalGetTransceiveStatus + * + * \return RFAL_ERR_NONE : Done with no error + * \return RFAL_ERR_WRONG_STATE : Not initialized properly + * \return RFAL_ERR_PARAM : Invalid parameter or configuration + ***************************************************************************** + */ +ReturnCode rfalStartTransceive(const rfalTransceiveContext *ctx); + +/*! + ***************************************************************************** + * \brief Get Transceive State + * + * Gets current Transceive internal State + * + * \return rfalTransceiveState : the current Transceive internal State + ***************************************************************************** + */ +rfalTransceiveState rfalGetTransceiveState(void); + +/*! + ***************************************************************************** + * \brief Get Transceive Status + * + * Gets current Transceive status + * + * \return RFAL_ERR_NONE : Transceive done with no error + * \return RFAL_ERR_BUSY : Transceive ongoing + * \return RFAL_ERR_XXXX : Error occurred + * \return RFAL_ERR_TIMEOUT : No response + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_LINK_LOSS : Link Loss - External Field is Off + * \return RFAL_ERR_RF_COLLISION : Collision detected + * \return RFAL_ERR_IO : Internal error + ***************************************************************************** + */ +ReturnCode rfalGetTransceiveStatus(void); + +/*! + ***************************************************************************** + * \brief Is Transceive in Tx + * + * Checks if Transceive is in Transmission state + * + * \return true Transmission ongoing + * \return false Not in transmission state + ***************************************************************************** + */ +bool rfalIsTransceiveInTx(void); + +/*! + ***************************************************************************** + * \brief Is Transceive in Rx + * + * Checks if Transceive is in Reception state + * + * \return true Transmission done/reception ongoing + * \return false Not in reception state + ***************************************************************************** + */ +bool rfalIsTransceiveInRx(void); + +/*! + ***************************************************************************** + * \brief Get Transceive RSSI + * + * Gets the RSSI value of the last executed Transceive in mV + * + * \param[out] rssi : RSSI value + * + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalGetTransceiveRSSI(uint16_t *rssi); + +/*! + ***************************************************************************** + * \brief Is Transceive Subcarrier Detected + * + * Checks on the last executed Transceive a subcarrier was detected + * + * \return true Subcarrier was detected + * \return false No subcarrier detected | Not supported + ***************************************************************************** + */ +bool rfalIsTransceiveSubcDetected(void); + +/*! + ***************************************************************************** + * \brief RFAL Worker + * + * This runs RFAL layer, which drives the actual Transceive procedure + * It MUST be executed frequently in order to execute the RFAL internal + * states and perform the requested operations + * + ***************************************************************************** + */ +void rfalWorker(void); + +/***************************************************************************** + * ISO1443A * + *****************************************************************************/ + +/*! + ***************************************************************************** + * \brief Transceives an ISO14443A ShortFrame + * + * Sends REQA or WUPA to detect if there is any PICC in the field + * + * \param[in] txCmd: Command to be sent: + * 0x52 WUPA / ALL_REQ + * 0x26 REQA / SENS_REQ + * \param[out] rxBuf : buffer to place the response + * \param[in] rxBufLen : length of rxBuf in bytes + * \param[out] rxRcvdLen: received length in bits + * \param[in] fwt : Frame Waiting Time in 1/fc + * + * \warning If fwt is set to RFAL_FWT_NONE it will make endlessly for + * a response, which on a blocking method may not be the + * desired usage + * + * \return RFAL_ERR_NONE : If there is response + * \return RFAL_ERR_TIMEOUT : If there is no response + * \return RFAL_ERR_RF_COLLISION : A collision was detected + * + ***************************************************************************** + */ +ReturnCode rfalISO14443ATransceiveShortFrame(rfal14443AShortFrameCmd txCmd, + uint8_t *rxBuf, uint8_t rxBufLen, + uint16_t *rxRcvdLen, uint32_t fwt); + +/*! + ***************************************************************************** + * \brief Sends an ISO14443A Anticollision Frame + * + * This is used to perform ISO14443A anti-collision. + * \note Anticollision is sent without CRC + * + * + * \param[in,out] buf : reference to ANTICOLLISION command (with known + *UID if any) to be sent (also out param) reception will be place on this buf + *after bytesToSend buffer must be capable of holding a whole Anticollison frame + *(rfalNfcaSelReq) \param[in,out] bytesToSend: reference number of full bytes to + *be sent (including CMD byte and SEL_PAR) if a collision occurs will contain + *the number of clear bytes \param[in,out] bitsToSend : reference to number of + *bits (0-7) to be sent; and received (also out param) if a collision occurs + *will indicate the number of clear bits (also out param) \param[out] rxLength + *: reference to the return the received length in bits \param[in] fwt : + *Frame Waiting Time in 1/fc + * + * \return RFAL_ERR_NONE if there is no error + ***************************************************************************** + */ +ReturnCode rfalISO14443ATransceiveAnticollisionFrame(uint8_t *buf, + uint8_t *bytesToSend, + uint8_t *bitsToSend, + uint16_t *rxLength, + uint32_t fwt); + +/*! + ***************************************************************************** + * \brief Start ISO14443A Anticollision Frame transceive + * + * This starts the transceive of an ISO14443A anti-collision frame. + * \note Anticollision is sent without CRC + * + * + * \param[in,out] buf : reference to ANTICOLLISION command (with known + *UID if any) to be sent (also out param) reception will be place on this buf + *after bytesToSend buffer must be capable of holding a whole Anticollison frame + *(rfalNfcaSelReq) \param[in,out] bytesToSend: reference number of full bytes to + *be sent (including CMD byte and SEL_PAR) if a collision occurs will contain + *the number of clear bytes \param[in,out] bitsToSend : reference to number of + *bits (0-7) to be sent; and received (also out param) if a collision occurs + *will indicate the number of clear bits (also out param) \param[out] rxLength + *: reference to the return the received length in bits \param[in] fwt : + *Frame Waiting Time in 1/fc + * + * \return RFAL_ERR_NONE if there is no error + ***************************************************************************** + */ +ReturnCode rfalISO14443AStartTransceiveAnticollisionFrame(uint8_t *buf, + uint8_t *bytesToSend, + uint8_t *bitsToSend, + uint16_t *rxLength, + uint32_t fwt); + +/*! + ***************************************************************************** + * \brief Get ISO14443A Anticollision Frame Status + * + * This gets the ISO14443A anti-collision frame status. + * + * + * \return RFAL_ERR_NONE if there is no error + ***************************************************************************** + */ +ReturnCode rfalISO14443AGetTransceiveAnticollisionFrameStatus(void); + +/***************************************************************************** + * FeliCa * + *****************************************************************************/ + +/*! + ***************************************************************************** + * \brief FeliCa Poll + * + * Sends a Poll Request and collects all Poll Responses according to the + * given slots + * + * + * \param[in] slots : number of slots for the Poll Request + * \param[in] sysCode : system code (SC) for the Poll Request + * \param[in] reqCode : request code (RC) for the Poll Request + * \param[out] pollResList : list of all responses + * \param[in] pollResListSize : number of responses that can be placed in + *pollResList \param[out] devicesDetected : number of cards found \param[out] + *collisionsDetected: number of collisions detected + * + * \return RFAL_ERR_NONE : If there is no error + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_TIMEOUT : If there is no response + ***************************************************************************** + */ +ReturnCode rfalFeliCaPoll(rfalFeliCaPollSlots slots, uint16_t sysCode, + uint8_t reqCode, rfalFeliCaPollRes *pollResList, + uint8_t pollResListSize, uint8_t *devicesDetected, + uint8_t *collisionsDetected); + +/*! + ***************************************************************************** + * \brief Start FeliCa Poll + * + * Triggers a Poll Request and all Poll Responses will be collected according + * to the given nuber of slots + * + * + * \param[in] slots : number of slots for the Poll Request + * \param[in] sysCode : system code (SC) for the Poll Request + * \param[in] reqCode : request code (RC) for the Poll Request + * \param[out] pollResList : list of all responses + * \param[in] pollResListSize : number of responses that can be placed in + *pollResList \param[out] devicesDetected : number of cards found \param[out] + *collisionsDetected: number of collisions detected + * + * \return RFAL_ERR_NONE : If there is no error + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + ***************************************************************************** + */ +ReturnCode rfalStartFeliCaPoll(rfalFeliCaPollSlots slots, uint16_t sysCode, + uint8_t reqCode, rfalFeliCaPollRes *pollResList, + uint8_t pollResListSize, + uint8_t *devicesDetected, + uint8_t *collisionsDetected); + +/*! + ***************************************************************************** + * \brief Get FeliCa Poll Status + * + * Gets the current state of the Felica Poll Request triggered before + * by rfalStartFeliCaPoll() + * + * + * + * \return RFAL_ERR_NONE : If there is no error + * \return RFAL_ERR_BUSY : Operation ongoing + * \return RFAL_ERR_TIMEOUT : If there is no response + ***************************************************************************** + */ +ReturnCode rfalGetFeliCaPollStatus(void); + +/***************************************************************************** + * ISO15693 * + *****************************************************************************/ + +/*! + ***************************************************************************** + * \brief Sends an ISO15693 Anticollision Frame + * + * This send the Anticollision|Inventory frame (INVENTORY_REQ) + * + * \warning rxBuf must be able to contain the payload and CRC + * + * \param[in] txBuf : Buffer where outgoing message is located + * \param[in] txBufLen : Length of the outgoing message in bytes + * \param[out] rxBuf : Buffer where incoming message will be placed + * \param[in] rxBufLen : Maximum length of the incoming message in bytes + * \param[out] actLen : Actual received length in bits + * + * \return RFAL_ERR_NONE : Transceive done with no error + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_IO : Internal error + ***************************************************************************** + */ +ReturnCode rfalISO15693TransceiveAnticollisionFrame(uint8_t *txBuf, + uint8_t txBufLen, + uint8_t *rxBuf, + uint8_t rxBufLen, + uint16_t *actLen); + +/*! + ***************************************************************************** + * \brief Sends an ISO15693 Anticollision EOF + * + * This sends the Anticollision|Inventory EOF used as a slot marker + * + * \warning rxBuf must be able to contain the payload and CRC + * + * \param[out] rxBuf : Buffer where incoming message will be placed + * \param[in] rxBufLen : Maximum length of the incoming message in bytes + * \param[out] actLen : Actual received length in bits + * + * \return RFAL_ERR_NONE : Transceive done with no error + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_IO : Internal error + ***************************************************************************** + */ +ReturnCode rfalISO15693TransceiveEOFAnticollision(uint8_t *rxBuf, + uint8_t rxBufLen, + uint16_t *actLen); + +/*! + ***************************************************************************** + * \brief Sends an ISO15693 EOF + * + * This is method sends an ISO15693 (EoF) used for a Write operation + * + * \warning rxBuf must be able to contain the payload and CRC + * + * \param[out] rxBuf : Buffer where incoming message will be placed + * \param[in] rxBufLen : Maximum length of the incoming message in bytes + * \param[out] actLen : Actual received length in bytes + * + * \return RFAL_ERR_NONE : Transceive done with no error + * \return RFAL_ERR_IO : Internal error + ***************************************************************************** + */ +ReturnCode rfalISO15693TransceiveEOF(uint8_t *rxBuf, uint16_t rxBufLen, + uint16_t *actLen); + +/*! + ***************************************************************************** + * \brief Transceive Blocking Tx + * + * This is method triggers a Transceive and executes it blocking until the + * Tx has been completed + * + * \param[in] txBuf : Buffer where outgoing message is located + * \param[in] txBufLen : Length of the outgoing message in bytes + * \param[out] rxBuf : Buffer where incoming message will be placed + * \param[in] rxBufLen : Maximum length of the incoming message in bytes + * \param[out] actLen : Actual received length in bits + * \param[in] flags : TransceiveFlags indication special handling + * \param[in] fwt : Frame Waiting Time in 1/fc + * + * \return RFAL_ERR_NONE : Transceive done with no error + * \return RFAL_ERR_BUSY : Transceive ongoing + * \return RFAL_ERR_XXXX : Error occurred + * \return RFAL_ERR_LINK_LOSS : Link Loss - External Field is Off + * \return RFAL_ERR_RF_COLLISION : Collision detected + * \return RFAL_ERR_IO : Internal error + ***************************************************************************** + */ +ReturnCode rfalTransceiveBlockingTx(uint8_t *txBuf, uint16_t txBufLen, + uint8_t *rxBuf, uint16_t rxBufLen, + uint16_t *actLen, uint32_t flags, + uint32_t fwt); + +/*! + ***************************************************************************** + * \brief Transceive Blocking Rx + * + * This is method executes the reception of an ongoing Transceive triggered + * before by rfalTransceiveBlockingTx() + * + * \return RFAL_ERR_NONE : Transceive done with no error + * \return RFAL_ERR_BUSY : Transceive ongoing + * \return RFAL_ERR_XXXX : Error occurred + * \return RFAL_ERR_TIMEOUT : No response + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_LINK_LOSS : Link Loss - External Field is Off + * \return RFAL_ERR_RF_COLLISION : Collision detected + * \return RFAL_ERR_IO : Internal error + ***************************************************************************** + */ +ReturnCode rfalTransceiveBlockingRx(void); + +/*! + ***************************************************************************** + * \brief Transceive Blocking + * + * This is method triggers a Transceive and executes it blocking until it + * has been completed + * + * \param[in] txBuf : Buffer where outgoing message is located + * \param[in] txBufLen : Length of the outgoing message in bytes + * \param[out] rxBuf : Buffer where incoming message will be placed + * \param[in] rxBufLen : Maximum length of the incoming message in bytes + * \param[out] actLen : Actual received length in bytes + * \param[in] flags : TransceiveFlags indication special handling + * \param[in] fwt : Frame Waiting Time in 1/fc + * + * \return RFAL_ERR_NONE : Transceive done with no error + * \return RFAL_ERR_BUSY : Transceive ongoing + * \return RFAL_ERR_XXXX : Error occurred + * \return RFAL_ERR_TIMEOUT : No response + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PAR : Parity error detected + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_LINK_LOSS : Link Loss - External Field is Off + * \return RFAL_ERR_RF_COLLISION : Collision detected + * \return RFAL_ERR_IO : Internal error + ***************************************************************************** + */ +ReturnCode rfalTransceiveBlockingTxRx(uint8_t *txBuf, uint16_t txBufLen, + uint8_t *rxBuf, uint16_t rxBufLen, + uint16_t *actLen, uint32_t flags, + uint32_t fwt); + +/***************************************************************************** + * Listen Mode * + *****************************************************************************/ + +/*! + ***************************************************************************** + * \brief Is external Field On + * + * Checks if external field (other peer/device) is on/detected + * + * \return true External field is On + * \return false No external field is detected + * + ***************************************************************************** + */ +bool rfalIsExtFieldOn(void); + +/*! + ***************************************************************************** + * \brief Listen Mode start + * + * Configures RF Chip to go into listen mode enabling the given technologies + * + * + * \param[in] lmMask: mask with the enabled/disabled listen modes + * use: RFAL_LM_MASK_NFCA ; RFAL_LM_MASK_NFCB ; + * RFAL_LM_MASK_NFCF ; RFAL_LM_MASK_ACTIVE_P2P + * \param[in] confA: pointer to Passive A configurations (NULL if disabled) + * \param[in] confB: pointer to Passive B configurations (NULL if disabled) + * \param[in] confF: pointer to Passive F configurations (NULL if disabled) + * \param[in] rxBuf: buffer to place incoming data + * \param[in] rxBufLen: length in bits of rxBuf + * \param[in] rxLen: pointer to write the data length in bits placed into + *rxBuf + * + * + * \return RFAL_ERR_WRONG_STATE : Not initialized properly + * \return RFAL_ERR_PARAM : Invalid parametere mask + * \return RFAL_ERR_NONE : Done with no error + * + ***************************************************************************** + */ +ReturnCode rfalListenStart(uint32_t lmMask, const rfalLmConfPA *confA, + const rfalLmConfPB *confB, const rfalLmConfPF *confF, + uint8_t *rxBuf, uint16_t rxBufLen, uint16_t *rxLen); + +/*! + ***************************************************************************** + * \brief Listen Mode start Sleeping + * + * \param[in] sleepSt : sleep state to be set + * \param[in] rxBuf : buffer to place incoming data + * \param[in] rxBufLen : length in bits of rxBuf + * \param[in] rxLen : pointer to write the data length in bits placed into + *rxBuf + * + * \return RFAL_ERR_WRONG_STATE : Not initialized properly + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : Done with no error + * + ***************************************************************************** + */ +ReturnCode rfalListenSleepStart(rfalLmState sleepSt, uint8_t *rxBuf, + uint16_t rxBufLen, uint16_t *rxLen); + +/*! + ***************************************************************************** + * \brief Listen Mode Stop + * + * Disables the listen mode on the RF Chip + * + * \warning the listen mode will be disabled immediately on the RFchip + *regardless of any ongoing operations like Transceive + * + * \return RFAL_ERR_NONE : Done with no error + * + ***************************************************************************** + */ +ReturnCode rfalListenStop(void); + +/*! + ***************************************************************************** + * \brief Listen Mode get state + * + * Sets the new state of the Listen Mode and applies the necessary changes + * on the RF Chip + * + * \param[out] dataFlag: indicates that Listen Mode has rcvd data and caller + * must process it. The received message is located + * at the rxBuf passed on rfalListenStart(). + * rfalListenSetState() will clear this flag + * if NULL output parameter will no be written/returned + * \param[out] lastBR: bit rate detected of the last initiator request + * if NULL output parameter will no be written/returned + * + * \return rfalLmState RFAL_LM_STATE_NOT_INIT : LM not initialized properly + * Any Other : LM State + * + ***************************************************************************** + */ +rfalLmState rfalListenGetState(bool *dataFlag, rfalBitRate *lastBR); + +/*! + ***************************************************************************** + * \brief Listen Mode set state + * + * Sets the new state of the Listen Mode and applies the necessary changes + * on the RF Chip + * + * \param[in] newSt : New state to go to + * + * \return RFAL_ERR_WRONG_STATE : Not initialized properly + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : Done with no error + * + ***************************************************************************** + */ +ReturnCode rfalListenSetState(rfalLmState newSt); + +/***************************************************************************** + * Wake-Up Mode * + *****************************************************************************/ + +/*! + ***************************************************************************** + * \brief Wake-Up Mode Start + * + * Sets the RF Chip in Low Power Wake-Up Mode according to the given + * configuration. + * + * \param[in] config : Generic Wake-Up configuration provided by lower + * layers. If NULL will automatically configure the + * Wake-Up mode + * + * \return RFAL_ERR_WRONG_STATE : Not initialized properly + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : Done with no error + * + ***************************************************************************** + */ +ReturnCode rfalWakeUpModeStart(const rfalWakeUpConfig *config); + +/*! + ***************************************************************************** + * \brief Wake-Up has Woke + * + * Returns true if the Wake-Up mode is enabled and it has already received + * the indication from the RF Chip that the surrounding environment has changed + * and flagged at least one wake-Up interrupt + * + * \return true : Wake-Up mode enabled and has received a wake-up IRQ + * \return false : no Wake-Up IRQ has been received + * + ***************************************************************************** + */ +bool rfalWakeUpModeHasWoke(void); + +/*! + ***************************************************************************** + * \brief Wake-Up is Enabled + * + * Returns true if the Wake-Up mode is enabled and it has already completed + * its starting up sequence. + * When the option to obtain a reference value from WU is enabled, the startup + * sequence takes longer. Otherwise WU mode is running after + *rfalWakeUpModeStart + * + * \return true : Wake-Up mode enabled + * \return false : Wake-Up mode not enabled + * + ***************************************************************************** + */ +bool rfalWakeUpModeIsEnabled(void); + +/*! + ***************************************************************************** + * \brief Wake-Up Get Info + * + * Returns the current information while Wake-up mode is running + * + * \warning The information returned will only be updated in case force is + * enabled, or if an event IRQ has happen. + * Otherwise the info will be filled with zeros. + * + * \param[in] force : Force info update info by retrieving it from device + * \param[out] info : pointer where WU mode info is to be stored + * + * \return RFAL_ERR_WRONG_STATE : Not initialized properly + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : Done with no error + ***************************************************************************** + */ +ReturnCode rfalWakeUpModeGetInfo(bool force, rfalWakeUpInfo *info); + +/*! + ***************************************************************************** + * \brief Wake-Up Mode Stop + * + * Stops the Wake-Up Mode + * + * \return RFAL_ERR_WRONG_STATE : Not initialized properly + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : Done with no error + * + ***************************************************************************** + */ +ReturnCode rfalWakeUpModeStop(void); + +/*! + ***************************************************************************** + * \brief WLC-P WPT Monitor Start + * + * After WLC-P reaches its WPT state it starts the monitoring for Impedance + * change and WPT Stop sequeence. + * + * \param[in] config : Generic Wake-Up configuration provided by lower + * layers. If NULL will automatically configure the + * WLC-P WPT Phase + * + * \warning several parameters held in config will be overwritten by the driver + * with the appropriate settings for WPT monitoring. + * + * \return RFAL_ERR_WRONG_STATE : Not initialized properly + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : Done with no error + * + ***************************************************************************** + */ +ReturnCode rfalWlcPWptMonitorStart(const rfalWakeUpConfig *config); + +/*! + ***************************************************************************** + * \brief WLC-P WPT Monitor Start Stop + * + * Stops the monitoring of WLC-P WPT Phase + * + * \return RFAL_ERR_WRONG_STATE : Not initialized properly + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : Done with no error + * + ***************************************************************************** + */ +ReturnCode rfalWlcPWptMonitorStop(void); + +/*! + ***************************************************************************** + * \brief WLC-P WPT FOD is Detected + * + * Returns true if the WLC-P WPT is monitored and it has already received + * the indication from the RF Chip that FOD was detected. + * + * \return true : WLC-P WPT is monitored and has identified a FOD + * \return false : no FOD has been identified + * + ***************************************************************************** + */ +bool rfalWlcPWptIsFodDetected(void); + +/*! + ***************************************************************************** + * \brief WLC-P WPT Stop is Detected + * + * Returns true if the WLC-P WPT is monitored and it has already received + * the indication from the RF Chip that a WPT Stop sequence was detected. + * + * \return true : WLC-P WPT is monitored and has identified a WPT Stop + * \return false : no WPT Stop IRQ has been identified + * + ***************************************************************************** + */ +bool rfalWlcPWptIsStopDetected(void); + +/*! + ***************************************************************************** + * \brief Low Power Mode Start + * + * Sets the RF Chip in Low Power Mode. + * In this mode the RF Chip is placed in Low Power Mode, similar to Wake-up + * mode but no operation nor period measurement is performed. + * Mode must be terminated by rfalLowPowerModeStop() + * + * \param[in] mode : low power mode to be set + * + * \return RFAL_ERR_WRONG_STATE : Not initialized properly + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : Done with no error + * + ***************************************************************************** + */ +ReturnCode rfalLowPowerModeStart(rfalLpMode mode); + +/*! + ***************************************************************************** + * \brief Low Power Mode Stop + * + * Stops the Low Power Mode re-enabling the device + * + * \return RFAL_ERR_WRONG_STATE : Not initialized properly + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : Done with no error + * + ***************************************************************************** + */ +ReturnCode rfalLowPowerModeStop(void); + +#endif /* RFAL_RF_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_st25tb.h b/core/embed/io/nfc/rfal/include/rfal_st25tb.h new file mode 100644 index 0000000000..613bab25db --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_st25tb.h @@ -0,0 +1,335 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_st25tb.h + * + * \author Gustavo Patricio + * + * \brief Implementation of ST25TB interface + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-AL + * \brief RFAL Abstraction Layer + * @{ + * + * \addtogroup ST25TB + * \brief RFAL ST25TB Module + * @{ + * + */ + +#ifndef RFAL_ST25TB_H +#define RFAL_ST25TB_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_nfcb.h" +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_ST25TB_CHIP_ID_LEN 1U /*!< ST25TB chip ID length */ +#define RFAL_ST25TB_CRC_LEN 2U /*!< ST25TB CRC length */ +#define RFAL_ST25TB_UID_LEN 8U /*!< ST25TB Unique ID length */ +#define RFAL_ST25TB_BLOCK_LEN 4U /*!< ST25TB Data Block length */ + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ +typedef uint8_t rfalSt25tbUID[RFAL_ST25TB_UID_LEN]; /*!< ST25TB UID type */ +typedef uint8_t + rfalSt25tbBlock[RFAL_ST25TB_BLOCK_LEN]; /*!< ST25TB Block type */ + +/*! ST25TB listener device (PICC) struct */ +typedef struct { + uint8_t chipID; /*!< Device's session Chip ID */ + rfalSt25tbUID UID; /*!< Device's UID */ + bool isDeselected; /*!< Device deselect flag */ +} rfalSt25tbListenDevice; + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief Initialize ST25TB Poller mode + * + * This methods configures RFAL RF layer to perform as a + * ST25TB Poller/RW including all default timings + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerInitialize(void); + +/*! + ***************************************************************************** + * \brief ST25TB Poller Check Presence + * + * This method checks if a ST25TB Listen device (PICC) is present on the field + * by sending an Initiate command + * + * \param[out] chipId : if successfully retrieved, the device's chip ID + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_RF_COLLISION : Collision detected one or more device in the + *field \return RFAL_ERR_PROTO : Protocol error detected \return + *RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerCheckPresence(uint8_t *chipId); + +/*! + ***************************************************************************** + * \brief ST25TB Poller Collision Resolution + * + * This method performs ST25TB Collision resolution, selects the each device, + * retrieves its UID and then deselects. + * In case only one device is identified the ST25TB device is left in select + * state. + * + * \param[in] devLimit : device limit value, and size st25tbDevList + * \param[out] st25tbDevList : ST35TB listener device info + * \param[out] devCnt : Devices found counter + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_RF_COLLISION : Collision detected one or more device in the + *field \return RFAL_ERR_PROTO : Protocol error detected \return + *RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerCollisionResolution( + uint8_t devLimit, rfalSt25tbListenDevice *st25tbDevList, uint8_t *devCnt); + +/*! + ***************************************************************************** + * \brief ST25TB Poller Initiate + * + * This method sends an Initiate command + * + * If a single device responds the chip ID will be retrieved + * + * \param[out] chipId : chip ID of the device + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerInitiate(uint8_t *chipId); + +/*! + ***************************************************************************** + * \brief ST25TB Poller Pcall + * + * This method sends a Pcall command + * If successful the device's chip ID will be retrieved + * + * \param[out] chipId : Chip ID of the device + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerPcall(uint8_t *chipId); + +/*! + ***************************************************************************** + * \brief ST25TB Poller Slot Marker + * + * This method sends a Slot Marker + * + * If a single device responds the chip ID will be retrieved + * + * \param[in] slotNum : Slot Number + * \param[out] chipIdRes : Chip ID of the device + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerSlotMarker(uint8_t slotNum, uint8_t *chipIdRes); + +/*! + ***************************************************************************** + * \brief ST25TB Poller Select + * + * This method sends a ST25TB Select command with the given chip ID. + * + * If the device is already in Selected state and receives an incorrect chip + * ID, it goes into Deselected state + * + * \param[in] chipId : chip ID of the device to be selected + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerSelect(uint8_t chipId); + +/*! + ***************************************************************************** + * \brief ST25TB Get UID + * + * This method sends a Get_UID command + * + * If a single device responds the chip UID will be retrieved + * + * \param[out] UID : UID of the found device + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerGetUID(rfalSt25tbUID *UID); + +/*! + ***************************************************************************** + * \brief ST25TB Poller Read Block + * + * This method reads a block of the ST25TB + * + * \param[in] blockAddress : address of the block to be read + * \param[out] blockData : location to place the data read from block + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerReadBlock(uint8_t blockAddress, + rfalSt25tbBlock *blockData); + +/*! + ***************************************************************************** + * \brief ST25TB Poller Write Block + * + * This method writes a block of the ST25TB + * + * \param[in] blockAddress : address of the block to be written + * \param[in] blockData : data to be written on the block + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerWriteBlock(uint8_t blockAddress, + const rfalSt25tbBlock *blockData); + +/*! + ***************************************************************************** + * \brief ST25TB Poller Completion + * + * This method sends a completion command to the ST25TB. After the + * completion the card no longer will reply to any command. + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_PROTO : Protocol error detected, invalid SENSB_RES + *received \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerCompletion(void); + +/*! + ***************************************************************************** + * \brief ST25TB Poller Reset to Inventory + * + * This method sends a Reset to Inventory command to the ST25TB. + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_TIMEOUT : Timeout error, no listener device detected + * \return RFAL_ERR_PROTO : Protocol error detected, invalid SENSB_RES + *received \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalSt25tbPollerResetToInventory(void); + +#endif /* RFAL_ST25TB_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_st25xv.h b/core/embed/io/nfc/rfal/include/rfal_st25xv.h new file mode 100644 index 0000000000..b5a39c897d --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_st25xv.h @@ -0,0 +1,807 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_st25xv.h + * + * \author Gustavo Patricio + * + * \brief NFC-V ST25 NFC-V Tag specific features + * + * This module provides support for ST's specific features available on + * NFC-V (ISO15693) tag families: ST25D, ST25TV, M24LR + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-AL + * \brief RFAL Abstraction Layer + * @{ + * + * \addtogroup ST25xV + * \brief RFAL ST25xV Module + * @{ + * + */ + +#ifndef RFAL_ST25xV_H +#define RFAL_ST25xV_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_NFCV_BLOCKNUM_M24LR_LEN \ + 2U /*!< Block Number length of MR24LR tags: 16 bits */ + +/*! + ***************************************************************************** + * \brief NFC-V Poller Read Single Block (M24LR) + * + * Reads a Single Block from a M24LR tag which has the number of blocks + * bigger than 256 (M24LR16 ; M24LR64) + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * default: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] blockNum : Number of the block to read (16 bits) + * \param[out] rxBuf : buffer to store response (also with RES_FLAGS) + * \param[in] rxBufLen : length of rxBuf + * \param[out] rcvLen : number of bytes received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerM24LRReadSingleBlock( + uint8_t flags, const uint8_t* uid, uint16_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Fast Read Single Block (M24LR) + * + * Reads a Single Block from a M24LR tag which has the number of blocks + * bigger than 256 (M24LR16 ; M24LR64) using ST Fast mode + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * default: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] blockNum : Number of the block to read (16 bits) + * \param[out] rxBuf : buffer to store response (also with RES_FLAGS) + * \param[in] rxBufLen : length of rxBuf + * \param[out] rcvLen : number of bytes received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerM24LRFastReadSingleBlock( + uint8_t flags, const uint8_t* uid, uint16_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Write Single Block (M24LR) + * + * Writes a Single Block from a M24LR tag which has the number of blocks + * bigger than 256 (M24LR16 ; M24LR64) + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be written + * if not provided Select mode will be used + * \param[in] blockNum : Number of the block to write (16 bits) + * \param[in] wrData : data to be written on the given block + * \param[in] blockLen : number of bytes of a block + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerM24LRWriteSingleBlock(uint8_t flags, + const uint8_t* uid, + uint16_t blockNum, + const uint8_t* wrData, + uint8_t blockLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Read Multiple Blocks (M24LR) + * + * Reads Multiple Blocks from a device from a M24LR tag which has the number of + *blocks bigger than 256 (M24LR16 ; M24LR64) + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] firstBlockNum : first block to be read (16 bits) + * \param[in] numOfBlocks : number of block to read + * \param[out] rxBuf : buffer to store response (also with RES_FLAGS) + * \param[in] rxBufLen : length of rxBuf + * \param[out] rcvLen : number of bytes received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerM24LRReadMultipleBlocks( + uint8_t flags, const uint8_t* uid, uint16_t firstBlockNum, + uint8_t numOfBlocks, uint8_t* rxBuf, uint16_t rxBufLen, uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Fast Read Multiple Blocks (M24LR) + * + * Reads Multiple Blocks from a device from a M24LR tag which has the number of + *blocks bigger than 256 (M24LR16 ; M24LR64) using ST Fast mode + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] firstBlockNum : first block to be read (16 bits) + * \param[in] numOfBlocks : number of block to read + * \param[out] rxBuf : buffer to store response (also with RES_FLAGS) + * \param[in] rxBufLen : length of rxBuf + * \param[out] rcvLen : number of bytes received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerM24LRFastReadMultipleBlocks( + uint8_t flags, const uint8_t* uid, uint16_t firstBlockNum, + uint8_t numOfBlocks, uint8_t* rxBuf, uint16_t rxBufLen, uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Fast Read Single Block + * + * Reads a Single Block from a device (VICC) using ST Fast mode + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] blockNum : Number of the block to read + * \param[out] rxBuf : buffer to store response (also with RES_FLAGS) + * \param[in] rxBufLen : length of rxBuf + * \param[out] rcvLen : number of bytes received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerFastReadSingleBlock(uint8_t flags, + const uint8_t* uid, + uint8_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, + uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Fast Read Multiple Blocks + * + * Reads Multiple Blocks from a device (VICC) using ST Fast mode + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] firstBlockNum : first block to be read + * \param[in] numOfBlocks : number of block to read + * \param[out] rxBuf : buffer to store response (also with RES_FLAGS) + * \param[in] rxBufLen : length of rxBuf + * \param[out] rcvLen : number of bytes received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerFastReadMultipleBlocks( + uint8_t flags, const uint8_t* uid, uint8_t firstBlockNum, + uint8_t numOfBlocks, uint8_t* rxBuf, uint16_t rxBufLen, uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Fast Extended Read Single Block + * + * Reads a Single Block from a device (VICC) supporting extended commands using + *ST Fast mode + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] blockNum : Number of the block to read (16 bits) + * \param[out] rxBuf : buffer to store response (also with RES_FLAGS) + * \param[in] rxBufLen : length of rxBuf + * \param[out] rcvLen : number of bytes received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerFastExtendedReadSingleBlock( + uint8_t flags, const uint8_t* uid, uint16_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Fast Extended Read Multiple Blocks + * + * Reads Multiple Blocks from a device (VICC) supporting extended commands using + *ST Fast mode + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] firstBlockNum : first block to be read (16 bits) + * \param[in] numOfBlocks : number of consecutive blocks to read (16 bits) + * \param[out] rxBuf : buffer to store response (also with RES_FLAGS) + * \param[in] rxBufLen : length of rxBuf + * \param[out] rcvLen : number of bytes received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerFastExtReadMultipleBlocks( + uint8_t flags, const uint8_t* uid, uint16_t firstBlockNum, + uint16_t numOfBlocks, uint8_t* rxBuf, uint16_t rxBufLen, uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Read Configuration + * + * Reads static configuration registers at the Pointer address + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] pointer : Pointer address + * \param[out] regValue : Register value + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerReadConfiguration(uint8_t flags, const uint8_t* uid, + uint8_t pointer, + uint8_t* regValue); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Write Configuration + * + * Writes static configuration registers at the Pointer address + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] pointer : Pointer address + * \param[in] regValue : Register value + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerWriteConfiguration(uint8_t flags, const uint8_t* uid, + uint8_t pointer, + uint8_t regValue); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Read Dynamic Configuration + * + * Reads dynamic registers at the Pointer address + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] pointer : Pointer address + * \param[out] regValue : Register value + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerReadDynamicConfiguration(uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t* regValue); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Write Dynamic Configuration + * + * Writes dynamic registers at the Pointer address + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] pointer : Pointer address + * \param[in] regValue : Register value + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerWriteDynamicConfiguration(uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t regValue); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Fast Read Dynamic Configuration + * + * Reads dynamic registers at the Pointer address using ST Fast mode + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] pointer : Pointer address + * \param[out] regValue : Register value + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerFastReadDynamicConfiguration(uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t* regValue); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Fast Write Dynamic Configuration + * + * Writes dynamic registers at the Pointer address using ST Fast mode + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] pointer : Pointer address + * \param[in] regValue : Register value + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerFastWriteDynamicConfiguration(uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t regValue); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Present Password + * + * Sends the Present Password command + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] pwdNum : Password number + * \param[in] pwd : Password + * \param[in] pwdLen : Password length + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerPresentPassword(uint8_t flags, const uint8_t* uid, + uint8_t pwdNum, const uint8_t* pwd, + uint8_t pwdLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Write Password + * + * Sends the Write Password command + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] pwdNum : Password number + * \param[in] pwd : Password + * \param[in] pwdLen : Password length + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerWritePassword(uint8_t flags, const uint8_t* uid, + uint8_t pwdNum, const uint8_t* pwd, + uint8_t pwdLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Get Random Number + * + * Returns a 16 bit random number + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[out] rxBuf : buffer to store response (also with RES_FLAGS) + * \param[in] rxBufLen : length of rxBuf + * \param[out] rcvLen : number of bytes received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerGetRandomNumber(uint8_t flags, const uint8_t* uid, + uint8_t* rxBuf, uint16_t rxBufLen, + uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Read Message length + * + * Sends a Read Message Length message to retrieve the value of MB_LEN_Dyn + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[out] msgLen : Message Length + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerReadMessageLength(uint8_t flags, const uint8_t* uid, + uint8_t* msgLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Fast Read Message length + * + * Sends a Fast Read Message Length message to retrieve the value of MB_LEN_Dyn + *using ST Fast mode. + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[out] msgLen : Message Length + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerFastReadMsgLength(uint8_t flags, const uint8_t* uid, + uint8_t* msgLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Read Message + * + * Reads up to 256 bytes in the Mailbox from the location + * specified by MBpointer and sends back their value in the rxBuf response. + * First MailBox location is '00'. When Number of bytes is set to 00h + * and MBPointer is equals to 00h, the MB_LEN bytes of the full message + * are returned. Otherwise, Read Message command returns (Number of Bytes + 1) + *bytes (i.e. 01h returns 2 bytes, FFh returns 256 bytes). An error is reported + *if (Pointer + Nb of bytes + 1) is greater than the message length. RF Reading + *of the last byte of the mailbox message automatically clears b1 of MB_CTRL_Dyn + *HOST_PUT_MSG, and allows RF to put a new message. + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] mbPointer : MPpointer + * \param[in] numBytes : number of bytes + * \param[out] rxBuf : buffer to store response (also with RES_FLAGS) + * \param[in] rxBufLen : length of rxBuf + * \param[out] rcvLen : number of bytes received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerReadMessage(uint8_t flags, const uint8_t* uid, + uint8_t mbPointer, uint8_t numBytes, + uint8_t* rxBuf, uint16_t rxBufLen, + uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Fast Read Message + * + * Reads up to 256 bytes in the Mailbox from the location + * specified by MBpointer and sends back their value in the rxBuf response using + *ST Fast mode. First MailBox location is '00'. When Number of bytes is set to + *00h and MBPointer is equals to 00h, the MB_LEN bytes of the full message are + *returned. Otherwise, Read Message command returns (Number of Bytes + 1) bytes + * (i.e. 01h returns 2 bytes, FFh returns 256 bytes). + * An error is reported if (Pointer + Nb of bytes + 1) is greater than the + *message length. RF Reading of the last byte of the mailbox message + *automatically clears b1 of MB_CTRL_Dyn HOST_PUT_MSG, and allows RF to put a + *new message. + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] mbPointer : MPpointer + * \param[in] numBytes : number of bytes + * \param[out] rxBuf : buffer to store response (also with RES_FLAGS) + * \param[in] rxBufLen : length of rxBuf + * \param[out] rcvLen : number of bytes received + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerFastReadMessage(uint8_t flags, const uint8_t* uid, + uint8_t mbPointer, uint8_t numBytes, + uint8_t* rxBuf, uint16_t rxBufLen, + uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Write Message + * + * Sends Write message Command + * + * On receiving the Write Message command, the ST25DVxxx puts the data contained + * in the request into the Mailbox buffer, update the MB_LEN_Dyn register, and + * set bit RF_PUT_MSG in MB_CTRL_Dyn register. It then reports if the write + *operation was successful in the response. The ST25DVxxx Mailbox contains up to + *256 data bytes which are filled from the first location '00'. MSGlength + *parameter of the command is the number of Data bytes minus 1 (00 for 1 byte of + *data, FFh for 256 bytes of data). Write Message could be executed only when + *Mailbox is accessible by RF. + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] msgLen : MSGLen number of Data bytes minus 1 + * \param[in] msgData : Message Data + * \param[out] txBuf : buffer to used to build the Write Message + *command \param[in] txBufLen : length of txBuf + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerWriteMessage(uint8_t flags, const uint8_t* uid, + uint8_t msgLen, const uint8_t* msgData, + uint8_t* txBuf, uint16_t txBufLen); + +/*! + ***************************************************************************** + * \brief NFC-V Poller Fast Write Message + * + * Sends Fast Write message Command using ST Fast mode + * + * On receiving the Write Message command, the ST25DVxxx puts the data contained + * in the request into the Mailbox buffer, update the MB_LEN_Dyn register, and + * set bit RF_PUT_MSG in MB_CTRL_Dyn register. It then reports if the write + *operation was successful in the response. The ST25DVxxx Mailbox contains up to + *256 data bytes which are filled from the first location '00'. MSGlength + *parameter of the command is the number of Data bytes minus 1 (00 for 1 byte of + *data, FFh for 256 bytes of data). Write Message could be executed only when + *Mailbox is accessible by RF. + * + * \param[in] flags : Flags to be used: Sub-carrier; Data_rate; Option + * for NFC-Forum use: RFAL_NFCV_REQ_FLAG_DEFAULT + * \param[in] uid : UID of the device to be put to be read + * if not provided Select mode will be used + * \param[in] msgLen : MSGLen number of Data bytes minus 1 + * \param[in] msgData : Message Data + * \param[out] txBuf : buffer to used to build the Write Message + *command \param[in] txBufLen : length of txBuf + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or incorrect mode + * \return RFAL_ERR_PARAM : Invalid parameters + * \return RFAL_ERR_IO : Generic internal error + * \return RFAL_ERR_CRC : CRC error detected + * \return RFAL_ERR_FRAMING : Framing error detected + * \return RFAL_ERR_PROTO : Protocol error detected + * \return RFAL_ERR_TIMEOUT : Timeout error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalST25xVPollerFastWriteMessage(uint8_t flags, const uint8_t* uid, + uint8_t msgLen, + const uint8_t* msgData, + uint8_t* txBuf, uint16_t txBufLen); + +#endif /* RFAL_ST25xV_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_t1t.h b/core/embed/io/nfc/rfal/include/rfal_t1t.h new file mode 100644 index 0000000000..bbb4256f62 --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_t1t.h @@ -0,0 +1,176 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_t1t.h + * + * \author Gustavo Patricio + * + * \brief Provides NFC-A T1T convenience methods and definitions + * + * This module provides an interface to perform as a NFC-A Reader/Writer + * to handle a Type 1 Tag T1T (Topaz) + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-AL + * \brief RFAL Abstraction Layer + * @{ + * + * \addtogroup T1T + * \brief RFAL T1T Module + * @{ + * + */ + +#ifndef RFAL_T1T_H +#define RFAL_T1T_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ +#define RFAL_T1T_UID_LEN 4 /*!< T1T UID length of cascade level 1 only tag */ +#define RFAL_T1T_HR_LENGTH 2 /*!< T1T HR(Header ROM) length */ + +#define RFAL_T1T_HR0_NDEF_MASK \ + 0xF0 /*!< T1T HR0 NDEF capability mask T1T 1.2 2.2.2 */ +#define RFAL_T1T_HR0_NDEF_SUPPORT \ + 0x10 /*!< T1T HR0 NDEF capable value T1T 1.2 2.2.2 */ + +/*! NFC-A T1T (Topaz) command set */ +typedef enum { + RFAL_T1T_CMD_RID = 0x78, /*!< T1T Read UID */ + RFAL_T1T_CMD_RALL = 0x00, /*!< T1T Read All */ + RFAL_T1T_CMD_READ = 0x01, /*!< T1T Read */ + RFAL_T1T_CMD_WRITE_E = 0x53, /*!< T1T Write with erase (single byte) */ + RFAL_T1T_CMD_WRITE_NE = 0x1A /*!< T1T Write with no erase (single byte) */ +} rfalT1Tcmds; + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! NFC-A T1T (Topaz) RID_RES Digital 1.1 10.6.2 & Table 50 */ +typedef struct { + uint8_t hr0; /*!< T1T Header ROM: HR0 */ + uint8_t hr1; /*!< T1T Header ROM: HR1 */ + uint8_t uid[RFAL_T1T_UID_LEN]; /*!< T1T UID */ +} rfalT1TRidRes; + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief Initialize NFC-A T1T Poller mode + * + * This methods configures RFAL RF layer to perform as a + * NFC-A T1T Poller/RW (Topaz) including all default timings + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT1TPollerInitialize(void); + +/*! + ***************************************************************************** + * \brief NFC-A T1T Poller RID + * + * This method reads the UID of a NFC-A T1T Listener device + * + * + * \param[out] ridRes : pointer to place the RID_RES + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT1TPollerRid(rfalT1TRidRes* ridRes); + +/*! + ***************************************************************************** + * \brief NFC-A T1T Poller RALL + * + * This method send a Read All command to a NFC-A T1T Listener device + * + * + * \param[in] uid : the UID of the device to read data + * \param[out] rxBuf : pointer to place the read data + * \param[in] rxBufLen : size of rxBuf + * \param[out] rxRcvdLen : actual received data + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT1TPollerRall(const uint8_t* uid, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rxRcvdLen); + +/*! + ***************************************************************************** + * \brief NFC-A T1T Poller Write + * + * This method writes the given data on the address of a NFC-A T1T Listener + *device + * + * + * \param[in] uid : the UID of the device to read data + * \param[in] address : address to write the data + * \param[in] data : the data to be written + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT1TPollerWrite(const uint8_t* uid, uint8_t address, + uint8_t data); + +#endif /* RFAL_T1T_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_t2t.h b/core/embed/io/nfc/rfal/include/rfal_t2t.h new file mode 100644 index 0000000000..7dabe8f36e --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_t2t.h @@ -0,0 +1,146 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_t2t.h + * + * \author Gustavo Patricio + * + * \brief Provides NFC-A T2T convenience methods and definitions + * + * This module provides an interface to perform as a NFC-A Reader/Writer + * to handle a Type 2 Tag T2T + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-AL + * \brief RFAL Abstraction Layer + * @{ + * + * \addtogroup T2T + * \brief RFAL T2T Module + * @{ + * + */ + +#ifndef RFAL_T2T_H +#define RFAL_T2T_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_T2T_BLOCK_LEN 4U /*!< T2T block length */ +#define RFAL_T2T_READ_DATA_LEN \ + (4U * RFAL_T2T_BLOCK_LEN) /*!< T2T READ data length */ +#define RFAL_T2T_WRITE_DATA_LEN \ + RFAL_T2T_BLOCK_LEN /*!< T2T WRITE data length */ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief NFC-A T2T Poller Read + * + * This method sends a Read command to a NFC-A T2T Listener device + * + * + * \param[in] blockNum : Number of the block to read + * \param[out] rxBuf : pointer to place the read data + * \param[in] rxBufLen : size of rxBuf (RFAL_T2T_READ_DATA_LEN) + * \param[out] rcvLen : actual received data + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT2TPollerRead(uint8_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rcvLen); + +/*! + ***************************************************************************** + * \brief NFC-A T2T Poller Write + * + * This method sends a Write command to a NFC-A T2T Listener device + * + * + * \param[in] blockNum : Number of the block to write + * \param[in] wrData : data to be written on the given block + * size must be of RFAL_T2T_WRITE_DATA_LEN + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT2TPollerWrite(uint8_t blockNum, const uint8_t* wrData); + +/*! + ***************************************************************************** + * \brief NFC-A T2T Poller Sector Select + * + * This method sends a Sector Select commands to a NFC-A T2T Listener device + * + * \param[in] sectorNum : Sector Number + * + * \return RFAL_ERR_WRONG_STATE : RFAL not initialized or mode not set + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT2TPollerSectorSelect(uint8_t sectorNum); + +#endif /* RFAL_T2T_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_t4t.h b/core/embed/io/nfc/rfal/include/rfal_t4t.h new file mode 100644 index 0000000000..f1b3c1764d --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_t4t.h @@ -0,0 +1,378 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_t4t.h + * + * \author Gustavo Patricio + * + * \brief Provides convenience methods and definitions for T4T (ISO7816-4) + * + * This module provides an interface to exchange T4T APDUs according to + * NFC Forum T4T and ISO7816-4 + * + * This implementation was based on the following specs: + * - ISO/IEC 7816-4 3rd Edition 2013-04-15 + * - NFC Forum T4T Technical Specification 1.0 2017-08-28 + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-AL + * \brief RFAL Abstraction Layer + * @{ + * + * \addtogroup T4T + * \brief RFAL T4T Module + * @{ + * + */ + +#ifndef RFAL_T4T_H +#define RFAL_T4T_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_isoDep.h" +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_T4T_MAX_CAPDU_PROLOGUE_LEN \ + 4U /*!< Command-APDU prologue length (CLA INS P1 P2) */ +#define RFAL_T4T_LE_LEN \ + 1U /*!< Le Expected Response Length (short field coding) */ +#define RFAL_T4T_LC_LEN \ + 1U /*!< Lc Data field length (short field coding) */ +#define RFAL_T4T_MAX_RAPDU_SW1SW2_LEN \ + 2U /*!< SW1 SW2 length */ +#define RFAL_T4T_CLA \ + 0x00U /*!< Class byte (contains 00h because secure message are not used) */ + +#define RFAL_T4T_ISO7816_P1_SELECT_BY_DF_NAME \ + 0x04U /*!< P1 value for Select by name */ +#define RFAL_T4T_ISO7816_P1_SELECT_BY_FILEID \ + 0x00U /*!< P1 value for Select by file identifier */ +#define RFAL_T4T_ISO7816_P2_SELECT_FIRST_OR_ONLY_OCCURENCE \ + 0x00U /*!< b2b1 P2 value for First or only occurence */ +#define RFAL_T4T_ISO7816_P2_SELECT_RETURN_FCI_TEMPLATE \ + 0x00U /*!< b4b3 P2 value for Return FCI template */ +#define RFAL_T4T_ISO7816_P2_SELECT_NO_RESPONSE_DATA \ + 0x0CU /*!< b4b3 P2 value for No responce data */ + +#define RFAL_T4T_ISO7816_STATUS_COMPLETE \ + 0x9000U /*!< Command completed \ Normal processing - No further \ + qualification*/ + +/* +****************************************************************************** +* GLOBAL VARIABLES +****************************************************************************** +*/ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ +/*! NFC-A T4T Command-APDU structure */ +typedef struct { + uint8_t CLA; /*!< Class byte */ + uint8_t INS; /*!< Instruction byte */ + uint8_t P1; /*!< Parameter byte 1 */ + uint8_t P2; /*!< Parameter byte 2 */ + uint8_t Lc; /*!< Data field length */ + bool LcFlag; /*!< Lc flag (append Lc when true) */ + uint8_t Le; /*!< Expected Response Length */ + bool LeFlag; /*!< Le flag (append Le when true) */ + + rfalIsoDepApduBufFormat *cApduBuf; /*!< Command-APDU buffer (Tx) */ + uint16_t *cApduLen; /*!< Command-APDU Length */ +} rfalT4tCApduParam; + +/*! NFC-A T4T Response-APDU structure */ +typedef struct { + rfalIsoDepApduBufFormat *rApduBuf; /*!< Response-APDU buffer (Rx) */ + uint16_t rcvdLen; /*!< Full response length */ + uint16_t rApduBodyLen; /*!< Response body length */ + uint16_t statusWord; /*!< R-APDU Status Word SW1|SW2 */ +} rfalT4tRApduParam; + +/*! NFC-A T4T command set T4T 1.0 & ISO7816-4 2013 Table 4 */ +typedef enum { + RFAL_T4T_INS_SELECT = 0xA4U, /*!< T4T Select */ + RFAL_T4T_INS_READBINARY = 0xB0U, /*!< T4T ReadBinary */ + RFAL_T4T_INS_UPDATEBINARY = 0xD6U, /*!< T4T UpdateBinay */ + RFAL_T4T_INS_READBINARY_ODO = 0xB1U, /*!< T4T ReadBinary using ODO */ + RFAL_T4T_INS_UPDATEBINARY_ODO = 0xD7U /*!< T4T UpdateBinay using ODO */ +} rfalT4tCmds; + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief T4T Compose APDU + * + * This method computes a C-APDU according to NFC Forum T4T and ISO7816-4. + * + * If C-APDU contains data to be sent, it must be placed inside the buffer + * rfalT4tTxRxApduParam.txRx.cApduBuf.apdu and signaled by Lc + * + * To transceive the formed APDU the ISO-DEP layer shall be used + * + * \see rfalIsoDepStartApduTransceive() + * \see rfalIsoDepGetApduTransceiveStatus() + * \see rfalT4TPollerParseRAPDU() + * + * \warning The ISO-DEP module is used to perform the tranceive. Usually + * activation has been done via ISO-DEP activatiavtion. If not + * please call rfalIsoDepInitialize() before. + * + * \param[in,out] apduParam : APDU parameters + * apduParam.cApduLen will contain the APDU length + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT4TPollerComposeCAPDU(const rfalT4tCApduParam *apduParam); + +/*! + ***************************************************************************** + * \brief T4T Parse R-APDU + * + * This method parses a R-APDU according to NFC Forum T4T and ISO7816-4. + * It will extract the data length and check if the Satus word is expected. + * + * \param[in,out] apduParam : APDU parameters + * apduParam.rApduBodyLen will contain the data + *length apduParam.statusWord will contain the SW1 and SW2 + * + * \return RFAL_ERR_REQUEST : Status word (SW1 SW2) different from 9000 + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT4TPollerParseRAPDU(rfalT4tRApduParam *apduParam); + +/*! + ***************************************************************************** + * \brief T4T Compose Select Application APDU + * + * This method computes a Select Application APDU according to NFC Forum T4T + * + * To transceive the formed APDU the ISO-DEP layer shall be used + * + * \see rfalIsoDepStartApduTransceive() + * \see rfalIsoDepGetApduTransceiveStatus() + * + * \param[out] cApduBuf : buffer where the C-APDU will be placed + * \param[in] aid : Application ID to be used + * \param[in] aidLen : Application ID length + * \param[out] cApduLen : Composed C-APDU length + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT4TPollerComposeSelectAppl(rfalIsoDepApduBufFormat *cApduBuf, + const uint8_t *aid, uint8_t aidLen, + uint16_t *cApduLen); + +/*! + ***************************************************************************** + * \brief T4T Compose Select File APDU + * + * This method computes a Select File APDU according to NFC Forum T4T + * + * To transceive the formed APDU the ISO-DEP layer shall be used + * + * \see rfalIsoDepStartApduTransceive() + * \see rfalIsoDepGetApduTransceiveStatus() + * + * \param[out] cApduBuf : buffer where the C-APDU will be placed + * \param[in] fid : File ID to be used + * \param[in] fidLen : File ID length + * \param[out] cApduLen : Composed C-APDU length + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT4TPollerComposeSelectFile(rfalIsoDepApduBufFormat *cApduBuf, + const uint8_t *fid, uint8_t fidLen, + uint16_t *cApduLen); + +/*! + ***************************************************************************** + * \brief T4T Compose Select File APDU for Mapping Version 1 + * + * This method computes a Select File APDU according to NFC Forum T4TOP_v1.0 + * + * To transceive the formed APDU the ISO-DEP layer shall be used + * + * \see rfalIsoDepStartApduTransceive() + * \see rfalIsoDepGetApduTransceiveStatus() + * + * \param[out] cApduBuf : buffer where the C-APDU will be placed + * \param[in] fid : File ID to be used + * \param[in] fidLen : File ID length + * \param[out] cApduLen : Composed C-APDU length + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT4TPollerComposeSelectFileV1Mapping( + rfalIsoDepApduBufFormat *cApduBuf, const uint8_t *fid, uint8_t fidLen, + uint16_t *cApduLen); + +/*! + ***************************************************************************** + * \brief T4T Compose Read Data APDU + * + * This method computes a Read Data APDU according to NFC Forum T4T + * + * To transceive the formed APDU the ISO-DEP layer shall be used + * + * \see rfalIsoDepStartApduTransceive() + * \see rfalIsoDepGetApduTransceiveStatus() + * + * \param[out] cApduBuf : buffer where the C-APDU will be placed + * \param[in] offset : File offset + * \param[in] expLen : Expected length (Le) + * \param[out] cApduLen : Composed C-APDU length + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT4TPollerComposeReadData(rfalIsoDepApduBufFormat *cApduBuf, + uint16_t offset, uint8_t expLen, + uint16_t *cApduLen); + +/*! + ***************************************************************************** + * \brief T4T Compose Read Data ODO APDU + * + * This method computes a Read Data ODO APDU according to NFC Forum T4T + * + * To transceive the formed APDU the ISO-DEP layer shall be used + * + * \see rfalIsoDepStartApduTransceive() + * \see rfalIsoDepGetApduTransceiveStatus() + * + * \param[out] cApduBuf : buffer where the C-APDU will be placed + * \param[in] offset : File offset + * \param[in] expLen : Expected length (Le) + * \param[out] cApduLen : Composed C-APDU length + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT4TPollerComposeReadDataODO(rfalIsoDepApduBufFormat *cApduBuf, + uint32_t offset, uint8_t expLen, + uint16_t *cApduLen); + +/*! + ***************************************************************************** + * \brief T4T Compose Write Data APDU + * + * This method computes a Write Data APDU according to NFC Forum T4T + * + * To transceive the formed APDU the ISO-DEP layer shall be used + * + * \see rfalIsoDepStartApduTransceive() + * \see rfalIsoDepGetApduTransceiveStatus() + * + * \param[out] cApduBuf : buffer where the C-APDU will be placed + * \param[in] offset : File offset + * \param[in] data : Data to be written + * \param[in] dataLen : Data length to be written (Lc) + * \param[out] cApduLen : Composed C-APDU length + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT4TPollerComposeWriteData(rfalIsoDepApduBufFormat *cApduBuf, + uint16_t offset, const uint8_t *data, + uint8_t dataLen, uint16_t *cApduLen); + +/*! + ***************************************************************************** + * \brief T4T Compose Write Data ODO APDU + * + * This method computes a Write Data ODO sAPDU according to NFC Forum T4T + * + * To transceive the formed APDU the ISO-DEP layer shall be used + * + * \see rfalIsoDepStartApduTransceive() + * \see rfalIsoDepGetApduTransceiveStatus() + * + * \param[out] cApduBuf : buffer where the C-APDU will be placed + * \param[in] offset : File offset + * \param[in] data : Data to be written + * \param[in] dataLen : Data length to be written (Lc) + * \param[out] cApduLen : Composed C-APDU length + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_PROTO : Protocol error + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode rfalT4TPollerComposeWriteDataODO(rfalIsoDepApduBufFormat *cApduBuf, + uint32_t offset, + const uint8_t *data, + uint8_t dataLen, + uint16_t *cApduLen); + +#endif /* RFAL_T4T_H */ + +/** + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/include/rfal_utils.h b/core/embed/io/nfc/rfal/include/rfal_utils.h new file mode 100644 index 0000000000..ca49f00ef3 --- /dev/null +++ b/core/embed/io/nfc/rfal/include/rfal_utils.h @@ -0,0 +1,218 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_utils.h + * + * \author Gustavo Patricio + * + * \brief RF Abstraction Layer (RFAL) Utils + * + * \addtogroup RFAL + * @{ + * + */ + +#ifndef RFAL_UTILS_H +#define RFAL_UTILS_H + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include +#include + +/* +****************************************************************************** +* GLOBAL DATA TYPES +****************************************************************************** +*/ + +typedef uint16_t ReturnCode; /*!< Standard Return Code type from function. */ + +/* +****************************************************************************** +* DEFINES +****************************************************************************** +*/ + +/* + * Error codes to be used within the application. + * They are represented by an uint8_t + */ + +#define RFAL_ERR_NONE ((ReturnCode)0U) /*!< no error occurred */ +#define RFAL_ERR_NOMEM \ + ((ReturnCode)1U) /*!< not enough memory to perform the requested operation \ + */ +#define RFAL_ERR_BUSY ((ReturnCode)2U) /*!< device or resource busy */ +#define RFAL_ERR_IO ((ReturnCode)3U) /*!< generic IO error */ +#define RFAL_ERR_TIMEOUT ((ReturnCode)4U) /*!< error due to timeout */ +#define RFAL_ERR_REQUEST \ + ((ReturnCode)5U) /*!< invalid request or requested function can't be \ + executed at the moment */ +#define RFAL_ERR_NOMSG ((ReturnCode)6U) /*!< No message of desired type */ +#define RFAL_ERR_PARAM ((ReturnCode)7U) /*!< Parameter error */ +#define RFAL_ERR_SYSTEM ((ReturnCode)8U) /*!< System error */ +#define RFAL_ERR_FRAMING ((ReturnCode)9U) /*!< Framing error */ +#define RFAL_ERR_OVERRUN \ + ((ReturnCode)10U) /*!< lost one or more received bytes */ +#define RFAL_ERR_PROTO ((ReturnCode)11U) /*!< protocol error */ +#define RFAL_ERR_INTERNAL ((ReturnCode)12U) /*!< Internal Error */ +#define RFAL_ERR_AGAIN ((ReturnCode)13U) /*!< Call again */ +#define RFAL_ERR_MEM_CORRUPT ((ReturnCode)14U) /*!< memory corruption */ +#define RFAL_ERR_NOT_IMPLEMENTED ((ReturnCode)15U) /*!< not implemented */ +#define RFAL_ERR_PC_CORRUPT \ + ((ReturnCode)16U) /*!< Program Counter has been manipulated or spike/noise \ + trigger illegal operation */ +#define RFAL_ERR_SEND ((ReturnCode)17U) /*!< error sending*/ +#define RFAL_ERR_IGNORE \ + ((ReturnCode)18U) /*!< indicates error detected but to be ignored */ +#define RFAL_ERR_SEMANTIC \ + ((ReturnCode)19U) /*!< indicates error in state machine (unexpected cmd) */ +#define RFAL_ERR_SYNTAX \ + ((ReturnCode)20U) /*!< indicates error in state machine (unknown cmd) */ +#define RFAL_ERR_CRC ((ReturnCode)21U) /*!< crc error */ +#define RFAL_ERR_NOTFOUND ((ReturnCode)22U) /*!< transponder not found */ +#define RFAL_ERR_NOTUNIQUE \ + ((ReturnCode)23U) /*!< transponder not unique - more than one transponder in \ + field */ +#define RFAL_ERR_NOTSUPP \ + ((ReturnCode)24U) /*!< requested operation not supported */ +#define RFAL_ERR_WRITE ((ReturnCode)25U) /*!< write error */ +#define RFAL_ERR_FIFO ((ReturnCode)26U) /*!< fifo over or underflow error */ +#define RFAL_ERR_PAR ((ReturnCode)27U) /*!< parity error */ +#define RFAL_ERR_DONE ((ReturnCode)28U) /*!< transfer has already finished */ +#define RFAL_ERR_RF_COLLISION \ + ((ReturnCode)29U) /*!< collision error (Bit Collision or during RF Collision \ + avoidance ) */ +#define RFAL_ERR_HW_OVERRUN \ + ((ReturnCode)30U) /*!< lost one or more received bytes */ +#define RFAL_ERR_RELEASE_REQ \ + ((ReturnCode)31U) /*!< device requested release \ + */ +#define RFAL_ERR_SLEEP_REQ ((ReturnCode)32U) /*!< device requested sleep */ +#define RFAL_ERR_WRONG_STATE \ + ((ReturnCode)33U) /*!< incorrent state for requested operation */ +#define RFAL_ERR_MAX_RERUNS \ + ((ReturnCode)34U) /*!< blocking procedure reached maximum runs */ +#define RFAL_ERR_DISABLED \ + ((ReturnCode)35U) /*!< operation aborted due to disabled configuration */ +#define RFAL_ERR_HW_MISMATCH \ + ((ReturnCode)36U) /*!< expected hw do not match \ + */ +#define RFAL_ERR_LINK_LOSS \ + ((ReturnCode)37U) /*!< Other device's field didn't behave as expected: \ + turned off by Initiator in Passive mode, or AP2P did \ + not turn on field */ +#define RFAL_ERR_INVALID_HANDLE \ + ((ReturnCode)38U) /*!< invalid or not initialized device handle */ + +#define RFAL_ERR_INCOMPLETE_BYTE \ + ((ReturnCode)40U) /*!< Incomplete byte rcvd */ +#define RFAL_ERR_INCOMPLETE_BYTE_01 \ + ((ReturnCode)41U) /*!< Incomplete byte rcvd - 1 bit */ +#define RFAL_ERR_INCOMPLETE_BYTE_02 \ + ((ReturnCode)42U) /*!< Incomplete byte rcvd - 2 bit */ +#define RFAL_ERR_INCOMPLETE_BYTE_03 \ + ((ReturnCode)43U) /*!< Incomplete byte rcvd - 3 bit */ +#define RFAL_ERR_INCOMPLETE_BYTE_04 \ + ((ReturnCode)44U) /*!< Incomplete byte rcvd - 4 bit */ +#define RFAL_ERR_INCOMPLETE_BYTE_05 \ + ((ReturnCode)45U) /*!< Incomplete byte rcvd - 5 bit */ +#define RFAL_ERR_INCOMPLETE_BYTE_06 \ + ((ReturnCode)46U) /*!< Incomplete byte rcvd - 6 bit */ +#define RFAL_ERR_INCOMPLETE_BYTE_07 \ + ((ReturnCode)47U) /*!< Incomplete byte rcvd - 7 bit */ + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ +/*! Common code to exit a function with the error if function f return error */ +#define RFAL_EXIT_ON_ERR(r, f) \ + (r) = (f); \ + if (RFAL_ERR_NONE != (r)) { \ + return (r); \ + } + +/*! Common code to exit a function if process/function f has not concluded */ +#define RFAL_EXIT_ON_BUSY(r, f) \ + (r) = (f); \ + if (RFAL_ERR_BUSY == (r)) { \ + return (r); \ + } + +#define RFAL_SIZEOF_ARRAY(a) \ + (sizeof(a) / sizeof((a)[0])) /*!< Compute the size of an array */ +#define RFAL_MAX(a, b) \ + (((a) > (b)) ? (a) : (b)) /*!< Return the maximum of the 2 values */ +#define RFAL_MIN(a, b) \ + (((a) < (b)) ? (a) : (b)) /*!< Return the minimum of the 2 values */ +#define RFAL_GETU16(a) \ + (((uint16_t)(a)[0] << 8) | \ + (uint16_t)(a)[1]) /*!< Cast two Big Endian 8-bits byte array to 16-bits \ + unsigned */ +#define RFAL_GETU32(a) \ + (((uint32_t)(a)[0] << 24) | ((uint32_t)(a)[1] << 16) | \ + ((uint32_t)(a)[2] << 8) | \ + ((uint32_t)(a)[3])) /*!< Cast four Big Endian 8-bit byte array to 32-bit \ + unsigned */ + +#ifdef __CSMC__ +/* STM8 COSMIC */ +#define RFAL_MEMMOVE(s1, s2, n) \ + memmove(s1,s2,n) /* PRQA S 5003 # CERT C 9 - string.h from Cosmic only provides functions with low qualified parameters */ /*!< map memmove to string library code */ +static inline void *RFAL_MEMCPY(void *s1, const void *s2, uint32_t n) { + return memcpy(s1, s2, (uint16_t)n); +} /* PRQA S 0431 # MISRA 1.1 - string.h from Cosmic only provides functions + with low qualified parameters */ +#define RFAL_MEMSET(s1, c, n) \ + memset(s1, (char)(c), n) /*!< map memset to string library code */ +static inline int32_t RFAL_BYTECMP(void *s1, const void *s2, uint32_t n) { + return (int32_t)memcmp(s1, s2, (uint16_t)n); +} /* PRQA S 0431 # MISRA 1.1 - string.h from Cosmic only provides functions + with low qualified parameters */ + +#else /* __CSMC__ */ + +#define RFAL_MEMMOVE memmove /*!< map memmove to string library code */ +#define RFAL_MEMCPY memcpy /*!< map memcpy to string library code */ +#define RFAL_MEMSET memset /*!< map memset to string library code */ +#define RFAL_BYTECMP memcmp /*!< map bytecmp to string library code */ +#endif /* __CSMC__ */ + +#define RFAL_NO_WARNING(v) \ + ((void)(v)) /*!< Macro to suppress compiler warning */ + +#ifndef NULL +#define NULL (void *)0 /*!< represents a NULL pointer */ +#endif /* !NULL */ + +#endif /* RFAL_UTILS_H */ + +/** + * @} + * + */ diff --git a/core/embed/io/nfc/rfal/source/rfal_analogConfig.c b/core/embed/io/nfc/rfal/source/rfal_analogConfig.c new file mode 100644 index 0000000000..870537c079 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_analogConfig.c @@ -0,0 +1,507 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_analogConfig.c + * + * \author bkam + * + * \brief Funcitons to manage and set analog settings. + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_analogConfig.h" +#include "rfal_chip.h" +#include "rfal_platform.h" +#include "rfal_utils.h" + +/* Check whether the Default Analog settings are to be used or custom ones */ +#ifdef RFAL_ANALOG_CONFIG_CUSTOM +extern const uint8_t rfalAnalogConfigCustomSettings[]; +extern const uint16_t rfalAnalogConfigCustomSettingsLength; +#else +#include "rfal_analogConfigTbl.h" +#endif + +/* + ****************************************************************************** + * DEFINES + ****************************************************************************** + */ + +#define RFAL_TEST_REG 0x0080U /*!< Test Register indicator */ + +/* + ****************************************************************************** + * MACROS + ****************************************************************************** + */ + +/* + ****************************************************************************** + * LOCAL DATA TYPES + ****************************************************************************** + */ + +#if RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG +static uint8_t + gRfalAnalogConfig[RFAL_ANALOG_CONFIG_TBL_SIZE]; /*!< Analog Configuration + Settings List */ +#endif /* RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG */ + +/*! Struct for Analog Config Look Up Table Update */ +typedef struct { + const uint8_t *currentAnalogConfigTbl; /*!< Reference to start of current + Analog Configuration */ + uint16_t configTblSize; /*!< Total size of Analog Configuration */ + bool ready; /*!< Indicate if Look Up Table is complete and ready for use */ +} rfalAnalogConfigMgmt; + +static rfalAnalogConfigMgmt + gRfalAnalogConfigMgmt; /*!< Analog Configuration LUT management */ + +/* + ****************************************************************************** + * LOCAL TABLES + ****************************************************************************** + */ + +/* + ****************************************************************************** + * LOCAL FUNCTION PROTOTYPES + ****************************************************************************** + */ +static rfalAnalogConfigNum rfalAnalogConfigSearch(rfalAnalogConfigId configId, + uint16_t *configOffset); + +#if RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG +static void rfalAnalogConfigPtrUpdate(const uint8_t *analogConfigTbl); +#endif /* RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG */ + +/* + ****************************************************************************** + * GLOBAL VARIABLE DEFINITIONS + ****************************************************************************** + */ + +/* + ****************************************************************************** + * GLOBAL FUNCTIONS + ****************************************************************************** + */ + +/*******************************************************************************/ +void rfalAnalogConfigInitialize(void) { + /* Use default Analog configuration settings in Flash by default. */ + +/* Check whether the Default Analog settings are to be used or custom ones */ +#ifdef RFAL_ANALOG_CONFIG_CUSTOM + gRfalAnalogConfigMgmt.currentAnalogConfigTbl = rfalAnalogConfigCustomSettings; + gRfalAnalogConfigMgmt.configTblSize = rfalAnalogConfigCustomSettingsLength; +#else + gRfalAnalogConfigMgmt.currentAnalogConfigTbl = + rfalAnalogConfigDefaultSettings; + gRfalAnalogConfigMgmt.configTblSize = sizeof(rfalAnalogConfigDefaultSettings); +#endif + + gRfalAnalogConfigMgmt.ready = true; +} + +/*******************************************************************************/ +bool rfalAnalogConfigIsReady(void) { return gRfalAnalogConfigMgmt.ready; } + +/*******************************************************************************/ +ReturnCode rfalAnalogConfigListWriteRaw(const uint8_t *configTbl, + uint16_t configTblSize) { +#if RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG + + /* Check if the Configuration Table exceed the Table size */ + if (configTblSize >= RFAL_ANALOG_CONFIG_TBL_SIZE) { + return RFAL_ERR_NOMEM; + } + + /* Check for invalid parameters */ + if ((configTbl == NULL) || (configTblSize == 0U)) { + return RFAL_ERR_PARAM; + } + + /* NOTE: On this API (rfalAnalogConfigListWriteRaw) the current AC Table is + * not reset upon error, as on rfalAnalogConfigListWrite. */ + /* On rfalAnalogConfigListWrite the AC table is written in mutiple + * chunks of data which may lead to an invalid|incomplte AC */ + /* table if an error arises, where here the whole AC Table is written + * all together. */ + + /* NOTE: Function does not check for the validity of the Table contents (conf + * IDs, conf sets, register address) */ + RFAL_MEMCPY(gRfalAnalogConfig, configTbl, configTblSize); + + /* Update the total size of configuration settings */ + gRfalAnalogConfigMgmt.configTblSize = configTblSize; + + rfalAnalogConfigPtrUpdate(gRfalAnalogConfig); + return RFAL_ERR_NONE; + +#else + + // If Analog Configuration Update is to be disabled + RFAL_NO_WARNING(configTbl); + RFAL_NO_WARNING(configTblSize); + return RFAL_ERR_REQUEST; + +#endif /* RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG */ +} + +/*******************************************************************************/ +ReturnCode rfalAnalogConfigListWrite(uint8_t more, + const rfalAnalogConfig *config) { +#if RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG + + rfalAnalogConfigId configId; + rfalAnalogConfigNum numConfig; + uint8_t configSize; + + if (true == gRfalAnalogConfigMgmt + .ready) { /* First Update to the Configuration list. */ + gRfalAnalogConfigMgmt.ready = false; // invalidate the config List + gRfalAnalogConfigMgmt.configTblSize = 0; // Clear the config List + } + + configId = RFAL_GETU16(config->id); + + /* Check validity of the Configuration ID. */ + /* NOTE: Direction DPO uses 2msb of the Technology field as level indicator */ + if (((RFAL_ANALOG_CONFIG_TECH_RFU <= + RFAL_ANALOG_CONFIG_ID_GET_TECH(configId)) && + ((RFAL_ANALOG_CONFIG_ID_GET_DIRECTION(configId) != + RFAL_ANALOG_CONFIG_DPO) && + (RFAL_ANALOG_CONFIG_ID_GET_DIRECTION(configId) != + RFAL_ANALOG_CONFIG_DLMA))) || + ((RFAL_ANALOG_CONFIG_BITRATE_6780 < + RFAL_ANALOG_CONFIG_ID_GET_BITRATE(configId)) && + (RFAL_ANALOG_CONFIG_BITRATE_211p88 > + RFAL_ANALOG_CONFIG_ID_GET_BITRATE(configId))) || + (RFAL_ANALOG_CONFIG_BITRATE_1p6 < + RFAL_ANALOG_CONFIG_ID_GET_BITRATE(configId))) { + rfalAnalogConfigInitialize(); /* Revert to default Analog Configuration */ + return RFAL_ERR_PARAM; + } + + numConfig = config->num; + configSize = + (uint8_t)(sizeof(rfalAnalogConfigId) + sizeof(rfalAnalogConfigNum) + + (numConfig * sizeof(rfalAnalogConfigRegAddrMaskVal))); + + /* Check if the Configuration Set exceed the Table size. */ + if (RFAL_ANALOG_CONFIG_TBL_SIZE <= + (gRfalAnalogConfigMgmt.configTblSize + configSize)) { + rfalAnalogConfigInitialize(); /* Revert to default Analog Configuration */ + return RFAL_ERR_NOMEM; + } + + /* NOTE: Function does not check for the validity of the Register Address. */ + RFAL_MEMCPY(&gRfalAnalogConfig[gRfalAnalogConfigMgmt.configTblSize], + (const uint8_t *)config, configSize); + + /* Increment the total size of configuration settings. */ + gRfalAnalogConfigMgmt.configTblSize += configSize; + + /* Check if it is the last Analog Configuration to load. */ + if (RFAL_ANALOG_CONFIG_UPDATE_LAST == + more) { /* Update the Analog Configuration to the new settings. */ + rfalAnalogConfigPtrUpdate(gRfalAnalogConfig); + } + + return RFAL_ERR_NONE; + +#else + + // If Analog Configuration Update is to be disabled + RFAL_NO_WARNING(config); + RFAL_NO_WARNING(more); + return RFAL_ERR_DISABLED; + +#endif /* RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG */ +} + +/*******************************************************************************/ +ReturnCode rfalAnalogConfigListReadRaw(uint8_t *tblBuf, uint16_t tblBufLen, + uint16_t *configTblSize) { + /* Check if the the current table will fit into the given buffer */ + if (tblBufLen < gRfalAnalogConfigMgmt.configTblSize) { + return RFAL_ERR_NOMEM; + } + + /* Check for invalid parameters */ + if ((configTblSize == NULL) || (tblBuf == NULL)) { + return RFAL_ERR_PARAM; + } + + /* Copy the whole Table to the given buffer */ + if (gRfalAnalogConfigMgmt.configTblSize > 0U) /* MISRA 21.18 */ + { + RFAL_MEMCPY(tblBuf, gRfalAnalogConfigMgmt.currentAnalogConfigTbl, + gRfalAnalogConfigMgmt.configTblSize); + } + *configTblSize = gRfalAnalogConfigMgmt.configTblSize; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalAnalogConfigListRead(rfalAnalogConfigOffset *configOffset, + uint8_t *more, rfalAnalogConfig *config, + rfalAnalogConfigNum numConfig) { + uint16_t configSize; + const rfalAnalogConfigOffset offset = *configOffset; + rfalAnalogConfigNum numConfigSet; + + /* Check if the number of register-mask-value settings for the respective + * Configuration ID will fit into the buffer passed in. */ + if (gRfalAnalogConfigMgmt + .currentAnalogConfigTbl[offset + sizeof(rfalAnalogConfigId)] > + numConfig) { + return RFAL_ERR_NOMEM; + } + + /* Get the number of Configuration set */ + numConfigSet = + gRfalAnalogConfigMgmt + .currentAnalogConfigTbl[offset + sizeof(rfalAnalogConfigId)]; + + /* Pass Configuration Register-Mask-Value sets */ + configSize = + (sizeof(rfalAnalogConfigId) + sizeof(rfalAnalogConfigNum) + + (uint16_t)(numConfigSet * sizeof(rfalAnalogConfigRegAddrMaskVal))); + RFAL_MEMCPY((uint8_t *)config, + &gRfalAnalogConfigMgmt.currentAnalogConfigTbl[offset], + configSize); + *configOffset = offset + configSize; + + /* Check if it is the last Analog Configuration in the Table.*/ + *more = (uint8_t)((*configOffset >= gRfalAnalogConfigMgmt.configTblSize) + ? RFAL_ANALOG_CONFIG_UPDATE_LAST + : RFAL_ANALOG_CONFIG_UPDATE_MORE); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalSetAnalogConfig(rfalAnalogConfigId configId) { + rfalAnalogConfigOffset configOffset = 0; + rfalAnalogConfigNum numConfigSet; + const rfalAnalogConfigRegAddrMaskVal *configTbl; + ReturnCode retCode = RFAL_ERR_NONE; + rfalAnalogConfigNum i; + + if (true != gRfalAnalogConfigMgmt.ready) { + return RFAL_ERR_REQUEST; + } + + /* Search LUT for the specific Configuration ID */ + while (true) { + numConfigSet = rfalAnalogConfigSearch(configId, &configOffset); + if (RFAL_ANALOG_CONFIG_LUT_NOT_FOUND == numConfigSet) { + break; + } + + configTbl = + (rfalAnalogConfigRegAddrMaskVal *)((uintptr_t)gRfalAnalogConfigMgmt + .currentAnalogConfigTbl + + (uint32_t)configOffset); + /* Increment the offset to the next index to search from */ + configOffset += + (uint16_t)(numConfigSet * sizeof(rfalAnalogConfigRegAddrMaskVal)); + + if ((gRfalAnalogConfigMgmt.configTblSize + 1U) < + configOffset) { /* Error check make sure that the we do not access + outside the configuration Table Size */ + return RFAL_ERR_NOMEM; + } + + for (i = 0; i < numConfigSet; i++) { + if ((RFAL_GETU16(configTbl[i].addr) & RFAL_TEST_REG) != 0U) { + RFAL_EXIT_ON_ERR(retCode, + rfalChipChangeTestRegBits( + (RFAL_GETU16(configTbl[i].addr) & ~RFAL_TEST_REG), + configTbl[i].mask, configTbl[i].val)); + } else { + RFAL_EXIT_ON_ERR(retCode, rfalChipChangeRegBits( + RFAL_GETU16(configTbl[i].addr), + configTbl[i].mask, configTbl[i].val)); + } + } + + } /* while(found Analog Config Id) */ + + return retCode; +} + +/*******************************************************************************/ +uint16_t rfalAnalogConfigGenModeID(rfalMode md, rfalBitRate br, uint16_t dir) { + uint16_t id; + + /* Assign Poll/Listen Mode */ + id = ((md >= RFAL_MODE_LISTEN_NFCA) ? RFAL_ANALOG_CONFIG_LISTEN + : RFAL_ANALOG_CONFIG_POLL); + + /* Assign Technology */ + switch (md) { + case RFAL_MODE_POLL_NFCA: + case RFAL_MODE_POLL_NFCA_T1T: + case RFAL_MODE_LISTEN_NFCA: + id |= RFAL_ANALOG_CONFIG_TECH_NFCA; + break; + + case RFAL_MODE_POLL_NFCB: + case RFAL_MODE_POLL_B_PRIME: + case RFAL_MODE_POLL_B_CTS: + case RFAL_MODE_LISTEN_NFCB: + id |= RFAL_ANALOG_CONFIG_TECH_NFCB; + break; + + case RFAL_MODE_POLL_NFCF: + case RFAL_MODE_LISTEN_NFCF: + id |= RFAL_ANALOG_CONFIG_TECH_NFCF; + break; + + case RFAL_MODE_POLL_NFCV: + case RFAL_MODE_POLL_PICOPASS: + id |= RFAL_ANALOG_CONFIG_TECH_NFCV; + break; + + case RFAL_MODE_POLL_ACTIVE_P2P: + case RFAL_MODE_LISTEN_ACTIVE_P2P: + id |= RFAL_ANALOG_CONFIG_TECH_AP2P; + break; + + default: + id = RFAL_ANALOG_CONFIG_TECH_CHIP; + break; + } + + /* Assign Bitrate */ + id |= (((((uint16_t)(br) >= (uint16_t)RFAL_BR_52p97) ? (uint16_t)(br) + : ((uint16_t)(br) + 1U)) + << RFAL_ANALOG_CONFIG_BITRATE_SHIFT) & + RFAL_ANALOG_CONFIG_BITRATE_MASK); + + /* Assign Direction */ + id |= ((dir << RFAL_ANALOG_CONFIG_DIRECTION_SHIFT) & + RFAL_ANALOG_CONFIG_DIRECTION_MASK); + + return id; +} + +/* + ****************************************************************************** + * LOCAL FUNCTIONS + ****************************************************************************** + */ + +/*! + ***************************************************************************** + * \brief Update the link to Analog Configuration LUT + * + * Update the link to the Analog Configuration LUT for the subsequent search + * of Analog Settings. + * + * \param[in] analogConfigTbl: reference to the start of the new Analog + *Configuration Table + * + ***************************************************************************** + */ +#if RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG +static void rfalAnalogConfigPtrUpdate(const uint8_t *analogConfigTbl) { + gRfalAnalogConfigMgmt.currentAnalogConfigTbl = analogConfigTbl; + gRfalAnalogConfigMgmt.ready = true; +} +#endif /* RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG */ + +/*! + ***************************************************************************** + * \brief Search the Analog Configuration LUT for a specific Configuration ID. + * + * Search the Analog Configuration LUT for the Configuration ID. + * + * \param[in] configId: Configuration ID to search for. + * \param[in] configOffset: Configuration Offset in Table + * + * \return number of Configuration Sets + * \return #RFAL_ANALOG_CONFIG_LUT_NOT_FOUND in case Configuration ID is not + *found. + ***************************************************************************** + */ +static rfalAnalogConfigNum rfalAnalogConfigSearch(rfalAnalogConfigId configId, + uint16_t *configOffset) { + rfalAnalogConfigId foundConfigId; + rfalAnalogConfigId configIdMaskVal; + const uint8_t *configTbl; + const uint8_t *currentConfigTbl; + uint16_t i; + + currentConfigTbl = gRfalAnalogConfigMgmt.currentAnalogConfigTbl; + configIdMaskVal = ((RFAL_ANALOG_CONFIG_POLL_LISTEN_MODE_MASK | + RFAL_ANALOG_CONFIG_BITRATE_MASK) | + ((RFAL_ANALOG_CONFIG_TECH_CHIP == + RFAL_ANALOG_CONFIG_ID_GET_TECH(configId)) + ? (RFAL_ANALOG_CONFIG_TECH_MASK | + RFAL_ANALOG_CONFIG_CHIP_SPECIFIC_MASK) + : configId) | + ((RFAL_ANALOG_CONFIG_NO_DIRECTION == + RFAL_ANALOG_CONFIG_ID_GET_DIRECTION(configId)) + ? RFAL_ANALOG_CONFIG_DIRECTION_MASK + : configId)); + + /* When specific ConfigIDs are to be used, override search mask */ + if ((RFAL_ANALOG_CONFIG_ID_GET_DIRECTION(configId) == + RFAL_ANALOG_CONFIG_DPO) || + (RFAL_ANALOG_CONFIG_ID_GET_DIRECTION(configId) == + RFAL_ANALOG_CONFIG_DLMA)) { + configIdMaskVal = + (RFAL_ANALOG_CONFIG_POLL_LISTEN_MODE_MASK | + RFAL_ANALOG_CONFIG_TECH_MASK | RFAL_ANALOG_CONFIG_BITRATE_MASK | + RFAL_ANALOG_CONFIG_DIRECTION_MASK); + } + + i = (*configOffset); + while (i < gRfalAnalogConfigMgmt.configTblSize) { + configTbl = ¤tConfigTbl[i]; + foundConfigId = RFAL_GETU16(configTbl); + if (configId == (foundConfigId & configIdMaskVal)) { + *configOffset = (uint16_t)(i + sizeof(rfalAnalogConfigId) + + sizeof(rfalAnalogConfigNum)); + return configTbl[sizeof(rfalAnalogConfigId)]; + } + + /* If Config Id does not match, increment to next Configuration Id */ + i += (uint16_t)(sizeof(rfalAnalogConfigId) + sizeof(rfalAnalogConfigNum) + + (configTbl[sizeof(rfalAnalogConfigId)] * + sizeof(rfalAnalogConfigRegAddrMaskVal))); + } /* for */ + + return RFAL_ANALOG_CONFIG_LUT_NOT_FOUND; +} diff --git a/core/embed/io/nfc/rfal/source/rfal_cd.c b/core/embed/io/nfc/rfal/source/rfal_cd.c new file mode 100644 index 0000000000..033b3fc707 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_cd.c @@ -0,0 +1,738 @@ +/****************************************************************************** + * @attention + * + * COPYRIGHT 2020 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/*! \file rfal_cd.c + * + * \author Gustavo Patricio + * + * \brief RFAL Card Detection + * + * This module implements the Card Detection Algorithm. + * It may be used for applications that require to identify if a card is on + * the vicinity of the NFC antenna, for example: to protect cards against + * damage by a wireless charger (WPC Qi PTx). + * + * Algorith details + * - The algorithm treats multiple devices as if a card is present + * - The algorithm will identify cards by the following distinguishing features + * - Only cards support NFC-V or other non standard technologies (ST25TB, + * ...) + * - Compliant cards support only a single technology + * - The algorithm will identify phones by the following distinguishing + * features + * - Only phones support P2P (NFC-DEP) + * - Only phones are able to communicate on different NFC technologies + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_cd.h" +#include "rfal_nfca.h" +#include "rfal_nfcb.h" +#include "rfal_nfcf.h" +#include "rfal_nfcv.h" +#include "rfal_rf.h" +#include "rfal_st25tb.h" + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ + +#define RFAL_CD_NFCF_DEVLIMIT 4U /*!< NFC-F device limit (TechDet aligned) */ + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! Card Detection states */ +typedef enum { + RFAL_CD_ST_IDLE, /*!< CD idle */ + RFAL_CD_ST_START, /*!< CD starting */ + RFAL_CD_ST_NFCA_INIT, /*!< NFC-A Initialization */ + RFAL_CD_ST_NFCA_TECHDET, /*!< NFC-A Technology Detection */ + RFAL_CD_ST_NFCA_COLRES_START, /*!< NFC-A Collision Resolution starting */ + RFAL_CD_ST_NFCA_COLRES, /*!< NFC-A Collision Resolution */ + RFAL_CD_ST_NFCB_INIT, /*!< NFC-B Initialization */ + RFAL_CD_ST_NFCB_TECHDET, /*!< NFC-B Technology Detection */ + RFAL_CD_ST_NFCB_COLRES_START, /*!< NFC-B Collision Resolution starting */ + RFAL_CD_ST_NFCB_COLRES, /*!< NFC-B Collision Resolution */ + RFAL_CD_ST_NFCF_INIT, /*!< NFC-F Initialization */ + RFAL_CD_ST_NFCF_TECHDET_START, /*!< NFC-F Technology Detection starting */ + RFAL_CD_ST_NFCF_TECHDET, /*!< NFC-F Technology Detection */ + RFAL_CD_ST_NFCF_COLRES_START, /*!< NFC-F Collision Resolution starting */ + RFAL_CD_ST_NFCF_COLRES, /*!< NFC-F Collision Resolution */ + RFAL_CD_ST_NFCV_INIT, /*!< NFC-V Initialization */ + RFAL_CD_ST_NFCV_TECHDET, /*!< NFC-V Technology Detection */ + RFAL_CD_ST_NFCV_COLRES_START, /*!< NFC-V Collision Resolution starting */ + RFAL_CD_ST_NFCV_COLRES, /*!< NFC-V Collision Resolution */ + RFAL_CD_ST_PROPRIETARY, /*!< Proprietary NFC Technologies starting */ + RFAL_CD_ST_ST25TB_INIT, /*!< ST25TB Initialization */ + RFAL_CD_ST_ST25TB_TECHDET, /*!< ST25TB Technology Detection */ + RFAL_CD_ST_CHECK_PROTO, /*!< Evaluate device(s) found and protocols */ + RFAL_CD_ST_HB_START, /*!< Heartbeat Detection start | Field reset*/ + RFAL_CD_ST_HB, /*!< Heartbeat Detection */ + RFAL_CD_ST_DETECTED, /*!< CD completed: card detected */ + RFAL_CD_ST_NOT_DETECTED, /*!< CD completed: No card detected */ + RFAL_CD_ST_ERROR /*!< Error during card detection */ +} rfalCdState; + +/*! Card Detection context */ +typedef struct { + rfalCdState st; /*!< CD state */ + ReturnCode lastErr; /*!< Last occured error */ + rfalNfcaListenDevice nfcaDev; /*!< NFC-A Device Info */ + rfalNfcbListenDevice nfcbDev; /*!< NFC-B Device Info */ + rfalNfcfListenDevice nfcfDev[RFAL_CD_NFCF_DEVLIMIT]; /*!< NFC-F Device Info */ + uint8_t devCnt; /*!< Tech device counter */ + uint8_t mulDevCnt; /*!< Multi Tech device counter */ + rfalCdTech techFound; /*!< First NFC Technology found */ + bool skipTechFound; /*!< Second round ongoing, skip techFound */ + rfalCdRes *res; /*!< Card Detection output result location */ + uint32_t tmr; /*!< Field reset timer */ +} rfalCdCtx; + +/* + ****************************************************************************** + * LOCAL VARIABLES + ****************************************************************************** + */ + +static rfalCdCtx gCd; + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +#ifdef RFAL_CD_HB +extern bool rfalCdHbDetect(rfalCdTech tech); +#endif /* RFAL_CD_HB */ + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*******************************************************************************/ +ReturnCode rfalCdDetectCard(rfalCdRes *result) { + ReturnCode err; + + RFAL_EXIT_ON_ERR(err, rfalCdStartDetectCard(result)); + rfalRunBlocking(err, rfalCdGetDetectCardStatus()); + + return err; +} + +/*******************************************************************************/ +ReturnCode rfalCdStartDetectCard(rfalCdRes *result) { + if (result == NULL) { + return RFAL_ERR_PARAM; + } + + gCd.st = RFAL_CD_ST_START; + gCd.res = result; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalCdGetDetectCardStatus(void) { + ReturnCode err; + rfalNfcaSensRes sensRes; + rfalNfcbSensbRes sensbRes; + rfalNfcvInventoryRes invRes; + + switch (gCd.st) { + /*******************************************************************************/ + case RFAL_CD_ST_START: + + gCd.mulDevCnt = 0; /* Initialize Card Detection context */ + gCd.skipTechFound = false; + gCd.techFound = RFAL_CD_TECH_NONE; + gCd.tmr = RFAL_TIMING_NONE; + + gCd.st = RFAL_CD_ST_NFCA_INIT; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCA_INIT: + + /* Verify if we are performing multi technology check */ + if ((gCd.skipTechFound)) { + /* If staring multi technology check if field has been Off long enough + */ + if ((!platformTimerIsExpired(gCd.tmr))) { + break; + } + + if (gCd.techFound == RFAL_CD_TECH_NFCA) { + gCd.st = RFAL_CD_ST_NFCB_INIT; /* If single card card found before was + NFC-A skip tech now */ + break; + } + } + + rfalNfcaPollerInitialize(); /* Initialize for NFC-A */ + err = rfalFieldOnAndStartGT(); /* Turns the Field On if not already and + start GT timer */ + if (err != RFAL_ERR_NONE) { + gCd.lastErr = err; + gCd.st = RFAL_CD_ST_ERROR; /* Unable to turn the field On, cannot + continue Card Detection */ + break; + } + + gCd.st = RFAL_CD_ST_NFCA_TECHDET; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCA_TECHDET: + + if (!rfalIsGTExpired()) { + break; /* Wait until GT has been fulfilled */ + } + + err = + rfalNfcaPollerTechnologyDetection(RFAL_COMPLIANCE_MODE_ISO, &sensRes); + if (err == RFAL_ERR_NONE) { + if (gCd.skipTechFound) /* Verify if we are performing multi technology + check */ + { + gCd.res->detType = RFAL_CD_SINGLE_MULTI_TECH; + gCd.st = RFAL_CD_ST_NOT_DETECTED; /* Single device was another + technology and now NFC-A */ + break; + } + + gCd.st = RFAL_CD_ST_NFCA_COLRES_START; /* NFC-A detected perform + collision resolution */ + break; + } + + gCd.st = RFAL_CD_ST_NFCB_INIT; /* NFC-A not detected, move to NFC-B */ + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCA_COLRES_START: + + err = rfalNfcaPollerStartFullCollisionResolution( + RFAL_COMPLIANCE_MODE_ISO, 0, &gCd.nfcaDev, &gCd.devCnt); + if (err != RFAL_ERR_NONE) { + gCd.lastErr = err; + gCd.st = + RFAL_CD_ST_ERROR; /* Collision resolution could not be performed */ + break; + } + + gCd.st = RFAL_CD_ST_NFCA_COLRES; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCA_COLRES: + + err = rfalNfcaPollerGetFullCollisionResolutionStatus(); + if (err != RFAL_ERR_BUSY) { + if ((err == RFAL_ERR_NONE) && + (gCd.devCnt == + 1U)) /* Collision resolution OK and a single card was found */ + { + gCd.mulDevCnt++; + gCd.techFound = RFAL_CD_TECH_NFCA; + } + + /* Check if multiple cards or technologies have already been identified + */ + if ((err != RFAL_ERR_NONE) || (gCd.devCnt > 1U) || + (gCd.mulDevCnt > 1U)) { + gCd.res->detType = + RFAL_CD_MULTIPLE_DEV; /* Report multiple devices. A T1T will also + fail at ColRes */ + gCd.st = RFAL_CD_ST_DETECTED; + + break; + } + + gCd.st = RFAL_CD_ST_NFCB_INIT; /* Move to NFC-B */ + } + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCB_INIT: + + /* Verify if we are performing multi technology check */ + if ((gCd.skipTechFound) && (gCd.techFound == RFAL_CD_TECH_NFCB)) { + gCd.st = RFAL_CD_ST_NFCF_INIT; /* If single card card found before was + NFC-B skip tech now */ + break; + } + + rfalNfcbPollerInitialize(); /* Initialize for NFC-B */ + rfalFieldOnAndStartGT(); /* Turns the Field On if not already and start GT + timer */ + + gCd.st = RFAL_CD_ST_NFCB_TECHDET; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCB_TECHDET: + + if (!rfalIsGTExpired()) { + break; /* Wait until GT has been fulfilled */ + } + + err = rfalNfcbPollerTechnologyDetection(RFAL_COMPLIANCE_MODE_NFC, + &sensbRes, &gCd.devCnt); + if (err == RFAL_ERR_NONE) { + /* Verify if we are performing multi technology check OR already found + * one on the first round */ + if (gCd.skipTechFound) { + gCd.res->detType = RFAL_CD_SINGLE_MULTI_TECH; + gCd.st = RFAL_CD_ST_NOT_DETECTED; /* Single device was another + technology and now NFC-B */ + break; + } else if (gCd.techFound != + RFAL_CD_TECH_NONE) /* If on the first round check if other + Tech was already found */ + { + gCd.res->detType = RFAL_CD_MULTIPLE_TECH; + gCd.st = RFAL_CD_ST_DETECTED; + break; + } else { + /* MISRA 15.7 - Empty else */ + } + + gCd.st = RFAL_CD_ST_NFCB_COLRES_START; /* NFC-B detected perform + collision resolution */ + break; + } + + gCd.st = RFAL_CD_ST_NFCF_INIT; /* NFC-B not detected, move to NFC-B */ + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCB_COLRES_START: + + err = rfalNfcbPollerStartCollisionResolution(RFAL_COMPLIANCE_MODE_NFC, 0, + &gCd.nfcbDev, &gCd.devCnt); + if (err != RFAL_ERR_NONE) { + gCd.lastErr = err; + gCd.st = + RFAL_CD_ST_ERROR; /* Collision resolution could not be performed */ + break; + } + + gCd.st = RFAL_CD_ST_NFCB_COLRES; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCB_COLRES: + + err = rfalNfcbPollerGetCollisionResolutionStatus(); + if (err != RFAL_ERR_BUSY) { + if ((err == RFAL_ERR_NONE) && + (gCd.devCnt == + 1U)) /* Collision resolution OK and a single card was found */ + { + gCd.mulDevCnt++; + gCd.techFound = RFAL_CD_TECH_NFCB; + } + + /* Check if multiple cards or technologies have already been identified + */ + if ((err != RFAL_ERR_NONE) || (gCd.devCnt > 1U) || + (gCd.mulDevCnt > 1U)) { + gCd.res->detType = RFAL_CD_MULTIPLE_DEV; + gCd.st = RFAL_CD_ST_DETECTED; + break; + } + + gCd.st = ((RFAL_SUPPORT_MODE_POLL_NFCF) + ? RFAL_CD_ST_NFCF_INIT + : RFAL_CD_ST_NFCV_INIT); /* Move to NFC-F or NFC-V */ + } + break; + +#if RFAL_SUPPORT_MODE_POLL_NFCF + /*******************************************************************************/ + case RFAL_CD_ST_NFCF_INIT: + + /* Verify if we are performing multi technology check */ + if ((gCd.skipTechFound) && (gCd.techFound == RFAL_CD_TECH_NFCF)) { + gCd.st = RFAL_CD_ST_PROPRIETARY; /* If single card card found before was + NFC-F skip tech now */ + break; + } + + rfalNfcfPollerInitialize(RFAL_BR_212); /* Initialize for NFC-F */ + rfalFieldOnAndStartGT(); /* Turns the Field On if not already and start GT + timer */ + + gCd.st = RFAL_CD_ST_NFCF_TECHDET_START; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCF_TECHDET_START: + if (!rfalIsGTExpired()) { + break; /* Wait until GT has been fulfilled */ + } + + err = rfalNfcfPollerStartCheckPresence(); + gCd.st = RFAL_CD_ST_NFCF_TECHDET; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCF_TECHDET: + + err = rfalNfcfPollerGetCheckPresenceStatus(); + if (err == RFAL_ERR_BUSY) { + break; /* Wait until NFC-F Technlogy Detection is completed */ + } + + if (gCd.skipTechFound) /* Verify if we are performing multi technology + check */ + { + gCd.st = RFAL_CD_ST_PROPRIETARY; + + /* If single device was another technology and now NFC-F, otherwise + * conclude*/ + if (err == RFAL_ERR_NONE) { + gCd.res->detType = RFAL_CD_SINGLE_MULTI_TECH; + gCd.st = RFAL_CD_ST_NOT_DETECTED; + } + break; + } + + if (err == RFAL_ERR_NONE) { + if (gCd.techFound != + RFAL_CD_TECH_NONE) /* If on the first round check if other Tech was + already found */ + { + gCd.res->detType = RFAL_CD_MULTIPLE_TECH; + gCd.st = RFAL_CD_ST_DETECTED; + break; + } + + gCd.st = RFAL_CD_ST_NFCF_COLRES_START; /* NFC-F detected, perform + collision resolution */ + break; + } + + gCd.st = RFAL_CD_ST_NFCV_INIT; /* NFC-F not detected, move to NFC-V */ + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCF_COLRES_START: + + err = rfalNfcfPollerStartCollisionResolution(RFAL_COMPLIANCE_MODE_NFC, + RFAL_CD_NFCF_DEVLIMIT, + gCd.nfcfDev, &gCd.devCnt); + if (err != RFAL_ERR_NONE) { + gCd.lastErr = err; + gCd.st = + RFAL_CD_ST_ERROR; /* Collision resolution could not be performed */ + break; + } + + gCd.st = RFAL_CD_ST_NFCF_COLRES; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCF_COLRES: + + err = rfalNfcfPollerGetCollisionResolutionStatus(); + if (err != RFAL_ERR_BUSY) { + if ((err == RFAL_ERR_NONE) && + (gCd.devCnt == + 1U)) /* Collision resolution OK and a single card was found */ + { + gCd.mulDevCnt++; + gCd.techFound = RFAL_CD_TECH_NFCF; + } + + /* Check if multiple cards or technologies have already been identified + */ + if ((err != RFAL_ERR_NONE) || (gCd.devCnt > 1U) || + (gCd.mulDevCnt > 1U)) { + gCd.res->detType = RFAL_CD_MULTIPLE_DEV; + gCd.st = RFAL_CD_ST_DETECTED; + break; + } + + gCd.st = RFAL_CD_ST_NFCV_INIT; /* Move to NFC-V */ + } + break; +#endif /* RFAL_SUPPORT_MODE_POLL_NFCF*/ + + /*******************************************************************************/ + case RFAL_CD_ST_NFCV_INIT: + + rfalNfcvPollerInitialize(); /* Initialize for NFC-V */ + rfalFieldOnAndStartGT(); /* Turns the Field On if not already and start GT + timer */ + + gCd.st = RFAL_CD_ST_NFCV_TECHDET; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_NFCV_TECHDET: + + if (!rfalIsGTExpired()) { + break; /* Wait until GT has been fulfilled */ + } + + err = rfalNfcvPollerCheckPresence(&invRes); + if (err == RFAL_ERR_NONE) { + if (gCd.techFound != + RFAL_CD_TECH_NONE) /* If other Tech was already found */ + { + gCd.res->detType = RFAL_CD_MULTIPLE_TECH; + gCd.st = RFAL_CD_ST_DETECTED; + break; + } + + gCd.techFound = + RFAL_CD_TECH_NFCV; /* If NFC-V is regarded as card as CE NFC-V is + currently not supported by active devices */ + gCd.res->detType = RFAL_CD_CARD_TECH; + gCd.st = RFAL_CD_ST_DETECTED; + break; + } + + gCd.st = + RFAL_CD_ST_PROPRIETARY; /* Move to Proprietary NFC Technologies */ + break; + + /*******************************************************************************/ + case RFAL_CD_ST_PROPRIETARY: + + rfalFieldOff(); + platformTimerDestroy(gCd.tmr); + gCd.tmr = platformTimerCreate((uint8_t)rfalConv1fcToMs(RFAL_GT_NFCA)); + + /* If none of the other NFC technologies was not seen on a second round, + * regard as card */ + if (gCd.skipTechFound) { + gCd.res->detType = RFAL_CD_SINGLE_DEV; + gCd.st = RFAL_CD_ST_DETECTED; + + /*******************************************************************************/ + /* Only one device found which does not support NFC-DEP and only * + * answered in one technology, perform heartbeat detection */ + +#ifdef RFAL_CD_HB + gCd.st = RFAL_CD_ST_HB_START; +#endif /* RFAL_CD_HB */ + + /*******************************************************************************/ + + break; + } + + gCd.st = RFAL_CD_ST_ST25TB_INIT; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_ST25TB_INIT: + + if ((!platformTimerIsExpired( + gCd.tmr))) /* Check if field has been Off long enough */ + { + break; + } + + rfalSt25tbPollerInitialize(); /* Initialize for ST25TB */ + err = rfalFieldOnAndStartGT(); /* Turns the Field On if not already and + start GT timer */ + + if (err != RFAL_ERR_NONE) { + gCd.lastErr = err; + gCd.st = RFAL_CD_ST_ERROR; /* Unable to turn the field On, cannot + continue Card Detection */ + break; + } + + gCd.st = RFAL_CD_ST_ST25TB_TECHDET; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_ST25TB_TECHDET: + + if ((!rfalIsGTExpired())) { + break; /* Wait until GT has been fulfilled */ + } + + err = rfalSt25tbPollerCheckPresence(NULL); + if (err == RFAL_ERR_NONE) { + gCd.techFound = + RFAL_CD_TECH_OTHER; /* If ST25TB is regarded as card as CE is not + supported by active devices */ + gCd.res->detType = RFAL_CD_CARD_TECH; + gCd.st = RFAL_CD_ST_DETECTED; + break; + } + + gCd.st = RFAL_CD_ST_CHECK_PROTO; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_CHECK_PROTO: + + if (gCd.mulDevCnt == 0U) /* No NFC listener has been detected */ + { + gCd.res->detType = RFAL_CD_NOT_FOUND; + gCd.st = RFAL_CD_ST_NOT_DETECTED; + break; + } + + if (gCd.mulDevCnt == 1U) /* A single NFC listener has been identified */ + { + /* Check if it supports NFC-DEP protocol */ + if (((gCd.techFound == RFAL_CD_TECH_NFCA) && + ((gCd.nfcaDev.type == RFAL_NFCA_NFCDEP) || + (gCd.nfcaDev.type == RFAL_NFCA_T4T_NFCDEP))) || + ((gCd.techFound == RFAL_CD_TECH_NFCF) && + rfalNfcfIsNfcDepSupported(&gCd.nfcfDev[0]))) { + gCd.res->detType = RFAL_CD_SINGLE_P2P; + gCd.st = RFAL_CD_ST_NOT_DETECTED; /* NFC-DEP supported, regarded as + non passive card */ + break; + } + + /* If a single NFC listener has been detected, and did not announce + * NFC-DEP support, * check if it supports mutiple NFC technologies + * (skip the one it was previous seen) */ + gCd.skipTechFound = true; + gCd.st = RFAL_CD_ST_NFCA_INIT; + + /* Reset Field once again to avoid unwanted effect of Proprietary NFC + * Tech modulation */ + rfalFieldOff(); + platformTimerDestroy(gCd.tmr); + gCd.tmr = platformTimerCreate((uint8_t)rfalConv1fcToMs(RFAL_GT_NFCA)); + break; + } + + gCd.res->detType = RFAL_CD_MULTIPLE_DEV; + gCd.st = RFAL_CD_ST_DETECTED; + break; + +#ifdef RFAL_CD_HB + /*******************************************************************************/ + case RFAL_CD_ST_HB_START: + + if ((!platformTimerIsExpired( + gCd.tmr))) /* Check if field has been Off long enough */ + { + break; + } + + switch (gCd.techFound) { + case RFAL_CD_TECH_NFCF: + rfalNfcfPollerInitialize(RFAL_BR_212); + break; + + case RFAL_CD_TECH_NFCB: + rfalNfcbPollerInitialize(); + break; + + case RFAL_CD_TECH_NFCA: + default: + rfalNfcaPollerInitialize(); + break; + } + + err = rfalFieldOnAndStartGT(); + if (err != RFAL_ERR_NONE) { + gCd.lastErr = err; + gCd.st = RFAL_CD_ST_ERROR; /* Unable to turn the field On, cannot + continue Card Detection */ + break; + } + + gCd.st = RFAL_CD_ST_HB; + break; + + /*******************************************************************************/ + case RFAL_CD_ST_HB: + if (!rfalIsGTExpired()) /* Check if GT has been fulfilled */ + { + break; + } + + if (rfalCdHbDetect( + gCd.techFound)) /* Perform tha heartbeat detection sequence */ + { + gCd.res->detType = RFAL_CD_SINGLE_HB; + gCd.st = RFAL_CD_ST_NOT_DETECTED; /* Single device performing ALM, no + passive card */ + break; + } + + gCd.res->detType = RFAL_CD_SINGLE_DEV; + gCd.st = RFAL_CD_ST_DETECTED; /* ALM not detected on single device, regard + as card */ + break; +#endif /* RFAL_CD_HB */ + + /*******************************************************************************/ + case RFAL_CD_ST_DETECTED: + case RFAL_CD_ST_NOT_DETECTED: + + /* Card Detection completed, return outcome */ + gCd.res->detected = ((gCd.st == RFAL_CD_ST_NOT_DETECTED) ? false : true); + + rfalFieldOff(); + gCd.st = RFAL_CD_ST_IDLE; + + return RFAL_ERR_NONE; + + /*******************************************************************************/ + case RFAL_CD_ST_IDLE: + return RFAL_ERR_WRONG_STATE; + + /*******************************************************************************/ + case RFAL_CD_ST_ERROR: + + gCd.res->detType = RFAL_CD_UNKOWN; + gCd.res->detected = + true; /* Error ocurred, mark as card present to avoid damage */ + + rfalFieldOff(); + gCd.st = RFAL_CD_ST_IDLE; + + return gCd.lastErr; + + /*******************************************************************************/ + default: + return RFAL_ERR_INTERNAL; + } + + return RFAL_ERR_BUSY; +} diff --git a/core/embed/io/nfc/rfal/source/rfal_crc.c b/core/embed/io/nfc/rfal/source/rfal_crc.c new file mode 100644 index 0000000000..27c33f21b4 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_crc.c @@ -0,0 +1,78 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_crc.c + * + * \author Oliver Regenfelder + * + * \brief CRC calculation implementation + * + */ + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include "rfal_crc.h" + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +static uint16_t rfalCrcUpdateCcitt(uint16_t crcSeed, uint8_t dataByte); + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ +uint16_t rfalCrcCalculateCcitt(uint16_t preloadValue, const uint8_t* buf, + uint16_t length) { + uint16_t crc = preloadValue; + uint16_t index; + + for (index = 0; index < length; index++) { + crc = rfalCrcUpdateCcitt(crc, buf[index]); + } + + return crc; +} + +/* +****************************************************************************** +* LOCAL FUNCTIONS +****************************************************************************** +*/ +static uint16_t rfalCrcUpdateCcitt(uint16_t crcSeed, uint8_t dataByte) { + uint16_t crc = crcSeed; + uint8_t dat = dataByte; + + dat ^= (uint8_t)(crc & 0xFFU); + dat ^= (dat << 4); + + crc = (crc >> 8) ^ (((uint16_t)dat) << 8) ^ (((uint16_t)dat) << 3) ^ + (((uint16_t)dat) >> 4); + + return crc; +} diff --git a/core/embed/io/nfc/rfal/source/rfal_crc.h b/core/embed/io/nfc/rfal/source/rfal_crc.h new file mode 100644 index 0000000000..571541f3f2 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_crc.h @@ -0,0 +1,69 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_crc.h + * + * \author Ulrich Herrmann + * + * \brief CRC calculation module + * + */ +/*! + * + */ + +#ifndef RFAL_CRC_H_ +#define RFAL_CRC_H_ + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include "rfal_platform.h" + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +/*! + ***************************************************************************** + * \brief Calculate CRC according to CCITT standard. + * + * This function takes \a length bytes from \a buf and calculates the CRC + * for this data. The result is returned. + * \note This implementation calculates the CRC with LSB first, i.e. all + * bytes are "read" from right to left. + * + * \param[in] preloadValue : Initial value of CRC calculation. + * \param[in] buf : buffer to calculate the CRC for. + * \param[in] length : size of the buffer. + * + * \return 16 bit long crc value. + * + ***************************************************************************** + */ +extern uint16_t rfalCrcCalculateCcitt(uint16_t preloadValue, const uint8_t* buf, + uint16_t length); + +#endif /* RFAL_CRC_H_ */ diff --git a/core/embed/io/nfc/rfal/source/rfal_dpo.c b/core/embed/io/nfc/rfal/source/rfal_dpo.c new file mode 100644 index 0000000000..b8a22ea993 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_dpo.c @@ -0,0 +1,290 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * $Revision: $ + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_dpo.c + * + * \author Martin Zechleitner + * + * \brief Functions to manage and set dynamic power settings + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_dpo.h" +#include "rfal_analogConfig.h" +#include "rfal_chip.h" +#include "rfal_dpoTbl.h" +#include "rfal_platform.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_DPO + */ + +#if RFAL_FEATURE_DPO + +/* + ****************************************************************************** + * DEFINES + ****************************************************************************** + */ +#define RFAL_DPO_ANALOGCONFIG_SHIFT 13U +#define RFAL_DPO_ANALOGCONFIG_MASK 0x6000U + +/* + ****************************************************************************** + * LOCAL DATA TYPES + ****************************************************************************** + */ + +/*! RFAL DPO instance */ +typedef struct { + bool enabled; + const rfalDpoEntry* currentDpo; + uint8_t tableEntries; + rfalDpoEntry table[RFAL_DPO_TABLE_MAX_ENTRIES]; + uint8_t tableEntry; + rfalDpoMeasureFunc measureCallback; + rfalMode curMode; + rfalBitRate curBR; +} rfalDpo; + +/* + ****************************************************************************** + * LOCAL VARIABLES + ****************************************************************************** + */ + +static rfalDpo gRfalDpo; + +/* + ****************************************************************************** + * GLOBAL FUNCTIONS + ****************************************************************************** + */ +void rfalDpoInitialize(void) { + /* By default DPO is disabled */ + rfalDpoSetEnabled(false); + +/* Set default measurement */ +#if defined(ST25R3911) || defined(ST25R3916) || defined(ST25R3916B) + gRfalDpo.measureCallback = rfalChipMeasureAmplitude; +#else + gRfalDpo.measureCallback = rfalChipMeasureCombinedIQ; +#endif /* ST25R */ + + /* Use the default Dynamic Power values */ + gRfalDpo.currentDpo = rfalDpoDefaultSettings; + gRfalDpo.tableEntries = + (sizeof(rfalDpoDefaultSettings) / RFAL_DPO_TABLE_PARAM_LEN); + + RFAL_MEMCPY(gRfalDpo.table, gRfalDpo.currentDpo, + sizeof(rfalDpoDefaultSettings)); +} + +/*******************************************************************************/ +void rfalDpoSetMeasureCallback(rfalDpoMeasureFunc pFunc) { + gRfalDpo.measureCallback = pFunc; +} + +/*******************************************************************************/ +ReturnCode rfalDpoTableWrite(const rfalDpoEntry* powerTbl, + uint8_t powerTblEntries) { + uint8_t entry; + + /* Check if the table size parameter is too big */ + if ((powerTblEntries * RFAL_DPO_TABLE_PARAM_LEN) > RFAL_DPO_TABLE_SIZE_MAX) { + return RFAL_ERR_NOMEM; + } + + /* Check if the first increase entry is 0xFF */ + if ((powerTblEntries == 0U) || (powerTbl == NULL)) { + return RFAL_ERR_PARAM; + } + + /* Check if the entries of the dynamic power table are valid */ + for (entry = 0; entry < powerTblEntries; entry++) { + if (powerTbl[entry].inc < powerTbl[entry].dec) { + return RFAL_ERR_PARAM; + } + } + + /* Copy the data set */ + RFAL_MEMCPY(gRfalDpo.table, powerTbl, + (powerTblEntries * RFAL_DPO_TABLE_PARAM_LEN)); + + gRfalDpo.currentDpo = gRfalDpo.table; + gRfalDpo.tableEntries = powerTblEntries; + + if (gRfalDpo.tableEntry > powerTblEntries) { + /* powerTblEntries is always greater then zero, verified at parameter check + */ + gRfalDpo.tableEntry = (powerTblEntries - 1U); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalDpoTableRead(rfalDpoEntry* tblBuf, uint8_t tblBufEntries, + uint8_t* tableEntries) { + /* Wrong request */ + if ((tblBuf == NULL) || (tblBufEntries < gRfalDpo.tableEntries) || + (tableEntries == NULL)) { + return RFAL_ERR_PARAM; + } + + /* Not properly initialized */ + if (gRfalDpo.currentDpo == NULL) { + return RFAL_ERR_WRONG_STATE; + } + + /* Copy the whole Table to the given buffer */ + RFAL_MEMCPY(tblBuf, gRfalDpo.currentDpo, + (tblBufEntries * RFAL_DPO_TABLE_PARAM_LEN)); + *tableEntries = gRfalDpo.tableEntries; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalDpoAdjust(void) { + uint8_t refValue; + uint16_t modeID; + rfalBitRate br; + rfalMode mode; + uint8_t tableEntry; + const rfalDpoEntry* dpoTable; + + /* Initialize local vars */ + tableEntry = gRfalDpo.tableEntry; + dpoTable = (const rfalDpoEntry*)gRfalDpo.currentDpo; + refValue = 0; + mode = RFAL_MODE_NONE; + br = RFAL_BR_KEEP; + + /* Obtain RFAL's current mode and bit rate */ + mode = rfalGetMode(); + rfalGetBitRate(&br, NULL); + + /* Check if the Power Adjustment is disabled and * + * if the callback to the measurement method is properly set */ + if ((!gRfalDpo.enabled) || (gRfalDpo.measureCallback == NULL)) { + return RFAL_ERR_PARAM; + } + + /* Ensure that the current mode is Passive Poller and table is initialized*/ + if ((!rfalIsModePassivePoll(mode)) || (gRfalDpo.currentDpo == NULL)) { + return RFAL_ERR_WRONG_STATE; + } + + /* Ensure a proper measure reference value */ + if (RFAL_ERR_NONE != gRfalDpo.measureCallback(&refValue)) { + return RFAL_ERR_IO; + } + + if (refValue >= + dpoTable[gRfalDpo.tableEntry].inc) { /* Increase the output power */ + /* the top of the table represents the highest amplitude value*/ + if (gRfalDpo.tableEntry == 0U) { + /* Maximum driver value has been reached */ + } else { + /* Go up in the table to decrease the driver resistance */ + tableEntry--; + } + } else if (refValue <= dpoTable[gRfalDpo.tableEntry] + .dec) { /* Decrease the output power */ + /* The bottom is the highest possible value */ + if ((gRfalDpo.tableEntry + 1U) >= gRfalDpo.tableEntries) { + /* minimum driver value has been reached */ + } else { + /* Go down in the table to increase the driver resistance */ + tableEntry++; + } + } else { + /* Fall through to evaluate whether to write dpo and its associated analog + * configs */ + } + + /* Apply new configs if there was a change on DPO level or RFAL mode|bitrate + */ + /* Also adjust power in case mode is not yet set and a different table + * entry|setting is applicbale */ + if ((mode != gRfalDpo.curMode) || (br != gRfalDpo.curBR) || + (tableEntry != gRfalDpo.tableEntry) || + ((mode == RFAL_MODE_NONE) && (tableEntry != gRfalDpo.tableEntry))) { + /* Update local context */ + gRfalDpo.curMode = mode; + gRfalDpo.curBR = br; + gRfalDpo.tableEntry = tableEntry; + + /* Get the new value for RFO resistance form the table and apply the new RFO + * resistance setting */ + rfalChipSetRFO(dpoTable[gRfalDpo.tableEntry].rfoRes); + + /* Apply the DPO Analog Config according to this threshold */ + /* Technology field is being extended for DPO: 2msb are used for threshold + * step (only 4 allowed) */ + modeID = rfalAnalogConfigGenModeID( + gRfalDpo.curMode, gRfalDpo.curBR, + RFAL_ANALOG_CONFIG_DPO); /* Generate Analog Config mode ID */ + modeID |= (((uint16_t)gRfalDpo.tableEntry << RFAL_DPO_ANALOGCONFIG_SHIFT) & + RFAL_DPO_ANALOGCONFIG_MASK); /* Add DPO threshold step|level */ + rfalSetAnalogConfig(modeID); /* Apply DPO Analog Config */ + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +const rfalDpoEntry* rfalDpoGetCurrentTableEntry(void) { + return &gRfalDpo.currentDpo[gRfalDpo.tableEntry]; +} + +/*******************************************************************************/ +uint8_t rfalDpoGetCurrentTableIndex(void) { return gRfalDpo.tableEntry; } + +/*******************************************************************************/ +void rfalDpoSetEnabled(bool enable) { + gRfalDpo.enabled = enable; + gRfalDpo.curMode = RFAL_MODE_NONE; + gRfalDpo.curBR = RFAL_BR_KEEP; + gRfalDpo.tableEntry = 0; +} + +/*******************************************************************************/ +bool rfalDpoIsEnabled(void) { return gRfalDpo.enabled; } + +#endif /* RFAL_FEATURE_DPO */ diff --git a/core/embed/io/nfc/rfal/source/rfal_iso15693_2.c b/core/embed/io/nfc/rfal/source/rfal_iso15693_2.c new file mode 100644 index 0000000000..c6c099e18d --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_iso15693_2.c @@ -0,0 +1,518 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_iso15693_2.c + * + * \author Ulrich Herrmann + * + * \brief Implementation of ISO-15693-2 + * + */ + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include "rfal_iso15693_2.h" +#include "rfal_crc.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_NFCV + */ + +#if RFAL_FEATURE_NFCV + +/* +****************************************************************************** +* LOCAL MACROS +****************************************************************************** +*/ + +#define ISO_15693_DEBUG(...) /*!< Macro for the log method */ + +/* +****************************************************************************** +* LOCAL DEFINES +****************************************************************************** +*/ +#define ISO15693_DAT_SOF_1_4 0x21 /* LSB constants */ +#define ISO15693_DAT_EOF_1_4 0x04 +#define ISO15693_DAT_00_1_4 0x02 +#define ISO15693_DAT_01_1_4 0x08 +#define ISO15693_DAT_10_1_4 0x20 +#define ISO15693_DAT_11_1_4 0x80 + +#define ISO15693_DAT_SOF_1_256 0x81 +#define ISO15693_DAT_EOF_1_256 0x04 +#define ISO15693_DAT_SLOT0_1_256 0x02 +#define ISO15693_DAT_SLOT1_1_256 0x08 +#define ISO15693_DAT_SLOT2_1_256 0x20 +#define ISO15693_DAT_SLOT3_1_256 0x80 + +#define ISO15693_PHY_DAT_MANCHESTER_1 0xaaaa + +#define ISO15693_PHY_BIT_BUFFER_SIZE \ + 1000 /*!< size of the receiving buffer. Might be adjusted if longer \ + datastreams are expected. */ + +/* +****************************************************************************** +* LOCAL VARIABLES +****************************************************************************** +*/ +static rfalIso15693PhyConfig_t + gIso15693PhyConfig; /*!< current phy configuration */ + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +static ReturnCode rfalIso15693PhyVCDCode1Of4(const uint8_t data, + uint8_t* outbuffer, + uint16_t maxOutBufLen, + uint16_t* outBufLen); +static ReturnCode rfalIso15693PhyVCDCode1Of256(const uint8_t data, + uint8_t* outbuffer, + uint16_t maxOutBufLen, + uint16_t* outBufLen); + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ +ReturnCode rfalIso15693PhyConfigure( + const rfalIso15693PhyConfig_t* config, + const struct iso15693StreamConfig** needed_stream_config) { + static struct iso15693StreamConfig auxConfig = { + /* MISRA 8.9 */ + .useBPSK = 0, /* 0: subcarrier, 1:BPSK */ + .din = + 5, /* 2^5*fc = 423750 Hz: divider for the in subcarrier frequency */ + .dout = + 7, /*!< 2^7*fc = 105937 : divider for the in subcarrier frequency */ + .report_period_length = + 3, /*!< 8=2^3 the length of the reporting period */ + }; + + /* make a copy of the configuration */ + RFAL_MEMCPY((uint8_t*)&gIso15693PhyConfig, (const uint8_t*)config, + sizeof(rfalIso15693PhyConfig_t)); + + if (config->speedMode <= + 3U) { /* If valid speed mode adjust report period accordingly */ + auxConfig.report_period_length = (3U - (uint8_t)config->speedMode); + } else { /* If invalid default to normal (high) speed */ + auxConfig.report_period_length = 3; + } + + *needed_stream_config = &auxConfig; + + return RFAL_ERR_NONE; +} + +ReturnCode rfalIso15693PhyGetConfiguration(rfalIso15693PhyConfig_t* config) { + RFAL_MEMCPY(config, &gIso15693PhyConfig, sizeof(rfalIso15693PhyConfig_t)); + + return RFAL_ERR_NONE; +} + +ReturnCode rfalIso15693VCDCode(uint8_t* buffer, uint16_t length, bool sendCrc, + bool sendFlags, bool picopassMode, + uint16_t* subbit_total_length, uint16_t* offset, + uint8_t* outbuf, uint16_t outBufSize, + uint16_t* actOutBufSize) { + ReturnCode err = RFAL_ERR_NONE; + uint8_t eof, sof; + uint8_t transbuf[2]; + uint16_t crc = 0; + ReturnCode (*txFunc)(const uint8_t data, uint8_t* outbuffer, + uint16_t maxOutBufLen, uint16_t* outBufLen); + uint8_t crc_len; + uint8_t* outputBuf; + uint16_t outputBufSize; + + crc_len = (uint8_t)((sendCrc) ? 2 : 0); + + *actOutBufSize = 0; + + if (ISO15693_VCD_CODING_1_4 == gIso15693PhyConfig.coding) { + sof = ISO15693_DAT_SOF_1_4; + eof = ISO15693_DAT_EOF_1_4; + txFunc = rfalIso15693PhyVCDCode1Of4; + *subbit_total_length = + ((1U /* SOF */ + + ((length + (uint16_t)crc_len) * 4U) + 1U) /* EOF */ + ); + if (outBufSize < + 5U) { /* 5 should be safe: enough for sof + 1byte data in 1of4 */ + return RFAL_ERR_NOMEM; + } + } else { + sof = ISO15693_DAT_SOF_1_256; + eof = ISO15693_DAT_EOF_1_256; + txFunc = rfalIso15693PhyVCDCode1Of256; + *subbit_total_length = + ((1U /* SOF */ + + ((length + (uint16_t)crc_len) * 64U) + 1U) /* EOF */ + ); + + if (*offset != 0U) { + if (outBufSize < + 64U) { /* 64 should be safe: enough a single byte data in 1of256 */ + return RFAL_ERR_NOMEM; + } + } else { + if (outBufSize < + 65U) { /* At beginning of a frame we need at least 65 bytes to start: + enough for sof + 1byte data in 1of256 */ + return RFAL_ERR_NOMEM; + } + } + } + + if (length == 0U) { + *subbit_total_length = 1; + } + + if ((length != 0U) && (0U == *offset) && sendFlags && (!picopassMode)) { + /* set high datarate flag */ + buffer[0] |= (uint8_t)ISO15693_REQ_FLAG_HIGH_DATARATE; + /* clear sub-carrier flag - we only support single sub-carrier */ + buffer[0] = (uint8_t)(buffer[0] & + ~ISO15693_REQ_FLAG_TWO_SUBCARRIERS); /* MISRA 10.3 */ + } + + outputBuf = outbuf; /* MISRA 17.8: Use intermediate variable */ + outputBufSize = outBufSize; /* MISRA 17.8: Use intermediate variable */ + + /* Send SOF if at 0 offset */ + if ((length != 0U) && (0U == *offset)) { + *outputBuf = sof; + (*actOutBufSize)++; + outputBufSize--; + outputBuf++; + } + + while ((*offset < length) && (err == RFAL_ERR_NONE)) { + uint16_t filled_size; + /* send data */ + err = txFunc(buffer[*offset], outputBuf, outputBufSize, &filled_size); + (*actOutBufSize) += filled_size; + outputBuf = + &outputBuf[filled_size]; /* MISRA 18.4: Avoid pointer arithmetic */ + outputBufSize -= filled_size; + if (err == RFAL_ERR_NONE) { + (*offset)++; + } + } + if (err != RFAL_ERR_NONE) { + return RFAL_ERR_AGAIN; + } + + while ((err == RFAL_ERR_NONE) && sendCrc && (*offset < (length + 2U))) { + uint16_t filled_size; + if ((0U == crc) && (length != 0U)) { + crc = rfalCrcCalculateCcitt( + (uint16_t)((picopassMode) ? 0xE012U + : 0xFFFFU), /* In PicoPass Mode a different + Preset Value is used */ + ((picopassMode) ? (buffer + 1U) + : buffer), /* CMD byte is not taken into account in + PicoPass mode */ + ((picopassMode) ? (length - 1U) + : length)); /* CMD byte is not taken into account in + PicoPass mode */ + + crc = (uint16_t)((picopassMode) ? crc : ~crc); + } + /* send crc */ + transbuf[0] = (uint8_t)(crc & 0xffU); + transbuf[1] = (uint8_t)((crc >> 8) & 0xffU); + err = txFunc(transbuf[*offset - length], outputBuf, outputBufSize, + &filled_size); + (*actOutBufSize) += filled_size; + outputBuf = + &outputBuf[filled_size]; /* MISRA 18.4: Avoid pointer arithmetic */ + outputBufSize -= filled_size; + if (err == RFAL_ERR_NONE) { + (*offset)++; + } + } + if (err != RFAL_ERR_NONE) { + return RFAL_ERR_AGAIN; + } + + if (((!sendCrc) && (*offset == length)) || + (sendCrc && (*offset == (length + 2U)))) { + *outputBuf = eof; + (*actOutBufSize)++; + outputBufSize--; + outputBuf++; + } else { + return RFAL_ERR_AGAIN; + } + + return err; +} + +ReturnCode rfalIso15693VICCDecode(const uint8_t* inBuf, uint16_t inBufLen, + uint8_t* outBuf, uint16_t outBufLen, + uint16_t* outBufPos, uint16_t* bitsBeforeCol, + uint16_t ignoreBits, bool picopassMode) { + ReturnCode err = RFAL_ERR_NONE; + uint16_t crc; + uint16_t mp; /* Current bit position in manchester bit inBuf*/ + uint16_t bp; /* Current bit position in outBuf */ + + *bitsBeforeCol = 0; + *outBufPos = 0; + + /* first check for valid SOF. Since it starts with 3 unmodulated pulses it is + * 0x17. */ + if ((inBuf[0] & 0x1fU) != 0x17U) { + ISO_15693_DEBUG("0x%x\n", iso15693PhyBitBuffer[0]); + return RFAL_ERR_FRAMING; + } + ISO_15693_DEBUG("SOF\n"); + + if (outBufLen == 0U) { + return RFAL_ERR_NONE; + } + + mp = 5; /* 5 bits were SOF, now manchester starts: 2 bits per payload bit */ + bp = 0; + + RFAL_MEMSET(outBuf, 0, outBufLen); + + if (inBufLen == 0U) { + return RFAL_ERR_CRC; + } + + for (; mp < ((inBufLen * 8U) - 2U); mp += 2U) { + bool isEOF = false; + + uint8_t man; + man = (inBuf[mp / 8U] >> (mp % 8U)) & 0x1U; + man |= ((inBuf[(mp + 1U) / 8U] >> ((mp + 1U) % 8U)) & 0x1U) << 1; + if (1U == man) { + bp++; + } + if (2U == man) { + outBuf[bp / 8U] = + (uint8_t)(outBuf[bp / 8U] | (1U << (bp % 8U))); /* MISRA 10.3 */ + bp++; + } + if ((bp % 8U) == 0U) { /* Check for EOF */ + ISO_15693_DEBUG("ceof %hhx %hhx\n", inBuf[mp / 8U], inBuf[mp / 8 + 1]); + if (((inBuf[mp / 8U] & 0xe0U) == 0xa0U) && + (inBuf[(mp / 8U) + 1U] == + 0x03U)) { /* Now we know that it was 10111000 = EOF */ + ISO_15693_DEBUG("EOF\n"); + isEOF = true; + } + } + if (((0U == man) || (3U == man)) && (!isEOF)) { + if (bp >= ignoreBits) { + err = RFAL_ERR_RF_COLLISION; + } else { + /* ignored collision: leave as 0 */ + bp++; + } + } + if ((bp >= (outBufLen * 8U)) || (err == RFAL_ERR_RF_COLLISION) || + isEOF) { /* Don't write beyond the end */ + break; + } + } + + *outBufPos = (bp / 8U); + *bitsBeforeCol = bp; + + if (err != RFAL_ERR_NONE) { + return err; + } + + if ((bp % 8U) != 0U) { + return RFAL_ERR_CRC; + } + + if (*outBufPos > 2U) { + /* finally, check crc */ + ISO_15693_DEBUG("Calculate CRC, val: 0x%x, outBufLen: ", *outBuf); + ISO_15693_DEBUG("0x%x ", *outBufPos - 2); + + crc = rfalCrcCalculateCcitt(((picopassMode) ? 0xE012U : 0xFFFFU), outBuf, + *outBufPos - 2U); + crc = (uint16_t)((picopassMode) ? crc : ~crc); + + if (((crc & 0xffU) == outBuf[*outBufPos - 2U]) && + (((crc >> 8U) & 0xffU) == outBuf[*outBufPos - 1U])) { + err = RFAL_ERR_NONE; + ISO_15693_DEBUG("OK\n"); + } else { + ISO_15693_DEBUG("error! Expected: 0x%x, got ", crc); + ISO_15693_DEBUG("0x%hhx 0x%hhx\n", outBuf[*outBufPos - 2], + outBuf[*outBufPos - 1]); + err = RFAL_ERR_CRC; + } + } else { + err = RFAL_ERR_CRC; + } + + return err; +} + +/* +****************************************************************************** +* LOCAL FUNCTIONS +****************************************************************************** +*/ +/*! + ***************************************************************************** + * \brief Perform 1 of 4 coding and send coded data + * + * This function takes \a length bytes from \a buffer, perform 1 of 4 coding + * (see ISO15693-2 specification) and sends the data using stream mode. + * + * \param[in] sendSof : send SOF prior to data. + * \param[in] buffer : data to send. + * \param[in] length : number of bytes to send. + * + * \return RFAL_ERR_IO : Error during communication. + * \return RFAL_ERR_NONE : No error. + * + ***************************************************************************** + */ +static ReturnCode rfalIso15693PhyVCDCode1Of4(const uint8_t data, + uint8_t* outbuffer, + uint16_t maxOutBufLen, + uint16_t* outBufLen) { + uint8_t tmp; + ReturnCode err = RFAL_ERR_NONE; + uint16_t a; + uint8_t* outbuf = outbuffer; + + *outBufLen = 0; + + if (maxOutBufLen < 4U) { + return RFAL_ERR_NOMEM; + } + + tmp = data; + for (a = 0; a < 4U; a++) { + switch (tmp & 0x3U) { + case 0: + *outbuf = ISO15693_DAT_00_1_4; + break; + case 1: + *outbuf = ISO15693_DAT_01_1_4; + break; + case 2: + *outbuf = ISO15693_DAT_10_1_4; + break; + case 3: + *outbuf = ISO15693_DAT_11_1_4; + break; + default: + /* MISRA 16.4: mandatory default statement */ + break; + } + outbuf++; + (*outBufLen)++; + tmp >>= 2; + } + return err; +} + +/*! + ***************************************************************************** + * \brief Perform 1 of 256 coding and send coded data + * + * This function takes \a length bytes from \a buffer, perform 1 of 256 coding + * (see ISO15693-2 specification) and sends the data using stream mode. + * \note This function sends SOF prior to the data. + * + * \param[in] sendSof : send SOF prior to data. + * \param[in] buffer : data to send. + * \param[in] length : number of bytes to send. + * + * \return RFAL_ERR_IO : Error during communication. + * \return RFAL_ERR_NONE : No error. + * + ***************************************************************************** + */ +static ReturnCode rfalIso15693PhyVCDCode1Of256(const uint8_t data, + uint8_t* outbuffer, + uint16_t maxOutBufLen, + uint16_t* outBufLen) { + uint8_t tmp; + ReturnCode err = RFAL_ERR_NONE; + uint16_t a; + uint8_t* outbuf = outbuffer; + + *outBufLen = 0; + + if (maxOutBufLen < 64U) { + return RFAL_ERR_NOMEM; + } + + tmp = data; + for (a = 0; a < 64U; a++) { + switch (tmp) { + case 0: + *outbuf = ISO15693_DAT_SLOT0_1_256; + break; + case 1: + *outbuf = ISO15693_DAT_SLOT1_1_256; + break; + case 2: + *outbuf = ISO15693_DAT_SLOT2_1_256; + break; + case 3: + *outbuf = ISO15693_DAT_SLOT3_1_256; + break; + default: + *outbuf = 0; + break; + } + outbuf++; + (*outBufLen)++; + tmp -= 4U; /* PRQA S 2911 # CERT INT30 - Intentional underflow, part of the + coding */ + } + + return err; +} + +#endif /* RFAL_FEATURE_NFCV */ diff --git a/core/embed/io/nfc/rfal/source/rfal_iso15693_2.h b/core/embed/io/nfc/rfal/source/rfal_iso15693_2.h new file mode 100644 index 0000000000..f1e45385cb --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_iso15693_2.h @@ -0,0 +1,200 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_iso15693_2.h + * + * \author Ulrich Herrmann + * + * \brief Implementation of ISO-15693-2 + * + */ +/*! + * + */ + +#ifndef RFAL_ISO_15693_2_H +#define RFAL_ISO_15693_2_H + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include "rfal_platform.h" +#include "rfal_utils.h" + +/* +****************************************************************************** +* GLOBAL DATATYPES +****************************************************************************** +*/ +/*! Enum holding possible VCD codings */ +typedef enum { + ISO15693_VCD_CODING_1_4, + ISO15693_VCD_CODING_1_256 +} rfalIso15693VcdCoding_t; + +/*! Enum holding possible VICC datarates */ + +/*! Configuration parameter used by rfalIso15693PhyConfigure */ +typedef struct { + rfalIso15693VcdCoding_t coding; /*!< desired VCD coding */ + uint32_t speedMode; /*!< 0: normal mode, 1: 2^1 = x2 Fast mode, 2 : 2^2 = x4 + mode, 3 : 2^3 = x8 mode - all rx pulse numbers and + times are divided by 1,2,4,8 */ +} rfalIso15693PhyConfig_t; + +/*! Parameters how the stream mode should work */ +struct iso15693StreamConfig { + uint8_t useBPSK; /*!< 0: subcarrier, 1:BPSK */ + uint8_t din; /*!< the divider for the in subcarrier frequency: fc/2^din */ + uint8_t dout; /*!< the divider for the in subcarrier frequency fc/2^dout */ + uint8_t report_period_length; /*!< the length of the reporting period + 2^report_period_length*/ +}; +/* +****************************************************************************** +* GLOBAL CONSTANTS +****************************************************************************** +*/ + +#define ISO15693_REQ_FLAG_TWO_SUBCARRIERS \ + 0x01U /*!< Flag indication that communication uses two subcarriers */ +#define ISO15693_REQ_FLAG_HIGH_DATARATE \ + 0x02U /*!< Flag indication that communication uses high bitrate */ +#define ISO15693_MASK_FDT_LISTEN \ + (65) /*!< t1min = 308,2us = 4192/fc = 65.5 * 64/fc */ + +/*! t1max = 323,3us = 4384/fc = 68.5 * 64/fc + * 12 = 768/fc unmodulated time of single subcarrior SoF */ +#define ISO15693_FWT (69 + 12) + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +/*! + ***************************************************************************** + * \brief Initialize the ISO15693 phy + * + * \param[in] config : ISO15693 phy related configuration (See + *rfalIso15693PhyConfig_t) \param[out] needed_stream_config : return a pointer + *to the stream config needed for this iso15693 config. To be used for configure + *RF chip. + * + * \return RFAL_ERR_IO : Error during communication. + * \return RFAL_ERR_NONE : No error. + * + ***************************************************************************** + */ +extern ReturnCode rfalIso15693PhyConfigure( + const rfalIso15693PhyConfig_t* config, + const struct iso15693StreamConfig** needed_stream_config); + +/*! + ***************************************************************************** + * \brief Return current phy configuration + * + * This function returns current Phy configuration previously + * set by rfalIso15693PhyConfigure + * + * \param[out] config : ISO15693 phy configuration. + * + * \return RFAL_ERR_NONE : No error. + * + ***************************************************************************** + */ +extern ReturnCode rfalIso15693PhyGetConfiguration( + rfalIso15693PhyConfig_t* config); + +/*! + ***************************************************************************** + * \brief Code an ISO15693 compatible frame + * + * This function takes \a length bytes from \a buffer, perform proper + * encoding and sends out the frame to the ST25R391x. + * + * \param[in] buffer : data to send, modified to adapt flags. + * \param[in] length : number of bytes to send. + * \param[in] sendCrc : If set to true, CRC is appended to the frame + * \param[in] sendFlags : If set to true, flag field is sent according to + * ISO15693. + * \param[in] picopassMode : If set to true, the coding will be according to + Picopass + * \param[out] subbit_total_length : Return the complete bytes which need to + * be send for the current coding + * \param[in,out] offset : Set to 0 for first transfer, function will + update it to point to next byte to be coded + * \param[out] outbuf : buffer where the function will store the coded + subbit stream + * \param[out] outBufSize : the size of the output buffer + * \param[out] actOutBufSize : the amount of data stored into the buffer at + this call + * + * \return RFAL_ERR_IO : Error during communication. + * \return RFAL_ERR_AGAIN : Data was not coded all the way. Call function + again with a new/emptied buffer + * \return RFAL_ERR_NO_MEM : In case outBuf is not big enough. Needs to have at + least 5 bytes for 1of4 coding and 65 bytes for + 1of256 coding + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +extern ReturnCode rfalIso15693VCDCode( + uint8_t* buffer, uint16_t length, bool sendCrc, bool sendFlags, + bool picopassMode, uint16_t* subbit_total_length, uint16_t* offset, + uint8_t* outbuf, uint16_t outBufSize, uint16_t* actOutBufSize); + +/*! + ***************************************************************************** + * \brief Receive an ISO15693 compatible frame + * + * This function receives an ISO15693 frame from the ST25R391x, decodes the + *frame and writes the raw data to \a buffer. \note Buffer needs to be big + *enough to hold CRC also (+2 bytes) + * + * \param[in] inBuf : buffer with the hamming coded stream to be decoded + * \param[in] inBufLen : number of bytes to decode (=length of buffer). + * \param[out] outBuf : buffer where received data shall be written to. + * \param[in] outBufLen : Length of output buffer, should be approx twice + *the size of inBuf \param[out] outBufPos : The number of decoded bytes. Could + *be used in extended implementation to allow multiple calls \param[out] + *bitsBeforeCol : in case of RFAL_ERR_RF_COLLISION this value holds the number + *of bits in the current byte where the collision happened \param[in] ignoreBits + *: number of bits in the beginning where collisions will be ignored \param[in] + *picopassMode : if set to true, the decoding will be according to Picopass + * + * \return RFAL_ERR_RF_COLLISION : collision occured, data uncorrect + * \return RFAL_ERR_CRC : CRC error, data uncorrect + * \return RFAL_ERR_TIMEOUT : timeout waiting for data. + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +extern ReturnCode rfalIso15693VICCDecode( + const uint8_t* inBuf, uint16_t inBufLen, uint8_t* outBuf, + uint16_t outBufLen, uint16_t* outBufPos, uint16_t* bitsBeforeCol, + uint16_t ignoreBits, bool picopassMode); + +#endif /* RFAL_ISO_15693_2_H */ diff --git a/core/embed/io/nfc/rfal/source/rfal_isoDep.c b/core/embed/io/nfc/rfal/source/rfal_isoDep.c new file mode 100644 index 0000000000..0d9c2ee051 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_isoDep.c @@ -0,0 +1,3188 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: NFCC firmware + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_isoDep.c + * + * \author Gustavo Patricio + * + * \brief Implementation of ISO-DEP protocol + * + * This implementation was based on the following specs: + * - ISO/IEC 14443-4 2nd Edition 2008-07-15 + * - NFC Forum Digital Protocol 1.1 2014-01-14 + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ + +#include "rfal_isoDep.h" +#include "rfal_rf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_ISO_DEP + */ + +#if RFAL_FEATURE_ISO_DEP + +#if (!RFAL_FEATURE_ISO_DEP_POLL && !RFAL_FEATURE_ISO_DEP_LISTEN) +#error \ + " RFAL: Invalid ISO-DEP Configuration. Please select at least one mode: Poller and/or Listener. " +#endif + +/* Check for valid I-Block length [RFAL_ISODEP_FSX_16 ; RFAL_ISODEP_FSX_4096]*/ +#if ((RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN > 4096) || \ + (RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN < 16)) +#error \ + " RFAL: Invalid ISO-DEP IBlock Max length. Please change RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN. " +#endif + +/* Check for valid APDU length. */ +#if ((RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN < RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN)) +#error \ + " RFAL: Invalid ISO-DEP APDU Max length. Please change RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN. " +#endif + +/* + ****************************************************************************** + * DEFINES + ****************************************************************************** + */ +#define ISODEP_CRC_LEN RFAL_CRC_LEN /*!< ISO1443 CRC Length */ + +#define ISODEP_PCB_POS (0U) /*!< PCB position on message header*/ +#define ISODEP_SWTX_INF_POS (1U) /*!< INF position in a S-WTX */ + +#define ISODEP_DID_POS (1U) /*!< DID position on message header*/ +#define ISODEP_SWTX_PARAM_LEN (1U) /*!< SWTX parameter length */ + +#define ISODEP_DSL_MAX_LEN \ + (RFAL_ISODEP_PCB_LEN + RFAL_ISODEP_DID_LEN) /*!< Deselect Req/Res length */ + +#define ISODEP_PCB_xBLOCK_MASK (0xC0U) /*!< Bit mask for Block type */ +#define ISODEP_PCB_IBLOCK (0x00U) /*!< Bit mask indicating a I-Block */ +#define ISODEP_PCB_RBLOCK (0x80U) /*!< Bit mask indicating a R-Block */ +#define ISODEP_PCB_SBLOCK (0xC0U) /*!< Bit mask indicating a S-Block */ +#define ISODEP_PCB_INVALID (0x40U) /*!< Bit mask of an Invalid PCB */ + +#define ISODEP_HDR_MAX_LEN \ + (RFAL_ISODEP_PCB_LEN + RFAL_ISODEP_DID_LEN + \ + RFAL_ISODEP_NAD_LEN) /*!< Max header length (PCB + DID + NAD) */ + +#define ISODEP_PCB_IB_VALID_MASK \ + (ISODEP_PCB_B6_BIT | \ + ISODEP_PCB_B2_BIT) /*!< Bit mask for the MUST bits on I-Block */ +#define ISODEP_PCB_IB_VALID_VAL \ + (ISODEP_PCB_B2_BIT) /*!< Value for the MUST bits on I-Block */ +#define ISODEP_PCB_RB_VALID_MASK \ + (ISODEP_PCB_B6_BIT | ISODEP_PCB_B3_BIT | \ + ISODEP_PCB_B2_BIT) /*!< Bit mask for the MUST bits on R-Block */ +#define ISODEP_PCB_RB_VALID_VAL \ + (ISODEP_PCB_B6_BIT | \ + ISODEP_PCB_B2_BIT) /*!< Value for the MUST bits on R-Block */ +#define ISODEP_PCB_SB_VALID_MASK \ + (ISODEP_PCB_B3_BIT | ISODEP_PCB_B2_BIT | \ + ISODEP_PCB_B1_BIT) /*!< Bit mask for the MUST bits on I-Block */ +#define ISODEP_PCB_SB_VALID_VAL \ + (ISODEP_PCB_B2_BIT) /*!< Value for the MUST bits on I-Block */ + +#define ISODEP_PCB_B1_BIT (0x01U) /*!< Bit mask for the RFU S Blocks */ +#define ISODEP_PCB_B2_BIT \ + (0x02U) /*!< Bit mask for the RFU bit2 in I,S,R Blocks */ +#define ISODEP_PCB_B3_BIT \ + (0x04U) /*!< Bit mask for the RFU bit3 in R Blocks \ + */ +#define ISODEP_PCB_B6_BIT \ + (0x20U) /*!< Bit mask for the RFU bit2 in R Blocks \ + */ +#define ISODEP_PCB_CHAINING_BIT \ + (0x10U) /*!< Bit mask for the chaining bit of an ISO DEP I-Block in PCB. */ +#define ISODEP_PCB_DID_BIT \ + (0x08U) /*!< Bit mask for the DID presence bit of an ISO DEP I,S,R Blocks \ + PCB. */ +#define ISODEP_PCB_NAD_BIT \ + (0x04U) /*!< Bit mask for the NAD presence bit of an ISO DEP I,S,R Blocks in \ + PCB */ +#define ISODEP_PCB_BN_MASK \ + (0x01U) /*!< Bit mask for the block number of an ISO DEP I,R Block in PCB */ + +#define ISODEP_SWTX_PL_MASK \ + (0xC0U) /*!< Bit mask for the Power Level bits of the inf byte of an WTX \ + request or response */ +#define ISODEP_SWTX_WTXM_MASK \ + (0x3FU) /*!< Bit mask for the WTXM bits of the inf byte of an WTX request or \ + response */ + +#define ISODEP_RBLOCK_INF_LEN \ + (0U) /*!< INF length of R-Block Digital 1.1 15.1.3 */ +#define ISODEP_SDSL_INF_LEN \ + (0U) /*!< INF length of S(DSL) Digital 1.1 15.1.3 */ +#define ISODEP_SWTX_INF_LEN \ + (1U) /*!< INF length of S(WTX) Digital 1.1 15.2.2 */ + +#define ISODEP_WTXM_MIN \ + (1U) /*!< Minimum allowed value for the WTXM, Digital 1.0 13.2.2 */ +#define ISODEP_WTXM_MAX \ + (59U) /*!< Maximum allowed value for the WTXM, Digital 1.0 13.2.2 */ + +#define ISODEP_PCB_Sxx_MASK \ + (0x30U) /*!< Bit mask for the S-Block type */ +#define ISODEP_PCB_DESELECT \ + (0x00U) /*!< Bit mask for S-Block indicating Deselect */ +#define ISODEP_PCB_WTX \ + (0x30U) /*!< Bit mask for S-Block indicating Waiting Time eXtension */ + +#define ISODEP_PCB_Rx_MASK (0x10U) /*!< Bit mask for the R-Block type */ +#define ISODEP_PCB_ACK (0x00U) /*!< Bit mask for R-Block indicating ACK */ +#define ISODEP_PCB_NAK (0x10U) /*!< Bit mask for R-Block indicating NAK */ + +/*! Maximum length of control message (no INF) */ +#define ISODEP_CONTROLMSG_BUF_LEN \ + (RFAL_ISODEP_PCB_LEN + RFAL_ISODEP_DID_LEN + RFAL_ISODEP_NAD_LEN + \ + ISODEP_SWTX_PARAM_LEN) + +#define ISODEP_FWT_DEACTIVATION \ + (71680U) /*!< FWT used for DESELECT Digital 2.2 B10 ISO1444-4 7.2 & 8.1 */ +#define ISODEP_MAX_RERUNS \ + (0x0FFFFFFFU) /*!< Maximum rerun retrys for a blocking protocol run*/ + +#define ISODEP_PCBSBLOCK \ + (0x00U | ISODEP_PCB_SBLOCK | \ + ISODEP_PCB_B2_BIT) /*!< PCB Value of a S-Block */ +#define ISODEP_PCB_SDSL \ + (ISODEP_PCBSBLOCK | \ + ISODEP_PCB_DESELECT) /*!< PCB Value of a S-Block with DESELECT */ +#define ISODEP_PCB_SWTX \ + (ISODEP_PCBSBLOCK | ISODEP_PCB_WTX) /*!< PCB Value of a S-Block with WTX */ +#define ISODEP_PCB_SPARAMETERS \ + (ISODEP_PCB_SBLOCK | \ + ISODEP_PCB_WTX) /*!< PCB Value of a S-Block with PARAMETERS */ + +#define ISODEP_FWI_LIS_MAX_NFC \ + 8U /*!< FWT Listener Max FWIT4ATmax FWIBmax Digital 1.1 A6 & A3 */ +#define ISODEP_FWI_LIS_MAX_EMVCO \ + 7U /*!< FWT Listener Max FWIMAX EMVCo 2.6 A.5 */ +#define ISODEP_FWI_LIS_MAX \ + (uint8_t)( \ + (gIsoDep.compMode == RFAL_COMPLIANCE_MODE_EMV) \ + ? ISODEP_FWI_LIS_MAX_EMVCO \ + : ISODEP_FWI_LIS_MAX_NFC) /*!< FWI Listener Max as NFC / EMVCo */ +#define ISODEP_FWT_LIS_MAX \ + rfalIsoDepFWI2FWT(ISODEP_FWI_LIS_MAX) /*!< FWT Listener Max */ + +#define ISODEP_FWI_MIN_10 \ + (1U) /*!< Minimum value for FWI Digital 1.0 11.6.2.17 */ +#define ISODEP_FWI_MIN_11 \ + (0U) /*!< Default value for FWI Digital 1.1 13.6.2 */ +#define ISODEP_FWI_MAX \ + (14U) /*!< Maximum value for FWI Digital 1.0 11.6.2.17 \ + */ +#define ISODEP_SFGI_MIN \ + (0U) /*!< Default value for FWI Digital 1.1 13.6.2.22 \ + */ +#define ISODEP_SFGI_MAX \ + (14U) /*!< Maximum value for FWI Digital 1.1 13.6.2.22 */ + +#define RFAL_ISODEP_SPARAM_TVL_HDR_LEN \ + (2U) /*!< S(PARAMETERS) TVL header length: Tag + Len */ +#define RFAL_ISODEP_SPARAM_HDR_LEN \ + (RFAL_ISODEP_PCB_LEN + \ + RFAL_ISODEP_SPARAM_TVL_HDR_LEN) /*!< S(PARAMETERS) header length: PCB + Tag \ + + Len */ + +/**********************************************************************************************************************/ +/**********************************************************************************************************************/ +#define RFAL_ISODEP_NO_PARAM \ + (0U) /*!< No parameter flag for rfalIsoDepHandleControlMsg() */ + +#define RFAL_ISODEP_CMD_RATS \ + (0xE0U) /*!< RATS command Digital 1.1 13.6.1 */ + +#define RFAL_ISODEP_ATS_MIN_LEN \ + (1U) /*!< Minimum ATS length Digital 1.1 13.6.2 */ +#define RFAL_ISODEP_ATS_HDR_LEN \ + (5U) /*!< ATS headerlength Digital 1.1 13.6.2 */ +#define RFAL_ISODEP_ATS_MAX_LEN \ + (RFAL_ISODEP_ATS_HDR_LEN + \ + RFAL_ISODEP_ATS_HB_MAX_LEN) /*!< Maximum ATS length Digital 1.1 13.6.2 \ + */ +#define RFAL_ISODEP_ATS_T0_FSCI_MASK \ + (0x0FU) /*!< ATS T0's FSCI mask Digital 1.1 13.6.2 */ +#define RFAL_ISODEP_ATS_TB_FWI_SHIFT \ + (4U) /*!< ATS TB's FWI shift Digital 1.1 13.6.2 */ +#define RFAL_ISODEP_ATS_FWI_MASK \ + (0x0FU) /*!< ATS TB's FWI shift Digital 1.1 13.6.2 */ +#define RFAL_ISODEP_ATS_TL_POS \ + (0x00U) /*!< ATS TL's position Digital 1.1 13.6.2 */ + +#define RFAL_ISODEP_PPS_SB \ + (0xD0U) /*!< PPS REQ PPSS's SB value (no CID) ISO14443-4 5.3 */ +#define RFAL_ISODEP_PPS_MASK \ + (0xF0U) /*!< PPS REQ PPSS's SB mask ISO14443-4 5.3 */ +#define RFAL_ISODEP_PPS_SB_DID_MASK \ + (0x0FU) /*!< PPS REQ PPSS's DID|CID mask ISO14443-4 5.3 */ +#define RFAL_ISODEP_PPS_PPS0_PPS1_PRESENT \ + (0x11U) /*!< PPS REQ PPS0 indicating that PPS1 is present */ +#define RFAL_ISODEP_PPS_PPS1 \ + (0x00U) /*!< PPS REQ PPS1 fixed value ISO14443-4 5.3 */ +#define RFAL_ISODEP_PPS_PPS1_DSI_SHIFT \ + (2U) /*!< PPS REQ PPS1 fixed value ISO14443-4 5.3 */ +#define RFAL_ISODEP_PPS_PPS1_DXI_MASK \ + (0x0FU) /*!< PPS REQ PPS1 fixed value ISO14443-4 5.3 */ +#define RFAL_ISODEP_PPS_RES_LEN \ + (1U) /*!< PPS Response length ISO14443-4 5.4 */ +#define RFAL_ISODEP_PPS_STARTBYTE_POS \ + (0U) /*!< PPS REQ PPSS's byte position ISO14443-4 5.4 */ +#define RFAL_ISODEP_PPS_PPS0_POS \ + (1U) /*!< PPS REQ PPS0's byte position ISO14443-4 5.4 */ +#define RFAL_ISODEP_PPS_PPS1_POS \ + (2U) /*!< PPS REQ PPS1's byte position ISO14443-4 5.4 */ +#define RFAL_ISODEP_PPS0_VALID_MASK \ + (0xEFU) /*!< PPS REQ PPS0 valid coding mask ISO14443-4 5.4 */ + +#define RFAL_ISODEP_CMD_ATTRIB \ + (0x1DU) /*!< ATTRIB command Digital 1.1 14.6.1 */ +#define RFAL_ISODEP_ATTRIB_PARAM2_DSI_SHIFT \ + (6U) /*!< ATTRIB PARAM2 DSI shift Digital 1.1 14.6.1 */ +#define RFAL_ISODEP_ATTRIB_PARAM2_DRI_SHIFT \ + (4U) /*!< ATTRIB PARAM2 DRI shift Digital 1.1 14.6.1 */ +#define RFAL_ISODEP_ATTRIB_PARAM2_DXI_MASK \ + (0xF0U) /*!< ATTRIB PARAM2 DxI mask Digital 1.1 14.6.1 */ +#define RFAL_ISODEP_ATTRIB_PARAM2_FSDI_MASK \ + (0x0FU) /*!< ATTRIB PARAM2 FSDI mask Digital 1.1 14.6.1 */ +#define RFAL_ISODEP_ATTRIB_PARAM4_DID_MASK \ + (0x0FU) /*!< ATTRIB PARAM4 DID mask Digital 1.1 14.6.1 */ +#define RFAL_ISODEP_ATTRIB_HDR_LEN \ + (9U) /*!< ATTRIB REQ header length Digital 1.1 14.6.1 */ + +#define RFAL_ISODEP_ATTRIB_RES_HDR_LEN \ + (1U) /*!< ATTRIB RES header length Digital 1.1 14.6.2 */ +#define RFAL_ISODEP_ATTRIB_RES_MBLIDID_POS \ + (0U) /*!< ATTRIB RES MBLI|DID position Digital 1.1 14.6.2 */ +#define RFAL_ISODEP_ATTRIB_RES_DID_MASK \ + (0x0FU) /*!< ATTRIB RES DID mask Digital 1.1 14.6.2 */ +#define RFAL_ISODEP_ATTRIB_RES_MBLI_MASK \ + (0x0FU) /*!< ATTRIB RES MBLI mask Digital 1.1 14.6.2 */ +#define RFAL_ISODEP_ATTRIB_RES_MBLI_SHIFT \ + (4U) /*!< ATTRIB RES MBLI shift Digital 1.1 14.6.2 */ + +#define RFAL_ISODEP_DID_MASK \ + (0x0FU) /*!< ISODEP's DID mask */ +#define RFAL_ISODEP_DID_00 \ + (0U) /*!< ISODEP's DID value 0 */ + +#define RFAL_ISODEP_FSDI_MAX_NFC \ + (8U) /*!< Max FSDI value Digital 2.0 14.6.1.9 & B7 & B8 */ +#define RFAL_ISODEP_FSDI_MAX_NFC_21 \ + (0x0CU) /*!< Max FSDI value Digital 2.1 14.6.1.9 & Table 72 */ +#define RFAL_ISODEP_FSDI_MAX_EMV \ + (0x0CU) /*!< Max FSDI value EMVCo 3.0 5.7.2.5 */ + +#define RFAL_ISODEP_RATS_PARAM_FSDI_MASK \ + (0xF0U) /*!< Mask bits for FSDI in RATS */ +#define RFAL_ISODEP_RATS_PARAM_FSDI_SHIFT \ + (4U) /*!< Shift for FSDI in RATS */ +#define RFAL_ISODEP_RATS_PARAM_DID_MASK \ + (0x0FU) /*!< Mask bits for DID in RATS */ + +#define RFAL_ISODEP_ATS_TL_OFFSET \ + (0x00U) /*!< Offset of TL on ATS */ +#define RFAL_ISODEP_ATS_TA_OFFSET \ + (0x02U) /*!< Offset of TA if it is present on ATS */ +#define RFAL_ISODEP_ATS_TB_OFFSET \ + (0x03U) /*!< Offset of TB if both TA and TB is present on ATS */ +#define RFAL_ISODEP_ATS_TC_OFFSET \ + (0x04U) /*!< Offset of TC if both TA,TB & TC are present on ATS */ +#define RFAL_ISODEP_ATS_HIST_OFFSET \ + (0x05U) /*!< Offset of Historical Bytes if TA, TB & TC are present on ATS */ +#define RFAL_ISODEP_ATS_TC_ADV_FEAT \ + (0x10U) /*!< Bit mask indicating support for Advanced protocol features: DID \ + & NAD */ +#define RFAL_ISODEP_ATS_TC_DID \ + (0x02U) /*!< Bit mask indicating support for DID */ +#define RFAL_ISODEP_ATS_TC_NAD \ + (0x01U) /*!< Bit mask indicating support for NAD */ + +#define RFAL_ISODEP_PPS0_PPS1_PRESENT \ + (0x11U) /*!< PPS0 byte indicating that PPS1 is present */ +#define RFAL_ISODEP_PPS0_PPS1_NOT_PRESENT \ + (0x01U) /*!< PPS0 byte indicating that PPS1 is NOT present */ +#define RFAL_ISODEP_PPS1_DRI_MASK \ + (0x03U) /*!< PPS1 byte DRI mask bits */ +#define RFAL_ISODEP_PPS1_DSI_MASK \ + (0x0CU) /*!< PPS1 byte DSI mask bits */ +#define RFAL_ISODEP_PPS1_DSI_SHIFT \ + (2U) /*!< PPS1 byte DSI shift */ +#define RFAL_ISODEP_PPS1_DxI_MASK \ + (0x03U) /*!< PPS1 byte DSI/DRS mask bits */ + +/*! Delta Time for polling during Activation (ATS) : 20ms Digital 1.0 11.7.1.1 & + * A.7 */ +#define RFAL_ISODEP_T4T_DTIME_POLL_10 rfalConvMsTo1fc(20) + +/*! Delta Time for polling during Activation (ATS) : 16.4ms Digital 1.1 13.8.1.1 + * & A.6 Use 16 ms as testcase T4AT_BI_10_03 sends a frame exactly at the border + */ +#define RFAL_ISODEP_T4T_DTIME_POLL_11 216960U + +/*! Activation frame waiting time FWT(act) = 71680/fc (~5286us) + * Digital 1.1 13.8.1.1 & A.6 */ +#define RFAL_ISODEP_T4T_FWT_ACTIVATION (71680U + RFAL_ISODEP_T4T_DTIME_POLL_11) + +/*! Delta frame waiting time = 16/fc Digital 1.0 11.7.1.3 & A.7*/ +#define RFAL_ISODEP_DFWT_10 16U + +/*! Delta frame waiting time = 16/fc Digital 2.0 14.8.1.3 & B.7*/ +#define RFAL_ISODEP_DFWT_20 49152U + +/* + ****************************************************************************** + * MACROS + ****************************************************************************** + */ + +#define rfalIsoDep_PCBisIBlock(pcb) \ + (((pcb) & (ISODEP_PCB_xBLOCK_MASK | ISODEP_PCB_IB_VALID_MASK)) == \ + (ISODEP_PCB_IBLOCK | \ + ISODEP_PCB_IB_VALID_VAL)) /*!< Checks if pcb is a I-Block */ +#define rfalIsoDep_PCBisRBlock(pcb) \ + (((pcb) & (ISODEP_PCB_xBLOCK_MASK | ISODEP_PCB_RB_VALID_MASK)) == \ + (ISODEP_PCB_RBLOCK | \ + ISODEP_PCB_RB_VALID_VAL)) /*!< Checks if pcb is a R-Block */ +#define rfalIsoDep_PCBisSBlock(pcb) \ + (((pcb) & (ISODEP_PCB_xBLOCK_MASK | ISODEP_PCB_SB_VALID_MASK)) == \ + (ISODEP_PCB_SBLOCK | \ + ISODEP_PCB_SB_VALID_VAL)) /*!< Checks if pcb is a S-Block */ + +#define rfalIsoDep_PCBisChaining(pcb) \ + (((pcb) & ISODEP_PCB_CHAINING_BIT) == \ + ISODEP_PCB_CHAINING_BIT) /*!< Checks if pcb is indicating chaining */ + +#define rfalIsoDep_PCBisDeselect(pcb) \ + (((pcb) & ISODEP_PCB_Sxx_MASK) == \ + ISODEP_PCB_DESELECT) /*!< Checks if pcb is indicating DESELECT */ +#define rfalIsoDep_PCBisWTX(pcb) \ + (((pcb) & ISODEP_PCB_Sxx_MASK) == \ + ISODEP_PCB_WTX) /*!< Checks if pcb is indicating WTX */ + +#define rfalIsoDep_PCBisACK(pcb) \ + (((pcb) & ISODEP_PCB_Rx_MASK) == \ + ISODEP_PCB_ACK) /*!< Checks if pcb is indicating ACK */ +#define rfalIsoDep_PCBisNAK(pcb) \ + (((pcb) & ISODEP_PCB_Rx_MASK) == \ + ISODEP_PCB_NAK) /*!< Checks if pcb is indicating ACK */ + +#define rfalIsoDep_PCBhasDID(pcb) \ + (((pcb) & ISODEP_PCB_DID_BIT) == \ + ISODEP_PCB_DID_BIT) /*!< Checks if pcb is indicating DID */ +#define rfalIsoDep_PCBhasNAD(pcb) \ + (((pcb) & ISODEP_PCB_NAD_BIT) == \ + ISODEP_PCB_NAD_BIT) /*!< Checks if pcb is indicating NAD */ + +#define rfalIsoDep_PCBisIChaining(pcb) \ + (rfalIsoDep_PCBisIBlock(pcb) && \ + rfalIsoDep_PCBisChaining( \ + pcb)) /*!< Checks if pcb is I-Block indicating chaining */ + +#define rfalIsoDep_PCBisSDeselect(pcb) \ + (rfalIsoDep_PCBisSBlock(pcb) && \ + rfalIsoDep_PCBisDeselect( \ + pcb)) /*!< Checks if pcb is S-Block indicating DESELECT */ +#define rfalIsoDep_PCBisSWTX(pcb) \ + (rfalIsoDep_PCBisSBlock(pcb) && \ + rfalIsoDep_PCBisWTX(pcb)) /*!< Checks if pcb is S-Block indicating WTX */ + +#define rfalIsoDep_PCBisRACK(pcb) \ + (rfalIsoDep_PCBisRBlock(pcb) && \ + rfalIsoDep_PCBisACK(pcb)) /*!< Checks if pcb is R-Block indicating ACK */ +#define rfalIsoDep_PCBisRNAK(pcb) \ + (rfalIsoDep_PCBisRBlock(pcb) && \ + rfalIsoDep_PCBisNAK(pcb)) /*!< Checks if pcb is R-Block indicating NAK */ + +#define rfalIsoDep_PCBIBlock(bn) \ + ((uint8_t)(0x00U | ISODEP_PCB_IBLOCK | ISODEP_PCB_B2_BIT | \ + ((bn) & ISODEP_PCB_BN_MASK))) /*!< Returns an I-Block with the \ + given block number (bn) */ +#define rfalIsoDep_PCBIBlockChaining(bn) \ + ((uint8_t)(rfalIsoDep_PCBIBlock(bn) | \ + ISODEP_PCB_CHAINING_BIT)) /*!< Returns an I-Block with the given \ + block number (bn) indicating \ + chaining */ + +#define rfalIsoDep_PCBRBlock(bn) \ + ((uint8_t)(0x00U | ISODEP_PCB_RBLOCK | ISODEP_PCB_B6_BIT | \ + ISODEP_PCB_B2_BIT | \ + ((bn) & ISODEP_PCB_BN_MASK))) /*!< Returns an R-Block with the \ + given block number (bn) */ +#define rfalIsoDep_PCBRACK(bn) \ + ((uint8_t)(rfalIsoDep_PCBRBlock(bn) | \ + ISODEP_PCB_ACK)) /*!< Returns an R-Block with the given block \ + number (bn) indicating ACK */ +#define rfalIsoDep_PCBRNAK(bn) \ + ((uint8_t)(rfalIsoDep_PCBRBlock(bn) | \ + ISODEP_PCB_NAK)) /*!< Returns an R-Block with the given block \ + number (bn) indicating NAK */ + +#define rfalIsoDep_GetBN(pcb) \ + ((uint8_t)((pcb) & ISODEP_PCB_BN_MASK)) /*!< Returns the block number (bn) \ + from the given pcb */ +#define rfalIsoDep_GetWTXM(inf) \ + ((uint8_t)((inf) & ISODEP_SWTX_WTXM_MASK)) /*!< Returns the WTX value from \ + the given inf byte */ +#define rfalIsoDep_isWTXMValid(wtxm) \ + (((wtxm) >= ISODEP_WTXM_MIN) && \ + ((wtxm) <= ISODEP_WTXM_MAX)) /*!< Checks if the given wtxm is valid */ + +#define rfalIsoDep_WTXMListenerMax(fwt) \ + (RFAL_MIN((uint8_t)(ISODEP_FWT_LIS_MAX / (fwt)), \ + ISODEP_WTXM_MAX)) /*!< Calculates the Max WTXM value for the given \ + fwt as a Listener */ + +#define rfalIsoDepCalcdSGFT(s) \ + (384U * ((uint32_t)1U << (s))) /*!< Calculates the dSFGT with given SFGI \ + Digital 1.1 13.8.2.1 & A.6*/ +#define rfalIsoDepCalcSGFT(s) \ + (4096U * \ + ((uint32_t)1U \ + << (s))) /*!< Calculates the SFGT with given SFGI Digital 1.1 13.8.2 */ + +#define rfalIsoDep_PCBNextBN(bn) \ + (((uint8_t)(bn) ^ 0x01U) & \ + ISODEP_PCB_BN_MASK) /*!< Returns the value of the next block number based \ + on bn */ +#define rfalIsoDep_PCBPrevBN(bn) \ + rfalIsoDep_PCBNextBN( \ + bn) /*!< Returns the value of the previous block number based on bn */ +#define rfalIsoDep_ToggleBN(bn) \ + ((bn) = (((bn) ^ 0x01U) & ISODEP_PCB_BN_MASK)) /*!< Toggles the block number \ + value of the given bn */ + +#define rfalIsoDep_WTXAdjust(v) \ + ((v) - ((v) >> 3)) /*!< Adjust WTX timer value to a percentage of the total, \ + current 88% */ + +/*! ISO 14443-4 7.5.6.2 & Digital 1.1 - 15.2.6.2 The CE SHALL NOT attempt error + * recovery and remains in Rx mode upon Transmission or a Protocol Error */ +#define rfalIsoDepReEnableRx(rxB, rxBL, rxL) \ + rfalTransceiveBlockingTx(NULL, 0, rxB, rxBL, rxL, RFAL_TXRX_FLAGS_DEFAULT, \ + RFAL_FWT_NONE) + +#define rfalIsoDepTimerStart(timer, time_ms) \ + do { \ + platformTimerDestroy(timer); \ + (timer) = platformTimerCreate((uint16_t)(time_ms)); \ + } while (0) /*!< Configures and starts the WTX timer */ +#define rfalIsoDepTimerisExpired(timer) \ + platformTimerIsExpired(timer) /*!< Checks WTX timer has expired */ +#define rfalIsoDepTimerDestroy(timer) \ + platformTimerDestroy(timer) /*!< Destroys WTX timer */ + +/* + ****************************************************************************** + * LOCAL DATA TYPES + ****************************************************************************** + */ + +/*! Internal structure to be used in handling of S(PARAMETRS) only */ +typedef struct { + uint8_t pcb; /*!< PCB byte */ + rfalIsoDepSParameter sParam; /*!< S(PARAMETERS) */ +} rfalIsoDepControlMsgSParam; + +/*! Enumeration of the possible control message types */ +typedef enum { + ISODEP_R_ACK, /*!< R-ACK Acknowledge */ + ISODEP_R_NAK, /*!< R-NACK Negative acknowledge */ + ISODEP_S_WTX, /*!< S-WTX Waiting Time Extension */ + ISODEP_S_DSL /*!< S-DSL Deselect */ +} rfalIsoDepControlMsg; + +/*! Enumeration of the IsoDep roles */ +typedef enum { + ISODEP_ROLE_PCD, /*!< Perform as Reader/PCD */ + ISODEP_ROLE_PICC /*!< Perform as Card/PICC */ +} rfalIsoDepRole; + +/*! ISO-DEP layer states */ +typedef enum { + ISODEP_ST_IDLE, /*!< Idle State */ + ISODEP_ST_PCD_TX, /*!< PCD Transmission State */ + ISODEP_ST_PCD_RX, /*!< PCD Reception State */ + ISODEP_ST_PCD_WAIT_DSL, /*!< PCD Wait for DSL response */ + + ISODEP_ST_PICC_ACT_ATS, /*!< PICC has replied to RATS (ATS) */ + ISODEP_ST_PICC_ACT_ATTRIB, /*!< PICC has replied to ATTRIB */ + ISODEP_ST_PICC_RX, /*!< PICC Reception State */ + ISODEP_ST_PICC_SWTX, /*!< PICC Waiting Time eXtension */ + ISODEP_ST_PICC_SDSL, /*!< PICC S(DSL) response ongoing */ + ISODEP_ST_PICC_TX, /*!< PICC Transmission State */ + + ISODEP_ST_PCD_ACT_RATS, /*!< PCD activation (RATS) */ + ISODEP_ST_PCD_ACT_PPS, /*!< PCD activation (PPS) */ + +} rfalIsoDepState; + +/*! Holds all ISO-DEP data(counters, buffers, ID, timeouts, frame size) */ +typedef struct { + rfalIsoDepState state; /*!< ISO-DEP module state */ + rfalIsoDepRole role; /*!< Current ISO-DEP role */ + + uint8_t blockNumber; /*!< Current block number */ + uint8_t did; /*!< Current DID */ + uint8_t nad; /*!< Current DID */ + uint8_t cntIRetrys; /*!< I-Block retry counter */ + uint8_t cntRRetrys; /*!< R-Block retry counter */ + uint8_t cntSDslRetrys; /*!< S(DESELECT) retry counter */ + uint8_t cntSWtxRetrys; /*!< Overall S(WTX) retry counter */ + uint8_t cntSWtxNack; /*!< R(NACK) answered with S(WTX) counter */ + uint32_t fwt; /*!< Current FWT (Frame Waiting Time) */ + uint32_t dFwt; /*!< Current delta FWT */ + uint16_t fsx; /*!< Current FSx FSC or FSD (max Frame size) */ + bool isTxChaining; /*!< Flag for chaining on Tx */ + bool isRxChaining; /*!< Flag for chaining on Rx */ + uint8_t *txBuf; /*!< Tx buffer pointer */ + uint8_t *rxBuf; /*!< Rx buffer pointer */ + uint16_t txBufLen; /*!< Tx buffer length */ + uint16_t rxBufLen; /*!< Rx buffer length */ + uint8_t txBufInfPos; /*!< Start of payload in txBuf */ + uint8_t rxBufInfPos; /*!< Start of payload in rxBuf */ + + uint16_t ourFsx; /*!< Our current FSx FSC or FSD (Frame size) */ + uint8_t lastPCB; /*!< Last PCB sent */ + uint8_t lastWTXM; /*!< Last WTXM sent */ + uint8_t atsTA; /*!< TA on ATS */ + uint8_t hdrLen; /*!< Current ISO-DEP length */ + rfalBitRate txBR; /*!< Current Tx Bit Rate */ + rfalBitRate rxBR; /*!< Current Rx Bit Rate */ + uint16_t *rxLen; /*!< Output parameter ptr to Rx length */ + bool *rxChaining; /*!< Output parameter ptr to Rx chaining flag */ + uint32_t WTXTimer; /*!< Timer used for WTX */ + bool lastDID00; /*!< Last PCD block had DID flag (for DID = 0) */ + + bool isTxPending; /*!< Flag pending Block while waiting WTX Ack */ + bool isWait4WTX; /*!< Flag for waiting WTX Ack */ + + uint8_t maxRetriesI; /*!< Number of retries for a I-Block */ + uint8_t maxRetriesR; /*!< Number of retries for a R-Block */ + uint8_t maxRetriesSDSL; /*!< Number of retries for S(DESELECT) errors */ + uint8_t maxRetriesSWTX; /*!< Number of retries for S(WTX) errors */ + uint8_t maxRetriesSnWTX; /*!< Number of retries S(WTX) replied w NACK */ + uint8_t maxRetriesRATS; /*!< Number of retries for RATS */ + + rfalComplianceMode compMode; /*!< Compliance mode */ + + uint8_t ctrlBuf[ISODEP_CONTROLMSG_BUF_LEN]; /*!< Control msg buf */ + uint16_t ctrlRxLen; /*!< Control msg rcvd len */ + + union { /* PRQA S 0750 # MISRA 19.2 - Members of the union will not be used + concurrently, only one frame at a time */ +#if RFAL_FEATURE_NFCA + rfalIsoDepRats ratsReq; + rfalIsoDepPpsReq ppsReq; +#endif /* RFAL_FEATURE_NFCA */ + +#if RFAL_FEATURE_NFCB + rfalIsoDepAttribCmd attribReq; +#endif /* RFAL_FEATURE_NFCB */ + } actv; /*!< Activation buffer */ + + uint8_t *rxLen8; /*!< Receive length (8-bit) */ + rfalIsoDepDevice *actvDev; /*!< Activation Device Info */ + rfalIsoDepListenActvParam actvParam; /*!< Listen Activation context */ + + rfalIsoDepApduTxRxParam APDUParam; /*!< APDU TxRx params */ + uint16_t APDUTxPos; /*!< APDU Tx position */ + uint16_t APDURxPos; /*!< APDU Rx position */ + bool isAPDURxChaining; /*!< APDU Transceive chaining flag */ + +} rfalIsoDep; + +/* + ****************************************************************************** + * LOCAL VARIABLES + ****************************************************************************** + */ + +static rfalIsoDep gIsoDep; /*!< ISO-DEP Module instance */ + +/* + ****************************************************************************** + * LOCAL FUNCTION PROTOTYPES + ****************************************************************************** + */ +static void rfalIsoDepClearCounters(void); +static ReturnCode rfalIsoDepTx(uint8_t pcb, const uint8_t *txBuf, + uint8_t *infBuf, uint16_t infLen, uint32_t fwt); +static ReturnCode rfalIsoDepHandleControlMsg(rfalIsoDepControlMsg controlMsg, + uint8_t param); +static void rfalIsoDepApdu2IBLockParam(rfalIsoDepApduTxRxParam apduParam, + rfalIsoDepTxRxParam *iBlockParam, + uint16_t txPos, uint16_t rxPos); + +#if RFAL_FEATURE_ISO_DEP_POLL +static ReturnCode rfalIsoDepDataExchangePCD(uint16_t *outActRxLen, + bool *outIsChaining); +static void rfalIsoDepCalcBitRate(rfalBitRate maxAllowedBR, + uint8_t piccBRCapability, rfalBitRate *dsi, + rfalBitRate *dri); +static uint32_t rfalIsoDepSFGI2SFGT(uint8_t sfgi); + +#if RFAL_FEATURE_NFCA +static ReturnCode rfalIsoDepStartRATS(rfalIsoDepFSxI FSDI, uint8_t DID, + rfalIsoDepAts *ats, uint8_t *atsLen); +static ReturnCode rfalIsoDepGetRATSStatus(void); +static ReturnCode rfalIsoDepStartPPS(uint8_t DID, rfalBitRate DSI, + rfalBitRate DRI, rfalIsoDepPpsRes *ppsRes); +static ReturnCode rfalIsoDepGetPPSSTatus(void); +#endif /* RFAL_FEATURE_NFCA */ + +#if RFAL_FEATURE_NFCB +static ReturnCode rfalIsoDepStartATTRIB(const uint8_t *nfcid0, uint8_t PARAM1, + rfalBitRate DSI, rfalBitRate DRI, + rfalIsoDepFSxI FSDI, uint8_t PARAM3, + uint8_t DID, const uint8_t *HLInfo, + uint8_t HLInfoLen, uint32_t fwt, + rfalIsoDepAttribRes *attribRes, + uint8_t *attribResLen); +static ReturnCode rfalIsoDepGetATTRIBStatus(void); +#endif /* RFAL_FEATURE_NFCB */ + +#endif /* RFAL_FEATURE_ISO_DEP_POLL */ + +#if RFAL_FEATURE_ISO_DEP_LISTEN +static ReturnCode rfalIsoDepDataExchangePICC(void); +static ReturnCode rfalIsoDepReSendControlMsg(void); +#endif + +/* + ****************************************************************************** + * LOCAL FUNCTIONS + ****************************************************************************** + */ + +/*******************************************************************************/ +static void rfalIsoDepClearCounters(void) { + gIsoDep.cntIRetrys = 0; + gIsoDep.cntRRetrys = 0; + gIsoDep.cntSDslRetrys = 0; + gIsoDep.cntSWtxRetrys = 0; + gIsoDep.cntSWtxNack = 0; +} + +/*******************************************************************************/ +static ReturnCode rfalIsoDepTx(uint8_t pcb, const uint8_t *txBuf, + uint8_t *infBuf, uint16_t infLen, uint32_t fwt) { + uint8_t *txBlock; + uint16_t txBufLen; + uint8_t computedPcb; + rfalTransceiveContext ctx; + + txBlock = infBuf; /* Point to beginning of the INF, and go backwards */ + gIsoDep.lastPCB = pcb; /* Store the last PCB sent */ + + if (infLen > 0U) { + if (((uintptr_t)infBuf - (uintptr_t)txBuf) < + gIsoDep + .hdrLen) /* Check that we can fit the header in the given space */ + { + return RFAL_ERR_NOMEM; + } + } + + /*******************************************************************************/ + /* Compute optional PCB bits */ + computedPcb = pcb; + if (((gIsoDep.did != RFAL_ISODEP_NO_DID) && + (gIsoDep.did != RFAL_ISODEP_DID_00)) || + ((gIsoDep.did == RFAL_ISODEP_DID_00) && (gIsoDep.lastDID00))) { + computedPcb |= ISODEP_PCB_DID_BIT; + } + if (gIsoDep.nad != RFAL_ISODEP_NO_NAD) { + computedPcb |= ISODEP_PCB_NAD_BIT; + } + if ((gIsoDep.isTxChaining) && (rfalIsoDep_PCBisIBlock(computedPcb))) { + computedPcb |= ISODEP_PCB_CHAINING_BIT; + } + + /*******************************************************************************/ + /* Compute Payload on the given txBuf, start by the PCB | DID | NAD | before + * INF */ + + if ((ISODEP_PCB_NAD_BIT & computedPcb) != 0U) { + *(--txBlock) = gIsoDep.nad; /* NAD is optional */ + } + + if ((ISODEP_PCB_DID_BIT & computedPcb) != 0U) { + *(--txBlock) = gIsoDep.did; /* DID is optional */ + } + + *(--txBlock) = computedPcb; /* PCB always present */ + + txBufLen = + (infLen + + (uint16_t)((uintptr_t)infBuf - + (uintptr_t)txBlock)); /* Calculate overall buffer size */ + + if (txBufLen > + (gIsoDep.fsx - ISODEP_CRC_LEN)) /* Check if msg length violates the + maximum frame size FSC */ + { + return RFAL_ERR_NOTSUPP; + } + + rfalCreateByteFlagsTxRxContext( + ctx, txBlock, txBufLen, gIsoDep.rxBuf, gIsoDep.rxBufLen, gIsoDep.rxLen, + RFAL_TXRX_FLAGS_DEFAULT, + ((gIsoDep.role == ISODEP_ROLE_PICC) ? RFAL_FWT_NONE : fwt)); + return rfalStartTransceive(&ctx); +} + +/*******************************************************************************/ +static ReturnCode rfalIsoDepHandleControlMsg(rfalIsoDepControlMsg controlMsg, + uint8_t param) { + uint8_t pcb; + uint8_t infLen; + uint32_t fwtTemp; + + infLen = 0; + fwtTemp = (gIsoDep.fwt + gIsoDep.dFwt); + RFAL_MEMSET(gIsoDep.ctrlBuf, 0x00, ISODEP_CONTROLMSG_BUF_LEN); + + switch (controlMsg) { + /*******************************************************************************/ + case ISODEP_R_ACK: + + if (gIsoDep.cntRRetrys++ > gIsoDep.maxRetriesR) { + return RFAL_ERR_TIMEOUT; /* NFC Forum mandates timeout or transmission + error depending on previous errors */ + } + + pcb = rfalIsoDep_PCBRACK(gIsoDep.blockNumber); + break; + + /*******************************************************************************/ + case ISODEP_R_NAK: + + if ((gIsoDep.cntRRetrys++ > + gIsoDep.maxRetriesR) || /* Max R Block retries reached */ + (gIsoDep.cntSWtxNack >= + gIsoDep.maxRetriesSnWTX)) /* Max number PICC is allowed to respond + with S(WTX) to R(NAK) */ + { + return RFAL_ERR_TIMEOUT; + } + + pcb = rfalIsoDep_PCBRNAK(gIsoDep.blockNumber); + break; + + /*******************************************************************************/ + case ISODEP_S_WTX: + + if ((gIsoDep.cntSWtxRetrys++ > gIsoDep.maxRetriesSWTX) && + (gIsoDep.maxRetriesSWTX != RFAL_ISODEP_MAX_WTX_RETRYS_ULTD)) { + return RFAL_ERR_PROTO; + } + + /* Check if WTXM is valid */ + if (!rfalIsoDep_isWTXMValid(param)) { + return RFAL_ERR_PROTO; + } + + if (gIsoDep.role == ISODEP_ROLE_PCD) { + /* Calculate temp Wait Time eXtension */ + fwtTemp = (gIsoDep.fwt * param); + fwtTemp = RFAL_MIN(RFAL_ISODEP_MAX_FWT, fwtTemp); + fwtTemp += gIsoDep.dFwt; + } + + pcb = ISODEP_PCB_SWTX; + gIsoDep.ctrlBuf[RFAL_ISODEP_PCB_LEN + RFAL_ISODEP_DID_LEN + infLen++] = + param; + break; + + /*******************************************************************************/ + case ISODEP_S_DSL: + + if (gIsoDep.cntSDslRetrys++ > gIsoDep.maxRetriesSDSL) { + return RFAL_ERR_TIMEOUT; /* NFC Forum mandates timeout or transmission + error depending on previous errors */ + } + + if (gIsoDep.role == ISODEP_ROLE_PCD) { + /* Digital 1.0 - 13.2.7.3 Poller must wait fwtDEACTIVATION */ + fwtTemp = ISODEP_FWT_DEACTIVATION; + gIsoDep.state = ISODEP_ST_PCD_WAIT_DSL; + } + pcb = ISODEP_PCB_SDSL; + break; + + /*******************************************************************************/ + default: + return RFAL_ERR_INTERNAL; + } + + return rfalIsoDepTx( + pcb, gIsoDep.ctrlBuf, + &gIsoDep.ctrlBuf[RFAL_ISODEP_PCB_LEN + RFAL_ISODEP_DID_LEN], infLen, + fwtTemp); +} + +#if RFAL_FEATURE_ISO_DEP_LISTEN +/*******************************************************************************/ +static ReturnCode rfalIsoDepReSendControlMsg(void) { + if (rfalIsoDep_PCBisRACK(gIsoDep.lastPCB)) { + return rfalIsoDepHandleControlMsg(ISODEP_R_ACK, RFAL_ISODEP_NO_PARAM); + } + + if (rfalIsoDep_PCBisRNAK(gIsoDep.lastPCB)) { + return rfalIsoDepHandleControlMsg(ISODEP_R_NAK, RFAL_ISODEP_NO_PARAM); + } + + if (rfalIsoDep_PCBisSDeselect(gIsoDep.lastPCB)) { + return rfalIsoDepHandleControlMsg(ISODEP_S_DSL, RFAL_ISODEP_NO_PARAM); + } + + if (rfalIsoDep_PCBisSWTX(gIsoDep.lastPCB)) { + return rfalIsoDepHandleControlMsg(ISODEP_S_WTX, gIsoDep.lastWTXM); + } + return RFAL_ERR_WRONG_STATE; +} +#endif /* RFAL_FEATURE_ISO_DEP_LISTEN */ + +/* + ****************************************************************************** + * GLOBAL FUNCTIONS + ****************************************************************************** + */ + +/*******************************************************************************/ +void rfalIsoDepInitialize(void) { + gIsoDep.state = ISODEP_ST_IDLE; + gIsoDep.role = ISODEP_ROLE_PCD; + gIsoDep.did = RFAL_ISODEP_NO_DID; + gIsoDep.nad = RFAL_ISODEP_NO_NAD; + gIsoDep.blockNumber = 0; + gIsoDep.isTxChaining = false; + gIsoDep.isRxChaining = false; + gIsoDep.lastDID00 = false; + gIsoDep.lastPCB = ISODEP_PCB_INVALID; + gIsoDep.fsx = (uint16_t)RFAL_ISODEP_FSX_16; + gIsoDep.ourFsx = (uint16_t)RFAL_ISODEP_FSX_16; + gIsoDep.hdrLen = RFAL_ISODEP_PCB_LEN; + + gIsoDep.rxLen = NULL; + gIsoDep.rxBuf = NULL; + gIsoDep.rxBufInfPos = 0U; + gIsoDep.txBufInfPos = 0U; + + gIsoDep.isTxPending = false; + gIsoDep.isWait4WTX = false; + + gIsoDep.compMode = RFAL_COMPLIANCE_MODE_NFC; + gIsoDep.maxRetriesR = RFAL_ISODEP_MAX_R_RETRYS; + gIsoDep.maxRetriesI = RFAL_ISODEP_MAX_I_RETRYS; + gIsoDep.maxRetriesSDSL = RFAL_ISODEP_MAX_DSL_RETRYS; + gIsoDep.maxRetriesSWTX = RFAL_ISODEP_MAX_WTX_RETRYS; + gIsoDep.maxRetriesSnWTX = RFAL_ISODEP_MAX_WTX_NACK_RETRYS; + gIsoDep.maxRetriesRATS = RFAL_ISODEP_RATS_RETRIES; + + gIsoDep.APDURxPos = 0; + gIsoDep.APDUTxPos = 0; + gIsoDep.APDUParam.rxLen = NULL; + gIsoDep.APDUParam.rxBuf = NULL; + gIsoDep.APDUParam.txBuf = NULL; + + rfalIsoDepClearCounters(); + + /* Destroy any ongoing WTX timer */ + rfalIsoDepTimerDestroy(gIsoDep.WTXTimer); + gIsoDep.WTXTimer = 0U; +} + +/*******************************************************************************/ +void rfalIsoDepInitializeWithParams(rfalComplianceMode compMode, + uint8_t maxRetriesR, + uint8_t maxRetriesSnWTX, + uint8_t maxRetriesSWTX, + uint8_t maxRetriesSDSL, uint8_t maxRetriesI, + uint8_t maxRetriesRATS) { + rfalIsoDepInitialize(); + + gIsoDep.compMode = compMode; + gIsoDep.maxRetriesR = maxRetriesR; + gIsoDep.maxRetriesSnWTX = maxRetriesSnWTX; + gIsoDep.maxRetriesSWTX = maxRetriesSWTX; + gIsoDep.maxRetriesSDSL = maxRetriesSDSL; + gIsoDep.maxRetriesI = maxRetriesI; + gIsoDep.maxRetriesRATS = maxRetriesRATS; +} + +#if RFAL_FEATURE_ISO_DEP_POLL +/*******************************************************************************/ +static ReturnCode rfalIsoDepDataExchangePCD(uint16_t *outActRxLen, + bool *outIsChaining) { + ReturnCode ret; + uint8_t rxPCB; + + /* Check out parameters */ + if ((outActRxLen == NULL) || (outIsChaining == NULL)) { + return RFAL_ERR_PARAM; + } + + *outIsChaining = false; + + /* Calculate header required and check if the buffers InfPositions are + * suitable */ + gIsoDep.hdrLen = RFAL_ISODEP_PCB_LEN; + if ((gIsoDep.did != RFAL_ISODEP_NO_DID) && + (gIsoDep.did != RFAL_ISODEP_DID_00)) { + gIsoDep.hdrLen += RFAL_ISODEP_DID_LEN; + } + if (gIsoDep.nad != RFAL_ISODEP_NO_NAD) { + gIsoDep.hdrLen += RFAL_ISODEP_NAD_LEN; + } + + /* Check if there is enough space before the infPos to append ISO-DEP headers + * on rx and tx */ + if ((gIsoDep.rxBufInfPos < gIsoDep.hdrLen) || + (gIsoDep.txBufInfPos < gIsoDep.hdrLen)) { + return RFAL_ERR_PARAM; + } + + /*******************************************************************************/ + switch (gIsoDep.state) { + /*******************************************************************************/ + case ISODEP_ST_IDLE: + return RFAL_ERR_NONE; + + /*******************************************************************************/ + case ISODEP_ST_PCD_TX: + ret = rfalIsoDepTx(rfalIsoDep_PCBIBlock(gIsoDep.blockNumber), + gIsoDep.txBuf, &gIsoDep.txBuf[gIsoDep.txBufInfPos], + gIsoDep.txBufLen, (gIsoDep.fwt + gIsoDep.dFwt)); + switch (ret) { + case RFAL_ERR_NONE: + gIsoDep.state = ISODEP_ST_PCD_RX; + break; + + default: + return ret; + } + /* fall through */ + + /*******************************************************************************/ + case ISODEP_ST_PCD_WAIT_DSL: /* PRQA S 2003 # MISRA 16.3 - Intentional fall + through */ + case ISODEP_ST_PCD_RX: + + ret = rfalGetTransceiveStatus(); + switch (ret) { + /* Data rcvd with error or timeout -> Send R-NAK */ + case RFAL_ERR_TIMEOUT: + case RFAL_ERR_CRC: + case RFAL_ERR_PAR: + case RFAL_ERR_FRAMING: /* added to handle test cases scenario + TC_POL_NFCB_T4AT_BI_82_x_y & + TC_POL_NFCB_T4BT_BI_82_x_y */ + case RFAL_ERR_INCOMPLETE_BYTE: /* added to handle test cases scenario + TC_POL_NFCB_T4AT_BI_82_x_y & + TC_POL_NFCB_T4BT_BI_82_x_y */ + + if (gIsoDep.isRxChaining) { /* Rule 5 - In PICC chaining when a + invalid/timeout occurs -> R-ACK */ + RFAL_EXIT_ON_ERR(ret, rfalIsoDepHandleControlMsg( + ISODEP_R_ACK, RFAL_ISODEP_NO_PARAM)); + } else if (gIsoDep.state == + ISODEP_ST_PCD_WAIT_DSL) { /* Rule 8 - If s-Deselect + response fails MAY retransmit + */ + RFAL_EXIT_ON_ERR(ret, rfalIsoDepHandleControlMsg( + ISODEP_S_DSL, RFAL_ISODEP_NO_PARAM)); + } else { /* Rule 4 - When a invalid block or timeout occurs -> R-NACK + */ + RFAL_EXIT_ON_ERR(ret, rfalIsoDepHandleControlMsg( + ISODEP_R_NAK, RFAL_ISODEP_NO_PARAM)); + } + return RFAL_ERR_BUSY; + + case RFAL_ERR_NONE: + break; + + case RFAL_ERR_BUSY: + return RFAL_ERR_BUSY; /* Debug purposes */ + + default: + return ret; + } + + /*******************************************************************************/ + /* No error, process incoming msg */ + /*******************************************************************************/ + + (*outActRxLen) = rfalConvBitsToBytes(*outActRxLen); + + /* Check rcvd msg length, cannot be less then the expected header */ + if (((*outActRxLen) < gIsoDep.hdrLen) || + ((*outActRxLen) >= gIsoDep.ourFsx)) { + return RFAL_ERR_PROTO; + } + + /* Grab rcvd PCB */ + rxPCB = gIsoDep.rxBuf[ISODEP_PCB_POS]; + + /* EMVCo doesn't allow usage of for CID or NAD EMVCo 2.6 TAble 10.2 */ + if ((gIsoDep.compMode == RFAL_COMPLIANCE_MODE_EMV) && + (rfalIsoDep_PCBhasDID(rxPCB) || rfalIsoDep_PCBhasNAD(rxPCB))) { + return RFAL_ERR_PROTO; + } + + /* If we are expecting DID, check if PCB signals its presence and if + * device ID match*/ + if ((gIsoDep.did != RFAL_ISODEP_NO_DID) && + (gIsoDep.did != RFAL_ISODEP_DID_00) && + ((!rfalIsoDep_PCBhasDID(rxPCB)) || + (gIsoDep.did != gIsoDep.rxBuf[ISODEP_DID_POS]))) { + return RFAL_ERR_PROTO; + } + + /*******************************************************************************/ + /* Process S-Block */ + /*******************************************************************************/ + if (rfalIsoDep_PCBisSBlock(rxPCB)) { + /* Check if is a Wait Time eXtension */ + if (rfalIsoDep_PCBisSWTX(rxPCB)) { + /* Check if PICC has requested S(WTX) as response to R(NAK) + * EMVCo 3.0 10.3.5.5 / Digital 2.0 16.2.6.5 */ + if (rfalIsoDep_PCBisRNAK(gIsoDep.lastPCB)) { + gIsoDep.cntSWtxNack++; /* Count S(WTX) upon R(NAK) */ + gIsoDep.cntRRetrys = + 0; /* Reset R-Block counter has PICC has responded */ + } else { + gIsoDep.cntSWtxNack = 0; /* Reset R(NACK)->S(WTX) counter */ + } + + /* Rule 3 - respond to S-block: get 1st INF byte S(STW): Power + WTXM + */ + RFAL_EXIT_ON_ERR( + ret, rfalIsoDepHandleControlMsg( + ISODEP_S_WTX, + rfalIsoDep_GetWTXM(gIsoDep.rxBuf[gIsoDep.hdrLen]))); + return RFAL_ERR_BUSY; + } + + /* Check if is a deselect response */ + if (rfalIsoDep_PCBisSDeselect(rxPCB)) { + if (gIsoDep.state == ISODEP_ST_PCD_WAIT_DSL) { + rfalIsoDepInitialize(); /* Session finished reInit vars */ + return RFAL_ERR_NONE; + } + + /* Deselect response not expected */ + /* fall through to PROTO error */ + } + /* Unexpected S-Block */ + return RFAL_ERR_PROTO; + } + + /*******************************************************************************/ + /* Process R-Block */ + /*******************************************************************************/ + else if (rfalIsoDep_PCBisRBlock(rxPCB)) { + if (rfalIsoDep_PCBisRACK(rxPCB)) /* Check if is a R-ACK */ + { + if (rfalIsoDep_GetBN(rxPCB) == + gIsoDep.blockNumber) /* Expected block number */ + { + /* Rule B - ACK with expected bn -> Increment block number */ + gIsoDep.blockNumber = rfalIsoDep_PCBNextBN(gIsoDep.blockNumber); + + /* R-ACK only allowed when PCD chaining */ + if (!gIsoDep.isTxChaining) { + return RFAL_ERR_PROTO; + } + + /* Rule 7 - Chaining transaction done, continue chaining */ + rfalIsoDepClearCounters(); + return RFAL_ERR_NONE; /* This block has been transmitted */ + } else { + /* Rule 6 - R-ACK with wrong block number retransmit */ + /* Digital 2.0 16.2.5.4 - Retransmit maximum two times */ + /* EMVCo 3.0 10.3.4.3 - PCD may re-transmit the last I-Block or + * report error */ + if (gIsoDep.cntIRetrys++ < gIsoDep.maxRetriesI) { + gIsoDep.cntRRetrys = 0; /* Clear R counter only */ + gIsoDep.state = ISODEP_ST_PCD_TX; + return RFAL_ERR_BUSY; + } + return RFAL_ERR_TIMEOUT; /* NFC Forum mandates timeout or + transmission error depending on previous + errors */ + } + } else /* Unexcpected R-Block */ + { + return RFAL_ERR_PROTO; + } + } + + /*******************************************************************************/ + /* Process I-Block */ + /*******************************************************************************/ + else if (rfalIsoDep_PCBisIBlock(rxPCB)) { + /*******************************************************************************/ + /* is PICC performing chaining */ + if (rfalIsoDep_PCBisChaining(rxPCB)) { + gIsoDep.isRxChaining = true; + *outIsChaining = true; + + if (rfalIsoDep_GetBN(rxPCB) == gIsoDep.blockNumber) { + /* Rule B - ACK with correct block number -> Increase Block number + */ + rfalIsoDep_ToggleBN(gIsoDep.blockNumber); + + rfalIsoDepClearCounters(); /* Clear counters in case R counter is + already at max */ + + /* Rule 2 - Send ACK */ + RFAL_EXIT_ON_ERR(ret, rfalIsoDepHandleControlMsg( + ISODEP_R_ACK, RFAL_ISODEP_NO_PARAM)); + + /* Received I-Block with chaining, send current data to DH */ + + /* remove ISO DEP header, check is necessary to move the INF data on + * the buffer */ + *outActRxLen -= gIsoDep.hdrLen; + if ((gIsoDep.hdrLen != gIsoDep.rxBufInfPos) && + (*outActRxLen > 0U)) { + RFAL_MEMMOVE(&gIsoDep.rxBuf[gIsoDep.rxBufInfPos], + &gIsoDep.rxBuf[gIsoDep.hdrLen], *outActRxLen); + } + + rfalIsoDepClearCounters(); + return RFAL_ERR_AGAIN; /* Send Again signalling to run again, but + some chaining data has arrived */ + } else { + /* Rule 5 - PICC chaining invalid I-Block -> R-ACK */ + RFAL_EXIT_ON_ERR(ret, rfalIsoDepHandleControlMsg( + ISODEP_R_ACK, RFAL_ISODEP_NO_PARAM)); + } + return RFAL_ERR_BUSY; + } + + gIsoDep.isRxChaining = false; /* clear PICC chaining flag */ + + if (rfalIsoDep_GetBN(rxPCB) == gIsoDep.blockNumber) { + /* Rule B - I-Block with correct block number -> Increase Block number + */ + rfalIsoDep_ToggleBN(gIsoDep.blockNumber); + + /* I-Block transaction done successfully */ + + /* remove ISO DEP header, check is necessary to move the INF data on + * the buffer */ + *outActRxLen -= gIsoDep.hdrLen; + if ((gIsoDep.hdrLen != gIsoDep.rxBufInfPos) && (*outActRxLen > 0U)) { + RFAL_MEMMOVE(&gIsoDep.rxBuf[gIsoDep.rxBufInfPos], + &gIsoDep.rxBuf[gIsoDep.hdrLen], *outActRxLen); + } + + gIsoDep.state = ISODEP_ST_IDLE; + rfalIsoDepClearCounters(); + return RFAL_ERR_NONE; + } else { + if ((gIsoDep.compMode != RFAL_COMPLIANCE_MODE_ISO)) { + /* Invalid Block (not chaining) -> Raise error Digital 1.1 15.2.6.4 + * EMVCo 2.6 10.3.5.4 */ + return RFAL_ERR_PROTO; + } + + /* Rule 4 - Invalid Block -> R-NAK */ + RFAL_EXIT_ON_ERR(ret, rfalIsoDepHandleControlMsg( + ISODEP_R_NAK, RFAL_ISODEP_NO_PARAM)); + return RFAL_ERR_BUSY; + } + } else /* not S/R/I - Block */ + { + return RFAL_ERR_PROTO; + } + /* fall through */ + + /*******************************************************************************/ + default: /* PRQA S 2003 # MISRA 16.3 - Intentional fall through */ + /* MISRA 16.4: no empty default (comment will suffice) */ + break; + } + + return RFAL_ERR_INTERNAL; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepDeselect(void) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalIsoDepStartDeselect()); + rfalRunBlocking(ret, rfalIsoDepGetDeselectStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepStartDeselect(void) { + /*******************************************************************************/ + /* Using local static vars and static config to cope with a Deselect after * + * RATS\ATTRIB without any I-Block exchanged */ + gIsoDep.rxLen = &gIsoDep.ctrlRxLen; + gIsoDep.rxBuf = gIsoDep.ctrlBuf; + gIsoDep.rxBufLen = + ISODEP_CONTROLMSG_BUF_LEN - (RFAL_ISODEP_PCB_LEN + RFAL_ISODEP_DID_LEN); + gIsoDep.rxBufInfPos = (RFAL_ISODEP_PCB_LEN + RFAL_ISODEP_DID_LEN); + gIsoDep.txBufInfPos = (RFAL_ISODEP_PCB_LEN + RFAL_ISODEP_DID_LEN); + + /* Send DSL request */ + return rfalIsoDepHandleControlMsg(ISODEP_S_DSL, RFAL_ISODEP_NO_PARAM); +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepGetDeselectStatus(void) { + ReturnCode ret; + bool dummyB; + + RFAL_EXIT_ON_BUSY(ret, rfalIsoDepDataExchangePCD(gIsoDep.rxLen, &dummyB)); + + rfalIsoDepInitialize(); + return ret; +} + +#endif /* RFAL_FEATURE_ISO_DEP_POLL */ + +/*******************************************************************************/ +uint32_t rfalIsoDepFWI2FWT(uint8_t fwi) { + uint32_t result; + uint8_t tmpFWI; + + tmpFWI = fwi; + + /* RFU values -> take the default value + * Digital 1.0 11.6.2.17 FWI[1,14] + * Digital 1.1 7.6.2.22 FWI[0,14] + * EMVCo 2.6 Table A.5 FWI[0,14] */ + if (tmpFWI > ISODEP_FWI_MAX) { + tmpFWI = RFAL_ISODEP_FWI_DEFAULT; + } + + /* FWT = (256 x 16/fC) x 2^FWI => 2^(FWI+12) Digital 1.1 13.8.1 & 7.9.1 */ + + result = ((uint32_t)1U << (tmpFWI + 12U)); + result = RFAL_MIN(RFAL_ISODEP_MAX_FWT, + result); /* Maximum Frame Waiting Time must be fulfilled */ + + return result; +} + +/*******************************************************************************/ +uint16_t rfalIsoDepFSxI2FSx(uint8_t FSxI) { + uint16_t fsx; + uint8_t fsi; + + /* Enforce maximum FSxI/FSx allowed - NFC Forum and EMVCo differ */ + fsi = ((gIsoDep.compMode == RFAL_COMPLIANCE_MODE_EMV) + ? RFAL_MIN(FSxI, RFAL_ISODEP_FSDI_MAX_EMV) + : RFAL_MIN(FSxI, RFAL_ISODEP_FSDI_MAX_NFC)); + + switch (fsi) { + case (uint8_t)RFAL_ISODEP_FSXI_16: + fsx = (uint16_t)RFAL_ISODEP_FSX_16; + break; + case (uint8_t)RFAL_ISODEP_FSXI_24: + fsx = (uint16_t)RFAL_ISODEP_FSX_24; + break; + case (uint8_t)RFAL_ISODEP_FSXI_32: + fsx = (uint16_t)RFAL_ISODEP_FSX_32; + break; + case (uint8_t)RFAL_ISODEP_FSXI_40: + fsx = (uint16_t)RFAL_ISODEP_FSX_40; + break; + case (uint8_t)RFAL_ISODEP_FSXI_48: + fsx = (uint16_t)RFAL_ISODEP_FSX_48; + break; + case (uint8_t)RFAL_ISODEP_FSXI_64: + fsx = (uint16_t)RFAL_ISODEP_FSX_64; + break; + case (uint8_t)RFAL_ISODEP_FSXI_96: + fsx = (uint16_t)RFAL_ISODEP_FSX_96; + break; + case (uint8_t)RFAL_ISODEP_FSXI_128: + fsx = (uint16_t)RFAL_ISODEP_FSX_128; + break; + case (uint8_t)RFAL_ISODEP_FSXI_256: + fsx = (uint16_t)RFAL_ISODEP_FSX_256; + break; + case (uint8_t)RFAL_ISODEP_FSXI_512: + fsx = (uint16_t)RFAL_ISODEP_FSX_512; + break; + case (uint8_t)RFAL_ISODEP_FSXI_1024: + fsx = (uint16_t)RFAL_ISODEP_FSX_1024; + break; + case (uint8_t)RFAL_ISODEP_FSXI_2048: + fsx = (uint16_t)RFAL_ISODEP_FSX_2048; + break; + case (uint8_t)RFAL_ISODEP_FSXI_4096: + fsx = (uint16_t)RFAL_ISODEP_FSX_4096; + break; + default: + fsx = (uint16_t)RFAL_ISODEP_FSX_256; + break; + } + return fsx; +} + +#if RFAL_FEATURE_ISO_DEP_LISTEN + +/*******************************************************************************/ +bool rfalIsoDepIsRats(const uint8_t *buf, uint8_t bufLen) { + if (buf != NULL) { + if ((RFAL_ISODEP_CMD_RATS == (uint8_t)*buf) && + (sizeof(rfalIsoDepRats) == bufLen)) { + return true; + } + } + return false; +} + +/*******************************************************************************/ +bool rfalIsoDepIsAttrib(const uint8_t *buf, uint8_t bufLen) { + if (buf != NULL) { + if ((RFAL_ISODEP_CMD_ATTRIB == (uint8_t)*buf) && + (RFAL_ISODEP_ATTRIB_REQ_MIN_LEN <= bufLen) && + ((RFAL_ISODEP_ATTRIB_REQ_MIN_LEN + RFAL_ISODEP_ATTRIB_HLINFO_LEN) >= + bufLen)) { + return true; + } + } + return false; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepListenStartActivation( + rfalIsoDepAtsParam *atsParam, + const rfalIsoDepAttribResParam *attribResParam, const uint8_t *buf, + uint16_t bufLen, rfalIsoDepListenActvParam actParam) { + uint8_t *txBuf; + uint8_t bufIt; + const uint8_t *buffer = buf; + + /*******************************************************************************/ + bufIt = 0; + txBuf = (uint8_t *) + actParam.rxBuf; /* Use the rxBuf as TxBuf as well, the struct + enforces a size enough RFAL_MAX( + NFCA_ATS_MAX_LEN, NFCB_ATTRIB_RES_MAX_LEN ) */ + gIsoDep.txBR = RFAL_BR_106; + gIsoDep.rxBR = RFAL_BR_106; + + /* Check for a valid buffer pointer */ + if (buffer == NULL) { + return RFAL_ERR_PARAM; + } + + /*******************************************************************************/ + if (*buffer == RFAL_ISODEP_CMD_RATS) { + /* Check ATS parameters */ + if (atsParam == NULL) { + return RFAL_ERR_PARAM; + } + + /* If requested copy RATS to device info */ + if (actParam.isoDepDev != NULL) { + RFAL_MEMCPY((uint8_t *)&actParam.isoDepDev->activation.A.Poller.RATS, + buffer, sizeof(rfalIsoDepRats)); /* Copy RATS' CMD + PARAM */ + } + + /*******************************************************************************/ + /* Process RATS */ + buffer++; + gIsoDep.fsx = + rfalIsoDepFSxI2FSx((((*buffer) & RFAL_ISODEP_RATS_PARAM_FSDI_MASK) >> + RFAL_ISODEP_RATS_PARAM_FSDI_SHIFT)); + gIsoDep.did = (*buffer & RFAL_ISODEP_DID_MASK); + + /*******************************************************************************/ + /* Digital 1.1 13.6.1.8 - DID has to between 0 and 14 */ + if (gIsoDep.did > RFAL_ISODEP_DID_MAX) { + return RFAL_ERR_PROTO; + } + + /* Check if we are configured to support DID */ + if (!atsParam->didSupport) { + gIsoDep.did = + RFAL_ISODEP_NO_DID; /* Even if requested by PCD to use a certain DID, + the ATS setting prevails */ + } + + /*******************************************************************************/ + /* Check RFAL supported bit rates */ + if (((!RFAL_SUPPORT_BR_CE_A_212) && + (((atsParam->ta & RFAL_ISODEP_ATS_TA_DPL_212) != 0U) || + ((atsParam->ta & RFAL_ISODEP_ATS_TA_DLP_212) != 0U))) || + ((!RFAL_SUPPORT_BR_CE_A_424) && + (((atsParam->ta & RFAL_ISODEP_ATS_TA_DPL_424) != 0U) || + ((atsParam->ta & RFAL_ISODEP_ATS_TA_DLP_424) != 0U))) || + ((!RFAL_SUPPORT_BR_CE_A_848) && + (((atsParam->ta & RFAL_ISODEP_ATS_TA_DPL_848) != 0U) || + ((atsParam->ta & RFAL_ISODEP_ATS_TA_DLP_848) != 0U)))) { + return RFAL_ERR_NOTSUPP; + } + + /* Enforce proper FWI configuration */ + if (atsParam->fwi > ISODEP_FWI_LIS_MAX) { + atsParam->fwi = ISODEP_FWI_LIS_MAX; + } + + gIsoDep.atsTA = atsParam->ta; + gIsoDep.fwt = rfalIsoDepFWI2FWT(atsParam->fwi); + gIsoDep.ourFsx = rfalIsoDepFSxI2FSx(atsParam->fsci); + + /* Ensure proper/maximum Historical Bytes length */ + atsParam->hbLen = RFAL_MIN(RFAL_ISODEP_ATS_HB_MAX_LEN, atsParam->hbLen); + + /*******************************************************************************/ + /* Compute ATS */ + + txBuf[bufIt++] = (RFAL_ISODEP_ATS_HIST_OFFSET + atsParam->hbLen); /* TL */ + txBuf[bufIt++] = ((RFAL_ISODEP_ATS_T0_TA_PRESENCE_MASK | + RFAL_ISODEP_ATS_T0_TB_PRESENCE_MASK | + RFAL_ISODEP_ATS_T0_TC_PRESENCE_MASK) | + atsParam->fsci); /* T0 */ + txBuf[bufIt++] = atsParam->ta; /* TA */ + txBuf[bufIt++] = + ((atsParam->fwi << RFAL_ISODEP_RATS_PARAM_FSDI_SHIFT) | + (atsParam->sfgi & RFAL_ISODEP_RATS_PARAM_FSDI_MASK)); /* TB */ + txBuf[bufIt++] = (uint8_t)((atsParam->didSupport) ? RFAL_ISODEP_ATS_TC_DID + : 0U); /* TC */ + + if (atsParam->hbLen > 0U) /* MISRA 21.18 */ + { + RFAL_MEMCPY(&txBuf[bufIt], atsParam->hb, atsParam->hbLen); /* T1-Tk */ + bufIt += atsParam->hbLen; + } + + gIsoDep.state = ISODEP_ST_PICC_ACT_ATS; + + } + /*******************************************************************************/ + else if (*buffer == RFAL_ISODEP_CMD_ATTRIB) { + /* Check ATTRIB parameters */ + if (attribResParam == NULL) { + return RFAL_ERR_PARAM; + } + + /* REMARK: ATTRIB handling */ + RFAL_NO_WARNING(attribResParam); + RFAL_NO_WARNING(bufLen); + return RFAL_ERR_NOT_IMPLEMENTED; + } else { + return RFAL_ERR_PARAM; + } + + gIsoDep.actvParam = actParam; + + /*******************************************************************************/ + /* If requested copy to ISO-DEP device info */ + if (actParam.isoDepDev != NULL) { + actParam.isoDepDev->info.DID = gIsoDep.did; + actParam.isoDepDev->info.FSx = gIsoDep.fsx; + actParam.isoDepDev->info.FWT = gIsoDep.fwt; + actParam.isoDepDev->info.dFWT = 0; + actParam.isoDepDev->info.DSI = gIsoDep.txBR; + actParam.isoDepDev->info.DRI = gIsoDep.rxBR; + } + + return rfalTransceiveBlockingTx(txBuf, bufIt, (uint8_t *)actParam.rxBuf, + sizeof(rfalIsoDepBufFormat), actParam.rxLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_FWT_NONE); +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepListenGetActivationStatus(void) { + ReturnCode err; + uint8_t *txBuf; + uint8_t bufIt; + + rfalBitRate dsi; + rfalBitRate dri; + + /* Check if Activation is running */ + if (gIsoDep.state < ISODEP_ST_PICC_ACT_ATS) { + return RFAL_ERR_WRONG_STATE; + } + + /* Check if Activation has finished already */ + if (gIsoDep.state >= ISODEP_ST_PICC_RX) { + return RFAL_ERR_NONE; + } + + /*******************************************************************************/ + /* Check for incoming msg */ + err = rfalGetTransceiveStatus(); + switch (err) { + /*******************************************************************************/ + case RFAL_ERR_NONE: + break; + + /*******************************************************************************/ + case RFAL_ERR_LINK_LOSS: + case RFAL_ERR_BUSY: + case RFAL_ERR_SLEEP_REQ: /* S(DSL) handled by lower layer should cause an + error reported */ + return err; + + /*******************************************************************************/ + case RFAL_ERR_CRC: + case RFAL_ERR_PAR: + case RFAL_ERR_FRAMING: + + /* ISO14443 4 5.6.2.2 2 If ATS has been replied upon a invalid block, + * PICC disables the PPS responses */ + if (gIsoDep.state == ISODEP_ST_PICC_ACT_ATS) { + gIsoDep.state = ISODEP_ST_PICC_RX; + break; + } + /* fall through */ + + /*******************************************************************************/ + default: /* PRQA S 2003 # MISRA 16.3 - Intentional fall through */ + /* ReEnable the receiver and wait for another frame */ + rfalIsoDepReEnableRx((uint8_t *)gIsoDep.actvParam.rxBuf, + sizeof(rfalIsoDepBufFormat), + gIsoDep.actvParam.rxLen); + + return RFAL_ERR_BUSY; + } + + txBuf = + (uint8_t *)gIsoDep.actvParam + .rxBuf; /* Use the rxBuf as TxBuf as well, the struct enforces a size + enough RFAL_MAX(NFCA_PPS_RES_LEN, ISODEP_DSL_MAX_LEN) */ + dri = RFAL_BR_KEEP; /* The RFAL_BR_KEEP is used to check if PPS with BR change + was requested */ + dsi = RFAL_BR_KEEP; /* MISRA 9.1 */ + bufIt = 0; + + /*******************************************************************************/ + gIsoDep.role = ISODEP_ROLE_PICC; + + /*******************************************************************************/ + if (gIsoDep.state == ISODEP_ST_PICC_ACT_ATS) { + /* Check for a PPS ISO 14443-4 5.3 */ + if ((((uint8_t *)gIsoDep.actvParam.rxBuf)[RFAL_ISODEP_PPS_STARTBYTE_POS] & + RFAL_ISODEP_PPS_MASK) == RFAL_ISODEP_PPS_SB) { + /* ISO 14443-4 5.3.1 Check if the we are the addressed DID/CID */ + /* ISO 14443-4 5.3.2 Check for a valid PPS0 */ + if (((((uint8_t *) + gIsoDep.actvParam.rxBuf)[RFAL_ISODEP_PPS_STARTBYTE_POS] & + RFAL_ISODEP_DID_MASK) != gIsoDep.did) || + ((((uint8_t *)gIsoDep.actvParam.rxBuf)[RFAL_ISODEP_PPS_PPS0_POS] & + RFAL_ISODEP_PPS0_VALID_MASK) != + RFAL_ISODEP_PPS0_PPS1_NOT_PRESENT)) { + /* Invalid DID on PPS request or Invalid PPS0, reEnable the receiver and + * wait another frame */ + rfalIsoDepReEnableRx((uint8_t *)gIsoDep.actvParam.rxBuf, + sizeof(rfalIsoDepBufFormat), + gIsoDep.actvParam.rxLen); + + return RFAL_ERR_BUSY; + } + + /*******************************************************************************/ + /* Check PPS1 presence */ + if (((uint8_t *)gIsoDep.actvParam.rxBuf)[RFAL_ISODEP_PPS_PPS0_POS] == + RFAL_ISODEP_PPS0_PPS1_PRESENT) { + uint8_t newdri = + ((uint8_t *)gIsoDep.actvParam.rxBuf)[RFAL_ISODEP_PPS_PPS1_POS] & + RFAL_ISODEP_PPS1_DxI_MASK; /* MISRA 10.8 */ + uint8_t newdsi = + (((uint8_t *)gIsoDep.actvParam.rxBuf)[RFAL_ISODEP_PPS_PPS1_POS] >> + RFAL_ISODEP_PPS1_DSI_SHIFT) & + RFAL_ISODEP_PPS1_DxI_MASK; /* MISRA 10.8 */ + /* PRQA S 4342 2 # MISRA 10.5 - Layout of enum rfalBitRate and above + * masks guarantee no invalid enum values to be created */ + dri = (rfalBitRate)(newdri); + dsi = (rfalBitRate)(newdsi); + + if (((!(RFAL_SUPPORT_BR_CE_A_106)) && + ((dsi == RFAL_BR_106) || (dri == RFAL_BR_106))) || + ((!(RFAL_SUPPORT_BR_CE_A_212)) && + ((dsi == RFAL_BR_212) || (dri == RFAL_BR_212))) || + ((!(RFAL_SUPPORT_BR_CE_A_424)) && + ((dsi == RFAL_BR_424) || (dri == RFAL_BR_424))) || + ((!(RFAL_SUPPORT_BR_CE_A_848)) && + ((dsi == RFAL_BR_848) || (dri == RFAL_BR_848)))) { + return RFAL_ERR_PROTO; + } + } + + /*******************************************************************************/ + /* Compute and send PPS RES / Ack */ + txBuf[bufIt++] = + ((uint8_t *)gIsoDep.actvParam.rxBuf)[RFAL_ISODEP_PPS_STARTBYTE_POS]; + + rfalTransceiveBlockingTx(txBuf, bufIt, (uint8_t *)gIsoDep.actvParam.rxBuf, + sizeof(rfalIsoDepBufFormat), + gIsoDep.actvParam.rxLen, RFAL_TXRX_FLAGS_DEFAULT, + RFAL_FWT_NONE); + + /*******************************************************************************/ + /* Exchange the bit rates if requested */ + if (dri != RFAL_BR_KEEP) { + rfalSetBitRate(dsi, dri); + + gIsoDep.txBR = dsi; /* DSI codes the divisor from PICC to PCD */ + gIsoDep.rxBR = dri; /* DRI codes the divisor from PCD to PICC */ + + if (gIsoDep.actvParam.isoDepDev != NULL) { + gIsoDep.actvParam.isoDepDev->info.DSI = dsi; + gIsoDep.actvParam.isoDepDev->info.DRI = dri; + } + } + } + /* Check for a S-Deselect is done on Data Exchange Activity */ + } + + /*******************************************************************************/ + gIsoDep.hdrLen = RFAL_ISODEP_PCB_LEN; + gIsoDep.hdrLen += RFAL_ISODEP_DID_LEN; /* Always assume DID to be aligned with + Digital 1.1 15.1.2 and ISO14443 + 4 5.6.3 #454 */ + gIsoDep.hdrLen += + (uint8_t)((gIsoDep.nad != RFAL_ISODEP_NO_NAD) ? RFAL_ISODEP_NAD_LEN : 0U); + + /*******************************************************************************/ + /* Rule C - The PICC block number shall be initialized to 1 at activation */ + gIsoDep.blockNumber = 1; + + /* Activation done, keep the rcvd data in, reMap the activation buffer to the + * global to be retrieved by the DEP method */ + gIsoDep.rxBuf = (uint8_t *)gIsoDep.actvParam.rxBuf; + gIsoDep.rxBufLen = sizeof(rfalIsoDepBufFormat); + gIsoDep.rxBufInfPos = (uint8_t)((uint32_t)gIsoDep.actvParam.rxBuf->inf - + (uint32_t)gIsoDep.actvParam.rxBuf->prologue); + gIsoDep.rxLen = gIsoDep.actvParam.rxLen; + gIsoDep.rxChaining = gIsoDep.actvParam.isRxChaining; + + gIsoDep.state = ISODEP_ST_PICC_RX; + return RFAL_ERR_NONE; +} + +#endif /* RFAL_FEATURE_ISO_DEP_LISTEN */ + +/*******************************************************************************/ +uint16_t rfalIsoDepGetMaxInfLen(void) { + /* Check whether all parameters are valid, otherwise return minimum default + * value */ + if ((gIsoDep.fsx < (uint16_t)RFAL_ISODEP_FSX_16) || + (gIsoDep.fsx > (uint16_t)RFAL_ISODEP_FSX_4096) || + (gIsoDep.hdrLen > ISODEP_HDR_MAX_LEN)) { + const uint16_t aux = (uint16_t)RFAL_ISODEP_FSX_16; /* MISRA 10.1 */ + return (aux - RFAL_ISODEP_PCB_LEN - ISODEP_CRC_LEN); + } + + return (gIsoDep.fsx - gIsoDep.hdrLen - ISODEP_CRC_LEN); +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepStartTransceive(rfalIsoDepTxRxParam param) { + gIsoDep.txBuf = param.txBuf->prologue; + gIsoDep.txBufInfPos = + (uint8_t)((uintptr_t)param.txBuf->inf - (uintptr_t)param.txBuf->prologue); + gIsoDep.txBufLen = param.txBufLen; + gIsoDep.isTxChaining = param.isTxChaining; + + gIsoDep.rxBuf = param.rxBuf->prologue; + gIsoDep.rxBufInfPos = + (uint8_t)((uintptr_t)param.rxBuf->inf - (uintptr_t)param.rxBuf->prologue); + gIsoDep.rxBufLen = sizeof(rfalIsoDepBufFormat); + + gIsoDep.rxLen = param.rxLen; + gIsoDep.rxChaining = param.isRxChaining; + + gIsoDep.fwt = param.FWT; + gIsoDep.dFwt = param.dFWT; + gIsoDep.fsx = param.FSx; + gIsoDep.did = param.DID; + + /* Only change the FSx from activation if no to Keep */ + gIsoDep.ourFsx = + ((param.ourFSx != RFAL_ISODEP_FSX_KEEP) ? param.ourFSx : gIsoDep.ourFsx); + + /* Clear inner control params for next dataExchange */ + gIsoDep.isRxChaining = false; + rfalIsoDepClearCounters(); + + if (gIsoDep.role == ISODEP_ROLE_PICC) { + if (gIsoDep.txBufLen > 0U) { + /* Ensure that an RTOX Ack is not being expected at moment */ + if (!gIsoDep.isWait4WTX) { + gIsoDep.state = ISODEP_ST_PICC_TX; + return RFAL_ERR_NONE; + } else { + /* If RTOX Ack is expected, signal a pending Tx to be transmitted right + * after */ + gIsoDep.isTxPending = true; + } + } + + /* Digital 1.1 15.2.5.1 The first block SHALL be sent by the Reader/Writer + */ + gIsoDep.state = ISODEP_ST_PICC_RX; + return RFAL_ERR_NONE; + } + + gIsoDep.state = ISODEP_ST_PCD_TX; + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepGetTransceiveStatus(void) { + if (gIsoDep.role == ISODEP_ROLE_PICC) { +#if RFAL_FEATURE_ISO_DEP_LISTEN + return rfalIsoDepDataExchangePICC(); +#else + return RFAL_ERR_NOTSUPP; +#endif /* RFAL_FEATURE_ISO_DEP_LISTEN */ + } else { +#if RFAL_FEATURE_ISO_DEP_POLL + return rfalIsoDepDataExchangePCD(gIsoDep.rxLen, gIsoDep.rxChaining); +#else + return RFAL_ERR_NOTSUPP; +#endif /* RFAL_FEATURE_ISO_DEP_POLL */ + } +} + +#if RFAL_FEATURE_ISO_DEP_LISTEN + +/*******************************************************************************/ +static ReturnCode rfalIsoDepDataExchangePICC(void) { + uint8_t rxPCB; + ReturnCode ret; + + switch (gIsoDep.state) { + /*******************************************************************************/ + case ISODEP_ST_IDLE: + return RFAL_ERR_NONE; + + /*******************************************************************************/ + case ISODEP_ST_PICC_TX: + + ret = rfalIsoDepTx(rfalIsoDep_PCBIBlock(gIsoDep.blockNumber), + gIsoDep.txBuf, &gIsoDep.txBuf[gIsoDep.txBufInfPos], + gIsoDep.txBufLen, RFAL_FWT_NONE); + + /* Clear pending Tx flag */ + gIsoDep.isTxPending = false; + + switch (ret) { + case RFAL_ERR_NONE: + gIsoDep.state = ISODEP_ST_PICC_RX; + return RFAL_ERR_BUSY; + + default: + /* MISRA 16.4: no empty default statement (a comment being enough) */ + break; + } + return ret; + + /*******************************************************************************/ + case ISODEP_ST_PICC_RX: + + ret = rfalGetTransceiveStatus(); + switch (ret) { + /*******************************************************************************/ + /* Data rcvd with error or timeout -> mute */ + case RFAL_ERR_TIMEOUT: + case RFAL_ERR_CRC: + case RFAL_ERR_PAR: + case RFAL_ERR_FRAMING: + + /* Digital 1.1 - 15.2.6.2 The CE SHALL NOT attempt error recovery and + * remains in Rx mode upon Transmission or a Protocol Error */ + rfalIsoDepReEnableRx((uint8_t *)gIsoDep.rxBuf, + sizeof(rfalIsoDepBufFormat), gIsoDep.rxLen); + + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + case RFAL_ERR_LINK_LOSS: + return ret; /* Debug purposes */ + + case RFAL_ERR_BUSY: + return ret; /* Debug purposes */ + + /*******************************************************************************/ + case RFAL_ERR_NONE: + *gIsoDep.rxLen = rfalConvBitsToBytes(*gIsoDep.rxLen); + break; + + /*******************************************************************************/ + default: + return ret; + } + break; + + /*******************************************************************************/ + case ISODEP_ST_PICC_SWTX: + + if (!rfalIsoDepTimerisExpired( + gIsoDep.WTXTimer)) /* Do nothing until WTX timer has expired */ + { + return RFAL_ERR_BUSY; + } + + /* Set waiting for WTX Ack Flag */ + gIsoDep.isWait4WTX = true; + + /* Digital 1.1 15.2.2.9 - Calculate the WTXM such that FWTtemp <= FWTmax + */ + gIsoDep.lastWTXM = (uint8_t)rfalIsoDep_WTXMListenerMax(gIsoDep.fwt); + RFAL_EXIT_ON_ERR( + ret, rfalIsoDepHandleControlMsg(ISODEP_S_WTX, gIsoDep.lastWTXM)); + + gIsoDep.state = ISODEP_ST_PICC_RX; /* Go back to Rx to process WTX ack */ + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + case ISODEP_ST_PICC_SDSL: + + if (!rfalIsTransceiveInTx()) /* Wait until DSL response has been sent */ + { + rfalIsoDepInitialize(); /* Session finished reInit vars, go back to + ISODEP_ST_IDLE */ + return RFAL_ERR_SLEEP_REQ; /* Notify Deselect request */ + } + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + default: + return RFAL_ERR_INTERNAL; + } + + /* ISO 14443-4 7.5.6.2 CE SHALL NOT attempt error recovery -> clear counters + */ + rfalIsoDepClearCounters(); + + /*******************************************************************************/ + /* No error, process incoming msg */ + /*******************************************************************************/ + + /* Grab rcvd PCB */ + rxPCB = gIsoDep.rxBuf[ISODEP_PCB_POS]; + + /*******************************************************************************/ + /* When DID=0 PCD may or may not use DID, therefore check whether current PCD + * request has DID present to be reflected on max INF length #454 */ + + /* ReCalculate Header Length */ + gIsoDep.hdrLen = RFAL_ISODEP_PCB_LEN; + gIsoDep.hdrLen += + (uint8_t)((rfalIsoDep_PCBhasDID(rxPCB)) ? RFAL_ISODEP_DID_LEN : 0U); + gIsoDep.hdrLen += + (uint8_t)((rfalIsoDep_PCBhasNAD(rxPCB)) ? RFAL_ISODEP_NAD_LEN : 0U); + + /* Store whether last PCD block had DID. for PICC special handling of DID = 0 + */ + if (gIsoDep.did == RFAL_ISODEP_DID_00) { + gIsoDep.lastDID00 = ((rfalIsoDep_PCBhasDID(rxPCB)) ? true : false); + } + + /*******************************************************************************/ + /* Check rcvd msg length, cannot be less then the expected header OR * if + * the rcvd msg exceeds our announced frame size (FSD) */ + if (((*gIsoDep.rxLen) < gIsoDep.hdrLen) || + ((*gIsoDep.rxLen) > (gIsoDep.ourFsx - ISODEP_CRC_LEN))) { + rfalIsoDepReEnableRx((uint8_t *)gIsoDep.rxBuf, sizeof(rfalIsoDepBufFormat), + gIsoDep.rxLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO Ignore this protocol request */ + } + /* If we are not supporting DID, but we receive one OR + * If we are expecting DID, check if PCB signals its presence and if device ID + * match OR If our DID=0 and DID is sent but with an incorrect value */ + if (((gIsoDep.did == RFAL_ISODEP_NO_DID) && (rfalIsoDep_PCBhasDID(rxPCB))) || + ((gIsoDep.did != RFAL_ISODEP_NO_DID) && + (gIsoDep.did != RFAL_ISODEP_DID_00) && + ((!rfalIsoDep_PCBhasDID(rxPCB)) || + (gIsoDep.did != gIsoDep.rxBuf[ISODEP_DID_POS]))) || + ((gIsoDep.did == RFAL_ISODEP_DID_00) && rfalIsoDep_PCBhasDID(rxPCB) && + (RFAL_ISODEP_DID_00 != gIsoDep.rxBuf[ISODEP_DID_POS]))) { + rfalIsoDepReEnableRx((uint8_t *)gIsoDep.rxBuf, sizeof(rfalIsoDepBufFormat), + gIsoDep.rxLen); + return RFAL_ERR_BUSY; /* Ignore a wrong DID request */ + } + + /* If we aren't expecting NAD and it's received */ + if ((gIsoDep.nad == RFAL_ISODEP_NO_NAD) && rfalIsoDep_PCBhasNAD(rxPCB)) { + rfalIsoDepReEnableRx((uint8_t *)gIsoDep.rxBuf, sizeof(rfalIsoDepBufFormat), + gIsoDep.rxLen); + return RFAL_ERR_BUSY; /* Ignore a unexpected NAD request */ + } + + /*******************************************************************************/ + /* Process S-Block */ + /*******************************************************************************/ + if (rfalIsoDep_PCBisSBlock(rxPCB)) { + /* Check if is a Wait Time eXtension */ + if (rfalIsoDep_PCBisSWTX(rxPCB)) { + /* Check if we're expecting a S-WTX */ + if (rfalIsoDep_PCBisWTX(gIsoDep.lastPCB)) { + /* Digital 1.1 15.2.2.11 S(WTX) Ack with different WTXM -> Protocol + * Error * Power level indication also should be set to 0 */ + if ((gIsoDep.rxBuf[gIsoDep.hdrLen] == gIsoDep.lastWTXM) && + ((*gIsoDep.rxLen - gIsoDep.hdrLen) == ISODEP_SWTX_INF_LEN)) { + /* Clear waiting for RTOX Ack Flag */ + gIsoDep.isWait4WTX = false; + + /* Check if a Tx is already pending */ + if (gIsoDep.isTxPending) { + /* Has a pending Tx, go immediately to TX */ + gIsoDep.state = ISODEP_ST_PICC_TX; + return RFAL_ERR_BUSY; + } + + /* Set WTX timer */ + rfalIsoDepTimerStart( + gIsoDep.WTXTimer, + rfalIsoDep_WTXAdjust( + (gIsoDep.lastWTXM * rfalConv1fcToMs(gIsoDep.fwt)))); + + gIsoDep.state = ISODEP_ST_PICC_SWTX; + return RFAL_ERR_BUSY; + } + } + /* Unexpected/Incorrect S-WTX, fall into reRenable */ + } + + /* Check if is a Deselect request */ + if (rfalIsoDep_PCBisSDeselect(rxPCB) && + ((*gIsoDep.rxLen - gIsoDep.hdrLen) == ISODEP_SDSL_INF_LEN)) { + RFAL_EXIT_ON_ERR( + ret, rfalIsoDepHandleControlMsg(ISODEP_S_DSL, RFAL_ISODEP_NO_PARAM)); + + /* S-DSL transmission ongoing, wait until complete */ + gIsoDep.state = ISODEP_ST_PICC_SDSL; + return RFAL_ERR_BUSY; + } + + /* Unexpected S-Block, fall into reRenable */ + } + + /*******************************************************************************/ + /* Process R-Block */ + /*******************************************************************************/ + else if (rfalIsoDep_PCBisRBlock(rxPCB) && + ((*gIsoDep.rxLen - gIsoDep.hdrLen) == ISODEP_RBLOCK_INF_LEN)) { + if (rfalIsoDep_PCBisRACK(rxPCB)) /* Check if is a R-ACK */ + { + if (rfalIsoDep_GetBN(rxPCB) == + gIsoDep.blockNumber) /* Check block number */ + { + /* Rule 11 - R(ACK) with current bn -> re-transmit */ + if (!rfalIsoDep_PCBisIBlock(gIsoDep.lastPCB)) { + rfalIsoDepReSendControlMsg(); + } else { + gIsoDep.state = ISODEP_ST_PICC_TX; + } + + return RFAL_ERR_BUSY; + } else { + if (!gIsoDep.isTxChaining) { + /* Rule 13 violation R(ACK) without performing chaining */ + rfalIsoDepReEnableRx((uint8_t *)gIsoDep.rxBuf, + sizeof(rfalIsoDepBufFormat), gIsoDep.rxLen); + return RFAL_ERR_BUSY; + } + + /* Rule E - R(ACK) with not current bn -> toggle bn */ + rfalIsoDep_ToggleBN(gIsoDep.blockNumber); + + /* This block has been transmitted and acknowledged, perform WTX until + * next data is provided */ + + /* Rule 9 - PICC is allowed to send an S(WTX) instead of an I-block or + * an R(ACK) */ + rfalIsoDepTimerStart( + gIsoDep.WTXTimer, + rfalIsoDep_WTXAdjust(rfalConv1fcToMs(gIsoDep.fwt))); + gIsoDep.state = ISODEP_ST_PICC_SWTX; + + /* Rule 13 - R(ACK) with not current bn -> continue chaining */ + return RFAL_ERR_NONE; /* This block has been transmitted */ + } + } else if (rfalIsoDep_PCBisRNAK(rxPCB)) /* Check if is a R-NACK */ + { + if (rfalIsoDep_GetBN(rxPCB) == + gIsoDep.blockNumber) /* Check block number */ + { + /* Rule 11 - R(NAK) with current bn -> re-transmit last x-Block */ + if (!rfalIsoDep_PCBisIBlock(gIsoDep.lastPCB)) { + rfalIsoDepReSendControlMsg(); + } else { + gIsoDep.state = ISODEP_ST_PICC_TX; + } + + return RFAL_ERR_BUSY; + } else { + /* Rule 12 - R(NAK) with not current bn -> R(ACK) */ + RFAL_EXIT_ON_ERR(ret, rfalIsoDepHandleControlMsg(ISODEP_R_ACK, + RFAL_ISODEP_NO_PARAM)); + + return RFAL_ERR_BUSY; + } + } else { + /* MISRA 15.7 - Empty else */ + } + + /* Unexpected R-Block, fall into reRenable */ + } + + /*******************************************************************************/ + /* Process I-Block */ + /*******************************************************************************/ + else if (rfalIsoDep_PCBisIBlock(rxPCB)) { + /* Rule D - When an I-block is received, the PICC shall toggle its block + * number before sending a block */ + rfalIsoDep_ToggleBN(gIsoDep.blockNumber); + + /*******************************************************************************/ + /* Check if the block number is the one expected */ + /* Check if PCD sent an I-Block instead ACK/NACK when we are chaining */ + if ((rfalIsoDep_GetBN(rxPCB) != gIsoDep.blockNumber) || + (gIsoDep.isTxChaining)) { + /* Remain in the same Block Number */ + rfalIsoDep_ToggleBN(gIsoDep.blockNumber); + + /* ISO 14443-4 7.5.6.2 & Digital 1.1 - 15.2.6.2 The CE SHALL NOT attempt + * error recovery and remains in Rx mode upon Transmission or a Protocol + * Error */ + rfalIsoDepReEnableRx((uint8_t *)gIsoDep.rxBuf, + sizeof(rfalIsoDepBufFormat), gIsoDep.rxLen); + return RFAL_ERR_BUSY; + } + + /*******************************************************************************/ + /* is PCD performing chaining ? */ + if (rfalIsoDep_PCBisChaining(rxPCB)) { + gIsoDep.isRxChaining = true; + *gIsoDep.rxChaining = true; /* Output Parameter*/ + + RFAL_EXIT_ON_ERR( + ret, rfalIsoDepHandleControlMsg(ISODEP_R_ACK, RFAL_ISODEP_NO_PARAM)); + + /* Received I-Block with chaining, send current data to DH */ + + /* remove ISO DEP header, check is necessary to move the INF data on the + * buffer */ + *gIsoDep.rxLen -= gIsoDep.hdrLen; + if ((gIsoDep.hdrLen != gIsoDep.rxBufInfPos) && (*gIsoDep.rxLen > 0U)) { + RFAL_MEMMOVE(&gIsoDep.rxBuf[gIsoDep.rxBufInfPos], + &gIsoDep.rxBuf[gIsoDep.hdrLen], *gIsoDep.rxLen); + } + return RFAL_ERR_AGAIN; /* Send Again signalling to run again, but some + chaining data has arrived*/ + } + + /*******************************************************************************/ + /* PCD is not performing chaining */ + gIsoDep.isRxChaining = false; /* clear PCD chaining flag */ + *gIsoDep.rxChaining = false; /* Output Parameter */ + + /* remove ISO DEP header, check is necessary to move the INF data on the + * buffer */ + *gIsoDep.rxLen -= gIsoDep.hdrLen; + if ((gIsoDep.hdrLen != gIsoDep.rxBufInfPos) && (*gIsoDep.rxLen > 0U)) { + RFAL_MEMMOVE(&gIsoDep.rxBuf[gIsoDep.rxBufInfPos], + &gIsoDep.rxBuf[gIsoDep.hdrLen], *gIsoDep.rxLen); + } + + /*******************************************************************************/ + /* Reception done, send data back and start WTX timer */ + rfalIsoDepTimerStart(gIsoDep.WTXTimer, + rfalIsoDep_WTXAdjust(rfalConv1fcToMs(gIsoDep.fwt))); + + gIsoDep.state = ISODEP_ST_PICC_SWTX; + return RFAL_ERR_NONE; + } else { + /* MISRA 15.7 - Empty else */ + } + + /* Unexpected/Unknown Block */ + /* ISO 14443-4 7.5.6.2 & Digital 1.1 - 15.2.6.2 The CE SHALL NOT attempt + * error recovery and remains in Rx mode upon Transmission or a Protocol Error + */ + rfalIsoDepReEnableRx((uint8_t *)gIsoDep.rxBuf, sizeof(rfalIsoDepBufFormat), + gIsoDep.rxLen); + + return RFAL_ERR_BUSY; +} +#endif /* RFAL_FEATURE_ISO_DEP_LISTEN */ + +#if RFAL_FEATURE_ISO_DEP_POLL + +#if RFAL_FEATURE_NFCA + +/*******************************************************************************/ +static ReturnCode rfalIsoDepStartRATS(rfalIsoDepFSxI FSDI, uint8_t DID, + rfalIsoDepAts *ats, uint8_t *atsLen) { + rfalTransceiveContext ctx; + + if (ats == NULL) { + return RFAL_ERR_PARAM; + } + + gIsoDep.rxBuf = (uint8_t *)ats; + gIsoDep.rxLen8 = atsLen; + gIsoDep.did = DID; + + /*******************************************************************************/ + /* Compose RATS */ + gIsoDep.actv.ratsReq.CMD = RFAL_ISODEP_CMD_RATS; + gIsoDep.actv.ratsReq.PARAM = + (((uint8_t)FSDI << RFAL_ISODEP_RATS_PARAM_FSDI_SHIFT) & + RFAL_ISODEP_RATS_PARAM_FSDI_MASK) | + (DID & RFAL_ISODEP_RATS_PARAM_DID_MASK); + + rfalCreateByteFlagsTxRxContext( + ctx, (uint8_t *)&gIsoDep.actv.ratsReq, sizeof(rfalIsoDepRats), + (uint8_t *)ats, sizeof(rfalIsoDepAts), &gIsoDep.rxBufLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_ISODEP_T4T_FWT_ACTIVATION); + return rfalStartTransceive(&ctx); +} + +/*******************************************************************************/ +static ReturnCode rfalIsoDepGetRATSStatus(void) { + ReturnCode ret; + + ret = rfalGetTransceiveStatus(); + if (ret == RFAL_ERR_NONE) { + gIsoDep.rxBufLen = rfalConvBitsToBytes(gIsoDep.rxBufLen); + + /* Check for valid ATS length Digital 1.1 13.6.2.1 & 13.6.2.3 */ + if ((gIsoDep.rxBufLen < RFAL_ISODEP_ATS_MIN_LEN) || + (gIsoDep.rxBufLen > RFAL_ISODEP_ATS_MAX_LEN) || + (gIsoDep.rxBuf[RFAL_ISODEP_ATS_TL_POS] != gIsoDep.rxBufLen)) { + return RFAL_ERR_PROTO; + } + + /* Assign our FSx, in case the a Deselect is send without Transceive */ + gIsoDep.ourFsx = + rfalIsoDepFSxI2FSx((uint8_t)(gIsoDep.actv.ratsReq.PARAM >> + RFAL_ISODEP_RATS_PARAM_FSDI_SHIFT)); + + /* Check and assign if ATS length was requested (length also available on + * TL) */ + if (gIsoDep.rxLen8 != NULL) { + *gIsoDep.rxLen8 = (uint8_t)gIsoDep.rxBufLen; + } + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepRATS(rfalIsoDepFSxI FSDI, uint8_t DID, rfalIsoDepAts *ats, + uint8_t *atsLen) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalIsoDepStartRATS(FSDI, DID, ats, atsLen)); + rfalRunBlocking(ret, rfalIsoDepGetRATSStatus()); + + return ret; +} + +/*******************************************************************************/ +static ReturnCode rfalIsoDepStartPPS(uint8_t DID, rfalBitRate DSI, + rfalBitRate DRI, + rfalIsoDepPpsRes *ppsRes) { + rfalTransceiveContext ctx; + + if ((ppsRes == NULL) || (DSI > RFAL_BR_848) || (DRI > RFAL_BR_848) || + ((DID > RFAL_ISODEP_DID_MAX) && (DID != RFAL_ISODEP_NO_DID))) { + return RFAL_ERR_PARAM; + } + + gIsoDep.rxBuf = (uint8_t *)ppsRes; + + /*******************************************************************************/ + /* Compose PPS Request */ + gIsoDep.actv.ppsReq.PPSS = + (RFAL_ISODEP_PPS_SB | (DID & RFAL_ISODEP_PPS_SB_DID_MASK)); + gIsoDep.actv.ppsReq.PPS0 = RFAL_ISODEP_PPS_PPS0_PPS1_PRESENT; + gIsoDep.actv.ppsReq.PPS1 = + (RFAL_ISODEP_PPS_PPS1 | + ((((uint8_t)DSI << RFAL_ISODEP_PPS_PPS1_DSI_SHIFT) | (uint8_t)DRI) & + RFAL_ISODEP_PPS_PPS1_DXI_MASK)); + + rfalCreateByteFlagsTxRxContext( + ctx, (uint8_t *)&gIsoDep.actv.ppsReq, sizeof(rfalIsoDepPpsReq), + (uint8_t *)ppsRes, sizeof(rfalIsoDepPpsRes), &gIsoDep.rxBufLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_ISODEP_T4T_FWT_ACTIVATION); + return rfalStartTransceive(&ctx); +} + +/*******************************************************************************/ +static ReturnCode rfalIsoDepGetPPSSTatus(void) { + ReturnCode ret; + + ret = rfalGetTransceiveStatus(); + if (ret == RFAL_ERR_NONE) { + gIsoDep.rxBufLen = rfalConvBitsToBytes(gIsoDep.rxBufLen); + + /* Check for valid PPS Response */ + if ((gIsoDep.rxBufLen != RFAL_ISODEP_PPS_RES_LEN) || + (*gIsoDep.rxBuf != gIsoDep.actv.ppsReq.PPSS)) { + return RFAL_ERR_PROTO; + } + } + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepPPS(uint8_t DID, rfalBitRate DSI, rfalBitRate DRI, + rfalIsoDepPpsRes *ppsRes) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalIsoDepStartPPS(DID, DSI, DRI, ppsRes)); + rfalRunBlocking(ret, rfalIsoDepGetPPSSTatus()); + + return ret; +} + +#endif /* RFAL_FEATURE_NFCA */ + +#if RFAL_FEATURE_NFCB + +static ReturnCode rfalIsoDepStartATTRIB(const uint8_t *nfcid0, uint8_t PARAM1, + rfalBitRate DSI, rfalBitRate DRI, + rfalIsoDepFSxI FSDI, uint8_t PARAM3, + uint8_t DID, const uint8_t *HLInfo, + uint8_t HLInfoLen, uint32_t fwt, + rfalIsoDepAttribRes *attribRes, + uint8_t *attribResLen) { + rfalTransceiveContext ctx; + + if ((attribRes == NULL) || (attribResLen == NULL) || (DSI > RFAL_BR_848) || + (DRI > RFAL_BR_848) || + ((DID > RFAL_ISODEP_DID_MAX) && (DID != RFAL_ISODEP_NO_DID))) { + return RFAL_ERR_NONE; + } + + gIsoDep.rxBuf = (uint8_t *)attribRes; + gIsoDep.rxLen8 = attribResLen; + gIsoDep.did = DID; + + /*******************************************************************************/ + /* Compose ATTRIB command */ + gIsoDep.actv.attribReq.cmd = RFAL_ISODEP_CMD_ATTRIB; + gIsoDep.actv.attribReq.Param.PARAM1 = PARAM1; + gIsoDep.actv.attribReq.Param.PARAM2 = + (((((uint8_t)DSI << RFAL_ISODEP_ATTRIB_PARAM2_DSI_SHIFT) | + ((uint8_t)DRI << RFAL_ISODEP_ATTRIB_PARAM2_DRI_SHIFT)) & + RFAL_ISODEP_ATTRIB_PARAM2_DXI_MASK) | + ((uint8_t)FSDI & RFAL_ISODEP_ATTRIB_PARAM2_FSDI_MASK)); + gIsoDep.actv.attribReq.Param.PARAM3 = PARAM3; + gIsoDep.actv.attribReq.Param.PARAM4 = + (DID & RFAL_ISODEP_ATTRIB_PARAM4_DID_MASK); + RFAL_MEMCPY(gIsoDep.actv.attribReq.nfcid0, nfcid0, RFAL_NFCB_NFCID0_LEN); + + /* Append the Higher layer Info if provided */ + if ((HLInfo != NULL) && (HLInfoLen > 0U)) { + RFAL_MEMCPY(gIsoDep.actv.attribReq.HLInfo, HLInfo, + RFAL_MIN(HLInfoLen, RFAL_ISODEP_ATTRIB_HLINFO_LEN)); + } + + rfalCreateByteFlagsTxRxContext( + ctx, (uint8_t *)&gIsoDep.actv.attribReq, + (uint16_t)(RFAL_ISODEP_ATTRIB_HDR_LEN + + RFAL_MIN((uint16_t)HLInfoLen, RFAL_ISODEP_ATTRIB_HLINFO_LEN)), + (uint8_t *)gIsoDep.rxBuf, sizeof(rfalIsoDepAttribRes), &gIsoDep.rxBufLen, + RFAL_TXRX_FLAGS_DEFAULT, fwt); + return rfalStartTransceive(&ctx); +} + +/*******************************************************************************/ +static ReturnCode rfalIsoDepGetATTRIBStatus(void) { + ReturnCode ret; + + ret = rfalGetTransceiveStatus(); + if (ret == RFAL_ERR_NONE) { + gIsoDep.rxBufLen = rfalConvBitsToBytes(gIsoDep.rxBufLen); + + /* Check for valid ATTRIB Response Digital 2.3 15.6.2.1 */ + if ((gIsoDep.rxBufLen < RFAL_ISODEP_ATTRIB_RES_HDR_LEN)) { + return RFAL_ERR_PROTO; + } + + if (gIsoDep.rxLen8 != NULL) { + *gIsoDep.rxLen8 = (uint8_t)gIsoDep.rxBufLen; + } + + gIsoDep.ourFsx = + rfalIsoDepFSxI2FSx((uint8_t)(gIsoDep.actv.attribReq.Param.PARAM2 & + RFAL_ISODEP_ATTRIB_PARAM2_FSDI_MASK)); + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepATTRIB(const uint8_t *nfcid0, uint8_t PARAM1, + rfalBitRate DSI, rfalBitRate DRI, + rfalIsoDepFSxI FSDI, uint8_t PARAM3, uint8_t DID, + const uint8_t *HLInfo, uint8_t HLInfoLen, + uint32_t fwt, rfalIsoDepAttribRes *attribRes, + uint8_t *attribResLen) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalIsoDepStartATTRIB(nfcid0, PARAM1, DSI, DRI, FSDI, + PARAM3, DID, HLInfo, HLInfoLen, + fwt, attribRes, attribResLen)); + rfalRunBlocking(ret, rfalIsoDepGetATTRIBStatus()); + + return ret; +} + +#endif /* RFAL_FEATURE_NFCB */ + +#if RFAL_FEATURE_NFCA + +/*******************************************************************************/ +ReturnCode rfalIsoDepPollAHandleActivation(rfalIsoDepFSxI FSDI, uint8_t DID, + rfalBitRate maxBR, + rfalIsoDepDevice *rfalIsoDepDev) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR( + ret, rfalIsoDepPollAStartActivation(FSDI, DID, maxBR, rfalIsoDepDev)); + rfalRunBlocking(ret, rfalIsoDepPollAGetActivationStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepPollAStartActivation(rfalIsoDepFSxI FSDI, uint8_t DID, + rfalBitRate maxBR, + rfalIsoDepDevice *rfalIsoDepDev) { + ReturnCode ret; + + if (rfalIsoDepDev == NULL) { + return RFAL_ERR_PARAM; + } + + /* Enable EMD suppresssion|handling according to Digital 2.1 4.1.1.1 ; + * EMVCo 3.0 4.9.2 ; ISO 14443-3 8.3 */ + rfalSetErrorHandling(RFAL_ERRORHANDLING_EMD); + + /* Start RATS Transceive */ + RFAL_EXIT_ON_ERR( + ret, + rfalIsoDepStartRATS(FSDI, DID, &rfalIsoDepDev->activation.A.Listener.ATS, + &rfalIsoDepDev->activation.A.Listener.ATSLen)); + + rfalIsoDepDev->info.DSI = maxBR; + gIsoDep.actvDev = rfalIsoDepDev; + gIsoDep.cntRRetrys = gIsoDep.maxRetriesRATS; + gIsoDep.state = ISODEP_ST_PCD_ACT_RATS; + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepPollAGetActivationStatus(void) { + ReturnCode ret; + uint8_t msgIt; + rfalBitRate maxBR; + + switch (gIsoDep.state) { + /*******************************************************************************/ + case ISODEP_ST_PCD_ACT_RATS: + + ret = rfalIsoDepGetRATSStatus(); + if (ret != RFAL_ERR_BUSY) { + if (ret != RFAL_ERR_NONE) { + /* EMVCo 2.6 9.6.1.1 & 9.6.1.2 If a timeout error is detected + * retransmit, on transmission error abort */ + if ((gIsoDep.compMode == RFAL_COMPLIANCE_MODE_EMV) && + (ret != RFAL_ERR_TIMEOUT)) { + break; + } + + if (gIsoDep.cntRRetrys != 0U) { + /* Ensure FDT before retransmission (reuse RFAL GT timer) */ + rfalSetGT(rfalGetFDTPoll()); + rfalFieldOnAndStartGT(); + + /* Send RATS retransmission */ /* PRQA S 4342 1 # MISRA 10.5 - + Layout of enum rfalIsoDepFSxI is + guaranteed whithin 4bit range */ + RFAL_EXIT_ON_ERR( + ret, + rfalIsoDepStartRATS( + (rfalIsoDepFSxI)(uint8_t)(gIsoDep.actv.ratsReq.PARAM >> + RFAL_ISODEP_RATS_PARAM_FSDI_SHIFT), + gIsoDep.did, &gIsoDep.actvDev->activation.A.Listener.ATS, + &gIsoDep.actvDev->activation.A.Listener.ATSLen)); + gIsoDep.cntRRetrys--; + ret = RFAL_ERR_BUSY; + } + /* Switch between NFC Forum and ISO14443-4 behaviour #595 + * ISO14443-4 5.6.1 If RATS fails, a Deactivation sequence should + * be performed as defined on clause 8 (ISO10373-6 Scenario H.2.5) + * Activity 1.1 9.6 Device Deactivation Activity is to be only + * performed when there's an active device */ + else if (gIsoDep.compMode == RFAL_COMPLIANCE_MODE_ISO) { + RFAL_EXIT_ON_ERR(ret, rfalIsoDepStartDeselect()); + + /* State ISODEP_ST_PCD_WAIT_DSL already set by + * rfalIsoDepHandleControlMsg DSL */ + return RFAL_ERR_BUSY; + } else { + /* MISRA 15.7 - Empty else */ + } + } else /* ATS received */ + { + maxBR = + gIsoDep.actvDev->info.DSI; /* Retrieve requested max bitrate */ + + /*******************************************************************************/ + /* Process ATS Response */ + gIsoDep.actvDev->info.FWI = + RFAL_ISODEP_FWI_DEFAULT; /* Default value EMVCo 2.6 5.7.2.6 */ + gIsoDep.actvDev->info.SFGI = 0U; + gIsoDep.actvDev->info.MBL = 0U; + gIsoDep.actvDev->info.DSI = RFAL_BR_106; + gIsoDep.actvDev->info.DRI = RFAL_BR_106; + gIsoDep.actvDev->info.FSxI = + (uint8_t)RFAL_ISODEP_FSXI_32; /* FSC default value is 32 bytes + ISO14443-A 5.2.3 */ + + /*******************************************************************************/ + /* Check for ATS optional fields */ + if (gIsoDep.actvDev->activation.A.Listener.ATS.TL > + RFAL_ISODEP_ATS_MIN_LEN) { + msgIt = RFAL_ISODEP_ATS_MIN_LEN; + + /* Format byte T0 is optional, if present assign FSDI */ + gIsoDep.actvDev->info.FSxI = + (gIsoDep.actvDev->activation.A.Listener.ATS.T0 & + RFAL_ISODEP_ATS_T0_FSCI_MASK); + + /* T0 has already been processed, always the same position */ + msgIt++; + + /* Check if TA is present */ + if ((gIsoDep.actvDev->activation.A.Listener.ATS.T0 & + RFAL_ISODEP_ATS_T0_TA_PRESENCE_MASK) != 0U) { + rfalIsoDepCalcBitRate(maxBR, + ((uint8_t *)&gIsoDep.actvDev->activation.A + .Listener.ATS)[msgIt++], + &gIsoDep.actvDev->info.DSI, + &gIsoDep.actvDev->info.DRI); + } + + /* Check if TB is present */ + if ((gIsoDep.actvDev->activation.A.Listener.ATS.T0 & + RFAL_ISODEP_ATS_T0_TB_PRESENCE_MASK) != 0U) { + gIsoDep.actvDev->info.SFGI = + ((uint8_t *)&gIsoDep.actvDev->activation.A.Listener + .ATS)[msgIt++]; + gIsoDep.actvDev->info.FWI = + (uint8_t)((gIsoDep.actvDev->info.SFGI >> + RFAL_ISODEP_ATS_TB_FWI_SHIFT) & + RFAL_ISODEP_ATS_FWI_MASK); + gIsoDep.actvDev->info.SFGI &= RFAL_ISODEP_ATS_TB_SFGI_MASK; + } + + /* Check if TC is present */ + if ((gIsoDep.actvDev->activation.A.Listener.ATS.T0 & + RFAL_ISODEP_ATS_T0_TC_PRESENCE_MASK) != 0U) { + /* Check for Protocol features support */ + /* Advanced protocol features defined on Digital 1.0 Table 69, + * removed after */ + gIsoDep.actvDev->info.supAdFt = + (((((uint8_t *)&gIsoDep.actvDev->activation.A.Listener + .ATS)[msgIt] & + RFAL_ISODEP_ATS_TC_ADV_FEAT) != 0U) + ? true + : false); + gIsoDep.actvDev->info.supDID = + (((((uint8_t *)&gIsoDep.actvDev->activation.A.Listener + .ATS)[msgIt] & + RFAL_ISODEP_ATS_TC_DID) != 0U) + ? true + : false); + gIsoDep.actvDev->info.supNAD = + (((((uint8_t *)&gIsoDep.actvDev->activation.A.Listener + .ATS)[msgIt++] & + RFAL_ISODEP_ATS_TC_NAD) != 0U) + ? true + : false); + } + } + + gIsoDep.actvDev->info.FSx = + rfalIsoDepFSxI2FSx(gIsoDep.actvDev->info.FSxI); + gIsoDep.fsx = gIsoDep.actvDev->info.FSx; + + gIsoDep.actvDev->info.SFGT = + rfalIsoDepSFGI2SFGT((uint8_t)gIsoDep.actvDev->info.SFGI); + + /* Ensure SFGT before following frame (reuse RFAL GT timer) */ + rfalSetGT(rfalConvMsTo1fc(gIsoDep.actvDev->info.SFGT)); + rfalFieldOnAndStartGT(); + + gIsoDep.actvDev->info.FWT = + rfalIsoDepFWI2FWT(gIsoDep.actvDev->info.FWI); + gIsoDep.actvDev->info.dFWT = RFAL_ISODEP_DFWT_20; + + gIsoDep.actvDev->info.DID = + ((gIsoDep.actvDev->info.supDID) ? gIsoDep.did + : RFAL_ISODEP_NO_DID); + gIsoDep.actvDev->info.NAD = RFAL_ISODEP_NO_NAD; + + /*******************************************************************************/ + /* If higher bit rates are supported by both devices, send PPS */ + if ((gIsoDep.actvDev->info.DSI != RFAL_BR_106) || + (gIsoDep.actvDev->info.DRI != RFAL_BR_106)) { + /* Send PPS */ /* PRQA S 0310 1 # MISRA 11.3 - Intentional safe + cast to avoiding buffer duplication */ + RFAL_EXIT_ON_ERR( + ret, rfalIsoDepStartPPS(gIsoDep.actvDev->info.DID, + gIsoDep.actvDev->info.DSI, + gIsoDep.actvDev->info.DRI, + (rfalIsoDepPpsRes *)&gIsoDep.ctrlBuf)); + + gIsoDep.state = ISODEP_ST_PCD_ACT_PPS; + return RFAL_ERR_BUSY; + } + + return RFAL_ERR_NONE; + } + } + break; + + /*******************************************************************************/ + case ISODEP_ST_PCD_ACT_PPS: + + ret = rfalIsoDepGetPPSSTatus(); + if (ret != RFAL_ERR_BUSY) { + /* Check whether PPS has been acknowledge */ + if (ret == RFAL_ERR_NONE) { + /* DSI code the divisor from PICC to PCD */ + /* DRI code the divisor from PCD to PICC */ + rfalSetBitRate(gIsoDep.actvDev->info.DRI, gIsoDep.actvDev->info.DSI); + } else { + /* If PPS has faled keep activation bit rate */ + gIsoDep.actvDev->info.DSI = RFAL_BR_106; + gIsoDep.actvDev->info.DRI = RFAL_BR_106; + + /* Ignore PPS response fail, proceed to data exchange */ + ret = RFAL_ERR_NONE; + } + } + break; + + /*******************************************************************************/ + case ISODEP_ST_PCD_WAIT_DSL: + + ret = rfalIsoDepGetDeselectStatus(); + if (ret != RFAL_ERR_BUSY) { + /* Report activation failed with generic tranmission error */ + ret = RFAL_ERR_FRAMING; + } + break; + + /*******************************************************************************/ + default: + ret = RFAL_ERR_WRONG_STATE; + break; + } + + return ret; +} +#endif /* RFAL_FEATURE_NFCA */ + +#if RFAL_FEATURE_NFCB + +/*******************************************************************************/ +ReturnCode rfalIsoDepPollBHandleActivation(rfalIsoDepFSxI FSDI, uint8_t DID, + rfalBitRate maxBR, uint8_t PARAM1, + const rfalNfcbListenDevice *nfcbDev, + const uint8_t *HLInfo, + uint8_t HLInfoLen, + rfalIsoDepDevice *rfalIsoDepDev) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR( + ret, rfalIsoDepPollBStartActivation(FSDI, DID, maxBR, PARAM1, nfcbDev, + HLInfo, HLInfoLen, rfalIsoDepDev)); + rfalRunBlocking(ret, rfalIsoDepPollBGetActivationStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepPollBStartActivation(rfalIsoDepFSxI FSDI, uint8_t DID, + rfalBitRate maxBR, uint8_t PARAM1, + const rfalNfcbListenDevice *nfcbDev, + const uint8_t *HLInfo, + uint8_t HLInfoLen, + rfalIsoDepDevice *rfalIsoDepDev) { + ReturnCode ret; + uint32_t tr2; + + /***************************************************************************/ + /* Initialize ISO-DEP Device with info from SENSB_RES */ + rfalIsoDepDev->info.FWI = + ((nfcbDev->sensbRes.protInfo.FwiAdcFo >> RFAL_NFCB_SENSB_RES_FWI_SHIFT) & + RFAL_NFCB_SENSB_RES_FWI_MASK); + rfalIsoDepDev->info.FWT = rfalIsoDepFWI2FWT(rfalIsoDepDev->info.FWI); + rfalIsoDepDev->info.dFWT = RFAL_NFCB_DFWT; + rfalIsoDepDev->info.SFGI = (((uint32_t)nfcbDev->sensbRes.protInfo.SFGI >> + RFAL_NFCB_SENSB_RES_SFGI_SHIFT) & + RFAL_NFCB_SENSB_RES_SFGI_MASK); + rfalIsoDepDev->info.SFGT = + rfalIsoDepSFGI2SFGT((uint8_t)rfalIsoDepDev->info.SFGI); + rfalIsoDepDev->info.FSxI = ((nfcbDev->sensbRes.protInfo.FsciProType >> + RFAL_NFCB_SENSB_RES_FSCI_SHIFT) & + RFAL_NFCB_SENSB_RES_FSCI_MASK); + rfalIsoDepDev->info.FSx = rfalIsoDepFSxI2FSx(rfalIsoDepDev->info.FSxI); + rfalIsoDepDev->info.DID = DID; + rfalIsoDepDev->info.supDID = (((nfcbDev->sensbRes.protInfo.FwiAdcFo & + RFAL_NFCB_SENSB_RES_FO_DID_MASK) != 0U) + ? true + : false); + rfalIsoDepDev->info.supNAD = (((nfcbDev->sensbRes.protInfo.FwiAdcFo & + RFAL_NFCB_SENSB_RES_FO_NAD_MASK) != 0U) + ? true + : false); + + /* Check if DID requested is supported by PICC */ + if ((DID != RFAL_ISODEP_NO_DID) && (!rfalIsoDepDev->info.supDID)) { + return RFAL_ERR_PARAM; + } + + /* Enable EMD suppresssion|handling according to Digital 2.1 4.1.1.1 ; + * EMVCo 3.0 4.9.2 ; ISO 14443-3 8.3 */ + rfalSetErrorHandling(RFAL_ERRORHANDLING_EMD); + + /***************************************************************************/ + /* Set FDT Poll to be used on upcoming communications */ + if (gIsoDep.compMode == RFAL_COMPLIANCE_MODE_EMV) { + /* Disregard Minimum TR2 returned by PICC, always use FDTb MIN + * EMVCo 3.0 6.3.2.10 */ + rfalSetFDTPoll(RFAL_FDT_POLL_NFCB_POLLER); + } else { + tr2 = rfalNfcbTR2ToFDT(((nfcbDev->sensbRes.protInfo.FsciProType >> + RFAL_NFCB_SENSB_RES_PROTO_TR2_SHIFT) & + RFAL_NFCB_SENSB_RES_PROTO_TR2_MASK)); + if (rfalGetFDTPoll() < tr2) { + /* In case TR2 is longer than the one currently running, ensure it's + * fulfilled (max: 9472/fc => 700us) */ + platformDelay(1); + } + + /* Apply minimum TR2 from SENSB_RES Digital 2.1 7.6.2.23 */ + rfalSetFDTPoll(tr2); + } + + /* Calculate max Bit Rate */ + rfalIsoDepCalcBitRate(maxBR, nfcbDev->sensbRes.protInfo.BRC, + &rfalIsoDepDev->info.DSI, &rfalIsoDepDev->info.DRI); + + /***************************************************************************/ + /* Send ATTRIB Command */ + RFAL_EXIT_ON_ERR( + ret, + rfalIsoDepStartATTRIB( + (const uint8_t *)&nfcbDev->sensbRes.nfcid0, + (((nfcbDev->sensbRes.protInfo.FwiAdcFo & + RFAL_NFCB_SENSB_RES_ADC_ADV_FEATURE_MASK) != 0U) + ? PARAM1 + : RFAL_ISODEP_ATTRIB_REQ_PARAM1_DEFAULT), + rfalIsoDepDev->info.DSI, rfalIsoDepDev->info.DRI, FSDI, + (gIsoDep.compMode == RFAL_COMPLIANCE_MODE_EMV) + ? RFAL_NFCB_SENSB_RES_PROTO_ISO_MASK + : (nfcbDev->sensbRes.protInfo.FsciProType & + ((RFAL_NFCB_SENSB_RES_PROTO_TR2_MASK + << RFAL_NFCB_SENSB_RES_PROTO_TR2_SHIFT) | + RFAL_NFCB_SENSB_RES_PROTO_ISO_MASK)), /* EMVCo 2.6 6.4.1.9 */ + DID, HLInfo, HLInfoLen, + (rfalIsoDepDev->info.FWT + rfalIsoDepDev->info.dFWT), + &rfalIsoDepDev->activation.B.Listener.ATTRIB_RES, + &rfalIsoDepDev->activation.B.Listener.ATTRIB_RESLen)); + + gIsoDep.actvDev = rfalIsoDepDev; + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepPollBGetActivationStatus(void) { + ReturnCode ret; + uint8_t mbli; + + /***************************************************************************/ + /* Process ATTRIB Response */ + ret = rfalIsoDepGetATTRIBStatus(); + if (ret != RFAL_ERR_BUSY) { + if (ret == RFAL_ERR_NONE) { + /* Digital 1.1 14.6.2.3 - Check if received DID match */ + uint8_t expected_did = + ((RFAL_ISODEP_NO_DID == gIsoDep.did) ? RFAL_ISODEP_DID_00 + : gIsoDep.did); + if ((gIsoDep.actvDev->activation.B.Listener.ATTRIB_RES.mbliDid & + RFAL_ISODEP_ATTRIB_RES_DID_MASK) != expected_did) { + return RFAL_ERR_PROTO; + } + + /* Retrieve MBLI and calculate new FDS/MBL (Maximum Buffer Length) */ + mbli = ((gIsoDep.actvDev->activation.B.Listener.ATTRIB_RES.mbliDid >> + RFAL_ISODEP_ATTRIB_RES_MBLI_SHIFT) & + RFAL_ISODEP_ATTRIB_RES_MBLI_MASK); + if (mbli > 0U) { + /* Digital 1.1 14.6.2 Calculate Maximum Buffer Length MBL = FSC x + * 2^(MBLI-1) */ + gIsoDep.actvDev->info.MBL = + (gIsoDep.actvDev->info.FSx * ((uint32_t)1U << (mbli - 1U))); + } + + /* DSI code the divisor from PICC to PCD */ + /* DRI code the divisor from PCD to PICC */ + rfalSetBitRate(gIsoDep.actvDev->info.DRI, gIsoDep.actvDev->info.DSI); + + /* REMARK: SoF EoF TR0 and TR1 are not passed on to RF layer */ + + /* Start the SFGT timer (reuse RFAL GT timer) */ + rfalSetGT(rfalConvMsTo1fc(gIsoDep.actvDev->info.SFGT)); + rfalFieldOnAndStartGT(); + } else { + gIsoDep.actvDev->info.DSI = RFAL_BR_106; + gIsoDep.actvDev->info.DRI = RFAL_BR_106; + } + + /*******************************************************************************/ + /* Store already FS info, rfalIsoDepGetMaxInfLen() may be called before + * setting TxRx params */ + gIsoDep.fsx = gIsoDep.actvDev->info.FSx; + } + + return ret; +} + +#endif /* RFAL_FEATURE_NFCB */ + +/*******************************************************************************/ +ReturnCode rfalIsoDepPollHandleSParameters(rfalIsoDepDevice *rfalIsoDepDev, + rfalBitRate maxTxBR, + rfalBitRate maxRxBR) { + uint8_t it; + uint8_t supPCD2PICC; + uint8_t supPICC2PCD; + uint8_t currenttxBR; + uint8_t currentrxBR; + rfalBitRate txBR; + rfalBitRate rxBR; + uint16_t rcvLen; + ReturnCode ret; + rfalIsoDepControlMsgSParam sParam; + + if ((rfalIsoDepDev == NULL) || (maxTxBR > RFAL_BR_13560) || + (maxRxBR > RFAL_BR_13560)) { + return RFAL_ERR_PARAM; + } + + it = 0; + supPICC2PCD = 0x00; + supPCD2PICC = 0x00; + txBR = RFAL_BR_106; + rxBR = RFAL_BR_106; + sParam.pcb = ISODEP_PCB_SPARAMETERS; + + /*******************************************************************************/ + /* Send S(PARAMETERS) - Block Info */ + sParam.sParam.tag = RFAL_ISODEP_SPARAM_TAG_BLOCKINFO; + sParam.sParam.value[it++] = RFAL_ISODEP_SPARAM_TAG_BRREQ; + sParam.sParam.value[it++] = RFAL_ISODEP_SPARAM_TAG_BRREQ_LEN; + sParam.sParam.length = it; + + /* Send S(PARAMETERS). Use a fixed FWI of 4 ISO14443-4 2016 7.2 */ + RFAL_EXIT_ON_ERR( + ret, rfalTransceiveBlockingTxRx( + (uint8_t *)&sParam, (RFAL_ISODEP_SPARAM_HDR_LEN + (uint16_t)it), + (uint8_t *)&sParam, sizeof(rfalIsoDepControlMsgSParam), &rcvLen, + RFAL_TXRX_FLAGS_DEFAULT, ISODEP_FWT_DEACTIVATION)); + + it = 0; + + /*******************************************************************************/ + /* Check S(PARAMETERS) response */ + if ((sParam.pcb != ISODEP_PCB_SPARAMETERS) || + (sParam.sParam.tag != RFAL_ISODEP_SPARAM_TAG_BLOCKINFO) || + (sParam.sParam.value[it] != RFAL_ISODEP_SPARAM_TAG_BRIND) || + (rcvLen < RFAL_ISODEP_SPARAM_HDR_LEN) || + (rcvLen != + ((uint16_t)sParam.sParam.length + RFAL_ISODEP_SPARAM_HDR_LEN))) { + return RFAL_ERR_PROTO; + } + + /* Retrieve PICC's bit rate PICC capabilities */ + for (it = 0; it < (rcvLen - (uint16_t)RFAL_ISODEP_SPARAM_TAG_LEN); it++) { + if ((sParam.sParam.value[it] == RFAL_ISODEP_SPARAM_TAG_SUP_PCD2PICC) && + (sParam.sParam.value[it + (uint16_t)RFAL_ISODEP_SPARAM_TAG_LEN] == + RFAL_ISODEP_SPARAM_TAG_PCD2PICC_LEN)) { + supPCD2PICC = + sParam.sParam.value[it + RFAL_ISODEP_SPARAM_TAG_PCD2PICC_LEN]; + } + + if ((sParam.sParam.value[it] == RFAL_ISODEP_SPARAM_TAG_SUP_PICC2PCD) && + (sParam.sParam.value[it + (uint16_t)RFAL_ISODEP_SPARAM_TAG_LEN] == + RFAL_ISODEP_SPARAM_TAG_PICC2PCD_LEN)) { + supPICC2PCD = + sParam.sParam.value[it + RFAL_ISODEP_SPARAM_TAG_PICC2PCD_LEN]; + } + } + + /*******************************************************************************/ + /* Check if requested bit rates are supported by PICC */ + if ((supPICC2PCD == 0x00U) || (supPCD2PICC == 0x00U)) { + return RFAL_ERR_PROTO; + } + + for (it = 0; it <= (uint8_t)maxTxBR; it++) { + if ((supPCD2PICC & (0x01U << it)) != 0U) { + txBR = + (rfalBitRate)it; /* PRQA S 4342 # MISRA 10.5 - Layout of enum + rfalBitRate and above clamping of maxTxBR + guarantee no invalid enum values to be created */ + } + } + for (it = 0; it <= (uint8_t)maxRxBR; it++) { + if ((supPICC2PCD & (0x01U << it)) != 0U) { + rxBR = + (rfalBitRate)it; /* PRQA S 4342 # MISRA 10.5 - Layout of enum + rfalBitRate and above clamping of maxTxBR + guarantee no invalid enum values to be created */ + } + } + + it = 0; + currenttxBR = (uint8_t)txBR; + currentrxBR = (uint8_t)rxBR; + + /*******************************************************************************/ + /* Send S(PARAMETERS) - Bit rates Activation */ + sParam.sParam.tag = RFAL_ISODEP_SPARAM_TAG_BLOCKINFO; + sParam.sParam.value[it++] = RFAL_ISODEP_SPARAM_TAG_BRACT; + sParam.sParam.value[it++] = + (RFAL_ISODEP_SPARAM_TVL_HDR_LEN + RFAL_ISODEP_SPARAM_TAG_PCD2PICC_LEN + + RFAL_ISODEP_SPARAM_TVL_HDR_LEN + RFAL_ISODEP_SPARAM_TAG_PICC2PCD_LEN); + sParam.sParam.value[it++] = RFAL_ISODEP_SPARAM_TAG_SEL_PCD2PICC; + sParam.sParam.value[it++] = RFAL_ISODEP_SPARAM_TAG_PCD2PICC_LEN; + sParam.sParam.value[it++] = ((uint8_t)0x01U << currenttxBR); + sParam.sParam.value[it++] = 0x00U; + sParam.sParam.value[it++] = RFAL_ISODEP_SPARAM_TAG_SEL_PICC2PCD; + sParam.sParam.value[it++] = RFAL_ISODEP_SPARAM_TAG_PICC2PCD_LEN; + sParam.sParam.value[it++] = ((uint8_t)0x01U << currentrxBR); + sParam.sParam.value[it++] = 0x00U; + sParam.sParam.length = it; + + RFAL_EXIT_ON_ERR( + ret, rfalTransceiveBlockingTxRx( + (uint8_t *)&sParam, (RFAL_ISODEP_SPARAM_HDR_LEN + (uint16_t)it), + (uint8_t *)&sParam, sizeof(rfalIsoDepControlMsgSParam), &rcvLen, + RFAL_TXRX_FLAGS_DEFAULT, + (rfalIsoDepDev->info.FWT + rfalIsoDepDev->info.dFWT))); + + it = 0; + + /*******************************************************************************/ + /* Check S(PARAMETERS) Acknowledge */ + if ((sParam.pcb != ISODEP_PCB_SPARAMETERS) || + (sParam.sParam.tag != RFAL_ISODEP_SPARAM_TAG_BLOCKINFO) || + (sParam.sParam.value[it] != RFAL_ISODEP_SPARAM_TAG_BRACK) || + (rcvLen < RFAL_ISODEP_SPARAM_HDR_LEN)) { + return RFAL_ERR_PROTO; + } + + RFAL_EXIT_ON_ERR(ret, rfalSetBitRate(txBR, rxBR)); + + rfalIsoDepDev->info.DRI = txBR; + rfalIsoDepDev->info.DSI = rxBR; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +static void rfalIsoDepCalcBitRate(rfalBitRate maxAllowedBR, + uint8_t piccBRCapability, rfalBitRate *dsi, + rfalBitRate *dri) { + uint8_t driMask; + uint8_t dsiMask; + int16_t i; + bool bitrateFound; + rfalBitRate curMaxBR; + + curMaxBR = maxAllowedBR; + + do { + bitrateFound = true; + + (*dsi) = RFAL_BR_106; + (*dri) = RFAL_BR_106; + + /* Digital 1.0 5.6.2.5 & 11.6.2.14: A received RFU value of b4 = 1b MUST be + * interpreted as if b7 to b1 ? 0000000b (only 106 kbits/s in both + * direction) */ + if (((RFAL_ISODEP_BITRATE_RFU_MASK & piccBRCapability) != 0U) || + (curMaxBR > RFAL_BR_848) || (curMaxBR == RFAL_BR_KEEP)) { + return; + } + + /***************************************************************************/ + /* Determine Listen->Poll bit rate */ + dsiMask = (piccBRCapability & RFAL_ISODEP_BSI_MASK); + for (i = 2; i >= 0; i--) /* Check supported bit rate from the highest */ + { + if (((dsiMask & (0x10U << (uint8_t)i)) != 0U) && + (((uint8_t)i + 1U) <= (uint8_t)curMaxBR)) { + const uint8_t newdsi = ((uint8_t)i) + 1U; + (*dsi) = (rfalBitRate) + newdsi; /* PRQA S 4342 # MISRA 10.5 - Layout of enum rfalBitRate and + range of loop variable guarantee no invalid enum values + to be created */ + break; + } + } + + /***************************************************************************/ + /* Determine Poll->Listen bit rate */ + driMask = (piccBRCapability & RFAL_ISODEP_BRI_MASK); + for (i = 2; i >= 0; i--) /* Check supported bit rate from the highest */ + { + if (((driMask & (0x01U << (uint8_t)i)) != 0U) && + (((uint8_t)i + 1U) <= (uint8_t)curMaxBR)) { + const uint8_t newdri = ((uint8_t)i) + 1U; + (*dri) = (rfalBitRate) + newdri; /* PRQA S 4342 # MISRA 10.5 - Layout of enum rfalBitRate and + range of loop variable guarantee no invalid enum values + to be created */ + break; + } + } + + /***************************************************************************/ + /* Check if different bit rate is supported */ + + /* Digital 1.0 Table 67: if b8=1b, then only the same bit rate divisor for + * both directions is supported */ + if ((piccBRCapability & RFAL_ISODEP_SAME_BITRATE_MASK) != 0U) { + (*dsi) = RFAL_MIN((*dsi), (*dri)); + (*dri) = (*dsi); + /* Check that the baudrate is supported */ + if ((RFAL_BR_106 != (*dsi)) && + (!(((dsiMask & (0x10U << ((uint8_t)(*dsi) - 1U))) != 0U) && + ((driMask & (0x01U << ((uint8_t)(*dri) - 1U))) != 0U)))) { + bitrateFound = false; + curMaxBR = (*dsi); /* set allowed bitrate to be lowest and determine bit + rate again */ + } + } + } while (!(bitrateFound)); +} + +/*******************************************************************************/ +static uint32_t rfalIsoDepSFGI2SFGT(uint8_t sfgi) { + uint32_t sfgt; + uint8_t tmpSFGI; + + tmpSFGI = sfgi; + + if (tmpSFGI > ISODEP_SFGI_MAX) { + tmpSFGI = ISODEP_SFGI_MIN; + } + + if (tmpSFGI != ISODEP_SFGI_MIN) { + /* If sfgi != 0 wait SFGT + dSFGT Digital 1.1 13.8.2.1 */ + sfgt = rfalIsoDepCalcSGFT(sfgi) + rfalIsoDepCalcdSGFT(sfgi); + } + /* Otherwise use FDTPoll min Digital 1.1 13.8.2.3*/ + else { + sfgt = RFAL_FDT_POLL_NFCA_POLLER; + } + + /* Convert carrier cycles to milli seconds */ + return (rfalConv1fcToMs(sfgt) + 1U); +} + +#endif /* RFAL_FEATURE_ISO_DEP_POLL */ + +/*******************************************************************************/ +static void rfalIsoDepApdu2IBLockParam(rfalIsoDepApduTxRxParam apduParam, + rfalIsoDepTxRxParam *iBlockParam, + uint16_t txPos, uint16_t rxPos) { + RFAL_NO_WARNING(rxPos); /* Keep this param for future use */ + + iBlockParam->DID = apduParam.DID; + iBlockParam->FSx = apduParam.FSx; + iBlockParam->ourFSx = apduParam.ourFSx; + iBlockParam->FWT = apduParam.FWT; + iBlockParam->dFWT = apduParam.dFWT; + + if ((apduParam.txBufLen - txPos) > rfalIsoDepGetMaxInfLen()) { + iBlockParam->isTxChaining = true; + iBlockParam->txBufLen = rfalIsoDepGetMaxInfLen(); + } else { + iBlockParam->isTxChaining = false; + iBlockParam->txBufLen = (apduParam.txBufLen - txPos); + } + + /* TxBuf is moved to the beginning for every I-Block */ + iBlockParam->txBuf = + (rfalIsoDepBufFormat *) + apduParam.txBuf; /* PRQA S 0310 # MISRA 11.3 - Intentional safe cast + to avoiding large buffer duplication */ + iBlockParam->rxBuf = + apduParam.tmpBuf; /* Simply using the apdu buffer is not possible because + of current ACK handling */ + iBlockParam->isRxChaining = &gIsoDep.isAPDURxChaining; + iBlockParam->rxLen = apduParam.rxLen; +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepStartApduTransceive(rfalIsoDepApduTxRxParam param) { + rfalIsoDepTxRxParam txRxParam; + + /* Initialize and store APDU context */ + gIsoDep.APDUParam = param; + gIsoDep.APDUTxPos = 0; + gIsoDep.APDURxPos = 0; + + /* Assign current FSx to calculate INF length (only change the FSx from + * activation if no to Keep) */ + gIsoDep.ourFsx = + ((param.ourFSx != RFAL_ISODEP_FSX_KEEP) ? param.ourFSx : gIsoDep.ourFsx); + gIsoDep.fsx = param.FSx; + + /* Convert APDU TxRxParams to I-Block TxRxParams */ + rfalIsoDepApdu2IBLockParam(gIsoDep.APDUParam, &txRxParam, gIsoDep.APDUTxPos, + gIsoDep.APDURxPos); + + return rfalIsoDepStartTransceive(txRxParam); +} + +/*******************************************************************************/ +ReturnCode rfalIsoDepGetApduTransceiveStatus(void) { + ReturnCode ret; + rfalIsoDepTxRxParam txRxParam; + + ret = rfalIsoDepGetTransceiveStatus(); + switch (ret) { + /*******************************************************************************/ + case RFAL_ERR_NONE: + + /* Check if we are still doing chaining on Tx */ + if (gIsoDep.isTxChaining) { + /* Add already Tx bytes */ + gIsoDep.APDUTxPos += gIsoDep.txBufLen; + + /* Convert APDU TxRxParams to I-Block TxRxParams */ + rfalIsoDepApdu2IBLockParam(gIsoDep.APDUParam, &txRxParam, + gIsoDep.APDUTxPos, gIsoDep.APDURxPos); + + if (txRxParam.txBufLen > 0U) /* MISRA 21.18 */ + { + /* Move next I-Block to beginning of APDU Tx buffer */ + RFAL_MEMCPY(gIsoDep.APDUParam.txBuf->apdu, + &gIsoDep.APDUParam.txBuf->apdu[gIsoDep.APDUTxPos], + txRxParam.txBufLen); + } + + RFAL_EXIT_ON_ERR(ret, rfalIsoDepStartTransceive(txRxParam)); + return RFAL_ERR_BUSY; + } + + /* APDU TxRx is done */ + /* fall through */ + + /*******************************************************************************/ + case RFAL_ERR_AGAIN: /* PRQA S 2003 # MISRA 16.3 - Intentional fall through + */ + + /* Check if no APDU transceive has been started before (data from + * rfalIsoDepListenStartActivation) */ + if (gIsoDep.APDUParam.rxLen == NULL) { + if (ret == RFAL_ERR_AGAIN) { + /* In Listen mode first chained packet cannot be retrieved via APDU + * interface */ + return RFAL_ERR_NOTSUPP; + } + + /* TxRx is complete and full data is already available */ + return RFAL_ERR_NONE; + } + + if (*gIsoDep.APDUParam.rxLen > 0U) /* MISRA 21.18 */ + { + /* Ensure that data in tmpBuf still fits into APDU buffer */ + if ((gIsoDep.APDURxPos + (*gIsoDep.APDUParam.rxLen)) > + (uint16_t)RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN) { + return RFAL_ERR_NOMEM; + } + + /* Copy chained packet from tmp buffer to APDU buffer */ + RFAL_MEMCPY(&gIsoDep.APDUParam.rxBuf->apdu[gIsoDep.APDURxPos], + gIsoDep.APDUParam.tmpBuf->inf, *gIsoDep.APDUParam.rxLen); + gIsoDep.APDURxPos += *gIsoDep.APDUParam.rxLen; + } + + /* Update output param rxLen */ + *gIsoDep.APDUParam.rxLen = gIsoDep.APDURxPos; + + /* Wait for following I-Block or APDU TxRx has finished */ + return ((ret == RFAL_ERR_AGAIN) ? RFAL_ERR_BUSY : RFAL_ERR_NONE); + + /*******************************************************************************/ + default: + /* MISRA 16.4: no empty default statement (a comment being enough) */ + break; + } + + return ret; +} + +#endif /* RFAL_FEATURE_ISO_DEP */ diff --git a/core/embed/io/nfc/rfal/source/rfal_nfc.c b/core/embed/io/nfc/rfal/source/rfal_nfc.c new file mode 100644 index 0000000000..565eed021c --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_nfc.c @@ -0,0 +1,2451 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2020 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/*! \file rfal_nfc.c + * + * \author Gustavo Patricio + * + * \brief RFAL NFC device + * + * This module provides the required features to behave as an NFC Poller + * or Listener device. It grants an easy to use interface for the following + * activities: Technology Detection, Collision Resolution, Activation, + * Data Exchange, and Deactivation + * + * This layer is influenced by (but not fully aligned with) the NFC Forum + * specifications, in particular: Activity 2.0 and NCI 2.0 + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_nfc.h" +#include "rfal_analogConfig.h" +#include "rfal_utils.h" + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ +#define RFAL_NFC_MAX_DEVICES 5U /*!< Max number of devices supported */ +#define RFAL_NFC_T_FIELD_OFF \ + 5U /*!< tFIELD_OFF minimal duration Activity 2.2 Table 26 */ + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ + +#define rfalNfcNfcNotify(st) \ + if (gNfcDev.disc.notifyCb != NULL) gNfcDev.disc.notifyCb((st)) + +#define rfalNfcpCbPollerInitialize() \ + ((gNfcDev.disc.propNfc.rfalNfcpPollerInitialize != NULL) \ + ? gNfcDev.disc.propNfc.rfalNfcpPollerInitialize() \ + : RFAL_ERR_NOTSUPP) +#define rfalNfcpCbPollerTechnologyDetection() \ + ((gNfcDev.disc.propNfc.rfalNfcpPollerTechnologyDetection != NULL) \ + ? gNfcDev.disc.propNfc.rfalNfcpPollerTechnologyDetection() \ + : RFAL_ERR_TIMEOUT) +#define rfalNfcpCbPollerStartCollisionResolution() \ + ((gNfcDev.disc.propNfc.rfalNfcpPollerStartCollisionResolution != NULL) \ + ? gNfcDev.disc.propNfc.rfalNfcpPollerStartCollisionResolution() \ + : RFAL_ERR_NOTSUPP) +#define rfalNfcpCbPollerGetCollisionResolutionStatus() \ + ((gNfcDev.disc.propNfc.rfalNfcpPollerGetCollisionResolutionStatus != NULL) \ + ? gNfcDev.disc.propNfc.rfalNfcpPollerGetCollisionResolutionStatus() \ + : RFAL_ERR_NOTSUPP) +#define rfalNfcpCbStartActivation() \ + ((gNfcDev.disc.propNfc.rfalNfcpStartActivation != NULL) \ + ? gNfcDev.disc.propNfc.rfalNfcpStartActivation() \ + : RFAL_ERR_NOTSUPP) +#define rfalNfcpCbGetActivationStatus() \ + ((gNfcDev.disc.propNfc.rfalNfcpGetActivationStatus != NULL) \ + ? gNfcDev.disc.propNfc.rfalNfcpGetActivationStatus() \ + : RFAL_ERR_NOTSUPP) + +#define rfalNfcHasPollerTechs() \ + ((gNfcDev.disc.techs2Find & \ + (RFAL_NFC_POLL_TECH_A | RFAL_NFC_POLL_TECH_B | RFAL_NFC_POLL_TECH_F | \ + RFAL_NFC_POLL_TECH_V | RFAL_NFC_POLL_TECH_AP2P | \ + RFAL_NFC_POLL_TECH_ST25TB | RFAL_NFC_POLL_TECH_PROP)) != 0U) + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! Buffer union, only one interface is used at a time */ +typedef union { /*PRQA S 0750 # MISRA 19.2 - Members of the union will not be + used concurrently, only one interface at a time */ + rfalIsoDepBufFormat + isoDepBuf; /*!< ISO-DEP buffer format (with header/prologue) */ + rfalNfcDepBufFormat + nfcDepBuf; /*!< NFC-DEP buffer format (with header/prologue) */ +} rfalNfcTmpBuffer; + +/*! RFAL NFC instance */ +typedef struct { + rfalNfcState state; /*!< Main state */ + uint16_t techsFound; /*!< Technologies found bitmask */ + uint16_t techs2do; /*!< Technologies still to be performed */ + uint16_t techDctCnt; /*!< Technologies detection counter (before WU) */ + rfalBitRate ap2pBR; /*!< Bit rate to poll for AP2P */ + uint8_t selDevIdx; /*!< Selected device index */ + rfalNfcDevice *activeDev; /*!< Active device pointer */ + rfalNfcDiscoverParam disc; /*!< Discovery parameters */ + rfalNfcDevice devList[RFAL_NFC_MAX_DEVICES]; /*!< Location of device list */ + uint8_t devCnt; /*!< Decices found counter */ + uint32_t discTmr; /*!< Discovery Total duration timer */ + ReturnCode dataExErr; /*!< Last Data Exchange error */ + rfalNfcDeactivateType deactType; /*!< Deactivation type */ + bool isRxChaining; /*!< Flag indicating Other device is chaining */ + uint32_t lmMask; /*!< Listen Mode mask */ + bool isFieldOn; /*!< Flag indicating Fieldon for Passive Poll */ + bool isTechInit; /*!< Flag indicating technology has been set */ + bool isOperOngoing; /*!< Flag indicating operation is ongoing */ + bool isDeactivating; /*!< Flag indicating deactivation is ongoing */ + + rfalNfcaSensRes sensRes; /*!< SENS_RES during card detection and activation */ + rfalNfcbSensbRes + sensbRes; /*!< SENSB_RES during card detection and activation */ + uint8_t sensbResLen; /*!< SENSB_RES length */ + + rfalNfcBuffer txBuf; /*!< Tx buffer for Data Exchange */ + rfalNfcBuffer rxBuf; /*!< Rx buffer for Data Exchange */ + uint16_t rxLen; /*!< Length of received data on Data Exchange */ + +#if RFAL_FEATURE_NFC_DEP || RFAL_FEATURE_ISO_DEP + rfalNfcTmpBuffer tmpBuf; /*!< Tmp buffer for Data Exchange */ +#endif /* RFAL_FEATURE_NFC_DEP || RFAL_FEATURE_ISO_DEP */ + +} rfalNfc; + +/* + ****************************************************************************** + * LOCAL VARIABLES + ****************************************************************************** + */ +#ifdef RFAL_TEST_MODE +rfalNfc gNfcDev; +#else /* RFAL_TEST_MODE */ +static rfalNfc gNfcDev; +#endif /* RFAL_TEST_MODE */ + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +static ReturnCode rfalNfcPollTechDetection(void); +static ReturnCode rfalNfcPollCollResolution(void); +static ReturnCode rfalNfcPollActivation(uint8_t devIt); +static ReturnCode rfalNfcDeactivation(void); + +#if RFAL_FEATURE_NFC_DEP +static ReturnCode rfalNfcNfcDepActivate(rfalNfcDevice *device, + rfalNfcDepCommMode commMode, + const uint8_t *atrReq, + uint16_t atrReqLen); +#endif /* RFAL_FEATURE_NFC_DEP */ + +#if RFAL_FEATURE_LISTEN_MODE +static ReturnCode rfalNfcListenActivation(void); +#endif /* RFAL_FEATURE_LISTEN_MODE*/ + +/*******************************************************************************/ +ReturnCode rfalNfcInitialize(void) { + ReturnCode err; + + gNfcDev.state = RFAL_NFC_STATE_NOTINIT; + +#ifdef RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG + /* Initialize the AC if not already done */ + /* Prevents reseting to default AC table in case another has been loaded */ + /* meanwhile - For use cases where a dynamic AC is loaded at run time */ + if ((!rfalAnalogConfigIsReady())) +#endif /* RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG */ + { + rfalAnalogConfigInitialize(); /* Initialize RFAL's Analog Configs */ + } + + RFAL_EXIT_ON_ERR(err, rfalInitialize()); /* Initialize RFAL */ + + RFAL_MEMSET(&gNfcDev, 0x00, sizeof(gNfcDev)); + + gNfcDev.state = RFAL_NFC_STATE_IDLE; /* Go to initialized */ + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDiscover(const rfalNfcDiscoverParam *disParams) { + /* Check if initialization has been performed */ + if (gNfcDev.state != RFAL_NFC_STATE_IDLE) { + return RFAL_ERR_WRONG_STATE; + } + + /* Check valid parameters */ + if ((disParams == NULL) || (disParams->devLimit > RFAL_NFC_MAX_DEVICES) || + (disParams->devLimit == 0U) || + ((disParams->maxBR > RFAL_BR_1695) && + (disParams->maxBR != RFAL_BR_KEEP)) || + (((disParams->techs2Find & RFAL_NFC_POLL_TECH_F) != 0U) && + (disParams->nfcfBR != RFAL_BR_212) && + (disParams->nfcfBR != RFAL_BR_424)) || + ((((disParams->techs2Find & RFAL_NFC_POLL_TECH_AP2P) != 0U) && + (disParams->ap2pBR > RFAL_BR_424)) || + (disParams->GBLen > RFAL_NFCDEP_GB_MAX_LEN))) { + return RFAL_ERR_PARAM; + } + + if ((((disParams->techs2Find & RFAL_NFC_POLL_TECH_A) != 0U) && + (!((bool)RFAL_FEATURE_NFCA))) || + (((disParams->techs2Find & RFAL_NFC_POLL_TECH_B) != 0U) && + (!((bool)RFAL_FEATURE_NFCB))) || + (((disParams->techs2Find & RFAL_NFC_POLL_TECH_F) != 0U) && + (!((bool)RFAL_FEATURE_NFCF))) || + (((disParams->techs2Find & RFAL_NFC_POLL_TECH_V) != 0U) && + (!((bool)RFAL_FEATURE_NFCV))) || + (((disParams->techs2Find & RFAL_NFC_POLL_TECH_ST25TB) != 0U) && + (!((bool)RFAL_FEATURE_ST25TB))) || + (((disParams->techs2Find & RFAL_NFC_POLL_TECH_AP2P) != 0U) && + (!((bool)RFAL_FEATURE_NFC_DEP))) || + (((disParams->techs2Find & RFAL_NFC_LISTEN_TECH_A) != 0U) && + (!((bool)RFAL_FEATURE_NFCA))) || + (((disParams->techs2Find & RFAL_NFC_LISTEN_TECH_B) != 0U) && + (!((bool)RFAL_FEATURE_NFCB))) || + (((disParams->techs2Find & RFAL_NFC_LISTEN_TECH_F) != 0U) && + (!((bool)RFAL_FEATURE_NFCF))) || + (((disParams->techs2Find & RFAL_NFC_LISTEN_TECH_AP2P) != 0U) && + (!((bool)RFAL_FEATURE_NFC_DEP)))) { + return RFAL_ERR_DISABLED; /* PRQA S 2880 # MISRA 2.1 - Unreachable code + due to configuration option being set/unset */ + } + + if ((((disParams->techs2Find & RFAL_NFC_POLL_TECH_A) != 0U) && + (!((bool)RFAL_SUPPORT_MODE_POLL_NFCA))) || + (((disParams->techs2Find & RFAL_NFC_POLL_TECH_B) != 0U) && + (!((bool)RFAL_SUPPORT_MODE_POLL_NFCB))) || + (((disParams->techs2Find & RFAL_NFC_POLL_TECH_F) != 0U) && + (!((bool)RFAL_SUPPORT_MODE_POLL_NFCF))) || + (((disParams->techs2Find & RFAL_NFC_POLL_TECH_V) != 0U) && + (!((bool)RFAL_SUPPORT_MODE_POLL_NFCV))) || + (((disParams->techs2Find & RFAL_NFC_POLL_TECH_ST25TB) != 0U) && + (!((bool)RFAL_SUPPORT_MODE_POLL_NFCB))) || + (((disParams->techs2Find & RFAL_NFC_POLL_TECH_AP2P) != 0U) && + (!((bool)RFAL_SUPPORT_MODE_POLL_ACTIVE_P2P))) || + (((disParams->techs2Find & RFAL_NFC_LISTEN_TECH_A) != 0U) && + (!((bool)RFAL_SUPPORT_MODE_LISTEN_NFCA))) || + (((disParams->techs2Find & RFAL_NFC_LISTEN_TECH_B) != 0U) && + (!((bool)RFAL_SUPPORT_MODE_LISTEN_NFCB))) || + (((disParams->techs2Find & RFAL_NFC_LISTEN_TECH_F) != 0U) && + (!((bool)RFAL_SUPPORT_MODE_LISTEN_NFCF))) || + (((disParams->techs2Find & RFAL_NFC_LISTEN_TECH_AP2P) != 0U) && + (!((bool)RFAL_SUPPORT_MODE_LISTEN_ACTIVE_P2P)))) { + return RFAL_ERR_NOTSUPP; /* PRQA S 2880 # MISRA 2.1 - Unreachable code due + to configuration option being set/unset */ + } + + /* Initialize context for discovery */ + gNfcDev.activeDev = NULL; + gNfcDev.techsFound = RFAL_NFC_TECH_NONE; + gNfcDev.techDctCnt = 0; + gNfcDev.devCnt = 0; + gNfcDev.deactType = RFAL_NFC_DEACTIVATE_DISCOVERY; + gNfcDev.isTechInit = false; + gNfcDev.isFieldOn = false; + gNfcDev.isDeactivating = false; + gNfcDev.disc = *disParams; + + /* Calculate Listen Mask */ + gNfcDev.lmMask = 0U; + gNfcDev.lmMask |= (((gNfcDev.disc.techs2Find & RFAL_NFC_LISTEN_TECH_A) != 0U) + ? RFAL_LM_MASK_NFCA + : 0U); + gNfcDev.lmMask |= (((gNfcDev.disc.techs2Find & RFAL_NFC_LISTEN_TECH_B) != 0U) + ? RFAL_LM_MASK_NFCB + : 0U); + gNfcDev.lmMask |= (((gNfcDev.disc.techs2Find & RFAL_NFC_LISTEN_TECH_F) != 0U) + ? RFAL_LM_MASK_NFCF + : 0U); + gNfcDev.lmMask |= + (((gNfcDev.disc.techs2Find & RFAL_NFC_LISTEN_TECH_AP2P) != 0U) + ? RFAL_LM_MASK_ACTIVE_P2P + : 0U); + +#if !RFAL_FEATURE_LISTEN_MODE + /* Check if Listen Mode is supported/Enabled */ + if (gNfcDev.lmMask != 0U) { + return RFAL_ERR_DISABLED; + } +#endif + + gNfcDev.state = RFAL_NFC_STATE_START_DISCOVERY; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDeactivate(rfalNfcDeactivateType deactType) { + ReturnCode ret; + + /* Check for valid state */ + if ((gNfcDev.state <= RFAL_NFC_STATE_IDLE) || + ((deactType == RFAL_NFC_DEACTIVATE_SLEEP) && + ((gNfcDev.state < RFAL_NFC_STATE_ACTIVATED) || + (gNfcDev.activeDev == NULL)))) { + return RFAL_ERR_WRONG_STATE; + } + + /* Check valid paramters for the deactivation types */ + if (((deactType == RFAL_NFC_DEACTIVATE_SLEEP) && + rfalNfcIsRemDevPoller(gNfcDev.activeDev->type)) || + ((deactType == RFAL_NFC_DEACTIVATE_DISCOVERY) && + (gNfcDev.disc.techs2Find == RFAL_NFC_TECH_NONE))) { + return RFAL_ERR_PARAM; + } + + gNfcDev.deactType = deactType; + + /* Check if Discovery is to continue afterwards or back to Select */ + if ((deactType == RFAL_NFC_DEACTIVATE_DISCOVERY) || + (deactType == RFAL_NFC_DEACTIVATE_SLEEP)) { + /* If so let the state machine continue*/ + gNfcDev.state = RFAL_NFC_STATE_DEACTIVATION; + } else { + /* Otherwise deactivate immediately and go to IDLE */ + rfalRunBlocking(ret, rfalNfcDeactivation()); + gNfcDev.state = RFAL_NFC_STATE_IDLE; + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcSelect(uint8_t devIdx) { + /* Check for valid state */ + if (gNfcDev.state != RFAL_NFC_STATE_POLL_SELECT) { + return RFAL_ERR_WRONG_STATE; + } + + gNfcDev.isTechInit = false; + gNfcDev.selDevIdx = devIdx; + gNfcDev.state = RFAL_NFC_STATE_POLL_ACTIVATION; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +rfalNfcState rfalNfcGetState(void) { return gNfcDev.state; } + +/*******************************************************************************/ +ReturnCode rfalNfcGetDevicesFound(rfalNfcDevice **devList, uint8_t *devCnt) { + /* Check for valid state */ + if (gNfcDev.state < RFAL_NFC_STATE_POLL_SELECT) { + return RFAL_ERR_WRONG_STATE; + } + + /* Check valid parameters */ + if ((devList == NULL) || (devCnt == NULL)) { + return RFAL_ERR_PARAM; + } + + *devCnt = gNfcDev.devCnt; + *devList = gNfcDev.devList; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcGetActiveDevice(rfalNfcDevice **dev) { + /* Check for valid state */ + if (gNfcDev.state < RFAL_NFC_STATE_ACTIVATED) { + return RFAL_ERR_WRONG_STATE; + } + + /* Check valid parameter */ + if (dev == NULL) { + return RFAL_ERR_PARAM; + } + + /* Check for valid state */ + if ((gNfcDev.devCnt == 0U) || (gNfcDev.activeDev == NULL)) { + return RFAL_ERR_REQUEST; + } + + *dev = gNfcDev.activeDev; + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +void rfalNfcWorker(void) { + ReturnCode err; + + rfalWorker(); /* Execute RFAL process */ + + switch (gNfcDev.state) { + /*******************************************************************************/ + case RFAL_NFC_STATE_NOTINIT: + case RFAL_NFC_STATE_IDLE: + break; + + /*******************************************************************************/ + case RFAL_NFC_STATE_START_DISCOVERY: + + /* Initialize context for discovery cycle */ + gNfcDev.devCnt = 0; + gNfcDev.selDevIdx = 0; + RFAL_MEMSET(gNfcDev.devList, 0x00, sizeof(gNfcDev.devList)); + gNfcDev.techsFound = RFAL_NFC_TECH_NONE; + gNfcDev.techs2do = gNfcDev.disc.techs2Find; + gNfcDev.state = RFAL_NFC_STATE_POLL_TECHDETECT; + gNfcDev.isDeactivating = false; + + /* Start total duration timer */ + platformTimerDestroy(gNfcDev.discTmr); + gNfcDev.discTmr = + (uint32_t)platformTimerCreate(gNfcDev.disc.totalDuration); + +#if RFAL_FEATURE_WAKEUP_MODE + /* Check if Low power Wake-Up is to be performed */ + if ((gNfcDev.disc.wakeupEnabled) && + (((gNfcDev.techDctCnt == 0U) && + (gNfcDev.disc.wakeupPollBefore == false)) || + (gNfcDev.techDctCnt >= gNfcDev.disc.wakeupNPolls))) { + /* Initialize Low power Wake-up mode and wait */ + err = rfalWakeUpModeStart((gNfcDev.disc.wakeupConfigDefault + ? NULL + : &gNfcDev.disc.wakeupConfig)); + if (err == RFAL_ERR_NONE) { + gNfcDev.state = RFAL_NFC_STATE_WAKEUP_MODE; + } + } + gNfcDev.techDctCnt++; + +#endif /* RFAL_FEATURE_WAKEUP_MODE */ + + rfalNfcNfcNotify(gNfcDev.state); /* Notify caller that WU or Technology + Detection has started */ + break; + + /*******************************************************************************/ + case RFAL_NFC_STATE_WAKEUP_MODE: + +#if RFAL_FEATURE_WAKEUP_MODE + /* Check if the Wake-up mode has woke */ + if (rfalWakeUpModeHasWoke()) { + rfalWakeUpModeStop(); /* Disable Wake-up mode */ + gNfcDev.state = + RFAL_NFC_STATE_POLL_TECHDETECT; /* Go to Technology detection */ + gNfcDev.techDctCnt = 1; /* Tech Detect counter (1 woke) */ + + /* (Re)Start total duration timer upon waking up */ + platformTimerDestroy(gNfcDev.discTmr); + gNfcDev.discTmr = + (uint32_t)platformTimerCreate(gNfcDev.disc.totalDuration); + + rfalNfcNfcNotify(gNfcDev.state); /* Notify caller that WU has woke */ + } +#endif /* RFAL_FEATURE_WAKEUP_MODE */ + + break; + + /*******************************************************************************/ + case RFAL_NFC_STATE_POLL_TECHDETECT: + + err = rfalNfcPollTechDetection(); /* Perform Technology Detection */ + if (err != RFAL_ERR_BUSY) /* Wait until all technologies are performed */ + { + if ((err != RFAL_ERR_NONE) || + (gNfcDev.techsFound == + RFAL_NFC_TECH_NONE)) /* Check if any error occurred or no techs + were found */ + { + rfalFieldOff(); + gNfcDev.isFieldOn = false; + gNfcDev.state = + RFAL_NFC_STATE_LISTEN_TECHDETECT; /* Nothing found as poller, go + to listener */ + break; + } + + gNfcDev.techs2do = gNfcDev.techsFound; /* Store the found technologies + for collision resolution */ + gNfcDev.state = + RFAL_NFC_STATE_POLL_COLAVOIDANCE; /* One or more devices found, go + to Collision Avoidance */ + } + break; + + /*******************************************************************************/ + case RFAL_NFC_STATE_POLL_COLAVOIDANCE: + + err = rfalNfcPollCollResolution(); /* Resolve any eventual collision */ + if (err != RFAL_ERR_BUSY) /* Wait until all technologies are performed */ + { + if ((err != RFAL_ERR_NONE) || + (gNfcDev.devCnt == + 0U)) /* Check if any error occurred or no devices were found */ + { + gNfcDev.deactType = RFAL_NFC_DEACTIVATE_DISCOVERY; + gNfcDev.state = RFAL_NFC_STATE_DEACTIVATION; + break; /* Unable to retrieve any device, restart loop */ + } + + /* Check if more than one device has been found */ + if (gNfcDev.devCnt > 1U) { + /* If more than one device was found inform upper layer to choose + * which one to activate */ + if (gNfcDev.disc.notifyCb != NULL) { + gNfcDev.state = RFAL_NFC_STATE_POLL_SELECT; + gNfcDev.disc.notifyCb(gNfcDev.state); + break; + } + } + + /* If only one device or no callback has been set, activate the first + * device found */ + gNfcDev.selDevIdx = 0U; + gNfcDev.state = RFAL_NFC_STATE_POLL_ACTIVATION; + } + break; + + /*******************************************************************************/ + case RFAL_NFC_STATE_POLL_ACTIVATION: + + err = rfalNfcPollActivation(gNfcDev.selDevIdx); + if (err != RFAL_ERR_BUSY) /* Wait until all Activation is complete */ + { + if (err != RFAL_ERR_NONE) /* Check if activation has failed */ + { + /* Check if more than one device has been found */ + if ((gNfcDev.devCnt > 1U) && (gNfcDev.disc.notifyCb != NULL)) { + gNfcDev.state = RFAL_NFC_STATE_POLL_SELECT; + rfalNfcNfcNotify(gNfcDev.state); + break; + } + + gNfcDev.deactType = + RFAL_NFC_DEACTIVATE_DISCOVERY; /* Ensure deactivation, not Sleep + */ + gNfcDev.state = RFAL_NFC_STATE_DEACTIVATION; /* If Activation failed, + restart loop */ + break; + } + + gNfcDev.state = + RFAL_NFC_STATE_ACTIVATED; /* Device has been properly activated */ + rfalNfcNfcNotify(gNfcDev.state); /* Inform upper layer that a device has + been activated */ + } + break; + + /*******************************************************************************/ + case RFAL_NFC_STATE_DATAEXCHANGE: + + rfalNfcDataExchangeGetStatus(); /* Run the internal state machine */ + + if (gNfcDev.dataExErr != + RFAL_ERR_BUSY) /* If Dataexchange has terminated */ + { + gNfcDev.state = RFAL_NFC_STATE_DATAEXCHANGE_DONE; /* Go to done state */ + rfalNfcNfcNotify(gNfcDev.state); /* And notify caller */ + } + if (gNfcDev.dataExErr == + RFAL_ERR_SLEEP_REQ) /* Check if Listen mode has to go to Sleep */ + { + gNfcDev.state = + RFAL_NFC_STATE_LISTEN_SLEEP; /* Go to Listen Sleep state */ + rfalNfcNfcNotify(gNfcDev.state); /* And notify caller */ + } + break; + + /*******************************************************************************/ + case RFAL_NFC_STATE_DEACTIVATION: + + err = rfalNfcDeactivation(); /* Deactivate current device */ + if (err != RFAL_ERR_BUSY) { + if (gNfcDev.deactType == RFAL_NFC_DEACTIVATE_SLEEP) { + gNfcDev.state = RFAL_NFC_STATE_POLL_SELECT; + } else { + gNfcDev.state = ((gNfcDev.deactType == RFAL_NFC_DEACTIVATE_DISCOVERY) + ? RFAL_NFC_STATE_START_DISCOVERY + : RFAL_NFC_STATE_IDLE); + } + + rfalNfcNfcNotify(gNfcDev.state); /* Notify caller */ + } + break; + + /*******************************************************************************/ + case RFAL_NFC_STATE_LISTEN_TECHDETECT: + + if (platformTimerIsExpired(gNfcDev.discTmr)) { +#if RFAL_FEATURE_LISTEN_MODE + rfalListenStop(); +#else + rfalFieldOff(); +#endif /* RFAL_FEATURE_LISTEN_MODE */ + gNfcDev.isFieldOn = false; + + gNfcDev.state = + RFAL_NFC_STATE_START_DISCOVERY; /* Restart the discovery loop */ + rfalNfcNfcNotify(gNfcDev.state); /* Notify caller */ + break; + } + +#if RFAL_FEATURE_LISTEN_MODE + + if (gNfcDev.lmMask != 0U) /* Check if configured to perform Listen mode */ + { + err = rfalListenStart( + gNfcDev.lmMask, &gNfcDev.disc.lmConfigPA, NULL, + &gNfcDev.disc.lmConfigPF, (uint8_t *)&gNfcDev.rxBuf.rfBuf, + (uint16_t)rfalConvBytesToBits(sizeof(gNfcDev.rxBuf.rfBuf)), + &gNfcDev.rxLen); + if (err == RFAL_ERR_NONE) { + gNfcDev.state = + RFAL_NFC_STATE_LISTEN_COLAVOIDANCE; /* Wait for listen mode to be + activated */ + } + } + break; + + /*******************************************************************************/ + case RFAL_NFC_STATE_LISTEN_COLAVOIDANCE: + + if (platformTimerIsExpired( + gNfcDev + .discTmr)) /* Check if the total duration has been reached */ + { + rfalListenStop(); + gNfcDev.state = + RFAL_NFC_STATE_START_DISCOVERY; /* Restart the discovery loop */ + rfalNfcNfcNotify(gNfcDev.state); /* Notify caller */ + break; + } + + /* Check for external field */ + if (rfalListenGetState(NULL, NULL) >= RFAL_LM_STATE_IDLE) { + gNfcDev.state = + RFAL_NFC_STATE_LISTEN_ACTIVATION; /* Wait for listen mode to be + activated */ + } + break; + + /*******************************************************************************/ + case RFAL_NFC_STATE_LISTEN_ACTIVATION: + case RFAL_NFC_STATE_LISTEN_SLEEP: + + err = rfalNfcListenActivation(); + if (err != RFAL_ERR_BUSY) { + if (err == RFAL_ERR_NONE) { + gNfcDev.activeDev = + gNfcDev + .devList; /* Assign the active device to be used further on */ + gNfcDev.devCnt++; + + gNfcDev.state = + RFAL_NFC_STATE_ACTIVATED; /* Device has been properly activated */ + rfalNfcNfcNotify(gNfcDev.state); /* Inform upper layer that a device + has been activated */ + } else if ((!platformTimerIsExpired(gNfcDev.discTmr)) && + (err == RFAL_ERR_LINK_LOSS) && + (gNfcDev.state == RFAL_NFC_STATE_LISTEN_ACTIVATION)) { + break; /* Field|Link broken during activation, keep in Listen the + remaining total duration */ + } else { + rfalListenStop(); + gNfcDev.state = + RFAL_NFC_STATE_START_DISCOVERY; /* Restart the discovery loop */ + rfalNfcNfcNotify(gNfcDev.state); /* Notify caller */ + } + } +#endif /* RFAL_FEATURE_LISTEN_MODE */ + break; + + /*******************************************************************************/ + case RFAL_NFC_STATE_ACTIVATED: + case RFAL_NFC_STATE_POLL_SELECT: + case RFAL_NFC_STATE_DATAEXCHANGE_DONE: + default: + return; + } +} + +/*******************************************************************************/ +ReturnCode rfalNfcDataExchangeStart(uint8_t *txData, uint16_t txDataLen, + uint8_t **rxData, uint16_t **rvdLen, + uint32_t fwt) { + ReturnCode err; + rfalTransceiveContext ctx; + + /*******************************************************************************/ + /* The Data Exchange is divided in two different moments, the trigger/Start of + * * the transfer followed by the check until its completion */ + if ((gNfcDev.state >= RFAL_NFC_STATE_ACTIVATED) && + (gNfcDev.activeDev != NULL)) { + /*******************************************************************************/ + /* In Listen mode is the Poller that initiates the communicatation */ + /* Assign output parameters and rfalNfcDataExchangeGetStatus will return */ + /* incoming data from Poller/Initiator */ + if ((gNfcDev.state == RFAL_NFC_STATE_ACTIVATED) && + rfalNfcIsRemDevPoller(gNfcDev.activeDev->type)) { + if (txDataLen > 0U) { + return RFAL_ERR_WRONG_STATE; + } + + *rvdLen = (uint16_t *)&gNfcDev.rxLen; + *rxData = (uint8_t *)((gNfcDev.activeDev->rfInterface == + RFAL_NFC_INTERFACE_ISODEP) + ? gNfcDev.rxBuf.isoDepBuf.apdu + : ((gNfcDev.activeDev->rfInterface == + RFAL_NFC_INTERFACE_NFCDEP) + ? gNfcDev.rxBuf.nfcDepBuf.pdu + : gNfcDev.rxBuf.rfBuf)); + return RFAL_ERR_NONE; + } + + /*******************************************************************************/ + switch (gNfcDev.activeDev->rfInterface) /* Check which RF interface shall be + used/has been activated */ + { + /*******************************************************************************/ + case RFAL_NFC_INTERFACE_RF: + + rfalCreateByteFlagsTxRxContext( + ctx, (uint8_t *)txData, txDataLen, gNfcDev.rxBuf.rfBuf, + sizeof(gNfcDev.rxBuf.rfBuf), &gNfcDev.rxLen, + RFAL_TXRX_FLAGS_DEFAULT, fwt); + ctx.txBufLen = txDataLen; /* RF interface uses number of bits */ + + *rxData = (uint8_t *)gNfcDev.rxBuf.rfBuf; + *rvdLen = (uint16_t *)&gNfcDev.rxLen; + err = rfalStartTransceive(&ctx); + break; + +#if RFAL_FEATURE_ISO_DEP + /*******************************************************************************/ + case RFAL_NFC_INTERFACE_ISODEP: { + rfalIsoDepApduTxRxParam rfalIsoDepTxRx; + + if (txDataLen > sizeof(gNfcDev.txBuf.isoDepBuf.apdu)) { + return RFAL_ERR_NOMEM; + } + + if (txDataLen > 0U) { + RFAL_MEMCPY((uint8_t *)gNfcDev.txBuf.isoDepBuf.apdu, txData, + txDataLen); + } + + rfalIsoDepTxRx.DID = RFAL_ISODEP_NO_DID; + rfalIsoDepTxRx.ourFSx = RFAL_ISODEP_FSX_KEEP; + rfalIsoDepTxRx.FSx = gNfcDev.activeDev->proto.isoDep.info.FSx; + rfalIsoDepTxRx.dFWT = gNfcDev.activeDev->proto.isoDep.info.dFWT; + rfalIsoDepTxRx.FWT = gNfcDev.activeDev->proto.isoDep.info.FWT; + rfalIsoDepTxRx.txBuf = &gNfcDev.txBuf.isoDepBuf; + rfalIsoDepTxRx.txBufLen = txDataLen; + rfalIsoDepTxRx.rxBuf = &gNfcDev.rxBuf.isoDepBuf; + rfalIsoDepTxRx.rxLen = &gNfcDev.rxLen; + rfalIsoDepTxRx.tmpBuf = &gNfcDev.tmpBuf.isoDepBuf; + *rxData = (uint8_t *)gNfcDev.rxBuf.isoDepBuf.apdu; + *rvdLen = (uint16_t *)&gNfcDev.rxLen; + + /*******************************************************************************/ + /* Trigger a RFAL ISO-DEP Transceive */ + err = rfalIsoDepStartApduTransceive(rfalIsoDepTxRx); + break; + } +#endif /* RFAL_FEATURE_ISO_DEP */ + +#if RFAL_FEATURE_NFC_DEP + /*******************************************************************************/ + case RFAL_NFC_INTERFACE_NFCDEP: { + rfalNfcDepPduTxRxParam rfalNfcDepTxRx; + + if (txDataLen > sizeof(gNfcDev.txBuf.nfcDepBuf.pdu)) { + return RFAL_ERR_NOMEM; + } + + if (txDataLen > 0U) { + RFAL_MEMCPY((uint8_t *)gNfcDev.txBuf.nfcDepBuf.pdu, txData, + txDataLen); + } + + rfalNfcDepTxRx.DID = RFAL_NFCDEP_DID_KEEP; + rfalNfcDepTxRx.FSx = rfalNfcIsRemDevListener(gNfcDev.activeDev->type) + ? rfalNfcDepLR2FS((uint8_t)rfalNfcDepPP2LR( + gNfcDev.activeDev->proto.nfcDep + .activation.Target.ATR_RES.PPt)) + : rfalNfcDepLR2FS((uint8_t)rfalNfcDepPP2LR( + gNfcDev.activeDev->proto.nfcDep + .activation.Initiator.ATR_REQ.PPi)); + rfalNfcDepTxRx.dFWT = gNfcDev.activeDev->proto.nfcDep.info.dFWT; + rfalNfcDepTxRx.FWT = gNfcDev.activeDev->proto.nfcDep.info.FWT; + rfalNfcDepTxRx.txBuf = &gNfcDev.txBuf.nfcDepBuf; + rfalNfcDepTxRx.txBufLen = txDataLen; + rfalNfcDepTxRx.rxBuf = &gNfcDev.rxBuf.nfcDepBuf; + rfalNfcDepTxRx.rxLen = &gNfcDev.rxLen; + rfalNfcDepTxRx.tmpBuf = &gNfcDev.tmpBuf.nfcDepBuf; + *rxData = (uint8_t *)gNfcDev.rxBuf.nfcDepBuf.pdu; + *rvdLen = (uint16_t *)&gNfcDev.rxLen; + + /*******************************************************************************/ + /* Trigger a RFAL NFC-DEP Transceive */ + err = rfalNfcDepStartPduTransceive(rfalNfcDepTxRx); + break; + } +#endif /* RFAL_FEATURE_NFC_DEP */ + + /*******************************************************************************/ + default: + err = RFAL_ERR_PARAM; + break; + } + + /* If a transceive has succesfully started flag Data Exchange as ongoing */ + if (err == RFAL_ERR_NONE) { + gNfcDev.dataExErr = RFAL_ERR_BUSY; + gNfcDev.state = RFAL_NFC_STATE_DATAEXCHANGE; + } + + return err; + } + + return RFAL_ERR_WRONG_STATE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDataExchangeGetStatus(void) { + /*******************************************************************************/ + /* Check if it's the first frame received in Listen mode */ + if (gNfcDev.state == RFAL_NFC_STATE_ACTIVATED) { + /* Continue data exchange as normal */ + gNfcDev.dataExErr = RFAL_ERR_BUSY; + gNfcDev.state = RFAL_NFC_STATE_DATAEXCHANGE; + + /* Check if we performing in T3T CE */ + if ((gNfcDev.activeDev->type == RFAL_NFC_POLL_TYPE_NFCF) && + (gNfcDev.activeDev->rfInterface == RFAL_NFC_INTERFACE_RF)) { + /* The first frame has been retrieved by rfalListenMode, flag data + * immediately */ + /* Can only call rfalGetTransceiveStatus() after starting a transceive + * with rfalStartTransceive */ + gNfcDev.dataExErr = RFAL_ERR_NONE; + } + } + + /*******************************************************************************/ + /* Check if we are in we have been placed to sleep, and return last error */ + if (gNfcDev.state == RFAL_NFC_STATE_LISTEN_SLEEP) { + return gNfcDev.dataExErr; /* RFAL_ERR_SLEEP_REQ */ + } + + /*******************************************************************************/ + /* Check if Data exchange has been started */ + if ((gNfcDev.state != RFAL_NFC_STATE_DATAEXCHANGE) && + (gNfcDev.state != RFAL_NFC_STATE_DATAEXCHANGE_DONE)) { + return RFAL_ERR_WRONG_STATE; + } + + /* Check if Data exchange is still ongoing */ + if (gNfcDev.dataExErr == RFAL_ERR_BUSY) { + switch (gNfcDev.activeDev->rfInterface) { + /*******************************************************************************/ + case RFAL_NFC_INTERFACE_RF: + gNfcDev.dataExErr = rfalGetTransceiveStatus(); + break; + +#if RFAL_FEATURE_ISO_DEP + /*******************************************************************************/ + case RFAL_NFC_INTERFACE_ISODEP: + gNfcDev.dataExErr = rfalIsoDepGetApduTransceiveStatus(); + break; +#endif /* RFAL_FEATURE_ISO_DEP */ + + /*******************************************************************************/ +#if RFAL_FEATURE_NFC_DEP + case RFAL_NFC_INTERFACE_NFCDEP: + gNfcDev.dataExErr = rfalNfcDepGetPduTransceiveStatus(); + break; +#endif /* RFAL_FEATURE_NFC_DEP */ + + /*******************************************************************************/ + default: + gNfcDev.dataExErr = RFAL_ERR_PARAM; + break; + } + +#if RFAL_FEATURE_LISTEN_MODE + /*******************************************************************************/ + /* If a Sleep request has been received (Listen Mode) go to sleep + * immediately */ + if (gNfcDev.dataExErr == RFAL_ERR_SLEEP_REQ) { + RFAL_EXIT_ON_ERR( + gNfcDev.dataExErr, + rfalListenSleepStart(RFAL_LM_STATE_SLEEP_A, gNfcDev.rxBuf.rfBuf, + sizeof(gNfcDev.rxBuf.rfBuf), &gNfcDev.rxLen)); + + /* If set Sleep was succesfull keep restore the Sleep request signal */ + gNfcDev.dataExErr = RFAL_ERR_SLEEP_REQ; + } +#endif /* RFAL_FEATURE_LISTEN_MODE */ + } + + return gNfcDev.dataExErr; +} + +/*! + ****************************************************************************** + * \brief Poller Technology Detection + * + * This method implements the Technology Detection / Poll for different + * device technologies. + * + * \return RFAL_ERR_NONE : Operation completed with no error + * \return RFAL_ERR_BUSY : Operation ongoing + * \return RFAL_ERR_XXXX : Error occurred + * + ****************************************************************************** + */ +static ReturnCode rfalNfcPollTechDetection(void) { + ReturnCode err; + + err = RFAL_ERR_NONE; + + /* Suppress warning when specific RFAL features have been disabled */ + RFAL_NO_WARNING(err); + + /*******************************************************************************/ + /* AP2P Technology Detection */ + /*******************************************************************************/ + if (((gNfcDev.disc.techs2Find & RFAL_NFC_POLL_TECH_AP2P) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_AP2P) != 0U)) { +#if RFAL_FEATURE_NFC_DEP + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR( + err, rfalSetMode(RFAL_MODE_POLL_ACTIVE_P2P, gNfcDev.disc.ap2pBR, + gNfcDev.disc.ap2pBR)); + rfalSetErrorHandling(RFAL_ERRORHANDLING_NONE); + rfalSetFDTListen(RFAL_FDT_LISTEN_AP2P_POLLER); + rfalSetFDTPoll(RFAL_FDT_POLL_AP2P_POLLER); + rfalSetGT(RFAL_GT_AP2P_ADJUSTED); + RFAL_EXIT_ON_ERR( + err, + rfalFieldOnAndStartGT()); /* Turns the Field On and starts GT timer */ + gNfcDev.isTechInit = true; + } + + if (rfalIsGTExpired()) /* Wait until Guard Time is fulfilled */ + { + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_AP2P; + + err = rfalNfcNfcDepActivate(gNfcDev.devList, RFAL_NFCDEP_COMM_ACTIVE, + NULL, 0); /* Poll for AP2P devices */ + if (err == RFAL_ERR_NONE) { + gNfcDev.techsFound |= RFAL_NFC_POLL_TECH_AP2P; + + gNfcDev.devList->type = RFAL_NFC_LISTEN_TYPE_AP2P; + gNfcDev.devList->rfInterface = RFAL_NFC_INTERFACE_NFCDEP; + gNfcDev.devCnt++; + + return RFAL_ERR_NONE; + } + + gNfcDev.isTechInit = false; + rfalFieldOff(); + } + return RFAL_ERR_BUSY; + +#endif /* RFAL_FEATURE_NFC_DEP */ + } + + /*******************************************************************************/ + /* Turn Field On if Passive Poll technologies are enabled */ + /*******************************************************************************/ + if ((!gNfcDev.isFieldOn) && + ((gNfcDev.disc.techs2Find & + (RFAL_NFC_POLL_TECH_A | RFAL_NFC_POLL_TECH_B | RFAL_NFC_POLL_TECH_F | + RFAL_NFC_POLL_TECH_V | RFAL_NFC_POLL_TECH_ST25TB | + RFAL_NFC_POLL_TECH_PROP)) != 0U)) { + RFAL_EXIT_ON_ERR(err, rfalFieldOnAndStartGT()); /* Turns the Field On */ + gNfcDev.isFieldOn = true; + return RFAL_ERR_BUSY; + } + + /*******************************************************************************/ + /* Passive NFC-A Technology Detection */ + /*******************************************************************************/ + if (((gNfcDev.disc.techs2Find & RFAL_NFC_POLL_TECH_A) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_A) != 0U)) { +#if RFAL_FEATURE_NFCA + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR( + err, rfalNfcaPollerInitialize()); /* Initialize RFAL for NFC-A */ + RFAL_EXIT_ON_ERR(err, rfalFieldOnAndStartGT()); /* As field is already On + only starts GT timer */ + gNfcDev.isTechInit = true; + gNfcDev.isOperOngoing = false; /* No operation currently ongoing */ + } + + if (rfalIsGTExpired()) /* Wait until Guard Time is fulfilled */ + { + if (!gNfcDev.isOperOngoing) { + rfalNfcaPollerStartTechnologyDetection( + gNfcDev.disc.compMode, + &gNfcDev.sensRes); /* Poll for NFC-A devices */ + + gNfcDev.isOperOngoing = true; + return RFAL_ERR_BUSY; + } + + err = rfalNfcaPollerGetTechnologyDetectionStatus(); + if (err != RFAL_ERR_BUSY) { + if (err == RFAL_ERR_NONE) { + gNfcDev.techsFound |= RFAL_NFC_POLL_TECH_A; + } + + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_A; + } + + /* Check if bail-out after NFC-A Activity 2.1 9.2.3.21 */ + if (((gNfcDev.disc.techs2Bail & RFAL_NFC_POLL_TECH_A) != 0U) && + (gNfcDev.techsFound != 0U)) { + return RFAL_ERR_NONE; + } + } + + return RFAL_ERR_BUSY; + +#endif /* RFAL_FEATURE_NFCA */ + } + + /*******************************************************************************/ + /* Passive NFC-B Technology Detection */ + /*******************************************************************************/ + if (((gNfcDev.disc.techs2Find & RFAL_NFC_POLL_TECH_B) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_B) != 0U)) { +#if RFAL_FEATURE_NFCB + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR( + err, rfalNfcbPollerInitialize()); /* Initialize RFAL for NFC-B */ + RFAL_EXIT_ON_ERR(err, rfalFieldOnAndStartGT()); /* As field is already On + only starts GT timer */ + gNfcDev.isTechInit = true; + gNfcDev.isOperOngoing = false; /* No operation currently ongoing */ + } + + if (rfalIsGTExpired()) /* Wait until Guard Time is fulfilled */ + { + if (!gNfcDev.isOperOngoing) { + rfalNfcbPollerStartTechnologyDetection( + gNfcDev.disc.compMode, &gNfcDev.sensbRes, + &gNfcDev.sensbResLen); /* Poll for NFC-B devices */ + + gNfcDev.isOperOngoing = true; + return RFAL_ERR_BUSY; + } + + err = rfalNfcbPollerGetTechnologyDetectionStatus(); + if (err != RFAL_ERR_BUSY) { + if (err == RFAL_ERR_NONE) { + gNfcDev.techsFound |= RFAL_NFC_POLL_TECH_B; + } + + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_B; + } + + /* Check if bail-out after NFC-B Activity 2.1 9.2.3.26 */ + if (((gNfcDev.disc.techs2Bail & RFAL_NFC_POLL_TECH_B) != 0U) && + (gNfcDev.techsFound != 0U)) { + return RFAL_ERR_NONE; + } + } + + return RFAL_ERR_BUSY; + +#endif /* RFAL_FEATURE_NFCB */ + } + + /*******************************************************************************/ + /* Passive NFC-F Technology Detection */ + /*******************************************************************************/ + if (((gNfcDev.disc.techs2Find & RFAL_NFC_POLL_TECH_F) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_F) != 0U)) { +#if RFAL_FEATURE_NFCF + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR( + err, rfalNfcfPollerInitialize( + gNfcDev.disc.nfcfBR)); /* Initialize RFAL for NFC-F */ + RFAL_EXIT_ON_ERR(err, rfalFieldOnAndStartGT()); /* As field is already On + only starts GT timer */ + + gNfcDev.isTechInit = true; + gNfcDev.isOperOngoing = false; /* No operation currently ongoing */ + } + + if (rfalIsGTExpired()) /* Wait until Guard Time is fulfilled */ + { + if (!gNfcDev.isOperOngoing) { + rfalNfcfPollerStartCheckPresence(); + + gNfcDev.isOperOngoing = true; + return RFAL_ERR_BUSY; + } + + err = rfalNfcfPollerGetCheckPresenceStatus(); /* Poll for NFC-F devices */ + if (err != RFAL_ERR_BUSY) { + if (err == RFAL_ERR_NONE) { + gNfcDev.techsFound |= RFAL_NFC_POLL_TECH_F; + } + + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_F; + } + + /* Check if bail-out after NFC-F Activity 2.1 9.2.3.31 */ + if (((gNfcDev.disc.techs2Bail & RFAL_NFC_POLL_TECH_F) != 0U) && + (gNfcDev.techsFound != 0U)) { + return RFAL_ERR_NONE; + } + } + + return RFAL_ERR_BUSY; + +#endif /* RFAL_FEATURE_NFCF */ + } + + /*******************************************************************************/ + /* Passive NFC-V Technology Detection */ + /*******************************************************************************/ + if (((gNfcDev.disc.techs2Find & RFAL_NFC_POLL_TECH_V) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_V) != 0U)) { +#if RFAL_FEATURE_NFCV + + rfalNfcvInventoryRes invRes; + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR( + err, rfalNfcvPollerInitialize()); /* Initialize RFAL for NFC-V */ + RFAL_EXIT_ON_ERR(err, rfalFieldOnAndStartGT()); /* As field is already On + only starts GT timer */ + gNfcDev.isTechInit = true; + } + + if (rfalIsGTExpired()) /* Wait until Guard Time is fulfilled */ + { + err = rfalNfcvPollerCheckPresence(&invRes); /* Poll for NFC-V devices */ + if (err == RFAL_ERR_NONE) { + gNfcDev.techsFound |= RFAL_NFC_POLL_TECH_V; + } + + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_V; + } + + return RFAL_ERR_BUSY; + +#endif /* RFAL_FEATURE_NFCV */ + } + + /*******************************************************************************/ + /* Passive Proprietary Technology ST25TB */ + /*******************************************************************************/ + if (((gNfcDev.disc.techs2Find & RFAL_NFC_POLL_TECH_ST25TB) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_ST25TB) != 0U)) { +#if RFAL_FEATURE_ST25TB + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR( + err, rfalSt25tbPollerInitialize()); /* Initialize RFAL for NFC-V */ + RFAL_EXIT_ON_ERR(err, rfalFieldOnAndStartGT()); /* As field is already On + only starts GT timer */ + gNfcDev.isTechInit = true; + } + + if (rfalIsGTExpired()) /* Wait until Guard Time is fulfilled */ + { + err = rfalSt25tbPollerCheckPresence(NULL); /* Poll for ST25TB devices */ + if (err == RFAL_ERR_NONE) { + gNfcDev.techsFound |= RFAL_NFC_POLL_TECH_ST25TB; + } + + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_ST25TB; + } + + return RFAL_ERR_BUSY; + +#endif /* RFAL_FEATURE_ST25TB */ + } + + /*******************************************************************************/ + /* Passive Proprietary Technology */ + /*******************************************************************************/ + if (((gNfcDev.disc.techs2Find & RFAL_NFC_POLL_TECH_PROP) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_PROP) != 0U)) { + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR(err, + rfalNfcpCbPollerInitialize()); /* Initialize RFAL for + Proprietary NFC */ + RFAL_EXIT_ON_ERR(err, + rfalFieldOnAndStartGT()); /* As field may already be On + only starts GT timer */ + gNfcDev.isTechInit = true; + } + + if (rfalIsGTExpired()) /* Wait until Guard Time is fulfilled */ + { + err = rfalNfcpCbPollerTechnologyDetection(); /* Poll for devices */ + if (err == RFAL_ERR_NONE) { + gNfcDev.techsFound |= RFAL_NFC_POLL_TECH_PROP; + } + + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_PROP; + } + + return RFAL_ERR_BUSY; + } + + return RFAL_ERR_NONE; +} + +/*! + ****************************************************************************** + * \brief Poller Collision Resolution + * + * This method implements the Collision Resolution on all technologies that + * have been detected before. + * + * \return RFAL_ERR_NONE : Operation completed with no error + * \return RFAL_ERR_BUSY : Operation ongoing + * \return RFAL_ERR_XXXX : Error occurred + * + ****************************************************************************** + */ +static ReturnCode rfalNfcPollCollResolution(void) { + uint8_t i; + static uint8_t devCnt; + ReturnCode err; + + err = RFAL_ERR_NONE; + i = 0; + + /* Suppress warning when specific RFAL features have been disabled */ + RFAL_NO_WARNING(err); + RFAL_NO_WARNING(devCnt); + RFAL_NO_WARNING(i); + + /* Check if device limit has been reached */ + if (gNfcDev.devCnt >= gNfcDev.disc.devLimit) { + return RFAL_ERR_NONE; + } + + /*******************************************************************************/ + /* NFC-A Collision Resolution */ + /*******************************************************************************/ +#if RFAL_FEATURE_NFCA + if (((gNfcDev.techsFound & RFAL_NFC_POLL_TECH_A) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_A) != + 0U)) /* If a NFC-A device was found/detected, perform Collision + Resolution */ + { + static rfalNfcaListenDevice nfcaDevList[RFAL_NFC_MAX_DEVICES]; + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR( + err, rfalNfcaPollerInitialize()); /* Initialize RFAL for NFC-A */ + RFAL_EXIT_ON_ERR( + err, + rfalFieldOnAndStartGT()); /* Turns the Field On and starts GT timer */ + + gNfcDev.isTechInit = true; /* Technology has been initialized */ + gNfcDev.isOperOngoing = false; /* No operation currently ongoing */ + } + + if (!rfalIsGTExpired()) { + return RFAL_ERR_BUSY; + } + + if (!gNfcDev.isOperOngoing) { + RFAL_EXIT_ON_ERR(err, rfalNfcaPollerStartFullCollisionResolution( + gNfcDev.disc.compMode, + (gNfcDev.disc.devLimit - gNfcDev.devCnt), + nfcaDevList, &devCnt)); + + gNfcDev.isOperOngoing = true; + return RFAL_ERR_BUSY; + } + + err = rfalNfcaPollerGetFullCollisionResolutionStatus(); + if (err != RFAL_ERR_BUSY) { + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_A; + + if ((err == RFAL_ERR_NONE) && (devCnt != 0U)) { + for (i = 0; i < devCnt; i++) /* Copy devices found form local Nfca list + into global device list */ + { + gNfcDev.devList[gNfcDev.devCnt].type = RFAL_NFC_LISTEN_TYPE_NFCA; + gNfcDev.devList[gNfcDev.devCnt].dev.nfca = nfcaDevList[i]; + gNfcDev.devCnt++; + } + } + } + + return RFAL_ERR_BUSY; + } +#endif /* RFAL_FEATURE_NFCA */ + + /*******************************************************************************/ + /* NFC-B Collision Resolution */ + /*******************************************************************************/ +#if RFAL_FEATURE_NFCB + if (((gNfcDev.techsFound & RFAL_NFC_POLL_TECH_B) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_B) != + 0U)) /* If a NFC-B device was found/detected, perform Collision + Resolution */ + { + static rfalNfcbListenDevice nfcbDevList[RFAL_NFC_MAX_DEVICES]; + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR( + err, rfalNfcbPollerInitialize()); /* Initialize RFAL for NFC-B */ + RFAL_EXIT_ON_ERR( + err, + rfalFieldOnAndStartGT()); /* Ensure GT again as other technologies + have also been polled */ + + gNfcDev.isTechInit = true; + gNfcDev.isOperOngoing = false; /* No operation currently ongoing */ + } + + if (!rfalIsGTExpired()) { + return RFAL_ERR_BUSY; + } + + if (!gNfcDev.isOperOngoing) { + RFAL_EXIT_ON_ERR(err, rfalNfcbPollerStartCollisionResolution( + gNfcDev.disc.compMode, + (gNfcDev.disc.devLimit - gNfcDev.devCnt), + nfcbDevList, &devCnt)); + + gNfcDev.isOperOngoing = true; + return RFAL_ERR_BUSY; + } + + err = rfalNfcbPollerGetCollisionResolutionStatus(); + if (err != RFAL_ERR_BUSY) { + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_B; + + if ((err == RFAL_ERR_NONE) && (devCnt != 0U)) { + for (i = 0; i < devCnt; i++) /* Copy devices found form local Nfcb list + into global device list */ + { + gNfcDev.devList[gNfcDev.devCnt].type = RFAL_NFC_LISTEN_TYPE_NFCB; + gNfcDev.devList[gNfcDev.devCnt].dev.nfcb = nfcbDevList[i]; + gNfcDev.devCnt++; + } + } + } + + return RFAL_ERR_BUSY; + } +#endif /* RFAL_FEATURE_NFCB*/ + + /*******************************************************************************/ + /* NFC-F Collision Resolution */ + /*******************************************************************************/ +#if RFAL_FEATURE_NFCF + if (((gNfcDev.techsFound & RFAL_NFC_POLL_TECH_F) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_F) != + 0U)) /* If a NFC-F device was found/detected, perform Collision + Resolution */ + { + static rfalNfcfListenDevice nfcfDevList[RFAL_NFC_MAX_DEVICES]; + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR( + err, rfalNfcfPollerInitialize( + gNfcDev.disc.nfcfBR)); /* Initialize RFAL for NFC-F */ + RFAL_EXIT_ON_ERR( + err, + rfalFieldOnAndStartGT()); /* Ensure GT again as other technologies + have also been polled */ + + gNfcDev.isTechInit = true; + gNfcDev.isOperOngoing = false; /* No operation currently ongoing */ + } + + if (!rfalIsGTExpired()) { + return RFAL_ERR_BUSY; + } + + if (!gNfcDev.isOperOngoing) { + RFAL_EXIT_ON_ERR(err, rfalNfcfPollerStartCollisionResolution( + gNfcDev.disc.compMode, + (gNfcDev.disc.devLimit - gNfcDev.devCnt), + nfcfDevList, &devCnt)); + + gNfcDev.isOperOngoing = true; + return RFAL_ERR_BUSY; + } + + err = rfalNfcfPollerGetCollisionResolutionStatus(); + if (err != RFAL_ERR_BUSY) { + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_F; + + if ((err == RFAL_ERR_NONE) && (devCnt != 0U)) { + for (i = 0; i < devCnt; i++) /* Copy devices found form local Nfcf list + into global device list */ + { + gNfcDev.devList[gNfcDev.devCnt].type = RFAL_NFC_LISTEN_TYPE_NFCF; + gNfcDev.devList[gNfcDev.devCnt].dev.nfcf = nfcfDevList[i]; + gNfcDev.devCnt++; + } + } + } + + return RFAL_ERR_BUSY; + } +#endif /* RFAL_FEATURE_NFCF */ + + /*******************************************************************************/ + /* NFC-V Collision Resolution */ + /*******************************************************************************/ +#if RFAL_FEATURE_NFCV + if (((gNfcDev.techsFound & RFAL_NFC_POLL_TECH_V) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_V) != + 0U)) /* If a NFC-V device was found/detected, perform Collision + Resolution */ + { + rfalNfcvListenDevice nfcvDevList[RFAL_NFC_MAX_DEVICES]; + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR( + err, rfalNfcvPollerInitialize()); /* Initialize RFAL for NFC-V */ + RFAL_EXIT_ON_ERR( + err, + rfalFieldOnAndStartGT()); /* Ensure GT again as other technologies + have also been polled */ + gNfcDev.isTechInit = true; + } + + if (!rfalIsGTExpired()) { + return RFAL_ERR_BUSY; + } + + devCnt = 0; + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_V; + + err = rfalNfcvPollerCollisionResolution( + RFAL_COMPLIANCE_MODE_NFC, (gNfcDev.disc.devLimit - gNfcDev.devCnt), + nfcvDevList, &devCnt); + if ((err == RFAL_ERR_NONE) && (devCnt != 0U)) { + for (i = 0; i < devCnt; i++) /* Copy devices found form local Nfcf list + into global device list */ + { + gNfcDev.devList[gNfcDev.devCnt].type = RFAL_NFC_LISTEN_TYPE_NFCV; + gNfcDev.devList[gNfcDev.devCnt].dev.nfcv = nfcvDevList[i]; + gNfcDev.devCnt++; + } + } + + return RFAL_ERR_BUSY; + } +#endif /* RFAL_FEATURE_NFCV */ + + /*******************************************************************************/ + /* ST25TB Collision Resolution */ + /*******************************************************************************/ +#if RFAL_FEATURE_ST25TB + if (((gNfcDev.techsFound & RFAL_NFC_POLL_TECH_ST25TB) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_ST25TB) != + 0U)) /* If a ST25TB device was found/detected, perform Collision + Resolution */ + { + rfalSt25tbListenDevice st25tbDevList[RFAL_NFC_MAX_DEVICES]; + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR( + err, rfalSt25tbPollerInitialize()); /* Initialize RFAL for ST25TB */ + RFAL_EXIT_ON_ERR( + err, + rfalFieldOnAndStartGT()); /* Ensure GT again as other technologies + have also been polled */ + gNfcDev.isTechInit = true; + } + + if (!rfalIsGTExpired()) { + return RFAL_ERR_BUSY; + } + + devCnt = 0; + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_ST25TB; + + err = rfalSt25tbPollerCollisionResolution( + (gNfcDev.disc.devLimit - gNfcDev.devCnt), st25tbDevList, &devCnt); + if ((err == RFAL_ERR_NONE) && (devCnt != 0U)) { + for (i = 0; i < devCnt; i++) /* Copy devices found form local Nfcf list + into global device list */ + { + gNfcDev.devList[gNfcDev.devCnt].type = RFAL_NFC_LISTEN_TYPE_ST25TB; + gNfcDev.devList[gNfcDev.devCnt].dev.st25tb = st25tbDevList[i]; + gNfcDev.devCnt++; + } + } + + return RFAL_ERR_BUSY; + } +#endif /* RFAL_FEATURE_ST25TB */ + + /*******************************************************************************/ + /* Proprietary NFC Collision Resolution */ + /*******************************************************************************/ + if (((gNfcDev.techsFound & RFAL_NFC_POLL_TECH_PROP) != 0U) && + ((gNfcDev.techs2do & RFAL_NFC_POLL_TECH_PROP) != + 0U)) /* If a device was found/detected, perform Collision Resolution */ + { + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR(err, + rfalNfcpCbPollerInitialize()); /* Initialize RFAL for + Proprietary NFC */ + RFAL_EXIT_ON_ERR( + err, + rfalFieldOnAndStartGT()); /* Turns the Field On and starts GT timer */ + + gNfcDev.isTechInit = true; /* Technology has been initialized */ + gNfcDev.isOperOngoing = false; /* No operation currently ongoing */ + } + + if (!rfalIsGTExpired()) { + return RFAL_ERR_BUSY; + } + + if (!gNfcDev.isOperOngoing) { + RFAL_EXIT_ON_ERR(err, rfalNfcpCbPollerStartCollisionResolution()); + + gNfcDev.isOperOngoing = true; + return RFAL_ERR_BUSY; + } + + err = rfalNfcpCbPollerGetCollisionResolutionStatus(); + if (err != RFAL_ERR_BUSY) { + gNfcDev.isTechInit = false; + gNfcDev.techs2do &= ~RFAL_NFC_POLL_TECH_PROP; + + if (err == RFAL_ERR_NONE) { + gNfcDev.devCnt = 1; /* Device list held by caller */ + gNfcDev.devList[0].type = RFAL_NFC_LISTEN_TYPE_PROP; + } + } + return RFAL_ERR_BUSY; + } + + return RFAL_ERR_NONE; /* All technologies have been performed */ +} + +/*! + ****************************************************************************** + * \brief Poller Activation + * + * This method Activates a given device according to it's type and + * protocols supported + * + * \param[in] devIt : device's position on the list to be activated + * + * \return RFAL_ERR_NONE : Operation completed with no error + * \return RFAL_ERR_BUSY : Operation ongoing + * \return RFAL_ERR_XXXX : Error occurred + * + ****************************************************************************** + */ +static ReturnCode rfalNfcPollActivation(uint8_t devIt) { + ReturnCode err; + uint8_t devIdx; + rfalNfcaListenDeviceType nfcaType; + + err = RFAL_ERR_NONE; + devIdx = 0; + nfcaType = RFAL_NFCA_T1T; + + /* Suppress warning when specific RFAL features have been disabled */ + RFAL_NO_WARNING(err); + RFAL_NO_WARNING(devIdx); + RFAL_NO_WARNING(nfcaType); + + if (devIt > gNfcDev.devCnt) { + return RFAL_ERR_WRONG_STATE; + } + + switch (gNfcDev.devList[devIt].type) { + /*******************************************************************************/ + /* AP2P Activation */ + /*******************************************************************************/ +#if RFAL_FEATURE_NFC_DEP + case RFAL_NFC_LISTEN_TYPE_AP2P: + /* Activation has already been (ATR_REQ) */ + + gNfcDev.devList[devIt].nfcid = + gNfcDev.devList[devIt].proto.nfcDep.activation.Target.ATR_RES.NFCID3; + gNfcDev.devList[devIt].nfcidLen = RFAL_NFCDEP_NFCID3_LEN; + break; +#endif /* RFAL_FEATURE_NFC_DEP */ + + /*******************************************************************************/ + /* Passive NFC-A Activation */ + /*******************************************************************************/ +#if RFAL_FEATURE_NFCA + case RFAL_NFC_LISTEN_TYPE_NFCA: + + if (!gNfcDev.isTechInit) { + rfalNfcaPollerInitialize(); + gNfcDev.isTechInit = true; + gNfcDev.isOperOngoing = false; + return RFAL_ERR_BUSY; + } + + if (gNfcDev.devList[devIt] + .dev.nfca.isSleep) /* Check if desired device is in Sleep */ + { + if (!gNfcDev.isOperOngoing) { + /* Wake up all cards */ + RFAL_EXIT_ON_ERR( + err, rfalNfcaPollerCheckPresence(RFAL_14443A_SHORTFRAME_CMD_WUPA, + &gNfcDev.sensRes)); + + /* Select specific device */ + RFAL_EXIT_ON_ERR(err, rfalNfcaPollerStartSelect( + gNfcDev.devList[devIt].dev.nfca.nfcId1, + gNfcDev.devList[devIt].dev.nfca.nfcId1Len, + &gNfcDev.devList[devIt].dev.nfca.selRes)); + + gNfcDev.isOperOngoing = true; + } else { + RFAL_EXIT_ON_ERR(err, rfalNfcaPollerGetSelectStatus()); + + /* In case multiple NFC-A devices are present, when activating/waking + a device that is sleeping (not the last one) will make the active + one to go back to IDLE. Marking it as in sleep (Activity 2.2 9.4.4 + Optional Symbol 2) will ensure that gets correctly activated + afterwards */ + for (devIdx = 0; devIdx < gNfcDev.devCnt; devIdx++) { + if (gNfcDev.devList[devIdx].type == RFAL_NFC_LISTEN_TYPE_NFCA) { + gNfcDev.devList[devIdx].dev.nfca.isSleep = true; + } + } + + gNfcDev.devList[devIt].dev.nfca.isSleep = false; + gNfcDev.isOperOngoing = false; + } + return RFAL_ERR_BUSY; + } + + /* Set NFCID */ + gNfcDev.devList[devIt].nfcid = gNfcDev.devList[devIt].dev.nfca.nfcId1; + gNfcDev.devList[devIt].nfcidLen = + gNfcDev.devList[devIt].dev.nfca.nfcId1Len; + + /* If device supports multiple technologies assign protocol requested */ + nfcaType = gNfcDev.devList[devIt].dev.nfca.type; + if (nfcaType == RFAL_NFCA_T4T_NFCDEP) { + nfcaType = + ((gNfcDev.disc.p2pNfcaPrio) ? RFAL_NFCA_NFCDEP : RFAL_NFCA_T4T); + } + + /*******************************************************************************/ + /* Perform protocol specific activation */ + switch (nfcaType) { + /*******************************************************************************/ + case RFAL_NFCA_T1T: + + /* No further activation needed for T1T (RID already performed) */ + + gNfcDev.devList[devIt].nfcid = + gNfcDev.devList[devIt].dev.nfca.ridRes.uid; + gNfcDev.devList[devIt].nfcidLen = RFAL_T1T_UID_LEN; + + gNfcDev.devList[devIt].rfInterface = RFAL_NFC_INTERFACE_RF; + break; + + case RFAL_NFCA_T2T: + + /* No further activation needed for a T2T */ + + gNfcDev.devList[devIt].rfInterface = RFAL_NFC_INTERFACE_RF; + break; + + /*******************************************************************************/ + case RFAL_NFCA_T4T: /* Device supports ISO-DEP */ + +#if RFAL_FEATURE_ISO_DEP && RFAL_FEATURE_ISO_DEP_POLL + if (!gNfcDev.isOperOngoing) { + /* Perform ISO-DEP (ISO14443-4) activation: RATS and PPS if + * supported */ + rfalIsoDepInitializeWithParams( + gNfcDev.disc.compMode, RFAL_ISODEP_MAX_R_RETRYS, + RFAL_ISODEP_MAX_WTX_NACK_RETRYS, RFAL_ISODEP_MAX_WTX_RETRYS, + RFAL_ISODEP_MAX_DSL_RETRYS, RFAL_ISODEP_MAX_I_RETRYS, + RFAL_ISODEP_RATS_RETRIES); + RFAL_EXIT_ON_ERR(err, rfalIsoDepPollAStartActivation( + gNfcDev.disc.isoDepFS, RFAL_ISODEP_NO_DID, + gNfcDev.disc.maxBR, + &gNfcDev.devList[devIt].proto.isoDep)); + + gNfcDev.isOperOngoing = true; + return RFAL_ERR_BUSY; + } + + err = rfalIsoDepPollAGetActivationStatus(); + if (err != RFAL_ERR_NONE) { + return err; + } + + gNfcDev.devList[devIt].rfInterface = + RFAL_NFC_INTERFACE_ISODEP; /* NFC-A T4T device activated */ +#else + gNfcDev.devList[devIt].rfInterface = + RFAL_NFC_INTERFACE_RF; /* No ISO-DEP supported activate using RF + interface */ +#endif /* RFAL_FEATURE_ISO_DEP_POLL */ + break; + + /*******************************************************************************/ + case RFAL_NFCA_NFCDEP: /* Device supports NFC-DEP */ + +#if RFAL_FEATURE_NFC_DEP + /* Perform NFC-DEP (P2P) activation: ATR and PSL if supported */ + RFAL_EXIT_ON_ERR( + err, rfalNfcNfcDepActivate(&gNfcDev.devList[devIt], + RFAL_NFCDEP_COMM_PASSIVE, NULL, 0)); + + gNfcDev.devList[devIt].nfcid = + gNfcDev.devList[devIt] + .proto.nfcDep.activation.Target.ATR_RES.NFCID3; + gNfcDev.devList[devIt].nfcidLen = RFAL_NFCDEP_NFCID3_LEN; + + gNfcDev.devList[devIt].rfInterface = + RFAL_NFC_INTERFACE_NFCDEP; /* NFC-A P2P device activated */ +#else + gNfcDev.devList[devIt].rfInterface = + RFAL_NFC_INTERFACE_RF; /* No NFC-DEP supported activate using RF + interface */ +#endif /* RFAL_FEATURE_NFC_DEP */ + break; + + /*******************************************************************************/ + case RFAL_NFCA_T4T_NFCDEP: /* Multiple proto resolved based on NFCA P2P + Prio config */ + default: + return RFAL_ERR_WRONG_STATE; + } + break; +#endif /* RFAL_FEATURE_NFCA */ + + /*******************************************************************************/ + /* Passive NFC-B Activation */ + /*******************************************************************************/ +#if RFAL_FEATURE_NFCB + case RFAL_NFC_LISTEN_TYPE_NFCB: + + if (!gNfcDev.isTechInit) { + rfalNfcbPollerInitialize(); + gNfcDev.isTechInit = true; + gNfcDev.isOperOngoing = false; + + if (gNfcDev.devList[devIt] + .dev.nfcb.isSleep) /* Check if desired device is in Sleep */ + { + /* Wake up all cards. SENSB_RES may return collision but the NFCID0 is + * available to explicitly select NFC-B card via ATTRIB; so error will + * be ignored here */ + rfalNfcbPollerStartCheckPresence( + RFAL_NFCB_SENS_CMD_ALLB_REQ, RFAL_NFCB_SLOT_NUM_1, + &gNfcDev.sensbRes, &gNfcDev.sensbResLen); + } + + return RFAL_ERR_BUSY; + } + + if (gNfcDev.devList[devIt] + .dev.nfcb.isSleep) /* Check if desired device is still in Sleep */ + { + /* Wake up all cards. SENSB_RES may return collision but the NFCID0 is + * available to explicitly select NFC-B card via ATTRIB; so error will + * be ignored here */ + RFAL_EXIT_ON_BUSY(err, rfalNfcbPollerGetCheckPresenceStatus()); + + gNfcDev.devList[devIt].dev.nfcb.isSleep = false; + } + + /* Set NFCID */ + gNfcDev.devList[devIt].nfcid = + gNfcDev.devList[devIt].dev.nfcb.sensbRes.nfcid0; + gNfcDev.devList[devIt].nfcidLen = RFAL_NFCB_NFCID0_LEN; + +#if RFAL_FEATURE_ISO_DEP && RFAL_FEATURE_ISO_DEP_POLL + /* Check if device supports ISO-DEP (ISO14443-4) */ + if ((gNfcDev.devList[devIt].dev.nfcb.sensbRes.protInfo.FsciProType & + RFAL_NFCB_SENSB_RES_PROTO_ISO_MASK) != 0U) { + if (!gNfcDev.isOperOngoing) { + rfalIsoDepInitializeWithParams( + gNfcDev.disc.compMode, RFAL_ISODEP_MAX_R_RETRYS, + RFAL_ISODEP_MAX_WTX_NACK_RETRYS, RFAL_ISODEP_MAX_WTX_RETRYS, + RFAL_ISODEP_MAX_DSL_RETRYS, RFAL_ISODEP_MAX_I_RETRYS, + RFAL_ISODEP_RATS_RETRIES); + /* Perform ISO-DEP (ISO14443-4) activation: ATTRIB */ + RFAL_EXIT_ON_ERR(err, rfalIsoDepPollBStartActivation( + gNfcDev.disc.isoDepFS, RFAL_ISODEP_NO_DID, + gNfcDev.disc.maxBR, 0x00, + &gNfcDev.devList[devIt].dev.nfcb, NULL, 0, + &gNfcDev.devList[devIt].proto.isoDep)); + + gNfcDev.isOperOngoing = true; + return RFAL_ERR_BUSY; + } + + err = rfalIsoDepPollBGetActivationStatus(); + if (err != RFAL_ERR_NONE) { + return err; + } + + gNfcDev.devList[devIt].rfInterface = + RFAL_NFC_INTERFACE_ISODEP; /* NFC-B T4T device activated */ + break; + } + +#endif /* RFAL_FEATURE_ISO_DEP_POLL */ + + gNfcDev.devList[devIt].rfInterface = + RFAL_NFC_INTERFACE_RF; /* NFC-B device activated */ + break; + +#endif /* RFAL_FEATURE_NFCB */ + + /*******************************************************************************/ + /* Passive NFC-F Activation */ + /*******************************************************************************/ +#if RFAL_FEATURE_NFCF + case RFAL_NFC_LISTEN_TYPE_NFCF: + + rfalNfcfPollerInitialize(gNfcDev.disc.nfcfBR); + +#if RFAL_FEATURE_NFC_DEP + if (rfalNfcfIsNfcDepSupported(&gNfcDev.devList[devIt].dev.nfcf)) { + /* Perform NFC-DEP (P2P) activation: ATR and PSL if supported */ + RFAL_EXIT_ON_ERR( + err, rfalNfcNfcDepActivate(&gNfcDev.devList[devIt], + RFAL_NFCDEP_COMM_PASSIVE, NULL, 0)); + + /* Set NFCID */ + gNfcDev.devList[devIt].nfcid = + gNfcDev.devList[devIt] + .proto.nfcDep.activation.Target.ATR_RES.NFCID3; + gNfcDev.devList[devIt].nfcidLen = RFAL_NFCDEP_NFCID3_LEN; + + gNfcDev.devList[devIt].rfInterface = + RFAL_NFC_INTERFACE_NFCDEP; /* NFC-F P2P device activated */ + break; + } +#endif /* RFAL_FEATURE_NFC_DEP */ + + /* Set NFCID */ + gNfcDev.devList[devIt].nfcid = + gNfcDev.devList[devIt].dev.nfcf.sensfRes.NFCID2; + gNfcDev.devList[devIt].nfcidLen = RFAL_NFCF_NFCID2_LEN; + + gNfcDev.devList[devIt].rfInterface = + RFAL_NFC_INTERFACE_RF; /* NFC-F T3T device activated */ + break; +#endif /* RFAL_FEATURE_NFCF */ + + /*******************************************************************************/ + /* Passive NFC-V Activation */ + /*******************************************************************************/ +#if RFAL_FEATURE_NFCV + case RFAL_NFC_LISTEN_TYPE_NFCV: + + rfalNfcvPollerInitialize(); + + /* No specific activation needed for a T5T */ + + /* Set NFCID */ + gNfcDev.devList[devIt].nfcid = gNfcDev.devList[devIt].dev.nfcv.InvRes.UID; + gNfcDev.devList[devIt].nfcidLen = RFAL_NFCV_UID_LEN; + + gNfcDev.devList[devIt].rfInterface = + RFAL_NFC_INTERFACE_RF; /* NFC-V T5T device activated */ + break; +#endif /* RFAL_FEATURE_NFCV */ + + /*******************************************************************************/ + /* Passive ST25TB Activation */ + /*******************************************************************************/ +#if RFAL_FEATURE_ST25TB + case RFAL_NFC_LISTEN_TYPE_ST25TB: + + rfalSt25tbPollerInitialize(); + + /* No specific activation needed for a ST25TB */ + + /* Set NFCID */ + gNfcDev.devList[devIt].nfcid = gNfcDev.devList[devIt].dev.st25tb.UID; + gNfcDev.devList[devIt].nfcidLen = RFAL_ST25TB_UID_LEN; + + gNfcDev.devList[devIt].rfInterface = + RFAL_NFC_INTERFACE_RF; /* ST25TB device activated */ + break; +#endif /* RFAL_FEATURE_ST25TB */ + + /*******************************************************************************/ + /* Passive Proprietary NFC Activation */ + /*******************************************************************************/ + case RFAL_NFC_LISTEN_TYPE_PROP: + + if (!gNfcDev.isTechInit) { + RFAL_EXIT_ON_ERR(err, rfalNfcpCbPollerInitialize()); + gNfcDev.isTechInit = true; + gNfcDev.isOperOngoing = false; + return RFAL_ERR_BUSY; + } + + if (!gNfcDev.isOperOngoing) { + /* Start activation */ + RFAL_EXIT_ON_ERR(err, rfalNfcpCbStartActivation()); + + gNfcDev.isOperOngoing = true; + return RFAL_ERR_BUSY; + } + + err = rfalNfcpCbGetActivationStatus(); + if (err != RFAL_ERR_NONE) { + return err; + } + + /* Clear NFCID */ + gNfcDev.devList[devIt].nfcid = NULL; + gNfcDev.devList[devIt].nfcidLen = 0; + + gNfcDev.devList[devIt].rfInterface = RFAL_NFC_INTERFACE_RF; + break; + + /*******************************************************************************/ + default: + return RFAL_ERR_WRONG_STATE; + } + + gNfcDev.activeDev = + &gNfcDev.devList[devIt]; /* Assign active device to be used further on */ + gNfcDev.isOperOngoing = false; + return RFAL_ERR_NONE; +} + +/*! + ****************************************************************************** + * \brief Listener Activation + * + * This method handles the listen mode Activation according to the different + * protocols the Reader/Initiator performs + * + * \return RFAL_ERR_NONE : Operation completed with no error + * \return RFAL_ERR_BUSY : Operation ongoing + * \return RFAL_ERR_PROTO : Unexpected frame received + * \return RFAL_ERR_XXXX : Error occurred + * + ****************************************************************************** + */ +#if RFAL_FEATURE_LISTEN_MODE +static ReturnCode rfalNfcListenActivation(void) { + bool isDataRcvd; + ReturnCode ret; + rfalLmState lmSt; + rfalBitRate bitRate; +#if RFAL_FEATURE_NFC_DEP + uint8_t hdrLen; + + /* Set the header length in NFC-A */ + hdrLen = (RFAL_NFCDEP_SB_LEN + RFAL_NFCDEP_LEN_LEN); +#endif /* RFAL_FEATURE_NFC_DEP */ + + lmSt = rfalListenGetState(&isDataRcvd, &bitRate); + switch (lmSt) { +#if RFAL_FEATURE_NFCA + /*******************************************************************************/ + case RFAL_LM_STATE_ACTIVE_A: /* NFC-A CE activation */ + case RFAL_LM_STATE_ACTIVE_Ax: + + if (isDataRcvd) /* Check if Reader/Initator has sent some data */ + { + /* Check if received data is a Sleep request */ + if (rfalNfcaListenerIsSleepReq( + gNfcDev.rxBuf.rfBuf, + rfalConvBitsToBytes( + gNfcDev.rxLen))) /* Check if received data is a SLP_REQ */ + { + /* Set the Listen Mode in Sleep state */ + RFAL_EXIT_ON_ERR(ret, + rfalListenSleepStart( + RFAL_LM_STATE_SLEEP_A, gNfcDev.rxBuf.rfBuf, + sizeof(gNfcDev.rxBuf.rfBuf), &gNfcDev.rxLen)); + } +#if RFAL_FEATURE_ISO_DEP && RFAL_FEATURE_ISO_DEP_LISTEN + /* Check if received data is a valid RATS */ + else if (rfalIsoDepIsRats( + gNfcDev.rxBuf.rfBuf, + (uint8_t)rfalConvBitsToBytes(gNfcDev.rxLen))) { + rfalIsoDepAtsParam atsParam; + rfalIsoDepListenActvParam rxParam; + + /* Set ATS parameters */ + atsParam.fsci = (uint8_t)RFAL_ISODEP_DEFAULT_FSCI; + atsParam.fwi = RFAL_ISODEP_DEFAULT_FWI; + atsParam.sfgi = RFAL_ISODEP_DEFAULT_SFGI; + atsParam.didSupport = false; + atsParam.ta = RFAL_ISODEP_ATS_TA_SAME_D; + atsParam.hb = NULL; + atsParam.hbLen = 0; + + /* Set Rx parameters */ + rxParam.rxBuf = + (rfalIsoDepBufFormat *)&gNfcDev.rxBuf + .isoDepBuf; /* PRQA S 0310 # MISRA 11.3 - Intentional safe + cast to avoiding large buffer duplication */ + rxParam.rxLen = &gNfcDev.rxLen; + rxParam.isoDepDev = &gNfcDev.devList->proto.isoDep; + rxParam.isRxChaining = &gNfcDev.isRxChaining; + + rfalListenSetState( + RFAL_LM_STATE_CARDEMU_4A); /* Set next state CE T4T */ + rfalIsoDepInitialize(); /* Initialize ISO-DEP layer to handle + ISO14443-a activation / RATS */ + + /* Set ISO-DEP layer to digest RATS and handle activation */ + RFAL_EXIT_ON_ERR(ret, rfalIsoDepListenStartActivation( + &atsParam, NULL, gNfcDev.rxBuf.rfBuf, + gNfcDev.rxLen, rxParam)); + } +#endif /* RFAL_FEATURE_ISO_DEP_LISTEN */ + +#if RFAL_FEATURE_NFC_DEP + + /* Check if received data is a valid ATR_REQ */ + else if (rfalNfcDepIsAtrReq( + &gNfcDev.rxBuf.rfBuf[hdrLen], + (rfalConvBitsToBytes(gNfcDev.rxLen) - hdrLen), + gNfcDev.devList->nfcid)) { + gNfcDev.devList->type = RFAL_NFC_POLL_TYPE_NFCA; + RFAL_EXIT_ON_ERR(ret, + rfalNfcNfcDepActivate( + gNfcDev.devList, RFAL_NFCDEP_COMM_PASSIVE, + &gNfcDev.rxBuf.rfBuf[hdrLen], + (rfalConvBitsToBytes(gNfcDev.rxLen) - hdrLen))); + } +#endif /* RFAL_FEATURE_NFC_DEP */ + + else { + return RFAL_ERR_PROTO; + } + } + return RFAL_ERR_BUSY; + +#endif /* RFAL_FEATURE_NFCA */ + +#if RFAL_FEATURE_ISO_DEP && RFAL_FEATURE_ISO_DEP_LISTEN + /*******************************************************************************/ + case RFAL_LM_STATE_CARDEMU_4A: /* T4T ISO-DEP activation */ + + ret = rfalIsoDepListenGetActivationStatus(); + if (ret == RFAL_ERR_NONE) { + gNfcDev.devList->type = RFAL_NFC_POLL_TYPE_NFCA; + gNfcDev.devList->rfInterface = RFAL_NFC_INTERFACE_ISODEP; + gNfcDev.devList->nfcid = NULL; + gNfcDev.devList->nfcidLen = 0; + } + return ( + (ret == RFAL_ERR_LINK_LOSS) + ? RFAL_ERR_PROTO + : ret); /* Link loss during protocol activation, reMap error */ + +#endif /* RFAL_FEATURE_ISO_DEP_LISTEN */ + + /*******************************************************************************/ + case RFAL_LM_STATE_READY_F: /* NFC-F CE activation */ + + if (isDataRcvd) /* Wait for the first received data */ + { +#if RFAL_FEATURE_NFC_DEP + /* Set the header length in NFC-F */ + hdrLen = RFAL_NFCDEP_LEN_LEN; + + if (rfalNfcDepIsAtrReq(&gNfcDev.rxBuf.rfBuf[hdrLen], + (rfalConvBitsToBytes(gNfcDev.rxLen) - hdrLen), + gNfcDev.devList->nfcid)) { + gNfcDev.devList->type = RFAL_NFC_POLL_TYPE_NFCF; + RFAL_EXIT_ON_ERR(ret, + rfalNfcNfcDepActivate( + gNfcDev.devList, RFAL_NFCDEP_COMM_PASSIVE, + &gNfcDev.rxBuf.rfBuf[hdrLen], + (rfalConvBitsToBytes(gNfcDev.rxLen) - hdrLen))); + } else +#endif /* RFAL_FEATURE_NFC_DEP */ + { + rfalListenSetState( + RFAL_LM_STATE_CARDEMU_3); /* First data already received - set T3T + CE */ + } + } + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + case RFAL_LM_STATE_CARDEMU_3: /* T3T activated */ + + gNfcDev.devList->type = RFAL_NFC_POLL_TYPE_NFCF; + gNfcDev.devList->rfInterface = RFAL_NFC_INTERFACE_RF; + gNfcDev.devList->nfcid = NULL; + gNfcDev.devList->nfcidLen = 0; + + return RFAL_ERR_NONE; + +#if RFAL_FEATURE_NFC_DEP + /*******************************************************************************/ + case RFAL_LM_STATE_TARGET_A: /* NFC-DEP activation */ + case RFAL_LM_STATE_TARGET_F: + + ret = rfalNfcDepListenGetActivationStatus(); + if (ret == RFAL_ERR_NONE) { + gNfcDev.devList->rfInterface = RFAL_NFC_INTERFACE_NFCDEP; + gNfcDev.devList->nfcid = + gNfcDev.devList->proto.nfcDep.activation.Initiator.ATR_REQ.NFCID3; + gNfcDev.devList->nfcidLen = RFAL_NFCDEP_NFCID3_LEN; + } + return ret; +#endif /* RFAL_FEATURE_NFC_DEP */ + + /*******************************************************************************/ + case RFAL_LM_STATE_IDLE: /* AP2P activation */ + if (isDataRcvd) /* Check if Reader/Initator has sent some data */ + { + if ((gNfcDev.lmMask & RFAL_LM_MASK_ACTIVE_P2P) != + 0U) /* Check if AP2P is enabled */ + { +#if RFAL_FEATURE_NFC_DEP + /* Calculate the header length in NFC-A or NFC-F mode*/ + hdrLen = ((bitRate == RFAL_BR_106) + ? (RFAL_NFCDEP_SB_LEN + RFAL_NFCDEP_LEN_LEN) + : RFAL_NFCDEP_LEN_LEN); + + if (rfalNfcDepIsAtrReq(&gNfcDev.rxBuf.rfBuf[hdrLen], + (rfalConvBitsToBytes(gNfcDev.rxLen) - hdrLen), + NULL)) { + gNfcDev.devList->type = RFAL_NFC_POLL_TYPE_AP2P; + rfalSetMode((RFAL_MODE_LISTEN_ACTIVE_P2P), bitRate, bitRate); + rfalSetFDTListen(RFAL_FDT_LISTEN_AP2P_LISTENER); + RFAL_EXIT_ON_ERR( + ret, rfalNfcNfcDepActivate( + gNfcDev.devList, RFAL_NFCDEP_COMM_ACTIVE, + &gNfcDev.rxBuf.rfBuf[hdrLen], + (rfalConvBitsToBytes(gNfcDev.rxLen) - hdrLen))); + } else +#endif /* RFAL_FEATURE_NFC_DEP */ + { + return RFAL_ERR_PROTO; + } + } + } + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + case RFAL_LM_STATE_READY_A: + case RFAL_LM_STATE_READY_Ax: + case RFAL_LM_STATE_SLEEP_A: + case RFAL_LM_STATE_SLEEP_AF: + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + case RFAL_LM_STATE_POWER_OFF: + return RFAL_ERR_LINK_LOSS; + + default: /* Wait for activation */ + break; + } + + return RFAL_ERR_INTERNAL; +} +#endif /* RFAL_FEATURE_LISTEN_MODE */ + +/*! + ****************************************************************************** + * \brief Poller NFC DEP Activate + * + * This method performs NFC-DEP Activation + * + * \param[in] device : device info + * \param[in] commMode : communication mode (Passive/Active) + * \param[in] atrReq : received ATR_REQ + * \param[in] atrReqLen : received ATR_REQ size + * + * \return RFAL_ERR_NONE : Operation completed with no error + * \return RFAL_ERR_BUSY : Operation ongoing + * \return RFAL_ERR_XXXX : Error occurred + * + ****************************************************************************** + */ +#if RFAL_FEATURE_NFC_DEP +static ReturnCode rfalNfcNfcDepActivate(rfalNfcDevice *device, + rfalNfcDepCommMode commMode, + const uint8_t *atrReq, + uint16_t atrReqLen) { + rfalNfcDepAtrParam initParam; + + /* Suppress warnings if Listen mode is disabled */ + RFAL_NO_WARNING(atrReq); + RFAL_NO_WARNING(atrReqLen); + + /* If we are in Poll mode */ + if (gNfcDev.state < RFAL_NFC_STATE_LISTEN_TECHDETECT) { + /*******************************************************************************/ + /* If Passive F use the NFCID2 retrieved from SENSF */ + if (device->type == RFAL_NFC_LISTEN_TYPE_NFCF) { + initParam.nfcid = device->dev.nfcf.sensfRes.NFCID2; + initParam.nfcidLen = RFAL_NFCF_NFCID2_LEN; + } else { + initParam.nfcid = gNfcDev.disc.nfcid3; + initParam.nfcidLen = RFAL_NFCDEP_NFCID3_LEN; + } + + initParam.BS = RFAL_NFCDEP_Bx_NO_HIGH_BR; + initParam.BR = RFAL_NFCDEP_Bx_NO_HIGH_BR; + initParam.DID = RFAL_NFCDEP_DID_NO; + initParam.NAD = RFAL_NFCDEP_NAD_NO; + initParam.LR = gNfcDev.disc.nfcDepLR; + initParam.GB = gNfcDev.disc.GB; + initParam.GBLen = gNfcDev.disc.GBLen; + initParam.commMode = commMode; + initParam.operParam = + (RFAL_NFCDEP_OPER_FULL_MI_EN | RFAL_NFCDEP_OPER_EMPTY_DEP_DIS | + RFAL_NFCDEP_OPER_ATN_EN | RFAL_NFCDEP_OPER_RTOX_REQ_EN); + + rfalNfcDepInitialize(); + /* Perform NFC-DEP (P2P) activation: ATR and PSL if supported */ + return rfalNfcDepInitiatorHandleActivation(&initParam, gNfcDev.disc.maxBR, + &device->proto.nfcDep); + } + /* If we are in Listen mode */ +#if RFAL_FEATURE_LISTEN_MODE + else if (rfalNfcIsRemDevPoller(device->type) && + (gNfcDev.state >= RFAL_NFC_STATE_LISTEN_TECHDETECT)) { + rfalNfcDepListenActvParam actvParams; + rfalNfcDepTargetParam targetParam; + + RFAL_MEMCPY(targetParam.nfcid3, (uint8_t *)gNfcDev.disc.nfcid3, + RFAL_NFCDEP_NFCID3_LEN); + targetParam.bst = RFAL_NFCDEP_Bx_NO_HIGH_BR; + targetParam.brt = RFAL_NFCDEP_Bx_NO_HIGH_BR; + targetParam.to = RFAL_NFCDEP_WT_TRG_MAX_L13; /* [LLCP] 1.3 6.2.1 */ + targetParam.ppt = rfalNfcDepLR2PP(gNfcDev.disc.nfcDepLR); + if (gNfcDev.disc.GBLen >= RFAL_NFCDEP_GB_MAX_LEN) { + return RFAL_ERR_PARAM; + } + targetParam.GBtLen = gNfcDev.disc.GBLen; + if (gNfcDev.disc.GBLen > 0U) { + RFAL_MEMCPY(targetParam.GBt, gNfcDev.disc.GB, gNfcDev.disc.GBLen); + } + targetParam.operParam = + (RFAL_NFCDEP_OPER_FULL_MI_EN | RFAL_NFCDEP_OPER_EMPTY_DEP_DIS | + RFAL_NFCDEP_OPER_ATN_EN | RFAL_NFCDEP_OPER_RTOX_REQ_EN); + targetParam.commMode = commMode; + + /* Set activation buffer (including header) for NFC-DEP */ + actvParams.rxBuf = + (rfalNfcDepBufFormat *)&gNfcDev.rxBuf + .nfcDepBuf; /* PRQA S 0310 # MISRA 11.3 - Intentional safe cast to + avoiding large buffer duplication */ + actvParams.rxLen = &gNfcDev.rxLen; + actvParams.isRxChaining = &gNfcDev.isRxChaining; + actvParams.nfcDepDev = &gNfcDev.devList->proto.nfcDep; + + rfalListenSetState(((device->type == RFAL_NFC_POLL_TYPE_NFCA) + ? RFAL_LM_STATE_TARGET_A + : RFAL_LM_STATE_TARGET_F)); + + rfalNfcDepInitialize(); + /* Perform NFC-DEP (P2P) activation: send ATR_RES and handle activation */ + return rfalNfcDepListenStartActivation(&targetParam, atrReq, atrReqLen, + actvParams); + } +#endif /* RFAL_FEATURE_LISTEN_MODE */ + + else { + return RFAL_ERR_INTERNAL; + } +} +#endif /* RFAL_FEATURE_NFC_DEP */ + +/*! + ****************************************************************************** + * \brief Poller NFC Deactivate + * + * This method Deactivates the device if a deactivation procedure exists + * + * \return RFAL_ERR_NONE : Operation completed with no error + * \return RFAL_ERR_BUSY : Operation ongoing + * \return RFAL_ERR_XXXX : Error occurred + * + ****************************************************************************** + */ +static ReturnCode rfalNfcDeactivation(void) { + bool aux; + ReturnCode ret; + + ret = RFAL_ERR_NONE; + aux = false; + + /* Suppress warning when specific RFAL features have been disabled */ + RFAL_NO_WARNING(ret); + + /* Check if a device has been activated */ + if (gNfcDev.activeDev != NULL) { + if (rfalNfcIsRemDevListener( + gNfcDev.activeDev->type)) /* Listen mode no additional deactivation + to be performed*/ + { + switch (gNfcDev.activeDev->rfInterface) { + /*******************************************************************************/ + case RFAL_NFC_INTERFACE_RF: + break; /* No specific deactivation to be performed */ + + /*******************************************************************************/ +#if RFAL_FEATURE_ISO_DEP && RFAL_FEATURE_ISO_DEP_POLL + case RFAL_NFC_INTERFACE_ISODEP: + + if (!gNfcDev.isOperOngoing) { + ret = rfalIsoDepStartDeselect(); + if (ret == RFAL_ERR_NONE) /* Send a Deselect to device */ + { + gNfcDev.isOperOngoing = true; + return RFAL_ERR_BUSY; + } + } else { + RFAL_EXIT_ON_BUSY( + ret, rfalIsoDepGetDeselectStatus()); /* Check if deselection has + finished */ + + aux = true; /* Mark device as deselected */ + gNfcDev.isOperOngoing = false; + } + break; +#endif /* RFAL_FEATURE_ISO_DEP_POLL */ + + /*******************************************************************************/ +#if RFAL_FEATURE_NFC_DEP + case RFAL_NFC_INTERFACE_NFCDEP: + switch (gNfcDev.activeDev->type) { + case RFAL_NFC_LISTEN_TYPE_AP2P: + rfalNfcDepRLS(); /* Send a Release to device */ + break; + + default: + rfalNfcDepDSL(); /* Send a Deselect to device */ + aux = true; /* Mark device as deselected */ + break; + } + break; +#endif /* RFAL_FEATURE_NFC_DEP */ + + default: + return RFAL_ERR_REQUEST; + } + } + } + + /* If deactivation type is only to Sleep, mark it and keep Field On */ + if ((gNfcDev.deactType == RFAL_NFC_DEACTIVATE_SLEEP) && + (gNfcDev.activeDev != NULL) && (aux)) { + gNfcDev.isOperOngoing = false; + + if (gNfcDev.activeDev->type == RFAL_NFC_LISTEN_TYPE_NFCA) { + gNfcDev.activeDev->dev.nfca.isSleep = true; + } else if (gNfcDev.activeDev->type == RFAL_NFC_LISTEN_TYPE_NFCB) { + gNfcDev.activeDev->dev.nfcb.isSleep = true; + } else { + /* MISRA 15.7 - Empty else */ + } + } else { + if (!gNfcDev.isDeactivating) /* Check if the Field deactivation has not + started */ + { +#if RFAL_FEATURE_WAKEUP_MODE + rfalWakeUpModeStop(); +#endif /* RFAL_FEATURE_WAKEUP_MODE */ + +#if RFAL_FEATURE_LISTEN_MODE + rfalListenStop(); +#else + rfalFieldOff(); +#endif + + if ((gNfcDev.isFieldOn) && + rfalNfcHasPollerTechs()) /* Check if configured to Poll modes and the + Field is On */ + { + aux = platformTimerIsExpired( + gNfcDev + .discTmr); /* Check total duration timer is already expired */ + if (((platformGetSysTick() + RFAL_NFC_T_FIELD_OFF) > gNfcDev.discTmr) || + (aux)) /* In case Total Duration has expired or expring in less than + tFIELD_OFF */ + { + platformTimerDestroy(gNfcDev.discTmr); + gNfcDev.discTmr = (uint32_t)platformTimerCreate( + RFAL_NFC_T_FIELD_OFF); /* Ensure that Operating Field is in Off + condition at least tFIELD_OFF */ + } + + gNfcDev.isDeactivating = true; + return RFAL_ERR_BUSY; + } + } else /* The Field deactivation has started */ + { + if (!platformTimerIsExpired(gNfcDev.discTmr)) { + return RFAL_ERR_BUSY; /* Ensure Operating Field in Off condition for the + time remaining */ + } + } + } + + gNfcDev.activeDev = NULL; /* Clear Active Device info */ + gNfcDev.isDeactivating = false; + gNfcDev.isTechInit = false; + gNfcDev.isFieldOn = false; + return RFAL_ERR_NONE; +} diff --git a/core/embed/io/nfc/rfal/source/rfal_nfcDep.c b/core/embed/io/nfc/rfal/source/rfal_nfcDep.c new file mode 100644 index 0000000000..7094e4b042 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_nfcDep.c @@ -0,0 +1,2827 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: NFCC firmware + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_nfcDep.c + * + * \author Gustavo Patricio + * + * \brief Implementation of NFC-DEP protocol + * + * NFC-DEP is also known as NFCIP - Near Field Communication + * Interface and Protocol + * + * This implementation was based on the following specs: + * - NFC Forum Digital 1.1 + * - ECMA 340 3rd Edition 2013 + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_nfcDep.h" +#include "rfal_nfcf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_NFC_DEP + */ + +#if RFAL_FEATURE_NFC_DEP + +/* Check for valid Block/Payload length Digital 2.0 Table 90*/ +#if ((RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN != 64) && \ + (RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN != 128) && \ + (RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN != 192) && \ + (RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN != 254)) +#error \ + " RFAL: Invalid NFC-DEP Block Max length. Please change RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN. " +#endif + +/* Check for valid PDU length */ +#if ((RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN < RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN)) +#error \ + " RFAL: Invalid NFC-DEP PDU Max length. Please change RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN. " +#endif + +/* + ****************************************************************************** + * DEFINES + ****************************************************************************** + */ +#define NFCIP_ATR_RETRY_MAX \ + 2U /*!< Max consecutive retrys of an ATR REQ with transm error*/ + +#define NFCIP_PSLPAY_LEN \ + (2U) /*!< PSL Payload length (BRS + FSL) */ +#define NFCIP_PSLREQ_LEN \ + (3U + RFAL_NFCDEP_LEN_LEN) /*!< PSL REQ length (incl LEN) */ +#define NFCIP_PSLRES_LEN \ + (3U + RFAL_NFCDEP_LEN_LEN) /*!< PSL RES length (incl LEN) */ + +#define NFCIP_ATRREQ_BUF_LEN \ + (RFAL_NFCDEP_ATRREQ_MAX_LEN + \ + RFAL_NFCDEP_LEN_LEN) /*!< ATR REQ max length (incl LEN) */ +#define NFCIP_ATRRES_BUF_LEN \ + (RFAL_NFCDEP_ATRRES_MAX_LEN + \ + RFAL_NFCDEP_LEN_LEN) /*!< ATR RES max length (incl LEN) */ + +#define NFCIP_RLSREQ_LEN \ + (3U + RFAL_NFCDEP_LEN_LEN) /*!< RLS REQ length (incl LEN) */ +#define NFCIP_RLSRES_LEN \ + (3U + RFAL_NFCDEP_LEN_LEN) /*!< RSL RES length (incl LEN) */ +#define NFCIP_RLSRES_MIN \ + (2U + RFAL_NFCDEP_LEN_LEN) /*!< Minimum length for a RLS RES (incl LEN) */ + +#define NFCIP_DSLREQ_LEN \ + (3U + RFAL_NFCDEP_LEN_LEN) /*!< DSL REQ length (incl LEN) */ +#define NFCIP_DSLRES_LEN \ + (3U + RFAL_NFCDEP_LEN_LEN) /*!< DSL RES length (incl LEN) */ +#define NFCIP_DSLRES_MIN \ + (2U + RFAL_NFCDEP_LEN_LEN) /*!< Minimum length for a DSL RES (incl LEN) */ + +#define NFCIP_DSLRES_MAX_LEN \ + (3U + RFAL_NFCDEP_LEN_LEN) /*!< Maximum length for a DSL RES (incl LEN) */ +#define NFCIP_RLSRES_MAX_LEN \ + (3U + RFAL_NFCDEP_LEN_LEN) /*!< Minimum length for a RLS RES (incl LEN) */ +#define NFCIP_TARGET_RES_MAX \ + (RFAL_MAX(NFCIP_RLSRES_MAX_LEN, \ + NFCIP_DSLRES_MAX_LEN)) /*!< Max target control res length */ + +#define NFCIP_NO_FWT \ + RFAL_FWT_NONE /*!< No FWT value - Target Mode */ +#define NFCIP_INIT_MIN_RTOX \ + 1U /*!< Minimum RTOX value Digital 1.0 14.8.4.1 */ +#define NFCIP_INIT_MAX_RTOX \ + 59U /*!< Maximum RTOX value Digital 1.0 14.8.4.1 */ + +#define NFCIP_TARG_MIN_RTOX \ + 1U /*!< Minimum target RTOX value Digital 1.0 14.8.4.1 */ +#define NFCIP_TARG_MAX_RTOX \ + 59U /*!< Maximum target RTOX value Digital 1.0 14.8.4.1 */ + +#define NFCIP_TRECOV \ + 1280U /*!< Digital 1.0 A.10 Trecov */ + +#define NFCIP_TIMEOUT_ADJUSTMENT \ + 3072U /*!< Timeout Adjustment to compensate timing from end of Tx to end of \ + frame */ +#define NFCIP_RWT_ACTIVATION \ + (0x1000001U + \ + NFCIP_TIMEOUT_ADJUSTMENT) /*!< Digital 2.2 B.11 RWT ACTIVATION 2^24 + \ + RWT Delta + Adjustment*/ +#define NFCIP_RWT_ACM_ACTIVATION \ + (0x200001U + \ + NFCIP_TIMEOUT_ADJUSTMENT) /*!< Digital 2.2 B.11 RWT ACTIVATION 2^21 + \ + RWT Delta + Adjustment*/ + +#define RFAL_NFCDEP_HEADER_PAD \ + (RFAL_NFCDEP_DEPREQ_HEADER_LEN - \ + RFAL_NFCDEP_LEN_MIN) /*!< Difference between expected rcvd header len and \ + max foreseen */ + +#ifndef RFAL_NFCDEP_MAX_TX_RETRYS +#define RFAL_NFCDEP_MAX_TX_RETRYS \ + (uint8_t)3U /*!< Number of retransmit retyrs */ +#endif /* RFAL_NFCDEP_MAX_TX_RETRYS */ + +#ifndef RFAL_NFCDEP_TO_RETRYS +#define RFAL_NFCDEP_TO_RETRYS \ + (uint8_t)3U /*!< Number of retrys for Timeout */ +#endif /* RFAL_NFCDEP_TO_RETRYS */ + +#ifndef RFAL_NFCDEP_MAX_RTOX_RETRYS +#define RFAL_NFCDEP_MAX_RTOX_RETRYS \ + (uint8_t)10U /*!< Number of retrys for RTOX Digital 2.0 17.12.4.3 */ +#endif /* RFAL_NFCDEP_MAX_RTOX_RETRYS */ + +#ifndef RFAL_NFCDEP_MAX_NACK_RETRYS +#define RFAL_NFCDEP_MAX_NACK_RETRYS \ + (uint8_t)3U /*!< Number of retrys for NACK */ +#endif /* RFAL_NFCDEP_MAX_NACK_RETRYS */ + +#ifndef RFAL_NFCDEP_MAX_ATN_RETRYS +#define RFAL_NFCDEP_MAX_ATN_RETRYS \ + (uint8_t)3U /*!< Number of retrys for ATN */ +#endif /* RFAL_NFCDEP_MAX_ATN_RETRYS */ + +#define NFCIP_MIN_TXERROR_LEN \ + 4U /*!< Minimum frame length with error to be ignored Digital 1.0 14.12.5.4 \ + */ + +#define NFCIP_REQ \ + (uint8_t)0xD4U /*!= NFCIP_ST_INIT_IDLE) && \ + ((st) <= NFCIP_ST_INIT_RLS)) /*!< Checks if module is set as Initiator */ +#define nfcipIsTarget(st) \ + (!nfcipIsInitiator(st)) /*!< Checks if module is set as Target */ + +#define nfcipIsBRAllowed(br, mBR) \ + (((1U << (br)) & (mBR)) != \ + 0U) /*!< Checks bit rate is allowed by given mask */ + +#define nfcipIsEmptyDEPEnabled(op) \ + (!nfcipIsEmptyDEPDisabled(op)) /*!< Checks if empty payload is allowed by \ + operation config NCI 1.0 Table 81 */ +#define nfcipIsEmptyDEPDisabled(op) \ + (((op) & RFAL_NFCDEP_OPER_EMPTY_DEP_DIS) != \ + 0U) /*!< Checks if empty payload is not allowed by operation config NCI 1.0 \ + Table 81 */ + +#define nfcipIsRTOXReqEnabled(op) \ + (!nfcipIsRTOXReqDisabled(op)) /*!< Checks if send a RTOX_REQ is allowed by \ + operation config NCI 1.0 Table 81 */ +#define nfcipIsRTOXReqDisabled(op) \ + (((op) & RFAL_NFCDEP_OPER_RTOX_REQ_DIS) != \ + 0U) /*!< Checks if send a RTOX_REQ is not allowed by operation config \ + NCI 1.0 Table 81 */ + +/*! Checks if isDeactivating callback is set and calls it, otherwise returns + * false */ +#define nfcipIsDeactivationPending() \ + ((gNfcip.isDeactivating == NULL) ? false : gNfcip.isDeactivating()) + +/*! Returns the RWT Activation according to the current communication mode */ +#define nfcipRWTActivation() \ + ((gNfcip.cfg.commMode == RFAL_NFCDEP_COMM_ACTIVE) ? NFCIP_RWT_ACM_ACTIVATION \ + : NFCIP_RWT_ACTIVATION) + +#define nfcipRTOXAdjust(v) \ + ((v) - ((v) >> 3)) /*!< Adjust RTOX timer value to a percentage of the \ + total, current 88% */ + +/*******************************************************************************/ + +// timerPollTimeoutValue is necessary after timerCalculateTimeout so that system +// will wake up upon timer timeout. +#define nfcipTimerStart(timer, time_ms) \ + do { \ + platformTimerDestroy(timer); \ + (timer) = platformTimerCreate((uint16_t)(time_ms)); \ + } while (0) /*!< Configures and starts the RTOX timer */ +#define nfcipTimerisExpired(timer) \ + platformTimerIsExpired(timer) /*!< Checks RTOX timer has expired */ +#define nfcipTimerDestroy(timer) \ + platformTimerDestroy(timer) /*!< Destroys RTOX timer */ + +#define nfcipLogE(...) /*!< Macro for the error log method */ +#define nfcipLogW(...) /*!< Macro for the warning log method */ +#define nfcipLogI(...) /*!< Macro for the info log method */ +#define nfcipLogD(...) /*!< Macro for the debug log method */ + +/*! Digital 1.1 - 16.12.5.2 The Target SHALL NOT attempt any error recovery and + * remains in Rx mode upon Transmission or a Protocol Error */ +#define nfcDepReEnableRx(rxB, rxBL, rxL) \ + rfalTransceiveBlockingTx( \ + NULL, 0, (rxB), (rxBL), (rxL), \ + (RFAL_TXRX_FLAGS_DEFAULT | (uint32_t)RFAL_TXRX_FLAGS_NFCIP1_ON), \ + RFAL_FWT_NONE) + +/* + ****************************************************************************** + * LOCAL DATA TYPES + ****************************************************************************** + */ + +/*! Struct that holds all DEP parameters/configs for the following + * communications */ +typedef struct { + uint8_t did; /*!< Device ID (DID) to be used */ + + uint8_t *txBuf; /*!< Pointer to the Tx buffer to be sent */ + uint16_t txBufLen; /*!< Length of the data in the txBuf */ + uint8_t txBufPaylPos; /*!< Position inside txBuf where data starts */ + bool txChaining; /*!< Flag indicating chaining on transmission */ + + uint8_t *rxBuf; /*!< Pointer to the Rx buffer for incoming data */ + uint16_t rxBufLen; /*!< Length of the data in the rxBuf */ + uint8_t rxBufPaylPos; /*!< Position inside rxBuf where data is to be placed*/ + + uint32_t fwt; /*!< Frame Waiting Time (FWT) to be used */ + uint32_t dFwt; /*!< Delta Frame Waiting Time (dFWT) to be used */ + uint16_t fsc; /*!< Frame Size (FSC) to be used */ + +} rfalNfcDepDEPParams; + +/*! NFCIP module states */ +typedef enum { + NFCIP_ST_IDLE, + NFCIP_ST_INIT_IDLE, + NFCIP_ST_INIT_ATR, + NFCIP_ST_INIT_PSL, + NFCIP_ST_INIT_DEP_IDLE, + NFCIP_ST_INIT_DEP_TX, + NFCIP_ST_INIT_DEP_RX, + NFCIP_ST_INIT_DEP_ATN, + NFCIP_ST_INIT_DSL, + NFCIP_ST_INIT_RLS, + + NFCIP_ST_TARG_WAIT_ATR, + NFCIP_ST_TARG_WAIT_ACTV, + NFCIP_ST_TARG_DEP_IDLE, + NFCIP_ST_TARG_DEP_RX, + NFCIP_ST_TARG_DEP_RTOX, + NFCIP_ST_TARG_DEP_TX, + NFCIP_ST_TARG_DEP_SLEEP +} rfalNfcDepState; + +/*! NFCIP commands (Request, Response) */ +typedef enum { + NFCIP_CMD_ATR_REQ = 0x00, + NFCIP_CMD_ATR_RES = 0x01, + NFCIP_CMD_WUP_REQ = 0x02, + NFCIP_CMD_WUP_RES = 0x03, + NFCIP_CMD_PSL_REQ = 0x04, + NFCIP_CMD_PSL_RES = 0x05, + NFCIP_CMD_DEP_REQ = 0x06, + NFCIP_CMD_DEP_RES = 0x07, + NFCIP_CMD_DSL_REQ = 0x08, + NFCIP_CMD_DSL_RES = 0x09, + NFCIP_CMD_RLS_REQ = 0x0A, + NFCIP_CMD_RLS_RES = 0x0B +} rfalNfcDepCmd; + +/*! Struct that holds all NFCIP data */ +typedef struct { + rfalNfcDepConfigs cfg; /*!< Holds the current configuration to be used */ + + rfalNfcDepState state; /*!< Current state of the NFCIP module */ + uint8_t pni; /*!< Packet Number Information (PNI) counter */ + + uint8_t lastCmd; /*!< Last command sent */ + uint8_t lastPFB; /*!< Last PFB sent */ + uint8_t lastPFBnATN; /*!< Last PFB sent (excluding ATN) */ + uint8_t lastRTOX; /*!< Last RTOX value sent */ + + uint8_t cntTxRetrys; /*!< Retransmissions counter */ + uint8_t cntTORetrys; /*!< Timeouts counter */ + uint8_t cntRTOXRetrys; /*!< RTOX counter */ + uint8_t cntNACKRetrys; /*!< NACK counter */ + uint8_t cntATNRetrys; /*!< Attention (ATN) counter */ + + uint16_t fsc; /*!< Current Frame Size (FSC) to be used */ + bool isTxChaining; /*!< Flag for chaining on Transmission */ + bool isRxChaining; /*!< Flag for chaining on Reception */ + uint8_t *txBuf; /*!< Pointer to the Tx buffer to be sent */ + uint8_t *rxBuf; /*!< Pointer to the Rx buffer for incoming data */ + uint16_t txBufLen; /*!< Length of the data in the txBuf */ + uint16_t rxBufLen; /*!< Length of rxBuf buffer */ + uint16_t *rxRcvdLen; /*!< Length of the data in the rxBuf */ + uint8_t txBufPaylPos; /*!< Position in txBuf where data starts */ + uint8_t rxBufPaylPos; /*!< Position in rxBuf where data is to be placed */ + bool *isChaining; /*!< Flag for chaining on Reception */ + + rfalNfcDepDevice *nfcDepDev; /*!< Pointer to NFC-DEP device info */ + + uint32_t RTOXTimer; /*!< Timer used for RTOX */ + rfalNfcDepDeactCallback + isDeactivating; /*!< Deactivating flag check callback */ + + bool isReqPending; /*!< Flag pending REQ from Target activation */ + bool isTxPending; /*!< Flag pending DEP Block while waiting RTOX Ack */ + bool isWait4RTOX; /*!< Flag for waiting RTOX Ack */ + + rfalNfcDepPduTxRxParam PDUParam; /*!< PDU TxRx params */ + uint16_t PDUTxPos; /*!< PDU Tx position */ + uint16_t PDURxPos; /*!< PDU Rx position */ + bool isPDURxChaining; /*!< PDU Transceive chaining flag */ +} rfalNfcDep; + +/* + ****************************************************************************** + * LOCAL VARIABLES + ****************************************************************************** + */ + +static rfalNfcDep gNfcip; /*!< NFCIP module instance */ + +/* + ****************************************************************************** + * LOCAL FUNCTION PROTOTYPES + ****************************************************************************** + */ + +static ReturnCode nfcipTxRx(rfalNfcDepCmd cmd, uint8_t *txBuf, uint32_t fwt, + uint8_t *paylBuf, uint8_t paylBufLen, + uint8_t *rxBuf, uint16_t rxBufLen, + uint16_t *rxActLen); +static ReturnCode nfcipTx(rfalNfcDepCmd cmd, uint8_t *txBuf, uint8_t *paylBuf, + uint16_t paylLen, uint8_t pfbData, uint32_t fwt); +static ReturnCode nfcipDEPControlMsg(uint8_t pfb, uint8_t RTOX); +static ReturnCode nfcipInitiatorHandleDEP(ReturnCode rxRes, uint16_t rxLen, + uint16_t *outActRxLen, + bool *outIsChaining); +static ReturnCode nfcipTargetHandleRX(ReturnCode rxRes, uint16_t *outActRxLen, + bool *outIsChaining); +static ReturnCode nfcipTargetHandleActivation(rfalNfcDepDevice *nfcDepDev, + uint8_t *outBRS); + +/*! + ****************************************************************************** + * \brief NFCIP Configure + * + * Configures the nfcip layer with the given configurations + * + * \param[in] cfg : nfcip configuration for following communication + ****************************************************************************** + */ +static void nfcipConfig(const rfalNfcDepConfigs *cfg); + +/*! + ****************************************************************************** + * \brief Set DEP parameters + * + * This method sets the parameters/configs for following Data Exchange + * Sets the nfcip module state according to the role it is configured + * + * + * \warning To be used only after proper Initiator/Target activation: + * nfcipTargetHandleActivation() or nfcipInitiatorActivate() has + * returned success + * + * This must be called before nfcipRun() in case of Target to pass + * rxBuffer + * + * Everytime some data needs to be transmitted call this to set it and + * call nfcipRun() until done or error + * + * \param[in] DEPParams : the parameters to be used during Data Exchange + ****************************************************************************** + */ +static void nfcipSetDEPParams(const rfalNfcDepDEPParams *DEPParams); + +/*! + ****************************************************************************** + * \brief NFCIP run protocol + * + * This method handles all the nfcip protocol during Data Exchange (DEP + * requests and responses). + * + * A data exchange cycle is considered a DEP REQ and a DEP RES. + * + * In case of Tx chaining(MI) must signal it with nfcipSetDEPParams() + * In case of Rx chaining(MI) outIsChaining will be set to true and the + * current data returned + * + * \param[out] outActRxLen : data received length + * \param[out] outIsChaining : true if other peer is performing chaining(MI) + * + * \return RFAL_ERR_NONE : Data exchange cycle completed successfully + * \return RFAL_ERR_TIMEOUT : Timeout occurred + * \return RFAL_ERR_PROTO : Protocol error occurred + * \return RFAL_ERR_AGAIN : Other peer is doing chaining(MI), current block + * was received successfully call again until complete + * + ****************************************************************************** + */ +static ReturnCode nfcipRun(uint16_t *outActRxLen, bool *outIsChaining); + +/*! + ****************************************************************************** + * \brief Transmission method + * + * This method checks if the current communication is Active or Passive + * and performs the necessary procedures for each communication type + * + * Transmits the data hold in txBuf + * + * \param[in] txBuf : buffer to transmit + * \param[in] txBufLen : txBuffer capacity + * \param[in] fwt : fwt for current Tx + * + * \return RFAL_ERR_NONE : No error + ****************************************************************************** + */ +static ReturnCode nfcipDataTx(uint8_t *txBuf, uint16_t txBufLen, uint32_t fwt); + +/*! + ****************************************************************************** + * \brief Reception method + * + * This method checks if the current communication is Active or Passive + * and calls the appropriate reception method + * + * Copies incoming data to rxBuf + * + * \param[in] blocking : reception is to be done blocking or non-blocking + * + * \return RFAL_ERR_BUSY : Busy + * \return RFAL_ERR_NONE : No error + ****************************************************************************** + */ +static ReturnCode nfcipDataRx(bool blocking); + +/* + ****************************************************************************** + * LOCAL FUNCTIONS + ****************************************************************************** + */ + +/*******************************************************************************/ + +/*******************************************************************************/ +static bool nfcipDxIsSupported(uint8_t Dx, uint8_t BRx, uint8_t BSx) { + uint8_t Bx; + + /* Take the min of the possible bit rates, we'll use one for both directions + */ + Bx = RFAL_MIN(BRx, BSx); + + /* Lower bit rates must be supported for P2P */ + if ((Dx <= (uint8_t)RFAL_NFCDEP_Dx_04_424)) { + return true; + } + + if ((Dx == (uint8_t)RFAL_NFCDEP_Dx_08_848) && + (Bx >= (uint8_t)RFAL_NFCDEP_Bx_08_848)) { + return true; + } + + return false; +} + +/*******************************************************************************/ +static ReturnCode nfcipTxRx(rfalNfcDepCmd cmd, uint8_t *txBuf, uint32_t fwt, + uint8_t *paylBuf, uint8_t paylBufLen, + uint8_t *rxBuf, uint16_t rxBufLen, + uint16_t *rxActLen) { + ReturnCode ret; + + if ((cmd == NFCIP_CMD_DEP_REQ) || + (cmd == NFCIP_CMD_DEP_RES)) /* this method cannot be used for DEPs */ + { + return RFAL_ERR_PARAM; + } + + /* Assign the global params for this TxRx */ + gNfcip.rxBuf = rxBuf; + gNfcip.rxBufLen = rxBufLen; + gNfcip.rxRcvdLen = rxActLen; + + /*******************************************************************************/ + /* Transmission */ + /*******************************************************************************/ + if (txBuf != NULL) /* if nothing to Tx, just do Rx */ + { + RFAL_EXIT_ON_ERR(ret, nfcipTx(cmd, txBuf, paylBuf, paylBufLen, 0, fwt)); + } + + /*******************************************************************************/ + /* Reception */ + /*******************************************************************************/ + ret = nfcipDataRx(true); + if (ret != RFAL_ERR_NONE) { + return ret; + } + + /*******************************************************************************/ + *rxActLen = *rxBuf; /* Use LEN byte instead due to with/without CRC modes */ + return RFAL_ERR_NONE; /* Tx and Rx completed successfully */ +} + +/*******************************************************************************/ +static ReturnCode nfcipDEPControlMsg(uint8_t pfb, uint8_t RTOX) { + uint8_t ctrlMsg[20]; + uint32_t fwt; + + /*******************************************************************************/ + /* Calculate Cmd and fwt to be used */ + /*******************************************************************************/ + const rfalNfcDepCmd depCmd = + ((gNfcip.cfg.role == RFAL_NFCDEP_ROLE_TARGET) ? NFCIP_CMD_DEP_RES + : NFCIP_CMD_DEP_REQ); + fwt = + ((gNfcip.cfg.role == RFAL_NFCDEP_ROLE_TARGET) + ? NFCIP_NO_FWT + : (nfcip_PFBisSTO(pfb) ? ((RTOX * gNfcip.cfg.fwt) + gNfcip.cfg.dFwt) + : (gNfcip.cfg.fwt + gNfcip.cfg.dFwt))); + + if (nfcip_PFBisSTO(pfb)) { + ctrlMsg[RFAL_NFCDEP_DEPREQ_HEADER_LEN] = RTOX; + return nfcipTx(depCmd, ctrlMsg, &ctrlMsg[RFAL_NFCDEP_DEPREQ_HEADER_LEN], + sizeof(uint8_t), pfb, fwt); + } else { + return nfcipTx(depCmd, ctrlMsg, NULL, 0, pfb, fwt); + } +} + +/*******************************************************************************/ +static void nfcipClearCounters(void) { + gNfcip.cntATNRetrys = 0; + gNfcip.cntNACKRetrys = 0; + gNfcip.cntTORetrys = 0; + gNfcip.cntTxRetrys = 0; + gNfcip.cntRTOXRetrys = 0; +} + +/*******************************************************************************/ +static ReturnCode nfcipInitiatorHandleDEP(ReturnCode rxRes, uint16_t rxLen, + uint16_t *outActRxLen, + bool *outIsChaining) { + ReturnCode ret; + uint8_t nfcDepLen; + uint8_t rxMsgIt; + uint8_t rxPFB; + uint8_t rxRTOX; + uint8_t optHdrLen; + + ret = RFAL_ERR_INTERNAL; + rxMsgIt = 0; + optHdrLen = 0; + + *outActRxLen = 0; + *outIsChaining = false; + + /*******************************************************************************/ + /* Handle reception errors */ + /*******************************************************************************/ + switch (rxRes) { + /*******************************************************************************/ + /* Timeout -> Digital 1.0 14.15.5.6 */ + case RFAL_ERR_TIMEOUT: + + nfcipLogI(" NFCIP(I) TIMEOUT TORetrys:%d \r\n", gNfcip.cntTORetrys); + + /* Digital 1.0 14.15.5.6 - If nTO >= Max raise protocol error */ + if (gNfcip.cntTORetrys++ >= RFAL_NFCDEP_TO_RETRYS) { + return RFAL_ERR_PROTO; + } + + /*******************************************************************************/ + /* Upon Timeout error, if Deactivation is pending, no more error recovery + * will be done #54. + * This is used to address the issue some devices that havea big TO. + * Normally LLCP layer has timeout already, and NFCIP layer is still + * running error handling, retrying ATN/NACKs */ + /*******************************************************************************/ + if (nfcipIsDeactivationPending()) { + nfcipLogI(" skipping error recovery due deactivation pending \r\n"); + return RFAL_ERR_TIMEOUT; + } + + /* Digital 1.0 14.15.5.6 1) If last PDU was NACK */ + if (nfcip_PFBisRNACK(gNfcip.lastPFB)) { + /* Digital 1.0 14.15.5.6 2) if NACKs failed raise protocol error */ + if (gNfcip.cntNACKRetrys++ >= RFAL_NFCDEP_MAX_NACK_RETRYS) { + return RFAL_ERR_PROTO; + } + + /* Send NACK */ + nfcipLogI(" NFCIP(I) Sending NACK retry: %d \r\n", + gNfcip.cntNACKRetrys); + RFAL_EXIT_ON_ERR(ret, + nfcipDEPControlMsg(nfcip_PFBRPDU_NACK(gNfcip.pni), 0)); + return RFAL_ERR_BUSY; + } + + nfcipLogI(" NFCIP(I) Checking if to send ATN ATNRetrys: %d \r\n", + gNfcip.cntATNRetrys); + + /* Digital 1.0 14.15.5.6 3) Otherwise send ATN */ + if (gNfcip.cntATNRetrys++ >= RFAL_NFCDEP_MAX_ATN_RETRYS) { + return RFAL_ERR_PROTO; + } + + /* Send ATN */ + nfcipLogI(" NFCIP(I) Sending ATN \r\n"); + RFAL_EXIT_ON_ERR(ret, nfcipDEPControlMsg(nfcip_PFBSPDU_ATN(), 0)); + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + /* Data rcvd with error -> Digital 1.0 14.12.5.4 */ + case RFAL_ERR_CRC: + case RFAL_ERR_PAR: + case RFAL_ERR_FRAMING: + case RFAL_ERR_RF_COLLISION: + + nfcipLogI(" NFCIP(I) rx Error: %d \r\n", rxRes); + + /* Digital 1.0 14.12.5.4 Tx Error with data, ignore */ + if (rxLen < NFCIP_MIN_TXERROR_LEN) { + nfcipLogI(" NFCIP(I) Transmission error w data \r\n"); +#if 0 + if(gNfcip.cfg.commMode == RFAL_NFCDEP_COMM_PASSIVE) + { + nfcipLogI( " NFCIP(I) Transmission error w data -> reEnabling Rx \r\n" ); + nfcipReEnableRxTout( NFCIP_TRECOV ); + return RFAL_ERR_BUSY; + } +#endif /* 0 */ + } + + /* Digital 1.1 16.12.5.4 if NACKs failed raise Transmission error */ + if (gNfcip.cntNACKRetrys++ >= RFAL_NFCDEP_MAX_NACK_RETRYS) { + return RFAL_ERR_FRAMING; + } + + /* Send NACK */ + nfcipLogI(" NFCIP(I) Sending NACK \r\n"); + RFAL_EXIT_ON_ERR(ret, + nfcipDEPControlMsg(nfcip_PFBRPDU_NACK(gNfcip.pni), 0)); + return RFAL_ERR_BUSY; + + case RFAL_ERR_NONE: + break; + + case RFAL_ERR_BUSY: + return RFAL_ERR_BUSY; /* Debug purposes */ + + default: + nfcipLogW(" NFCIP(I) Error: %d \r\n", rxRes); + return rxRes; + } + + /*******************************************************************************/ + /* Rx OK check if valid DEP PDU */ + /*******************************************************************************/ + + if (gNfcip.rxBuf == NULL) { + return RFAL_ERR_IO; + } + + /* Due to different modes on ST25R391x (with/without CRC) use NFC-DEP LEN + * instead of bytes retrieved */ + nfcDepLen = gNfcip.rxBuf[rxMsgIt++]; + + nfcipLogD(" NFCIP(I) rx OK: %d bytes \r\n", nfcDepLen); + + /* Digital 1.0 14.15.5.5 Protocol Error */ + if (gNfcip.rxBuf[rxMsgIt++] != NFCIP_RES) { + nfcipLogW(" NFCIP(I) error %02X instead of %02X \r\n", + gNfcip.rxBuf[(rxMsgIt - 1U)], NFCIP_RES); + return RFAL_ERR_PROTO; + } + + /* Digital 1.0 14.15.5.5 Protocol Error */ + if (gNfcip.rxBuf[rxMsgIt++] != (uint8_t)NFCIP_CMD_DEP_RES) { + nfcipLogW(" NFCIP(I) error %02X instead of %02X \r\n", + gNfcip.rxBuf[(rxMsgIt - 1U)], NFCIP_CMD_DEP_RES); + return RFAL_ERR_PROTO; + } + + rxPFB = gNfcip.rxBuf[rxMsgIt++]; + + /*******************************************************************************/ + /* Check for valid PFB type */ + if (!(nfcip_PFBisSPDU(rxPFB) || nfcip_PFBisRPDU(rxPFB) || + nfcip_PFBisIPDU(rxPFB))) { + return RFAL_ERR_PROTO; + } + + /*******************************************************************************/ + /* Digital 1.0 14.8.2.1 check if DID is expected and match -> Protocol Error + */ + if (gNfcip.cfg.did != RFAL_NFCDEP_DID_NO) { + if ((gNfcip.rxBuf[rxMsgIt++] != gNfcip.cfg.did) || + (!nfcip_PFBhasDID(rxPFB))) { + return RFAL_ERR_PROTO; + } + optHdrLen++; /* Inc header optional field cnt*/ + } else if (nfcip_PFBhasDID(rxPFB)) /* DID not expected but rcv */ + { + return RFAL_ERR_PROTO; + } else { + /* MISRA 15.7 - Empty else */ + } + + /*******************************************************************************/ + /* Digital 1.0 14.6.2.8 & 14.6.3.11 NAD must not be used */ + if (gNfcip.cfg.nad != RFAL_NFCDEP_NAD_NO) { + if ((gNfcip.rxBuf[rxMsgIt++] != gNfcip.cfg.nad) || + (!nfcip_PFBhasNAD(rxPFB))) { + return RFAL_ERR_PROTO; + } + optHdrLen++; /* Inc header optional field cnt*/ + } else if (nfcip_PFBhasNAD(rxPFB)) /* NAD not expected but rcv */ + { + return RFAL_ERR_PROTO; + } else { + /* MISRA 15.7 - Empty else */ + } + + /*******************************************************************************/ + /* Process R-PDU */ + /*******************************************************************************/ + if (nfcip_PFBisRPDU(rxPFB)) { + /*******************************************************************************/ + /* R ACK */ + /*******************************************************************************/ + if (nfcip_PFBisRACK(rxPFB)) { + nfcipLogI(" NFCIP(I) Rcvd ACK \r\n"); + if (gNfcip.pni == nfcip_PBF_PNI(rxPFB)) { + /* 14.12.3.3 R-ACK with correct PNI -> Increment */ + gNfcip.pni = nfcip_PNIInc(gNfcip.pni); + + /* R-ACK while not performing chaining -> Protocol error*/ + if (!gNfcip.isTxChaining) { + return RFAL_ERR_PROTO; + } + + nfcipClearCounters(); + gNfcip.state = NFCIP_ST_INIT_DEP_IDLE; + return RFAL_ERR_NONE; /* This block has been transmitted */ + } else /* Digital 1.0 14.12.4.5 ACK with wrong PNI Initiator may + retransmit */ + { + if (gNfcip.cntTxRetrys++ >= RFAL_NFCDEP_MAX_TX_RETRYS) { + return RFAL_ERR_PROTO; + } + + /* Extended the MAY in Digital 1.0 14.12.4.5 to only reTransmit if the + * ACK is for the previous DEP, otherwise raise Protocol immediately If + * the PNI difference is more than 1 it is worthless to reTransmit 3x + * and after raise the error */ + + if (nfcip_PNIDec(gNfcip.pni) == nfcip_PBF_PNI(rxPFB)) { + /* ReTransmit */ + nfcipLogI(" NFCIP(I) Rcvd ACK prev PNI -> reTx \r\n"); + gNfcip.state = NFCIP_ST_INIT_DEP_TX; + return RFAL_ERR_BUSY; + } + + nfcipLogI(" NFCIP(I) Rcvd ACK unexpected far PNI -> Error \r\n"); + return RFAL_ERR_PROTO; + } + } else /* Digital 1.0 - 14.12.5.2 Target must never send NACK */ + { + return RFAL_ERR_PROTO; + } + } + + /*******************************************************************************/ + /* Process S-PDU */ + /*******************************************************************************/ + if (nfcip_PFBisSPDU(rxPFB)) { + nfcipLogI(" NFCIP(I) Rcvd S-PDU \r\n"); + /*******************************************************************************/ + /* S ATN */ + /*******************************************************************************/ + if (nfcip_PFBisSATN(rxPFB)) /* If is a S-ATN */ + { + nfcipLogI(" NFCIP(I) Rcvd ATN \r\n"); + if (nfcip_PFBisSATN(gNfcip.lastPFB)) /* Check if is expected */ + { + gNfcip.cntATNRetrys = 0; /* Clear ATN counter */ + + /* Although spec is not clear NFC Forum Digital test is expecting to + * retransmit upon receiving ATN_RES */ + if (nfcip_PFBisSTO(gNfcip.lastPFBnATN)) { + nfcipLogI(" NFCIP(I) Rcvd ATN -> reTx RTOX_RES \r\n"); + RFAL_EXIT_ON_ERR( + ret, nfcipDEPControlMsg(nfcip_PFBSPDU_TO(), gNfcip.lastRTOX)); + } else { + /* ReTransmit ? */ + if (gNfcip.cntTxRetrys++ >= RFAL_NFCDEP_MAX_TX_RETRYS) { + return RFAL_ERR_PROTO; + } + + nfcipLogI(" NFCIP(I) Rcvd ATN -> reTx PNI: %d \r\n", gNfcip.pni); + gNfcip.state = NFCIP_ST_INIT_DEP_TX; + } + + return RFAL_ERR_BUSY; + } else /* Digital 1.0 14.12.4.4 & 14.12.4.8 */ + { + return RFAL_ERR_PROTO; + } + } + /*******************************************************************************/ + /* S TO */ + /*******************************************************************************/ + else if (nfcip_PFBisSTO(rxPFB)) /* If is a S-TO (RTOX) */ + { + nfcipLogI(" NFCIP(I) Rcvd TO \r\n"); + + rxRTOX = gNfcip.rxBuf[rxMsgIt++]; + + /* Digital 1.1 16.12.4.3 - Initiator MAY stop accepting subsequent RTOX + * Req * + * - RTOX request to an ATN -> Protocol error */ + if ((gNfcip.cntRTOXRetrys++ > RFAL_NFCDEP_MAX_RTOX_RETRYS) || + nfcip_PFBisSATN(gNfcip.lastPFB)) { + return RFAL_ERR_PROTO; + } + + /* Digital 1.1 16.8.4.1 RTOX must be between [1,59] */ + if ((rxRTOX < NFCIP_INIT_MIN_RTOX) || (rxRTOX > NFCIP_INIT_MAX_RTOX)) { + return RFAL_ERR_PROTO; + } + + RFAL_EXIT_ON_ERR(ret, nfcipDEPControlMsg(nfcip_PFBSPDU_TO(), rxRTOX)); + gNfcip.lastRTOX = rxRTOX; + + return RFAL_ERR_BUSY; + } else { + /* Unexpected S-PDU */ + return RFAL_ERR_PROTO; + } + } + + /*******************************************************************************/ + /* Process I-PDU */ + /*******************************************************************************/ + if (nfcip_PFBisIPDU(rxPFB)) { + if (gNfcip.pni != nfcip_PBF_PNI(rxPFB)) { + nfcipLogI(" NFCIP(I) Rcvd IPDU wrong PNI curPNI: %d rxPNI: %d \r\n", + gNfcip.pni, nfcip_PBF_PNI(rxPFB)); + return RFAL_ERR_PROTO; + } + + nfcipLogD(" NFCIP(I) Rcvd IPDU OK PNI: %d \r\n", gNfcip.pni); + + /* 14.12.3.3 I-PDU with correct PNI -> Increment */ + gNfcip.pni = nfcip_PNIInc(gNfcip.pni); + + /* Successful data Exchange */ + nfcipClearCounters(); + *outActRxLen = + ((uint16_t)nfcDepLen - RFAL_NFCDEP_DEP_HEADER - (uint16_t)optHdrLen); + + if ((&gNfcip.rxBuf[gNfcip.rxBufPaylPos] != + &gNfcip.rxBuf[RFAL_NFCDEP_DEP_HEADER + optHdrLen]) && + (*outActRxLen > 0U)) { + RFAL_MEMMOVE(&gNfcip.rxBuf[gNfcip.rxBufPaylPos], + &gNfcip.rxBuf[RFAL_NFCDEP_DEP_HEADER + optHdrLen], + *outActRxLen); + } + + /*******************************************************************************/ + /* Check if target is indicating chaining MI */ + /*******************************************************************************/ + if (nfcip_PFBisIMI(rxPFB)) { + gNfcip.isRxChaining = true; + *outIsChaining = true; + + nfcipLogD(" NFCIP(I) Rcvd IPDU OK w MI -> ACK \r\n"); + RFAL_EXIT_ON_ERR(ret, nfcipDEPControlMsg(nfcip_PFBRPDU_ACK(gNfcip.pni), + gNfcip.rxBuf[rxMsgIt++])); + + return RFAL_ERR_AGAIN; /* Send Again signalling to run again, but some + chaining data has arrived*/ + } else { + gNfcip.isRxChaining = false; + gNfcip.state = NFCIP_ST_INIT_DEP_IDLE; + + ret = RFAL_ERR_NONE; /* Data exchange done */ + } + } + return ret; +} + +/*******************************************************************************/ +static ReturnCode nfcipTargetHandleRX(ReturnCode rxRes, uint16_t *outActRxLen, + bool *outIsChaining) { + ReturnCode ret; + uint8_t nfcDepLen; + uint8_t rxMsgIt; + uint8_t rxPFB; + uint8_t optHdrLen; + uint8_t resBuf[RFAL_NFCDEP_HEADER_PAD + NFCIP_TARGET_RES_MAX]; + + ret = RFAL_ERR_INTERNAL; + rxMsgIt = 0; + optHdrLen = 0; + + *outActRxLen = 0; + *outIsChaining = false; + + /*******************************************************************************/ + /* Handle reception errors */ + /*******************************************************************************/ + switch (rxRes) { + /*******************************************************************************/ + case RFAL_ERR_NONE: + break; + + case RFAL_ERR_LINK_LOSS: + nfcipLogW(" NFCIP(T) Error: %d \r\n", rxRes); + return rxRes; + + case RFAL_ERR_BUSY: + return RFAL_ERR_BUSY; /* Debug purposes */ + + case RFAL_ERR_TIMEOUT: + case RFAL_ERR_CRC: + case RFAL_ERR_PAR: + case RFAL_ERR_FRAMING: + case RFAL_ERR_PROTO: + default: + /* Digital 1.1 16.12.5.2 The Target MUST NOT attempt any error recovery. + * * The Target MUST always stay in receive mode when a * Transmission + * Error or a Protocol Error occurs. * + * * + * Do not push Transmission/Protocol Errors to upper layer in Listen Mode + * #766 */ + + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; + } + + /*******************************************************************************/ + /* Rx OK check if valid DEP PDU */ + /*******************************************************************************/ + + if (gNfcip.rxBuf == NULL) { + return RFAL_ERR_IO; + } + + /* Due to different modes on ST25R391x (with/without CRC) use NFC-DEP LEN + * instead of bytes retrieved */ + nfcDepLen = gNfcip.rxBuf[rxMsgIt++]; + + nfcipLogD(" NFCIP(T) rx OK: %d bytes \r\n", nfcDepLen); + + if (gNfcip.rxBuf[rxMsgIt++] != NFCIP_REQ) { + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore bad request */ + } + + /*******************************************************************************/ + /* Check whether target rcvd a normal DEP or deactivation request */ + /*******************************************************************************/ + switch (gNfcip.rxBuf[rxMsgIt++]) { + /*******************************************************************************/ + case (uint8_t)NFCIP_CMD_DEP_REQ: + break; /* Continue to normal DEP processing */ + + /*******************************************************************************/ + case (uint8_t)NFCIP_CMD_DSL_REQ: + + nfcipLogI(" NFCIP(T) rx DSL \r\n"); + + /* Digital 1.0 14.9.1.2 If DID is used and incorrect ignore it */ + /* [Digital 1.0, 16.9.1.2]: If DID == 0, Target SHALL ignore DSL_REQ with + * DID */ + if ((((gNfcip.rxBuf[rxMsgIt++] != gNfcip.cfg.did) || + (nfcDepLen != RFAL_NFCDEP_DSL_RLS_LEN_DID)) && + (gNfcip.cfg.did != RFAL_NFCDEP_DID_NO)) || + ((gNfcip.cfg.did == RFAL_NFCDEP_DID_NO) && + (nfcDepLen != RFAL_NFCDEP_DSL_RLS_LEN_NO_DID))) { + nfcipLogI(" NFCIP(T) DSL wrong DID, ignoring \r\n"); + return RFAL_ERR_BUSY; + } + + nfcipTx(NFCIP_CMD_DSL_RES, resBuf, NULL, 0, 0, NFCIP_NO_FWT); + + gNfcip.state = NFCIP_ST_TARG_DEP_SLEEP; + return RFAL_ERR_SLEEP_REQ; + + /*******************************************************************************/ + case (uint8_t)NFCIP_CMD_RLS_REQ: + + nfcipLogI(" NFCIP(T) rx RLS \r\n"); + + /* Digital 1.0 14.10.1.2 If DID is used and incorrect ignore it */ + /* [Digital 1.0, 16.10.2.2]: If DID == 0, Target SHALL ignore DSL_REQ with + * DID */ + if ((((gNfcip.rxBuf[rxMsgIt++] != gNfcip.cfg.did) || + (nfcDepLen != RFAL_NFCDEP_DSL_RLS_LEN_DID)) && + (gNfcip.cfg.did != RFAL_NFCDEP_DID_NO)) || + ((gNfcip.cfg.did == RFAL_NFCDEP_DID_NO) && + (nfcDepLen > RFAL_NFCDEP_DSL_RLS_LEN_NO_DID))) { + nfcipLogI(" NFCIP(T) RLS wrong DID, ignoring \r\n"); + return RFAL_ERR_BUSY; + } + + nfcipTx(NFCIP_CMD_RLS_RES, resBuf, NULL, 0, 0, NFCIP_NO_FWT); + + gNfcip.state = NFCIP_ST_TARG_DEP_IDLE; + return RFAL_ERR_RELEASE_REQ; + + /*******************************************************************************/ + /*case NFCIP_CMD_PSL_REQ: PSL must be handled in Activation + * only */ + /*case NFCIP_CMD_WUP_REQ: WUP not in NFC Forum Digital 1.0 */ + default: + + /* Don't go to NFCIP_ST_TARG_DEP_IDLE state as it needs to ignore this * + * invalid frame, and keep waiting for more frames */ + + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore bad frame */ + } + + /*******************************************************************************/ + + rxPFB = gNfcip.rxBuf[rxMsgIt++]; /* Store rcvd PFB */ + + /*******************************************************************************/ + /* Check for valid PFB type */ + if (!(nfcip_PFBisSPDU(rxPFB) || nfcip_PFBisRPDU(rxPFB) || + nfcip_PFBisIPDU(rxPFB))) { + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore invalid PFB */ + } + + /*******************************************************************************/ + if (gNfcip.cfg.did != RFAL_NFCDEP_DID_NO) { + if (!nfcip_PFBhasDID(rxPFB)) { + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore bad/missing DID */ + } + if (gNfcip.rxBuf[rxMsgIt++] != gNfcip.cfg.did) /* MISRA 13.5 */ + { + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore bad/missing DID */ + } + optHdrLen++; /* Inc header optional field cnt*/ + } else if (nfcip_PFBhasDID(rxPFB)) /* DID not expected but rcv */ + { + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore unexpected DID */ + } else { + /* MISRA 15.7 - Empty else */ + } + + /*******************************************************************************/ + if (gNfcip.cfg.nad != RFAL_NFCDEP_NAD_NO) { + if ((gNfcip.rxBuf[rxMsgIt++] != gNfcip.cfg.did) || + (!nfcip_PFBhasDID(rxPFB))) { + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore bad/missing DID */ + } + optHdrLen++; /* Inc header optional field cnt*/ + } else if (nfcip_PFBhasNAD(rxPFB)) /* NAD not expected but rcv */ + { + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore unexpected NAD */ + } else { + /* MISRA 15.7 - Empty else */ + } + + /*******************************************************************************/ + /* Process R-PDU */ + /*******************************************************************************/ + if (nfcip_PFBisRPDU(rxPFB)) { + nfcipLogD(" NFCIP(T) Rcvd R-PDU \r\n"); + /*******************************************************************************/ + /* R ACK */ + /*******************************************************************************/ + if (nfcip_PFBisRACK(rxPFB)) { + nfcipLogI(" NFCIP(T) Rcvd ACK \r\n"); + if (gNfcip.pni == nfcip_PBF_PNI(rxPFB)) { + /* R-ACK while not performing chaining -> Protocol error */ + if (!gNfcip.isTxChaining) { + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore unexpected ACK */ + } + + /* This block has been transmitted and acknowledged, perform RTOX until + * next data is provided */ + + /* Digital 1.1 16.12.4.7 - If ACK rcvd continue with chaining or an + * RTOX */ + nfcipTimerStart( + gNfcip.RTOXTimer, + nfcipRTOXAdjust(nfcipConv1FcToMs(rfalNfcDepWT2RWT(gNfcip.cfg.to)))); + gNfcip.state = NFCIP_ST_TARG_DEP_RTOX; + + return RFAL_ERR_NONE; /* This block has been transmitted */ + } + + /* Digital 1.0 14.12.3.4 - If last send was ATN and rx PNI is minus 1 */ + else if (nfcip_PFBisSATN(gNfcip.lastPFB) && + (nfcip_PNIDec(gNfcip.pni) == nfcip_PBF_PNI(rxPFB))) { + nfcipLogI(" NFCIP(T) wrong PNI, last was ATN reTx \r\n"); + /* Spec says to leave current PNI as is, but will be Inc after Tx, + * remaining the same */ + gNfcip.pni = nfcip_PNIDec(gNfcip.pni); + + gNfcip.state = NFCIP_ST_TARG_DEP_TX; + return RFAL_ERR_BUSY; + } else { + /* MISRA 15.7 - Empty else */ + } + } + /*******************************************************************************/ + /* R NACK */ + /*******************************************************************************/ + /* ISO 18092 12.6.1.3.3 When rcv NACK if PNI = prev PNI sent -> reTx */ + else if (nfcip_PFBisRNACK(rxPFB) && + (nfcip_PNIDec(gNfcip.pni) == nfcip_PBF_PNI(rxPFB))) { + nfcipLogI(" NFCIP(T) Rcvd NACK \r\n"); + + gNfcip.pni = nfcip_PNIDec(gNfcip.pni); /* Dec so that has the prev PNI */ + + gNfcip.state = NFCIP_ST_TARG_DEP_TX; + return RFAL_ERR_BUSY; + } else { + nfcipLogI(" NFCIP(T) Unexpected R-PDU \r\n"); + + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore unexpected R-PDU */ + } + } + + /*******************************************************************************/ + /* Process S-PDU */ + /*******************************************************************************/ + if (nfcip_PFBisSPDU(rxPFB)) { + nfcipLogD(" NFCIP(T) Rcvd S-PDU \r\n"); + + /*******************************************************************************/ + /* S ATN */ + /*******************************************************************************/ + /* ISO 18092 12.6.3 Attention */ + if (nfcip_PFBisSATN(rxPFB)) /* If is a S-ATN */ + { + nfcipLogI(" NFCIP(T) Rcvd ATN curPNI: %d \r\n", gNfcip.pni); + RFAL_EXIT_ON_ERR(ret, nfcipDEPControlMsg(nfcip_PFBSPDU_ATN(), 0)); + return RFAL_ERR_BUSY; + } + + /*******************************************************************************/ + /* S TO */ + /*******************************************************************************/ + else if (nfcip_PFBisSTO(rxPFB)) /* If is a S-TO (RTOX) */ + { + if (nfcip_PFBisSTO(gNfcip.lastPFBnATN)) { + nfcipLogI(" NFCIP(T) Rcvd TO \r\n"); + + /* Digital 1.1 16.8.4.6 RTOX value in RES different that in REQ -> + * Protocol Error */ + if (gNfcip.lastRTOX != gNfcip.rxBuf[rxMsgIt++]) { + nfcipLogI(" NFCIP(T) Mismatched RTOX value \r\n"); + + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore unexpected RTOX value + */ + } + + /* Clear waiting for RTOX Ack Flag */ + gNfcip.isWait4RTOX = false; + + /* Check if a Tx is already pending */ + if (gNfcip.isTxPending) { + nfcipLogW(" NFCIP(T) Tx pending, go immediately to TX \r\n"); + + gNfcip.state = NFCIP_ST_TARG_DEP_TX; + return RFAL_ERR_BUSY; + } + + /* Start RTOX timer and change to check state */ + nfcipTimerStart( + gNfcip.RTOXTimer, + nfcipRTOXAdjust(nfcipConv1FcToMs(gNfcip.lastRTOX * + rfalNfcDepWT2RWT(gNfcip.cfg.to)))); + gNfcip.state = NFCIP_ST_TARG_DEP_RTOX; + + return RFAL_ERR_BUSY; + } + } else { + /* Unexpected S-PDU */ + nfcipLogI(" NFCIP(T) Unexpected S-PDU \r\n"); + + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore unexpected S-PDU */ + } + } + + /*******************************************************************************/ + /* Process I-PDU */ + /*******************************************************************************/ + if (nfcip_PFBisIPDU(rxPFB)) { + if (gNfcip.pni != nfcip_PBF_PNI(rxPFB)) { + nfcipLogI(" NFCIP(T) Rcvd IPDU wrong PNI curPNI: %d rxPNI: %d \r\n", + gNfcip.pni, nfcip_PBF_PNI(rxPFB)); + + /* Digital 1.1 16.12.3.4 - If last send was ATN and rx PNI is minus 1 */ + if (nfcip_PFBisSATN(gNfcip.lastPFB) && + (nfcip_PNIDec(gNfcip.pni) == nfcip_PBF_PNI(rxPFB))) { + /* Spec says to leave current PNI as is, but will be Inc after Data Tx, + * remaining the same */ + gNfcip.pni = nfcip_PNIDec(gNfcip.pni); + + if (nfcip_PFBisIMI(rxPFB)) { + nfcipLogI( + " NFCIP(T) PNI = prevPNI && ATN before && chaining -> send ACK " + "\r\n"); + RFAL_EXIT_ON_ERR(ret, + nfcipDEPControlMsg(nfcip_PFBRPDU_ACK(gNfcip.pni), + gNfcip.rxBuf[rxMsgIt++])); + + /* Digital 1.1 16.12.3.4 (...) leave the current PNI unchanged + * afterwards */ + gNfcip.pni = nfcip_PNIInc(gNfcip.pni); + } else { + nfcipLogI( + " NFCIP(T) PNI = prevPNI && ATN before -> reTx last I-PDU \r\n"); + gNfcip.state = NFCIP_ST_TARG_DEP_TX; + } + + return RFAL_ERR_BUSY; + } + + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + return RFAL_ERR_BUSY; /* RFAL_ERR_PROTO - Ignore bad PNI value */ + } + + nfcipLogD(" NFCIP(T) Rcvd IPDU OK PNI: %d \r\n", gNfcip.pni); + + /*******************************************************************************/ + /* Successful data exchange */ + /*******************************************************************************/ + *outActRxLen = + ((uint16_t)nfcDepLen - RFAL_NFCDEP_DEP_HEADER - (uint16_t)optHdrLen); + + nfcipClearCounters(); + + if ((&gNfcip.rxBuf[gNfcip.rxBufPaylPos] != + &gNfcip.rxBuf[RFAL_NFCDEP_DEP_HEADER + optHdrLen]) && + (*outActRxLen > 0U)) { + RFAL_MEMMOVE(&gNfcip.rxBuf[gNfcip.rxBufPaylPos], + &gNfcip.rxBuf[RFAL_NFCDEP_DEP_HEADER + optHdrLen], + *outActRxLen); + } + + /*******************************************************************************/ + /* Check if Initiator is indicating chaining MI */ + /*******************************************************************************/ + if (nfcip_PFBisIMI(rxPFB)) { + gNfcip.isRxChaining = true; + *outIsChaining = true; + + nfcipLogD(" NFCIP(T) Rcvd IPDU OK w MI -> ACK \r\n"); + RFAL_EXIT_ON_ERR(ret, nfcipDEPControlMsg(nfcip_PFBRPDU_ACK(gNfcip.pni), + gNfcip.rxBuf[rxMsgIt++])); + + gNfcip.pni = nfcip_PNIInc(gNfcip.pni); + + return RFAL_ERR_AGAIN; /* Send Again signalling to run again, but some + chaining data has arrived*/ + } else { + if (gNfcip.isRxChaining) { + nfcipLogI(" NFCIP(T) Rcvd last IPDU chaining finished \r\n"); + } + + /*******************************************************************************/ + /* Reception done, send to DH and start RTOX timer */ + /*******************************************************************************/ + nfcipTimerStart( + gNfcip.RTOXTimer, + nfcipRTOXAdjust(nfcipConv1FcToMs(rfalNfcDepWT2RWT(gNfcip.cfg.to)))); + gNfcip.state = NFCIP_ST_TARG_DEP_RTOX; + + gNfcip.isRxChaining = false; + ret = RFAL_ERR_NONE; /* Data exchange done */ + } + } + return ret; +} + +/*******************************************************************************/ +static ReturnCode nfcipTx(rfalNfcDepCmd cmd, uint8_t *txBuf, uint8_t *paylBuf, + uint16_t paylLen, uint8_t pfbData, uint32_t fwt) { + uint16_t txBufIt; + uint8_t *txBlock; + uint8_t *payloadBuf; + uint8_t pfb; + + if (txBuf == NULL) { + return RFAL_ERR_PARAM; + } + + payloadBuf = paylBuf; /* MISRA 17.8: Use intermediate variable */ + + if ((paylLen == 0U) || (payloadBuf == NULL)) { + payloadBuf = + (uint8_t *)&txBuf[RFAL_NFCDEP_DEPREQ_HEADER_LEN]; /* If not a DEP (no + Data) ensure enough + space for header */ + } + + txBufIt = 0; + pfb = pfbData; /* MISRA 17.8: Use intermediate variable */ + + txBlock = payloadBuf; /* Point to beginning of the Data, and go backwards */ + + gNfcip.lastCmd = (uint8_t)cmd; /* Store last cmd sent */ + gNfcip.lastPFB = NFCIP_PFB_INVALID; /* Reset last pfb sent */ + + /*******************************************************************************/ + /* Compute outgoing NFCIP message */ + /*******************************************************************************/ + switch (cmd) { + /*******************************************************************************/ + case NFCIP_CMD_ATR_RES: + case NFCIP_CMD_ATR_REQ: + + rfalNfcDepSetNFCID(payloadBuf, gNfcip.cfg.nfcid, + gNfcip.cfg.nfcidLen); /* NFCID */ + txBufIt += RFAL_NFCDEP_NFCID3_LEN; + + payloadBuf[txBufIt++] = gNfcip.cfg.did; /* DID */ + payloadBuf[txBufIt++] = gNfcip.cfg.bs; /* BS */ + payloadBuf[txBufIt++] = gNfcip.cfg.br; /* BR */ + + if (cmd == NFCIP_CMD_ATR_RES) { + payloadBuf[txBufIt++] = gNfcip.cfg.to; /* ATR_RES[ TO ] */ + } + + if (gNfcip.cfg.gbLen > 0U) { + payloadBuf[txBufIt++] = + nfcip_PPwGB(gNfcip.cfg.lr); /* PP signalling GB */ + RFAL_MEMCPY(&payloadBuf[txBufIt], gNfcip.cfg.gb, + gNfcip.cfg.gbLen); /* set General Bytes */ + txBufIt += gNfcip.cfg.gbLen; + } else { + payloadBuf[txBufIt++] = + rfalNfcDepLR2PP(gNfcip.cfg.lr); /* PP without GB */ + } + + if ((txBufIt + RFAL_NFCDEP_CMDTYPE_LEN + RFAL_NFCDEP_CMD_LEN) > + RFAL_NFCDEP_ATRREQ_MAX_LEN) /* Check max ATR length (ATR_REQ = + ATR_RES)*/ + { + return RFAL_ERR_PARAM; + } + break; + + /*******************************************************************************/ + case NFCIP_CMD_WUP_REQ: /* ISO 18092 - 12.5.2.1 */ + + rfalNfcDepSetNFCID((payloadBuf), gNfcip.cfg.nfcid, + gNfcip.cfg.nfcidLen); /* NFCID */ + txBufIt += RFAL_NFCDEP_NFCID3_LEN; + + *(--txBlock) = gNfcip.cfg.did; /* DID */ + break; + + /*******************************************************************************/ + case NFCIP_CMD_WUP_RES: /* ISO 18092 - 12.5.2.2 */ + case NFCIP_CMD_PSL_REQ: + case NFCIP_CMD_PSL_RES: + + *(--txBlock) = gNfcip.cfg.did; /* DID */ + break; + + /*******************************************************************************/ + case NFCIP_CMD_RLS_REQ: + case NFCIP_CMD_RLS_RES: + case NFCIP_CMD_DSL_REQ: + case NFCIP_CMD_DSL_RES: + + /* Digital 1.0 - 14.8.1.1 & 14.9.1.1 & 14.10.1.1 Only add DID if not 0 */ + if (gNfcip.cfg.did != RFAL_NFCDEP_DID_NO) { + *(--txBlock) = gNfcip.cfg.did; /* DID */ + } + break; + + /*******************************************************************************/ + case NFCIP_CMD_DEP_REQ: + case NFCIP_CMD_DEP_RES: + + /* Compute optional PFB bits */ + if (gNfcip.cfg.did != RFAL_NFCDEP_DID_NO) { + pfb |= NFCIP_PFB_DID_BIT; + } + if (gNfcip.cfg.nad != RFAL_NFCDEP_NAD_NO) { + pfb |= NFCIP_PFB_NAD_BIT; + } + if ((gNfcip.isTxChaining) && (nfcip_PFBisIPDU(pfb))) { + pfb |= NFCIP_PFB_MI_BIT; + } + + /* Store PFB for future handling */ + gNfcip.lastPFB = pfb; /* store PFB sent */ + + if (!nfcip_PFBisSATN(pfb)) { + gNfcip.lastPFBnATN = pfb; /* store last PFB different then ATN */ + } + + /* Add NAD if it is to be supported */ + if (gNfcip.cfg.nad != RFAL_NFCDEP_NAD_NO) { + *(--txBlock) = gNfcip.cfg.nad; /* NAD */ + } + + /* Digital 1.0 - 14.8.1.1 & 14.8.1.1 Only add DID if not 0 */ + if (gNfcip.cfg.did != RFAL_NFCDEP_DID_NO) { + *(--txBlock) = gNfcip.cfg.did; /* DID */ + } + + *(--txBlock) = pfb; /* PFB */ + + /* NCI 1.0 - Check if Empty frames are allowed */ + if ((paylLen == 0U) && nfcipIsEmptyDEPDisabled(gNfcip.cfg.oper) && + nfcip_PFBisIPDU(pfb)) { + return RFAL_ERR_PARAM; + } + break; + + /*******************************************************************************/ + default: + return RFAL_ERR_PARAM; + } + + /*******************************************************************************/ + /* Prepend Header */ + /*******************************************************************************/ + *(--txBlock) = (uint8_t)cmd; /* CMD */ + *(--txBlock) = + (uint8_t)(nfcipCmdIsReq(cmd) ? NFCIP_REQ : NFCIP_RES); /* CMDType */ + + txBufIt += paylLen + + (uint16_t)((uintptr_t)payloadBuf - + (uintptr_t)txBlock); /* Calculate overall buffer size */ + + if (txBufIt > + gNfcip + .fsc) /* Check if msg length violates the maximum payload size FSC */ + { + return RFAL_ERR_NOTSUPP; + } + + /*******************************************************************************/ + return nfcipDataTx(txBlock, txBufIt, fwt); +} + +/* + ****************************************************************************** + * GLOBAL FUNCTIONS + ****************************************************************************** + */ + +/*******************************************************************************/ +static void nfcipConfig(const rfalNfcDepConfigs *cfg) { + if (cfg == NULL) { + return; + } + + RFAL_MEMCPY(&gNfcip.cfg, cfg, + sizeof(rfalNfcDepConfigs)); /* Copy given config to local */ + + gNfcip.cfg.to = RFAL_MIN(RFAL_NFCDEP_WT_TRG_MAX, + gNfcip.cfg.to); /* Ensure proper WT value */ + gNfcip.cfg.did = nfcip_DIDMax(gNfcip.cfg.did); /* Ensure proper DID value */ + gNfcip.fsc = + rfalNfcDepLR2FS(gNfcip.cfg.lr); /* Calculate FSC based on given LR */ + + gNfcip.state = + ((gNfcip.cfg.role == RFAL_NFCDEP_ROLE_TARGET) ? NFCIP_ST_TARG_WAIT_ATR + : NFCIP_ST_INIT_IDLE); +} + +/*******************************************************************************/ +static ReturnCode nfcipRun(uint16_t *outActRxLen, bool *outIsChaining) { + ReturnCode ret; + + ret = RFAL_ERR_SYNTAX; + + nfcipLogD(" NFCIP Run() state: %d \r\n", gNfcip.state); + + switch (gNfcip.state) { + /*******************************************************************************/ + case NFCIP_ST_IDLE: + case NFCIP_ST_INIT_DEP_IDLE: + case NFCIP_ST_TARG_DEP_IDLE: + case NFCIP_ST_TARG_DEP_SLEEP: + return RFAL_ERR_NONE; + + /*******************************************************************************/ + case NFCIP_ST_INIT_DEP_TX: + + nfcipLogD(" NFCIP(I) Tx PNI: %d txLen: %d \r\n", gNfcip.pni, + gNfcip.txBufLen); + ret = nfcipTx(NFCIP_CMD_DEP_REQ, gNfcip.txBuf, + &gNfcip.txBuf[gNfcip.txBufPaylPos], gNfcip.txBufLen, + nfcip_PFBIPDU(gNfcip.pni), + (gNfcip.cfg.fwt + gNfcip.cfg.dFwt)); + + switch (ret) { + case RFAL_ERR_NONE: + gNfcip.state = NFCIP_ST_INIT_DEP_RX; + break; + + case RFAL_ERR_PARAM: + default: + gNfcip.state = NFCIP_ST_INIT_DEP_IDLE; + return ret; + } + /* fall through */ + + /*******************************************************************************/ + case NFCIP_ST_INIT_DEP_RX: /* PRQA S 2003 # MISRA 16.3 - Intentional fall + through */ + + ret = nfcipDataRx(false); + + if (ret != RFAL_ERR_BUSY) { + ret = nfcipInitiatorHandleDEP( + ret, ((gNfcip.rxRcvdLen != NULL) ? *gNfcip.rxRcvdLen : 0U), + outActRxLen, outIsChaining); + } + + break; + + /*******************************************************************************/ + case NFCIP_ST_TARG_DEP_RTOX: + + if (!nfcipTimerisExpired( + gNfcip.RTOXTimer)) /* Do nothing until RTOX timer has expired */ + { + return RFAL_ERR_BUSY; + } + + /* If we cannot send a RTOX raise a Timeout error so that we do not + * hold the field On forever in AP2P */ + if (nfcipIsRTOXReqDisabled(gNfcip.cfg.oper)) { + /* We should reEnable Rx, and measure time between our field Off to + * either report link loss or recover #287 */ + nfcipLogI( + " NFCIP(T) RTOX not sent due to config, NOT reenabling Rx \r\n"); + return RFAL_ERR_TIMEOUT; + } + + if (gNfcip.cntRTOXRetrys++ > + RFAL_NFCDEP_MAX_RTOX_RETRYS) /* Check maximum consecutive RTOX + requests */ + { + return RFAL_ERR_PROTO; + } + + nfcipLogI(" NFCIP(T) RTOX sent \r\n"); + + gNfcip.lastRTOX = nfcip_RTOXTargMax( + gNfcip.cfg.to); /* Calculate requested RTOX value, and send it */ + RFAL_EXIT_ON_ERR(ret, + nfcipDEPControlMsg(nfcip_PFBSPDU_TO(), gNfcip.lastRTOX)); + + /* Set waiting for RTOX Ack Flag */ + gNfcip.isWait4RTOX = true; + + gNfcip.state = + NFCIP_ST_TARG_DEP_RX; /* Go back to Rx to process RTOX ack */ + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + case NFCIP_ST_TARG_DEP_TX: + + nfcipLogD(" NFCIP(T) Tx PNI: %d txLen: %d \r\n", gNfcip.pni, + gNfcip.txBufLen); + ret = nfcipTx(NFCIP_CMD_DEP_RES, gNfcip.txBuf, + &gNfcip.txBuf[gNfcip.txBufPaylPos], gNfcip.txBufLen, + nfcip_PFBIPDU(gNfcip.pni), NFCIP_NO_FWT); + + /* Clear flags */ + gNfcip.isTxPending = false; + gNfcip.isWait4RTOX = false; + + /* Digital 1.0 14.12.3.4 Increment the current PNI after Tx */ + gNfcip.pni = nfcip_PNIInc(gNfcip.pni); + + switch (ret) { + case RFAL_ERR_NONE: + gNfcip.state = NFCIP_ST_TARG_DEP_RX; /* All OK, goto Rx state */ + break; + + case RFAL_ERR_PARAM: + default: + gNfcip.state = + NFCIP_ST_TARG_DEP_IDLE; /* Upon Tx error, goto IDLE state */ + return ret; + } + /* fall through */ + + /*******************************************************************************/ + case NFCIP_ST_TARG_DEP_RX: /* PRQA S 2003 # MISRA 16.3 - Intentional fall + through */ + + if (gNfcip.isReqPending) /* if already has Data should be from a DEP from + nfcipTargetHandleActivation() */ + { + nfcipLogD(" NFCIP(T) Skipping Rx Using DEP from Activation \r\n"); + + gNfcip.isReqPending = false; + ret = RFAL_ERR_NONE; + } else { + ret = nfcipDataRx(false); + } + + if (ret != RFAL_ERR_BUSY) { + ret = nfcipTargetHandleRX(ret, outActRxLen, outIsChaining); + } + + break; + + /*******************************************************************************/ + default: + /* MISRA 16.4: no empty default statement (a comment being enough) */ + break; + } + return ret; +} + +/*******************************************************************************/ +void rfalNfcDepSetDeactivatingCallback(rfalNfcDepDeactCallback pFunc) { + gNfcip.isDeactivating = pFunc; +} + +/*******************************************************************************/ +void rfalNfcDepInitialize(void) { + nfcipLogD(" NFCIP Ini() \r\n"); + + gNfcip.state = NFCIP_ST_IDLE; + gNfcip.isDeactivating = NULL; + + gNfcip.isTxPending = false; + gNfcip.isWait4RTOX = false; + gNfcip.isReqPending = false; + + gNfcip.cfg.oper = + (RFAL_NFCDEP_OPER_FULL_MI_DIS | RFAL_NFCDEP_OPER_EMPTY_DEP_EN | + RFAL_NFCDEP_OPER_ATN_EN | RFAL_NFCDEP_OPER_RTOX_REQ_EN); + + gNfcip.cfg.did = RFAL_NFCDEP_DID_NO; + gNfcip.cfg.nad = RFAL_NFCDEP_NAD_NO; + + gNfcip.cfg.br = RFAL_NFCDEP_Bx_NO_HIGH_BR; + gNfcip.cfg.bs = RFAL_NFCDEP_Bx_NO_HIGH_BR; + + gNfcip.cfg.lr = RFAL_NFCDEP_LR_254; + gNfcip.fsc = rfalNfcDepLR2FS(gNfcip.cfg.lr); + + gNfcip.cfg.gbLen = 0; + + gNfcip.cfg.fwt = NFCIP_RWT_ACTIVATION; + gNfcip.cfg.dFwt = RFAL_NFCDEP_WT_DELTA; + + gNfcip.pni = 0; + + /* Destroy any ongoing RTOX timer*/ + nfcipTimerDestroy(gNfcip.RTOXTimer); + gNfcip.RTOXTimer = 0U; + + gNfcip.PDUTxPos = 0; + gNfcip.PDURxPos = 0; + gNfcip.PDUParam.rxLen = NULL; + gNfcip.PDUParam.rxBuf = NULL; + gNfcip.PDUParam.txBuf = NULL; + + nfcipClearCounters(); +} + +/*******************************************************************************/ +static void nfcipSetDEPParams(const rfalNfcDepDEPParams *DEPParams) { + nfcipLogD(" NFCIP SetDEP() txLen: %d \r\n", DEPParams->txBufLen); + + gNfcip.isTxChaining = DEPParams->txChaining; + gNfcip.txBuf = DEPParams->txBuf; + gNfcip.rxBuf = DEPParams->rxBuf; + gNfcip.txBufLen = DEPParams->txBufLen; + gNfcip.rxBufLen = DEPParams->rxBufLen; + gNfcip.txBufPaylPos = DEPParams->txBufPaylPos; + gNfcip.rxBufPaylPos = DEPParams->rxBufPaylPos; + + if (DEPParams->did != RFAL_NFCDEP_DID_KEEP) { + gNfcip.cfg.did = nfcip_DIDMax(DEPParams->did); + } + + gNfcip.cfg.fwt = DEPParams->fwt; + gNfcip.cfg.dFwt = DEPParams->dFwt; + gNfcip.fsc = DEPParams->fsc; + + if (gNfcip.cfg.role == RFAL_NFCDEP_ROLE_TARGET) { + /* If there's any data to be sent go for Tx */ + if (DEPParams->txBufLen > 0U) { + /* Ensure that an RTOX Ack is not being expected at moment */ + if (!gNfcip.isWait4RTOX) { + gNfcip.state = NFCIP_ST_TARG_DEP_TX; + return; + } else { + /* If RTOX Ack is expected, signal a pending Tx to be transmitted right + * after */ + gNfcip.isTxPending = true; + nfcipLogW(" NFCIP(T) Waiting RTOX, queueing outgoing DEP Block \r\n"); + } + } + + /*Digital 1.0 14.12.4.1 In target mode the first PDU MUST be sent by the + * Initiator */ + gNfcip.state = NFCIP_ST_TARG_DEP_RX; + return; + } + + /* New data TxRx request clear previous error counters for consecutive TxRx + * without reseting communication/protocol layer*/ + nfcipClearCounters(); + + gNfcip.state = NFCIP_ST_INIT_DEP_TX; +} + +/*******************************************************************************/ +bool rfalNfcDepTargetRcvdATR(void) { + return ((gNfcip.cfg.role == RFAL_NFCDEP_ROLE_TARGET) && + nfcipIsTarget(gNfcip.state) && + (gNfcip.state > NFCIP_ST_TARG_WAIT_ATR)); +} + +/*******************************************************************************/ +bool rfalNfcDepIsAtrReq(const uint8_t *buf, uint16_t bufLen, uint8_t *nfcid3) { + uint8_t msgIt; + + msgIt = 0; + + if ((bufLen < RFAL_NFCDEP_ATRREQ_MIN_LEN) || + (bufLen > RFAL_NFCDEP_ATRREQ_MAX_LEN)) { + return false; + } + + if (buf[msgIt++] != NFCIP_REQ) { + return false; + } + + if (buf[msgIt++] != (uint8_t)NFCIP_CMD_ATR_REQ) { + return false; + } + + /* Output NFID3 if requested */ + if (nfcid3 != NULL) { + RFAL_MEMCPY(nfcid3, &buf[RFAL_NFCDEP_ATR_REQ_NFCID3_POS], + RFAL_NFCDEP_NFCID3_LEN); + } + + return true; +} + +/*******************************************************************************/ +static ReturnCode nfcipTargetHandleActivation(rfalNfcDepDevice *nfcDepDev, + uint8_t *outBRS) { + ReturnCode ret; + uint8_t msgIt; + uint8_t txBuf[RFAL_NFCDEP_HEADER_PAD + NFCIP_PSLRES_LEN]; + + /*******************************************************************************/ + /* Check if we are in correct state */ + /*******************************************************************************/ + if (gNfcip.state != NFCIP_ST_TARG_WAIT_ACTV) { + return RFAL_ERR_WRONG_STATE; + } + + /*******************************************************************************/ + /* Check required parameters */ + /*******************************************************************************/ + if (outBRS == NULL) { + return RFAL_ERR_PARAM; + } + + /*******************************************************************************/ + /* Wait and process incoming cmd (PSL / DEP) */ + /*******************************************************************************/ + ret = nfcipDataRx(false); + + if (ret != RFAL_ERR_NONE) { + return ret; + } + + if (gNfcip.rxBuf == NULL) { + return RFAL_ERR_IO; + } + + msgIt = 0; + *outBRS = RFAL_NFCDEP_BRS_MAINTAIN; /* set out BRS to be maintained */ + + msgIt++; /* Skip LEN byte */ + + if (gNfcip.rxBuf[msgIt++] != NFCIP_REQ) { + return RFAL_ERR_PROTO; + } + + if (gNfcip.rxBuf[msgIt] == (uint8_t)NFCIP_CMD_PSL_REQ) { + msgIt++; + + if (gNfcip.rxBuf[msgIt++] != gNfcip.cfg.did) /* Checking DID */ + { + return RFAL_ERR_PROTO; + } + + nfcipLogI(" NFCIP(T) PSL REQ rcvd \r\n"); + + *outBRS = gNfcip.rxBuf[msgIt++]; /* assign output BRS value */ + + /* Store FSL(LR) and update current config */ + gNfcip.cfg.lr = (gNfcip.rxBuf[msgIt++] & RFAL_NFCDEP_LR_VAL_MASK); + gNfcip.fsc = rfalNfcDepLR2FS(gNfcip.cfg.lr); + + /*******************************************************************************/ + /* Update NFC-DDE Device info */ + if (nfcDepDev != NULL) { + /* Update Bitrate info */ + /* PRQA S 4342 2 # MISRA 10.5 - Layout of enum rfalBitRate and definition + * of rfalNfcDepBRS2DSI guarantee no invalid enum values to be created */ + nfcDepDev->info.DSI = (rfalBitRate)rfalNfcDepBRS2DSI( + *outBRS); /* DSI codes the bit rate from Initiator to Target */ + nfcDepDev->info.DRI = (rfalBitRate)rfalNfcDepBRS2DRI( + *outBRS); /* DRI codes the bit rate from Target to Initiator */ + + /* Update Length Reduction and Frame Size */ + nfcDepDev->info.LR = gNfcip.cfg.lr; + nfcDepDev->info.FS = gNfcip.fsc; + + /* Update PPi byte */ + nfcDepDev->activation.Initiator.ATR_REQ.PPi &= ~RFAL_NFCDEP_PP_LR_MASK; + nfcDepDev->activation.Initiator.ATR_REQ.PPi |= + rfalNfcDepLR2PP(gNfcip.cfg.lr); + } + + rfalSetBitRate(RFAL_BR_KEEP, gNfcip.nfcDepDev->info.DSI); + + RFAL_EXIT_ON_ERR( + ret, nfcipTx(NFCIP_CMD_PSL_RES, txBuf, NULL, 0, 0, NFCIP_NO_FWT)); + } else { + if (gNfcip.rxBuf[msgIt] == (uint8_t)NFCIP_CMD_DEP_REQ) { + msgIt++; + + /*******************************************************************************/ + /* Digital 1.0 14.12.3.1 PNI must be initialized to 0 */ + if (nfcip_PBF_PNI(gNfcip.rxBuf[msgIt]) != 0U) { + return RFAL_ERR_PROTO; + } + + /*******************************************************************************/ + /* Digital 1.0 14.8.2.1 check if DID is expected and match -> Protocol + * Error */ + if (nfcip_PFBhasDID(gNfcip.rxBuf[msgIt])) { + if (gNfcip.rxBuf[++msgIt] != gNfcip.cfg.did) { + return RFAL_ERR_PROTO; + } + } else if (gNfcip.cfg.did != + RFAL_NFCDEP_DID_NO) /* DID expected but not rcv */ + { + return RFAL_ERR_PROTO; + } else { + /* MISRA 15.7 - Empty else */ + } + } + + /* Signal Request pending to be digested on normal Handling (DEP_REQ, + * DSL_REQ, RLS_REQ) */ + gNfcip.isReqPending = true; + } + + gNfcip.state = NFCIP_ST_TARG_DEP_RX; + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDepATR(const rfalNfcDepAtrParam *param, + rfalNfcDepAtrRes *atrRes, uint8_t *atrResLen) { + ReturnCode ret; + rfalNfcDepConfigs cfg; + uint16_t rxLen; + uint8_t msgIt; + uint8_t txBuf[RFAL_NFCDEP_ATRREQ_MAX_LEN]; + uint8_t rxBuf[NFCIP_ATRRES_BUF_LEN]; + + if ((param == NULL) || (atrRes == NULL) || (atrResLen == NULL)) { + return RFAL_ERR_PARAM; + } + + RFAL_MEMSET(&cfg, 0x00, sizeof(rfalNfcDepConfigs)); + + /*******************************************************************************/ + /* Configure NFC-DEP layer */ + /*******************************************************************************/ + + cfg.did = param->DID; + cfg.nad = param->NAD; + cfg.fwt = RFAL_NFCDEP_MAX_FWT; + cfg.dFwt = RFAL_NFCDEP_WT_DELTA; + cfg.br = param->BR; + cfg.bs = param->BS; + cfg.lr = param->LR; + cfg.to = RFAL_NFCDEP_WT_TRG_MAX; /* Not used in Initiator mode */ + + cfg.gbLen = param->GBLen; + if (cfg.gbLen > 0U) /* MISRA 21.18 */ + { + RFAL_MEMCPY(cfg.gb, param->GB, cfg.gbLen); + } + + cfg.nfcidLen = param->nfcidLen; + if (cfg.nfcidLen > 0U) /* MISRA 21.18 */ + { + RFAL_MEMCPY(cfg.nfcid, param->nfcid, cfg.nfcidLen); + } + + cfg.role = RFAL_NFCDEP_ROLE_INITIATOR; + cfg.oper = param->operParam; + cfg.commMode = param->commMode; + + rfalNfcDepInitialize(); + nfcipConfig(&cfg); + + /*******************************************************************************/ + /* Send ATR_REQ */ + /*******************************************************************************/ + + RFAL_EXIT_ON_ERR( + ret, nfcipTxRx(NFCIP_CMD_ATR_REQ, txBuf, nfcipRWTActivation(), NULL, 0, + rxBuf, NFCIP_ATRRES_BUF_LEN, &rxLen)); + + /*******************************************************************************/ + /* ATR sent, check response */ + /*******************************************************************************/ + msgIt = 0; + rxLen = ((uint16_t)rxBuf[msgIt++] - RFAL_NFCDEP_LEN_LEN); /* use LEN byte */ + + if ((rxLen < RFAL_NFCDEP_ATRRES_MIN_LEN) || + (rxLen > RFAL_NFCDEP_ATRRES_MAX_LEN)) /* Checking length: ATR_RES */ + { + return RFAL_ERR_PROTO; + } + + if (rxBuf[msgIt++] != NFCIP_RES) /* Checking if is a response*/ + { + return RFAL_ERR_PROTO; + } + + if (rxBuf[msgIt++] != + (uint8_t)NFCIP_CMD_ATR_RES) /* Checking if is a ATR RES */ + { + return RFAL_ERR_PROTO; + } + + RFAL_MEMCPY((uint8_t *)atrRes, (rxBuf + RFAL_NFCDEP_LEN_LEN), rxLen); + *atrResLen = (uint8_t)rxLen; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDepPSL(uint8_t BRS, uint8_t FSL) { + ReturnCode ret; + uint16_t rxLen; + uint8_t msgIt; + uint8_t txBuf[NFCIP_PSLREQ_LEN + NFCIP_PSLPAY_LEN]; + uint8_t rxBuf[NFCIP_PSLRES_LEN]; + + msgIt = NFCIP_PSLREQ_LEN; + + txBuf[msgIt++] = BRS; + txBuf[msgIt++] = FSL; + + /*******************************************************************************/ + /* Send PSL REQ and wait for response */ + /*******************************************************************************/ + RFAL_EXIT_ON_ERR( + ret, + nfcipTxRx(NFCIP_CMD_PSL_REQ, txBuf, (gNfcip.cfg.fwt + gNfcip.cfg.dFwt), + &txBuf[NFCIP_PSLREQ_LEN], (msgIt - NFCIP_PSLREQ_LEN), rxBuf, + NFCIP_PSLRES_LEN, &rxLen)); + + /*******************************************************************************/ + /* PSL sent, check response */ + /*******************************************************************************/ + msgIt = 0; + rxLen = (uint16_t)(rxBuf[msgIt++]); /* use LEN byte */ + + if (rxLen < NFCIP_PSLRES_LEN) /* Checking length: LEN + RLS_RES */ + { + return RFAL_ERR_PROTO; + } + + if (rxBuf[msgIt++] != NFCIP_RES) /* Checking if is a response */ + { + return RFAL_ERR_PROTO; + } + + if (rxBuf[msgIt++] != + (uint8_t)NFCIP_CMD_PSL_RES) /* Checking if is a PSL RES */ + { + return RFAL_ERR_PROTO; + } + + if (rxBuf[msgIt++] != gNfcip.cfg.did) /* Checking DID */ + { + return RFAL_ERR_PROTO; + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDepDSL(void) { + ReturnCode ret; + uint8_t txBuf[RFAL_NFCDEP_HEADER_PAD + NFCIP_DSLREQ_LEN]; + uint8_t rxBuf[NFCIP_DSLRES_LEN]; + uint8_t rxMsgIt; + uint16_t rxLen = 0; + + if (gNfcip.cfg.role == RFAL_NFCDEP_ROLE_TARGET) { + return RFAL_ERR_NONE; /* Target has no deselect procedure */ + } + + /* Repeating a DSL REQ is optional, not doing it */ + RFAL_EXIT_ON_ERR(ret, nfcipTxRx(NFCIP_CMD_DSL_REQ, txBuf, + (gNfcip.cfg.fwt + gNfcip.cfg.dFwt), NULL, 0, + rxBuf, (uint16_t)sizeof(rxBuf), &rxLen)); + + /*******************************************************************************/ + rxMsgIt = 0; + + if (rxBuf[rxMsgIt++] < NFCIP_DSLRES_MIN) /* Checking length: LEN + DSL_RES */ + { + return RFAL_ERR_PROTO; + } + + if (rxBuf[rxMsgIt++] != NFCIP_RES) /* Checking if is a response */ + { + return RFAL_ERR_PROTO; + } + + if (rxBuf[rxMsgIt++] != + (uint8_t)NFCIP_CMD_DSL_RES) /* Checking if is DSL RES */ + { + return RFAL_ERR_PROTO; + } + + if (gNfcip.cfg.did != RFAL_NFCDEP_DID_NO) { + if (rxBuf[rxMsgIt++] != gNfcip.cfg.did) { + return RFAL_ERR_PROTO; + } + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDepRLS(void) { + ReturnCode ret; + uint8_t txBuf[RFAL_NFCDEP_HEADER_PAD + NFCIP_RLSREQ_LEN]; + uint8_t rxBuf[NFCIP_RLSRES_LEN]; + uint8_t rxMsgIt; + uint16_t rxLen = 0; + + if (gNfcip.cfg.role == + RFAL_NFCDEP_ROLE_TARGET) /* Target has no release procedure */ + { + return RFAL_ERR_NONE; + } + + /* Repeating a RLS REQ is optional, not doing it */ + RFAL_EXIT_ON_ERR(ret, nfcipTxRx(NFCIP_CMD_RLS_REQ, txBuf, + (gNfcip.cfg.fwt + gNfcip.cfg.dFwt), NULL, 0, + rxBuf, (uint16_t)sizeof(rxBuf), &rxLen)); + + /*******************************************************************************/ + rxMsgIt = 0; + + if (rxBuf[rxMsgIt++] < NFCIP_RLSRES_MIN) /* Checking length: LEN + RLS_RES */ + { + return RFAL_ERR_PROTO; + } + + if (rxBuf[rxMsgIt++] != NFCIP_RES) /* Checking if is a response */ + { + return RFAL_ERR_PROTO; + } + + if (rxBuf[rxMsgIt++] != + (uint8_t)NFCIP_CMD_RLS_RES) /* Checking if is RLS RES */ + { + return RFAL_ERR_PROTO; + } + + if (gNfcip.cfg.did != RFAL_NFCDEP_DID_NO) { + if (rxBuf[rxMsgIt++] != gNfcip.cfg.did) { + return RFAL_ERR_PROTO; + } + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDepInitiatorHandleActivation(rfalNfcDepAtrParam *param, + rfalBitRate desiredBR, + rfalNfcDepDevice *nfcDepDev) { + ReturnCode ret; + uint8_t maxRetyrs; + uint8_t PSL_BRS; + uint8_t PSL_FSL; + bool sendPSL; + + if ((param == NULL) || (nfcDepDev == NULL)) { + return RFAL_ERR_PARAM; + } + + param->NAD = RFAL_NFCDEP_NAD_NO; /* Digital 1.1 16.6.2.9 Initiator SHALL NOT + use NAD */ + maxRetyrs = NFCIP_ATR_RETRY_MAX; + + /*******************************************************************************/ + /* Send ATR REQ and wait for response */ + /*******************************************************************************/ + do { /* Upon transmission error ATR REQ should be retried */ + + ret = rfalNfcDepATR(param, &nfcDepDev->activation.Target.ATR_RES, + &nfcDepDev->activation.Target.ATR_RESLen); + + if (nfcipIsTransmissionError(ret)) { + continue; + } + break; + } while ((maxRetyrs--) != 0U); + + if (ret != RFAL_ERR_NONE) { + return ret; + } + + /*******************************************************************************/ + /* Compute NFC-DEP device with ATR_RES */ + /*******************************************************************************/ + nfcDepDev->info.GBLen = + (nfcDepDev->activation.Target.ATR_RESLen - RFAL_NFCDEP_ATRRES_MIN_LEN); + nfcDepDev->info.DID = nfcDepDev->activation.Target.ATR_RES.DID; + nfcDepDev->info.NAD = RFAL_NFCDEP_NAD_NO; /* Digital 1.1 16.6.3.11 Initiator + SHALL ignore b1 of PPt */ + nfcDepDev->info.LR = + rfalNfcDepPP2LR(nfcDepDev->activation.Target.ATR_RES.PPt); + nfcDepDev->info.FS = rfalNfcDepLR2FS(nfcDepDev->info.LR); + nfcDepDev->info.WT = + (nfcDepDev->activation.Target.ATR_RES.TO & RFAL_NFCDEP_WT_MASK); + nfcDepDev->info.FWT = rfalNfcDepCalculateRWT(nfcDepDev->info.WT); + nfcDepDev->info.dFWT = RFAL_NFCDEP_WT_DELTA; + + rfalGetBitRate(&nfcDepDev->info.DSI, &nfcDepDev->info.DRI); + + /*******************************************************************************/ + /* Check if a PSL needs to be sent */ + /*******************************************************************************/ + sendPSL = false; + PSL_BRS = rfalNfcDepDx2BRS( + nfcDepDev->info + .DSI); /* Set current bit rate divisor on both directions */ + PSL_FSL = nfcDepDev->info.LR; /* Set current Frame Size */ + + /* Activity 1.0 9.4.4.15 & 9.4.6.3 NFC-DEP Activation PSL + * Activity 2.0 9.4.4.17 & 9.4.6.6 NFC-DEP Activation PSL + * + * PSL_REQ shall only be sent if desired bit rate is different from current + * (Activity 1.0) PSL_REQ shall be sent to update LR or bit rate + * (Activity 2.0) + * */ + +#if 0 /* PSL due to LR is disabled, can be enabled if desired*/ + /*******************************************************************************/ + /* Check Frame Size */ + /*******************************************************************************/ + if( gNfcip.cfg.lr < nfcDepDev->info.LR ) /* If our Length reduction is smaller */ + { + sendPSL = true; + + nfcDepDev->info.LR = RFAL_MIN( nfcDepDev->info.LR, gNfcip.cfg.lr ); + + gNfcip.cfg.lr = nfcDepDev->info.LR; /* Update nfcip LR to be used */ + gNfcip.fsc = rfalNfcDepLR2FS( gNfcip.cfg.lr ); /* Update nfcip FSC to be used */ + + PSL_FSL = gNfcip.cfg.lr; /* Set LR to be sent */ + + nfcipLogI( " NFCIP(I) Frame Size differ, PSL new fsc: %d \r\n", gNfcip.fsc ); + } +#endif + + /*******************************************************************************/ + /* Check Baud rates */ + /*******************************************************************************/ + if ((nfcDepDev->info.DSI != desiredBR) && + (desiredBR != RFAL_BR_KEEP)) /* if desired BR is different */ + { + if (nfcipDxIsSupported( + (uint8_t)desiredBR, nfcDepDev->activation.Target.ATR_RES.BRt, + nfcDepDev->activation.Target.ATR_RES + .BSt)) /* if desired BR is supported */ /* MISRA 13.5 */ + { + sendPSL = true; + PSL_BRS = rfalNfcDepDx2BRS(desiredBR); + + nfcipLogI(" NFCIP(I) BR differ, PSL BR: 0x%02X \r\n", PSL_BRS); + } + } + + /*******************************************************************************/ + if (sendPSL) { + /* Apply target's FWT for PSL_REQ Digital 2.2 17.11.2.5 */ + gNfcip.cfg.fwt = nfcDepDev->info.FWT; + + /*******************************************************************************/ + /* Send PSL REQ and wait for response */ + /*******************************************************************************/ + RFAL_EXIT_ON_ERR(ret, rfalNfcDepPSL(PSL_BRS, PSL_FSL)); + + /* Check if bit rate has been changed */ + if (nfcDepDev->info.DSI != desiredBR) { + /* Check if device was in Passive NFC-A and went to higher bit rates, use + * NFC-F */ + if ((nfcDepDev->info.DSI == RFAL_BR_106) && + (gNfcip.cfg.commMode == RFAL_NFCDEP_COMM_PASSIVE)) { +#if RFAL_FEATURE_NFCF + /* If Passive initialize NFC-F module */ + rfalNfcfPollerInitialize(desiredBR); +#else /* RFAL_FEATURE_NFCF */ + return RFAL_ERR_NOTSUPP; +#endif /* RFAL_FEATURE_NFCF */ + } + + nfcDepDev->info.DRI = + desiredBR; /* DSI Bit Rate coding from Initiator to Target */ + nfcDepDev->info.DSI = + desiredBR; /* DRI Bit Rate coding from Target to Initiator */ + + rfalSetBitRate(nfcDepDev->info.DSI, nfcDepDev->info.DRI); + } + + return RFAL_ERR_NONE; /* PSL has been sent */ + } + + return RFAL_ERR_NONE; /* No PSL has been sent */ +} + +/*******************************************************************************/ +uint32_t rfalNfcDepCalculateRWT(uint8_t wt) { + /* Digital 1.0 14.6.3.8 & Digital 1.1 16.6.3.9 */ + /* Digital 1.1 16.6.3.9 treat all RFU values as WT=14 */ + const uint8_t responseWaitTime = RFAL_MIN(RFAL_NFCDEP_WT_INI_MAX, wt); + + return (uint32_t)rfalNfcDepWT2RWT(responseWaitTime); +} + +/*******************************************************************************/ +static ReturnCode nfcipDataTx(uint8_t *txBuf, uint16_t txBufLen, uint32_t fwt) { + return rfalTransceiveBlockingTx( + txBuf, txBufLen, gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen, + (RFAL_TXRX_FLAGS_DEFAULT | (uint32_t)RFAL_TXRX_FLAGS_NFCIP1_ON), + ((fwt == NFCIP_NO_FWT) ? RFAL_FWT_NONE : fwt)); +} + +/*******************************************************************************/ +static ReturnCode nfcipDataRx(bool blocking) { + ReturnCode ret; + + /* Perform Rx either blocking or non-blocking */ + if (blocking) { + ret = rfalTransceiveBlockingRx(); + } else { + ret = rfalGetTransceiveStatus(); + } + + if (ret != RFAL_ERR_BUSY) { + if (gNfcip.rxRcvdLen != NULL) { + (*gNfcip.rxRcvdLen) = rfalConvBitsToBytes(*gNfcip.rxRcvdLen); + + if ((ret == RFAL_ERR_NONE) && (gNfcip.rxBuf != NULL)) { + /* Digital 1.1 16.4.1.3 - Length byte LEN SHALL have a value between 3 + * and 255 -> otherwise treat as Transmission Error * + * - Ensure that actual received and frame length + * do match, otherwise treat as Transmission error */ + if ((*gNfcip.rxRcvdLen != (uint16_t)*gNfcip.rxBuf) || + (*gNfcip.rxRcvdLen < RFAL_NFCDEP_LEN_MIN) || + (*gNfcip.rxRcvdLen > RFAL_NFCDEP_LEN_MAX)) { + return RFAL_ERR_FRAMING; + } + } + } + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDepListenStartActivation(const rfalNfcDepTargetParam *param, + const uint8_t *atrReq, + uint16_t atrReqLength, + rfalNfcDepListenActvParam rxParam) { + ReturnCode ret; + rfalNfcDepConfigs cfg; + + if ((param == NULL) || (atrReq == NULL) || (rxParam.rxLen == NULL)) { + return RFAL_ERR_PARAM; + } + + /*******************************************************************************/ + /* Check whether is a valid ATR_REQ Compute NFC-DEP device */ + if (!rfalNfcDepIsAtrReq(atrReq, atrReqLength, NULL)) { + return RFAL_ERR_PARAM; + } + + rxParam.nfcDepDev->activation.Initiator.ATR_REQLen = + (uint8_t)atrReqLength; /* nfcipIsAtrReq() is already checking Min and Max + buffer lengths */ + if (atrReqLength > 0U) /* MISRA 21.18 */ + { + RFAL_MEMCPY((uint8_t *)&rxParam.nfcDepDev->activation.Initiator.ATR_REQ, + atrReq, atrReqLength); + } + + rxParam.nfcDepDev->info.GBLen = + (uint8_t)(atrReqLength - RFAL_NFCDEP_ATRREQ_MIN_LEN); + rxParam.nfcDepDev->info.DID = + rxParam.nfcDepDev->activation.Initiator.ATR_REQ.DID; + rxParam.nfcDepDev->info.NAD = + RFAL_NFCDEP_NAD_NO; /* Digital 1.1 16.6.2.9 Initiator SHALL NOT use NAD + */ + rxParam.nfcDepDev->info.LR = + rfalNfcDepPP2LR(rxParam.nfcDepDev->activation.Initiator.ATR_REQ.PPi); + rxParam.nfcDepDev->info.FS = rfalNfcDepLR2FS(rxParam.nfcDepDev->info.LR); + rxParam.nfcDepDev->info.WT = 0; + rxParam.nfcDepDev->info.FWT = NFCIP_NO_FWT; + rxParam.nfcDepDev->info.dFWT = NFCIP_NO_FWT; + + rfalGetBitRate(&rxParam.nfcDepDev->info.DSI, &rxParam.nfcDepDev->info.DRI); + + /* Store Device Info location, updated upon a PSL */ + gNfcip.nfcDepDev = rxParam.nfcDepDev; + + /*******************************************************************************/ + cfg.did = rxParam.nfcDepDev->activation.Initiator.ATR_REQ.DID; + cfg.nad = RFAL_NFCDEP_NAD_NO; + + cfg.fwt = RFAL_NFCDEP_MAX_FWT; + cfg.dFwt = RFAL_NFCDEP_WT_DELTA; + + cfg.br = param->brt; + cfg.bs = param->bst; + + cfg.lr = rfalNfcDepPP2LR(param->ppt); + + cfg.gbLen = param->GBtLen; + if (cfg.gbLen > 0U) /* MISRA 21.18 */ + { + RFAL_MEMCPY(cfg.gb, param->GBt, cfg.gbLen); + } + + cfg.nfcidLen = RFAL_NFCDEP_NFCID3_LEN; + RFAL_MEMCPY(cfg.nfcid, param->nfcid3, RFAL_NFCDEP_NFCID3_LEN); + + cfg.to = param->to; + + cfg.role = RFAL_NFCDEP_ROLE_TARGET; + cfg.oper = param->operParam; + cfg.commMode = param->commMode; + + rfalNfcDepInitialize(); + nfcipConfig(&cfg); + + /*******************************************************************************/ + /* Reply with ATR RES to Initiator */ + /*******************************************************************************/ + gNfcip.rxBuf = (uint8_t *)rxParam.rxBuf; + gNfcip.rxBufLen = sizeof(rfalNfcDepBufFormat); + gNfcip.rxRcvdLen = rxParam.rxLen; + gNfcip.rxBufPaylPos = RFAL_NFCDEP_DEPREQ_HEADER_LEN; + gNfcip.isChaining = rxParam.isRxChaining; + gNfcip.txBufPaylPos = RFAL_NFCDEP_DEPREQ_HEADER_LEN; + + RFAL_EXIT_ON_ERR(ret, nfcipTx(NFCIP_CMD_ATR_RES, (uint8_t *)gNfcip.rxBuf, + NULL, 0, 0, NFCIP_NO_FWT)); + + gNfcip.state = NFCIP_ST_TARG_WAIT_ACTV; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDepListenGetActivationStatus(void) { + ReturnCode err; + uint8_t BRS; + + BRS = RFAL_NFCDEP_BRS_MAINTAIN; + + err = nfcipTargetHandleActivation(gNfcip.nfcDepDev, &BRS); + + switch (err) { + case RFAL_ERR_NONE: + + if (BRS != RFAL_NFCDEP_BRS_MAINTAIN) { + /* DSI codes the bit rate from Initiator to Target */ + /* DRI codes the bit rate from Target to Initiator */ + + if (gNfcip.cfg.commMode == RFAL_NFCDEP_COMM_ACTIVE) { + RFAL_EXIT_ON_ERR(err, rfalSetMode(RFAL_MODE_LISTEN_ACTIVE_P2P, + gNfcip.nfcDepDev->info.DRI, + gNfcip.nfcDepDev->info.DSI)); + } else { + RFAL_EXIT_ON_ERR( + err, rfalSetMode(((RFAL_BR_106 == gNfcip.nfcDepDev->info.DRI) + ? RFAL_MODE_LISTEN_NFCA + : RFAL_MODE_LISTEN_NFCF), + gNfcip.nfcDepDev->info.DRI, + gNfcip.nfcDepDev->info.DSI)); + } + } + break; + + case RFAL_ERR_BUSY: + // do nothing + break; + + case RFAL_ERR_PROTO: + default: + // re-enable receiving of data + nfcDepReEnableRx(gNfcip.rxBuf, gNfcip.rxBufLen, gNfcip.rxRcvdLen); + break; + } + + return err; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDepStartTransceive(const rfalNfcDepTxRxParam *param) { + rfalNfcDepDEPParams nfcDepParams; + + nfcDepParams.txBuf = (uint8_t *)param->txBuf; + nfcDepParams.txBufLen = param->txBufLen; + nfcDepParams.txChaining = param->isTxChaining; + nfcDepParams.txBufPaylPos = + RFAL_NFCDEP_DEPREQ_HEADER_LEN; /* position in txBuf where actual outgoing + data is located */ + nfcDepParams.did = RFAL_NFCDEP_DID_KEEP; + nfcDepParams.rxBufPaylPos = RFAL_NFCDEP_DEPREQ_HEADER_LEN; + nfcDepParams.rxBuf = (uint8_t *)param->rxBuf; + nfcDepParams.rxBufLen = sizeof(rfalNfcDepBufFormat); + nfcDepParams.fsc = param->FSx; + nfcDepParams.fwt = param->FWT; + nfcDepParams.dFwt = param->dFWT; + + gNfcip.rxRcvdLen = param->rxLen; + gNfcip.isChaining = param->isRxChaining; + + nfcipSetDEPParams(&nfcDepParams); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDepGetTransceiveStatus(void) { + return nfcipRun(gNfcip.rxRcvdLen, gNfcip.isChaining); +} + +/*******************************************************************************/ +static void rfalNfcDepPdu2BLockParam(rfalNfcDepPduTxRxParam pduParam, + rfalNfcDepTxRxParam *blockParam, + uint16_t txPos, uint16_t rxPos) { + uint16_t maxInfLen; + + RFAL_NO_WARNING(rxPos); /* Keep this param for future use */ + + blockParam->DID = pduParam.DID; + blockParam->FSx = pduParam.FSx; + blockParam->FWT = pduParam.FWT; + blockParam->dFWT = pduParam.dFWT; + + /* Calculate max INF/Payload to be sent to other device */ + maxInfLen = + (blockParam->FSx - (RFAL_NFCDEP_HEADER + RFAL_NFCDEP_DEP_PFB_LEN)); + maxInfLen += + ((blockParam->DID != RFAL_NFCDEP_DID_NO) ? RFAL_NFCDEP_DID_LEN : 0U); + + if ((pduParam.txBufLen - txPos) > maxInfLen) { + blockParam->isTxChaining = true; + blockParam->txBufLen = maxInfLen; + } else { + blockParam->isTxChaining = false; + blockParam->txBufLen = (pduParam.txBufLen - txPos); + } + + /* TxBuf is moved to the beginning for every Block */ + blockParam->txBuf = + (rfalNfcDepBufFormat *) + pduParam.txBuf; /* PRQA S 0310 # MISRA 11.3 - Intentional safe cast + to avoiding large buffer duplication */ + blockParam->rxBuf = + pduParam.tmpBuf; /* Simply using the pdu buffer is not possible because of + current ACK handling */ + blockParam->isRxChaining = &gNfcip.isPDURxChaining; + blockParam->rxLen = pduParam.rxLen; +} + +/*******************************************************************************/ +ReturnCode rfalNfcDepStartPduTransceive(rfalNfcDepPduTxRxParam param) { + rfalNfcDepTxRxParam txRxParam; + + /* Initialize and store APDU context */ + gNfcip.PDUParam = param; + gNfcip.PDUTxPos = 0; + gNfcip.PDURxPos = 0; + + /* Convert PDU TxRxParams to Block TxRxParams */ + rfalNfcDepPdu2BLockParam(gNfcip.PDUParam, &txRxParam, gNfcip.PDUTxPos, + gNfcip.PDURxPos); + + return rfalNfcDepStartTransceive(&txRxParam); +} + +/*******************************************************************************/ +ReturnCode rfalNfcDepGetPduTransceiveStatus(void) { + ReturnCode ret; + rfalNfcDepTxRxParam txRxParam; + + ret = rfalNfcDepGetTransceiveStatus(); + switch (ret) { + /*******************************************************************************/ + case RFAL_ERR_NONE: + + /* Check if we are still doing chaining on Tx */ + if (gNfcip.isTxChaining) { + /* Add already Tx bytes */ + gNfcip.PDUTxPos += gNfcip.txBufLen; + + /* Convert APDU TxRxParams to I-Block TxRxParams */ + rfalNfcDepPdu2BLockParam(gNfcip.PDUParam, &txRxParam, gNfcip.PDUTxPos, + gNfcip.PDURxPos); + + if (txRxParam.txBufLen > 0U) /* MISRA 21.18 */ + { + /* Move next Block to beginning of APDU Tx buffer */ + RFAL_MEMCPY(gNfcip.PDUParam.txBuf->pdu, + &gNfcip.PDUParam.txBuf->pdu[gNfcip.PDUTxPos], + txRxParam.txBufLen); + } + + RFAL_EXIT_ON_ERR(ret, rfalNfcDepStartTransceive(&txRxParam)); + return RFAL_ERR_BUSY; + } + + /* PDU TxRx is done */ + /* fall through */ + + /*******************************************************************************/ + case RFAL_ERR_AGAIN: /* PRQA S 2003 # MISRA 16.3 - Intentional fall through + */ + + /* Check if no PDU transceive has been started before (data from + * rfalNfcDepListenStartActivation) */ + if (gNfcip.PDUParam.rxLen == NULL) { + /* In Listen mode first chained packet cannot be retrieved via APDU + * interface */ + if (ret == RFAL_ERR_AGAIN) { + return RFAL_ERR_NOTSUPP; + } + + /* TxRx is complete and full data is already available */ + return RFAL_ERR_NONE; + } + + if ((*gNfcip.PDUParam.rxLen) > 0U) /* MISRA 21.18 */ + { + /* Ensure that data in tmpBuf still fits into PDU buffer */ + if ((uint16_t)((uint16_t)gNfcip.PDURxPos + (*gNfcip.PDUParam.rxLen)) > + RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN) { + return RFAL_ERR_NOMEM; + } + + /* Copy chained packet from tmp buffer to PDU buffer */ + RFAL_MEMCPY(&gNfcip.PDUParam.rxBuf->pdu[gNfcip.PDURxPos], + gNfcip.PDUParam.tmpBuf->inf, *gNfcip.PDUParam.rxLen); + gNfcip.PDURxPos += *gNfcip.PDUParam.rxLen; + } + + /* Update output param rxLen */ + *gNfcip.PDUParam.rxLen = gNfcip.PDURxPos; + + /* Wait for following Block or PDU TxRx is done */ + return ((ret == RFAL_ERR_AGAIN) ? RFAL_ERR_BUSY : RFAL_ERR_NONE); + + /*******************************************************************************/ + default: + /* MISRA 16.4: no empty default statement (a comment being enough) */ + break; + } + + return ret; +} + +#endif /* RFAL_FEATURE_NFC_DEP */ diff --git a/core/embed/io/nfc/rfal/source/rfal_nfca.c b/core/embed/io/nfc/rfal/source/rfal_nfca.c new file mode 100644 index 0000000000..d7dbac971e --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_nfca.c @@ -0,0 +1,1069 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_nfca.c + * + * \author Gustavo Patricio + * + * \brief Provides several NFC-A convenience methods and definitions + * + * It provides a Poller (ISO14443A PCD) interface and as well as + * some NFC-A Listener (ISO14443A PICC) helpers. + * + * The definitions and helpers methods provided by this module are only + * up to ISO14443-3 layer + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_nfca.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_NFCA + */ + +#if RFAL_FEATURE_NFCA + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_NFCA_SLP_FWT \ + rfalConvMsTo1fc(1) /*!< Check 1ms for any modulation ISO14443-3 6.4.3 */ +#define RFAL_NFCA_SLP_CMD \ + 0x50U /*!< SLP cmd (byte1) Digital 1.1 6.9.1 & Table 20 */ +#define RFAL_NFCA_SLP_BYTE2 \ + 0x00U /*!< SLP byte2 Digital 1.1 6.9.1 & Table 20 */ +#define RFAL_NFCA_SLP_CMD_POS \ + 0U /*!< SLP cmd position Digital 1.1 6.9.1 & Table 20 */ +#define RFAL_NFCA_SLP_BYTE2_POS \ + 1U /*!< SLP byte2 position Digital 1.1 6.9.1 & Table 20 */ + +#define RFAL_NFCA_SDD_CT \ + 0x88U /*!< Cascade Tag value Digital 1.1 6.7.2 */ +#define RFAL_NFCA_SDD_CT_LEN \ + 1U /*!< Cascade Tag length */ + +#define RFAL_NFCA_SLP_REQ_LEN \ + 2U /*!< SLP_REQ length */ + +#define RFAL_NFCA_SEL_CMD_LEN \ + 1U /*!< SEL_CMD length */ +#define RFAL_NFCA_SEL_PAR_LEN \ + 1U /*!< SEL_PAR length */ +#define RFAL_NFCA_SEL_SELPAR \ + rfalNfcaSelPar(7U, 0U) /*!< SEL_PAR on Select is always with 4 data/nfcid */ +#define RFAL_NFCA_BCC_LEN \ + 1U /*!< BCC length */ + +#define RFAL_NFCA_SDD_REQ_LEN \ + (RFAL_NFCA_SEL_CMD_LEN + RFAL_NFCA_SEL_PAR_LEN) /*!< SDD_REQ length */ +#define RFAL_NFCA_SDD_RES_LEN \ + (RFAL_NFCA_CASCADE_1_UID_LEN + RFAL_NFCA_BCC_LEN) /*!< SDD_RES length */ + +#define RFAL_NFCA_T_RETRANS \ + 5U /*!< t RETRANSMISSION [3, 33]ms EMVCo 2.6 A.5 */ +#define RFAL_NFCA_N_RETRANS \ + 2U /*!< Number of retries EMVCo 2.6 9.6.1.3 */ + +/*! SDD_REQ (Select) Cascade Levels */ +enum { + RFAL_NFCA_SEL_CASCADE_L1 = 0, /*!< SDD_REQ Cascade Level 1 */ + RFAL_NFCA_SEL_CASCADE_L2 = 1, /*!< SDD_REQ Cascade Level 2 */ + RFAL_NFCA_SEL_CASCADE_L3 = 2 /*!< SDD_REQ Cascade Level 3 */ +}; + +/*! SDD_REQ (Select) request Cascade Level command Digital 1.1 Table 15 */ +enum { + RFAL_NFCA_CMD_SEL_CL1 = 0x93, /*!< SDD_REQ command Cascade Level 1 */ + RFAL_NFCA_CMD_SEL_CL2 = 0x95, /*!< SDD_REQ command Cascade Level 2 */ + RFAL_NFCA_CMD_SEL_CL3 = 0x97, /*!< SDD_REQ command Cascade Level 3 */ +}; + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ +#define rfalNfcaSelPar(nBy, nbi) \ + (uint8_t)((((nBy) << 4U) & 0xF0U) | \ + ((nbi) & \ + 0x0FU)) /*!< Calculates SEL_PAR with the bytes/bits to be sent */ +#define rfalNfcaCLn2SELCMD(cl) \ + (uint8_t)( \ + (uint8_t)(RFAL_NFCA_CMD_SEL_CL1) + \ + (2U * (cl))) /*!< Calculates SEL_CMD with the given cascade level */ +#define rfalNfcaNfcidLen2CL(len) \ + ((len) / 5U) /*!< Calculates cascade level by the NFCID length */ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! Technology Detection context */ +typedef struct { + rfalComplianceMode compMode; /*!< Compliancy mode to be used */ + ReturnCode ret; /*!< Outcome of presence check */ +} rfalNfcaTechDetParams; + +/*! Colission Resolution states */ +typedef enum { + RFAL_NFCA_CR_IDLE, /*!< IDLE state */ + RFAL_NFCA_CR_CL, /*!< New Cascading Level state */ + RFAL_NFCA_CR_SDD_TX, /*!< Perform anticollsion Tx state */ + RFAL_NFCA_CR_SDD, /*!< Perform anticollsion state */ + RFAL_NFCA_CR_SEL_TX, /*!< Perform CL Selection Tx state */ + RFAL_NFCA_CR_SEL, /*!< Perform CL Selection state */ + RFAL_NFCA_CR_DONE /*!< Collision Resolution done state */ +} rfalNfcaColResState; + +/*! Full Colission Resolution states */ +typedef enum { + RFAL_NFCA_CR_FULL_START, /*!< Start Full Collision Resolution state */ + RFAL_NFCA_CR_FULL_SLPCHECK, /*!< Sleep and Check for restart state */ + RFAL_NFCA_CR_FULL_RESTART /*!< Restart Full Collision Resolution state */ +} rfalNfcaFColResState; + +/*! Colission Resolution context */ +typedef struct { + uint8_t devLimit; /*!< Device limit to be used */ + rfalComplianceMode compMode; /*!< Compliancy mode to be used */ + rfalNfcaListenDevice *nfcaDevList; /*!< Location of the device list */ + uint8_t *devCnt; /*!< Location of the device counter */ + bool collPending; /*!< Collision pending flag */ + + bool *collPend; /*!< Location of collision pending flag (Single CR) */ + rfalNfcaSelReq selReq; /*!< SelReqused during anticollision (Single CR) */ + rfalNfcaSelRes + *selRes; /*!< Location to place of the SEL_RES(SAK) (Single CR) */ + uint8_t *nfcId1; /*!< Location to place the NFCID1 (Single CR) */ + uint8_t *nfcId1Len; /*!< Location to place the NFCID1 length (Single CR) */ + uint8_t cascadeLv; /*!< Current Cascading Level (Single CR) */ + rfalNfcaColResState + state; /*!< Single Collision Resolution state (Single CR) */ + rfalNfcaFColResState fState; /*!< Full Collision Resolution state (Full CR) */ + uint8_t + bytesTxRx; /*!< TxRx bytes used during anticollision loop (Single CR) */ + uint8_t bitsTxRx; /*!< TxRx bits used during anticollision loop (Single CR) */ + uint16_t rxLen; /*!< Local reception length */ + uint32_t tmrFDT; /*!< FDT timer used between SED_REQs (Single CR) */ + uint8_t + retries; /*!< Retries to be performed upon a timeout error (Single CR)*/ + uint8_t backtrackCnt; /*!< Backtrack retries (Single CR) */ + bool doBacktrack; /*!< Backtrack flag (Single CR) */ +} rfalNfcaColResParams; + +/*! Colission Resolution context */ +typedef struct { + uint8_t cascadeLv; /*!< Current Cascading Level */ + uint8_t fCascadeLv; /*!< Final Cascading Level */ + rfalNfcaSelRes *selRes; /*!< Location to place of the SEL_RES(SAK) */ + uint16_t rxLen; /*!< Local reception length */ + const uint8_t *nfcid1; /*!< Location of the NFCID to be selected */ + uint8_t nfcidOffset; /*!< Selected NFCID offset */ + bool isRx; /*!< Selection is in reception state */ +} rfalNfcaSelParams; + +/*! SLP_REQ (HLTA) format Digital 1.1 6.9.1 & Table 20 */ +typedef struct { + uint8_t frame[RFAL_NFCA_SLP_REQ_LEN]; /*!< SLP: 0x50 0x00 */ +} rfalNfcaSlpReq; + +/*! RFAL NFC-A instance */ +typedef struct { + rfalNfcaTechDetParams DT; /*!< Technology Detection context */ + rfalNfcaColResParams CR; /*!< Collision Resolution context */ + rfalNfcaSelParams SEL; /*!< Selection|Activation context */ + + rfalNfcaSlpReq slpReq; /*!< SLP_REx buffer */ +} rfalNfca; + +/* +****************************************************************************** +* LOCAL VARIABLES +****************************************************************************** +*/ +static rfalNfca gNfca; /*!< RFAL NFC-A instance */ + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +static uint8_t rfalNfcaCalculateBcc(const uint8_t *buf, uint8_t bufLen); +static ReturnCode rfalNfcaPollerStartSingleCollisionResolution( + uint8_t devLimit, bool *collPending, rfalNfcaSelRes *selRes, + uint8_t *nfcId1, uint8_t *nfcId1Len); +static ReturnCode rfalNfcaPollerGetSingleCollisionResolutionStatus(void); + +/* + ****************************************************************************** + * LOCAL FUNCTIONS + ****************************************************************************** + */ + +static uint8_t rfalNfcaCalculateBcc(const uint8_t *buf, uint8_t bufLen) { + uint8_t i; + uint8_t BCC; + + BCC = 0; + + /* BCC is XOR over first 4 bytes of the SDD_RES Digital 1.1 6.7.2 */ + for (i = 0; i < bufLen; i++) { + BCC ^= buf[i]; + } + + return BCC; +} + +/*******************************************************************************/ +static ReturnCode rfalNfcaPollerStartSingleCollisionResolution( + uint8_t devLimit, bool *collPending, rfalNfcaSelRes *selRes, + uint8_t *nfcId1, uint8_t *nfcId1Len) { + /* Check parameters */ + if ((collPending == NULL) || (selRes == NULL) || (nfcId1 == NULL) || + (nfcId1Len == NULL)) { + return RFAL_ERR_PARAM; + } + + /* Initialize output parameters */ + *collPending = false; /* Activity 1.1 9.3.4.6 */ + *nfcId1Len = 0; + RFAL_MEMSET(nfcId1, 0x00, RFAL_NFCA_CASCADE_3_UID_LEN); + + /* Save parameters */ + gNfca.CR.devLimit = devLimit; + gNfca.CR.collPend = collPending; + gNfca.CR.selRes = selRes; + gNfca.CR.nfcId1 = nfcId1; + gNfca.CR.nfcId1Len = nfcId1Len; + + platformTimerDestroy(gNfca.CR.tmrFDT); + gNfca.CR.tmrFDT = RFAL_TIMING_NONE; + gNfca.CR.retries = RFAL_NFCA_N_RETRANS; + gNfca.CR.cascadeLv = (uint8_t)RFAL_NFCA_SEL_CASCADE_L1; + gNfca.CR.state = RFAL_NFCA_CR_CL; + + gNfca.CR.doBacktrack = false; + gNfca.CR.backtrackCnt = 3U; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +static ReturnCode rfalNfcaPollerGetSingleCollisionResolutionStatus(void) { + ReturnCode ret; + uint8_t collBit = + 1U; /* standards mandate or recommend collision bit to be set to One. */ + + /* Check if FDT timer is still running */ + if (gNfca.CR.tmrFDT != RFAL_TIMING_NONE) { + if ((!platformTimerIsExpired(gNfca.CR.tmrFDT))) { + return RFAL_ERR_BUSY; + } + } + + /*******************************************************************************/ + /* Go through all Cascade Levels Activity 1.1 9.3.4 */ + if (gNfca.CR.cascadeLv > (uint8_t)RFAL_NFCA_SEL_CASCADE_L3) { + return RFAL_ERR_INTERNAL; + } + + switch (gNfca.CR.state) { + /*******************************************************************************/ + case RFAL_NFCA_CR_CL: + + /* Initialize the SDD_REQ to send for the new cascade level */ + RFAL_MEMSET((uint8_t *)&gNfca.CR.selReq, 0x00, sizeof(rfalNfcaSelReq)); + + gNfca.CR.bytesTxRx = RFAL_NFCA_SDD_REQ_LEN; + gNfca.CR.bitsTxRx = 0U; + gNfca.CR.state = RFAL_NFCA_CR_SDD_TX; + + /* fall through */ + + /*******************************************************************************/ + case RFAL_NFCA_CR_SDD_TX: /* PRQA S 2003 # MISRA 16.3 - Intentional fall + through */ + + /* Calculate SEL_CMD and SEL_PAR with the bytes/bits to be sent */ + gNfca.CR.selReq.selCmd = rfalNfcaCLn2SELCMD(gNfca.CR.cascadeLv); + gNfca.CR.selReq.selPar = + rfalNfcaSelPar(gNfca.CR.bytesTxRx, gNfca.CR.bitsTxRx); + + /* Send SDD_REQ (Anticollision frame) */ + rfalISO14443AStartTransceiveAnticollisionFrame( + (uint8_t *)&gNfca.CR.selReq, &gNfca.CR.bytesTxRx, &gNfca.CR.bitsTxRx, + &gNfca.CR.rxLen, RFAL_NFCA_FDTMIN); + + gNfca.CR.state = RFAL_NFCA_CR_SDD; + break; + + /*******************************************************************************/ + case RFAL_NFCA_CR_SDD: + + RFAL_EXIT_ON_BUSY(ret, + rfalISO14443AGetTransceiveAnticollisionFrameStatus()); + + /* Retry upon timeout EMVCo 2.6 9.6.1.3 */ + if ((ret == RFAL_ERR_TIMEOUT) && (gNfca.CR.devLimit == 0U) && + (gNfca.CR.retries != 0U)) { + gNfca.CR.retries--; + platformTimerDestroy(gNfca.CR.tmrFDT); + gNfca.CR.tmrFDT = platformTimerCreate(RFAL_NFCA_T_RETRANS); + + gNfca.CR.state = RFAL_NFCA_CR_SDD_TX; + break; + } + + /* Covert rxLen into bytes */ + gNfca.CR.rxLen = rfalConvBitsToBytes(gNfca.CR.rxLen); + + if ((ret == RFAL_ERR_TIMEOUT) && (gNfca.CR.backtrackCnt != 0U) && + (!gNfca.CR.doBacktrack) && + (!((RFAL_NFCA_SDD_REQ_LEN == gNfca.CR.bytesTxRx) && + (0U == gNfca.CR.bitsTxRx)))) { + /* In multiple card scenarios it may always happen that some + * collisions of a weaker tag go unnoticed. If then a later + * collision is recognized and the strong tag has a 0 at the + * collision position then no tag will respond. Catch this + * corner case and then try with the bit being sent as zero. */ + rfalNfcaSensRes sensRes; + ret = RFAL_ERR_RF_COLLISION; + rfalNfcaPollerCheckPresence(RFAL_14443A_SHORTFRAME_CMD_REQA, &sensRes); + /* Algorithm below does a post-increment, decrement to go back to + * current position */ + if (0U == gNfca.CR.bitsTxRx) { + gNfca.CR.bitsTxRx = 7; + gNfca.CR.bytesTxRx--; + } else { + gNfca.CR.bitsTxRx--; + } + collBit = (uint8_t)(((uint8_t *)&gNfca.CR.selReq)[gNfca.CR.bytesTxRx] & + (1U << gNfca.CR.bitsTxRx)); + collBit = + (uint8_t)((0U == collBit) ? 1U : 0U); /* Invert the collision bit */ + gNfca.CR.doBacktrack = true; + gNfca.CR.backtrackCnt--; + } else { + gNfca.CR.doBacktrack = false; + } + + if (ret == RFAL_ERR_RF_COLLISION) { + /* Check received length */ + if ((gNfca.CR.bytesTxRx + ((gNfca.CR.bitsTxRx != 0U) ? 1U : 0U)) > + (RFAL_NFCA_SDD_RES_LEN + RFAL_NFCA_SDD_REQ_LEN)) { + return RFAL_ERR_PROTO; + } + + /* Collision in BCC: Anticollide only UID part */ + if (((gNfca.CR.bytesTxRx + ((gNfca.CR.bitsTxRx != 0U) ? 1U : 0U)) > + (RFAL_NFCA_CASCADE_1_UID_LEN + RFAL_NFCA_SDD_REQ_LEN)) && + (gNfca.CR.backtrackCnt != 0U)) { + gNfca.CR.backtrackCnt--; + gNfca.CR.bytesTxRx = + (RFAL_NFCA_CASCADE_1_UID_LEN + RFAL_NFCA_SDD_REQ_LEN) - 1U; + gNfca.CR.bitsTxRx = 7; + collBit = + (uint8_t)(((uint8_t *)&gNfca.CR.selReq)[gNfca.CR.bytesTxRx] & + (1U + << gNfca.CR.bitsTxRx)); /* Not a real collision, + extract the actual bit for + the subsequent code */ + } + + /* Activity 1.0 & 1.1 9.3.4.12: If CON_DEVICES_LIMIT has a value of 0, + * then NFC Forum Device is configured to perform collision detection + * only */ + if ((gNfca.CR.devLimit == 0U) && (!(*gNfca.CR.collPend))) { + *gNfca.CR.collPend = true; + return RFAL_ERR_IGNORE; + } + + *gNfca.CR.collPend = true; + + /* Set and select the collision bit, with the number of bytes/bits + * successfully TxRx */ + if (collBit != 0U) { + ((uint8_t *)&gNfca.CR.selReq)[gNfca.CR.bytesTxRx] = + (uint8_t)(((uint8_t *)&gNfca.CR.selReq)[gNfca.CR.bytesTxRx] | + (1U << gNfca.CR.bitsTxRx)); /* MISRA 10.3 */ + } else { + ((uint8_t *)&gNfca.CR.selReq)[gNfca.CR.bytesTxRx] = + (uint8_t)(((uint8_t *)&gNfca.CR.selReq)[gNfca.CR.bytesTxRx] & + ~(1U << gNfca.CR.bitsTxRx)); /* MISRA 10.3 */ + } + + gNfca.CR.bitsTxRx++; + + /* Check if number of bits form a byte */ + if (gNfca.CR.bitsTxRx == RFAL_BITS_IN_BYTE) { + gNfca.CR.bitsTxRx = 0; + gNfca.CR.bytesTxRx++; + } + + gNfca.CR.state = RFAL_NFCA_CR_SDD_TX; + break; + } + + /*******************************************************************************/ + /* Check if Collision loop has failed */ + if (ret != RFAL_ERR_NONE) { + return ret; + } + + /* If collisions are to be reported check whether the response is complete + */ + if ((gNfca.CR.devLimit == 0U) && + (gNfca.CR.rxLen != sizeof(rfalNfcaSddRes))) { + return RFAL_ERR_PROTO; + } + + /* Check if the received BCC match */ + if (gNfca.CR.selReq.bcc != + rfalNfcaCalculateBcc(gNfca.CR.selReq.nfcid1, + RFAL_NFCA_CASCADE_1_UID_LEN)) { + return RFAL_ERR_PROTO; + } + + /*******************************************************************************/ + /* Anticollision OK, Select this Cascade Level */ + gNfca.CR.selReq.selPar = RFAL_NFCA_SEL_SELPAR; + + gNfca.CR.retries = RFAL_NFCA_N_RETRANS; + gNfca.CR.state = RFAL_NFCA_CR_SEL_TX; + break; + + /*******************************************************************************/ + case RFAL_NFCA_CR_SEL_TX: + + /* Send SEL_REQ (Select command) - Retry upon timeout EMVCo 2.6 9.6.1.3 + */ + rfalTransceiveBlockingTx( + (uint8_t *)&gNfca.CR.selReq, sizeof(rfalNfcaSelReq), + (uint8_t *)gNfca.CR.selRes, sizeof(rfalNfcaSelRes), &gNfca.CR.rxLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_NFCA_FDTMIN); + gNfca.CR.state = RFAL_NFCA_CR_SEL; + break; + + /*******************************************************************************/ + case RFAL_NFCA_CR_SEL: + + RFAL_EXIT_ON_BUSY(ret, rfalGetTransceiveStatus()); + + /* Retry upon timeout EMVCo 2.6 9.6.1.3 */ + if ((ret == RFAL_ERR_TIMEOUT) && (gNfca.CR.devLimit == 0U) && + (gNfca.CR.retries != 0U)) { + gNfca.CR.retries--; + platformTimerDestroy(gNfca.CR.tmrFDT); + gNfca.CR.tmrFDT = platformTimerCreate(RFAL_NFCA_T_RETRANS); + + gNfca.CR.state = RFAL_NFCA_CR_SEL_TX; + break; + } + + if (ret != RFAL_ERR_NONE) { + return ret; + } + + gNfca.CR.rxLen = rfalConvBitsToBytes(gNfca.CR.rxLen); + + /* Ensure proper response length */ + if (gNfca.CR.rxLen != sizeof(rfalNfcaSelRes)) { + return RFAL_ERR_PROTO; + } + + /*******************************************************************************/ + /* Check cascade byte, if cascade tag then go next cascade level */ + if (*gNfca.CR.selReq.nfcid1 == RFAL_NFCA_SDD_CT) { + /* Cascade Tag present, store nfcid1 bytes (excluding cascade tag) and + * continue for next CL */ + RFAL_MEMCPY(&gNfca.CR.nfcId1[*gNfca.CR.nfcId1Len], + &((uint8_t *)&gNfca.CR.selReq.nfcid1)[RFAL_NFCA_SDD_CT_LEN], + (RFAL_NFCA_CASCADE_1_UID_LEN - RFAL_NFCA_SDD_CT_LEN)); + *gNfca.CR.nfcId1Len += + (RFAL_NFCA_CASCADE_1_UID_LEN - RFAL_NFCA_SDD_CT_LEN); + + /* Go to next cascade level */ + gNfca.CR.state = RFAL_NFCA_CR_CL; + gNfca.CR.cascadeLv++; + } else { + /* UID Selection complete, Stop Cascade Level loop */ + RFAL_MEMCPY(&gNfca.CR.nfcId1[*gNfca.CR.nfcId1Len], + (uint8_t *)&gNfca.CR.selReq.nfcid1, + RFAL_NFCA_CASCADE_1_UID_LEN); + *gNfca.CR.nfcId1Len += RFAL_NFCA_CASCADE_1_UID_LEN; + + gNfca.CR.state = RFAL_NFCA_CR_DONE; + break; /* Only flag operation complete on the next execution */ + } + break; + + /*******************************************************************************/ + case RFAL_NFCA_CR_DONE: + return RFAL_ERR_NONE; + + /*******************************************************************************/ + default: + return RFAL_ERR_WRONG_STATE; + } + return RFAL_ERR_BUSY; +} + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerInitialize(void) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, + rfalSetMode(RFAL_MODE_POLL_NFCA, RFAL_BR_106, RFAL_BR_106)); + rfalSetErrorHandling(RFAL_ERRORHANDLING_NONE); + + rfalSetGT(RFAL_GT_NFCA); + rfalSetFDTListen(RFAL_FDT_LISTEN_NFCA_POLLER); + rfalSetFDTPoll(RFAL_FDT_POLL_NFCA_POLLER); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerCheckPresence(rfal14443AShortFrameCmd cmd, + rfalNfcaSensRes *sensRes) { + ReturnCode ret; + uint16_t rcvLen; + + /* Digital 1.1 6.10.1.3 For Commands ALL_REQ, SENS_REQ, SDD_REQ, and SEL_REQ, + * the NFC Forum Device * MUST treat receipt of a Listen Frame at a time + * after FDT(Listen, min) as a Timeour Error */ + + ret = rfalISO14443ATransceiveShortFrame( + cmd, (uint8_t *)sensRes, + (uint8_t)rfalConvBytesToBits(sizeof(rfalNfcaSensRes)), &rcvLen, + RFAL_NFCA_FDTMIN); + if ((ret == RFAL_ERR_RF_COLLISION) || (ret == RFAL_ERR_CRC) || + (ret == RFAL_ERR_NOMEM) || (ret == RFAL_ERR_FRAMING) || + (ret == RFAL_ERR_PAR) || (ret == RFAL_ERR_INCOMPLETE_BYTE)) { + ret = RFAL_ERR_NONE; + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerTechnologyDetection(rfalComplianceMode compMode, + rfalNfcaSensRes *sensRes) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, + rfalNfcaPollerStartTechnologyDetection(compMode, sensRes)); + rfalRunBlocking(ret, rfalNfcaPollerGetTechnologyDetectionStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerStartTechnologyDetection(rfalComplianceMode compMode, + rfalNfcaSensRes *sensRes) { + ReturnCode ret; + + gNfca.DT.compMode = compMode; + gNfca.DT.ret = + rfalNfcaPollerCheckPresence(((compMode == RFAL_COMPLIANCE_MODE_EMV) + ? RFAL_14443A_SHORTFRAME_CMD_WUPA + : RFAL_14443A_SHORTFRAME_CMD_REQA), + sensRes); + + /* Send SLP_REQ as Activity 1.1 9.2.3.6 and EMVCo 2.6 9.2.1.3 */ + if ((gNfca.DT.compMode != RFAL_COMPLIANCE_MODE_ISO) && + (gNfca.DT.ret == RFAL_ERR_NONE)) { + RFAL_EXIT_ON_ERR(ret, rfalNfcaPollerStartSleep()); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerGetTechnologyDetectionStatus(void) { + ReturnCode ret; + + /* If Sleep was sent, wait until its termination */ + if ((gNfca.DT.compMode != RFAL_COMPLIANCE_MODE_ISO) && + (gNfca.DT.ret == RFAL_ERR_NONE)) { + RFAL_EXIT_ON_BUSY(ret, rfalNfcaPollerGetSleepStatus()); + } + + return gNfca.DT.ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerSingleCollisionResolution(uint8_t devLimit, + bool *collPending, + rfalNfcaSelRes *selRes, + uint8_t *nfcId1, + uint8_t *nfcId1Len) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalNfcaPollerStartSingleCollisionResolution( + devLimit, collPending, selRes, nfcId1, nfcId1Len)); + rfalRunBlocking(ret, rfalNfcaPollerGetSingleCollisionResolutionStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerStartFullCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, + rfalNfcaListenDevice *nfcaDevList, uint8_t *devCnt) { + ReturnCode ret; + rfalNfcaSensRes sensRes; + uint16_t rcvLen; + + if ((nfcaDevList == NULL) || (devCnt == NULL)) { + return RFAL_ERR_PARAM; + } + + *devCnt = 0; + ret = RFAL_ERR_NONE; + + /*******************************************************************************/ + /* Send ALL_REQ before Anticollision if a Sleep was sent before + * Activity 1.1 9.3.4.1 and EMVco 2.6 9.3.2.1 */ + if (compMode != RFAL_COMPLIANCE_MODE_ISO) { + ret = rfalISO14443ATransceiveShortFrame( + RFAL_14443A_SHORTFRAME_CMD_WUPA, (uint8_t *)&nfcaDevList->sensRes, + (uint8_t)rfalConvBytesToBits(sizeof(rfalNfcaSensRes)), &rcvLen, + RFAL_NFCA_FDTMIN); + if (ret != RFAL_ERR_NONE) { + if ((compMode == RFAL_COMPLIANCE_MODE_EMV) || + ((ret != RFAL_ERR_RF_COLLISION) && (ret != RFAL_ERR_CRC) && + (ret != RFAL_ERR_FRAMING) && (ret != RFAL_ERR_PAR) && + (ret != RFAL_ERR_INCOMPLETE_BYTE))) { + return ret; + } + } + + /* Check proper SENS_RES/ATQA size */ + if ((ret == RFAL_ERR_NONE) && + (rfalConvBytesToBits(sizeof(rfalNfcaSensRes)) != rcvLen)) { + return RFAL_ERR_PROTO; + } + } + + /*******************************************************************************/ + /* Store the SENS_RES from Technology Detection or from WUPA */ + sensRes = nfcaDevList->sensRes; + + if (devLimit > 0U) /* MISRA 21.18 */ + { + RFAL_MEMSET(nfcaDevList, 0x00, (sizeof(rfalNfcaListenDevice) * devLimit)); + } + + /* Restore the prev SENS_RES, assuming that the SENS_RES received is from + * first device When only one device is detected it's not woken up then we'll + * have no SENS_RES (ATQA) */ + nfcaDevList->sensRes = sensRes; + + /* Save parameters */ + gNfca.CR.devCnt = devCnt; + gNfca.CR.devLimit = devLimit; + gNfca.CR.nfcaDevList = nfcaDevList; + gNfca.CR.compMode = compMode; + gNfca.CR.fState = RFAL_NFCA_CR_FULL_START; + +#if RFAL_FEATURE_T1T + /*******************************************************************************/ + /* Only check for T1T if previous SENS_RES was received without a transmission + * * error. When collisions occur bits in the SENS_RES may look like a T1T */ + /* If T1T Anticollision is not supported Activity 1.1 9.3.4.3 */ + if (rfalNfcaIsSensResT1T(&nfcaDevList->sensRes) && (devLimit != 0U) && + (ret == RFAL_ERR_NONE) && (compMode != RFAL_COMPLIANCE_MODE_EMV)) { + /* RID_REQ shall be performed Activity 1.1 9.3.4.24 */ + rfalT1TPollerInitialize(); + RFAL_EXIT_ON_ERR(ret, rfalT1TPollerRid(&nfcaDevList->ridRes)); + + *devCnt = 1U; + nfcaDevList->isSleep = false; + nfcaDevList->type = RFAL_NFCA_T1T; + nfcaDevList->nfcId1Len = RFAL_NFCA_CASCADE_1_UID_LEN; + RFAL_MEMCPY(&nfcaDevList->nfcId1, &nfcaDevList->ridRes.uid, + RFAL_NFCA_CASCADE_1_UID_LEN); + + return RFAL_ERR_NONE; + } +#endif /* RFAL_FEATURE_T1T */ + + RFAL_EXIT_ON_ERR( + ret, rfalNfcaPollerStartSingleCollisionResolution( + devLimit, &gNfca.CR.collPending, &nfcaDevList->selRes, + (uint8_t *)&nfcaDevList->nfcId1, &nfcaDevList->nfcId1Len)); + + gNfca.CR.fState = RFAL_NFCA_CR_FULL_START; + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerGetFullCollisionResolutionStatus(void) { + ReturnCode ret; + uint8_t newDevType; + + if ((gNfca.CR.nfcaDevList == NULL) || (gNfca.CR.devCnt == NULL)) { + return RFAL_ERR_WRONG_STATE; + } + + switch (gNfca.CR.fState) { + /*******************************************************************************/ + case RFAL_NFCA_CR_FULL_START: + + /*******************************************************************************/ + /* Check whether a T1T has already been detected */ + if (rfalNfcaIsSensResT1T(&gNfca.CR.nfcaDevList->sensRes) && + (gNfca.CR.nfcaDevList->type == RFAL_NFCA_T1T)) { + /* T1T doesn't support Anticollision */ + return RFAL_ERR_NONE; + } + + /* fall through */ + + /*******************************************************************************/ + case RFAL_NFCA_CR_FULL_RESTART: /* PRQA S 2003 # MISRA 16.3 - Intentional + fall through */ + + /*******************************************************************************/ + RFAL_EXIT_ON_ERR(ret, rfalNfcaPollerGetSingleCollisionResolutionStatus()); + + /* Assign Listen Device */ + newDevType = + ((uint8_t)gNfca.CR.nfcaDevList[*gNfca.CR.devCnt].selRes.sak) & + RFAL_NFCA_SEL_RES_CONF_MASK; /* MISRA 10.8 */ + /* PRQA S 4342 1 # MISRA 10.5 - Guaranteed that no invalid enum values are + * created: see guard_eq_RFAL_NFCA_T2T, .... */ + gNfca.CR.nfcaDevList[*gNfca.CR.devCnt].type = + (rfalNfcaListenDeviceType)newDevType; + gNfca.CR.nfcaDevList[*gNfca.CR.devCnt].isSleep = false; + (*gNfca.CR.devCnt)++; + + /* If a collision was detected and device counter is lower than limit + * Activity 1.1 9.3.4.21 */ + if ((*gNfca.CR.devCnt < gNfca.CR.devLimit) && (gNfca.CR.collPending)) { + /* Put this device to Sleep Activity 1.1 9.3.4.22 */ + RFAL_EXIT_ON_ERR(ret, rfalNfcaPollerStartSleep()); + gNfca.CR.nfcaDevList[(*gNfca.CR.devCnt - 1U)].isSleep = true; + + gNfca.CR.fState = RFAL_NFCA_CR_FULL_SLPCHECK; + return RFAL_ERR_BUSY; + } else { + /* Exit loop */ + gNfca.CR.collPending = false; + } + break; + + /*******************************************************************************/ + case RFAL_NFCA_CR_FULL_SLPCHECK: + + RFAL_EXIT_ON_BUSY(ret, rfalNfcaPollerGetSleepStatus()); + + /* Send a new SENS_REQ to check for other cards Activity 1.1 9.3.4.23 */ + ret = rfalNfcaPollerCheckPresence( + RFAL_14443A_SHORTFRAME_CMD_REQA, + &gNfca.CR.nfcaDevList[*gNfca.CR.devCnt].sensRes); + if (ret == RFAL_ERR_TIMEOUT) { + /* No more devices found, exit */ + gNfca.CR.collPending = false; + } else { + /* Another device found, restart|continue loop */ + gNfca.CR.collPending = true; + + /*******************************************************************************/ + /* Check if collision resolution shall continue */ + if ((*gNfca.CR.devCnt < gNfca.CR.devLimit) && (gNfca.CR.collPending)) { + RFAL_EXIT_ON_ERR( + ret, + rfalNfcaPollerStartSingleCollisionResolution( + gNfca.CR.devLimit, &gNfca.CR.collPending, + &gNfca.CR.nfcaDevList[*gNfca.CR.devCnt].selRes, + (uint8_t *)&gNfca.CR.nfcaDevList[*gNfca.CR.devCnt].nfcId1, + &gNfca.CR.nfcaDevList[*gNfca.CR.devCnt].nfcId1Len)); + + gNfca.CR.fState = RFAL_NFCA_CR_FULL_RESTART; + return RFAL_ERR_BUSY; + } + } + break; + + /*******************************************************************************/ + default: + return RFAL_ERR_WRONG_STATE; + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerFullCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, + rfalNfcaListenDevice *nfcaDevList, uint8_t *devCnt) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalNfcaPollerStartFullCollisionResolution( + compMode, devLimit, nfcaDevList, devCnt)); + rfalRunBlocking(ret, rfalNfcaPollerGetFullCollisionResolutionStatus()); + + return ret; +} + +ReturnCode rfalNfcaPollerSleepFullCollisionResolution( + uint8_t devLimit, rfalNfcaListenDevice *nfcaDevList, uint8_t *devCnt) { + bool firstRound; + uint8_t tmpDevCnt; + ReturnCode ret; + + if ((nfcaDevList == NULL) || (devCnt == NULL)) { + return RFAL_ERR_PARAM; + } + + /* Only use ALL_REQ (WUPA) on the first round */ + firstRound = true; + *devCnt = 0; + + /* Perform collision resolution until no new device is found */ + do { + tmpDevCnt = 0; + ret = rfalNfcaPollerFullCollisionResolution( + (firstRound ? RFAL_COMPLIANCE_MODE_NFC : RFAL_COMPLIANCE_MODE_ISO), + (devLimit - *devCnt), &nfcaDevList[*devCnt], &tmpDevCnt); + + if ((ret == RFAL_ERR_NONE) && (tmpDevCnt > 0U)) { + *devCnt += tmpDevCnt; + + /* Check whether to seacrh for more devices */ + if (*devCnt < devLimit) { + /* Set last found device to sleep (all others are slept already) */ + rfalNfcaPollerSleep(); + nfcaDevList[((*devCnt) - 1U)].isSleep = true; + + /* Check if any other device is present */ + ret = rfalNfcaPollerCheckPresence(RFAL_14443A_SHORTFRAME_CMD_REQA, + &nfcaDevList[*devCnt].sensRes); + if (ret == RFAL_ERR_NONE) { + firstRound = false; + continue; + } + } + } + break; + } while (true); + + return ((*devCnt > 0U) ? RFAL_ERR_NONE : ret); +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerSelect(const uint8_t *nfcid1, uint8_t nfcidLen, + rfalNfcaSelRes *selRes) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalNfcaPollerStartSelect(nfcid1, nfcidLen, selRes)); + rfalRunBlocking(ret, rfalNfcaPollerGetSelectStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerStartSelect(const uint8_t *nfcid1, uint8_t nfcidLen, + rfalNfcaSelRes *selRes) { + if ((nfcid1 == NULL) || (nfcidLen > RFAL_NFCA_CASCADE_3_UID_LEN) || + (selRes == NULL)) { + return RFAL_ERR_PARAM; + } + + /* Calculate Cascate Level */ + gNfca.SEL.fCascadeLv = rfalNfcaNfcidLen2CL(nfcidLen); + gNfca.SEL.cascadeLv = RFAL_NFCA_SEL_CASCADE_L1; + + gNfca.SEL.nfcidOffset = 0; + gNfca.SEL.isRx = false; + gNfca.SEL.selRes = selRes; + gNfca.SEL.nfcid1 = nfcid1; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerGetSelectStatus(void) { + ReturnCode ret; + rfalNfcaSelReq selReq; + + if ((!gNfca.SEL.isRx)) { + /*******************************************************************************/ + /* Go through all Cascade Levels Activity 1.1 9.4.4 */ + if (gNfca.SEL.cascadeLv <= gNfca.SEL.fCascadeLv) { + /* Assign SEL_CMD according to the CLn and SEL_PAR*/ + selReq.selCmd = rfalNfcaCLn2SELCMD(gNfca.SEL.cascadeLv); + selReq.selPar = RFAL_NFCA_SEL_SELPAR; + + /* Compute NFCID/Data on the SEL_REQ command Digital 1.1 Table 18 */ + if (gNfca.SEL.fCascadeLv != gNfca.SEL.cascadeLv) { + *selReq.nfcid1 = RFAL_NFCA_SDD_CT; + RFAL_MEMCPY(&selReq.nfcid1[RFAL_NFCA_SDD_CT_LEN], + &gNfca.SEL.nfcid1[gNfca.SEL.nfcidOffset], + (RFAL_NFCA_CASCADE_1_UID_LEN - RFAL_NFCA_SDD_CT_LEN)); + gNfca.SEL.nfcidOffset += + (RFAL_NFCA_CASCADE_1_UID_LEN - RFAL_NFCA_SDD_CT_LEN); + } else { + RFAL_MEMCPY(selReq.nfcid1, &gNfca.SEL.nfcid1[gNfca.SEL.nfcidOffset], + RFAL_NFCA_CASCADE_1_UID_LEN); + } + + /* Calculate nfcid's BCC */ + selReq.bcc = rfalNfcaCalculateBcc((uint8_t *)&selReq.nfcid1, + sizeof(selReq.nfcid1)); + + /*******************************************************************************/ + /* Send SEL_REQ */ + RFAL_EXIT_ON_ERR(ret, rfalTransceiveBlockingTx( + (uint8_t *)&selReq, sizeof(rfalNfcaSelReq), + (uint8_t *)gNfca.SEL.selRes, + sizeof(rfalNfcaSelRes), &gNfca.SEL.rxLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_NFCA_FDTMIN)); + + /* Wait for Rx to conclude */ + gNfca.SEL.isRx = true; + + return RFAL_ERR_BUSY; + } + } else { + RFAL_EXIT_ON_BUSY(ret, rfalGetTransceiveStatus()); + + /* Ensure proper response length */ + if (rfalConvBitsToBytes(gNfca.SEL.rxLen) != sizeof(rfalNfcaSelRes)) { + return RFAL_ERR_PROTO; + } + + /* Check if there are more level(s) to be selected */ + if (gNfca.SEL.cascadeLv < gNfca.SEL.fCascadeLv) { + /* Advance to the next cascade lavel */ + gNfca.SEL.cascadeLv++; + gNfca.SEL.isRx = false; + + return RFAL_ERR_BUSY; + } + } + + /* REMARK: Could check if NFCID1 is complete */ + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerSleep(void) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalNfcaPollerStartSleep()); + rfalRunBlocking(ret, rfalNfcaPollerGetSleepStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerStartSleep(void) { + rfalTransceiveContext ctx; + + gNfca.slpReq.frame[RFAL_NFCA_SLP_CMD_POS] = RFAL_NFCA_SLP_CMD; + gNfca.slpReq.frame[RFAL_NFCA_SLP_BYTE2_POS] = RFAL_NFCA_SLP_BYTE2; + + rfalCreateByteFlagsTxRxContext( + ctx, (uint8_t *)&gNfca.slpReq, sizeof(rfalNfcaSlpReq), + (uint8_t *)&gNfca.slpReq, sizeof(gNfca.slpReq), NULL, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_NFCA_SLP_FWT); + return rfalStartTransceive(&ctx); +} + +/*******************************************************************************/ +ReturnCode rfalNfcaPollerGetSleepStatus(void) { + ReturnCode ret; + + /* ISO14443-3 6.4.3 HLTA - If PICC responds with any modulation during 1 ms + this response shall be interpreted as not acknowledge Digital 2.0 6.9.2.1 + & EMVCo 3.0 5.6.2.1 - consider the HLTA command always acknowledged No + check to be compliant with NFC and EMVCo, and to improve interoprability + (Kovio RFID Tag) + */ + RFAL_EXIT_ON_BUSY(ret, rfalGetTransceiveStatus()); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +bool rfalNfcaListenerIsSleepReq(const uint8_t *buf, uint16_t bufLen) { + /* Check if length and payload match */ + if ((bufLen != sizeof(rfalNfcaSlpReq)) || + (buf[RFAL_NFCA_SLP_CMD_POS] != RFAL_NFCA_SLP_CMD) || + (buf[RFAL_NFCA_SLP_BYTE2_POS] != RFAL_NFCA_SLP_BYTE2)) { + return false; + } + + return true; +} + +/* If the guards here don't compile then the code above cannot work anymore. */ +extern uint8_t + guard_eq_RFAL_NFCA_T2T[((RFAL_NFCA_SEL_RES_CONF_MASK & + (uint8_t)RFAL_NFCA_T2T) == (uint8_t)RFAL_NFCA_T2T) + ? 1 + : (-1)]; +extern uint8_t + guard_eq_RFAL_NFCA_T4T[((RFAL_NFCA_SEL_RES_CONF_MASK & + (uint8_t)RFAL_NFCA_T4T) == (uint8_t)RFAL_NFCA_T4T) + ? 1 + : (-1)]; +extern uint8_t guard_eq_RFAL_NFCA_NFCDEP[((RFAL_NFCA_SEL_RES_CONF_MASK & + (uint8_t)RFAL_NFCA_NFCDEP) == + (uint8_t)RFAL_NFCA_NFCDEP) + ? 1 + : (-1)]; +extern uint8_t guard_eq_RFAL_NFCA_T4T_NFCDEP[((RFAL_NFCA_SEL_RES_CONF_MASK & + (uint8_t)RFAL_NFCA_T4T_NFCDEP) == + (uint8_t)RFAL_NFCA_T4T_NFCDEP) + ? 1 + : (-1)]; +#endif /* RFAL_FEATURE_NFCA */ diff --git a/core/embed/io/nfc/rfal/source/rfal_nfcb.c b/core/embed/io/nfc/rfal/source/rfal_nfcb.c new file mode 100644 index 0000000000..0b9c52b549 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_nfcb.c @@ -0,0 +1,751 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_nfcb.c + * + * \author Gustavo Patricio + * + * \brief Implementation of NFC-B (ISO14443B) helpers + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_nfcb.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_NFCB + */ + +#if RFAL_FEATURE_NFCB + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_NFCB_SENSB_REQ_EXT_SENSB_RES_SUPPORTED \ + 0x10U /*!< Bit mask for Extended SensB Response support in SENSB_REQ */ +#define RFAL_NFCB_SENSB_RES_PROT_TYPE_RFU \ + 0x08U /*!< Bit mask for Protocol Type RFU in SENSB_RES */ +#define RFAL_NFCB_SLOT_MARKER_SC_SHIFT \ + 4U /*!< Slot Code position on SLOT_MARKER APn */ + +#define RFAL_NFCB_SLOTMARKER_SLOTCODE_MIN \ + 1U /*!< SLOT_MARKER Slot Code minimum Digital 1.1 Table 37 */ +#define RFAL_NFCB_SLOTMARKER_SLOTCODE_MAX \ + 16U /*!< SLOT_MARKER Slot Code maximum Digital 1.1 Table 37 */ + +#define RFAL_NFCB_ACTIVATION_FWT \ + (RFAL_NFCB_FWTSENSB + \ + RFAL_NFCB_DTPOLL_20) /*!< FWT(SENSB) + dTbPoll Digital 2.0 7.9.1.3 */ + +/*! Advanced and Extended bit mask in Parameter of SENSB_REQ */ +#define RFAL_NFCB_SENSB_REQ_PARAM \ + (RFAL_NFCB_SENSB_REQ_ADV_FEATURE | \ + RFAL_NFCB_SENSB_REQ_EXT_SENSB_RES_SUPPORTED) + +/*! NFC-B commands definition */ +enum { + RFAL_NFCB_CMD_SENSB_REQ = + 0x05, /*!< SENSB_REQ (REQB) & SLOT_MARKER Digital 1.1 Table 24*/ + RFAL_NFCB_CMD_SENSB_RES = + 0x50, /*!< SENSB_RES (ATQB) & SLOT_MARKER Digital 1.1 Table 27*/ + RFAL_NFCB_CMD_SLPB_REQ = + 0x50, /*!< SLPB_REQ (HLTB command) Digital 1.1 Table 38 */ + RFAL_NFCB_CMD_SLPB_RES = + 0x00 /*!< SLPB_RES (HLTB Answer) Digital 1.1 Table 39 */ +}; + +/*! NFC-B Technology Detection context */ +typedef struct { + rfalNfcbSensbRes *sensbRes; /*!< Location of SENSB_RES */ + uint8_t *sensbResLen; /*!< Location of SENSB_RES length */ + uint16_t rxLen; /*!< Reception length (16bits) */ +} rfalNfcbTechDetParams; + +/*! NFC-B Collision Resolution states */ +typedef enum { + RFAL_NFCB_CR_SLOTS_TX, /*!< State where slots are open and slot markers issued + */ + RFAL_NFCB_CR_SLOTS, /*!< State where slots are open and slot markers issued */ + RFAL_NFCB_CR_SLEEP, /*!< State between slotted loop */ + RFAL_NFCB_CR_END /*!< State for terminating the collision resolution */ +} rfalNfcbColResState; + +/*! NFC-B Collision Resolution context */ +typedef struct { + rfalComplianceMode compMode; /*!< Compliancy mode to be used */ + uint8_t devLimit; /*!< Device limit to be used */ + rfalNfcbListenDevice *nfcbDevList; /*!< Location of the device list */ + uint8_t *devCnt; /*!< Location of the device counter */ + bool *colPending; /*!< Location of the Collision pending flag */ + + uint8_t curSlots; /*!< Current number of slots */ + uint8_t curSlotNum; /*!< Current Slot number (whithin slotted loop) */ + uint8_t endSlots; /*!< Maximum number of slots allowed */ + uint8_t curDevCnt; /*!< Current device counter (per slotted loop) */ + bool colPend; /*!< Internal Collision pending flag */ + uint32_t tmr; /*!< Collision Resolution timer */ + rfalNfcbColResState state; /*!< Collision Resolution state */ +} rfalNfcbColResParams; + +/* + ****************************************************************************** + * GLOBAL MACROS + ****************************************************************************** + */ + +#define rfalNfcbNI2NumberOfSlots(ni) \ + (uint8_t)( \ + 1U \ + << (ni)) /*!< Converts the Number of slots Identifier to slot number */ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! ALLB_REQ (WUPB) and SENSB_REQ (REQB) Command Format Digital 1.1 7.6.1 */ +typedef struct { + uint8_t cmd; /*!< xxxxB_REQ: 05h */ + uint8_t AFI; /*!< NFC Identifier */ + uint8_t PARAM; /*!< Application Data */ +} rfalNfcbSensbReq; + +/*! SLOT_MARKER Command format Digital 1.1 7.7.1 */ +typedef struct { + uint8_t APn; /*!< Slot number 2..16 | 0101b */ +} rfalNfcbSlotMarker; + +/*! SLPB_REQ (HLTB) Command Format Digital 1.1 7.8.1 */ +typedef struct { + uint8_t cmd; /*!< SLPB_REQ: 50h */ + uint8_t nfcid0[RFAL_NFCB_NFCID0_LEN]; /*!< NFC Identifier (PUPI)*/ +} rfalNfcbSlpbReq; + +/*! SLPB_RES (HLTB) Response Format Digital 1.1 7.8.2 */ +typedef struct { + uint8_t cmd; /*!< SLPB_RES: 00h */ +} rfalNfcbSlpbRes; + +/*! RFAL NFC-B instance */ +typedef struct { + uint8_t AFI; /*!< AFI to be used */ + uint8_t PARAM; /*!< PARAM to be used */ + rfalNfcbColResParams CR; /*!< Collision Resolution */ + rfalNfcbTechDetParams DT; +} rfalNfcb; + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +static ReturnCode rfalNfcbCheckSensbRes(const rfalNfcbSensbRes *sensbRes, + uint8_t sensbResLen); +static ReturnCode rfalNfcbPollerSleepTx(const uint8_t *nfcid0); + +/* +****************************************************************************** +* LOCAL VARIABLES +****************************************************************************** +*/ + +static rfalNfcb gRfalNfcb; /*!< RFAL NFC-B Instance */ + +/* +****************************************************************************** +* LOCAL FUNCTIONS +****************************************************************************** +*/ + +/*******************************************************************************/ +static ReturnCode rfalNfcbCheckSensbRes(const rfalNfcbSensbRes *sensbRes, + uint8_t sensbResLen) { + /* Check response length */ + if (((sensbResLen != RFAL_NFCB_SENSB_RES_LEN) && + (sensbResLen != RFAL_NFCB_SENSB_RES_EXT_LEN))) { + return RFAL_ERR_PROTO; + } + + /* Check SENSB_RES and Protocol Type Digital 1.1 7.6.2.19 */ + if (((sensbRes->protInfo.FsciProType & RFAL_NFCB_SENSB_RES_PROT_TYPE_RFU) != + 0U) || + (sensbRes->cmd != (uint8_t)RFAL_NFCB_CMD_SENSB_RES)) { + return RFAL_ERR_PROTO; + } + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +/* This function is used internally during Collision Resolution. Its * + * purpose is to block the state machine for minimmal time. * + * Activity 2.1 does not enforce response checking or error handling. */ +static ReturnCode rfalNfcbPollerSleepTx(const uint8_t *nfcid0) { + ReturnCode ret; + rfalNfcbSlpbReq slpbReq; + + if (nfcid0 == NULL) { + return RFAL_ERR_PARAM; + } + + /* Compute SLPB_REQ */ + slpbReq.cmd = RFAL_NFCB_CMD_SLPB_REQ; + RFAL_MEMCPY(slpbReq.nfcid0, nfcid0, RFAL_NFCB_NFCID0_LEN); + + /* Send SLPB_REQ and ignore its response and FWT*/ + RFAL_EXIT_ON_ERR( + ret, rfalTransceiveBlockingTx( + (uint8_t *)&slpbReq, sizeof(rfalNfcbSlpbReq), NULL, 0, NULL, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_FDT_POLL_NFCB_POLLER)); + + return RFAL_ERR_NONE; +} + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerInitialize(void) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, + rfalSetMode(RFAL_MODE_POLL_NFCB, RFAL_BR_106, RFAL_BR_106)); + rfalSetErrorHandling(RFAL_ERRORHANDLING_NONE); + + rfalSetGT(RFAL_GT_NFCB); + rfalSetFDTListen(RFAL_FDT_LISTEN_NFCB_POLLER); + rfalSetFDTPoll(RFAL_FDT_POLL_NFCB_POLLER); + + gRfalNfcb.AFI = RFAL_NFCB_AFI; + gRfalNfcb.PARAM = RFAL_NFCB_PARAM; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerInitializeWithParams(uint8_t AFI, uint8_t PARAM) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalNfcbPollerInitialize()); + + gRfalNfcb.AFI = AFI; + gRfalNfcb.PARAM = (PARAM & RFAL_NFCB_SENSB_REQ_PARAM); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerCheckPresence(rfalNfcbSensCmd cmd, rfalNfcbSlots slots, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR( + ret, rfalNfcbPollerStartCheckPresence(cmd, slots, sensbRes, sensbResLen)); + rfalRunBlocking(ret, rfalNfcbPollerGetCheckPresenceStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerStartCheckPresence(rfalNfcbSensCmd cmd, + rfalNfcbSlots slots, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen) { + rfalNfcbSensbReq sensbReq; + + /* Check if the command requested and given the slot number are valid */ + if (((RFAL_NFCB_SENS_CMD_SENSB_REQ != cmd) && + (RFAL_NFCB_SENS_CMD_ALLB_REQ != cmd)) || + (slots > RFAL_NFCB_SLOT_NUM_16) || (sensbRes == NULL) || + (sensbResLen == NULL)) { + return RFAL_ERR_PARAM; + } + + *sensbResLen = 0; + RFAL_MEMSET(sensbRes, 0x00, sizeof(rfalNfcbSensbRes)); + + /* Compute SENSB_REQ */ + sensbReq.cmd = RFAL_NFCB_CMD_SENSB_REQ; + sensbReq.AFI = gRfalNfcb.AFI; + sensbReq.PARAM = (((uint8_t)gRfalNfcb.PARAM & RFAL_NFCB_SENSB_REQ_PARAM) | + (uint8_t)cmd | (uint8_t)slots); + + gRfalNfcb.DT.sensbRes = sensbRes; + gRfalNfcb.DT.sensbResLen = sensbResLen; + + /* Send SENSB_REQ */ + return rfalTransceiveBlockingTx((uint8_t *)&sensbReq, + sizeof(rfalNfcbSensbReq), (uint8_t *)sensbRes, + sizeof(rfalNfcbSensbRes), &gRfalNfcb.DT.rxLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_NFCB_FWTSENSB); +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerGetCheckPresenceStatus(void) { + ReturnCode ret; + + RFAL_EXIT_ON_BUSY(ret, rfalGetTransceiveStatus()); + + /* Covert bits to bytes (u8) */ + (*gRfalNfcb.DT.sensbResLen) = + (uint8_t)rfalConvBitsToBytes(gRfalNfcb.DT.rxLen); + + /* Check if a transmission error was detected */ + if ((ret == RFAL_ERR_CRC) || (ret == RFAL_ERR_FRAMING)) { + /* Invalidate received frame as an error was detected (CollisionResolution + * checks if valid) */ + (*gRfalNfcb.DT.sensbResLen) = 0; + return RFAL_ERR_NONE; + } + + if (ret == RFAL_ERR_NONE) { + return rfalNfcbCheckSensbRes(gRfalNfcb.DT.sensbRes, + *gRfalNfcb.DT.sensbResLen); + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerSleep(const uint8_t *nfcid0) { + uint16_t rxLen; + ReturnCode ret; + rfalNfcbSlpbReq slpbReq; + rfalNfcbSlpbRes slpbRes; + + if (nfcid0 == NULL) { + return RFAL_ERR_PARAM; + } + + /* Compute SLPB_REQ */ + slpbReq.cmd = RFAL_NFCB_CMD_SLPB_REQ; + RFAL_MEMCPY(slpbReq.nfcid0, nfcid0, RFAL_NFCB_NFCID0_LEN); + + RFAL_EXIT_ON_ERR(ret, + rfalTransceiveBlockingTxRx( + (uint8_t *)&slpbReq, sizeof(rfalNfcbSlpbReq), + (uint8_t *)&slpbRes, sizeof(rfalNfcbSlpbRes), &rxLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_NFCB_ACTIVATION_FWT)); + + /* Check SLPB_RES */ + if ((rxLen != sizeof(rfalNfcbSlpbRes)) || + (slpbRes.cmd != (uint8_t)RFAL_NFCB_CMD_SLPB_RES)) { + return RFAL_ERR_PROTO; + } + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerSlotMarker(uint8_t slotCode, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR( + ret, rfalNfcbPollerStartSlotMarker(slotCode, sensbRes, sensbResLen)); + rfalRunBlocking(ret, rfalNfcbPollerGetSlotMarkerStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerStartSlotMarker(uint8_t slotCode, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen) { + rfalNfcbSlotMarker slotMarker; + + /* Check parameters */ + if ((sensbRes == NULL) || (sensbResLen == NULL) || + (slotCode < RFAL_NFCB_SLOTMARKER_SLOTCODE_MIN) || + (slotCode > RFAL_NFCB_SLOTMARKER_SLOTCODE_MAX)) { + return RFAL_ERR_PARAM; + } + /* Compose and send SLOT_MARKER with disabled AGC to detect collisions */ + slotMarker.APn = ((slotCode << RFAL_NFCB_SLOT_MARKER_SC_SHIFT) | + (uint8_t)RFAL_NFCB_CMD_SENSB_REQ); + + gRfalNfcb.DT.sensbRes = sensbRes; + gRfalNfcb.DT.sensbResLen = sensbResLen; + + return rfalTransceiveBlockingTx( + (uint8_t *)&slotMarker, sizeof(rfalNfcbSlotMarker), + (uint8_t *)gRfalNfcb.DT.sensbRes, sizeof(rfalNfcbSensbRes), + &gRfalNfcb.DT.rxLen, RFAL_TXRX_FLAGS_DEFAULT, RFAL_NFCB_FWTSENSB); +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerGetSlotMarkerStatus(void) { + ReturnCode ret; + + RFAL_EXIT_ON_BUSY(ret, rfalGetTransceiveStatus()); + + /* Covert bits to bytes (u8) */ + (*gRfalNfcb.DT.sensbResLen) = + (uint8_t)rfalConvBitsToBytes(gRfalNfcb.DT.rxLen); + + /* Check if a transmission error was detected */ + if ((ret == RFAL_ERR_CRC) || (ret == RFAL_ERR_FRAMING)) { + return RFAL_ERR_RF_COLLISION; + } + + if (ret == RFAL_ERR_NONE) { + return rfalNfcbCheckSensbRes(gRfalNfcb.DT.sensbRes, + *gRfalNfcb.DT.sensbResLen); + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerTechnologyDetection(rfalComplianceMode compMode, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen) { + return rfalNfcbPollerCheckPresence( + ((compMode == RFAL_COMPLIANCE_MODE_EMV) ? RFAL_NFCB_SENS_CMD_ALLB_REQ + : RFAL_NFCB_SENS_CMD_SENSB_REQ), + RFAL_NFCB_SLOT_NUM_1, sensbRes, sensbResLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerStartTechnologyDetection(rfalComplianceMode compMode, + rfalNfcbSensbRes *sensbRes, + uint8_t *sensbResLen) { + return rfalNfcbPollerStartCheckPresence( + ((compMode == RFAL_COMPLIANCE_MODE_EMV) ? RFAL_NFCB_SENS_CMD_ALLB_REQ + : RFAL_NFCB_SENS_CMD_SENSB_REQ), + RFAL_NFCB_SLOT_NUM_1, sensbRes, sensbResLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerGetTechnologyDetectionStatus(void) { + return rfalNfcbPollerGetCheckPresenceStatus(); +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerCollisionResolution(rfalComplianceMode compMode, + uint8_t devLimit, + rfalNfcbListenDevice *nfcbDevList, + uint8_t *devCnt) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalNfcbPollerStartCollisionResolution( + compMode, devLimit, nfcbDevList, devCnt)); + rfalRunBlocking(ret, rfalNfcbPollerGetCollisionResolutionStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerSlottedCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, rfalNfcbSlots initSlots, + rfalNfcbSlots endSlots, rfalNfcbListenDevice *nfcbDevList, uint8_t *devCnt, + bool *colPending) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalNfcbPollerStartSlottedCollisionResolution( + compMode, devLimit, initSlots, endSlots, + nfcbDevList, devCnt, colPending)); + rfalRunBlocking(ret, rfalNfcbPollerGetCollisionResolutionStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerStartCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, + rfalNfcbListenDevice *nfcbDevList, uint8_t *devCnt) { + return rfalNfcbPollerStartSlottedCollisionResolution( + compMode, devLimit, RFAL_NFCB_SLOT_NUM_1, RFAL_NFCB_SLOT_NUM_16, + nfcbDevList, devCnt, &gRfalNfcb.CR.colPend); +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerStartSlottedCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, rfalNfcbSlots initSlots, + rfalNfcbSlots endSlots, rfalNfcbListenDevice *nfcbDevList, uint8_t *devCnt, + bool *colPending) { + /* Check parameters. In ISO | Activity 1.0 mode the initial slots must be 1 as + * continuation of Technology Detection */ + if ((nfcbDevList == NULL) || (devCnt == NULL) || (colPending == NULL) || + (initSlots > RFAL_NFCB_SLOT_NUM_16) || + (endSlots > RFAL_NFCB_SLOT_NUM_16) || + ((compMode == RFAL_COMPLIANCE_MODE_ISO) && + (initSlots != RFAL_NFCB_SLOT_NUM_1))) { + return RFAL_ERR_PARAM; + } + + (*devCnt) = 0; + (*colPending) = false; + platformTimerDestroy(gRfalNfcb.CR.tmr); + + /* Store parameters */ + gRfalNfcb.CR.compMode = compMode; + gRfalNfcb.CR.devLimit = devLimit; + gRfalNfcb.CR.curSlots = (uint8_t)initSlots; + gRfalNfcb.CR.endSlots = (uint8_t)endSlots; + gRfalNfcb.CR.nfcbDevList = nfcbDevList; + gRfalNfcb.CR.colPending = colPending; + gRfalNfcb.CR.devCnt = devCnt; + (*gRfalNfcb.CR.devCnt) = 0U; + gRfalNfcb.CR.curDevCnt = 0U; + gRfalNfcb.CR.curSlotNum = 0U; + gRfalNfcb.CR.tmr = RFAL_TIMING_NONE; + + gRfalNfcb.CR.state = RFAL_NFCB_CR_SLOTS_TX; + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcbPollerGetCollisionResolutionStatus(void) { + ReturnCode ret; + rfalNfcbSensCmd cmd; + + /* Check if operation is still not complete */ + if (gRfalNfcb.CR.tmr != RFAL_TIMING_NONE) { + if ((!platformTimerIsExpired(gRfalNfcb.CR.tmr))) { + return RFAL_ERR_BUSY; + } + } + + switch (gRfalNfcb.CR.state) { + /*******************************************************************************/ + case RFAL_NFCB_CR_SLOTS_TX: + + /* Check if it's the first iteration on ISO | Activity 1.0 mode */ + if ((gRfalNfcb.CR.compMode == RFAL_COMPLIANCE_MODE_ISO) && + (gRfalNfcb.CR.curSlots == (uint8_t)RFAL_NFCB_SLOT_NUM_1)) { + /* Do nothing in case Activity 1.0, where the previous SENSB_RES from + * technology detection should be used */ + } + /* Send SENSB_REQ with number of slots if not the first + Activity 2.1 9.3.5.24 - Symbol 23 */ + else if (gRfalNfcb.CR.curSlotNum == 0U) { + /* Send ALLB_REQ Activity 2.1 9.3.5.2 and 9.3.5.3 (Symbol 1 and 2) + */ + cmd = ((gRfalNfcb.CR.curSlots == (uint8_t)RFAL_NFCB_SLOT_NUM_1) + ? RFAL_NFCB_SENS_CMD_ALLB_REQ + : RFAL_NFCB_SENS_CMD_SENSB_REQ); + + /* PRQA S 4342 1 # MISRA 10.5 - Layout of rfalNfcbSlots and the limited + * loop guarantee that no invalid enum values are created. */ + rfalNfcbPollerStartCheckPresence( + cmd, (rfalNfcbSlots)gRfalNfcb.CR.curSlots, + &gRfalNfcb.CR.nfcbDevList[*gRfalNfcb.CR.devCnt].sensbRes, + &gRfalNfcb.CR.nfcbDevList[*gRfalNfcb.CR.devCnt].sensbResLen); + } else { + /* Activity 2.1 9.3.5.26 - Symbol 25 */ + rfalNfcbPollerStartSlotMarker( + gRfalNfcb.CR.curSlotNum, + &gRfalNfcb.CR.nfcbDevList[*gRfalNfcb.CR.devCnt].sensbRes, + &gRfalNfcb.CR.nfcbDevList[*gRfalNfcb.CR.devCnt].sensbResLen); + } + + gRfalNfcb.CR.state = RFAL_NFCB_CR_SLOTS; + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + case RFAL_NFCB_CR_SLOTS: + + RFAL_EXIT_ON_BUSY(ret, rfalNfcbPollerGetSlotMarkerStatus()); + + /*******************************************************************************/ + if (gRfalNfcb.CR.compMode == RFAL_COMPLIANCE_MODE_EMV) { + /* Report (timeout) error immediately EMVCo 3.0 9.6.1.3 */ + if (ret != RFAL_ERR_NONE) { + return ret; + } + + /* Check if there was a transmission error on WUPB EMVCo 3.0 9.3.3.1 + */ + if (gRfalNfcb.CR.nfcbDevList->sensbResLen == 0U) { + return RFAL_ERR_FRAMING; + } + } + + /*******************************************************************************/ + /* Activity 2.1 9.3.5.7 and 9.3.5.8 - Symbol 6 */ + if (ret != RFAL_ERR_TIMEOUT) { + /* Activity 2.1 9.3.5.8 - Symbol 7 */ + if ((rfalNfcbCheckSensbRes( + &gRfalNfcb.CR.nfcbDevList[*gRfalNfcb.CR.devCnt].sensbRes, + gRfalNfcb.CR.nfcbDevList[*gRfalNfcb.CR.devCnt].sensbResLen) == + RFAL_ERR_NONE) && + (ret == RFAL_ERR_NONE)) { + gRfalNfcb.CR.nfcbDevList[*gRfalNfcb.CR.devCnt].isSleep = false; + + if (gRfalNfcb.CR.compMode == RFAL_COMPLIANCE_MODE_EMV) { + (*gRfalNfcb.CR.devCnt)++; + return ret; + } else if (gRfalNfcb.CR.compMode == RFAL_COMPLIANCE_MODE_ISO) { + /* Activity 1.0 9.3.5.8 - Symbol 7 */ + (*gRfalNfcb.CR.devCnt)++; + gRfalNfcb.CR.curDevCnt++; + + /* Activity 1.0 9.3.5.10 - Symbol 9 */ + if ((*gRfalNfcb.CR.devCnt >= gRfalNfcb.CR.devLimit) || + (gRfalNfcb.CR.curSlotNum == (uint8_t)RFAL_NFCB_SLOT_NUM_1)) { + return ret; + } + + /* Activity 2.1 9.3.5.11 - Symbol 10 */ + rfalNfcbPollerSleep( + gRfalNfcb.CR.nfcbDevList[(*gRfalNfcb.CR.devCnt) - 1U] + .sensbRes.nfcid0); + gRfalNfcb.CR.nfcbDevList[(*gRfalNfcb.CR.devCnt) - 1U].isSleep = + true; + } else if (gRfalNfcb.CR.compMode == RFAL_COMPLIANCE_MODE_NFC) { + /* Activity 2.1 9.3.5.10 and 9.3.5.11 - Symbol 9 and Symbol 11*/ + if (gRfalNfcb.CR.curDevCnt != 0U) { + rfalNfcbPollerSleepTx( + gRfalNfcb.CR.nfcbDevList[(*gRfalNfcb.CR.devCnt) - (uint8_t)1U] + .sensbRes.nfcid0); + gRfalNfcb.CR.nfcbDevList[(*gRfalNfcb.CR.devCnt) - (uint8_t)1U] + .isSleep = true; + + gRfalNfcb.CR.tmr = platformTimerCreate( + (uint16_t)rfalConv1fcToMs(RFAL_NFCB_ACTIVATION_FWT)); + ret = RFAL_ERR_BUSY; + } + + /* Activity 2.1 9.3.5.12 - Symbol 11 */ + (*gRfalNfcb.CR.devCnt)++; + gRfalNfcb.CR.curDevCnt++; + + /* Activity 2.1 9.3.5.6 - Symbol 13 */ + if ((*gRfalNfcb.CR.devCnt >= gRfalNfcb.CR.devLimit) || + (gRfalNfcb.CR.curSlots == (uint8_t)RFAL_NFCB_SLOT_NUM_1)) { + gRfalNfcb.CR.state = RFAL_NFCB_CR_END; + return RFAL_ERR_BUSY; + } + } else { + /* MISRA 15.7 - Empty else */ + } + } else { + /* If deviceLimit is set to 0 the NFC Forum Device is configured to + * perform collision detection only Activity 1.0 and 1.1 9.3.5.5 - + * Symbol 4 */ + if ((gRfalNfcb.CR.devLimit == 0U) && + (gRfalNfcb.CR.curSlotNum == (uint8_t)RFAL_NFCB_SLOT_NUM_1)) { + return RFAL_ERR_RF_COLLISION; + } + + /* Activity 2.1 9.3.5.9 - Symbol 8 */ + (*gRfalNfcb.CR.colPending) = true; + } + } + + /* Activity 2.1 9.3.5.15 - Symbol 14 & 15*/ + if ((gRfalNfcb.CR.curSlotNum + 1U) < + rfalNfcbNI2NumberOfSlots(gRfalNfcb.CR.curSlots)) { + gRfalNfcb.CR.curSlotNum++; + gRfalNfcb.CR.state = RFAL_NFCB_CR_SLOTS_TX; + } else { + /* Activity 2.1 9.3.5.17 - Symbol 16 */ + if (!(*gRfalNfcb.CR.colPending)) { + break; + } + + /* Activity 1.1 9.3.5.18 - Symbol 17 */ + if (gRfalNfcb.CR.curDevCnt == 0U) { + /* Activity 2.1 9.3.5.19 - Symbol 18 */ + if ((gRfalNfcb.CR.curSlotNum + 1U) >= + rfalNfcbNI2NumberOfSlots(gRfalNfcb.CR.endSlots)) { + break; + } + + /* Activity 2.1 9.3.5.20 - Symbol 19 */ + gRfalNfcb.CR.curSlots++; + } + + gRfalNfcb.CR.state = RFAL_NFCB_CR_SLEEP; + } + + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + case RFAL_NFCB_CR_SLEEP: + + /* Activity 2.1 9.3.5.23 - Symbol 22 */ + if ((gRfalNfcb.CR.compMode == RFAL_COMPLIANCE_MODE_NFC) && + (gRfalNfcb.CR.curDevCnt != 0U)) { + rfalNfcbPollerSleepTx( + gRfalNfcb.CR.nfcbDevList[((*gRfalNfcb.CR.devCnt) - (uint8_t)1U)] + .sensbRes.nfcid0); + gRfalNfcb.CR.nfcbDevList[((*gRfalNfcb.CR.devCnt) - (uint8_t)1U)] + .isSleep = true; + + gRfalNfcb.CR.tmr = platformTimerCreate( + (uint16_t)rfalConv1fcToMs(RFAL_NFCB_ACTIVATION_FWT)); + } + + /* Activity 2.1 9.3.5.6 - Symbol 5 */ + gRfalNfcb.CR.curSlotNum = 0U; + gRfalNfcb.CR.curDevCnt = 0U; + (*gRfalNfcb.CR.colPending) = false; + + gRfalNfcb.CR.state = RFAL_NFCB_CR_SLOTS_TX; + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + case RFAL_NFCB_CR_END: + default: + /* MISRA 16.4: no empty default statement (a comment being enough) */ + break; + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +uint32_t rfalNfcbTR2ToFDT(uint8_t tr2Code) { + /*******************************************************************************/ + /* MISRA 8.9 An object should be defined at block scope if its identifier only + * appears in a single function */ + /*! TR2 Table according to Digital 1.1 Table 33 */ + const uint16_t rfalNfcbTr2Table[4] = {1792, 3328, 5376, 9472}; + /*******************************************************************************/ + + return ( + uint32_t)rfalNfcbTr2Table[(tr2Code & RFAL_NFCB_SENSB_RES_PROTO_TR2_MASK)]; +} + +#endif /* RFAL_FEATURE_NFCB */ diff --git a/core/embed/io/nfc/rfal/source/rfal_nfcf.c b/core/embed/io/nfc/rfal/source/rfal_nfcf.c new file mode 100644 index 0000000000..7789032832 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_nfcf.c @@ -0,0 +1,676 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_nfcf.c + * + * \author Gustavo Patricio + * + * \brief Implementation of NFC-F Poller (FeliCa PCD) device + * + * The definitions and helpers methods provided by this module are + * aligned with NFC-F (FeliCa - JIS X6319-4) + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_nfcf.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_NFCF + */ + +#if RFAL_FEATURE_NFCF + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ +#define RFAL_NFCF_SENSF_REQ_LEN_MIN \ + 5U /*!< SENSF_RES minimum length */ + +#define RFAL_NFCF_READ_WO_ENCRYPTION_MIN_LEN \ + 15U /*!< Minimum length for a Check Command T3T 5.4.1 */ +#define RFAL_NFCF_WRITE_WO_ENCRYPTION_MIN_LEN \ + 31U /*!< Minimum length for an Update Command T3T 5.5.1 */ + +#define RFAL_NFCF_CHECK_RES_MIN_LEN \ + 11U /*!< CHECK Response minimum length T3T 1.0 Table 8 */ +#define RFAL_NFCF_UPDATE_RES_MIN_LEN \ + 11U /*!< UPDATE Response minimum length T3T 1.0 Table 8 */ + +#define RFAL_NFCF_CHECK_REQ_MAX_LEN \ + 86U /*!< Max length of a Check request T3T 1.0 Table 7 */ +#define RFAL_NFCF_CHECK_REQ_MAX_SERV \ + 15U /*!< Max Services number on Check request T3T 1.0 5.4.1.5 */ +#define RFAL_NFCF_CHECK_REQ_MAX_BLOCK \ + 15U /*!< Max Blocks number on Check request T3T 1.0 5.4.1.10 */ +#define RFAL_NFCF_UPDATE_REQ_MAX_SERV \ + 15U /*!< Max Services number Update request T3T 1.0 5.4.1.5 */ +#define RFAL_NFCF_UPDATE_REQ_MAX_BLOCK \ + 13U /*!< Max Blocks number on Update request T3T 1.0 5.4.1.10 */ + +/*! MRT Check | Update = (Tt3t x ((A+1) + n (B+1)) x 4^E) + dRWTt3t T3T 5.8 + Max values used: A = 7 ; B = 7 ; E = 3 ; n = 15 (NFC Forum n = 15, JIS n = + 32) +*/ +#define RFAL_NFCF_MRT_CHECK_UPDATE ((4096U * (8U + (15U * 8U)) * 64U) + 16U) + +/* + ****************************************************************************** + * GLOBAL MACROS + ****************************************************************************** + */ +#define rfalNfcfSlots2CardNum(s) \ + ((uint8_t)(s) + 1U) /*!< Converts Time Slot Number (TSN) into num of slots \ + */ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! Structure/Buffer to hold the SENSF_RES with LEN byte prepended */ +typedef struct { + uint8_t LEN; /*!< NFC-F LEN byte */ + rfalNfcfSensfRes SENSF_RES; /*!< SENSF_RES */ +} rfalNfcfSensfResBuf; + +/*! Greedy collection for NFCF GRE_POLL_F Activity 1.0 Table 10 */ +typedef struct { + uint8_t pollFound; /*!< Number of devices found by the Poll */ + uint8_t pollCollision; /*!< Number of collisions detected */ + rfalFeliCaPollRes POLL_F[RFAL_NFCF_POLL_MAXCARDS]; /*!< GRE_POLL_F + Activity 1.0 Table 10 */ +} rfalNfcfGreedyF; + +/*! NFC-F SENSF_REQ format Digital 1.1 8.6.1 */ +typedef struct { + uint8_t CMD; /*!< Command code: 00h */ + uint8_t SC[RFAL_NFCF_SENSF_SC_LEN]; /*!< System Code */ + uint8_t RC; /*!< Request Code */ + uint8_t TSN; /*!< Time Slot Number */ +} rfalNfcfSensfReq; + +/*! Colission Resolution states */ +typedef enum { + RFAL_NFCF_CR_POLL, /*!< Poll Request */ + RFAL_NFCF_CR_PARSE, /*!< Parse Poll Response */ + RFAL_NFCF_CR_POLL_SC, /*!< Poll Request with RC=SC */ +} rfalNfcFColResState; + +/*! Colission Resolution context */ +typedef struct { + rfalNfcfGreedyF greedyF; + uint8_t devLimit; /*!< Device limit to be used */ + rfalComplianceMode compMode; /*!< Compliancy mode to be used */ + rfalNfcfListenDevice *nfcfDevList; /*!< Location of the device list */ + uint8_t *devCnt; /*!< Location of the device counter */ + bool collPending; /*!< Collision pending flag */ + bool nfcDepFound; + rfalNfcFColResState + state; /*!< Single Collision Resolution state (Single CR) */ +} rfalNfcfColResParams; + +/*! RFAL NFC-F instance */ +typedef struct { + rfalNfcfColResParams CR; /*!< Collision Resolution */ +} rfalNfcf; + +/* +****************************************************************************** +* LOCAL VARIABLES +****************************************************************************** +*/ +static rfalNfcf gNfcf; /*!< RFAL NFC-F instance */ + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +static void rfalNfcfComputeValidSENF(rfalNfcfListenDevice *outDevInfo, + uint8_t *curDevIdx, uint8_t devLimit, + bool overwrite, bool *nfcDepFound); + +/* +****************************************************************************** +* LOCAL VARIABLES +****************************************************************************** +*/ + +/*******************************************************************************/ +static void rfalNfcfComputeValidSENF(rfalNfcfListenDevice *outDevInfo, + uint8_t *curDevIdx, uint8_t devLimit, + bool overwrite, bool *nfcDepFound) { + uint8_t tmpIdx; + bool duplicate; + const rfalNfcfSensfResBuf *sensfBuf; + rfalNfcfSensfResBuf sensfCopy; + + /*******************************************************************************/ + /* Go through all responses check if valid and duplicates */ + /*******************************************************************************/ + while ((gNfcf.CR.greedyF.pollFound > 0U) && ((*curDevIdx) < devLimit)) { + duplicate = false; + gNfcf.CR.greedyF.pollFound--; + + /* MISRA 11.3 - Cannot point directly into different object type, use local + * copy */ + RFAL_MEMCPY((uint8_t *)&sensfCopy, + (uint8_t *)&gNfcf.CR.greedyF.POLL_F[gNfcf.CR.greedyF.pollFound], + sizeof(rfalNfcfSensfResBuf)); + + /* Point to received SENSF_RES */ + sensfBuf = &sensfCopy; + + /* Check for devices that are already in device list */ + for (tmpIdx = 0; tmpIdx < (*curDevIdx); tmpIdx++) { + if (RFAL_BYTECMP(sensfBuf->SENSF_RES.NFCID2, + outDevInfo[tmpIdx].sensfRes.NFCID2, + RFAL_NFCF_NFCID2_LEN) == 0) { + duplicate = true; + break; + } + } + + /* If is a duplicate skip this (and not to overwrite)*/ + if (duplicate && (!overwrite)) { + continue; + } + + /* Check if response length is OK */ + if (((sensfBuf->LEN - RFAL_NFCF_HEADER_LEN) < + RFAL_NFCF_SENSF_RES_LEN_MIN) || + ((sensfBuf->LEN - RFAL_NFCF_HEADER_LEN) > + RFAL_NFCF_SENSF_RES_LEN_MAX)) { + continue; + } + + /* Check if the response is a SENSF_RES / Polling response */ + if (sensfBuf->SENSF_RES.CMD != (uint8_t)RFAL_NFCF_CMD_POLLING_RES) { + continue; + } + + /* Check if is an overwrite request or new device*/ + if (duplicate && overwrite) { + /* overwrite deviceInfo/GRE_SENSF_RES with SENSF_RES */ + outDevInfo[tmpIdx].sensfResLen = (sensfBuf->LEN - RFAL_NFCF_LENGTH_LEN); + RFAL_MEMCPY(&outDevInfo[tmpIdx].sensfRes, &sensfBuf->SENSF_RES, + outDevInfo[tmpIdx].sensfResLen); + continue; + } else { + /* fill deviceInfo/GRE_SENSF_RES with new SENSF_RES */ + outDevInfo[(*curDevIdx)].sensfResLen = + (sensfBuf->LEN - RFAL_NFCF_LENGTH_LEN); + RFAL_MEMCPY(&outDevInfo[(*curDevIdx)].sensfRes, &sensfBuf->SENSF_RES, + outDevInfo[(*curDevIdx)].sensfResLen); + } + + /* Check if this device supports NFC-DEP and signal it + * (ACTIVITY 1.1 9.3.6.63) */ + *nfcDepFound = rfalNfcfIsNfcDepSupported(&outDevInfo[(*curDevIdx)]); + + (*curDevIdx)++; + } +} + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ + +/*******************************************************************************/ +ReturnCode rfalNfcfPollerInitialize(rfalBitRate bitRate) { + ReturnCode ret; + + if ((bitRate != RFAL_BR_212) && (bitRate != RFAL_BR_424)) { + return RFAL_ERR_PARAM; + } + + RFAL_EXIT_ON_ERR(ret, rfalSetMode(RFAL_MODE_POLL_NFCF, bitRate, bitRate)); + rfalSetErrorHandling(RFAL_ERRORHANDLING_NONE); + + rfalSetGT(RFAL_GT_NFCF); + rfalSetFDTListen(RFAL_FDT_LISTEN_NFCF_POLLER); + rfalSetFDTPoll(RFAL_FDT_POLL_NFCF_POLLER); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcfPollerPoll(rfalFeliCaPollSlots slots, uint16_t sysCode, + uint8_t reqCode, rfalFeliCaPollRes *cardList, + uint8_t *devCnt, uint8_t *collisions) { + return rfalFeliCaPoll(slots, sysCode, reqCode, cardList, + rfalNfcfSlots2CardNum(slots), devCnt, collisions); +} + +/*******************************************************************************/ +ReturnCode rfalNfcfPollerCheckPresence(void) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalNfcfPollerStartCheckPresence()); + rfalRunBlocking(ret, rfalNfcfPollerGetCheckPresenceStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcfPollerStartCheckPresence(void) { + gNfcf.CR.greedyF.pollFound = 0; + gNfcf.CR.greedyF.pollCollision = 0; + + /* ACTIVITY 1.0 & 1.1 - 9.2.3.17 SENSF_REQ must be with number of slots equal + * to 4 SC must be 0xFFFF RC must be 0x00 (No system code info required) */ + return rfalStartFeliCaPoll( + RFAL_FELICA_4_SLOTS, RFAL_NFCF_SYSTEMCODE, RFAL_FELICA_POLL_RC_NO_REQUEST, + gNfcf.CR.greedyF.POLL_F, rfalNfcfSlots2CardNum(RFAL_FELICA_4_SLOTS), + &gNfcf.CR.greedyF.pollFound, &gNfcf.CR.greedyF.pollCollision); +} + +/*******************************************************************************/ +ReturnCode rfalNfcfPollerGetCheckPresenceStatus(void) { + return rfalGetFeliCaPollStatus(); +} + +/*******************************************************************************/ +ReturnCode rfalNfcfPollerCollisionResolution(rfalComplianceMode compMode, + uint8_t devLimit, + rfalNfcfListenDevice *nfcfDevList, + uint8_t *devCnt) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalNfcfPollerStartCollisionResolution( + compMode, devLimit, nfcfDevList, devCnt)); + rfalRunBlocking(ret, rfalNfcfPollerGetCollisionResolutionStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcfPollerStartCollisionResolution( + rfalComplianceMode compMode, uint8_t devLimit, + rfalNfcfListenDevice *nfcfDevList, uint8_t *devCnt) { + if ((nfcfDevList == NULL) || (devCnt == NULL)) { + return RFAL_ERR_PARAM; + } + + *devCnt = 0; + + /*******************************************************************************************/ + /* ACTIVITY 1.0 - 9.3.6.3 Copy valid SENSF_RES in GRE_POLL_F into + * GRE_SENSF_RES */ + /* ACTIVITY 1.0 - 9.3.6.6 The NFC Forum Device MUST remove all entries from + * GRE_SENSF_RES[]*/ + /* ACTIVITY 2.1 - 9.3.6.2 Populate GRE_SENSF_RES with data from GRE_POLL_F */ + /* */ + /* CON_DEVICES_LIMIT = 0 Just check if devices from Tech Detection exceeds -> + * always true */ + /* Allow the number of slots open on Technology Detection */ + /*******************************************************************************************/ + rfalNfcfComputeValidSENF( + nfcfDevList, devCnt, + ((devLimit == 0U) ? rfalNfcfSlots2CardNum(RFAL_FELICA_4_SLOTS) + : devLimit), + false, &gNfcf.CR.nfcDepFound); + + /* Store context */ + gNfcf.CR.nfcfDevList = nfcfDevList; + gNfcf.CR.compMode = compMode; + gNfcf.CR.devLimit = devLimit; + gNfcf.CR.devCnt = devCnt; + gNfcf.CR.state = RFAL_NFCF_CR_POLL; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcfPollerGetCollisionResolutionStatus(void) { + ReturnCode ret; + + switch (gNfcf.CR.state) { + /*******************************************************************************/ + case RFAL_NFCF_CR_POLL: + case RFAL_NFCF_CR_POLL_SC: + + if (gNfcf.CR.state == RFAL_NFCF_CR_POLL) { + /*******************************************************************************/ + /* Activity 2.1 9.3.6.3 - Symbol 2 Check if devices found are lower + * than the limit */ + if (*gNfcf.CR.devCnt >= gNfcf.CR.devLimit) { + break; + } + + /*******************************************************************************/ + /* Activity 1.0 - 9.3.6.5 Copy valid SENSF_RES and then to remove it */ + /* Activity 1.1 - 9.3.6.65 Copy and filter duplicates */ + /* For now, due to some devices keep generating different nfcid2, we + * use 1.0 */ + /* Phones detected: Samsung Galaxy Nexus,Samsung Galaxy S3,Samsung Nexus + * S */ + /*******************************************************************************/ + *gNfcf.CR.devCnt = 0; + } + + RFAL_EXIT_ON_ERR( + ret, + rfalStartFeliCaPoll( + RFAL_FELICA_16_SLOTS, RFAL_NFCF_SYSTEMCODE, + (uint8_t)((gNfcf.CR.state == RFAL_NFCF_CR_POLL_SC) + ? RFAL_FELICA_POLL_RC_SYSTEM_CODE + : RFAL_FELICA_POLL_RC_NO_REQUEST), + gNfcf.CR.greedyF.POLL_F, + rfalNfcfSlots2CardNum((uint8_t)RFAL_FELICA_16_SLOTS), + &gNfcf.CR.greedyF.pollFound, &gNfcf.CR.greedyF.pollCollision)); + + gNfcf.CR.state = RFAL_NFCF_CR_PARSE; + return RFAL_ERR_BUSY; + + /*******************************************************************************/ + case RFAL_NFCF_CR_PARSE: + + RFAL_EXIT_ON_BUSY(ret, rfalGetFeliCaPollStatus()); + + if (ret == RFAL_ERR_NONE) { + /* Activity 2.1 9.3.6.5 - Symbol 4 Update device list */ + rfalNfcfComputeValidSENF(gNfcf.CR.nfcfDevList, gNfcf.CR.devCnt, + gNfcf.CR.devLimit, false, + &gNfcf.CR.nfcDepFound); + } + + /*******************************************************************************/ + /* Activity 2.1 9.3.6.6 - Symbol 5 Check if any device supports NFC DEP + */ + if ((gNfcf.CR.nfcDepFound) && + (gNfcf.CR.compMode == RFAL_COMPLIANCE_MODE_NFC)) { + /* Send another poll request with RC = System Code */ + gNfcf.CR.state = RFAL_NFCF_CR_POLL_SC; + + /* Set compliance mode to invalid (non NFC) to poll for NFC-DEP devices + * only once */ + gNfcf.CR.compMode = RFAL_COMPLIANCE_MODE_EMV; + return RFAL_ERR_BUSY; + } + + break; + + /*******************************************************************************/ + default: + /* MISRA 16.4: no empty default statement (a comment being enough) */ + break; + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcfPollerCheck(const uint8_t *nfcid2, + const rfalNfcfServBlockListParam *servBlock, + uint8_t *rxBuf, uint16_t rxBufLen, + uint16_t *rcvdLen) { + uint8_t txBuf[RFAL_NFCF_CHECK_REQ_MAX_LEN]; + uint8_t msgIt; + uint8_t i; + ReturnCode ret; + const uint8_t *checkRes; + + /* Check parameters */ + if ((nfcid2 == NULL) || (rxBuf == NULL) || (servBlock == NULL) || + (servBlock->numBlock == 0U) || + (servBlock->numBlock > RFAL_NFCF_CHECK_REQ_MAX_BLOCK) || + (servBlock->numServ == 0U) || + (servBlock->numServ > RFAL_NFCF_CHECK_REQ_MAX_SERV) || + (rxBufLen < (RFAL_NFCF_LENGTH_LEN + RFAL_NFCF_CHECK_RES_MIN_LEN))) { + return RFAL_ERR_PARAM; + } + + msgIt = 0; + + /*******************************************************************************/ + /* Compose CHECK command/request */ + + txBuf[msgIt++] = RFAL_NFCF_CMD_READ_WITHOUT_ENCRYPTION; /* Command Code */ + + RFAL_MEMCPY(&txBuf[msgIt], nfcid2, RFAL_NFCF_NFCID2_LEN); /* NFCID2 */ + msgIt += RFAL_NFCF_NFCID2_LEN; + + txBuf[msgIt++] = servBlock->numServ; /* NoS */ + for (i = 0; i < servBlock->numServ; i++) { + txBuf[msgIt++] = + (uint8_t)((servBlock->servList[i] >> 0U) & 0xFFU); /* Service Code */ + txBuf[msgIt++] = (uint8_t)((servBlock->servList[i] >> 8U) & 0xFFU); + } + + txBuf[msgIt++] = servBlock->numBlock; /* NoB */ + for (i = 0; i < servBlock->numBlock; i++) { + txBuf[msgIt++] = + servBlock->blockList[i] + .conf; /* Block list element conf (Flag|Access|Service) */ + if ((servBlock->blockList[i].conf & RFAL_NFCF_BLOCKLISTELEM_LEN_BIT) != + 0U) /* Check if 2 or 3 byte block list element */ + { + txBuf[msgIt++] = (uint8_t)(servBlock->blockList[i].blockNum & + 0xFFU); /* 1byte Block Num */ + } else { + txBuf[msgIt++] = (uint8_t)((servBlock->blockList[i].blockNum >> 0U) & + 0xFFU); /* 2byte Block Num */ + txBuf[msgIt++] = + (uint8_t)((servBlock->blockList[i].blockNum >> 8U) & 0xFFU); + } + } + + /*******************************************************************************/ + /* Transceive CHECK command/request */ + ret = rfalTransceiveBlockingTxRx(txBuf, msgIt, rxBuf, rxBufLen, rcvdLen, + RFAL_TXRX_FLAGS_DEFAULT, + RFAL_NFCF_MRT_CHECK_UPDATE); + + if (ret == RFAL_ERR_NONE) { + /* Skip LEN byte */ + checkRes = (rxBuf + RFAL_NFCF_LENGTH_LEN); + + /* Check NFCID and response length T3T v1.0 5.4.2.3 */ + if ((RFAL_BYTECMP(nfcid2, &checkRes[RFAL_NFCF_CMD_LEN], + RFAL_NFCF_NFCID2_LEN) != 0) || + (*rcvdLen < + (RFAL_NFCF_LENGTH_LEN + RFAL_NFCF_CHECKUPDATE_RES_ST2_POS))) { + ret = RFAL_ERR_PROTO; + } + /* Check for a valid response */ + else if ((checkRes[RFAL_NFCF_CMD_POS] != + (uint8_t)RFAL_NFCF_CMD_READ_WITHOUT_ENCRYPTION_RES) || + (checkRes[RFAL_NFCF_CHECKUPDATE_RES_ST1_POS] != + RFAL_NFCF_STATUS_FLAG_SUCCESS) || + (checkRes[RFAL_NFCF_CHECKUPDATE_RES_ST2_POS] != + RFAL_NFCF_STATUS_FLAG_SUCCESS)) { + ret = RFAL_ERR_REQUEST; + } + /* CHECK succesfull, remove header */ + else { + (*rcvdLen) -= (RFAL_NFCF_LENGTH_LEN + RFAL_NFCF_CHECKUPDATE_RES_NOB_POS); + + if (*rcvdLen > 0U) { + RFAL_MEMMOVE(rxBuf, &checkRes[RFAL_NFCF_CHECKUPDATE_RES_NOB_POS], + (*rcvdLen)); + } + } + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcfPollerUpdate(const uint8_t *nfcid2, + const rfalNfcfServBlockListParam *servBlock, + uint8_t *txBuf, uint16_t txBufLen, + const uint8_t *blockData, uint8_t *rxBuf, + uint16_t rxBufLen) { + uint8_t i; + uint16_t msgIt; + uint16_t rcvdLen; + uint16_t auxLen; + const uint8_t *updateRes; + ReturnCode ret; + + /* Check parameters */ + if ((nfcid2 == NULL) || (rxBuf == NULL) || (servBlock == NULL) || + (txBuf == NULL) || (servBlock->numBlock == 0U) || + (servBlock->numBlock > RFAL_NFCF_UPDATE_REQ_MAX_BLOCK) || + (servBlock->numServ == 0U) || + (servBlock->numServ > RFAL_NFCF_UPDATE_REQ_MAX_SERV) || + (rxBufLen < (RFAL_NFCF_LENGTH_LEN + RFAL_NFCF_UPDATE_RES_MIN_LEN))) { + return RFAL_ERR_PARAM; + } + + /* Calculate required txBuffer lenth T3T 1.0 Table 9 */ + auxLen = + (uint16_t)(RFAL_NFCF_CMD_LEN + RFAL_NFCF_NFCID2_LEN + RFAL_NFCF_NOS_LEN + + (servBlock->numServ * sizeof(rfalNfcfServ)) + + RFAL_NFCF_NOB_LEN + + (uint16_t)((uint16_t)servBlock->numBlock * + RFAL_NFCF_BLOCKLISTELEM_MAX_LEN) + + (uint16_t)((uint16_t)servBlock->numBlock * + RFAL_NFCF_BLOCK_LEN)); + + /* Check whether the provided buffer is sufficient for this request */ + if (txBufLen < auxLen) { + return RFAL_ERR_PARAM; + } + + msgIt = 0; + + /*******************************************************************************/ + /* Compose UPDATE command/request */ + + txBuf[msgIt++] = RFAL_NFCF_CMD_WRITE_WITHOUT_ENCRYPTION; /* Command Code */ + + RFAL_MEMCPY(&txBuf[msgIt], nfcid2, RFAL_NFCF_NFCID2_LEN); /* NFCID2 */ + msgIt += RFAL_NFCF_NFCID2_LEN; + + txBuf[msgIt++] = servBlock->numServ; /* NoS */ + for (i = 0; i < servBlock->numServ; i++) { + txBuf[msgIt++] = + (uint8_t)((servBlock->servList[i] >> 0U) & 0xFFU); /* Service Code */ + txBuf[msgIt++] = (uint8_t)((servBlock->servList[i] >> 8U) & 0xFFU); + } + + txBuf[msgIt++] = servBlock->numBlock; /* NoB */ + for (i = 0; i < servBlock->numBlock; i++) { + txBuf[msgIt++] = + servBlock->blockList[i] + .conf; /* Block list element conf (Flag|Access|Service) */ + if ((servBlock->blockList[i].conf & RFAL_NFCF_BLOCKLISTELEM_LEN_BIT) != + 0U) /* Check if 2 or 3 byte block list element */ + { + txBuf[msgIt++] = (uint8_t)(servBlock->blockList[i].blockNum & + 0xFFU); /* 1byte Block Num */ + } else { + txBuf[msgIt++] = (uint8_t)((servBlock->blockList[i].blockNum >> 0U) & + 0xFFU); /* 2byte Block Num */ + txBuf[msgIt++] = + (uint8_t)((servBlock->blockList[i].blockNum >> 8U) & 0xFFU); + } + } + + auxLen = ((uint16_t)servBlock->numBlock * RFAL_NFCF_BLOCK_LEN); + RFAL_MEMCPY(&txBuf[msgIt], blockData, auxLen); /* Block Data */ + msgIt += auxLen; + + /*******************************************************************************/ + /* Transceive UPDATE command/request */ + ret = rfalTransceiveBlockingTxRx(txBuf, msgIt, rxBuf, rxBufLen, &rcvdLen, + RFAL_TXRX_FLAGS_DEFAULT, + RFAL_NFCF_MRT_CHECK_UPDATE); + + if (ret == RFAL_ERR_NONE) { + /* Skip LEN byte */ + updateRes = (rxBuf + RFAL_NFCF_LENGTH_LEN); + + /* Check NFCID and response length T3T v1.0 5.5.2.3 */ + if ((RFAL_BYTECMP(nfcid2, &updateRes[RFAL_NFCF_CMD_LEN], + RFAL_NFCF_NFCID2_LEN) != 0) || + (rcvdLen < + (RFAL_NFCF_LENGTH_LEN + RFAL_NFCF_CHECKUPDATE_RES_ST2_POS))) { + ret = RFAL_ERR_PROTO; + } + /* Check for a valid response */ + else if ((updateRes[RFAL_NFCF_CMD_POS] != + (uint8_t)RFAL_NFCF_CMD_WRITE_WITHOUT_ENCRYPTION_RES) || + (updateRes[RFAL_NFCF_CHECKUPDATE_RES_ST1_POS] != + RFAL_NFCF_STATUS_FLAG_SUCCESS) || + (updateRes[RFAL_NFCF_CHECKUPDATE_RES_ST2_POS] != + RFAL_NFCF_STATUS_FLAG_SUCCESS)) { + ret = RFAL_ERR_REQUEST; + } else { + /* MISRA 15.7 - Empty else */ + } + } + + return ret; +} + +/*******************************************************************************/ +bool rfalNfcfListenerIsT3TReq(const uint8_t *buf, uint16_t bufLen, + uint8_t *nfcid2) { + /* Check cmd byte */ + switch (*buf) { + case RFAL_NFCF_CMD_READ_WITHOUT_ENCRYPTION: + if (bufLen < RFAL_NFCF_READ_WO_ENCRYPTION_MIN_LEN) { + return false; + } + break; + + case RFAL_NFCF_CMD_WRITE_WITHOUT_ENCRYPTION: + if (bufLen < RFAL_NFCF_WRITE_WO_ENCRYPTION_MIN_LEN) { + return false; + } + break; + + default: + return false; + } + + /* Output NFID2 if requested */ + if (nfcid2 != NULL) { + RFAL_MEMCPY(nfcid2, &buf[RFAL_NFCF_CMD_LEN], RFAL_NFCF_NFCID2_LEN); + } + + return true; +} + +#endif /* RFAL_FEATURE_NFCF */ diff --git a/core/embed/io/nfc/rfal/source/rfal_nfcv.c b/core/embed/io/nfc/rfal/source/rfal_nfcv.c new file mode 100644 index 0000000000..9cbc42a373 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_nfcv.c @@ -0,0 +1,974 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_nfcv.c + * + * \author Gustavo Patricio + * + * \brief Implementation of NFC-V Poller (ISO15693) device + * + * The definitions and helpers methods provided by this module are + * aligned with NFC-V (ISO15693) + * + * The definitions and helpers methods provided by this module + * are aligned with NFC-V Digital 2.1 + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_nfcv.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_NFCV + */ + +#if RFAL_FEATURE_NFCV + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_NFCV_INV_REQ_FLAG \ + 0x06U /*!< INVENTORY_REQ INV_FLAG Digital 2.1 9.6.1 */ +#define RFAL_NFCV_MASKVAL_MAX_LEN \ + 8U /*!< Mask value max length: 64 bits (UID length) */ +#define RFAL_NFCV_MASKVAL_MAX_1SLOT_LEN \ + 64U /*!< Mask value max length in 1 Slot mode in bits Digital 2.1 9.6.1.6 \ + */ +#define RFAL_NFCV_MASKVAL_MAX_16SLOT_LEN \ + 60U /*!< Mask value max length in 16 Slot mode in bits Digital 2.1 9.6.1.6 \ + */ +#define RFAL_NFCV_MAX_SLOTS 16U /*!< NFC-V max number of Slots */ +#define RFAL_NFCV_INV_REQ_HEADER_LEN \ + 3U /*!< INVENTORY_REQ header length (INV_FLAG, CMD, MASK_LEN) */ +#define RFAL_NFCV_INV_RES_LEN 10U /*!< INVENTORY_RES length */ +#define RFAL_NFCV_WR_MUL_REQ_HEADER_LEN \ + 4U /*!< Write Multiple header length (INV_FLAG, CMD, [UID], BNo, Bno) */ + +#define RFAL_NFCV_CMD_LEN \ + 1U /*!< Commandbyte length */ +#define RFAL_NFCV_FLAG_POS \ + 0U /*!< Flag byte position */ +#define RFAL_NFCV_FLAG_LEN \ + 1U /*!< Flag byte length */ +#define RFAL_NFCV_PARAM_LEN \ + 1U /*!< CMD specific parameter length (e.g. Extended Get System Info) */ +#define RFAL_NFCV_DATASTART_POS \ + 1U /*!< Position of start of data */ +#define RFAL_NFCV_DSFI_LEN \ + 1U /*!< DSFID length */ +#define RFAL_NFCV_SLPREQ_REQ_FLAG \ + 0x22U /*!< SLPV_REQ request flags Digital 2.0 (Candidate) 9.7.1.1 */ +#define RFAL_NFCV_RES_FLAG_NOERROR \ + 0x00U /*!< RES_FLAG indicating no error (checked during activation) */ + +#define RFAL_NFCV_MAX_COLL_SUPPORTED \ + 16U /*!< Maximum number of collisions supported by the Anticollision loop */ + +#define RFAL_NFCV_FDT_MAX1 \ + 4394U /*!< Read alike command FWT FDTV,LISTEN,MAX1 Digital 2.0 B.5 */ + +/*! Maximum Wait time FDTV,EOF and MAX2 FDTV,LISTEN,MAX2 + Tolerance = 270644 + * + 512 = 271156 (~20ms) Digital 2.3 B.5*/ +#define RFAL_NFCV_FDT_MAX 271156U + +/*! Time from special frame to EOF + * ISO15693 2009 10.4.2 : <20ms + * NFC Forum defines Digital 2.3 9.7.4 : FDTV,EOF = [10 ; + * 20]ms + */ +#define RFAL_NFCV_FDT_EOF rfalConvMsTo1fc(16) + +/*! Time between slots - ISO 15693 defines t3min depending on modulation depth + * and data rate. With only high-bitrate supported, AM modulation and a length + * of 12 bytes (96bits) for INV_RES we get: + * - ISO t3min = 96/26 ms + 300us = 4 ms + * - NFC Forum defines FDTV,INVENT_NORES = (4394 + 2048)/fc. + * Digital 2.0 B.5*/ +#define RFAL_NFCV_FDT_V_INVENT_NORES 4U + +/* + ****************************************************************************** + * GLOBAL MACROS + ****************************************************************************** + */ + +/*! Checks if a valid INVENTORY_RES is valid Digital 2.2 9.6.2.1 & 9.6.2.3 + */ +#define rfalNfcvCheckInvRes(f, l) \ + (((l) == rfalConvBytesToBits(RFAL_NFCV_INV_RES_LEN + RFAL_NFCV_CRC_LEN)) && \ + ((f) == RFAL_NFCV_RES_FLAG_NOERROR)) + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! NFC-V INVENTORY_REQ format Digital 2.0 9.6.1 */ +typedef struct { + uint8_t INV_FLAG; /*!< Inventory Flags */ + uint8_t CMD; /*!< Command code: 01h */ + uint8_t MASK_LEN; /*!< Mask Value Length */ + uint8_t MASK_VALUE[RFAL_NFCV_MASKVAL_MAX_LEN]; /*!< Mask Value */ +} rfalNfcvInventoryReq; + +/*! NFC-V SLP_REQ format Digital 2.0 (Candidate) 9.7.1 */ +typedef struct { + uint8_t REQ_FLAG; /*!< Request Flags */ + uint8_t CMD; /*!< Command code: 02h */ + uint8_t UID[RFAL_NFCV_UID_LEN]; /*!< Mask Value */ +} rfalNfcvSlpvReq; + +/*! Container for a collision found during Anticollision loop */ +typedef struct { + uint8_t maskLen; + uint8_t maskVal[RFAL_NFCV_MASKVAL_MAX_LEN]; +} rfalNfcvCollision; + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +static ReturnCode rfalNfcvParseError(uint8_t err); + +/* +****************************************************************************** +* LOCAL VARIABLES +****************************************************************************** +*/ + +/* +****************************************************************************** +* LOCAL FUNCTIONS +****************************************************************************** +*/ + +/*******************************************************************************/ +static ReturnCode rfalNfcvParseError(uint8_t err) { + switch (err) { + case RFAL_NFCV_ERROR_CMD_NOT_SUPPORTED: + case RFAL_NFCV_ERROR_OPTION_NOT_SUPPORTED: + return RFAL_ERR_NOTSUPP; + + case RFAL_NFCV_ERROR_CMD_NOT_RECOGNIZED: + return RFAL_ERR_PROTO; + + case RFAL_NFCV_ERROR_WRITE_FAILED: + return RFAL_ERR_WRITE; + + default: + return RFAL_ERR_REQUEST; + } +} + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerInitialize(void) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR( + ret, rfalSetMode(RFAL_MODE_POLL_NFCV, RFAL_BR_26p48, RFAL_BR_26p48)); + rfalSetErrorHandling(RFAL_ERRORHANDLING_NONE); + + rfalSetGT(RFAL_GT_NFCV); + rfalSetFDTListen(RFAL_FDT_LISTEN_NFCV_POLLER); + rfalSetFDTPoll(RFAL_FDT_POLL_NFCV_POLLER); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerCheckPresence(rfalNfcvInventoryRes* invRes) { + ReturnCode ret; + + /* INVENTORY_REQ with 1 slot and no Mask Activity 2.0 (Candidate) 9.2.3.32 + */ + ret = rfalNfcvPollerInventory(RFAL_NFCV_NUM_SLOTS_1, 0, NULL, invRes, NULL); + + if ((ret == RFAL_ERR_RF_COLLISION) || (ret == RFAL_ERR_CRC) || + (ret == RFAL_ERR_FRAMING) || (ret == RFAL_ERR_PROTO)) { + ret = RFAL_ERR_NONE; + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerInventory(rfalNfcvNumSlots nSlots, uint8_t maskLen, + const uint8_t* maskVal, + rfalNfcvInventoryRes* invRes, + uint16_t* rcvdLen) { + ReturnCode ret; + rfalNfcvInventoryReq invReq; + uint16_t rxLen; + + if (((maskVal == NULL) && (maskLen != 0U)) || (invRes == NULL)) { + return RFAL_ERR_PARAM; + } + + invReq.INV_FLAG = (RFAL_NFCV_INV_REQ_FLAG | (uint8_t)nSlots); + invReq.CMD = RFAL_NFCV_CMD_INVENTORY; + invReq.MASK_LEN = (uint8_t)RFAL_MIN( + maskLen, + ((nSlots == RFAL_NFCV_NUM_SLOTS_1) + ? RFAL_NFCV_MASKVAL_MAX_1SLOT_LEN + : RFAL_NFCV_MASKVAL_MAX_16SLOT_LEN)); /* Digital 2.0 9.6.1.6 */ + + if ((rfalConvBitsToBytes(invReq.MASK_LEN) > 0U) && + (maskVal != NULL)) /* MISRA 21.18 & 1.3 */ + { + RFAL_MEMCPY(invReq.MASK_VALUE, maskVal, + rfalConvBitsToBytes(invReq.MASK_LEN)); + } + + ret = rfalISO15693TransceiveAnticollisionFrame( + (uint8_t*)&invReq, + (uint8_t)(RFAL_NFCV_INV_REQ_HEADER_LEN + + rfalConvBitsToBytes(invReq.MASK_LEN)), + (uint8_t*)invRes, sizeof(rfalNfcvInventoryRes), &rxLen); + + /* Check for optional output parameter */ + if (rcvdLen != NULL) { + *rcvdLen = rxLen; + } + + if (ret == RFAL_ERR_NONE) { + /* Check for valid INVENTORY_RES Digital 2.2 9.6.2.1 & 9.6.2.3 */ + if (!rfalNfcvCheckInvRes(invRes->RES_FLAG, rxLen)) { + return RFAL_ERR_PROTO; + } + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerCollisionResolution(rfalComplianceMode compMode, + uint8_t devLimit, + rfalNfcvListenDevice* nfcvDevList, + uint8_t* devCnt) { + ReturnCode ret; + uint8_t slotNum; + uint16_t rcvdLen; + uint8_t colIt; + uint8_t colCnt; + uint8_t colPos; + bool colPending; + rfalNfcvCollision colFound[RFAL_NFCV_MAX_COLL_SUPPORTED]; + + if ((nfcvDevList == NULL) || (devCnt == NULL)) { + return RFAL_ERR_PARAM; + } + + /* Initialize parameters */ + *devCnt = 0; + colIt = 0; + colCnt = 0; + colPending = false; + RFAL_MEMSET(colFound, 0x00, + (sizeof(rfalNfcvCollision) * RFAL_NFCV_MAX_COLL_SUPPORTED)); + + if (devLimit > 0U) /* MISRA 21.18 */ + { + RFAL_MEMSET(nfcvDevList, 0x00, (sizeof(rfalNfcvListenDevice) * devLimit)); + } + + RFAL_NO_WARNING( + colPending); /* colPending is not exposed externally, in future it might + become exposed/ouput parameter */ + + if (compMode == RFAL_COMPLIANCE_MODE_NFC) { + /* Send INVENTORY_REQ with one slot Activity 2.1 9.3.7.1 (Symbol 0) */ + ret = rfalNfcvPollerInventory(RFAL_NFCV_NUM_SLOTS_1, 0, NULL, + &nfcvDevList->InvRes, NULL); + + /* Exit if no device found Activity 2.1 9.3.7.2 (Symbol 1) */ + /* Exit if no correct frame (no Transmission Error) Activity 2.1 9.3.7.3 + * (Symbol 2) */ + if ((ret == RFAL_ERR_TIMEOUT) || ((ret == RFAL_ERR_PROTO))) { + return RFAL_ERR_NONE; + } + + /* Valid Response found without transmission error/collision + * Activity 2.1 9.3.7.6 (Symbol 5) */ + if (ret == RFAL_ERR_NONE) { + (*devCnt)++; + return RFAL_ERR_NONE; + } + + /* A Collision has been identified Activity 2.1 9.3.7.4 (Symbol 3) */ + colPending = true; + colCnt = 1; + + /* Check if the Collision Resolution is set to perform only Collision + * detection Activity 2.1 9.3.7.5 (Symbol 4)*/ + if (devLimit == 0U) { + return RFAL_ERR_RF_COLLISION; + } + + platformDelay(RFAL_NFCV_FDT_V_INVENT_NORES); + + /*******************************************************************************/ + /* Collisions pending, Anticollision loop must be executed */ + /*******************************************************************************/ + } else { + /* Advance to 16 slots below without mask. Will give a good chance to + * identify multiple cards */ + colPending = true; + colCnt = 1; + } + + /* Execute until all collisions are resolved Activity 2.1 9.3.7.18 (Symbol + * 17) */ + do { + /* Activity 2.1 9.3.7.7 (Symbol 6 / 7) */ + colPending = false; + slotNum = 0; + + do { + if (slotNum == 0U) { + /* Send INVENTORY_REQ with 16 slots Activity 2.1 9.3.7.9 (Symbol 8) + */ + ret = rfalNfcvPollerInventory( + RFAL_NFCV_NUM_SLOTS_16, colFound[colIt].maskLen, + colFound[colIt].maskVal, &nfcvDevList[(*devCnt)].InvRes, &rcvdLen); + } else { + ret = rfalISO15693TransceiveEOFAnticollision( + (uint8_t*)&nfcvDevList[(*devCnt)].InvRes, + sizeof(rfalNfcvInventoryRes), &rcvdLen); + } + slotNum++; + + /*******************************************************************************/ + if (ret != RFAL_ERR_TIMEOUT) { + if (rcvdLen < + rfalConvBytesToBits( + RFAL_NFCV_INV_RES_LEN + + RFAL_NFCV_CRC_LEN)) { /* If only a partial frame was received + make sure the FDT_V_INVENT_NORES is + fulfilled */ + platformDelay(RFAL_NFCV_FDT_V_INVENT_NORES); + } + + /* Check if response is a correct frame (no TxRx error) + * Activity 2.1 9.3.7.11 (Symbol 10)*/ + if ((ret == RFAL_ERR_NONE) || (ret == RFAL_ERR_PROTO)) { + /* Check if the device found is already on the list and its response + * is a valid INVENTORY_RES */ + if (rfalNfcvCheckInvRes(nfcvDevList[(*devCnt)].InvRes.RES_FLAG, + rcvdLen)) { + /* Activity 2.1 9.3.7.12 (Symbol 11) */ + (*devCnt)++; + } + } else /* Treat everything else as collision */ + { + /* Activity 2.1 9.3.7.17 (Symbol 16) */ + colPending = true; + + /*******************************************************************************/ + /* Ensure that this collision still fits on the container */ + if (colCnt < RFAL_NFCV_MAX_COLL_SUPPORTED) { + /* Store this collision on the container to be resolved later */ + /* Activity 2.1 9.3.7.17 (Symbol 16): add the collision + * information (MASK_VAL + SN) to the list containing the collision + * information */ + RFAL_MEMCPY(colFound[colCnt].maskVal, colFound[colIt].maskVal, + RFAL_NFCV_UID_LEN); + colPos = colFound[colIt].maskLen; + colFound[colCnt].maskVal[(colPos / RFAL_BITS_IN_BYTE)] &= + (uint8_t)((1U << (colPos % RFAL_BITS_IN_BYTE)) - 1U); + colFound[colCnt].maskVal[(colPos / RFAL_BITS_IN_BYTE)] |= + (uint8_t)((slotNum - 1U) << (colPos % RFAL_BITS_IN_BYTE)); + colFound[colCnt].maskVal[((colPos / RFAL_BITS_IN_BYTE) + 1U)] = + (uint8_t)((slotNum - 1U) >> + (RFAL_BITS_IN_BYTE - (colPos % RFAL_BITS_IN_BYTE))); + + colFound[colCnt].maskLen = (colFound[colIt].maskLen + 4U); + + colCnt++; + } + } + } else { + /* Timeout */ + platformDelay(RFAL_NFCV_FDT_V_INVENT_NORES); + } + + /* Check if devices found have reached device limit Activity 2.1 9.3.7.13 + * (Symbol 12) */ + if (*devCnt >= devLimit) { + return RFAL_ERR_NONE; + } + + } while (slotNum < RFAL_NFCV_MAX_SLOTS); /* Slot loop */ + colIt++; + } while (colIt < colCnt); /* Collisions found loop */ + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerSleepCollisionResolution( + uint8_t devLimit, rfalNfcvListenDevice* nfcvDevList, uint8_t* devCnt) { + uint8_t tmpDevCnt; + ReturnCode ret; + uint8_t i; + + if ((nfcvDevList == NULL) || (devCnt == NULL)) { + return RFAL_ERR_PARAM; + } + + *devCnt = 0; + + do { + tmpDevCnt = 0; + ret = rfalNfcvPollerCollisionResolution(RFAL_COMPLIANCE_MODE_ISO, + (devLimit - *devCnt), + &nfcvDevList[*devCnt], &tmpDevCnt); + + for (i = *devCnt; i < (*devCnt + tmpDevCnt); i++) { + rfalNfcvPollerSleep(0x00, nfcvDevList[i].InvRes.UID); + nfcvDevList[i].isSleep = true; + } + *devCnt += tmpDevCnt; + } while ((ret == RFAL_ERR_NONE) && (tmpDevCnt > 0U) && (*devCnt < devLimit)); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerSleep(uint8_t flags, const uint8_t* uid) { + ReturnCode ret; + rfalNfcvSlpvReq slpReq; + uint8_t rxBuf; /* dummy buffer, just to perform Rx */ + + if (uid == NULL) { + return RFAL_ERR_PARAM; + } + + /* Compute SLPV_REQ */ + slpReq.REQ_FLAG = + (flags | + (uint8_t) + RFAL_NFCV_REQ_FLAG_ADDRESS); /* Should be with UID according + Digital 2.0 (Candidate) 9.7.1.1 */ + slpReq.CMD = RFAL_NFCV_CMD_SLPV; + RFAL_MEMCPY(slpReq.UID, uid, RFAL_NFCV_UID_LEN); + + /* NFC Forum device SHALL wait at least FDTVpp to consider the SLPV + * acknowledged (FDTVpp = FDTVpoll) Digital 2.0 (Candidate) 9.7 9.8.2 */ + ret = rfalTransceiveBlockingTxRx((uint8_t*)&slpReq, sizeof(rfalNfcvSlpvReq), + &rxBuf, sizeof(rxBuf), NULL, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_NFCV_FDT_MAX1); + if (ret != RFAL_ERR_TIMEOUT) { + return ret; + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerSelect(uint8_t flags, const uint8_t* uid) { + uint16_t rcvLen; + rfalNfcvGenericRes res; + + if (uid == NULL) { + return RFAL_ERR_PARAM; + } + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_SELECT, flags, RFAL_NFCV_PARAM_SKIP, uid, NULL, 0U, + (uint8_t*)&res, sizeof(rfalNfcvGenericRes), &rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerReadSingleBlock(uint8_t flags, const uint8_t* uid, + uint8_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rcvLen) { + uint8_t bn; + + bn = blockNum; + + return rfalNfcvPollerTransceiveReq(RFAL_NFCV_CMD_READ_SINGLE_BLOCK, flags, + RFAL_NFCV_PARAM_SKIP, uid, &bn, + sizeof(uint8_t), rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerWriteSingleBlock(uint8_t flags, const uint8_t* uid, + uint8_t blockNum, + const uint8_t* wrData, + uint8_t blockLen) { + uint8_t data[(RFAL_NFCV_BLOCKNUM_LEN + RFAL_NFCV_MAX_BLOCK_LEN)]; + uint8_t dataLen; + uint16_t rcvLen; + rfalNfcvGenericRes res; + + /* Check for valid parameters */ + if ((blockLen == 0U) || (blockLen > (uint8_t)RFAL_NFCV_MAX_BLOCK_LEN) || + (wrData == NULL)) { + return RFAL_ERR_PARAM; + } + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = blockNum; /* Set Block Number (8 bits) */ + RFAL_MEMCPY(&data[dataLen], wrData, + blockLen); /* Append Block data to write */ + dataLen += blockLen; + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_WRITE_SINGLE_BLOCK, flags, RFAL_NFCV_PARAM_SKIP, uid, data, + dataLen, (uint8_t*)&res, sizeof(rfalNfcvGenericRes), &rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerLockBlock(uint8_t flags, const uint8_t* uid, + uint8_t blockNum) { + uint16_t rcvLen; + rfalNfcvGenericRes res; + uint8_t bn; + + bn = blockNum; + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_LOCK_BLOCK, flags, RFAL_NFCV_PARAM_SKIP, uid, &bn, + sizeof(uint8_t), (uint8_t*)&res, sizeof(rfalNfcvGenericRes), &rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerReadMultipleBlocks(uint8_t flags, const uint8_t* uid, + uint8_t firstBlockNum, + uint8_t numOfBlocks, uint8_t* rxBuf, + uint16_t rxBufLen, + uint16_t* rcvLen) { + uint8_t data[(RFAL_NFCV_BLOCKNUM_LEN + RFAL_NFCV_BLOCKNUM_LEN)]; + uint8_t dataLen; + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = firstBlockNum; /* Set first Block Number */ + data[dataLen++] = numOfBlocks; /* Set number of blocks to read */ + + return rfalNfcvPollerTransceiveReq(RFAL_NFCV_CMD_READ_MULTIPLE_BLOCKS, flags, + RFAL_NFCV_PARAM_SKIP, uid, data, dataLen, + rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerWriteMultipleBlocks( + uint8_t flags, const uint8_t* uid, uint8_t firstBlockNum, + uint8_t numOfBlocks, uint8_t* txBuf, uint16_t txBufLen, uint8_t blockLen, + const uint8_t* wrData, uint16_t wrDataLen) { + ReturnCode ret; + uint16_t rcvLen; + uint16_t reqLen; + rfalNfcvGenericRes res; + uint16_t msgIt; + + /* Calculate required buffer length */ + reqLen = + (uint16_t)((uid != NULL) ? (RFAL_NFCV_WR_MUL_REQ_HEADER_LEN + + RFAL_NFCV_UID_LEN + wrDataLen) + : (RFAL_NFCV_WR_MUL_REQ_HEADER_LEN + wrDataLen)); + + if ((reqLen > txBufLen) || (blockLen > (uint8_t)RFAL_NFCV_MAX_BLOCK_LEN) || + ((((uint16_t)numOfBlocks) * (uint16_t)blockLen) != wrDataLen) || + (numOfBlocks == 0U) || (wrData == NULL)) { + return RFAL_ERR_PARAM; + } + + msgIt = 0; + + /* Compute Request Command */ + txBuf[msgIt++] = (uint8_t)(flags & (~((uint32_t)RFAL_NFCV_REQ_FLAG_ADDRESS))); + txBuf[msgIt++] = RFAL_NFCV_CMD_WRITE_MULTIPLE_BLOCKS; + + /* Check if Request is to be sent in Addressed mode. Select mode flag shall be + * set by user */ + if (uid != NULL) { + txBuf[RFAL_NFCV_FLAG_POS] |= (uint8_t)RFAL_NFCV_REQ_FLAG_ADDRESS; + RFAL_MEMCPY(&txBuf[msgIt], uid, RFAL_NFCV_UID_LEN); + msgIt += (uint8_t)RFAL_NFCV_UID_LEN; + } + + txBuf[msgIt++] = firstBlockNum; + txBuf[msgIt++] = (numOfBlocks - 1U); + + if (wrDataLen > 0U) /* MISRA 21.18 */ + { + RFAL_MEMCPY(&txBuf[msgIt], wrData, wrDataLen); + msgIt += wrDataLen; + } + + /* Transceive Command */ + ret = rfalTransceiveBlockingTxRx(txBuf, msgIt, (uint8_t*)&res, + sizeof(rfalNfcvGenericRes), &rcvLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_NFCV_FDT_MAX); + + if (ret != RFAL_ERR_NONE) { + return ret; + } + + /* Check if the response minimum length has been received */ + if (rcvLen < (uint8_t)RFAL_NFCV_FLAG_LEN) { + return RFAL_ERR_PROTO; + } + + /* Check if an error has been signalled */ + if ((res.RES_FLAG & (uint8_t)RFAL_NFCV_RES_FLAG_ERROR) != 0U) { + return rfalNfcvParseError(*res.data); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerExtendedReadSingleBlock( + uint8_t flags, const uint8_t* uid, uint16_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rcvLen) { + uint8_t data[RFAL_NFCV_BLOCKNUM_EXTENDED_LEN]; + uint8_t dataLen; + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = + (uint8_t)blockNum; /* TS T5T 1.0 BNo is considered as a multi-byte field. + TS T5T 1.0 5.1.1.13 multi-byte field follows + [DIGITAL]. [DIGITAL] 9.3.1 A multiple byte field is + transmitted LSB first. */ + data[dataLen++] = (uint8_t)((blockNum >> 8U) & 0xFFU); + + return rfalNfcvPollerTransceiveReq(RFAL_NFCV_CMD_EXTENDED_READ_SINGLE_BLOCK, + flags, RFAL_NFCV_PARAM_SKIP, uid, data, + dataLen, rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerExtendedWriteSingleBlock(uint8_t flags, + const uint8_t* uid, + uint16_t blockNum, + const uint8_t* wrData, + uint8_t blockLen) { + uint8_t data[(RFAL_NFCV_BLOCKNUM_EXTENDED_LEN + RFAL_NFCV_MAX_BLOCK_LEN)]; + uint8_t dataLen; + uint16_t rcvLen; + rfalNfcvGenericRes res; + + /* Check for valid parameters */ + if ((blockLen == 0U) || (blockLen > (uint8_t)RFAL_NFCV_MAX_BLOCK_LEN)) { + return RFAL_ERR_PARAM; + } + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = + (uint8_t)blockNum; /* TS T5T 1.0 BNo is considered as a multi-byte field. + TS T5T 1.0 5.1.1.13 multi-byte field follows + [DIGITAL]. [DIGITAL] 9.3.1 A multiple byte field is + transmitted LSB first. */ + data[dataLen++] = (uint8_t)((blockNum >> 8U) & 0xFFU); + RFAL_MEMCPY(&data[dataLen], wrData, + blockLen); /* Append Block data to write */ + dataLen += blockLen; + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_EXTENDED_WRITE_SINGLE_BLOCK, flags, RFAL_NFCV_PARAM_SKIP, + uid, data, dataLen, (uint8_t*)&res, sizeof(rfalNfcvGenericRes), &rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerExtendedLockSingleBlock(uint8_t flags, + const uint8_t* uid, + uint16_t blockNum) { + uint8_t data[RFAL_NFCV_BLOCKNUM_EXTENDED_LEN]; + uint8_t dataLen; + uint16_t rcvLen; + rfalNfcvGenericRes res; + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = + (uint8_t)blockNum; /* TS T5T 1.0 BNo is considered as a multi-byte field. + TS T5T 1.0 5.1.1.13 multi-byte field follows + [DIGITAL]. [DIGITAL] 9.3.1 A multiple byte field is + transmitted LSB first. */ + data[dataLen++] = (uint8_t)((blockNum >> 8U) & 0xFFU); + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_EXTENDED_LOCK_SINGLE_BLOCK, flags, RFAL_NFCV_PARAM_SKIP, + uid, data, dataLen, (uint8_t*)&res, sizeof(rfalNfcvGenericRes), &rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerExtendedReadMultipleBlocks( + uint8_t flags, const uint8_t* uid, uint16_t firstBlockNum, + uint16_t numOfBlocks, uint8_t* rxBuf, uint16_t rxBufLen, uint16_t* rcvLen) { + uint8_t + data[(RFAL_NFCV_BLOCKNUM_EXTENDED_LEN + RFAL_NFCV_BLOCKNUM_EXTENDED_LEN)]; + uint8_t dataLen; + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = (uint8_t)((firstBlockNum >> 0U) & 0xFFU); + data[dataLen++] = (uint8_t)((firstBlockNum >> 8U) & 0xFFU); + data[dataLen++] = (uint8_t)((numOfBlocks >> 0U) & 0xFFU); + data[dataLen++] = (uint8_t)((numOfBlocks >> 8U) & 0xFFU); + + return rfalNfcvPollerTransceiveReq(RFAL_NFCV_CMD_EXTENDED_READ_MULTIPLE_BLOCK, + flags, RFAL_NFCV_PARAM_SKIP, uid, data, + dataLen, rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerExtendedWriteMultipleBlocks( + uint8_t flags, const uint8_t* uid, uint16_t firstBlockNum, + uint16_t numOfBlocks, uint8_t* txBuf, uint16_t txBufLen, uint8_t blockLen, + const uint8_t* wrData, uint16_t wrDataLen) { + ReturnCode ret; + uint16_t rcvLen; + uint16_t reqLen; + rfalNfcvGenericRes res; + uint16_t msgIt; + uint16_t nBlocks; + + /* Calculate required buffer length */ + reqLen = + ((uid != NULL) + ? (RFAL_NFCV_WR_MUL_REQ_HEADER_LEN + RFAL_NFCV_UID_LEN + wrDataLen) + : (RFAL_NFCV_WR_MUL_REQ_HEADER_LEN + wrDataLen)); + + if ((reqLen > txBufLen) || (blockLen > (uint8_t)RFAL_NFCV_MAX_BLOCK_LEN) || + (((uint16_t)numOfBlocks * (uint16_t)blockLen) != wrDataLen) || + (numOfBlocks == 0U)) { + return RFAL_ERR_PARAM; + } + + msgIt = 0; + nBlocks = (numOfBlocks - 1U); + + /* Compute Request Command */ + txBuf[msgIt++] = (uint8_t)(flags & (~((uint32_t)RFAL_NFCV_REQ_FLAG_ADDRESS))); + txBuf[msgIt++] = RFAL_NFCV_CMD_EXTENDED_WRITE_MULTIPLE_BLOCK; + + /* Check if Request is to be sent in Addressed mode. Select mode flag shall be + * set by user */ + if (uid != NULL) { + txBuf[RFAL_NFCV_FLAG_POS] |= (uint8_t)RFAL_NFCV_REQ_FLAG_ADDRESS; + RFAL_MEMCPY(&txBuf[msgIt], uid, RFAL_NFCV_UID_LEN); + msgIt += (uint8_t)RFAL_NFCV_UID_LEN; + } + + txBuf[msgIt++] = (uint8_t)((firstBlockNum >> 0) & 0xFFU); + txBuf[msgIt++] = (uint8_t)((firstBlockNum >> 8) & 0xFFU); + txBuf[msgIt++] = (uint8_t)((nBlocks >> 0) & 0xFFU); + txBuf[msgIt++] = (uint8_t)((nBlocks >> 8) & 0xFFU); + + if (wrDataLen > 0U) /* MISRA 21.18 */ + { + RFAL_MEMCPY(&txBuf[msgIt], wrData, wrDataLen); + msgIt += wrDataLen; + } + + /* Transceive Command */ + ret = rfalTransceiveBlockingTxRx(txBuf, msgIt, (uint8_t*)&res, + sizeof(rfalNfcvGenericRes), &rcvLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_NFCV_FDT_MAX); + + if (ret != RFAL_ERR_NONE) { + return ret; + } + + /* Check if the response minimum length has been received */ + if (rcvLen < (uint8_t)RFAL_NFCV_FLAG_LEN) { + return RFAL_ERR_PROTO; + } + + /* Check if an error has been signalled */ + if ((res.RES_FLAG & (uint8_t)RFAL_NFCV_RES_FLAG_ERROR) != 0U) { + return rfalNfcvParseError(*res.data); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerGetSystemInformation(uint8_t flags, const uint8_t* uid, + uint8_t* rxBuf, uint16_t rxBufLen, + uint16_t* rcvLen) { + return rfalNfcvPollerTransceiveReq(RFAL_NFCV_CMD_GET_SYS_INFO, flags, + RFAL_NFCV_PARAM_SKIP, uid, NULL, 0U, rxBuf, + rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerExtendedGetSystemInformation( + uint8_t flags, const uint8_t* uid, uint8_t requestField, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rcvLen) { + return rfalNfcvPollerTransceiveReq(RFAL_NFCV_CMD_EXTENDED_GET_SYS_INFO, flags, + requestField, uid, NULL, 0U, rxBuf, + rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalNfcvPollerTransceiveReq(uint8_t cmd, uint8_t flags, + uint8_t param, const uint8_t* uid, + const uint8_t* data, uint16_t dataLen, + uint8_t* rxBuf, uint16_t rxBufLen, + uint16_t* rcvLen) { + ReturnCode ret; + rfalNfcvGenericReq req; + uint8_t msgIt; + rfalBitRate rxBR; + bool fastMode; + bool specialFrame; + + msgIt = 0; + fastMode = false; + specialFrame = false; + + /* Check for valid parameters */ + if ((rxBuf == NULL) || (rcvLen == NULL) || + ((dataLen > 0U) && (data == NULL)) || + (dataLen > ((uid != NULL) ? RFAL_NFCV_MAX_GEN_DATA_LEN + : (RFAL_NFCV_MAX_GEN_DATA_LEN - + RFAL_NFCV_UID_LEN - RFAL_NFCV_PARAM_LEN)))) { + return RFAL_ERR_PARAM; + } + + /* Check if the command is an ST's Fast command */ + if ((param == RFAL_NFCV_ST_IC_MFG_CODE) && + ((cmd == (uint8_t)RFAL_NFCV_CMD_FAST_READ_SINGLE_BLOCK) || + (cmd == (uint8_t)RFAL_NFCV_CMD_FAST_EXTENDED_READ_SINGLE_BLOCK) || + (cmd == (uint8_t)RFAL_NFCV_CMD_FAST_READ_MULTIPLE_BLOCKS) || + (cmd == (uint8_t)RFAL_NFCV_CMD_FAST_EXTENDED_READ_MULTIPLE_BLOCKS) || + (cmd == (uint8_t)RFAL_NFCV_CMD_FAST_WRITE_MESSAGE) || + (cmd == (uint8_t)RFAL_NFCV_CMD_FAST_READ_MESSAGE_LENGTH) || + (cmd == (uint8_t)RFAL_NFCV_CMD_FAST_READ_MESSAGE) || + (cmd == (uint8_t)RFAL_NFCV_CMD_FAST_READ_DYN_CONFIGURATION) || + (cmd == (uint8_t)RFAL_NFCV_CMD_FAST_WRITE_DYN_CONFIGURATION))) { + /* Store current Rx bit rate and move to fast mode */ + rfalGetBitRate(NULL, &rxBR); + rfalSetBitRate(RFAL_BR_KEEP, RFAL_BR_52p97); + + fastMode = true; + } + + /* Compute Request Command */ + req.REQ_FLAG = (uint8_t)(flags & (~((uint32_t)RFAL_NFCV_REQ_FLAG_ADDRESS))); + req.CMD = cmd; + + /* Prepend parameter on certain proprietary requests: IC Manuf, Parameters */ + if (param != RFAL_NFCV_PARAM_SKIP) { + req.payload.data[msgIt++] = param; /* RFAL_NFCV_PARAM_LEN */ + } + + /* Check if Request is to be sent in Addressed mode. Select mode flag shall be + * set by user */ + if (uid != NULL) { + req.REQ_FLAG |= (uint8_t)RFAL_NFCV_REQ_FLAG_ADDRESS; + RFAL_MEMCPY(&req.payload.data[msgIt], uid, RFAL_NFCV_UID_LEN); + msgIt += RFAL_NFCV_UID_LEN; + } + + if (dataLen > 0U) { + RFAL_MEMCPY(&req.payload.data[msgIt], data, dataLen); + msgIt += (uint8_t)dataLen; + } + + /* If the Option Flag | Special Frame is set in certain commands an EOF needs + * to be sent whithin FDTV,EOF to retrieve the VICC response + * Digital 2.3 9.7.4 ISO15693-3 2009 10.4.2 & 10.4.3 & 10.4.5 */ + if (((flags & (uint8_t)RFAL_NFCV_REQ_FLAG_OPTION) != 0U) && + ((cmd == (uint8_t)RFAL_NFCV_CMD_WRITE_SINGLE_BLOCK) || + (cmd == (uint8_t)RFAL_NFCV_CMD_WRITE_MULTIPLE_BLOCKS) || + (cmd == (uint8_t)RFAL_NFCV_CMD_LOCK_BLOCK) || + (cmd == (uint8_t)RFAL_NFCV_CMD_EXTENDED_WRITE_SINGLE_BLOCK) || + (cmd == (uint8_t)RFAL_NFCV_CMD_EXTENDED_LOCK_SINGLE_BLOCK) || + (cmd == (uint8_t)RFAL_NFCV_CMD_EXTENDED_WRITE_MULTIPLE_BLOCK))) { + specialFrame = true; + } + + /* Transceive Command */ + ret = rfalTransceiveBlockingTxRx( + (uint8_t*)&req, + (RFAL_NFCV_CMD_LEN + RFAL_NFCV_FLAG_LEN + (uint16_t)msgIt), rxBuf, + rxBufLen, rcvLen, RFAL_TXRX_FLAGS_DEFAULT, + (specialFrame ? RFAL_NFCV_FDT_EOF : RFAL_NFCV_FDT_MAX)); + + /* If the Option Flag | Special Frame is set in certain commands an EOF needs + * to be sent whithin FDTV,EOF to retrieve the VICC response + * Digital 2.3 9.7.4 ISO15693-3 2009 10.4.2 & 10.4.3 & 10.4.5 */ + if (specialFrame) { + ret = rfalISO15693TransceiveEOF(rxBuf, rxBufLen, rcvLen); + } + + /* Restore Rx BitRate */ + if (fastMode) { + rfalSetBitRate(RFAL_BR_KEEP, rxBR); + } + + if (ret != RFAL_ERR_NONE) { + return ret; + } + + /* Check if the response minimum length has been received */ + if ((*rcvLen) < (uint8_t)RFAL_NFCV_FLAG_LEN) { + return RFAL_ERR_PROTO; + } + + /* Check if an error has been signalled */ + if ((rxBuf[RFAL_NFCV_FLAG_POS] & (uint8_t)RFAL_NFCV_RES_FLAG_ERROR) != 0U) { + return rfalNfcvParseError(rxBuf[RFAL_NFCV_DATASTART_POS]); + } + + return RFAL_ERR_NONE; +} + +#endif /* RFAL_FEATURE_NFCV */ diff --git a/core/embed/io/nfc/rfal/source/rfal_st25tb.c b/core/embed/io/nfc/rfal/source/rfal_st25tb.c new file mode 100644 index 0000000000..7ee6196330 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_st25tb.c @@ -0,0 +1,538 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_st25tb.c + * + * \author Gustavo Patricio + * + * \brief Implementation of ST25TB interface + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_st25tb.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_ST25TB + */ + +#if RFAL_FEATURE_ST25TB + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_ST25TB_CMD_LEN \ + 1U /*!< ST25TB length of a command */ +#define RFAL_ST25TB_SLOTS \ + 16U /*!< ST25TB number of slots */ +#define RFAL_ST25TB_SLOTNUM_MASK \ + 0x0FU /*!< ST25TB Slot Number bit mask on SlotMarker */ +#define RFAL_ST25TB_SLOTNUM_SHIFT \ + 4U /*!< ST25TB Slot Number shift on SlotMarker */ + +#define RFAL_ST25TB_INITIATE_CMD1 \ + 0x06U /*!< ST25TB Initiate command byte1 */ +#define RFAL_ST25TB_INITIATE_CMD2 \ + 0x00U /*!< ST25TB Initiate command byte2 */ +#define RFAL_ST25TB_PCALL_CMD1 \ + 0x06U /*!< ST25TB Pcall16 command byte1 */ +#define RFAL_ST25TB_PCALL_CMD2 \ + 0x04U /*!< ST25TB Pcall16 command byte2 */ +#define RFAL_ST25TB_SELECT_CMD \ + 0x0EU /*!< ST25TB Select command */ +#define RFAL_ST25TB_GET_UID_CMD \ + 0x0BU /*!< ST25TB Get UID command */ +#define RFAL_ST25TB_COMPLETION_CMD \ + 0x0FU /*!< ST25TB Completion command */ +#define RFAL_ST25TB_RESET_INV_CMD \ + 0x0CU /*!< ST25TB Reset to Inventory command */ +#define RFAL_ST25TB_READ_BLOCK_CMD \ + 0x08U /*!< ST25TB Read Block command */ +#define RFAL_ST25TB_WRITE_BLOCK_CMD \ + 0x09U /*!< ST25TB Write Block command */ + +#define RFAL_ST25TB_T0 \ + 2157U /*!< ST25TB t0 159 us ST25TB RF characteristics */ +#define RFAL_ST25TB_T1 \ + 2048U /*!< ST25TB t1 151 us ST25TB RF characteristics */ + +#define RFAL_ST25TB_FWT \ + (RFAL_ST25TB_T0 + RFAL_ST25TB_T1) /*!< ST25TB FWT = T0 + T1 */ +#define RFAL_ST25TB_TW \ + rfalConvMsTo1fc(7U) /*!< ST25TB TW : Programming time for write max 7ms */ + +/* + ****************************************************************************** + * GLOBAL MACROS + ****************************************************************************** + */ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! Initiate Request */ +typedef struct { + uint8_t cmd1; /*!< Initiate Request cmd1: 0x06 */ + uint8_t cmd2; /*!< Initiate Request cmd2: 0x00 */ +} rfalSt25tbInitiateReq; + +/*! Pcall16 Request */ +typedef struct { + uint8_t cmd1; /*!< Pcal16 Request cmd1: 0x06 */ + uint8_t cmd2; /*!< Pcal16 Request cmd2: 0x04 */ +} rfalSt25tbPcallReq; + +/*! Select Request */ +typedef struct { + uint8_t cmd; /*!< Select Request cmd: 0x0E */ + uint8_t chipId; /*!< Chip ID */ +} rfalSt25tbSelectReq; + +/*! Read Block Request */ +typedef struct { + uint8_t cmd; /*!< Select Request cmd: 0x08 */ + uint8_t address; /*!< Block address */ +} rfalSt25tbReadBlockReq; + +/*! Write Block Request */ +typedef struct { + uint8_t cmd; /*!< Select Request cmd: 0x09 */ + uint8_t address; /*!< Block address */ + rfalSt25tbBlock data; /*!< Block Data */ +} rfalSt25tbWriteBlockReq; + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +/*! + ***************************************************************************** + * \brief ST25TB Poller Do Collision Resolution + * + * This method performs ST25TB Collision resolution loop for each slot + * + * \param[in] devLimit : device limit value, and size st25tbDevList + * \param[out] st25tbDevList : ST35TB listener device info + * \param[out] devCnt : Devices found counter + * + * \return colPending : true if a collision was detected + ***************************************************************************** + */ +static bool rfalSt25tbPollerDoCollisionResolution( + uint8_t devLimit, rfalSt25tbListenDevice *st25tbDevList, uint8_t *devCnt); + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +static bool rfalSt25tbPollerDoCollisionResolution( + uint8_t devLimit, rfalSt25tbListenDevice *st25tbDevList, uint8_t *devCnt) { + uint8_t i; + uint8_t chipId; + ReturnCode ret; + bool col; + + col = false; + + for (i = 0; i < RFAL_ST25TB_SLOTS; i++) { + platformDelay(1); /* Wait t2: Answer to new request delay */ + + if (i == 0U) { + /* Step 2: Send Pcall16 */ + ret = rfalSt25tbPollerPcall(&chipId); + } else { + /* Step 3-17: Send Pcall16 */ + ret = rfalSt25tbPollerSlotMarker(i, &chipId); + } + + if (ret == RFAL_ERR_NONE) { + /* Found another device */ + st25tbDevList[*devCnt].chipID = chipId; + st25tbDevList[*devCnt].isDeselected = false; + + /* Select Device, retrieve its UID */ + ret = rfalSt25tbPollerSelect(chipId); + + /* By Selecting this device, the previous gets Deselected */ + if ((*devCnt) > 0U) { + st25tbDevList[(*devCnt) - 1U].isDeselected = true; + } + + if (RFAL_ERR_NONE == ret) { + ret = rfalSt25tbPollerGetUID(&st25tbDevList[*devCnt].UID); + } + + if (RFAL_ERR_NONE == ret) { + (*devCnt)++; + } + } else if ((ret == RFAL_ERR_CRC) || (ret == RFAL_ERR_FRAMING)) { + col = true; + } else { + /* MISRA 15.7 - Empty else */ + } + + if (*devCnt >= devLimit) { + break; + } + } + return col; +} + +/* +****************************************************************************** +* LOCAL VARIABLES +****************************************************************************** +*/ + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerInitialize(void) { + return rfalNfcbPollerInitialize(); +} + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerCheckPresence(uint8_t *chipId) { + ReturnCode ret; + uint8_t chipIdRes; + + chipIdRes = 0x00; + + /* Send Initiate Request */ + ret = rfalSt25tbPollerInitiate(&chipIdRes); + + /* Check if a transmission error was detected */ + if ((ret == RFAL_ERR_CRC) || (ret == RFAL_ERR_FRAMING)) { + return RFAL_ERR_NONE; + } + + /* Copy chip ID if requested */ + if (chipId != NULL) { + *chipId = chipIdRes; + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerInitiate(uint8_t *chipId) { + ReturnCode ret; + uint16_t rxLen; + rfalSt25tbInitiateReq initiateReq; + uint8_t rxBuf[RFAL_ST25TB_CHIP_ID_LEN + + RFAL_ST25TB_CRC_LEN]; /* In case we receive less data that CRC, + RF layer will not remove the CRC from + buffer */ + + /* Compute Initiate Request */ + initiateReq.cmd1 = RFAL_ST25TB_INITIATE_CMD1; + initiateReq.cmd2 = RFAL_ST25TB_INITIATE_CMD2; + + /* Send Initiate Request */ + ret = rfalTransceiveBlockingTxRx( + (uint8_t *)&initiateReq, sizeof(rfalSt25tbInitiateReq), (uint8_t *)rxBuf, + sizeof(rxBuf), &rxLen, RFAL_TXRX_FLAGS_DEFAULT, RFAL_ST25TB_FWT); + + /* Check for valid Select Response */ + if ((ret == RFAL_ERR_NONE) && (rxLen != RFAL_ST25TB_CHIP_ID_LEN)) { + return RFAL_ERR_PROTO; + } + + /* Copy chip ID if requested */ + if (chipId != NULL) { + *chipId = *rxBuf; + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerPcall(uint8_t *chipId) { + ReturnCode ret; + uint16_t rxLen; + rfalSt25tbPcallReq pcallReq; + + /* Compute Pcal16 Request */ + pcallReq.cmd1 = RFAL_ST25TB_PCALL_CMD1; + pcallReq.cmd2 = RFAL_ST25TB_PCALL_CMD2; + + /* Send Pcal16 Request */ + ret = rfalTransceiveBlockingTxRx( + (uint8_t *)&pcallReq, sizeof(rfalSt25tbPcallReq), (uint8_t *)chipId, + RFAL_ST25TB_CHIP_ID_LEN, &rxLen, RFAL_TXRX_FLAGS_DEFAULT, + RFAL_ST25TB_FWT); + + /* Check for valid Select Response */ + if ((ret == RFAL_ERR_NONE) && (rxLen != RFAL_ST25TB_CHIP_ID_LEN)) { + return RFAL_ERR_PROTO; + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerSlotMarker(uint8_t slotNum, uint8_t *chipIdRes) { + ReturnCode ret; + uint16_t rxLen; + uint8_t slotMarker; + + if ((slotNum == 0U) || (slotNum > 15U)) { + return RFAL_ERR_PARAM; + } + + /* Compute SlotMarker */ + slotMarker = + (((slotNum & RFAL_ST25TB_SLOTNUM_MASK) << RFAL_ST25TB_SLOTNUM_SHIFT) | + RFAL_ST25TB_PCALL_CMD1); + + /* Send SlotMarker */ + ret = rfalTransceiveBlockingTxRx((uint8_t *)&slotMarker, RFAL_ST25TB_CMD_LEN, + (uint8_t *)chipIdRes, + RFAL_ST25TB_CHIP_ID_LEN, &rxLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_ST25TB_FWT); + + /* Check for valid ChipID Response */ + if ((ret == RFAL_ERR_NONE) && (rxLen != RFAL_ST25TB_CHIP_ID_LEN)) { + return RFAL_ERR_PROTO; + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerSelect(uint8_t chipId) { + ReturnCode ret; + uint16_t rxLen; + rfalSt25tbSelectReq selectReq; + uint8_t chipIdRes; + + /* Compute Select Request */ + selectReq.cmd = RFAL_ST25TB_SELECT_CMD; + selectReq.chipId = chipId; + + /* Send Select Request */ + ret = rfalTransceiveBlockingTxRx( + (uint8_t *)&selectReq, sizeof(rfalSt25tbSelectReq), (uint8_t *)&chipIdRes, + RFAL_ST25TB_CHIP_ID_LEN, &rxLen, RFAL_TXRX_FLAGS_DEFAULT, + RFAL_ST25TB_FWT); + + /* Check for valid Select Response */ + if ((ret == RFAL_ERR_NONE) && + ((rxLen != RFAL_ST25TB_CHIP_ID_LEN) || (chipIdRes != chipId))) { + return RFAL_ERR_PROTO; + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerGetUID(rfalSt25tbUID *UID) { + ReturnCode ret; + uint16_t rxLen; + uint8_t getUidReq; + + /* Compute Get UID Request */ + getUidReq = RFAL_ST25TB_GET_UID_CMD; + + /* Send Select Request */ + ret = rfalTransceiveBlockingTxRx( + (uint8_t *)&getUidReq, RFAL_ST25TB_CMD_LEN, (uint8_t *)UID, + sizeof(rfalSt25tbUID), &rxLen, RFAL_TXRX_FLAGS_DEFAULT, RFAL_ST25TB_FWT); + + /* Check for valid UID Response */ + if ((ret == RFAL_ERR_NONE) && (rxLen != RFAL_ST25TB_UID_LEN)) { + return RFAL_ERR_PROTO; + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerCollisionResolution( + uint8_t devLimit, rfalSt25tbListenDevice *st25tbDevList, uint8_t *devCnt) { + uint8_t chipId; + ReturnCode ret; + bool detected; /* collision or device was detected */ + + if ((st25tbDevList == NULL) || (devCnt == NULL) || (devLimit == 0U)) { + return RFAL_ERR_PARAM; + } + + *devCnt = 0; + + /* Step 1: Send Initiate */ + ret = rfalSt25tbPollerInitiate(&chipId); + if (ret == RFAL_ERR_NONE) { + /* If only 1 answer is detected */ + st25tbDevList[*devCnt].chipID = chipId; + st25tbDevList[*devCnt].isDeselected = false; + + /* Retrieve its UID and keep it Selected*/ + ret = rfalSt25tbPollerSelect(chipId); + + if (RFAL_ERR_NONE == ret) { + ret = rfalSt25tbPollerGetUID(&st25tbDevList[*devCnt].UID); + } + + if (RFAL_ERR_NONE == ret) { + (*devCnt)++; + } + } + /* Always proceed to Pcall16 anticollision as phase differences of tags can + * lead to no tag recognized, even if there is one */ + if (*devCnt < devLimit) { + /* Multiple device responses */ + do { + detected = rfalSt25tbPollerDoCollisionResolution(devLimit, st25tbDevList, + devCnt); + } while ((detected == true) && (*devCnt < devLimit)); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerReadBlock(uint8_t blockAddress, + rfalSt25tbBlock *blockData) { + ReturnCode ret; + uint16_t rxLen; + rfalSt25tbReadBlockReq readBlockReq; + + /* Compute Read Block Request */ + readBlockReq.cmd = RFAL_ST25TB_READ_BLOCK_CMD; + readBlockReq.address = blockAddress; + + /* Send Read Block Request */ + ret = rfalTransceiveBlockingTxRx( + (uint8_t *)&readBlockReq, sizeof(rfalSt25tbReadBlockReq), + (uint8_t *)blockData, sizeof(rfalSt25tbBlock), &rxLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_ST25TB_FWT); + + /* Check for valid UID Response */ + if ((ret == RFAL_ERR_NONE) && (rxLen != RFAL_ST25TB_BLOCK_LEN)) { + return RFAL_ERR_PROTO; + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerWriteBlock(uint8_t blockAddress, + const rfalSt25tbBlock *blockData) { + ReturnCode ret; + uint16_t rxLen; + rfalSt25tbWriteBlockReq writeBlockReq; + rfalSt25tbBlock tmpBlockData; + + /* Compute Write Block Request */ + writeBlockReq.cmd = RFAL_ST25TB_WRITE_BLOCK_CMD; + writeBlockReq.address = blockAddress; + RFAL_MEMCPY(&writeBlockReq.data, blockData, RFAL_ST25TB_BLOCK_LEN); + + /* Send Write Block Request */ + ret = rfalTransceiveBlockingTxRx( + (uint8_t *)&writeBlockReq, sizeof(rfalSt25tbWriteBlockReq), tmpBlockData, + RFAL_ST25TB_BLOCK_LEN, &rxLen, RFAL_TXRX_FLAGS_DEFAULT, + (RFAL_ST25TB_FWT + RFAL_ST25TB_TW)); + + /* Check if there was any error besides timeout */ + if (ret != RFAL_ERR_TIMEOUT) { + /* Check if an unexpected answer was received */ + if (ret == RFAL_ERR_NONE) { + return RFAL_ERR_PROTO; + } + + /* Check whether a transmission error occurred */ + if ((ret != RFAL_ERR_CRC) && (ret != RFAL_ERR_FRAMING) && + (ret != RFAL_ERR_NOMEM) && (ret != RFAL_ERR_RF_COLLISION)) { + return ret; + } + + /* If a transmission error occurred (maybe noise while commiting data) wait + * maximum programming time and verify data afterwards */ + rfalSetGT((RFAL_ST25TB_FWT + RFAL_ST25TB_TW)); + rfalFieldOnAndStartGT(); + } + + ret = rfalSt25tbPollerReadBlock(blockAddress, &tmpBlockData); + if (ret == RFAL_ERR_NONE) { + if (RFAL_BYTECMP(&tmpBlockData, blockData, RFAL_ST25TB_BLOCK_LEN) == 0) { + return RFAL_ERR_NONE; + } + return RFAL_ERR_PROTO; + } + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerCompletion(void) { + uint8_t completionReq; + + /* Compute Completion Request */ + completionReq = RFAL_ST25TB_COMPLETION_CMD; + + /* Send Completion Request, no response is expected */ + return rfalTransceiveBlockingTxRx((uint8_t *)&completionReq, + RFAL_ST25TB_CMD_LEN, NULL, 0, NULL, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_ST25TB_FWT); +} + +/*******************************************************************************/ +ReturnCode rfalSt25tbPollerResetToInventory(void) { + uint8_t resetInvReq; + + /* Compute Completion Request */ + resetInvReq = RFAL_ST25TB_RESET_INV_CMD; + + /* Send Completion Request, no response is expected */ + return rfalTransceiveBlockingTxRx((uint8_t *)&resetInvReq, + RFAL_ST25TB_CMD_LEN, NULL, 0, NULL, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_ST25TB_FWT); +} + +#endif /* RFAL_FEATURE_ST25TB */ diff --git a/core/embed/io/nfc/rfal/source/rfal_st25xv.c b/core/embed/io/nfc/rfal/source/rfal_st25xv.c new file mode 100644 index 0000000000..463445fe2a --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_st25xv.c @@ -0,0 +1,678 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_st25xv.c + * + * \author Gustavo Patricio + * + * \brief NFC-V ST25 NFC-V Tag specific features + * + * This module provides support for ST's specific features available on + * NFC-V (ISO15693) tag families: ST25D, ST25TV, M24LR + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_st25xv.h" +#include "rfal_nfcv.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_ST25xV + */ + +#if RFAL_FEATURE_ST25xV + +#if !RFAL_FEATURE_NFCV +#error " RFAL: Invalid Configuration. Please Enable RFAL support for NFC-V." +#endif + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_ST25xV_READ_CONFIG_LEN \ + 2U /*!< READ CONFIGURATION length */ +#define RFAL_ST25xV_READ_MSG_LEN_LEN \ + 2U /*!< READ MESSAGE LENGTH length */ +#define RFAL_ST25xV_CONF_POINTER_LEN \ + 1U /*!< READ/WRITE CONFIGURATION Pointer length */ +#define RFAL_ST25xV_CONF_REGISTER_LEN \ + 1U /*!< READ/WRITE CONFIGURATION Register length */ +#define RFAL_ST25xV_PWDNUM_LEN \ + 1U /*!< Password Number length */ +#define RFAL_ST25xV_PWD_LEN \ + 8U /*!< Password length */ +#define RFAL_ST25xV_MBPOINTER_LEN \ + 1U /*!< Read Message MBPointer length */ +#define RFAL_ST25xV_NUMBYTES_LEN \ + 1U /*!< Read Message Number of Bytes length */ + +#define RFAL_ST25TV02K_TBOOT_RF \ + 1U /*!< RF Boot time (Minimum time from carrier generation to first data) */ +#define RFAL_ST25TV02K_TRF_OFF \ + 2U /*!< RF OFF time */ + +#define RFAL_ST25xV_FDT_POLL_MAX \ + rfalConvMsTo1fc( \ + 20) /*!< Maximum Wait time FDTV,EOF 20 ms Digital 2.1 B.5 */ +#define RFAL_NFCV_FLAG_POS \ + 0U /*!< Flag byte position */ +#define RFAL_NFCV_FLAG_LEN \ + 1U /*!< Flag byte length */ + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +static ReturnCode rfalST25xVPollerGenericReadConfiguration(uint8_t cmd, + uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t* regValue); +static ReturnCode rfalST25xVPollerGenericWriteConfiguration(uint8_t cmd, + uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t regValue); +static ReturnCode rfalST25xVPollerGenericReadMessageLength(uint8_t cmd, + uint8_t flags, + const uint8_t* uid, + uint8_t* msgLen); +static ReturnCode rfalST25xVPollerGenericReadMessage( + uint8_t cmd, uint8_t flags, const uint8_t* uid, uint8_t mbPointer, + uint8_t numBytes, uint8_t* rxBuf, uint16_t rxBufLen, uint16_t* rcvLen); +static ReturnCode rfalST25xVPollerGenericWriteMessage( + uint8_t cmd, uint8_t flags, const uint8_t* uid, uint8_t msgLen, + const uint8_t* msgData, uint8_t* txBuf, uint16_t txBufLen); +/* +****************************************************************************** +* LOCAL FUNCTIONS +****************************************************************************** +*/ + +/*******************************************************************************/ +static ReturnCode rfalST25xVPollerGenericReadConfiguration(uint8_t cmd, + uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t* regValue) { + ReturnCode ret; + uint8_t p; + uint16_t rcvLen; + rfalNfcvGenericRes res; + + if (regValue == NULL) { + return RFAL_ERR_PARAM; + } + + p = pointer; + + ret = rfalNfcvPollerTransceiveReq(cmd, flags, RFAL_NFCV_ST_IC_MFG_CODE, uid, + &p, sizeof(uint8_t), (uint8_t*)&res, + sizeof(rfalNfcvGenericRes), &rcvLen); + if (ret == RFAL_ERR_NONE) { + if (rcvLen < RFAL_ST25xV_READ_CONFIG_LEN) { + ret = RFAL_ERR_PROTO; + } else { + *regValue = res.data[0]; + } + } + return ret; +} + +/*******************************************************************************/ +static ReturnCode rfalST25xVPollerGenericWriteConfiguration(uint8_t cmd, + uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t regValue) { + uint8_t data[RFAL_ST25xV_CONF_POINTER_LEN + RFAL_ST25xV_CONF_REGISTER_LEN]; + uint8_t dataLen; + uint16_t rcvLen; + rfalNfcvGenericRes res; + + dataLen = 0U; + + data[dataLen++] = pointer; + data[dataLen++] = regValue; + + return rfalNfcvPollerTransceiveReq(cmd, flags, RFAL_NFCV_ST_IC_MFG_CODE, uid, + data, dataLen, (uint8_t*)&res, + sizeof(rfalNfcvGenericRes), &rcvLen); +} + +/*******************************************************************************/ +static ReturnCode rfalST25xVPollerGenericReadMessageLength(uint8_t cmd, + uint8_t flags, + const uint8_t* uid, + uint8_t* msgLen) { + ReturnCode ret; + uint16_t rcvLen; + rfalNfcvGenericRes res; + + if (msgLen == NULL) { + return RFAL_ERR_PARAM; + } + + ret = rfalNfcvPollerTransceiveReq(cmd, flags, RFAL_NFCV_ST_IC_MFG_CODE, uid, + NULL, 0, (uint8_t*)&res, + sizeof(rfalNfcvGenericRes), &rcvLen); + if (ret == RFAL_ERR_NONE) { + if (rcvLen < RFAL_ST25xV_READ_MSG_LEN_LEN) { + ret = RFAL_ERR_PROTO; + } else { + *msgLen = res.data[0]; + } + } + return ret; +} + +/*******************************************************************************/ +static ReturnCode rfalST25xVPollerGenericReadMessage( + uint8_t cmd, uint8_t flags, const uint8_t* uid, uint8_t mbPointer, + uint8_t numBytes, uint8_t* rxBuf, uint16_t rxBufLen, uint16_t* rcvLen) { + uint8_t data[RFAL_ST25xV_MBPOINTER_LEN + RFAL_ST25xV_NUMBYTES_LEN]; + uint8_t dataLen; + + dataLen = 0; + + /* Compute Request Data */ + data[dataLen++] = mbPointer; + data[dataLen++] = numBytes; + + return rfalNfcvPollerTransceiveReq(cmd, flags, RFAL_NFCV_ST_IC_MFG_CODE, uid, + data, dataLen, rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +static ReturnCode rfalST25xVPollerGenericWriteMessage( + uint8_t cmd, uint8_t flags, const uint8_t* uid, uint8_t msgLen, + const uint8_t* msgData, uint8_t* txBuf, uint16_t txBufLen) { + ReturnCode ret; + uint8_t reqFlag; + uint16_t msgIt; + rfalBitRate rxBR; + bool fastMode; + rfalNfcvGenericRes res; + uint16_t rcvLen; + + /* Calculate required Tx buf length: Mfg Code UID MSGLen + * MSGLen+1 */ + msgIt = (uint16_t)(msgLen + sizeof(flags) + sizeof(cmd) + 1U + + ((uid != NULL) ? RFAL_NFCV_UID_LEN : 0U) + 1U + 1U); + /* Note: MSGlength parameter of the command is the number of Data bytes minus + * - 1 (00 for 1 byte of data, FFh for 256 bytes of data) */ + + /* Check for valid parameters */ + if ((txBuf == NULL) || (msgData == NULL) || (txBufLen < msgIt)) { + return RFAL_ERR_PARAM; + } + + msgIt = 0; + fastMode = false; + + /* Check if the command is an ST's Fast command */ + if (cmd == (uint8_t)RFAL_NFCV_CMD_FAST_WRITE_MESSAGE) { + /* Store current Rx bit rate and move to fast mode */ + rfalGetBitRate(NULL, &rxBR); + rfalSetBitRate(RFAL_BR_KEEP, RFAL_BR_52p97); + + fastMode = true; + } + + /* Compute Request Command */ + reqFlag = (uint8_t)(flags & (~((uint32_t)RFAL_NFCV_REQ_FLAG_ADDRESS) & + ~((uint32_t)RFAL_NFCV_REQ_FLAG_SELECT))); + reqFlag |= ((uid != NULL) ? (uint8_t)RFAL_NFCV_REQ_FLAG_ADDRESS + : (uint8_t)RFAL_NFCV_REQ_FLAG_SELECT); + + txBuf[msgIt++] = reqFlag; + txBuf[msgIt++] = cmd; + txBuf[msgIt++] = RFAL_NFCV_ST_IC_MFG_CODE; + + if (uid != NULL) { + RFAL_MEMCPY(&txBuf[msgIt], uid, RFAL_NFCV_UID_LEN); + msgIt += RFAL_NFCV_UID_LEN; + } + txBuf[msgIt++] = msgLen; + RFAL_MEMCPY(&txBuf[msgIt], msgData, + (uint16_t)(msgLen + (uint16_t)1U)); /* Message Data contains + (MSGLength + 1) bytes */ + msgIt += (uint16_t)(msgLen + (uint16_t)1U); + + /* Transceive Command */ + ret = rfalTransceiveBlockingTxRx( + txBuf, msgIt, (uint8_t*)&res, sizeof(rfalNfcvGenericRes), &rcvLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_ST25xV_FDT_POLL_MAX); + + /* Restore Rx BitRate */ + if (fastMode) { + rfalSetBitRate(RFAL_BR_KEEP, rxBR); + } + + if (ret != RFAL_ERR_NONE) { + return ret; + } + + /* Check if the response minimum length has been received */ + if (rcvLen < (uint8_t)RFAL_NFCV_FLAG_LEN) { + return RFAL_ERR_PROTO; + } + + /* Check if an error has been signalled */ + if ((res.RES_FLAG & (uint8_t)RFAL_NFCV_RES_FLAG_ERROR) != 0U) { + return RFAL_ERR_PROTO; + } + + return RFAL_ERR_NONE; +} + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerM24LRReadSingleBlock( + uint8_t flags, const uint8_t* uid, uint16_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rcvLen) { + uint8_t data[RFAL_NFCV_BLOCKNUM_M24LR_LEN]; + uint8_t dataLen; + + dataLen = 0; + + /* Compute Request Data */ + data[dataLen++] = + (uint8_t)blockNum; /* Set M24LR Block Number (16 bits) LSB */ + data[dataLen++] = + (uint8_t)(blockNum >> 8U); /* Set M24LR Block Number (16 bits) MSB */ + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_READ_SINGLE_BLOCK, + (flags | (uint8_t)RFAL_NFCV_REQ_FLAG_PROTOCOL_EXT), RFAL_NFCV_PARAM_SKIP, + uid, data, dataLen, rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerM24LRWriteSingleBlock(uint8_t flags, + const uint8_t* uid, + uint16_t blockNum, + const uint8_t* wrData, + uint8_t blockLen) { + uint8_t data[(RFAL_NFCV_BLOCKNUM_M24LR_LEN + RFAL_NFCV_MAX_BLOCK_LEN)]; + uint8_t dataLen; + uint16_t rcvLen; + rfalNfcvGenericRes res; + + /* Check for valid parameters */ + if ((blockLen == 0U) || (blockLen > (uint8_t)RFAL_NFCV_MAX_BLOCK_LEN) || + (wrData == NULL)) { + return RFAL_ERR_PARAM; + } + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = + (uint8_t)blockNum; /* Set M24LR Block Number (16 bits) LSB */ + data[dataLen++] = + (uint8_t)(blockNum >> 8U); /* Set M24LR Block Number (16 bits) MSB */ + RFAL_MEMCPY(&data[dataLen], wrData, + blockLen); /* Append Block data to write */ + dataLen += blockLen; + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_WRITE_SINGLE_BLOCK, + (flags | (uint8_t)RFAL_NFCV_REQ_FLAG_PROTOCOL_EXT), RFAL_NFCV_PARAM_SKIP, + uid, data, dataLen, (uint8_t*)&res, sizeof(rfalNfcvGenericRes), &rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerM24LRReadMultipleBlocks( + uint8_t flags, const uint8_t* uid, uint16_t firstBlockNum, + uint8_t numOfBlocks, uint8_t* rxBuf, uint16_t rxBufLen, uint16_t* rcvLen) { + uint8_t data[(RFAL_NFCV_BLOCKNUM_M24LR_LEN + RFAL_NFCV_BLOCKNUM_M24LR_LEN)]; + uint8_t dataLen; + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = + (uint8_t)firstBlockNum; /* Set M24LR Block Number (16 bits) LSB */ + data[dataLen++] = + (uint8_t)(firstBlockNum >> 8U); /* Set M24LR Block Number (16 bits) MSB */ + data[dataLen++] = numOfBlocks; /* Set number of blocks to read */ + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_READ_MULTIPLE_BLOCKS, + (flags | (uint8_t)RFAL_NFCV_REQ_FLAG_PROTOCOL_EXT), RFAL_NFCV_PARAM_SKIP, + uid, data, dataLen, rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerFastReadSingleBlock(uint8_t flags, + const uint8_t* uid, + uint8_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, + uint16_t* rcvLen) { + uint8_t bn; + + bn = blockNum; + + return rfalNfcvPollerTransceiveReq(RFAL_NFCV_CMD_FAST_READ_SINGLE_BLOCK, + flags, RFAL_NFCV_ST_IC_MFG_CODE, uid, &bn, + sizeof(uint8_t), rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerM24LRFastReadSingleBlock( + uint8_t flags, const uint8_t* uid, uint16_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rcvLen) { + uint8_t data[RFAL_NFCV_BLOCKNUM_M24LR_LEN]; + uint8_t dataLen; + + dataLen = 0; + + /* Compute Request Data */ + data[dataLen++] = + (uint8_t)blockNum; /* Set M24LR Block Number (16 bits) LSB */ + data[dataLen++] = + (uint8_t)(blockNum >> 8U); /* Set M24LR Block Number (16 bits) MSB */ + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_FAST_READ_SINGLE_BLOCK, + (flags | (uint8_t)RFAL_NFCV_REQ_FLAG_PROTOCOL_EXT), + RFAL_NFCV_ST_IC_MFG_CODE, uid, data, dataLen, rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerM24LRFastReadMultipleBlocks( + uint8_t flags, const uint8_t* uid, uint16_t firstBlockNum, + uint8_t numOfBlocks, uint8_t* rxBuf, uint16_t rxBufLen, uint16_t* rcvLen) { + uint8_t data[(RFAL_NFCV_BLOCKNUM_M24LR_LEN + RFAL_NFCV_BLOCKNUM_M24LR_LEN)]; + uint8_t dataLen; + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = + (uint8_t)firstBlockNum; /* Set M24LR Block Number (16 bits) LSB */ + data[dataLen++] = + (uint8_t)(firstBlockNum >> 8U); /* Set M24LR Block Number (16 bits) MSB */ + data[dataLen++] = numOfBlocks; /* Set number of blocks to read */ + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_FAST_READ_MULTIPLE_BLOCKS, + (flags | (uint8_t)RFAL_NFCV_REQ_FLAG_PROTOCOL_EXT), + RFAL_NFCV_ST_IC_MFG_CODE, uid, data, dataLen, rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerFastReadMultipleBlocks( + uint8_t flags, const uint8_t* uid, uint8_t firstBlockNum, + uint8_t numOfBlocks, uint8_t* rxBuf, uint16_t rxBufLen, uint16_t* rcvLen) { + uint8_t data[(RFAL_NFCV_BLOCKNUM_LEN + RFAL_NFCV_BLOCKNUM_LEN)]; + uint8_t dataLen; + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = firstBlockNum; /* Set first Block Number */ + data[dataLen++] = numOfBlocks; /* Set number of blocks to read */ + + return rfalNfcvPollerTransceiveReq(RFAL_NFCV_CMD_FAST_READ_MULTIPLE_BLOCKS, + flags, RFAL_NFCV_ST_IC_MFG_CODE, uid, data, + dataLen, rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerFastExtendedReadSingleBlock( + uint8_t flags, const uint8_t* uid, uint16_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rcvLen) { + uint8_t data[RFAL_NFCV_BLOCKNUM_EXTENDED_LEN]; + uint8_t dataLen; + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = + (uint8_t)blockNum; /* TS T5T 1.0 BNo is considered as a multi-byte field. + TS T5T 1.0 5.1.1.13 multi-byte field follows + [DIGITAL]. [DIGITAL] 9.3.1 A multiple byte field is + transmitted LSB first. */ + data[dataLen++] = (uint8_t)((blockNum >> 8U) & 0xFFU); + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_FAST_EXTENDED_READ_SINGLE_BLOCK, flags, + RFAL_NFCV_ST_IC_MFG_CODE, uid, data, dataLen, rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerFastExtReadMultipleBlocks( + uint8_t flags, const uint8_t* uid, uint16_t firstBlockNum, + uint16_t numOfBlocks, uint8_t* rxBuf, uint16_t rxBufLen, uint16_t* rcvLen) { + uint8_t + data[(RFAL_NFCV_BLOCKNUM_EXTENDED_LEN + RFAL_NFCV_BLOCKNUM_EXTENDED_LEN)]; + uint8_t dataLen; + + dataLen = 0U; + + /* Compute Request Data */ + data[dataLen++] = (uint8_t)((firstBlockNum >> 0U) & 0xFFU); + data[dataLen++] = (uint8_t)((firstBlockNum >> 8U) & 0xFFU); + data[dataLen++] = (uint8_t)((numOfBlocks >> 0U) & 0xFFU); + data[dataLen++] = (uint8_t)((numOfBlocks >> 8U) & 0xFFU); + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_FAST_EXTENDED_READ_MULTIPLE_BLOCKS, flags, + RFAL_NFCV_ST_IC_MFG_CODE, uid, data, dataLen, rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerReadConfiguration(uint8_t flags, const uint8_t* uid, + uint8_t pointer, + uint8_t* regValue) { + return rfalST25xVPollerGenericReadConfiguration( + RFAL_NFCV_CMD_READ_CONFIGURATION, flags, uid, pointer, regValue); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerWriteConfiguration(uint8_t flags, const uint8_t* uid, + uint8_t pointer, + uint8_t regValue) { + return rfalST25xVPollerGenericWriteConfiguration( + RFAL_NFCV_CMD_WRITE_CONFIGURATION, flags, uid, pointer, regValue); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerReadDynamicConfiguration(uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t* regValue) { + return rfalST25xVPollerGenericReadConfiguration( + RFAL_NFCV_CMD_READ_DYN_CONFIGURATION, flags, uid, pointer, regValue); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerWriteDynamicConfiguration(uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t regValue) { + return rfalST25xVPollerGenericWriteConfiguration( + RFAL_NFCV_CMD_WRITE_DYN_CONFIGURATION, flags, uid, pointer, regValue); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerFastReadDynamicConfiguration(uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t* regValue) { + return rfalST25xVPollerGenericReadConfiguration( + RFAL_NFCV_CMD_FAST_READ_DYN_CONFIGURATION, flags, uid, pointer, regValue); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerFastWriteDynamicConfiguration(uint8_t flags, + const uint8_t* uid, + uint8_t pointer, + uint8_t regValue) { + return rfalST25xVPollerGenericWriteConfiguration( + RFAL_NFCV_CMD_FAST_WRITE_DYN_CONFIGURATION, flags, uid, pointer, + regValue); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerPresentPassword(uint8_t flags, const uint8_t* uid, + uint8_t pwdNum, const uint8_t* pwd, + uint8_t pwdLen) { + uint8_t data[RFAL_ST25xV_PWDNUM_LEN + RFAL_ST25xV_PWD_LEN]; + uint8_t dataLen; + uint16_t rcvLen; + rfalNfcvGenericRes res; + + if ((pwdLen > RFAL_ST25xV_PWD_LEN) || (pwd == NULL)) { + return RFAL_ERR_PARAM; + } + + dataLen = 0U; + data[dataLen++] = pwdNum; + if (pwdLen > 0U) { + RFAL_MEMCPY(&data[dataLen], pwd, pwdLen); + } + dataLen += pwdLen; + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_PRESENT_PASSWORD, flags, RFAL_NFCV_ST_IC_MFG_CODE, uid, + data, dataLen, (uint8_t*)&res, sizeof(rfalNfcvGenericRes), &rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerWritePassword(uint8_t flags, const uint8_t* uid, + uint8_t pwdNum, const uint8_t* pwd, + uint8_t pwdLen) { + uint8_t data[RFAL_ST25xV_PWDNUM_LEN + RFAL_ST25xV_PWD_LEN]; + uint8_t dataLen; + uint16_t rcvLen; + rfalNfcvGenericRes res; + + if ((pwdLen > RFAL_ST25xV_PWD_LEN) || (pwd == NULL)) { + return RFAL_ERR_PARAM; + } + + dataLen = 0U; + data[dataLen++] = pwdNum; + if (pwdLen > 0U) { + RFAL_MEMCPY(&data[dataLen], pwd, pwdLen); + } + dataLen += pwdLen; + + return rfalNfcvPollerTransceiveReq( + RFAL_NFCV_CMD_WRITE_PASSWORD, flags, RFAL_NFCV_ST_IC_MFG_CODE, uid, data, + dataLen, (uint8_t*)&res, sizeof(rfalNfcvGenericRes), &rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerGetRandomNumber(uint8_t flags, const uint8_t* uid, + uint8_t* rxBuf, uint16_t rxBufLen, + uint16_t* rcvLen) { + rfalFieldOff(); + platformDelay(RFAL_ST25TV02K_TRF_OFF); + rfalNfcvPollerInitialize(); + rfalFieldOnAndStartGT(); + platformDelay(RFAL_ST25TV02K_TBOOT_RF); + return rfalNfcvPollerTransceiveReq(RFAL_NFCV_CMD_GET_RANDOM_NUMBER, flags, + RFAL_NFCV_ST_IC_MFG_CODE, uid, NULL, 0U, + rxBuf, rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerWriteMessage(uint8_t flags, const uint8_t* uid, + uint8_t msgLen, const uint8_t* msgData, + uint8_t* txBuf, uint16_t txBufLen) { + return rfalST25xVPollerGenericWriteMessage(RFAL_NFCV_CMD_WRITE_MESSAGE, flags, + uid, msgLen, msgData, txBuf, + txBufLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerFastWriteMessage(uint8_t flags, const uint8_t* uid, + uint8_t msgLen, + const uint8_t* msgData, + uint8_t* txBuf, uint16_t txBufLen) { + return rfalST25xVPollerGenericWriteMessage(RFAL_NFCV_CMD_FAST_WRITE_MESSAGE, + flags, uid, msgLen, msgData, txBuf, + txBufLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerReadMessageLength(uint8_t flags, const uint8_t* uid, + uint8_t* msgLen) { + return rfalST25xVPollerGenericReadMessageLength( + RFAL_NFCV_CMD_READ_MESSAGE_LENGTH, flags, uid, msgLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerFastReadMsgLength(uint8_t flags, const uint8_t* uid, + uint8_t* msgLen) { + return rfalST25xVPollerGenericReadMessageLength( + RFAL_NFCV_CMD_FAST_READ_MESSAGE_LENGTH, flags, uid, msgLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerReadMessage(uint8_t flags, const uint8_t* uid, + uint8_t mbPointer, uint8_t numBytes, + uint8_t* rxBuf, uint16_t rxBufLen, + uint16_t* rcvLen) { + return rfalST25xVPollerGenericReadMessage(RFAL_NFCV_CMD_READ_MESSAGE, flags, + uid, mbPointer, numBytes, rxBuf, + rxBufLen, rcvLen); +} + +/*******************************************************************************/ +ReturnCode rfalST25xVPollerFastReadMessage(uint8_t flags, const uint8_t* uid, + uint8_t mbPointer, uint8_t numBytes, + uint8_t* rxBuf, uint16_t rxBufLen, + uint16_t* rcvLen) { + return rfalST25xVPollerGenericReadMessage(RFAL_NFCV_CMD_FAST_READ_MESSAGE, + flags, uid, mbPointer, numBytes, + rxBuf, rxBufLen, rcvLen); +} + +#endif /* RFAL_FEATURE_ST25xV */ diff --git a/core/embed/io/nfc/rfal/source/rfal_t1t.c b/core/embed/io/nfc/rfal/source/rfal_t1t.c new file mode 100644 index 0000000000..60f4048d23 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_t1t.c @@ -0,0 +1,223 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_t1t.c + * + * \author Gustavo Patricio + * + * \brief Provides NFC-A T1T convenience methods and definitions + * + * This module provides an interface to perform as a NFC-A Reader/Writer + * to handle a Type 1 Tag T1T (Topaz) + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_t1t.h" +#include "rfal_utils.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_T1T + */ + +#if RFAL_FEATURE_T1T + +/* + ****************************************************************************** + * GLOBAL DEFINES + ****************************************************************************** + */ + +#define RFAL_T1T_DRD_READ \ + (1236U * 2U) /*!< DRD for Reads with n=9 => 1236/fc ~= 91 us \ + T1T 1.2 4.4.2 */ +#define RFAL_T1T_DRD_WRITE \ + 36052U /*!< DRD for Write with n=281 => 36052/fc ~= 2659 us \ + T1T 1.2 4.4.2 */ +#define RFAL_T1T_DRD_WRITE_E \ + 70996U /*!< DRD for Write/Erase with n=554 => 70996/fc ~= 5236 us \ + T1T 1.2 4.4.2 */ + +#define RFAL_T1T_RID_RES_HR0_VAL \ + 0x10U /*!< HR0 indicating NDEF support Digital 2.0 (Candidate) 11.6.2.1 */ +#define RFAL_T1T_RID_RES_HR0_MASK \ + 0xF0U /*!< HR0 most significant nibble mask \ + */ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! NFC-A T1T (Topaz) RID_REQ Digital 1.1 10.6.1 & Table 49 */ +typedef struct { + uint8_t cmd; /*!< T1T cmd: RID */ + uint8_t add; /*!< ADD: undefined value */ + uint8_t data; /*!< DATA: undefined value */ + uint8_t uid[RFAL_T1T_UID_LEN]; /*!< UID-echo: undefined value */ +} rfalT1TRidReq; + +/*! NFC-A T1T (Topaz) RALL_REQ T1T 1.2 Table 4 */ +typedef struct { + uint8_t cmd; /*!< T1T cmd: RALL */ + uint8_t add1; /*!< ADD: 0x00 */ + uint8_t add0; /*!< ADD: 0x00 */ + uint8_t uid[RFAL_T1T_UID_LEN]; /*!< UID */ +} rfalT1TRallReq; + +/*! NFC-A T1T (Topaz) WRITE_REQ T1T 1.2 Table 4 */ +typedef struct { + uint8_t cmd; /*!< T1T cmd: RALL */ + uint8_t add; /*!< ADD */ + uint8_t data; /*!< DAT */ + uint8_t uid[RFAL_T1T_UID_LEN]; /*!< UID */ +} rfalT1TWriteReq; + +/*! NFC-A T1T (Topaz) WRITE_RES T1T 1.2 Table 4 */ +typedef struct { + uint8_t add; /*!< ADD */ + uint8_t data; /*!< DAT */ +} rfalT1TWriteRes; + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ + +ReturnCode rfalT1TPollerInitialize(void) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR( + ret, rfalSetMode(RFAL_MODE_POLL_NFCA_T1T, RFAL_BR_106, RFAL_BR_106)); + rfalSetErrorHandling(RFAL_ERRORHANDLING_NONE); + + rfalSetGT(RFAL_GT_NONE); /* T1T should only be initialized after NFC-A mode, + therefore the GT has been fulfilled */ + rfalSetFDTListen( + RFAL_FDT_LISTEN_NFCA_POLLER); /* T1T uses NFC-A FDT Listen with n=9 + Digital 1.1 10.7.2 */ + rfalSetFDTPoll(RFAL_FDT_POLL_NFCA_T1T_POLLER); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalT1TPollerRid(rfalT1TRidRes* ridRes) { + ReturnCode ret; + rfalT1TRidReq ridReq; + uint16_t rcvdLen; + + if (ridRes == NULL) { + return RFAL_ERR_PARAM; + } + + /* Compute RID command and set Undefined Values to 0x00 Digital 1.1 10.6.1 + */ + RFAL_MEMSET(&ridReq, 0x00, sizeof(rfalT1TRidReq)); + ridReq.cmd = (uint8_t)RFAL_T1T_CMD_RID; + + RFAL_EXIT_ON_ERR(ret, rfalTransceiveBlockingTxRx( + (uint8_t*)&ridReq, sizeof(rfalT1TRidReq), + (uint8_t*)ridRes, sizeof(rfalT1TRidRes), &rcvdLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_T1T_DRD_READ)); + + /* Check expected RID response length and the HR0 Digital 2.0 + * (Candidate) 11.6.2.1 */ + if ((rcvdLen != sizeof(rfalT1TRidRes)) || + ((ridRes->hr0 & RFAL_T1T_RID_RES_HR0_MASK) != RFAL_T1T_RID_RES_HR0_VAL)) { + return RFAL_ERR_PROTO; + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalT1TPollerRall(const uint8_t* uid, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rxRcvdLen) { + rfalT1TRallReq rallReq; + + if ((rxBuf == NULL) || (uid == NULL) || (rxRcvdLen == NULL)) { + return RFAL_ERR_PARAM; + } + + /* Compute RALL command and set Add to 0x00 */ + RFAL_MEMSET(&rallReq, 0x00, sizeof(rfalT1TRallReq)); + rallReq.cmd = (uint8_t)RFAL_T1T_CMD_RALL; + RFAL_MEMCPY(rallReq.uid, uid, RFAL_T1T_UID_LEN); + + return rfalTransceiveBlockingTxRx((uint8_t*)&rallReq, sizeof(rfalT1TRallReq), + (uint8_t*)rxBuf, rxBufLen, rxRcvdLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_T1T_DRD_READ); +} + +/*******************************************************************************/ +ReturnCode rfalT1TPollerWrite(const uint8_t* uid, uint8_t address, + uint8_t data) { + rfalT1TWriteReq writeReq; + rfalT1TWriteRes writeRes; + uint16_t rxRcvdLen; + ReturnCode err; + + if (uid == NULL) { + return RFAL_ERR_PARAM; + } + + writeReq.cmd = (uint8_t)RFAL_T1T_CMD_WRITE_E; + writeReq.add = address; + writeReq.data = data; + RFAL_MEMCPY(writeReq.uid, uid, RFAL_T1T_UID_LEN); + + err = rfalTransceiveBlockingTxRx((uint8_t*)&writeReq, sizeof(rfalT1TWriteReq), + (uint8_t*)&writeRes, sizeof(rfalT1TWriteRes), + &rxRcvdLen, RFAL_TXRX_FLAGS_DEFAULT, + RFAL_T1T_DRD_WRITE_E); + + if (err == RFAL_ERR_NONE) { + if ((writeReq.add != writeRes.add) || (writeReq.data != writeRes.data) || + (rxRcvdLen != sizeof(rfalT1TWriteRes))) { + return RFAL_ERR_PROTO; + } + } + return err; +} + +#endif /* RFAL_FEATURE_T1T */ diff --git a/core/embed/io/nfc/rfal/source/rfal_t2t.c b/core/embed/io/nfc/rfal/source/rfal_t2t.c new file mode 100644 index 0000000000..b0a51a035a --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_t2t.c @@ -0,0 +1,231 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2018 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_t2t.c + * + * \author + * + * \brief Provides NFC-A T2T convenience methods and definitions + * + * This module provides an interface to perform as a NFC-A Reader/Writer + * to handle a Type 2 Tag T2T + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_t2t.h" +#include "rfal_utils.h" + +/* +****************************************************************************** +* ENABLE SWITCH +****************************************************************************** +*/ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_T2T + */ + +#if RFAL_FEATURE_T2T + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ +#define RFAL_FDT_POLL_READ_MAX \ + rfalConvMsTo1fc(5U) /*!< Maximum Wait time for Read command as defined in TS \ + T2T 1.0 table 18 */ +#define RFAL_FDT_POLL_WRITE_MAX \ + rfalConvMsTo1fc(10U) /*!< Maximum Wait time for Write command as defined in \ + TS T2T 1.0 table 18 */ +#define RFAL_FDT_POLL_SL_MAX \ + rfalConvMsTo1fc(1U) /*!< Maximum Wait time for Sector Select as defined in \ + TS T2T 1.0 table 18 */ +#define RFAL_T2T_ACK_NACK_LEN 1U /*!< Len of NACK in bytes (4 bits) */ +#define RFAL_T2T_ACK 0x0AU /*!< ACK value */ +#define RFAL_T2T_ACK_MASK 0x0FU /*!< ACK value */ + +#define RFAL_T2T_SECTOR_SELECT_P1_BYTE2 \ + 0xFFU /*!< Sector Select Packet 1 byte 2 */ +#define RFAL_T2T_SECTOR_SELECT_P2_RFU_LEN 3U /*!< Sector Select RFU length */ + +/* + ****************************************************************************** + * GLOBAL TYPES + ****************************************************************************** + */ + +/*! NFC-A T2T command set T2T 1.0 5.1 */ +typedef enum { + RFAL_T2T_CMD_READ = 0x30, /*!< T2T Read */ + RFAL_T2T_CMD_WRITE = 0xA2, /*!< T2T Write */ + RFAL_T2T_CMD_SECTOR_SELECT = 0xC2 /*!< T2T Sector Select */ +} rfalT2Tcmds; + +/*! NFC-A T2T READ T2T 1.0 5.2 and table 11 */ +typedef struct { + uint8_t code; /*!< Command code */ + uint8_t blNo; /*!< Block number */ +} rfalT2TReadReq; + +/*! NFC-A T2T WRITE T2T 1.0 5.3 and table 12 */ +typedef struct { + uint8_t code; /*!< Command code */ + uint8_t blNo; /*!< Block number */ + uint8_t data[RFAL_T2T_WRITE_DATA_LEN]; /*!< Data */ +} rfalT2TWriteReq; + +/*! NFC-A T2T SECTOR SELECT Packet 1 T2T 1.0 5.4 and table 13 */ +typedef struct { + uint8_t code; /*!< Command code */ + uint8_t byte2; /*!< Sector Select Packet 1 byte 2 */ +} rfalT2TSectorSelectP1Req; + +/*! NFC-A T2T SECTOR SELECT Packet 2 T2T 1.0 5.4 and table 13 */ +typedef struct { + uint8_t secNo; /*!< Block number */ + uint8_t + rfu[RFAL_T2T_SECTOR_SELECT_P2_RFU_LEN]; /*!< Sector Select Packet RFU */ +} rfalT2TSectorSelectP2Req; + +/* + ****************************************************************************** + * GLOBAL FUNCTIONS + ****************************************************************************** + */ + +ReturnCode rfalT2TPollerRead(uint8_t blockNum, uint8_t* rxBuf, + uint16_t rxBufLen, uint16_t* rcvLen) { + ReturnCode ret; + rfalT2TReadReq req; + + if ((rxBuf == NULL) || (rcvLen == NULL)) { + return RFAL_ERR_PARAM; + } + + req.code = (uint8_t)RFAL_T2T_CMD_READ; + req.blNo = blockNum; + + /* Transceive Command */ + ret = rfalTransceiveBlockingTxRx( + (uint8_t*)&req, sizeof(rfalT2TReadReq), rxBuf, rxBufLen, rcvLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_FDT_POLL_READ_MAX); + + /* T2T 1.0 5.2.1.7 The Reader/Writer SHALL treat a NACK in response to a READ + * Command as a Protocol Error */ + if ((ret == RFAL_ERR_INCOMPLETE_BYTE) && (*rcvLen == RFAL_T2T_ACK_NACK_LEN) && + ((*rxBuf & RFAL_T2T_ACK_MASK) != RFAL_T2T_ACK)) { + return RFAL_ERR_PROTO; + } + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalT2TPollerWrite(uint8_t blockNum, const uint8_t* wrData) { + ReturnCode ret; + rfalT2TWriteReq req; + uint8_t res; + uint16_t rxLen; + + req.code = (uint8_t)RFAL_T2T_CMD_WRITE; + req.blNo = blockNum; + RFAL_MEMCPY(req.data, wrData, RFAL_T2T_WRITE_DATA_LEN); + + /* Transceive WRITE Command */ + ret = rfalTransceiveBlockingTxRx( + (uint8_t*)&req, sizeof(rfalT2TWriteReq), &res, sizeof(uint8_t), &rxLen, + RFAL_TXRX_FLAGS_DEFAULT, RFAL_FDT_POLL_WRITE_MAX); + + /* Check for a valid ACK */ + if ((ret == RFAL_ERR_INCOMPLETE_BYTE) || (ret == RFAL_ERR_NONE)) { + ret = RFAL_ERR_PROTO; + + if ((rxLen == RFAL_T2T_ACK_NACK_LEN) && + ((res & RFAL_T2T_ACK_MASK) == RFAL_T2T_ACK)) { + ret = RFAL_ERR_NONE; + } + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalT2TPollerSectorSelect(uint8_t sectorNum) { + rfalT2TSectorSelectP1Req p1Req; + rfalT2TSectorSelectP2Req p2Req; + ReturnCode ret; + uint8_t res; + uint16_t rxLen; + + /* Compute SECTOR SELECT Packet 1 */ + p1Req.code = (uint8_t)RFAL_T2T_CMD_SECTOR_SELECT; + p1Req.byte2 = RFAL_T2T_SECTOR_SELECT_P1_BYTE2; + + /* Transceive SECTOR SELECT Packet 1 */ + ret = rfalTransceiveBlockingTxRx( + (uint8_t*)&p1Req, sizeof(rfalT2TSectorSelectP1Req), &res, sizeof(uint8_t), + &rxLen, RFAL_TXRX_FLAGS_DEFAULT, RFAL_FDT_POLL_SL_MAX); + + /* Check and report any transmission error */ + if ((ret != RFAL_ERR_INCOMPLETE_BYTE) && (ret != RFAL_ERR_NONE)) { + return ret; + } + + /* Ensure that an ACK was received */ + if ((ret != RFAL_ERR_INCOMPLETE_BYTE) || (rxLen != RFAL_T2T_ACK_NACK_LEN) || + ((res & RFAL_T2T_ACK_MASK) != RFAL_T2T_ACK)) { + return RFAL_ERR_PROTO; + } + + /* Compute SECTOR SELECT Packet 2 */ + p2Req.secNo = sectorNum; + RFAL_MEMSET(&p2Req.rfu, 0x00, RFAL_T2T_SECTOR_SELECT_P2_RFU_LEN); + + /* Transceive SECTOR SELECT Packet 2 */ + ret = rfalTransceiveBlockingTxRx( + (uint8_t*)&p2Req, sizeof(rfalT2TSectorSelectP2Req), &res, sizeof(uint8_t), + &rxLen, RFAL_TXRX_FLAGS_DEFAULT, RFAL_FDT_POLL_SL_MAX); + + /* T2T 1.0 5.4.1.14 The Reader/Writer SHALL treat any response received before + * the end of PATT2T,SL,MAX as a Protocol Error */ + if ((ret == RFAL_ERR_NONE) || (ret == RFAL_ERR_INCOMPLETE_BYTE)) { + return RFAL_ERR_PROTO; + } + + /* T2T 1.0 5.4.1.13 The Reader/Writer SHALL treat the transmission of the + * SECTOR SELECT Command Packet 2 as being successful when it receives no + * response until PATT2T,SL,MAX. */ + if (ret == RFAL_ERR_TIMEOUT) { + return RFAL_ERR_NONE; + } + + return ret; +} + +#endif /* RFAL_FEATURE_T2T */ diff --git a/core/embed/io/nfc/rfal/source/rfal_t4t.c b/core/embed/io/nfc/rfal/source/rfal_t4t.c new file mode 100644 index 0000000000..76a9c8bf25 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/rfal_t4t.c @@ -0,0 +1,417 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2018 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_t4t.h + * + * \author Gustavo Patricio + * + * \brief Provides convenience methods and definitions for T4T (ISO7816-4) + * + * This module provides an interface to exchange T4T APDUs according to + * NFC Forum T4T and ISO7816-4 + * + * This implementation was based on the following specs: + * - ISO/IEC 7816-4 3rd Edition 2013-04-15 + * - NFC Forum T4T Technical Specification 1.0 2017-08-28 + * + */ + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_t4t.h" +#include "rfal_utils.h" + +/* +****************************************************************************** +* ENABLE SWITCH +****************************************************************************** +*/ + +/* Feature switch may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_T4T + */ + +#if RFAL_FEATURE_T4T + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ +#define RFAL_T4T_OFFSET_DO \ + 0x54U /*!< Tag value for offset BER-TLV data object */ +#define RFAL_T4T_LENGTH_DO \ + 0x03U /*!< Len value for offset BER-TLV data object */ +#define RFAL_T4T_DATA_DO \ + 0x53U /*!< Tag value for data BER-TLV data object */ + +#define RFAL_T4T_MAX_LC \ + 255U /*!< Maximum Lc value for short Lc coding */ + /* + ****************************************************************************** + * GLOBAL TYPES + ****************************************************************************** + */ + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ + +/* + ****************************************************************************** + * LOCAL VARIABLES + ****************************************************************************** + */ + +/* + ****************************************************************************** + * GLOBAL FUNCTIONS + ****************************************************************************** + */ + +/*******************************************************************************/ +ReturnCode rfalT4TPollerComposeCAPDU(const rfalT4tCApduParam *apduParam) { + uint8_t hdrLen; + uint16_t msgIt; + + if ((apduParam == NULL) || (apduParam->cApduBuf == NULL) || + (apduParam->cApduLen == NULL)) { + return RFAL_ERR_PARAM; + } + + msgIt = 0; + *(apduParam->cApduLen) = 0; + + /*******************************************************************************/ + /* Compute Command-APDU according to the format T4T 1.0 5.1.2 & ISO7816-4 + * 2013 Table 1 */ + + /* Check if Data is present */ + if (apduParam->LcFlag) { + if (apduParam->Lc == 0U) { + /* Extented field coding not supported */ + return RFAL_ERR_PARAM; + } + + /* Check whether requested Lc fits */ + if ((uint16_t)apduParam->Lc > + (uint16_t)(RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN - RFAL_T4T_LE_LEN)) { + return RFAL_ERR_PARAM; /* PRQA S 2880 # MISRA 2.1 - Unreachable code due + to configuration option being set/unset */ + } + + /* Calculate the header length a place the data/body where it should be */ + hdrLen = RFAL_T4T_MAX_CAPDU_PROLOGUE_LEN + RFAL_T4T_LC_LEN; + + /* make sure not to exceed buffer size */ + if (((uint16_t)hdrLen + (uint16_t)apduParam->Lc + + (apduParam->LeFlag ? RFAL_T4T_LC_LEN : 0U)) > + RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN) { + return RFAL_ERR_NOMEM; /* PRQA S 2880 # MISRA 2.1 - Unreachable code due + to configuration option being set/unset */ + } + RFAL_MEMMOVE(&apduParam->cApduBuf->apdu[hdrLen], apduParam->cApduBuf->apdu, + apduParam->Lc); + } + + /* Prepend the ADPDU's header */ + apduParam->cApduBuf->apdu[msgIt++] = apduParam->CLA; + apduParam->cApduBuf->apdu[msgIt++] = apduParam->INS; + apduParam->cApduBuf->apdu[msgIt++] = apduParam->P1; + apduParam->cApduBuf->apdu[msgIt++] = apduParam->P2; + + /* Check if Data field length is to be added */ + if (apduParam->LcFlag) { + apduParam->cApduBuf->apdu[msgIt++] = apduParam->Lc; + msgIt += apduParam->Lc; + } + + /* Check if Expected Response Length is to be added */ + if (apduParam->LeFlag) { + apduParam->cApduBuf->apdu[msgIt++] = apduParam->Le; + } + + *(apduParam->cApduLen) = msgIt; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalT4TPollerParseRAPDU(rfalT4tRApduParam *apduParam) { + if ((apduParam == NULL) || (apduParam->rApduBuf == NULL)) { + return RFAL_ERR_PARAM; + } + + if (apduParam->rcvdLen < RFAL_T4T_MAX_RAPDU_SW1SW2_LEN) { + return RFAL_ERR_PROTO; + } + + apduParam->rApduBodyLen = + (apduParam->rcvdLen - (uint16_t)RFAL_T4T_MAX_RAPDU_SW1SW2_LEN); + apduParam->statusWord = + RFAL_GETU16(&apduParam->rApduBuf->apdu[apduParam->rApduBodyLen]); + + /* Check SW1 SW2 T4T 1.0 5.1.3 NOTE */ + if (apduParam->statusWord == RFAL_T4T_ISO7816_STATUS_COMPLETE) { + return RFAL_ERR_NONE; + } + + return RFAL_ERR_REQUEST; +} + +/*******************************************************************************/ +ReturnCode rfalT4TPollerComposeSelectAppl(rfalIsoDepApduBufFormat *cApduBuf, + const uint8_t *aid, uint8_t aidLen, + uint16_t *cApduLen) { + rfalT4tCApduParam cAPDU; + + if (cApduBuf == NULL) { + return RFAL_ERR_PARAM; + } + + /* CLA INS P1 P2 Lc Data Le */ + /* 00h A4h 00h 00h 07h AID 00h */ + cAPDU.CLA = RFAL_T4T_CLA; + cAPDU.INS = (uint8_t)RFAL_T4T_INS_SELECT; + cAPDU.P1 = RFAL_T4T_ISO7816_P1_SELECT_BY_DF_NAME; + cAPDU.P2 = RFAL_T4T_ISO7816_P2_SELECT_FIRST_OR_ONLY_OCCURENCE | + RFAL_T4T_ISO7816_P2_SELECT_RETURN_FCI_TEMPLATE; + cAPDU.Lc = aidLen; + cAPDU.Le = 0x00; + cAPDU.LcFlag = true; + cAPDU.LeFlag = true; + cAPDU.cApduBuf = cApduBuf; + cAPDU.cApduLen = cApduLen; + + if ((aid != NULL) && (aidLen > 0U)) { + RFAL_MEMCPY(cAPDU.cApduBuf->apdu, aid, aidLen); + } + + return rfalT4TPollerComposeCAPDU(&cAPDU); +} + +/*******************************************************************************/ +ReturnCode rfalT4TPollerComposeSelectFile(rfalIsoDepApduBufFormat *cApduBuf, + const uint8_t *fid, uint8_t fidLen, + uint16_t *cApduLen) { + rfalT4tCApduParam cAPDU; + + if (cApduBuf == NULL) { + return RFAL_ERR_PARAM; + } + + /* CLA INS P1 P2 Lc Data Le */ + /* 00h A4h 00h 0Ch 02h FID - */ + cAPDU.CLA = RFAL_T4T_CLA; + cAPDU.INS = (uint8_t)RFAL_T4T_INS_SELECT; + cAPDU.P1 = RFAL_T4T_ISO7816_P1_SELECT_BY_FILEID; + cAPDU.P2 = RFAL_T4T_ISO7816_P2_SELECT_FIRST_OR_ONLY_OCCURENCE | + RFAL_T4T_ISO7816_P2_SELECT_NO_RESPONSE_DATA; + cAPDU.Lc = fidLen; + cAPDU.Le = 0x00; + cAPDU.LcFlag = true; + cAPDU.LeFlag = false; + cAPDU.cApduBuf = cApduBuf; + cAPDU.cApduLen = cApduLen; + + if ((fid != NULL) && (fidLen > 0U)) { + RFAL_MEMCPY(cAPDU.cApduBuf->apdu, fid, fidLen); + } + + return rfalT4TPollerComposeCAPDU(&cAPDU); +} + +/*******************************************************************************/ +ReturnCode rfalT4TPollerComposeSelectFileV1Mapping( + rfalIsoDepApduBufFormat *cApduBuf, const uint8_t *fid, uint8_t fidLen, + uint16_t *cApduLen) { + rfalT4tCApduParam cAPDU; + + if (cApduBuf == NULL) { + return RFAL_ERR_PARAM; + } + + /* CLA INS P1 P2 Lc Data Le */ + /* 00h A4h 00h 00h 02h FID - */ + cAPDU.CLA = RFAL_T4T_CLA; + cAPDU.INS = (uint8_t)RFAL_T4T_INS_SELECT; + cAPDU.P1 = RFAL_T4T_ISO7816_P1_SELECT_BY_FILEID; + cAPDU.P2 = RFAL_T4T_ISO7816_P2_SELECT_FIRST_OR_ONLY_OCCURENCE | + RFAL_T4T_ISO7816_P2_SELECT_RETURN_FCI_TEMPLATE; + cAPDU.Lc = fidLen; + cAPDU.Le = 0x00; + cAPDU.LcFlag = true; + cAPDU.LeFlag = false; + cAPDU.cApduBuf = cApduBuf; + cAPDU.cApduLen = cApduLen; + + if ((fid != NULL) && (fidLen > 0U)) { + RFAL_MEMCPY(cAPDU.cApduBuf->apdu, fid, fidLen); + } + + return rfalT4TPollerComposeCAPDU(&cAPDU); +} + +/*******************************************************************************/ +ReturnCode rfalT4TPollerComposeReadData(rfalIsoDepApduBufFormat *cApduBuf, + uint16_t offset, uint8_t expLen, + uint16_t *cApduLen) { + rfalT4tCApduParam cAPDU; + + RFAL_MEMSET(&cAPDU, 0x00, sizeof(rfalT4tCApduParam)); + + /* CLA INS P1 P2 Lc Data Le */ + /* 00h B0h [Offset] - - len */ + cAPDU.CLA = RFAL_T4T_CLA; + cAPDU.INS = (uint8_t)RFAL_T4T_INS_READBINARY; + cAPDU.P1 = (uint8_t)((offset >> 8U) & 0xFFU); + cAPDU.P2 = (uint8_t)((offset >> 0U) & 0xFFU); + cAPDU.Le = expLen; + cAPDU.LcFlag = false; + cAPDU.LeFlag = true; + cAPDU.cApduBuf = cApduBuf; + cAPDU.cApduLen = cApduLen; + + return rfalT4TPollerComposeCAPDU(&cAPDU); +} + +/*******************************************************************************/ +ReturnCode rfalT4TPollerComposeReadDataODO(rfalIsoDepApduBufFormat *cApduBuf, + uint32_t offset, uint8_t expLen, + uint16_t *cApduLen) { + rfalT4tCApduParam cAPDU; + uint8_t dataIt; + + /* CLA INS P1 P2 Lc Data Le */ + /* 00h B1h 00h 00h Lc 54 03 xxyyzz len */ + /* [Offset] */ + cAPDU.CLA = RFAL_T4T_CLA; + cAPDU.INS = (uint8_t)RFAL_T4T_INS_READBINARY_ODO; + cAPDU.P1 = 0x00U; + cAPDU.P2 = 0x00U; + cAPDU.Le = expLen; + cAPDU.LcFlag = true; + cAPDU.LeFlag = true; + cAPDU.cApduBuf = cApduBuf; + cAPDU.cApduLen = cApduLen; + + dataIt = 0U; + cApduBuf->apdu[dataIt++] = RFAL_T4T_OFFSET_DO; + cApduBuf->apdu[dataIt++] = RFAL_T4T_LENGTH_DO; + cApduBuf->apdu[dataIt++] = (uint8_t)(offset >> 16U); + cApduBuf->apdu[dataIt++] = (uint8_t)(offset >> 8U); + cApduBuf->apdu[dataIt++] = (uint8_t)(offset); + cAPDU.Lc = dataIt; + + return rfalT4TPollerComposeCAPDU(&cAPDU); +} + +/*******************************************************************************/ +ReturnCode rfalT4TPollerComposeWriteData(rfalIsoDepApduBufFormat *cApduBuf, + uint16_t offset, const uint8_t *data, + uint8_t dataLen, uint16_t *cApduLen) { + rfalT4tCApduParam cAPDU; + + if (cApduBuf == NULL) { + return RFAL_ERR_PARAM; + } + + RFAL_MEMSET(&cAPDU, 0x00, sizeof(rfalT4tCApduParam)); + + /* CLA INS P1 P2 Lc Data Le */ + /* 00h D6h [Offset] len Data - */ + cAPDU.CLA = RFAL_T4T_CLA; + cAPDU.INS = (uint8_t)RFAL_T4T_INS_UPDATEBINARY; + cAPDU.P1 = (uint8_t)((offset >> 8U) & 0xFFU); + cAPDU.P2 = (uint8_t)((offset >> 0U) & 0xFFU); + cAPDU.Lc = dataLen; + cAPDU.LcFlag = true; + cAPDU.LeFlag = false; + cAPDU.cApduBuf = cApduBuf; + cAPDU.cApduLen = cApduLen; + + if ((data != NULL) && (dataLen > 0U)) { + RFAL_MEMCPY(cAPDU.cApduBuf->apdu, data, dataLen); + } + + return rfalT4TPollerComposeCAPDU(&cAPDU); +} + +/*******************************************************************************/ +ReturnCode rfalT4TPollerComposeWriteDataODO(rfalIsoDepApduBufFormat *cApduBuf, + uint32_t offset, + const uint8_t *data, + uint8_t dataLen, + uint16_t *cApduLen) { + rfalT4tCApduParam cAPDU; + uint8_t dataIt; + + if (cApduBuf == NULL) { + return RFAL_ERR_PARAM; + } + + RFAL_MEMSET(&cAPDU, 0x00, sizeof(rfalT4tCApduParam)); + + /* CLA INS P1 P2 Lc Data Le */ + /* 00h D7h 00h 00h len 54 03 xxyyzz 53 Ld data - */ + /* [offset] [data] */ + cAPDU.CLA = RFAL_T4T_CLA; + cAPDU.INS = (uint8_t)RFAL_T4T_INS_UPDATEBINARY_ODO; + cAPDU.P1 = 0x00U; + cAPDU.P2 = 0x00U; + cAPDU.LcFlag = true; + cAPDU.LeFlag = false; + cAPDU.cApduBuf = cApduBuf; + cAPDU.cApduLen = cApduLen; + + dataIt = 0U; + cApduBuf->apdu[dataIt++] = RFAL_T4T_OFFSET_DO; + cApduBuf->apdu[dataIt++] = RFAL_T4T_LENGTH_DO; + cApduBuf->apdu[dataIt++] = (uint8_t)(offset >> 16U); + cApduBuf->apdu[dataIt++] = (uint8_t)(offset >> 8U); + cApduBuf->apdu[dataIt++] = (uint8_t)(offset); + cApduBuf->apdu[dataIt++] = RFAL_T4T_DATA_DO; + cApduBuf->apdu[dataIt++] = dataLen; + + if ((((uint32_t)dataLen + (uint32_t)dataIt) >= RFAL_T4T_MAX_LC) || + (((uint32_t)dataLen + (uint32_t)dataIt) >= + RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN)) { + return (RFAL_ERR_NOMEM); + } + + if ((data != NULL) && (dataLen > 0U)) { + RFAL_MEMCPY(&cAPDU.cApduBuf->apdu[dataIt], data, dataLen); + } + dataIt += dataLen; + cAPDU.Lc = dataIt; + + return rfalT4TPollerComposeCAPDU(&cAPDU); +} + +#endif /* RFAL_FEATURE_T4T */ diff --git a/core/embed/io/nfc/rfal/source/st25r3916/rfal_analogConfigTbl.h b/core/embed/io/nfc/rfal/source/st25r3916/rfal_analogConfigTbl.h new file mode 100644 index 0000000000..de998a9c54 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/rfal_analogConfigTbl.h @@ -0,0 +1,1656 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file rfal_analogConfig.h + * + * \author + * + * \brief ST25R3916 Analog Configuration Settings + * + */ + +#ifndef ST25R3916_ANALOGCONFIG_H +#define ST25R3916_ANALOGCONFIG_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_analogConfig.h" +#include "st25r3916_com.h" + +/* + ****************************************************************************** + * DEFINES + ****************************************************************************** + */ + +/* + ****************************************************************************** + * GLOBAL MACROS + ****************************************************************************** + */ + +/*! Macro for Configuration Setting with only one register-mask-value set: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1] */ +#define MODE_ENTRY_1_REG(MODE, R0, M0, V0) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 1, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0) + +/*! Macro for Configuration Setting with only two register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1] */ +#define MODE_ENTRY_2_REG(MODE, R0, M0, V0, R1, M1, V1) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 2, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1) + +/*! Macro for Configuration Setting with only three register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_3_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 3, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8U), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2) + +/*! Macro for Configuration Setting with only four register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_4_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, V3) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 4, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8U), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8U), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3) + +/*! Macro for Configuration Setting with only five register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_5_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, V3, \ + R4, M4, V4) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 5, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8U), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8U), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8U), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4) + +/*! Macro for Configuration Setting with only six register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_6_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, V3, \ + R4, M4, V4, R5, M5, V5) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 6, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8U), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8U), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8U), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8U), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5) + +/*! Macro for Configuration Setting with only seven register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_7_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, V3, \ + R4, M4, V4, R5, M5, V5, R6, M6, V6) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 7, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8U), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8U), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8U), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8U), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8U), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6) + +/*! Macro for Configuration Setting with only eight register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_8_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, V3, \ + R4, M4, V4, R5, M5, V5, R6, M6, V6, R7, M7, V7) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 8, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8U), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8U), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8U), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8U), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8U), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8U), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7) + +/*! Macro for Configuration Setting with only nine register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_9_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, V3, \ + R4, M4, V4, R5, M5, V5, R6, M6, V6, R7, M7, V7, R8, \ + M8, V8) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 9, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8U), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8U), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8U), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8U), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8U), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8U), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8U), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8) + +/*! Macro for Configuration Setting with only ten register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_10_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, \ + V3, R4, M4, V4, R5, M5, V5, R6, M6, V6, R7, M7, V7, \ + R8, M8, V8, R9, M9, V9) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 10, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8U), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8U), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8U), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8U), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8U), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8U), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8U), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8U), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9) + +/*! Macro for Configuration Setting with eleven register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_11_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, \ + V3, R4, M4, V4, R5, M5, V5, R6, M6, V6, R7, M7, V7, \ + R8, M8, V8, R9, M9, V9, R10, M10, V10) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 11, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8U), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8U), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8U), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8U), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8U), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8U), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8U), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8U), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8U), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10) + +/*! Macro for Configuration Setting with twelve register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_12_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, \ + V3, R4, M4, V4, R5, M5, V5, R6, M6, V6, R7, M7, V7, \ + R8, M8, V8, R9, M9, V9, R10, M10, V10, R11, M11, \ + V11) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 12, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8U), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8U), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8U), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8U), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8U), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8U), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8U), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8U), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8U), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10), \ + (uint8_t)((uint16_t)(R11) >> 8U), (uint8_t)((R11) & 0xFFU), \ + (uint8_t)(M11), (uint8_t)(V11) + +/*! Macro for Configuration Setting with thirteen register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_13_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, \ + V3, R4, M4, V4, R5, M5, V5, R6, M6, V6, R7, M7, V7, \ + R8, M8, V8, R9, M9, V9, R10, M10, V10, R11, M11, \ + V11, R12, M12, V12) \ + (uint8_t)((uint16_t)(MODE) >> 8U), (uint8_t)((MODE) & 0xFFU), 13, \ + (uint8_t)((uint16_t)(R0) >> 8U), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8U), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8U), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8U), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8U), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8U), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8U), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8U), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8U), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8U), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8U), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10), \ + (uint8_t)((uint16_t)(R11) >> 8U), (uint8_t)((R11) & 0xFFU), \ + (uint8_t)(M11), (uint8_t)(V11), (uint8_t)((uint16_t)(R12) >> 8U), \ + (uint8_t)((R12) & 0xFFU), (uint8_t)(M12), (uint8_t)(V12) + +/*! Macro for Configuration Setting with fourteen register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_14_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, \ + V3, R4, M4, V4, R5, M5, V5, R6, M6, V6, R7, M7, V7, \ + R8, M8, V8, R9, M9, V9, R10, M10, V10, R11, M11, \ + V11, R12, M12, V12, R13, M13, V13) \ + (uint8_t)((uint16_t)(MODE) >> 8), (uint8_t)((MODE) & 0xFFU), 14, \ + (uint8_t)((uint16_t)(R0) >> 8), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10), \ + (uint8_t)((uint16_t)(R11) >> 8), (uint8_t)((R11) & 0xFFU), \ + (uint8_t)(M11), (uint8_t)(V11), (uint8_t)((uint16_t)(R12) >> 8), \ + (uint8_t)((R12) & 0xFFU), (uint8_t)(M12), (uint8_t)(V12), \ + (uint8_t)((uint16_t)(R13) >> 8), (uint8_t)((R13) & 0xFFU), \ + (uint8_t)(M13), (uint8_t)(V13) + +/*! Macro for Configuration Setting with fifteen register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_15_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, \ + V3, R4, M4, V4, R5, M5, V5, R6, M6, V6, R7, M7, V7, \ + R8, M8, V8, R9, M9, V9, R10, M10, V10, R11, M11, \ + V11, R12, M12, V12, R13, M13, V13, R14, M14, V14) \ + (uint8_t)((uint16_t)(MODE) >> 8), (uint8_t)((MODE) & 0xFFU), 15, \ + (uint8_t)((uint16_t)(R0) >> 8), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10), \ + (uint8_t)((uint16_t)(R11) >> 8), (uint8_t)((R11) & 0xFFU), \ + (uint8_t)(M11), (uint8_t)(V11), (uint8_t)((uint16_t)(R12) >> 8), \ + (uint8_t)((R12) & 0xFFU), (uint8_t)(M12), (uint8_t)(V12), \ + (uint8_t)((uint16_t)(R13) >> 8), (uint8_t)((R13) & 0xFFU), \ + (uint8_t)(M13), (uint8_t)(V13), (uint8_t)((uint16_t)(R14) >> 8), \ + (uint8_t)((R14) & 0xFFU), (uint8_t)(M14), (uint8_t)(V14) + +/*! Macro for Configuration Setting with sixteen register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_16_REG( \ + MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, V3, R4, M4, V4, R5, M5, \ + V5, R6, M6, V6, R7, M7, V7, R8, M8, V8, R9, M9, V9, R10, M10, V10, R11, \ + M11, V11, R12, M12, V12, R13, M13, V13, R14, M14, V14, R15, M15, V15) \ + (uint8_t)((uint16_t)(MODE) >> 8), (uint8_t)((MODE) & 0xFFU), 16, \ + (uint8_t)((uint16_t)(R0) >> 8), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10), \ + (uint8_t)((uint16_t)(R11) >> 8), (uint8_t)((R11) & 0xFFU), \ + (uint8_t)(M11), (uint8_t)(V11), (uint8_t)((uint16_t)(R12) >> 8), \ + (uint8_t)((R12) & 0xFFU), (uint8_t)(M12), (uint8_t)(V12), \ + (uint8_t)((uint16_t)(R13) >> 8), (uint8_t)((R13) & 0xFFU), \ + (uint8_t)(M13), (uint8_t)(V13), (uint8_t)((uint16_t)(R14) >> 8), \ + (uint8_t)((R14) & 0xFFU), (uint8_t)(M14), (uint8_t)(V14), \ + (uint8_t)((uint16_t)(R15) >> 8), (uint8_t)((R15) & 0xFFU), \ + (uint8_t)(M15), (uint8_t)(V15) + +/*! Macro for Configuration Setting with seventeen register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_17_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, \ + V3, R4, M4, V4, R5, M5, V5, R6, M6, V6, R7, M7, V7, \ + R8, M8, V8, R9, M9, V9, R10, M10, V10, R11, M11, \ + V11, R12, M12, V12, R13, M13, V13, R14, M14, V14, \ + R15, M15, V15, R16, M16, V16) \ + (uint8_t)((uint16_t)(MODE) >> 8), (uint8_t)((MODE) & 0xFFU), 17, \ + (uint8_t)((uint16_t)(R0) >> 8), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10), \ + (uint8_t)((uint16_t)(R11) >> 8), (uint8_t)((R11) & 0xFFU), \ + (uint8_t)(M11), (uint8_t)(V11), (uint8_t)((uint16_t)(R12) >> 8), \ + (uint8_t)((R12) & 0xFFU), (uint8_t)(M12), (uint8_t)(V12), \ + (uint8_t)((uint16_t)(R13) >> 8), (uint8_t)((R13) & 0xFFU), \ + (uint8_t)(M13), (uint8_t)(V13), (uint8_t)((uint16_t)(R14) >> 8), \ + (uint8_t)((R14) & 0xFFU), (uint8_t)(M14), (uint8_t)(V14), \ + (uint8_t)((uint16_t)(R15) >> 8), (uint8_t)((R15) & 0xFFU), \ + (uint8_t)(M15), (uint8_t)(V15), (uint8_t)((uint16_t)(R16) >> 8), \ + (uint8_t)((R16) & 0xFFU), (uint8_t)(M16), (uint8_t)(V16) + +/*! Macro for Configuration Setting with seventeen register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_18_REG(MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, \ + V3, R4, M4, V4, R5, M5, V5, R6, M6, V6, R7, M7, V7, \ + R8, M8, V8, R9, M9, V9, R10, M10, V10, R11, M11, \ + V11, R12, M12, V12, R13, M13, V13, R14, M14, V14, \ + R15, M15, V15, R16, M16, V16, R17, M17, V17) \ + (uint8_t)((uint16_t)(MODE) >> 8), (uint8_t)((MODE) & 0xFFU), 18, \ + (uint8_t)((uint16_t)(R0) >> 8), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10), \ + (uint8_t)((uint16_t)(R11) >> 8), (uint8_t)((R11) & 0xFFU), \ + (uint8_t)(M11), (uint8_t)(V11), (uint8_t)((uint16_t)(R12) >> 8), \ + (uint8_t)((R12) & 0xFFU), (uint8_t)(M12), (uint8_t)(V12), \ + (uint8_t)((uint16_t)(R13) >> 8), (uint8_t)((R13) & 0xFFU), \ + (uint8_t)(M13), (uint8_t)(V13), (uint8_t)((uint16_t)(R14) >> 8), \ + (uint8_t)((R14) & 0xFFU), (uint8_t)(M14), (uint8_t)(V14), \ + (uint8_t)((uint16_t)(R15) >> 8), (uint8_t)((R15) & 0xFFU), \ + (uint8_t)(M15), (uint8_t)(V15), (uint8_t)((uint16_t)(R16) >> 8), \ + (uint8_t)((R16) & 0xFFU), (uint8_t)(M16), (uint8_t)(V16), \ + (uint8_t)((uint16_t)(R17) >> 8), (uint8_t)((R17) & 0xFFU), \ + (uint8_t)(M17), (uint8_t)(V17) + +/*! Macro for Configuration Setting with seventeen register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_19_REG( \ + MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, V3, R4, M4, V4, R5, M5, \ + V5, R6, M6, V6, R7, M7, V7, R8, M8, V8, R9, M9, V9, R10, M10, V10, R11, \ + M11, V11, R12, M12, V12, R13, M13, V13, R14, M14, V14, R15, M15, V15, R16, \ + M16, V16, R17, M17, V17, R18, M18, V18) \ + (uint8_t)((uint16_t)(MODE) >> 8), (uint8_t)((MODE) & 0xFFU), 19, \ + (uint8_t)((uint16_t)(R0) >> 8), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10), \ + (uint8_t)((uint16_t)(R11) >> 8), (uint8_t)((R11) & 0xFFU), \ + (uint8_t)(M11), (uint8_t)(V11), (uint8_t)((uint16_t)(R12) >> 8), \ + (uint8_t)((R12) & 0xFFU), (uint8_t)(M12), (uint8_t)(V12), \ + (uint8_t)((uint16_t)(R13) >> 8), (uint8_t)((R13) & 0xFFU), \ + (uint8_t)(M13), (uint8_t)(V13), (uint8_t)((uint16_t)(R14) >> 8), \ + (uint8_t)((R14) & 0xFFU), (uint8_t)(M14), (uint8_t)(V14), \ + (uint8_t)((uint16_t)(R15) >> 8), (uint8_t)((R15) & 0xFFU), \ + (uint8_t)(M15), (uint8_t)(V15), (uint8_t)((uint16_t)(R16) >> 8), \ + (uint8_t)((R16) & 0xFFU), (uint8_t)(M16), (uint8_t)(V16), \ + (uint8_t)((uint16_t)(R17) >> 8), (uint8_t)((R17) & 0xFFU), \ + (uint8_t)(M17), (uint8_t)(V17), (uint8_t)((uint16_t)(R18) >> 8), \ + (uint8_t)((R18) & 0xFFU), (uint8_t)(M18), (uint8_t)(V18) + +/*! Macro for Configuration Setting with seventeen register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_20_REG( \ + MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, V3, R4, M4, V4, R5, M5, \ + V5, R6, M6, V6, R7, M7, V7, R8, M8, V8, R9, M9, V9, R10, M10, V10, R11, \ + M11, V11, R12, M12, V12, R13, M13, V13, R14, M14, V14, R15, M15, V15, R16, \ + M16, V16, R17, M17, V17, R18, M18, V18, R19, M19, V19) \ + (uint8_t)((uint16_t)(MODE) >> 8), (uint8_t)((MODE) & 0xFFU), 20, \ + (uint8_t)((uint16_t)(R0) >> 8), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10), \ + (uint8_t)((uint16_t)(R11) >> 8), (uint8_t)((R11) & 0xFFU), \ + (uint8_t)(M11), (uint8_t)(V11), (uint8_t)((uint16_t)(R12) >> 8), \ + (uint8_t)((R12) & 0xFFU), (uint8_t)(M12), (uint8_t)(V12), \ + (uint8_t)((uint16_t)(R13) >> 8), (uint8_t)((R13) & 0xFFU), \ + (uint8_t)(M13), (uint8_t)(V13), (uint8_t)((uint16_t)(R14) >> 8), \ + (uint8_t)((R14) & 0xFFU), (uint8_t)(M14), (uint8_t)(V14), \ + (uint8_t)((uint16_t)(R15) >> 8), (uint8_t)((R15) & 0xFFU), \ + (uint8_t)(M15), (uint8_t)(V15), (uint8_t)((uint16_t)(R16) >> 8), \ + (uint8_t)((R16) & 0xFFU), (uint8_t)(M16), (uint8_t)(V16), \ + (uint8_t)((uint16_t)(R17) >> 8), (uint8_t)((R17) & 0xFFU), \ + (uint8_t)(M17), (uint8_t)(V17), (uint8_t)((uint16_t)(R18) >> 8), \ + (uint8_t)((R18) & 0xFFU), (uint8_t)(M18), (uint8_t)(V18), \ + (uint8_t)((uint16_t)(R19) >> 8), (uint8_t)((R19) & 0xFFU), \ + (uint8_t)(M19), (uint8_t)(V19) + +/*! Macro for Configuration Setting with seventeen register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_21_REG( \ + MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, V3, R4, M4, V4, R5, M5, \ + V5, R6, M6, V6, R7, M7, V7, R8, M8, V8, R9, M9, V9, R10, M10, V10, R11, \ + M11, V11, R12, M12, V12, R13, M13, V13, R14, M14, V14, R15, M15, V15, R16, \ + M16, V16, R17, M17, V17, R18, M18, V18, R19, M19, V19, R20, M20, V20) \ + (uint8_t)((uint16_t)(MODE) >> 8), (uint8_t)((MODE) & 0xFFU), 21, \ + (uint8_t)((uint16_t)(R0) >> 8), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10), \ + (uint8_t)((uint16_t)(R11) >> 8), (uint8_t)((R11) & 0xFFU), \ + (uint8_t)(M11), (uint8_t)(V11), (uint8_t)((uint16_t)(R12) >> 8), \ + (uint8_t)((R12) & 0xFFU), (uint8_t)(M12), (uint8_t)(V12), \ + (uint8_t)((uint16_t)(R13) >> 8), (uint8_t)((R13) & 0xFFU), \ + (uint8_t)(M13), (uint8_t)(V13), (uint8_t)((uint16_t)(R14) >> 8), \ + (uint8_t)((R14) & 0xFFU), (uint8_t)(M14), (uint8_t)(V14), \ + (uint8_t)((uint16_t)(R15) >> 8), (uint8_t)((R15) & 0xFFU), \ + (uint8_t)(M15), (uint8_t)(V15), (uint8_t)((uint16_t)(R16) >> 8), \ + (uint8_t)((R16) & 0xFFU), (uint8_t)(M16), (uint8_t)(V16), \ + (uint8_t)((uint16_t)(R17) >> 8), (uint8_t)((R17) & 0xFFU), \ + (uint8_t)(M17), (uint8_t)(V17), (uint8_t)((uint16_t)(R18) >> 8), \ + (uint8_t)((R18) & 0xFFU), (uint8_t)(M18), (uint8_t)(V18), \ + (uint8_t)((uint16_t)(R19) >> 8), (uint8_t)((R19) & 0xFFU), \ + (uint8_t)(M19), (uint8_t)(V19), (uint8_t)((uint16_t)(R20) >> 8), \ + (uint8_t)((R20) & 0xFFU), (uint8_t)(M20), (uint8_t)(V20) + +/*! Macro for Configuration Setting with seventeen register-mask-value sets: + * - Configuration ID[2], Number of Register sets to follow[1], Register[2], + * Mask[1], Value[1], Register[2], Mask[1], Value[1], Register[2]... */ +#define MODE_ENTRY_22_REG( \ + MODE, R0, M0, V0, R1, M1, V1, R2, M2, V2, R3, M3, V3, R4, M4, V4, R5, M5, \ + V5, R6, M6, V6, R7, M7, V7, R8, M8, V8, R9, M9, V9, R10, M10, V10, R11, \ + M11, V11, R12, M12, V12, R13, M13, V13, R14, M14, V14, R15, M15, V15, R16, \ + M16, V16, R17, M17, V17, R18, M18, V18, R19, M19, V19, R20, M20, V20, R21, \ + M21, V21) \ + (uint8_t)((uint16_t)(MODE) >> 8), (uint8_t)((MODE) & 0xFFU), 22, \ + (uint8_t)((uint16_t)(R0) >> 8), (uint8_t)((R0) & 0xFFU), (uint8_t)(M0), \ + (uint8_t)(V0), (uint8_t)((uint16_t)(R1) >> 8), (uint8_t)((R1) & 0xFFU), \ + (uint8_t)(M1), (uint8_t)(V1), (uint8_t)((uint16_t)(R2) >> 8), \ + (uint8_t)((R2) & 0xFFU), (uint8_t)(M2), (uint8_t)(V2), \ + (uint8_t)((uint16_t)(R3) >> 8), (uint8_t)((R3) & 0xFFU), (uint8_t)(M3), \ + (uint8_t)(V3), (uint8_t)((uint16_t)(R4) >> 8), (uint8_t)((R4) & 0xFFU), \ + (uint8_t)(M4), (uint8_t)(V4), (uint8_t)((uint16_t)(R5) >> 8), \ + (uint8_t)((R5) & 0xFFU), (uint8_t)(M5), (uint8_t)(V5), \ + (uint8_t)((uint16_t)(R6) >> 8), (uint8_t)((R6) & 0xFFU), (uint8_t)(M6), \ + (uint8_t)(V6), (uint8_t)((uint16_t)(R7) >> 8), (uint8_t)((R7) & 0xFFU), \ + (uint8_t)(M7), (uint8_t)(V7), (uint8_t)((uint16_t)(R8) >> 8), \ + (uint8_t)((R8) & 0xFFU), (uint8_t)(M8), (uint8_t)(V8), \ + (uint8_t)((uint16_t)(R9) >> 8), (uint8_t)((R9) & 0xFFU), (uint8_t)(M9), \ + (uint8_t)(V9), (uint8_t)((uint16_t)(R10) >> 8), \ + (uint8_t)((R10) & 0xFFU), (uint8_t)(M10), (uint8_t)(V10), \ + (uint8_t)((uint16_t)(R11) >> 8), (uint8_t)((R11) & 0xFFU), \ + (uint8_t)(M11), (uint8_t)(V11), (uint8_t)((uint16_t)(R12) >> 8), \ + (uint8_t)((R12) & 0xFFU), (uint8_t)(M12), (uint8_t)(V12), \ + (uint8_t)((uint16_t)(R13) >> 8), (uint8_t)((R13) & 0xFFU), \ + (uint8_t)(M13), (uint8_t)(V13), (uint8_t)((uint16_t)(R14) >> 8), \ + (uint8_t)((R14) & 0xFFU), (uint8_t)(M14), (uint8_t)(V14), \ + (uint8_t)((uint16_t)(R15) >> 8), (uint8_t)((R15) & 0xFFU), \ + (uint8_t)(M15), (uint8_t)(V15), (uint8_t)((uint16_t)(R16) >> 8), \ + (uint8_t)((R16) & 0xFFU), (uint8_t)(M16), (uint8_t)(V16), \ + (uint8_t)((uint16_t)(R17) >> 8), (uint8_t)((R17) & 0xFFU), \ + (uint8_t)(M17), (uint8_t)(V17), (uint8_t)((uint16_t)(R18) >> 8), \ + (uint8_t)((R18) & 0xFFU), (uint8_t)(M18), (uint8_t)(V18), \ + (uint8_t)((uint16_t)(R19) >> 8), (uint8_t)((R19) & 0xFFU), \ + (uint8_t)(M19), (uint8_t)(V19), (uint8_t)((uint16_t)(R20) >> 8), \ + (uint8_t)((R20) & 0xFFU), (uint8_t)(M20), (uint8_t)(V20), \ + (uint8_t)((uint16_t)(R21) >> 8), (uint8_t)((R21) & 0xFFU), \ + (uint8_t)(M21), (uint8_t)(V21) +/* + ****************************************************************************** + * GLOBAL DATA TYPES + ****************************************************************************** + */ + +#if defined(ST25R3916) +/* PRQA S 3674 2 # CERT ARR02 - Flexible array will be used with sizeof, on + * adding elements error-prone manual update of size would be required */ +/* PRQA S 3406 1 # MISRA 8.6 - Externally generated table included by the + * library */ /* PRQA S 1514 1 # MISRA 8.9 - Externally generated table included by the library */ +const uint8_t rfalAnalogConfigDefaultSettings[] = { + + /****** Default Analog Configuration for Chip-Specific Reset ******/ + MODE_ENTRY_17_REG( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_INIT), + ST25R3916_REG_IO_CONF1, + (ST25R3916_REG_IO_CONF1_out_cl_mask | + ST25R3916_REG_IO_CONF1_lf_clk_off), + 0x07 /* Disable MCU_CLK */ + , + ST25R3916_REG_IO_CONF2, + (ST25R3916_REG_IO_CONF2_miso_pd1 | ST25R3916_REG_IO_CONF2_miso_pd2), + 0x18 /* SPI Pull downs */ + , + ST25R3916_REG_IO_CONF2, ST25R3916_REG_IO_CONF2_aat_en, + ST25R3916_REG_IO_CONF2_aat_en /* Enable AAT */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_d_res_mask, + 0x00 /* Set RFO resistance Active Tx */ + , + ST25R3916_REG_RES_AM_MOD, 0xFF, 0x80 /* Use minimum non-overlap */ + , + ST25R3916_REG_FIELD_THRESHOLD_ACTV, + ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_mask, + ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_105mV /* Lower activation + threshold (higher than + deactivation)*/ + , + ST25R3916_REG_FIELD_THRESHOLD_ACTV, + ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_mask, + ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_205mV /* Activation threshold as + per DS (higher than + deactivation)*/ + , + ST25R3916_REG_FIELD_THRESHOLD_DEACTV, + ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_mask, + ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_75mV /* Lower deactivation + threshold */ + , + ST25R3916_REG_FIELD_THRESHOLD_DEACTV, + ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_mask, + ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_150mV /* Lower deactivation + threshold */ + , + ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_lm_ext, + 0x00 /* Disable External Load Modulation */ + , + ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_lm_dri, + ST25R3916_REG_AUX_MOD_lm_dri /* Use internal Load Modulation */ + , + ST25R3916_REG_PASSIVE_TARGET, ST25R3916_REG_PASSIVE_TARGET_fdel_mask, + (5U << ST25R3916_REG_PASSIVE_TARGET_fdel_shift) /* Adjust the FDT to be + aligned with the + bitgrid */ + , + ST25R3916_REG_PT_MOD, + (ST25R3916_REG_PT_MOD_ptm_res_mask | ST25R3916_REG_PT_MOD_pt_res_mask), + 0x5f /* Reduce RFO resistance in Modulated state */ + , + ST25R3916_REG_EMD_SUP_CONF, ST25R3916_REG_EMD_SUP_CONF_rx_start_emv, + ST25R3916_REG_EMD_SUP_CONF_rx_start_emv_on /* Enable start on first 4 + bits */ + , + ST25R3916_REG_ANT_TUNE_A, 0xFF, + 0x82 /* Set Antenna Tuning (Poller): ANTL */ + , + ST25R3916_REG_ANT_TUNE_B, 0xFF, + 0x82 /* Set Antenna Tuning (Poller): ANTL */ + , + 0x84U, 0x10, 0x10 /* Avoid chip internal overheat protection */ + ) + + /****** Default Analog Configuration for Chip-Specific Poll Common ******/ + , + MODE_ENTRY_9_REG( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_POLL_COMMON), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + ST25R3916_REG_TX_DRIVER_am_mod_12percent /* Set Modulation index */ + , + ST25R3916_REG_AUX_MOD, + (ST25R3916_REG_AUX_MOD_dis_reg_am | ST25R3916_REG_AUX_MOD_res_am), + 0x00 /* Use AM via regulator */ + , + ST25R3916_REG_ANT_TUNE_A, 0xFF, + 0x82 /* Set Antenna Tuning (Poller): ANTL */ + , + ST25R3916_REG_ANT_TUNE_B, 0xFF, + 0x82 /* Set Antenna Tuning (Poller): ANTL */ + , + ST25R3916_REG_OVERSHOOT_CONF1, 0xFF, + 0x00 /* Disable Overshoot Protection */ + , + ST25R3916_REG_OVERSHOOT_CONF2, 0xFF, + 0x00 /* Disable Overshoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF1, 0xFF, + 0x00 /* Disable Undershoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF2, 0xFF, + 0x00 /* Disable Undershoot Protection */ + ) + + /****** Default Analog Configuration for Poll NFC-A Rx Common ******/ + , + MODE_ENTRY_1_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_AUX, ST25R3916_REG_AUX_dis_corr, + ST25R3916_REG_AUX_dis_corr_correlator /* Use Correlator Receiver */ + ) + + /****** Default Analog Configuration for Poll NFC-A Tx 106 ******/ + , + MODE_ENTRY_5_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_106 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_ook /* Use OOK */ + , + ST25R3916_REG_OVERSHOOT_CONF1, 0xFF, + 0x40 /* Set default Overshoot Protection */ + , + ST25R3916_REG_OVERSHOOT_CONF2, 0xFF, + 0x03 /* Set default Overshoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF1, 0xFF, + 0x40 /* Set default Undershoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF2, 0xFF, + 0x03 /* Set default Undershoot Protection */ + ) + + /****** Default Analog Configuration for Poll NFC-A Rx 106 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_106 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x08, ST25R3916_REG_RX_CONF2, + 0xFF, 0x2D, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x51, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-A Tx 212 ******/ + , + MODE_ENTRY_7_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_212 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + , + ST25R3916_REG_AUX_MOD, + (ST25R3916_REG_AUX_MOD_dis_reg_am | ST25R3916_REG_AUX_MOD_res_am), + 0x88 /* Use Resistive AM */ + , + ST25R3916_REG_RES_AM_MOD, ST25R3916_REG_RES_AM_MOD_md_res_mask, + 0x7F /* Set Resistive modulation */ + , + ST25R3916_REG_OVERSHOOT_CONF1, 0xFF, + 0x40 /* Set default Overshoot Protection */ + , + ST25R3916_REG_OVERSHOOT_CONF2, 0xFF, + 0x03 /* Set default Overshoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF1, 0xFF, + 0x40 /* Set default Undershoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF2, 0xFF, + 0x03 /* Set default Undershoot Protection */ + ) + + /****** Default Analog Configuration for Poll NFC-A Rx 212 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_212 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x02, ST25R3916_REG_RX_CONF2, + 0xFF, 0x3D, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x14, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-A Tx 424 ******/ + , + MODE_ENTRY_7_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_424 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + , + ST25R3916_REG_AUX_MOD, + (ST25R3916_REG_AUX_MOD_dis_reg_am | ST25R3916_REG_AUX_MOD_res_am), + 0x88 /* Use Resistive AM */ + , + ST25R3916_REG_RES_AM_MOD, ST25R3916_REG_RES_AM_MOD_md_res_mask, + 0x7F /* Set Resistive modulation */ + , + ST25R3916_REG_OVERSHOOT_CONF1, 0xFF, + 0x40 /* Set default Overshoot Protection */ + , + ST25R3916_REG_OVERSHOOT_CONF2, 0xFF, + 0x03 /* Set default Overshoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF1, 0xFF, + 0x40 /* Set default Undershoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF2, 0xFF, + 0x03 /* Set default Undershoot Protection */ + ) + + /****** Default Analog Configuration for Poll NFC-A Rx 424 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_424 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x42, ST25R3916_REG_RX_CONF2, + 0xFF, 0x3D, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x54, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-A Tx 848 ******/ + , + MODE_ENTRY_7_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_848 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + ST25R3916_REG_TX_DRIVER_am_mod_40percent /* Set Modulation index */ + , + ST25R3916_REG_AUX_MOD, + (ST25R3916_REG_AUX_MOD_dis_reg_am | ST25R3916_REG_AUX_MOD_res_am), + 0x00 /* Use AM via regulator */ + , + ST25R3916_REG_OVERSHOOT_CONF1, 0xFF, + 0x00 /* Disable Overshoot Protection */ + , + ST25R3916_REG_OVERSHOOT_CONF2, 0xFF, + 0x00 /* Disable Overshoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF1, 0xFF, + 0x00 /* Disable Undershoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF2, 0xFF, + 0x00 /* Disable Undershoot Protection */ + ) + + /****** Default Analog Configuration for Poll NFC-A Rx 848 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_848 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x42, ST25R3916_REG_RX_CONF2, + 0xFF, 0x3D, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x44, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-A Anticolision setting + ******/ + , + MODE_ENTRY_1_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_ANTICOL), + ST25R3916_REG_CORR_CONF1, ST25R3916_REG_CORR_CONF1_corr_s6, + 0x00 /* Set collision detection level different from data */ + ) + +#ifdef RFAL_USE_COHE + /****** Default Analog Configuration for Poll NFC-B Rx Common ******/ + , + MODE_ENTRY_1_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_AUX, ST25R3916_REG_AUX_dis_corr, + ST25R3916_REG_AUX_dis_corr_coherent /* Use Coherent Receiver */ + ) +#else + /****** Default Analog Configuration for Poll NFC-B Rx Common ******/ + , + MODE_ENTRY_1_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_AUX, ST25R3916_REG_AUX_dis_corr, + ST25R3916_REG_AUX_dis_corr_correlator /* Use Correlator Receiver */ + ) +#endif /*RFAL_USE_COHE*/ + + /****** Default Analog Configuration for Poll NFC-B Rx 106 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_106 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x04, ST25R3916_REG_RX_CONF2, + 0xFF, 0x3D, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x1B, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-B Rx 212 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_212 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x02, ST25R3916_REG_RX_CONF2, + 0xFF, 0x3D, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x14, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-B Rx 424 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_424 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x42, ST25R3916_REG_RX_CONF2, + 0xFF, 0x3D, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x54, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-B Rx 848 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_848 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x42, ST25R3916_REG_RX_CONF2, + 0xFF, 0x3D, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x44, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) +#ifdef RFAL_USE_COHE + + /****** Default Analog Configuration for Poll NFC-F Rx Common ******/ + , + MODE_ENTRY_7_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCF | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_AUX, ST25R3916_REG_AUX_dis_corr, + ST25R3916_REG_AUX_dis_corr_coherent /* Use Pulse Receiver */ + , + ST25R3916_REG_RX_CONF1, 0xFF, 0x13, ST25R3916_REG_RX_CONF2, 0xFF, 0x3D, + ST25R3916_REG_RX_CONF3, 0xFF, 0x00, ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x54, ST25R3916_REG_CORR_CONF2, 0xFF, + 0x00) +#else + /****** Default Analog Configuration for Poll NFC-F Rx Common ******/ + , + MODE_ENTRY_7_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCF | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_AUX, ST25R3916_REG_AUX_dis_corr, + ST25R3916_REG_AUX_dis_corr_correlator /* Use Correlator Receiver */ + , + ST25R3916_REG_RX_CONF1, 0xFF, 0x13, ST25R3916_REG_RX_CONF2, 0xFF, 0x3D, + ST25R3916_REG_RX_CONF3, 0xFF, 0x00, ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x54, ST25R3916_REG_CORR_CONF2, 0xFF, + 0x00) +#endif /*RFAL_USE_COHE*/ + + , + MODE_ENTRY_1_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCV | + RFAL_ANALOG_CONFIG_BITRATE_26 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_ook /* Use OOK */ + ) + +#ifdef RFAL_USE_COHE + /****** Default Analog Configuration for Poll NFC-V Rx Common ******/ + , + MODE_ENTRY_7_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCV | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_AUX, ST25R3916_REG_AUX_dis_corr, + ST25R3916_REG_AUX_dis_corr_coherent /* Use Pulse Receiver */ + , + ST25R3916_REG_RX_CONF1, 0xFF, 0x13, ST25R3916_REG_RX_CONF2, 0xFF, 0x2D, + ST25R3916_REG_RX_CONF3, 0xFF, 0x00, ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x13, ST25R3916_REG_CORR_CONF2, 0xFF, + 0x01) +#else + /****** Default Analog Configuration for Poll NFC-V Rx Common ******/ + , + MODE_ENTRY_7_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCV | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_AUX, ST25R3916_REG_AUX_dis_corr, + ST25R3916_REG_AUX_dis_corr_correlator /* Use Correlator Receiver */ + , + ST25R3916_REG_RX_CONF1, 0xFF, 0x13, ST25R3916_REG_RX_CONF2, 0xFF, 0x2D, + ST25R3916_REG_RX_CONF3, 0xFF, 0x00, ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x13, ST25R3916_REG_CORR_CONF2, 0xFF, + 0x01) +#endif /*RFAL_USE_COHE*/ + + /****** Default Analog Configuration for Poll AP2P Tx 106 ******/ + , + MODE_ENTRY_5_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_106 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_ook /* Use OOK modulation */ + , + ST25R3916_REG_OVERSHOOT_CONF1, 0xFF, + 0x40 /* Set default Overshoot Protection */ + , + ST25R3916_REG_OVERSHOOT_CONF2, 0xFF, + 0x03 /* Set default Overshoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF1, 0xFF, + 0x40 /* Set default Undershoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF2, 0xFF, + 0x03 /* Set default Undershoot Protection */ + ) + + /****** Default Analog Configuration for Poll AP2P Tx 212 ******/ + , + MODE_ENTRY_1_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_212 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + ) + + /****** Default Analog Configuration for Poll AP2P Tx 424 ******/ + , + MODE_ENTRY_1_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_424 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + ) + + /****** Default Analog Configuration for Chip-Specific Listen On ******/ + , + MODE_ENTRY_6_REG( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_LISTEN_ON), + ST25R3916_REG_ANT_TUNE_A, 0xFF, + 0x00 /* Set Antenna Tuning (Listener): ANTL */ + , + ST25R3916_REG_ANT_TUNE_B, 0xFF, + 0xff /* Set Antenna Tuning (Listener): ANTL */ + , + ST25R3916_REG_OVERSHOOT_CONF1, 0xFF, + 0x00 /* Disable Overshoot Protection */ + , + ST25R3916_REG_OVERSHOOT_CONF2, 0xFF, + 0x00 /* Disable Overshoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF1, 0xFF, + 0x00 /* Disable Undershoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF2, 0xFF, + 0x00 /* Disable Undershoot Protection */ + ) + + /****** Default Analog Configuration for Listen AP2P Tx Common ******/ + , + MODE_ENTRY_7_REG( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_ANT_TUNE_A, 0xFF, + 0x82 /* Set Antenna Tuning (Poller): ANTL */ + , + ST25R3916_REG_ANT_TUNE_B, 0xFF, + 0x82 /* Set Antenna Tuning (Poller): ANTL */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + ST25R3916_REG_TX_DRIVER_am_mod_12percent /* Set Modulation index */ + , + ST25R3916_REG_OVERSHOOT_CONF1, 0xFF, + 0x00 /* Disable Overshoot Protection */ + , + ST25R3916_REG_OVERSHOOT_CONF2, 0xFF, + 0x00 /* Disable Overshoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF1, 0xFF, + 0x00 /* Disable Undershoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF2, 0xFF, + 0x00 /* Disable Undershoot Protection */ + ) + + /****** Default Analog Configuration for Listen AP2P Rx Common ******/ + , + MODE_ENTRY_3_REG( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, ST25R3916_REG_RX_CONF1_lp_mask, + ST25R3916_REG_RX_CONF1_lp_1200khz /* Set Rx filter configuration */ + , + ST25R3916_REG_RX_CONF1, ST25R3916_REG_RX_CONF1_hz_mask, + ST25R3916_REG_RX_CONF1_hz_12_200khz /* Set Rx filter configuration */ + , + ST25R3916_REG_RX_CONF2, ST25R3916_REG_RX_CONF2_amd_sel, + ST25R3916_REG_RX_CONF2_amd_sel_mixer /* AM demodulator: mixer */ + ) + + /****** Default Analog Configuration for Listen AP2P Tx 106 ******/ + , + MODE_ENTRY_5_REG((RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_106 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_ook /* Use OOK modulation */ + , + ST25R3916_REG_OVERSHOOT_CONF1, 0xFF, + 0x40 /* Set default Overshoot Protection */ + , + ST25R3916_REG_OVERSHOOT_CONF2, 0xFF, + 0x03 /* Set default Overshoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF1, 0xFF, + 0x40 /* Set default Undershoot Protection */ + , + ST25R3916_REG_UNDERSHOOT_CONF2, 0xFF, + 0x03 /* Set default Undershoot Protection */ + ) + + /****** Default Analog Configuration for Listen AP2P Tx 212 ******/ + , + MODE_ENTRY_1_REG((RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_212 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + ) + + /****** Default Analog Configuration for Listen AP2P Tx 424 ******/ + , + MODE_ENTRY_1_REG((RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_424 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + ) + +}; + +/*******************************************************************************/ +#elif defined(ST25R3916B) + +/* PRQA S 3674 2 # CERT ARR02 - Flexible array will be used with sizeof, on + * adding elements error-prone manual update of size would be required */ +/* PRQA S 3406 1 # MISRA 8.6 - Externally generated table included by the + * library */ /* PRQA S 1514 1 # MISRA 8.9 - Externally generated table included by the library */ +const uint8_t rfalAnalogConfigDefaultSettings[] = { + + /****** Default Analog Configuration for Chip-Specific Reset ******/ + MODE_ENTRY_20_REG( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_INIT), + ST25R3916_REG_IO_CONF1, + (ST25R3916_REG_IO_CONF1_out_cl_mask | + ST25R3916_REG_IO_CONF1_lf_clk_off), + 0x07 /* Disable MCU_CLK */ + , + ST25R3916_REG_IO_CONF2, + (ST25R3916_REG_IO_CONF2_miso_pd1 | ST25R3916_REG_IO_CONF2_miso_pd2), + 0x18 /* SPI Pull downs */ + , + ST25R3916_REG_IO_CONF2, ST25R3916_REG_IO_CONF2_aat_en, + ST25R3916_REG_IO_CONF2_aat_en /* Enable AAT */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_d_res_mask, + 0x00 /* Set RFO resistance Active Tx */ + , + ST25R3916_REG_RES_AM_MOD, ST25R3916_REG_RES_AM_MOD_fa3_f, + 0x80 /* Use minimum non-overlap */ + , + ST25R3916_REG_FIELD_THRESHOLD_ACTV, + ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_mask, + ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_105mV /* Lower activation + threshold (higher than + deactivation)*/ + , + ST25R3916_REG_FIELD_THRESHOLD_ACTV, + ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_mask, + ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_205mV /* Activation threshold as + per DS (higher than + deactivation)*/ + , + ST25R3916_REG_FIELD_THRESHOLD_DEACTV, + ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_mask, + ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_75mV /* Lower deactivation + threshold */ + , + ST25R3916_REG_FIELD_THRESHOLD_DEACTV, + ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_mask, + ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_150mV /* Lower deactivation + threshold */ + , + ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_lm_ext, + 0x00 /* Disable External Load Modulation */ + , + ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_lm_dri, + ST25R3916_REG_AUX_MOD_lm_dri /* Use internal Load Modulation */ + , + ST25R3916_REG_PASSIVE_TARGET, ST25R3916_REG_PASSIVE_TARGET_fdel_mask, + (5U << ST25R3916_REG_PASSIVE_TARGET_fdel_shift) /* Adjust the FDT to be + aligned with the + bitgrid */ + , + ST25R3916_REG_PT_MOD, + (ST25R3916_REG_PT_MOD_ptm_res_mask | ST25R3916_REG_PT_MOD_pt_res_mask), + 0x2e /* Card Mode LMA */ + , + ST25R3916_REG_EMD_SUP_CONF, ST25R3916_REG_EMD_SUP_CONF_rx_start_emv, + ST25R3916_REG_EMD_SUP_CONF_rx_start_emv_on /* Enable start on first 4 + bits */ + , + ST25R3916_REG_ANT_TUNE_A, 0xFF, 0xC5 /* Set Antenna Tuning (Poller) */ + , + ST25R3916_REG_ANT_TUNE_B, 0xFF, 0xE3 /* Set Antenna Tuning (Poller) */ + , + ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_rgs_am, + ST25R3916_REG_AUX_MOD_rgs_am /* Enable AWS */ + , + ST25R3916_REG_AWS_CONF1, ST25R3916_REG_AWS_CONF1_rgs_txonoff, + ST25R3916_REG_AWS_CONF1_rgs_txonoff /* Use AWS for field transition */ + , + ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_dis_reg_am, + ST25R3916_REG_AUX_MOD_dis_reg_am /* Set am_mode */ + , + ST25R3916_REG_AWS_CONF1, ST25R3916_REG_AWS_CONF1_vddrf_cont, + ST25R3916_REG_AWS_CONF1_vddrf_cont /* Set vddrf_cont */ + ) + + /****** Default Analog Configuration for Chip-Specific Poll Common ******/ + , + MODE_ENTRY_8_REG( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_POLL_COMMON), + ST25R3916_REG_ANT_TUNE_A, 0xFF, 0xC5 /* AAT Setting for R/W mode */ + , + ST25R3916_REG_ANT_TUNE_B, 0xFF, 0xE3 /* AAT Setting for R/W mode */ + , + ST25R3916_REG_ISO14443A_NFC, ST25R3916_REG_ISO14443A_NFC_p_len_mask, + 0x00 /* Set p_len to default */ + , + ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_rgs_am, + ST25R3916_REG_AUX_MOD_rgs_am /* Enable new AWS */ + , + ST25R3916_REG_AWS_TIME1, ST25R3916_REG_AWS_TIME1_tmodsw1_mask, + 0x01 /* tmodsw1 */ + , + ST25R3916_REG_AWS_TIME3, ST25R3916_REG_AWS_TIME3_tentx1_mask, + 0x70 /* Time in fc periods when driver modulation stops (tr_am + dependent) */ + , + ST25R3916_REG_AWS_TIME3, ST25R3916_REG_AWS_TIME3_tmods2_mask, + 0x09 /* Time in fc periods for hard switch between VDD_DR and VDD_AM */ + , + ST25R3916_REG_AWS_TIME4, ST25R3916_REG_AWS_TIME4_tmodsw2_mask, + 0x07 /* Time in fc periods for soft switch between VDD_DR and VDD_AM */ + ) + + /****** Default Analog Configuration for Poll NFC-A Tx Common ******/ + , + MODE_ENTRY_5_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_ook /* Use OOK modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + 0xF0 /* Set modulation index for AWS */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_sym, + 0x00 /* Nonsymmetrical shape(for OOK) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_en_modsink, + ST25R3916_REG_AWS_CONF2_en_modsink /* Enable strong sink during AWS mod + */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x08 /* Medium AWS filter constant */ + ) + + /****** Default Analog Configuration for Poll NFC-A Rx 106 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_106 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x08, ST25R3916_REG_RX_CONF2, + 0xFF, 0xED, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x51, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-A Rx 212 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_212 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x02, ST25R3916_REG_RX_CONF2, + 0xFF, 0xFD, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x97, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-A Rx 424 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_424 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x42, ST25R3916_REG_RX_CONF2, + 0xFF, 0xFD, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0xd7, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-A Tx 848 ******/ + , + MODE_ENTRY_6_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_848 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + 0xD0 /* Set modulation index */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x00 /* Fast AWS filter constant */ + , + ST25R3916_REG_AWS_TIME3, ST25R3916_REG_AWS_TIME3_tentx1_mask, + 0x30 /* AWS enable TX (tentx1) */ + , + ST25R3916_REG_AWS_TIME3, ST25R3916_REG_AWS_TIME3_tmods2_mask, + 0x00 /* AWS hard switch at rising edge (tmods2) : 0 fc perionds */ + , + ST25R3916_REG_AWS_TIME4, ST25R3916_REG_AWS_TIME4_tmodsw2_mask, + 0x02 /* AWS soft switch at rising edge (tmodsw2) : 2 fc perionds */ + ) + + /****** Default Analog Configuration for Poll NFC-A Rx 848 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_848 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x42, ST25R3916_REG_RX_CONF2, + 0xFF, 0xFD, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x47, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-A Anticolision setting + ******/ + , + MODE_ENTRY_1_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_ANTICOL), + ST25R3916_REG_CORR_CONF1, ST25R3916_REG_CORR_CONF1_corr_s6, + 0x00 /* Different data slicer to improve collision detection */ + ) + + /****** Default Analog Configuration for Poll NFC-B Tx Common ******/ + , + MODE_ENTRY_5_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + 0x40 /* Set modulation index for AWS */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_sym, + ST25R3916_REG_AWS_CONF2_am_sym /* AWS shaping symmetry (am_sym) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_en_modsink, + 0x00 /* Weak sink */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x08 /* Medium AWS filter constant */ + ) + + /****** Default Analog Configuration for Poll NFC-B Rx 106 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_106 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x04, ST25R3916_REG_RX_CONF2, + 0xFF, 0xFD, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x97, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-B Rx 212 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_212 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x02, ST25R3916_REG_RX_CONF2, + 0xFF, 0xFD, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x97, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-B Rx 424 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_424 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x42, ST25R3916_REG_RX_CONF2, + 0xFF, 0xFD, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0xD7, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-B Tx 848 ******/ + , + MODE_ENTRY_1_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_848 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_AWS_CONF2, + ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x01 /* Fast AWS filter constant */ + ) + + /****** Default Analog Configuration for Poll NFC-B Rx 848 ******/ + , + MODE_ENTRY_6_REG((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_848 | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x42, ST25R3916_REG_RX_CONF2, + 0xFF, 0xFD, ST25R3916_REG_RX_CONF3, 0xFF, 0x00, + ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x47, + ST25R3916_REG_CORR_CONF2, 0xFF, 0x00) + + /****** Default Analog Configuration for Poll NFC-F Tx Common ******/ + , + MODE_ENTRY_5_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCF | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + 0x40 /* Set modulation index */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_sym, + ST25R3916_REG_AWS_CONF2_am_sym /* AWS shaping symmetry (am_sym) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_en_modsink, + 0x00 /* Weak sink */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x08 /* Medium AWS filter constant */ + ) + + /****** Default Analog Configuration for Poll NFC-F Rx Common ******/ + , + MODE_ENTRY_6_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCF | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x13, ST25R3916_REG_RX_CONF2, 0xFF, 0xFD, + ST25R3916_REG_RX_CONF3, 0xFF, 0x00, ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x54, ST25R3916_REG_CORR_CONF2, 0xFF, + 0x00) + + /****** Default Analog Configuration for Poll NFC-V Tx 26 ******/ + , + MODE_ENTRY_6_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCV | + RFAL_ANALOG_CONFIG_BITRATE_26 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_ook /* Use OOK modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + 0xF0 /* Set modulation index for AWS */ + , + ST25R3916_REG_ISO14443A_NFC, ST25R3916_REG_ISO14443A_NFC_p_len_mask, + 0x1c /* Set modulation pulse length p_len */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_sym, + 0x00 /* Nonsymerical shape (for OOK) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_en_modsink, + ST25R3916_REG_AWS_CONF2_en_modsink /* AWS enable strong sink + (en_modsink) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x06 /* Medium fast AWS filter constant */ + ) + + /****** Default Analog Configuration for Poll NFC-V Rx Common ******/ + , + MODE_ENTRY_6_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCV | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX), + ST25R3916_REG_RX_CONF1, 0xFF, 0x13, ST25R3916_REG_RX_CONF2, 0xFF, 0xED, + ST25R3916_REG_RX_CONF3, 0xFF, 0x00, ST25R3916_REG_RX_CONF4, 0xFF, 0x00, + ST25R3916_REG_CORR_CONF1, 0xFF, 0x13, ST25R3916_REG_CORR_CONF2, 0xFF, + 0x01) + + /****** Default Analog Configuration for Poll AP2P Tx 106 ******/ + , + MODE_ENTRY_5_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_106 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_ook /* Use OOK modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + 0xF0 /* Set modulation index for AWS */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_sym, + 0x00 /* Nonsymerical shape (for OOK) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_en_modsink, + ST25R3916_REG_AWS_CONF2_en_modsink /* AWS enable strong sink + (en_modsink) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x08 /* Medium AWS filter constant */ + ) + + /****** Default Analog Configuration for Poll AP2P Tx 212 ******/ + , + MODE_ENTRY_5_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_212 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + 0x40 /* Set AM modulation index */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_sym, + ST25R3916_REG_AWS_CONF2_am_sym /* AWS shaping symmetry (am_sym) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_en_modsink, + 0x00 /* Weak sink */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x08 /* Medium AWS filter constant */ + ) + + /****** Default Analog Configuration for Poll AP2P Tx 424 ******/ + , + MODE_ENTRY_5_REG( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_424 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + 0x40 /* Set AM modulation index */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_sym, + ST25R3916_REG_AWS_CONF2_am_sym /* AWS shaping symmetry (am_sym) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_en_modsink, + 0x00 /* Weak sink */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x08 /* Medium AWS filter constant */ + ) + + /****** Default Analog Configuration for Listen On ******/ + , + MODE_ENTRY_3_REG( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_LISTEN_ON), + ST25R3916_REG_ANT_TUNE_A, 0xFF, 0x00 /* Set Antenna Tuning (Listener) */ + , + ST25R3916_REG_ANT_TUNE_B, 0xFF, 0x00 /* Set Antenna Tuning (Listener) */ + , + ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_rgs_am, + 0x00 /* Disable AWS in Listen mode */ + ) + + /****** Default Analog Configuration for Listen AP2P Tx Common ******/ + , + MODE_ENTRY_3_REG( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_ANT_TUNE_A, 0xFF, 0xC5 /* Set Antenna Tuning (Poller) */ + , + ST25R3916_REG_ANT_TUNE_B, 0xFF, 0xE3 /* Set Antenna Tuning (Poller) */ + , + ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_rgs_am, + ST25R3916_REG_AUX_MOD_rgs_am /* Enable AWS for AP2P */ + ) + + /****** Default Analog Configuration for Listen AP2P Tx 106 ******/ + , + MODE_ENTRY_5_REG( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_106 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_ook /* Use OOK modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + 0xF0 /* Set modulation index for AWS */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_sym, + 0x00 /* Nonsymerical shape (for OOK) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_en_modsink, + ST25R3916_REG_AWS_CONF2_en_modsink /* AWS enable strong sink + (en_modsink) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x08 /* Medium AWS filter constant */ + ) + + /****** Default Analog Configuration for Listen AP2P Tx 212 ******/ + , + MODE_ENTRY_5_REG( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_212 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + 0x40 /* Set AM modulation index */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_sym, + ST25R3916_REG_AWS_CONF2_am_sym /* AWS shaping symmetry (am_sym) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_en_modsink, + 0x00 /* Weak sink */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x08 /* Medium AWS filter constant */ + ) + + /****** Default Analog Configuration for Listen AP2P Tx 424 ******/ + , + MODE_ENTRY_5_REG( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_424 | RFAL_ANALOG_CONFIG_TX), + ST25R3916_REG_MODE, ST25R3916_REG_MODE_tr_am, + ST25R3916_REG_MODE_tr_am_am /* Use AM modulation */ + , + ST25R3916_REG_TX_DRIVER, ST25R3916_REG_TX_DRIVER_am_mod_mask, + 0x40 /* Set AM modulation index */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_sym, + ST25R3916_REG_AWS_CONF2_am_sym /* AWS shaping symmetry (am_sym) */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_en_modsink, + 0x00 /* Weak sink */ + , + ST25R3916_REG_AWS_CONF2, ST25R3916_REG_AWS_CONF2_am_filt_mask, + 0x08 /* Medium AWS filter constant */ + ) + + /****** Default Analog Configuration for Wake-up On ******/ + , + MODE_ENTRY_1_REG( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_WAKEUP_ON), + ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_rgs_am, + 0x00 /* Disable AWS during WU */ + ) + + /****** Default Analog Configuration for Wake-up Off ******/ + , + MODE_ENTRY_1_REG( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_WAKEUP_OFF), + ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_rgs_am, + ST25R3916_REG_AUX_MOD_rgs_am /* Re-enable AWS after WU */ + ) + +}; + +#endif /* ST25R3916|B */ + +#endif /* ST25R3916_ANALOGCONFIG_H */ diff --git a/core/embed/io/nfc/rfal/source/st25r3916/rfal_dpoTbl.h b/core/embed/io/nfc/rfal/source/st25r3916/rfal_dpoTbl.h new file mode 100644 index 0000000000..27ac5289e8 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/rfal_dpoTbl.h @@ -0,0 +1,69 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * $Revision: $ + * LANGUAGE: ISO C99 + */ + +/*! \file + * + * \author Martin Zechleitner + * + * \brief RF Dynamic Power Table default values + */ + +#ifndef ST25R3916_DPO_H +#define ST25R3916_DPO_H + +/* + ****************************************************************************** + * INCLUDES + ****************************************************************************** + */ +#include "rfal_dpo.h" + +/* + ****************************************************************************** + * GLOBAL DATA TYPES + ****************************************************************************** + */ + +#if defined(ST25R3916) + +/*! ST25R3916 Default DPO table */ +/* PRQA S 3674 2 # CERT ARR02 - Flexible array will be used with sizeof, on + * adding elements error-prone manual update of size would be required */ +/* PRQA S 3406 1 # MISRA 8.6 - Externally generated table included by the + * library */ /* PRQA S 1514 1 # MISRA 8.9 - Externally generated table included by the library */ +const rfalDpoEntry rfalDpoDefaultSettings[] = { + {0x00, 255, 200}, {0x01, 210, 150}, {0x02, 160, 100}, {0x03, 110, 50}}; + +#elif defined(ST25R3916B) /* ST25R3916B has an increased resolution on the \ + driver resistance (d_res) */ + +/*! ST25R3916B Default DPO table */ +/* PRQA S 3674 2 # CERT ARR02 - Flexible array will be used with sizeof, on + * adding elements error-prone manual update of size would be required */ +/* PRQA S 3406 1 # MISRA 8.6 - Externally generated table included by the + * library */ /* PRQA S 1514 1 # MISRA 8.9 - Externally generated table included by the library */ +const rfalDpoEntry rfalDpoDefaultSettings[] = { + {0x00, 255, 200}, {0x05, 210, 150}, {0x09, 160, 100}, {0x0B, 110, 50}}; + +#endif /* ST25R3916 */ + +#endif /* ST25R3916_DPO_H */ diff --git a/core/embed/io/nfc/rfal/source/st25r3916/rfal_features.h b/core/embed/io/nfc/rfal/source/st25r3916/rfal_features.h new file mode 100644 index 0000000000..b5206f9795 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/rfal_features.h @@ -0,0 +1,241 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R391x firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file + * + * \author Gustavo Patricio + * + * \brief RFAL Features/Capabilities Definition for ST25R3916 + */ + +#ifndef RFAL_FEATURES_H +#define RFAL_FEATURES_H + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include "rfal_platform.h" + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ + +#define RFAL_SUPPORT_MODE_POLL_NFCA \ + true /*!< RFAL Poll NFCA mode support switch */ +#define RFAL_SUPPORT_MODE_POLL_NFCB \ + true /*!< RFAL Poll NFCB mode support switch */ +#define RFAL_SUPPORT_MODE_POLL_NFCF \ + true /*!< RFAL Poll NFCF mode support switch */ +#define RFAL_SUPPORT_MODE_POLL_NFCV \ + true /*!< RFAL Poll NFCV mode support switch */ +#define RFAL_SUPPORT_MODE_POLL_ACTIVE_P2P \ + true /*!< RFAL Poll AP2P mode support switch */ +#define RFAL_SUPPORT_MODE_LISTEN_NFCA \ + true /*!< RFAL Listen NFCA mode support switch */ +#define RFAL_SUPPORT_MODE_LISTEN_NFCB \ + false /*!< RFAL Listen NFCB mode support switch */ +#define RFAL_SUPPORT_MODE_LISTEN_NFCF \ + true /*!< RFAL Listen NFCF mode support switch */ +#define RFAL_SUPPORT_MODE_LISTEN_ACTIVE_P2P \ + true /*!< RFAL Listen AP2P mode support switch */ + +/*******************************************************************************/ +/*! RFAL supported Card Emulation (CE) */ +#define RFAL_SUPPORT_CE \ + (RFAL_SUPPORT_MODE_LISTEN_NFCA || RFAL_SUPPORT_MODE_LISTEN_NFCB || \ + RFAL_SUPPORT_MODE_LISTEN_NFCF) + +/*! RFAL supported Reader/Writer (RW) */ +#define RFAL_SUPPORT_RW \ + (RFAL_SUPPORT_MODE_POLL_NFCA || RFAL_SUPPORT_MODE_POLL_NFCB || \ + RFAL_SUPPORT_MODE_POLL_NFCF || RFAL_SUPPORT_MODE_POLL_NFCV) + +/*! RFAL support for Active P2P (AP2P) */ +#define RFAL_SUPPORT_AP2P \ + (RFAL_SUPPORT_MODE_POLL_ACTIVE_P2P || RFAL_SUPPORT_MODE_LISTEN_ACTIVE_P2P) + +/*******************************************************************************/ +#define RFAL_SUPPORT_BR_RW_106 \ + true /*!< RFAL RW 106 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_RW_212 \ + true /*!< RFAL RW 212 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_RW_424 \ + true /*!< RFAL RW 424 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_RW_848 \ + true /*!< RFAL RW 848 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_RW_1695 \ + false /*!< RFAL RW 1695 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_RW_3390 \ + false /*!< RFAL RW 3390 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_RW_6780 \ + false /*!< RFAL RW 6780 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_RW_13560 \ + false /*!< RFAL RW 6780 Bit Rate support switch */ + +/*******************************************************************************/ +#define RFAL_SUPPORT_BR_AP2P_106 \ + true /*!< RFAL AP2P 106 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_AP2P_212 \ + true /*!< RFAL AP2P 212 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_AP2P_424 \ + true /*!< RFAL AP2P 424 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_AP2P_848 \ + false /*!< RFAL AP2P 848 Bit Rate support switch */ + +/*******************************************************************************/ +#define RFAL_SUPPORT_BR_CE_A_106 \ + true /*!< RFAL CE A 106 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_CE_A_212 \ + false /*!< RFAL CE A 212 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_CE_A_424 \ + false /*!< RFAL CE A 424 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_CE_A_848 \ + false /*!< RFAL CE A 848 Bit Rate support switch */ + +/*******************************************************************************/ +#define RFAL_SUPPORT_BR_CE_B_106 \ + false /*!< RFAL CE B 106 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_CE_B_212 \ + false /*!< RFAL CE B 212 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_CE_B_424 \ + false /*!< RFAL CE B 424 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_CE_B_848 \ + false /*!< RFAL CE B 848 Bit Rate support switch */ + +/*******************************************************************************/ +#define RFAL_SUPPORT_BR_CE_F_212 \ + true /*!< RFAL CE F 212 Bit Rate support switch */ +#define RFAL_SUPPORT_BR_CE_F_424 \ + true /*!< RFAL CE F 424 Bit Rate support switch */ + +/* +****************************************************************************** +* DEVICE SPECIFIC FEATURE DEFINITIONS +****************************************************************************** +*/ + +/*! RFAL Wake-Up Period/Timer */ +typedef enum { + RFAL_WUM_PERIOD_10MS = 0x00, /*!< Wake-Up timer 10ms */ + RFAL_WUM_PERIOD_20MS = 0x01, /*!< Wake-Up timer 20ms */ + RFAL_WUM_PERIOD_30MS = 0x02, /*!< Wake-Up timer 30ms */ + RFAL_WUM_PERIOD_40MS = 0x03, /*!< Wake-Up timer 40ms */ + RFAL_WUM_PERIOD_50MS = 0x04, /*!< Wake-Up timer 50ms */ + RFAL_WUM_PERIOD_60MS = 0x05, /*!< Wake-Up timer 60ms */ + RFAL_WUM_PERIOD_70MS = 0x06, /*!< Wake-Up timer 70ms */ + RFAL_WUM_PERIOD_80MS = 0x07, /*!< Wake-Up timer 80ms */ + RFAL_WUM_PERIOD_100MS = 0x10, /*!< Wake-Up timer 100ms */ + RFAL_WUM_PERIOD_200MS = 0x11, /*!< Wake-Up timer 200ms */ + RFAL_WUM_PERIOD_300MS = 0x12, /*!< Wake-Up timer 300ms */ + RFAL_WUM_PERIOD_400MS = 0x13, /*!< Wake-Up timer 400ms */ + RFAL_WUM_PERIOD_500MS = 0x14, /*!< Wake-Up timer 500ms */ + RFAL_WUM_PERIOD_600MS = 0x15, /*!< Wake-Up timer 600ms */ + RFAL_WUM_PERIOD_700MS = 0x16, /*!< Wake-Up timer 700ms */ + RFAL_WUM_PERIOD_800MS = 0x17, /*!< Wake-Up timer 800ms */ +} rfalWumPeriod; + +/*! RFAL Wake-Up Period/Timer */ +typedef enum { + RFAL_WUM_AA_WEIGHT_4 = 0x00, /*!< Wake-Up Auto Average Weight 4 */ + RFAL_WUM_AA_WEIGHT_8 = 0x01, /*!< Wake-Up Auto Average Weight 8 */ + RFAL_WUM_AA_WEIGHT_16 = 0x02, /*!< Wake-Up Auto Average Weight 16 */ + RFAL_WUM_AA_WEIGHT_32 = 0x03, /*!< Wake-Up Auto Average Weight 32 */ +} rfalWumAAWeight; + +/*! RFAL Wake-Up Mode configuration */ +typedef struct { + rfalWumPeriod + period; /*!< Wake-Up Timer period;how often measurement(s) is performed */ + bool irqTout; /*!< IRQ at every timeout will refresh the measurement(s) */ + bool swTagDetect; /*!< Use SW Tag Detection instead of HW Wake-Up mode */ + + struct { + bool enabled; /*!< Reference from WU mode enabled */ + rfalWumPeriod refDelay; /*!< Obtain reference from WU after delay time */ + } refWU; /*!< Reference obtained from PD|WU mode */ + + struct { + bool enabled; /*!< Inductive Amplitude measurement enabled */ + uint8_t + delta; /*!< Delta between the reference and measurement to wake-up */ + uint8_t fracDelta; /*!< Fractional part of the delta [0;3] 0.25 steps (SW TD + only) */ + uint16_t reference; /*!< Reference to be used;RFAL_WUM_REFERENCE_AUTO sets + it auto */ + bool autoAvg; /*!< Use the HW Auto Averaging feature */ + bool aaInclMeas; /*!< When AutoAvg is enabled, include IRQ measurement */ + rfalWumAAWeight + aaWeight; /*!< When AutoAvg is enabled, last measure weight */ + } indAmp; /*!< Inductive Amplitude Configuration */ + struct { + bool enabled; /*!< Inductive Phase measurement enabled */ + uint8_t + delta; /*!< Delta between the reference and measurement to wake-up */ + uint8_t fracDelta; /*!< Fractional part of the delta [0;3] 0.25 steps (SW TD + only) */ + uint16_t reference; /*!< Reference to be used;RFAL_WUM_REFERENCE_AUTO sets + it auto */ + bool autoAvg; /*!< Use the HW Auto Averaging feature */ + bool aaInclMeas; /*!< When AutoAvg is enabled, include IRQ measurement */ + rfalWumAAWeight + aaWeight; /*!< When AutoAvg is enabled, last measure weight */ + } indPha; /*!< Inductive Phase Configuration */ + struct { + bool enabled; /*!< Capacitive measurement enabled */ + uint8_t + delta; /*!< Delta between the reference and measurement to wake-up */ + uint16_t reference; /*!< Reference to be used;RFAL_WUM_REFERENCE_AUTO sets + it auto */ + bool autoAvg; /*!< Use the HW Auto Averaging feature */ + bool aaInclMeas; /*!< When AutoAvg is enabled, include IRQ measurement */ + rfalWumAAWeight + aaWeight; /*!< When AutoAvg is enabled, last measure weight */ + } cap; /*!< Capacitive Configuration */ +} rfalWakeUpConfig; + +/*! RFAL Wake-Up Mode information */ +typedef struct { + bool irqWut; /*!< Wake-Up Timer IRQ received (cleared upon read) */ + struct { + uint8_t lastMeas; /*!< Value of the latest measurement */ + uint16_t + reference; /*!< Current reference value (TD format if SW TD enabled) */ + bool irqWu; /*!< Amplitude WU IRQ received (cleared upon read) */ + } indAmp; /*!< Inductive Amplitude */ + struct { + uint8_t lastMeas; /*!< Value of the latest measurement */ + uint16_t + reference; /*!< Current reference value (TD format if SW TD enabled) */ + bool irqWu; /*!< Phase WU IRQ received (cleared upon read) */ + } indPha; /*!< Inductive Phase */ + struct { + uint8_t lastMeas; /*!< Value of the latest measurement */ + uint16_t reference; /*!< Current reference value */ + bool irqWu; /*!< Capacitive WU IRQ received (cleared upon read) */ + } cap; /*!< Capacitive */ +} rfalWakeUpInfo; + +#endif /* RFAL_FEATURES_H */ diff --git a/core/embed/io/nfc/rfal/source/st25r3916/rfal_rfst25r3916.c b/core/embed/io/nfc/rfal/source/st25r3916/rfal_rfst25r3916.c new file mode 100644 index 0000000000..0e712e6f10 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/rfal_rfst25r3916.c @@ -0,0 +1,5669 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file + * + * \author Gustavo Patricio + * + * \brief RF Abstraction Layer (RFAL) + * + * RFAL implementation for ST25R3916 + */ + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ + +#include "rfal_analogConfig.h" +#include "rfal_chip.h" +#include "rfal_crc.h" +#include "rfal_iso15693_2.h" +#include "rfal_utils.h" +#include "st25r3916.h" +#include "st25r3916_com.h" +#include "st25r3916_irq.h" + +/* + ****************************************************************************** + * ENABLE SWITCHS + ****************************************************************************** + */ + +/* Specific features may be enabled or disabled by user at rfal_platform.h + * Default configuration (ST25R dependant) also provided at rfal_defConfig.h + * + * RFAL_FEATURE_LISTEN_MODE + * RFAL_FEATURE_WAKEUP_MODE + * RFAL_FEATURE_LOWPOWER_MODE + */ + +/* +****************************************************************************** +* GLOBAL TYPES +****************************************************************************** +*/ + +/*! Struct that holds all involved on a Transceive including the context passed + * by the caller */ +typedef struct { + rfalTransceiveState state; /*!< Current transceive state */ + rfalTransceiveState lastState; /*!< Last transceive state (debug purposes) */ + ReturnCode status; /*!< Current status/error of the transceive */ + + rfalTransceiveContext ctx; /*!< The transceive context given by the caller */ +} rfalTxRx; + +/*! Struct that holds certain WU mode information to be retrieved by + * rfalWakeUpModeGetInfo */ +typedef struct { + bool irqWut; /*!< Wake-Up Timer IRQ received (cleared upon read) */ + + struct { + uint8_t lastMeas; /*!< Value of the latest measurement */ + bool irqWu; /*!< Amplitude WU IRQ received (cleared upon read) */ + } indAmp; /*!< Inductive Amplitude */ + struct { + uint8_t lastMeas; /*!< Value of the latest measurement */ + bool irqWu; /*!< Phase WU IRQ received (cleared upon read) */ + } indPha; /*!< Inductive Phase */ + struct { + uint8_t lastMeas; /*!< Value of the latest measurement */ + bool irqWu; /*!< Capacitive WU IRQ received (cleared upon read) */ + } cap; /*!< Capacitance */ +} rfalWakeUpData; + +/*! Local struct that holds context for the Listen Mode */ +typedef struct { + rfalLmState state; /*!< Current Listen Mode state */ + uint32_t mdMask; /*!< Listen Mode mask used */ + uint32_t mdReg; /*!< Listen Mode register value used */ + uint32_t mdIrqs; /*!< Listen Mode IRQs used */ + rfalBitRate brDetected; /*!< Last bit rate detected */ + + uint8_t *rxBuf; /*!< Location to store incoming data in Listen Mode */ + uint16_t rxBufLen; /*!< Length of rxBuf */ + uint16_t *rxLen; /*!< Pointer to write the data length placed into rxBuf */ + bool dataFlag; /*!< Listen Mode current Data Flag */ + bool iniFlag; /*!< Listen Mode initialized Flag (FeliCa slots) */ +} rfalLm; + +/*! Struct that holds all context for the Wake-Up Mode */ +typedef struct { + rfalWumState state; /*!< Current Wake-Up Mode state */ + rfalWakeUpConfig cfg; /*!< Current Wake-Up Mode config */ + rfalWakeUpData info; /*!< Current Wake-Up Mode info */ + uint32_t refWUTrg; /*!< Trigger used for refWU */ +} rfalWum; + +/*! Struct that holds all context for the Low Power Mode */ +typedef struct { + bool isRunning; +} rfalLpm; + +/*! Struct that holds the timings GT and FDTs */ +typedef struct { + uint32_t GT; /*!< GT in 1/fc */ + uint32_t FDTListen; /*!< FDTListen in 1/fc */ + uint32_t FDTPoll; /*!< FDTPoll in 1/fc */ + uint8_t nTRFW; /*!< n*TRFW (last two bits) used during RF CA */ +} rfalTimings; + +/*! Struct that holds the software timers */ +typedef struct { + uint32_t GT; /*!< RFAL's GT timer */ + uint32_t RXE; /*!< Timer between RXS - RXE */ + uint32_t PPON2; /*!< Timer between TXE - PPON2 */ + uint32_t txRx; /*!< Transceive sanity timer */ +} rfalTimers; + +/*! Struct that holds the RFAL's callbacks */ +typedef struct { + rfalPreTxRxCallback preTxRx; /*!< RFAL's Pre TxRx callback */ + rfalPostTxRxCallback postTxRx; /*!< RFAL's Post TxRx callback */ + rfalSyncTxRxCallback syncTxRx; /*!< RFAL's Sync TxRx callback */ + rfalLmEonCallback lmEon; /*!< RFAL's LM EON callback */ +} rfalCallbacks; + +/*! Struct that holds counters to control the FIFO on Tx and Rx */ +typedef struct { + uint16_t expWL; /*!< The amount of bytes expected to be Tx when a WL interrupt + occours */ + uint16_t bytesTotal; /*!< Total bytes to be transmitted OR the total bytes + received */ + uint16_t bytesWritten; /*!< Amount of bytes already written on FIFO (Tx) OR + read (RX) from FIFO and written on rxBuffer*/ + uint8_t status[ST25R3916_FIFO_STATUS_LEN]; /*!< FIFO Status Registers */ +} rfalFIFO; + +/*! Struct that holds RFAL's configuration settings */ +typedef struct { + uint8_t obsvModeTx; /*!< RFAL's config of the ST25R3916's observation mode + while Tx */ + uint8_t obsvModeRx; /*!< RFAL's config of the ST25R3916's observation mode + while Rx */ + rfalEHandling eHandling; /*!< RFAL's error handling config/mode */ +} rfalConfigs; + +/*! Struct that holds NFC-A data - Used only inside + * rfalISO14443ATransceiveAnticollisionFrame() */ +typedef struct { + uint8_t collByte; /*!< NFC-A Anticollision collision byte */ + uint8_t *buf; /*!< NFC-A Anticollision frame buffer */ + uint8_t *bytesToSend; /*!< NFC-A Anticollision NFCID|UID byte context */ + uint8_t *bitsToSend; /*!< NFC-A Anticollision NFCID|UID bit context */ + uint16_t *rxLength; /*!< NFC-A Anticollision received length */ +} rfalNfcaWorkingData; + +/*! Struct that holds NFC-F data - Used only inside rfalFelicaPoll() */ +typedef struct { + uint16_t actLen; /* Received length */ + rfalFeliCaPollRes *pollResList; /* Location of NFC-F device list */ + uint8_t pollResListSize; /* Size of NFC-F device list */ + uint8_t devDetected; /* Number of devices detected */ + uint8_t colDetected; /* Number of collisions detected */ + uint8_t *devicesDetected; /* Location to place number of devices */ + uint8_t *collisionsDetected; /* Location to place number of collisions */ + rfalEHandling curHandling; /* RFAL's error handling */ + rfalFeliCaPollRes + pollResponses[RFAL_FELICA_POLL_MAX_SLOTS]; /* FeliCa Poll response buffer + (16 slots) */ +} rfalNfcfWorkingData; + +/*! Struct that holds NFC-V current context + * + * This buffer has to be big enough for coping with maximum response size + * (hamming coded) + * - inventory requests responses: 14*2+2 bytes + * - read single block responses: (32+4)*2+2 bytes + * - read multiple block could be very long... -> not supported + * - current implementation expects it be written in one bulk into FIFO + * - needs to be above FIFO water level of ST25R3916 (200) + * - the coding function needs to be able to + * put more than FIFO water level bytes into it (n*64+1)>200 */ +typedef struct { + uint8_t codingBuffer[((2 + 255 + 3) * 2)]; /*!< Coding buffer, length MUST + be above 257: [257; ...] */ + uint16_t nfcvOffset; /*!< Offset needed for ISO15693 coding function */ + rfalTransceiveContext origCtx; /*!< context provided by user */ + uint16_t ignoreBits; /*!< Number of bits at the beginning of a frame to be + ignored when decoding */ +} rfalNfcvWorkingData; + +/*! RFAL instance */ +typedef struct { + rfalState state; /*!< RFAL's current state */ + rfalMode mode; /*!< RFAL's current mode */ + rfalBitRate txBR; /*!< RFAL's current Tx Bit Rate */ + rfalBitRate rxBR; /*!< RFAL's current Rx Bit Rate */ + bool field; /*!< Current field state (On / Off) */ + + rfalConfigs conf; /*!< RFAL's configuration settings */ + rfalTimings timings; /*!< RFAL's timing setting */ + rfalTxRx TxRx; /*!< RFAL's transceive management */ + rfalFIFO fifo; /*!< RFAL's FIFO management */ + rfalTimers tmr; /*!< RFAL's Software timers */ + rfalCallbacks callbacks; /*!< RFAL's callbacks */ + +#if RFAL_FEATURE_LISTEN_MODE + rfalLm Lm; /*!< RFAL's listen mode management */ +#endif /* RFAL_FEATURE_LISTEN_MODE */ + +#if RFAL_FEATURE_WAKEUP_MODE + rfalWum wum; /*!< RFAL's Wake-up mode management */ +#endif /* RFAL_FEATURE_WAKEUP_MODE */ + +#if RFAL_FEATURE_LOWPOWER_MODE + rfalLpm lpm; /*!< RFAL's Low power mode management */ +#endif /* RFAL_FEATURE_LOWPOWER_MODE */ + +#if RFAL_FEATURE_NFCA + rfalNfcaWorkingData + nfcaData; /*!< RFAL's working data when supporting NFC-A */ +#endif /* RFAL_FEATURE_NFCA */ + +#if RFAL_FEATURE_NFCF + rfalNfcfWorkingData + nfcfData; /*!< RFAL's working data when supporting NFC-F */ +#endif /* RFAL_FEATURE_NFCF */ + +#if RFAL_FEATURE_NFCV + rfalNfcvWorkingData + nfcvData; /*!< RFAL's working data when performing NFC-V */ +#endif /* RFAL_FEATURE_NFCV */ + +} rfal; + +/*! Felica's command set */ +typedef enum { + FELICA_CMD_POLLING = + 0x00, /*!< Felica Poll/REQC command (aka SENSF_REQ) to identify a card */ + FELICA_CMD_POLLING_RES = + 0x01, /*!< Felica Poll/REQC command (aka SENSF_RES) response */ + FELICA_CMD_REQUEST_SERVICE = + 0x02, /*!< verify the existence of Area and Service */ + FELICA_CMD_REQUEST_RESPONSE = 0x04, /*!< verify the existence of a card */ + FELICA_CMD_READ_WITHOUT_ENCRYPTION = + 0x06, /*!< read Block Data from a Service that requires no authentication + */ + FELICA_CMD_WRITE_WITHOUT_ENCRYPTION = + 0x08, /*!< write Block Data to a Service that requires no authentication + */ + FELICA_CMD_REQUEST_SYSTEM_CODE = + 0x0C, /*!< acquire the System Code registered to a card */ + FELICA_CMD_AUTHENTICATION1 = 0x10, /*!< authenticate a card */ + FELICA_CMD_AUTHENTICATION2 = + 0x12, /*!< allow a card to authenticate a Reader/Writer */ + FELICA_CMD_READ = + 0x14, /*!< read Block Data from a Service that requires authentication */ + FELICA_CMD_WRITE = + 0x16, /*!< write Block Data to a Service that requires authentication */ +} t_rfalFeliCaCmd; + +/*! Union representing all PTMem sections */ +typedef union { /* PRQA S 0750 # MISRA 19.2 - Both members are of the same + type, just different names. Thus no problem can occur. */ + uint8_t PTMem_A[ST25R3916_PTM_A_LEN]; /*!< PT_Memory area allocated for NFC-A + configuration */ + uint8_t PTMem_F[ST25R3916_PTM_F_LEN]; /*!< PT_Memory area allocated for NFC-F + configuration */ + uint8_t TSN[ST25R3916_PTM_TSN_LEN]; /*!< PT_Memory area allocated for TSN - + Random numbers */ +} t_rfalPTMem; + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ + +#define RFAL_FIFO_IN_WL \ + 200U /*!< Number of bytes in the FIFO when WL interrupt occurs while Tx */ +#define RFAL_FIFO_OUT_WL \ + (ST25R3916_FIFO_DEPTH - \ + RFAL_FIFO_IN_WL) /*!< Number of bytes sent/out of the FIFO when WL \ + interrupt occurs while Tx */ + +#define RFAL_FIFO_STATUS_REG1 \ + 0U /*!< Location of FIFO status register 1 in local copy */ +#define RFAL_FIFO_STATUS_REG2 \ + 1U /*!< Location of FIFO status register 2 in local copy */ +#define RFAL_FIFO_STATUS_INVALID \ + 0xFFU /*!< Value indicating that the local FIFO status in invalid|cleared */ + +#define RFAL_ST25R3916_GPT_MAX_1FC \ + rfalConv8fcTo1fc(0xFFFFU) /*!< Max GPT steps in 1fc (0xFFFF steps of 8/fc => \ + 0xFFFF * 590ns = 38,7ms) */ +#define RFAL_ST25R3916_NRT_MAX_1FC \ + rfalConv4096fcTo1fc(0xFFFFU) /*!< Max NRT steps in 1fc (0xFFFF steps of \ + 4096/fc => 0xFFFF * 302us = 19.8s ) */ +#define RFAL_ST25R3916_NRT_DISABLED \ + 0U /*!< NRT Disabled: All 0 No-response timer is not started, wait forever \ + */ +#define RFAL_ST25R3916_MRT_MAX_1FC \ + rfalConv64fcTo1fc(0x00FFU) /*!< Max MRT steps in 1fc (0x00FF steps of 64/fc \ + => 0x00FF * 4.72us = 1.2ms ) */ +#define RFAL_ST25R3916_MRT_MIN_1FC \ + rfalConv64fcTo1fc(0x0004U) /*!< Min MRT steps in 1fc ( 0<=mrt<=4 ; 4 (64/fc) \ + => 0x0004 * 4.72us = 18.88us ) */ +#define RFAL_ST25R3916_GT_MAX_1FC \ + rfalConvMsTo1fc(6000U) /*!< Max GT value allowed in 1/fc (SFGI=14 => SFGT + \ + dSFGT = 5.4s) */ +#define RFAL_ST25R3916_GT_MIN_1FC \ + rfalConvMsTo1fc( \ + RFAL_ST25R3916_SW_TMR_MIN_1MS) /*!< Min GT value allowed in 1/fc */ +#define RFAL_ST25R3916_SW_TMR_MIN_1MS 1U /*!< Min value of a SW timer in ms */ + +#define RFAL_OBSMODE_DISABLE 0x00U /*!< Observation Mode disabled */ + +#define RFAL_RX_INC_BYTE_LEN \ + (uint8_t)1U /*!< Threshold where incoming rx shall be considered incomplete \ + byte NFC - T2T */ +#define RFAL_EMVCO_RX_MAXLEN \ + (uint8_t)4U /*!< Maximum value where EMVCo to apply special error handling \ + */ + +#define RFAL_NORXE_TOUT \ + 50U /*!< Timeout to be used on a potential missing RXE - Silicon ST25R3916 \ + Errata #2.1.2 */ + +#define RFAL_ISO14443A_SDD_RES_LEN \ + 5U /*!< SDD_RES | Anticollision (UID CLn) length - rfalNfcaSddRes */ +#define RFAL_ISO14443A_CRC_INTVAL \ + 0x6363 /*!< ISO14443 CRC Initial Value|Register */ + +#define RFAL_FELICA_POLL_DELAY_TIME \ + 512U /*!< FeliCa Poll Processing time is 2.417 ms ~512*64/fc Digital 1.1 A4 \ + */ +#define RFAL_FELICA_POLL_SLOT_TIME \ + 256U /*!< FeliCa Poll Time Slot duration is 1.208 ms ~256*64/fc Digital 1.1 \ + A4 */ + +#define RFAL_LM_SENSF_RD0_POS \ + 17U /*!< FeliCa SENSF_RES Request Data RD0 position */ +#define RFAL_LM_SENSF_RD1_POS \ + 18U /*!< FeliCa SENSF_RES Request Data RD1 position */ + +#define RFAL_LM_NFCID_INCOMPLETE \ + 0x04U /*!< NFCA NFCID not complete bit in SEL_RES (SAK) */ + +#define RFAL_ISO15693_IGNORE_BITS \ + rfalConvBytesToBits( \ + 2U) /*!< Ignore collisions before the UID (RES_FLAG + DSFID) */ +#define RFAL_ISO15693_INV_RES_LEN \ + 12U /*!< ISO15693 Inventory response length with CRC (bytes) */ +#define RFAL_ISO15693_INV_RES_DUR \ + 4U /*!< ISO15693 Inventory response duration @ 26 kbps (ms) */ + +#define RFAL_WU_MIN_WEIGHT_VAL \ + 4U /*!< ST25R3916 minimum Wake-up weight value \ + */ + +/*******************************************************************************/ + +#define RFAL_LM_GT \ + rfalConvUsTo1fc(100U) /*!< Listen Mode Guard Time enforced (GT - Passive; \ + TIRFG - Active) */ +#define RFAL_FDT_POLL_ADJUSTMENT \ + rfalConvUsTo1fc(80U) /*!< FDT Poll adjustment: Time between the expiration \ + of GPT to the actual Tx */ +#define RFAL_FDT_LISTEN_MRT_ADJUSTMENT \ + 64U /*!< MRT jitter adjustment: timeout will be between [ tout ; tout + 64 \ + cycles ] */ +#define RFAL_AP2P_FIELDOFF_TCMDOFF \ + 1356U /*!< Time after TXE and Field Off t,CMD,OFF Activity 2.1 3.2.1.3 \ + & C */ + +#ifndef RFAL_ST25R3916_AAT_SETTLE +#define RFAL_ST25R3916_AAT_SETTLE \ + 5U /*!< Time in ms required for AAT pins and Osc to settle after en bit set \ + */ +#endif /* RFAL_ST25R3916_AAT_SETTLE */ + +#ifndef RFAL_ST25R3916B_AAT_SETTLE +#define RFAL_ST25R3916B_AAT_SETTLE \ + ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_4_83ms /*!< Time between Oscilator \ + stable and TX On in \ + meas_tx_del steps */ +#endif /* RFAL_ST25R3916B_AAT_SETTLE */ + +/*! FWT adjustment: + * 64 : NRT jitter between TXE and NRT start */ +#define RFAL_FWT_ADJUSTMENT 64U + +/*! FWT ISO14443A adjustment: + * 512 : 4bit length + * 64 : Half a bit duration due to ST25R3916 Coherent receiver (1/fc) */ +#define RFAL_FWT_A_ADJUSTMENT (512U + 64U) + +/*! FWT ISO14443B adjustment: + * SOF (14etu) + 1Byte (10etu) + 1etu (IRQ comes 1etu after first byte) - + * 3etu (ST25R3916 sends TXE 3etu after) */ +#define RFAL_FWT_B_ADJUSTMENT (((14U + 10U + 1U) - 3U) * 128U) + +/*! FWT FeliCa 212 adjustment: + * 1024 : Length of the two Sync bytes at 212kbps */ +#define RFAL_FWT_F_212_ADJUSTMENT 1024U + +/*! FWT FeliCa 424 adjustment: + * 512 : Length of the two Sync bytes at 424kbps */ +#define RFAL_FWT_F_424_ADJUSTMENT 512U + +/*! Time between our field Off and other peer field On : Tadt + (n x Trfw) + * Ecma 340 11.1.2 - Tadt: [56.64 , 188.72] us ; n: [0 , 3] ; Trfw = 37.76 us + * Should be: 189 + (3*38) = 303us ; we'll use a more relaxed setting: 605 us */ +#define RFAL_AP2P_FIELDON_TADTTRFW rfalConvUsTo1fc(605U) + +/*! FDT Listen adjustment for ISO14443A EMVCo 2.6 4.8.1.3 ; + * Digital 1.1 6.10 + * + * 276: Time from the rising pulse of the pause of the logic '1' (i.e. the time + * point to measure the deaftime from), to the actual end of the EOF sequence + * (the point where the MRT starts). Please note that the ST25R391x uses the + * ISO14443-2 definition where the EOF consists of logic '0' followed by + * sequence Y. -64: Further adjustment for receiver to be ready just before + * first bit + */ +#define RFAL_FDT_LISTEN_A_ADJUSTMENT (276U - 64U) + +/*! FDT Listen adjustment for ISO14443B EMVCo 2.6 4.8.1.6 ; Digital 1.1 7.9 + * + * 340: Time from the rising edge of the EoS to the starting point of the MRT + * timer (sometime after the final high part of the EoS is completed) + */ +#define RFAL_FDT_LISTEN_B_ADJUSTMENT 340U + +/*! FDT Listen adjustment for ISO15693 + * ISO15693 2000 8.4 t1 MIN = 4192/fc + * ISO15693 2009 9.1 t1 MIN = 4320/fc + * Digital 2.1 B.5 FDTV,LISTEN,MIN = 4310/fc + * Set FDT Listen one step earlier than on the more recent spec versions for + * greater interoprability + */ +#define RFAL_FDT_LISTEN_V_ADJUSTMENT 64U + +/*! FDT Poll adjustment for ISO14443B Correlator - sst 5 etu */ +#define RFAL_FDT_LISTEN_B_ADJT_CORR 128U + +/*! FDT Poll adjustment for ISO14443B Correlator sst window - 5 etu */ +#define RFAL_FDT_LISTEN_B_ADJT_CORR_SST 20U + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ + +/*! Calculates Transceive Sanity Timer. It accounts for the slowest bit rate and + * the longest data format 1s for transmission and reception of a 4K message at + * 106kpbs (~425ms each direction) plus TxRx preparation and FIFO load over + * Serial Interface */ +#define rfalCalcSanityTmr(fwt) (uint16_t)(1000U + rfalConv1fcToMs((fwt))) + +#define rfalGennTRFW(n) \ + ((uint8_t)(((n) + 1U) % 7U)) /*!< Generate next n*TRFW used for RFCA: modulo \ + a prime to avoid alias effects */ + +#define rfalCalcNumBytes(nBits) \ + (((uint32_t)(nBits) + 7U) / 8U) /*!< Returns the number of bytes required to \ + fit given the number of bits */ + +#define rfalTimerStart(timer, time_ms) \ + do { \ + platformTimerDestroy(timer); \ + (timer) = platformTimerCreate((uint16_t)(time_ms)); \ + } while (0) /*!< Configures and starts timer */ +#define rfalTimerisExpired(timer) \ + platformTimerIsExpired(timer) /*!< Checks if timer has expired */ +#define rfalTimerDestroy(timer) \ + platformTimerDestroy(timer) /*!< Destroys timer */ + +#define rfalST25R3916ObsModeDisable() \ + st25r3916WriteTestRegister( \ + 0x01U, (0x40U)) /*!< Disable ST25R3916 Observation mode */ +#define rfalST25R3916ObsModeTx() \ + st25r3916WriteTestRegister( \ + 0x01U, \ + (0x40U | gRFAL.conf.obsvModeTx)) /*!< Enable Tx Observation mode */ +#define rfalST25R3916ObsModeRx() \ + st25r3916WriteTestRegister( \ + 0x01U, \ + (0x40U | gRFAL.conf.obsvModeRx)) /*!< Enable Rx Observation mode */ + +#define rfalCheckDisableObsMode() \ + if (gRFAL.conf.obsvModeRx != 0U) { \ + rfalST25R3916ObsModeDisable(); \ + } /*!< Checks if the observation mode is enabled, and applies on ST25R3916 \ + */ +#define rfalCheckEnableObsModeTx() \ + if (gRFAL.conf.obsvModeTx != 0U) { \ + rfalST25R3916ObsModeTx(); \ + } /*!< Checks if the observation mode is enabled, and applies on ST25R3916 \ + */ +#define rfalCheckEnableObsModeRx() \ + if (gRFAL.conf.obsvModeRx != 0U) { \ + rfalST25R3916ObsModeRx(); \ + } /*!< Checks if the observation mode is enabled, and applies on ST25R3916 \ + */ + +#define rfalGetIncmplBits(FIFOStatus2) \ + (((FIFOStatus2) >> 1) & \ + 0x07U) /*!< Returns the number of bits from fifo status */ +#define rfalIsIncompleteByteError(error) \ + (((error) >= RFAL_ERR_INCOMPLETE_BYTE) && \ + ((error) <= RFAL_ERR_INCOMPLETE_BYTE_07)) /*!< Checks if given error is a \ + Incomplete error */ + +#define rfalAdjACBR(b) \ + (((uint16_t)(b) >= (uint16_t)RFAL_BR_52p97) \ + ? (uint16_t)(b) \ + : ((uint16_t)(b) + \ + 1U)) /*!< Adjusts ST25R391x Bit rate to Analog Configuration */ +#define rfalConvBR2ACBR(b) \ + (((rfalAdjACBR((b))) << RFAL_ANALOG_CONFIG_BITRATE_SHIFT) & \ + RFAL_ANALOG_CONFIG_BITRATE_MASK) /*!< Converts ST25R391x Bit rate to Analog \ + Configuration bit rate id */ + +#define rfalConvTDFormat(v) \ + ((uint16_t)(v) \ + << 8U) /*!< Converts a uint8_t to the format used in SW Tag Detection */ +#define rfalAddFracTDFormat(fd) ((((uint16_t)(fd)) & 0x03U) * 64U) + +#define rfalRunBlocking(e, fn) \ + do { \ + (e) = (fn); \ + rfalWorker(); \ + } while ((e) == \ + RFAL_ERR_BUSY) /*!< Macro used for the blocking operations */ + +/* + ****************************************************************************** + * LOCAL VARIABLES + ****************************************************************************** + */ + +static rfal gRFAL; /*!< RFAL module instance */ + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +static void rfalTransceiveTx(void); +static void rfalTransceiveRx(void); +static ReturnCode rfalTransceiveRunBlockingTx(void); +static void rfalPrepareTransceive(void); +static void rfalCleanupTransceive(void); +static void rfalErrorHandling(void); + +static ReturnCode rfalRunTransceiveWorker(void); +#if RFAL_FEATURE_LISTEN_MODE +static ReturnCode rfalRunListenModeWorker(void); +#endif /* RFAL_FEATURE_LISTEN_MODE */ +#if RFAL_FEATURE_WAKEUP_MODE +static void rfalRunWakeUpModeWorker(void); +static uint16_t rfalWakeUpModeFilter(uint16_t curRef, uint16_t curVal, + uint8_t weight); +#endif /* RFAL_FEATURE_WAKEUP_MODE */ + +static void rfalFIFOStatusUpdate(void); +static void rfalFIFOStatusClear(void); +static bool rfalFIFOStatusIsMissingPar(void); +static bool rfalFIFOStatusIsIncompleteByte(void); +static uint16_t rfalFIFOStatusGetNumBytes(void); +static uint8_t rfalFIFOGetNumIncompleteBits(void); + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ + +/*******************************************************************************/ +ReturnCode rfalInitialize(void) { + ReturnCode err; + + RFAL_EXIT_ON_ERR(err, st25r3916Initialize()); + + st25r3916ClearInterrupts(); + + /* Disable any previous observation mode */ + rfalST25R3916ObsModeDisable(); + + /*******************************************************************************/ + /* Apply RF Chip generic initialization */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_INIT)); + + /*******************************************************************************/ + /* Enable External Field Detector as: Automatics */ + st25r3916ChangeRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_en_fd_mask, + ST25R3916_REG_OP_CONTROL_en_fd_auto_efd); + + /* Clear FIFO status local copy */ + rfalFIFOStatusClear(); + + /*******************************************************************************/ + gRFAL.state = RFAL_STATE_INIT; + gRFAL.mode = RFAL_MODE_NONE; + gRFAL.field = false; + + /* Set RFAL default configs */ + gRFAL.conf.obsvModeRx = RFAL_OBSMODE_DISABLE; + gRFAL.conf.obsvModeTx = RFAL_OBSMODE_DISABLE; + gRFAL.conf.eHandling = RFAL_ERRORHANDLING_NONE; + + /* Transceive set to IDLE */ + gRFAL.TxRx.lastState = RFAL_TXRX_STATE_IDLE; + gRFAL.TxRx.state = RFAL_TXRX_STATE_IDLE; + + /* Disable all timings */ + gRFAL.timings.FDTListen = RFAL_TIMING_NONE; + gRFAL.timings.FDTPoll = RFAL_TIMING_NONE; + gRFAL.timings.GT = RFAL_TIMING_NONE; + gRFAL.timings.nTRFW = 0U; + + /* Destroy any previous pending timers */ + rfalTimerDestroy(gRFAL.tmr.GT); + rfalTimerDestroy(gRFAL.tmr.txRx); + rfalTimerDestroy(gRFAL.tmr.RXE); + rfalTimerDestroy(gRFAL.tmr.PPON2); + gRFAL.tmr.GT = RFAL_TIMING_NONE; + gRFAL.tmr.txRx = RFAL_TIMING_NONE; + gRFAL.tmr.RXE = RFAL_TIMING_NONE; + gRFAL.tmr.PPON2 = RFAL_TIMING_NONE; + + gRFAL.callbacks.preTxRx = NULL; + gRFAL.callbacks.postTxRx = NULL; + gRFAL.callbacks.syncTxRx = NULL; + gRFAL.callbacks.lmEon = NULL; + +#if RFAL_FEATURE_NFCV + /* Initialize NFC-V Data */ + gRFAL.nfcvData.ignoreBits = 0; +#endif /* RFAL_FEATURE_NFCV */ + +#if RFAL_FEATURE_LISTEN_MODE + /* Initialize Listen Mode */ + gRFAL.Lm.state = RFAL_LM_STATE_NOT_INIT; + gRFAL.Lm.brDetected = RFAL_BR_KEEP; + gRFAL.Lm.iniFlag = false; +#endif /* RFAL_FEATURE_LISTEN_MODE */ + +#if RFAL_FEATURE_WAKEUP_MODE + /* Initialize Wake-Up Mode */ + gRFAL.wum.state = RFAL_WUM_STATE_NOT_INIT; +#endif /* RFAL_FEATURE_WAKEUP_MODE */ + +#if RFAL_FEATURE_LOWPOWER_MODE + /* Initialize Low Power Mode */ + gRFAL.lpm.isRunning = false; +#endif /* RFAL_FEATURE_LOWPOWER_MODE */ + + /*******************************************************************************/ + /* Perform Automatic Calibration (if configured to do so). * Registers set by + * rfalSetAnalogConfig will tell rfalCalibrate what to perform*/ + rfalCalibrate(); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalCalibrate(void) { + uint16_t resValue; + + /* Check if RFAL is not initialized */ + if (gRFAL.state == RFAL_STATE_IDLE) { + return RFAL_ERR_WRONG_STATE; + } + + /*******************************************************************************/ + /* Perform ST25R3916 regulators and antenna calibration */ + /*******************************************************************************/ + + /* Automatic regulator adjustment only performed if not set manually on Analog + * Configs */ + if (st25r3916CheckReg(ST25R3916_REG_REGULATOR_CONTROL, + ST25R3916_REG_REGULATOR_CONTROL_reg_s, 0x00)) { + /* Adjust the regulators so that Antenna Calibrate has better Regulator + * values */ + rfalAdjustRegulators(&resValue); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalAdjustRegulators(uint16_t *result) { + ReturnCode err; +#ifdef ST25R3916B + uint8_t reg_auxmod; + + st25r3916ReadRegister(ST25R3916_REG_AUX_MOD, ®_auxmod); + + /* Disable AWS while adjusting regulators to have full field */ + st25r3916WriteRegister(ST25R3916_REG_AUX_MOD, + (reg_auxmod & ~ST25R3916_REG_AUX_MOD_rgs_am)); +#endif /* ST25R3916B */ + + err = st25r3916AdjustRegulators(result); + +#ifdef ST25R3916B + /* Restore AWS setting */ + st25r3916WriteRegister(ST25R3916_REG_AUX_MOD, reg_auxmod); +#endif /* ST25R3916B */ + + return err; +} + +/*******************************************************************************/ +void rfalSetUpperLayerCallback(rfalUpperLayerCallback pFunc) { + st25r3916IRQCallbackSet(pFunc); +} + +/*******************************************************************************/ +void rfalSetPreTxRxCallback(rfalPreTxRxCallback pFunc) { + gRFAL.callbacks.preTxRx = pFunc; +} + +/*******************************************************************************/ +void rfalSetSyncTxRxCallback(rfalSyncTxRxCallback pFunc) { + gRFAL.callbacks.syncTxRx = pFunc; +} + +/*******************************************************************************/ +void rfalSetPostTxRxCallback(rfalPostTxRxCallback pFunc) { + gRFAL.callbacks.postTxRx = pFunc; +} + +/*******************************************************************************/ +void rfalSetLmEonCallback(rfalLmEonCallback pFunc) { + gRFAL.callbacks.lmEon = pFunc; +} + +/*******************************************************************************/ +ReturnCode rfalDeinitialize(void) { + /* Deinitialize chip */ + st25r3916Deinitialize(); + + /* Set Analog configurations for deinitialization */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_DEINIT)); + + gRFAL.state = RFAL_STATE_IDLE; + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +void rfalSetObsvMode(uint32_t txMode, uint32_t rxMode) { + gRFAL.conf.obsvModeTx = (uint8_t)txMode; + gRFAL.conf.obsvModeRx = (uint8_t)rxMode; +} + +/*******************************************************************************/ +void rfalGetObsvMode(uint8_t *txMode, uint8_t *rxMode) { + if (txMode != NULL) { + *txMode = gRFAL.conf.obsvModeTx; + } + + if (rxMode != NULL) { + *rxMode = gRFAL.conf.obsvModeRx; + } +} + +/*******************************************************************************/ +void rfalDisableObsvMode(void) { + gRFAL.conf.obsvModeTx = RFAL_OBSMODE_DISABLE; + gRFAL.conf.obsvModeRx = RFAL_OBSMODE_DISABLE; +} + +/*******************************************************************************/ +ReturnCode rfalSetMode(rfalMode mode, rfalBitRate txBR, rfalBitRate rxBR) { + /* Check if RFAL is not initialized */ + if (gRFAL.state == RFAL_STATE_IDLE) { + return RFAL_ERR_WRONG_STATE; + } + + /* Check allowed bit rate value */ + if ((txBR == RFAL_BR_KEEP) || (rxBR == RFAL_BR_KEEP)) { + return RFAL_ERR_PARAM; + } + + switch (mode) { + /*******************************************************************************/ + case RFAL_MODE_POLL_NFCA: + + /* Disable wake up mode, if set */ + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + + /* Enable ISO14443A mode */ + st25r3916WriteRegister(ST25R3916_REG_MODE, + ST25R3916_REG_MODE_om_iso14443a); + + /* Set Analog configurations for this mode and bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_POLL_NFCA_T1T: + /* Disable wake up mode, if set */ + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + + /* Enable Topaz mode */ + st25r3916WriteRegister(ST25R3916_REG_MODE, ST25R3916_REG_MODE_om_topaz); + + /* Set Analog configurations for this mode and bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_POLL_NFCB: + + /* Disable wake up mode, if set */ + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + + /* Enable ISO14443B mode */ + st25r3916WriteRegister(ST25R3916_REG_MODE, + ST25R3916_REG_MODE_om_iso14443b); + + /* Set the EGT, SOF, EOF and EOF */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_ISO14443B_1, + (ST25R3916_REG_ISO14443B_1_egt_mask | + ST25R3916_REG_ISO14443B_1_sof_mask | ST25R3916_REG_ISO14443B_1_eof), + ((0U << ST25R3916_REG_ISO14443B_1_egt_shift) | + ST25R3916_REG_ISO14443B_1_sof_0_10etu | + ST25R3916_REG_ISO14443B_1_sof_1_2etu | + ST25R3916_REG_ISO14443B_1_eof_10etu)); + + /* Set the minimum TR1, SOF, EOF and EOF12 */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_ISO14443B_2, + (ST25R3916_REG_ISO14443B_2_tr1_mask | + ST25R3916_REG_ISO14443B_2_no_sof | ST25R3916_REG_ISO14443B_2_no_eof), + (ST25R3916_REG_ISO14443B_2_tr1_80fs80fs)); + + /* Set Analog configurations for this mode and bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_POLL_B_PRIME: + + /* Disable wake up mode, if set */ + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + + /* Enable ISO14443B mode */ + st25r3916WriteRegister(ST25R3916_REG_MODE, + ST25R3916_REG_MODE_om_iso14443b); + + /* Set the EGT, SOF, EOF and EOF */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_ISO14443B_1, + (ST25R3916_REG_ISO14443B_1_egt_mask | + ST25R3916_REG_ISO14443B_1_sof_mask | ST25R3916_REG_ISO14443B_1_eof), + ((0U << ST25R3916_REG_ISO14443B_1_egt_shift) | + ST25R3916_REG_ISO14443B_1_sof_0_10etu | + ST25R3916_REG_ISO14443B_1_sof_1_2etu | + ST25R3916_REG_ISO14443B_1_eof_10etu)); + + /* Set the minimum TR1, EOF and EOF12 */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_ISO14443B_2, + (ST25R3916_REG_ISO14443B_2_tr1_mask | + ST25R3916_REG_ISO14443B_2_no_sof | ST25R3916_REG_ISO14443B_2_no_eof), + (ST25R3916_REG_ISO14443B_2_tr1_80fs80fs | + ST25R3916_REG_ISO14443B_2_no_sof)); + + /* Set Analog configurations for this mode and bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_POLL_B_CTS: + + /* Disable wake up mode, if set */ + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + + /* Enable ISO14443B mode */ + st25r3916WriteRegister(ST25R3916_REG_MODE, + ST25R3916_REG_MODE_om_iso14443b); + + /* Set the EGT, SOF, EOF and EOF */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_ISO14443B_1, + (ST25R3916_REG_ISO14443B_1_egt_mask | + ST25R3916_REG_ISO14443B_1_sof_mask | ST25R3916_REG_ISO14443B_1_eof), + ((0U << ST25R3916_REG_ISO14443B_1_egt_shift) | + ST25R3916_REG_ISO14443B_1_sof_0_10etu | + ST25R3916_REG_ISO14443B_1_sof_1_2etu | + ST25R3916_REG_ISO14443B_1_eof_10etu)); + + /* Set the minimum TR1, clear SOF, EOF and EOF12 */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_ISO14443B_2, + (ST25R3916_REG_ISO14443B_2_tr1_mask | + ST25R3916_REG_ISO14443B_2_no_sof | ST25R3916_REG_ISO14443B_2_no_eof), + (ST25R3916_REG_ISO14443B_2_tr1_80fs80fs | + ST25R3916_REG_ISO14443B_2_no_sof | + ST25R3916_REG_ISO14443B_2_no_eof)); + + /* Set Analog configurations for this mode and bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCB | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_POLL_NFCF: + + /* Disable wake up mode, if set */ + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + + /* Enable FeliCa mode */ + st25r3916WriteRegister(ST25R3916_REG_MODE, ST25R3916_REG_MODE_om_felica); + + /* Set Analog configurations for this mode and bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCF | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCF | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_POLL_NFCV: + case RFAL_MODE_POLL_PICOPASS: + +#if !RFAL_FEATURE_NFCV + return RFAL_ERR_DISABLED; +#else + + /* Disable wake up mode, if set */ + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + + /* Set Analog configurations for this mode and bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCV | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCV | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX)); + break; + +#endif /* RFAL_FEATURE_NFCV */ + + /*******************************************************************************/ + case RFAL_MODE_POLL_ACTIVE_P2P: + + /* Set NFCIP1 active communication Initiator mode and Automatic Response + * RF Collision Avoidance to always after EOF */ + st25r3916WriteRegister( + ST25R3916_REG_MODE, + (ST25R3916_REG_MODE_targ_init | ST25R3916_REG_MODE_om_nfc | + ST25R3916_REG_MODE_nfc_ar_eof)); + + /* External Field Detector enabled as Automatics on rfalInitialize() */ + + /* Set NRT to start at end of TX (own) field */ + st25r3916ChangeRegisterBits(ST25R3916_REG_TIMER_EMV_CONTROL, + ST25R3916_REG_TIMER_EMV_CONTROL_nrt_nfc, + ST25R3916_REG_TIMER_EMV_CONTROL_nrt_nfc_off); + + /* Set GPT to start after end of TX, as GPT is used in active + * communication mode to timeout the field switching off after TXE */ + st25r3916SetStartGPTimer( + (uint16_t)rfalConv1fcTo8fc(RFAL_AP2P_FIELDOFF_TCMDOFF), + ST25R3916_REG_TIMER_EMV_CONTROL_gptc_etx_nfc); + + /* Set PPon2 timer with the max time between our field Off and other peer + * field On : Tadt + (n x Trfw) */ + st25r3916WriteRegister( + ST25R3916_REG_PPON2, + (uint8_t)rfalConv1fcTo64fc(RFAL_AP2P_FIELDON_TADTTRFW)); + + /* Set Analog configurations for this mode and bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_LISTEN_ACTIVE_P2P: + + /* Set NFCIP1 active communication Target mode and Automatic Response RF + * Collision Avoidance to always after EOF */ + st25r3916WriteRegister( + ST25R3916_REG_MODE, + (ST25R3916_REG_MODE_targ_targ | ST25R3916_REG_MODE_om_targ_nfcip | + ST25R3916_REG_MODE_nfc_ar_eof)); + + /* Set TARFG: 0 (75us+0ms=75us), as Target no Guard time needed */ + st25r3916WriteRegister(ST25R3916_REG_FIELD_ON_GT, 0U); + + /* External Field Detector enabled as Automatics on rfalInitialize() */ + + /* Set NRT to start at end of TX (own) field */ + st25r3916ChangeRegisterBits(ST25R3916_REG_TIMER_EMV_CONTROL, + ST25R3916_REG_TIMER_EMV_CONTROL_nrt_nfc, + ST25R3916_REG_TIMER_EMV_CONTROL_nrt_nfc_off); + + /* Set GPT to start after end of TX, as GPT is used in active + * communication mode to timeout the field switching off after TXE */ + st25r3916SetStartGPTimer( + (uint16_t)rfalConv1fcTo8fc(RFAL_AP2P_FIELDOFF_TCMDOFF), + ST25R3916_REG_TIMER_EMV_CONTROL_gptc_etx_nfc); + + /* Set PPon2 timer with the max time between our field Off and other peer + * field On : Tadt + (n x Trfw) */ + st25r3916WriteRegister( + ST25R3916_REG_PPON2, + (uint8_t)rfalConv1fcTo64fc(RFAL_AP2P_FIELDON_TADTTRFW)); + + /* Set Analog configurations for this mode and bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_AP2P | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_LISTEN_NFCA: + + /* Disable wake up mode, if set */ + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + + /* Enable Passive Target NFC-A mode, disable any Collision Avoidance */ + st25r3916WriteRegister( + ST25R3916_REG_MODE, + (ST25R3916_REG_MODE_targ | ST25R3916_REG_MODE_om_targ_nfca | + ST25R3916_REG_MODE_nfc_ar_off)); + + /* Set Analog configurations for this mode */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_LISTEN_NFCF: + + /* Disable wake up mode, if set */ + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + + /* Enable Passive Target NFC-F mode, disable any Collision Avoidance */ + st25r3916WriteRegister( + ST25R3916_REG_MODE, + (ST25R3916_REG_MODE_targ | ST25R3916_REG_MODE_om_targ_nfcf | + ST25R3916_REG_MODE_nfc_ar_off)); + + /* Set Analog configurations for this mode */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_NFCF | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_LISTEN | RFAL_ANALOG_CONFIG_TECH_NFCF | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_LISTEN_NFCB: + return RFAL_ERR_NOTSUPP; + + /*******************************************************************************/ + default: + return RFAL_ERR_NOT_IMPLEMENTED; + } + + /* Set state as STATE_MODE_SET only if not initialized yet (PSL) */ + gRFAL.state = + ((gRFAL.state < RFAL_STATE_MODE_SET) ? RFAL_STATE_MODE_SET : gRFAL.state); + gRFAL.mode = mode; + + /* Apply the given bit rate */ + return rfalSetBitRate(txBR, rxBR); +} + +/*******************************************************************************/ +rfalMode rfalGetMode(void) { return gRFAL.mode; } + +/*******************************************************************************/ +ReturnCode rfalSetBitRate(rfalBitRate txBR, rfalBitRate rxBR) { + ReturnCode ret; + + /* Check if RFAL is not initialized */ + if (gRFAL.state == RFAL_STATE_IDLE) { + return RFAL_ERR_WRONG_STATE; + } + + /* Store the new Bit Rates */ + gRFAL.txBR = ((txBR == RFAL_BR_KEEP) ? gRFAL.txBR : txBR); + gRFAL.rxBR = ((rxBR == RFAL_BR_KEEP) ? gRFAL.rxBR : rxBR); + + /* Update the bitrate reg if not in NFCV mode (streaming) */ + if ((RFAL_MODE_POLL_NFCV != gRFAL.mode) && + (RFAL_MODE_POLL_PICOPASS != gRFAL.mode)) { + /* Set bit rate register */ + RFAL_EXIT_ON_ERR( + ret, st25r3916SetBitrate((uint8_t)gRFAL.txBR, (uint8_t)gRFAL.rxBR)); + } + + switch (gRFAL.mode) { + /*******************************************************************************/ + case RFAL_MODE_POLL_NFCA: + case RFAL_MODE_POLL_NFCA_T1T: + + /* Set Analog configurations for this bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_POLL_COMMON)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_POLL | + RFAL_ANALOG_CONFIG_TECH_NFCA | + rfalConvBR2ACBR(gRFAL.txBR) | + RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_POLL | + RFAL_ANALOG_CONFIG_TECH_NFCA | + rfalConvBR2ACBR(gRFAL.rxBR) | + RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_POLL_NFCB: + case RFAL_MODE_POLL_B_PRIME: + case RFAL_MODE_POLL_B_CTS: + + /* Set Analog configurations for this bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_POLL_COMMON)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_POLL | + RFAL_ANALOG_CONFIG_TECH_NFCB | + rfalConvBR2ACBR(gRFAL.txBR) | + RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_POLL | + RFAL_ANALOG_CONFIG_TECH_NFCB | + rfalConvBR2ACBR(gRFAL.rxBR) | + RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_POLL_NFCF: + + /* Set Analog configurations for this bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_POLL_COMMON)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_POLL | + RFAL_ANALOG_CONFIG_TECH_NFCF | + rfalConvBR2ACBR(gRFAL.txBR) | + RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_POLL | + RFAL_ANALOG_CONFIG_TECH_NFCF | + rfalConvBR2ACBR(gRFAL.rxBR) | + RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_POLL_NFCV: + case RFAL_MODE_POLL_PICOPASS: + +#if !RFAL_FEATURE_NFCV + return RFAL_ERR_DISABLED; +#else + + if (((gRFAL.rxBR != RFAL_BR_26p48) && (gRFAL.rxBR != RFAL_BR_52p97)) || + ((gRFAL.txBR != RFAL_BR_1p66) && (gRFAL.txBR != RFAL_BR_26p48))) { + return RFAL_ERR_PARAM; + } + + { + const struct iso15693StreamConfig *rfalIso15693StreamConfig; + struct st25r3916StreamConfig st25rStreamConf; + rfalIso15693PhyConfig_t config; + + config.coding = + ((gRFAL.txBR == RFAL_BR_1p66) ? ISO15693_VCD_CODING_1_256 + : ISO15693_VCD_CODING_1_4); + switch (gRFAL.rxBR) { + case RFAL_BR_52p97: /* PRQA S 2880 # MISRA 2.1 - Inconsistently + marked as unreachable code */ + config.speedMode = 1; + break; + default: + config.speedMode = 0; + break; + } + + rfalIso15693PhyConfigure(&config, &rfalIso15693StreamConfig); + + /* MISRA 11.3 - Cannot point directly into different object type, copy + * to local var */ + st25rStreamConf.din = rfalIso15693StreamConfig->din; + st25rStreamConf.dout = rfalIso15693StreamConfig->dout; + st25rStreamConf.report_period_length = + rfalIso15693StreamConfig->report_period_length; + st25rStreamConf.useBPSK = rfalIso15693StreamConfig->useBPSK; + st25r3916StreamConfigure(&st25rStreamConf); + } + + /* Set Analog configurations for this bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_POLL_COMMON)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_POLL | + RFAL_ANALOG_CONFIG_TECH_NFCV | + rfalConvBR2ACBR(gRFAL.txBR) | + RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_POLL | + RFAL_ANALOG_CONFIG_TECH_NFCV | + rfalConvBR2ACBR(gRFAL.rxBR) | + RFAL_ANALOG_CONFIG_RX)); + break; + +#endif /* RFAL_FEATURE_NFCV */ + + /*******************************************************************************/ + case RFAL_MODE_POLL_ACTIVE_P2P: + + /* Set Analog configurations for this bit rate */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_POLL_COMMON)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_POLL | + RFAL_ANALOG_CONFIG_TECH_AP2P | + rfalConvBR2ACBR(gRFAL.txBR) | + RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_POLL | + RFAL_ANALOG_CONFIG_TECH_AP2P | + rfalConvBR2ACBR(gRFAL.rxBR) | + RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_LISTEN_ACTIVE_P2P: + + /* Set Analog configurations for this bit rate */ + rfalSetAnalogConfig((RFAL_ANALOG_CONFIG_TECH_CHIP | + RFAL_ANALOG_CONFIG_CHIP_LISTEN_COMMON)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_LISTEN | + RFAL_ANALOG_CONFIG_TECH_AP2P | + rfalConvBR2ACBR(gRFAL.txBR) | + RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_LISTEN | + RFAL_ANALOG_CONFIG_TECH_AP2P | + rfalConvBR2ACBR(gRFAL.rxBR) | + RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_LISTEN_NFCA: + + /* Set Analog configurations for this bit rate */ + rfalSetAnalogConfig((RFAL_ANALOG_CONFIG_TECH_CHIP | + RFAL_ANALOG_CONFIG_CHIP_LISTEN_COMMON)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_LISTEN | + RFAL_ANALOG_CONFIG_TECH_NFCA | + rfalConvBR2ACBR(gRFAL.txBR) | + RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_LISTEN | + RFAL_ANALOG_CONFIG_TECH_NFCA | + rfalConvBR2ACBR(gRFAL.rxBR) | + RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_LISTEN_NFCF: + + /* Set Analog configurations for this bit rate */ + rfalSetAnalogConfig((RFAL_ANALOG_CONFIG_TECH_CHIP | + RFAL_ANALOG_CONFIG_CHIP_LISTEN_COMMON)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_LISTEN | + RFAL_ANALOG_CONFIG_TECH_NFCF | + rfalConvBR2ACBR(gRFAL.txBR) | + RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig((rfalAnalogConfigId)(RFAL_ANALOG_CONFIG_LISTEN | + RFAL_ANALOG_CONFIG_TECH_NFCF | + rfalConvBR2ACBR(gRFAL.rxBR) | + RFAL_ANALOG_CONFIG_RX)); + break; + + /*******************************************************************************/ + case RFAL_MODE_LISTEN_NFCB: + case RFAL_MODE_NONE: + return RFAL_ERR_WRONG_STATE; + + /*******************************************************************************/ + default: + return RFAL_ERR_NOT_IMPLEMENTED; + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalGetBitRate(rfalBitRate *txBR, rfalBitRate *rxBR) { + if ((gRFAL.state == RFAL_STATE_IDLE) || (gRFAL.mode == RFAL_MODE_NONE)) { + return RFAL_ERR_WRONG_STATE; + } + + if (txBR != NULL) { + *txBR = gRFAL.txBR; + } + + if (rxBR != NULL) { + *rxBR = gRFAL.rxBR; + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +void rfalSetErrorHandling(rfalEHandling eHandling) { + switch (eHandling) { + case RFAL_ERRORHANDLING_NONE: + st25r3916ClrRegisterBits(ST25R3916_REG_EMD_SUP_CONF, + ST25R3916_REG_EMD_SUP_CONF_emd_emv); + break; + + case RFAL_ERRORHANDLING_EMD: + /* MISRA 16.4: no empty default statement (in case RFAL_SW_EMD is defined) + */ +#ifndef RFAL_SW_EMD + st25r3916ModifyRegister( + ST25R3916_REG_EMD_SUP_CONF, + (ST25R3916_REG_EMD_SUP_CONF_emd_emv | + ST25R3916_REG_EMD_SUP_CONF_emd_thld_mask), + (ST25R3916_REG_EMD_SUP_CONF_emd_emv_on | RFAL_EMVCO_RX_MAXLEN)); +#endif /* RFAL_SW_EMD */ + break; + default: + /* MISRA 16.4: no empty default statement (a comment being enough) */ + break; + } + + gRFAL.conf.eHandling = eHandling; +} + +/*******************************************************************************/ +rfalEHandling rfalGetErrorHandling(void) { return gRFAL.conf.eHandling; } + +/*******************************************************************************/ +void rfalSetFDTPoll(uint32_t FDTPoll) { + gRFAL.timings.FDTPoll = RFAL_MIN(FDTPoll, RFAL_ST25R3916_GPT_MAX_1FC); +} + +/*******************************************************************************/ +uint32_t rfalGetFDTPoll(void) { return gRFAL.timings.FDTPoll; } + +/*******************************************************************************/ +void rfalSetFDTListen(uint32_t FDTListen) { + gRFAL.timings.FDTListen = RFAL_MIN(FDTListen, RFAL_ST25R3916_MRT_MAX_1FC); +} + +/*******************************************************************************/ +uint32_t rfalGetFDTListen(void) { return gRFAL.timings.FDTListen; } + +/*******************************************************************************/ +void rfalSetGT(uint32_t GT) { + gRFAL.timings.GT = RFAL_MIN(GT, RFAL_ST25R3916_GT_MAX_1FC); +} + +/*******************************************************************************/ +uint32_t rfalGetGT(void) { return gRFAL.timings.GT; } + +/*******************************************************************************/ +bool rfalIsGTExpired(void) { + if (gRFAL.tmr.GT != RFAL_TIMING_NONE) { + if (!rfalTimerisExpired(gRFAL.tmr.GT)) { + return false; + } + } + return true; +} + +/*******************************************************************************/ +ReturnCode rfalFieldOnAndStartGT(void) { + ReturnCode ret; + + /* Check if RFAL has been initialized (Oscillator should be running) and also + * if a direct register access has been performed and left the Oscillator Off + */ + if ((!st25r3916IsOscOn()) || (gRFAL.state < RFAL_STATE_INIT)) { + return RFAL_ERR_WRONG_STATE; + } + + ret = RFAL_ERR_NONE; + + /* Set Analog configurations for Field On event */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_FIELD_ON)); + + /*******************************************************************************/ + /* Perform collision avoidance and turn field On if not already On */ + if ((!st25r3916IsTxEnabled()) || (!gRFAL.field)) { + /* Set TARFG: 0 (75us+0ms=75us), GT is fulfilled using a SW timer */ + st25r3916WriteRegister(ST25R3916_REG_FIELD_ON_GT, 0U); + + /* Set External Field Detector as: Collision Avoidance Detection */ + st25r3916ChangeRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_en_fd_mask, + ST25R3916_REG_OP_CONTROL_en_fd_manual_efd_ca); + + /* Use Thresholds set by AnalogConfig */ + ret = st25r3916PerformCollisionAvoidance( + ST25R3916_CMD_INITIAL_RF_COLLISION, ST25R3916_THRESHOLD_DO_NOT_SET, + ST25R3916_THRESHOLD_DO_NOT_SET, + (ST25R3916_REG_AUX_nfc_n_mask & gRFAL.timings.nTRFW)); + + /* Restore External Field Detector as: Automatics */ + st25r3916ChangeRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_en_fd_mask, + ST25R3916_REG_OP_CONTROL_en_fd_auto_efd); + + /* n * TRFW timing shall vary Activity 2.1 3.3.1.1 */ + gRFAL.timings.nTRFW = rfalGennTRFW(gRFAL.timings.nTRFW); + + gRFAL.field = st25r3916IsTxEnabled(); + + /* Only turn on Receiver and Transmitter if field was successfully turned On + */ + if (gRFAL.field) { + st25r3916TxRxOn(); /* Enable Tx and Rx (Tx is already On)*/ + } + } + + /*******************************************************************************/ + /* Start GT timer in case the GT value is set */ + if ((gRFAL.timings.GT != RFAL_TIMING_NONE)) { + /* Ensure that a SW timer doesn't have a lower value then the minimum */ + rfalTimerStart(gRFAL.tmr.GT, + rfalConv1fcToMs(RFAL_MAX((gRFAL.timings.GT), + RFAL_ST25R3916_GT_MIN_1FC))); + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalFieldOff(void) { + /* Check whether a TxRx is not yet finished */ + if (gRFAL.TxRx.state != RFAL_TXRX_STATE_IDLE) { + rfalCleanupTransceive(); + } + + /* Disable Tx and Rx */ + st25r3916TxRxOff(); + + /* Set Analog configurations for Field Off event */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_FIELD_OFF)); + gRFAL.field = false; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalStartTransceive(const rfalTransceiveContext *ctx) { + uint32_t FxTAdj; /* FWT or FDT adjustment calculation */ + + /* Check for valid parameters */ + if (ctx == NULL) { + return RFAL_ERR_PARAM; + } + + /* If parity check is disabled CRC check must be disabled as well */ + if (((ctx->flags & (uint32_t)RFAL_TXRX_FLAGS_PAR_RX_KEEP) != 0U) && + ((ctx->flags & (uint32_t)RFAL_TXRX_FLAGS_CRC_RX_MANUAL) == 0U)) { + return RFAL_ERR_NOTSUPP; + } + + /* Ensure that RFAL is already Initialized and the mode has been set */ + if (gRFAL.state >= RFAL_STATE_MODE_SET) { + /*******************************************************************************/ + /* Check whether the field is already On, otherwise no TXE will be received + */ + if ((!st25r3916IsTxEnabled()) && + ((!rfalIsModePassiveListen(gRFAL.mode)) && (ctx->txBuf != NULL))) { + return RFAL_ERR_WRONG_STATE; + } + + gRFAL.TxRx.ctx = *ctx; + + /*******************************************************************************/ + if (gRFAL.timings.FDTListen != RFAL_TIMING_NONE) { + /* Calculate MRT adjustment accordingly to the current mode */ + FxTAdj = RFAL_FDT_LISTEN_MRT_ADJUSTMENT; + if (gRFAL.mode == RFAL_MODE_POLL_NFCA) { + FxTAdj += (uint32_t)RFAL_FDT_LISTEN_A_ADJUSTMENT; + } + if (gRFAL.mode == RFAL_MODE_POLL_NFCA_T1T) { + FxTAdj += (uint32_t)RFAL_FDT_LISTEN_A_ADJUSTMENT; + } + if (gRFAL.mode == RFAL_MODE_POLL_NFCB) { + FxTAdj += (uint32_t)RFAL_FDT_LISTEN_B_ADJUSTMENT; + } + if (gRFAL.mode == RFAL_MODE_POLL_NFCV) { + FxTAdj += (uint32_t)RFAL_FDT_LISTEN_V_ADJUSTMENT; + } + + /* Ensure that MRT is using 64/fc steps */ + st25r3916ClrRegisterBits(ST25R3916_REG_TIMER_EMV_CONTROL, + ST25R3916_REG_TIMER_EMV_CONTROL_mrt_step); + + /* If Correlator is being used further adjustment is required for NFCB */ + if (gRFAL.mode == RFAL_MODE_POLL_NFCB) { + if (st25r3916CheckReg(ST25R3916_REG_AUX, ST25R3916_REG_AUX_dis_corr, + 0x00U)) { + FxTAdj += + (uint32_t)RFAL_FDT_LISTEN_B_ADJT_CORR; /* Reduce FDT(Listen) */ + st25r3916SetRegisterBits( + ST25R3916_REG_CORR_CONF1, + ST25R3916_REG_CORR_CONF1_corr_s3); /* Ensure BPSK start to 33 + pilot pulses */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_SUBC_START_TIME, + ST25R3916_REG_SUBC_START_TIME_sst_mask, + RFAL_FDT_LISTEN_B_ADJT_CORR_SST); /* Set sst */ + } + } + + /* Set Minimum FDT(Listen) in which PICC is not allowed to send a response + */ + st25r3916WriteRegister( + ST25R3916_REG_MASK_RX_TIMER, + (uint8_t)rfalConv1fcTo64fc((FxTAdj > gRFAL.timings.FDTListen) + ? RFAL_ST25R3916_MRT_MIN_1FC + : (gRFAL.timings.FDTListen - FxTAdj))); + } + + /*******************************************************************************/ + /* FDT Poll will be loaded in rfalPrepareTransceive() once the previous was + * expired */ + + /*******************************************************************************/ + if ((gRFAL.TxRx.ctx.fwt != RFAL_FWT_NONE) && (gRFAL.TxRx.ctx.fwt != 0U)) { + /* Ensure proper timing configuration */ + if (gRFAL.timings.FDTListen >= gRFAL.TxRx.ctx.fwt) { + return RFAL_ERR_PARAM; + } + + FxTAdj = RFAL_FWT_ADJUSTMENT; + if (gRFAL.mode == RFAL_MODE_POLL_NFCA) { + FxTAdj += (uint32_t)RFAL_FWT_A_ADJUSTMENT; + } + if (gRFAL.mode == RFAL_MODE_POLL_NFCA_T1T) { + FxTAdj += (uint32_t)RFAL_FWT_A_ADJUSTMENT; + } + if (gRFAL.mode == RFAL_MODE_POLL_NFCB) { + FxTAdj += (uint32_t)RFAL_FWT_B_ADJUSTMENT; + } + if ((gRFAL.mode == RFAL_MODE_POLL_NFCF) || + (gRFAL.mode == RFAL_MODE_POLL_ACTIVE_P2P)) { + FxTAdj += + (uint32_t)((gRFAL.txBR == RFAL_BR_212) ? RFAL_FWT_F_212_ADJUSTMENT + : RFAL_FWT_F_424_ADJUSTMENT); + } + + /* Ensure that the given FWT doesn't exceed NRT maximum */ + gRFAL.TxRx.ctx.fwt = + RFAL_MIN((gRFAL.TxRx.ctx.fwt + FxTAdj), RFAL_ST25R3916_NRT_MAX_1FC); + + /* Set FWT in the NRT */ + st25r3916SetNoResponseTime(rfalConv1fcTo64fc(gRFAL.TxRx.ctx.fwt)); + } else { + /* Disable NRT, no NRE will be triggered, therefore wait endlessly for Rx + */ + st25r3916SetNoResponseTime(RFAL_ST25R3916_NRT_DISABLED); + } + + gRFAL.state = RFAL_STATE_TXRX; + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_IDLE; + gRFAL.TxRx.status = RFAL_ERR_BUSY; + +#if RFAL_FEATURE_NFCV + /*******************************************************************************/ + if ((RFAL_MODE_POLL_NFCV == gRFAL.mode) || + (RFAL_MODE_POLL_PICOPASS == + gRFAL.mode)) { /* Exchange receive buffer with internal buffer */ + gRFAL.nfcvData.origCtx = gRFAL.TxRx.ctx; + + gRFAL.TxRx.ctx.rxBuf = + ((gRFAL.nfcvData.origCtx.rxBuf != NULL) ? gRFAL.nfcvData.codingBuffer + : NULL); + gRFAL.TxRx.ctx.rxBufLen = + (uint16_t)rfalConvBytesToBits(sizeof(gRFAL.nfcvData.codingBuffer)); + gRFAL.TxRx.ctx.flags = (uint32_t)RFAL_TXRX_FLAGS_CRC_TX_MANUAL | + (uint32_t)RFAL_TXRX_FLAGS_CRC_RX_KEEP | + (uint32_t)RFAL_TXRX_FLAGS_NFCIP1_OFF | + (uint32_t)(gRFAL.nfcvData.origCtx.flags & + (uint32_t)RFAL_TXRX_FLAGS_AGC_OFF) | + (uint32_t)RFAL_TXRX_FLAGS_PAR_RX_KEEP | + (uint32_t)RFAL_TXRX_FLAGS_PAR_TX_NONE; + + /* In NFCV a TxRx with a valid txBuf and txBufSize==0 indicates to send an + * EOF */ + /* Skip logic below that would go directly into receive */ + if (gRFAL.TxRx.ctx.txBuf != NULL) { + return RFAL_ERR_NONE; + } + } +#endif /* RFAL_FEATURE_NFCV */ + +#ifdef ST25R3916B + /* Check if ST25R3916 AWS is enabled and AP2P */ + if (st25r3916CheckReg(ST25R3916_REG_AUX_MOD, ST25R3916_REG_AUX_MOD_rgs_am, + ST25R3916_REG_AUX_MOD_rgs_am) && + rfalIsModeActiveComm(gRFAL.mode)) { + /* If ST25R3916 with AWS set again the current mode to reload AWS config + */ + rfalSetMode(gRFAL.mode, gRFAL.txBR, gRFAL.rxBR); + } +#endif /* ST25R3916B */ + + /*******************************************************************************/ + /* Check if the Transceive start performing Tx or goes directly to Rx */ + if ((gRFAL.TxRx.ctx.txBuf == NULL) || (gRFAL.TxRx.ctx.txBufLen == 0U)) { + /* Clear FIFO, Clear and Enable the Interrupts */ + rfalPrepareTransceive(); + + /* In AP2P check the field status */ + if (rfalIsModeActiveComm(gRFAL.mode)) { + /* Disable our field upon a Rx reEnable, and start PPON2 manually */ + st25r3916TxOff(); + st25r3916ExecuteCommand(ST25R3916_CMD_START_PPON2_TIMER); + } + + /* No Tx done, enable the Receiver */ + st25r3916ExecuteCommand(ST25R3916_CMD_UNMASK_RECEIVE_DATA); + + /* Start NRT manually, if FWT = 0 (wait endlessly for Rx) chip will ignore + * anyhow */ + st25r3916ExecuteCommand(ST25R3916_CMD_START_NO_RESPONSE_TIMER); + + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_IDLE; + } + + return RFAL_ERR_NONE; + } + + return RFAL_ERR_WRONG_STATE; +} + +/*******************************************************************************/ +bool rfalIsTransceiveInTx(void) { + return ((gRFAL.TxRx.state >= RFAL_TXRX_STATE_TX_IDLE) && + (gRFAL.TxRx.state < RFAL_TXRX_STATE_RX_IDLE)); +} + +/*******************************************************************************/ +bool rfalIsTransceiveInRx(void) { + return (gRFAL.TxRx.state >= RFAL_TXRX_STATE_RX_IDLE); +} + +/*******************************************************************************/ +ReturnCode rfalTransceiveBlockingTx(uint8_t *txBuf, uint16_t txBufLen, + uint8_t *rxBuf, uint16_t rxBufLen, + uint16_t *actLen, uint32_t flags, + uint32_t fwt) { + ReturnCode ret; + rfalTransceiveContext ctx; + + rfalCreateByteFlagsTxRxContext(ctx, txBuf, txBufLen, rxBuf, rxBufLen, actLen, + flags, fwt); + RFAL_EXIT_ON_ERR(ret, rfalStartTransceive(&ctx)); + + return rfalTransceiveRunBlockingTx(); +} + +/*******************************************************************************/ +static ReturnCode rfalTransceiveRunBlockingTx(void) { + ReturnCode ret; + + do { + rfalWorker(); + ret = rfalGetTransceiveStatus(); + } while ((rfalIsTransceiveInTx()) && (ret == RFAL_ERR_BUSY)); + + if (rfalIsTransceiveInRx()) { + return RFAL_ERR_NONE; + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalTransceiveBlockingRx(void) { + ReturnCode ret; + + do { + rfalWorker(); + ret = rfalGetTransceiveStatus(); + } while ((rfalIsTransceiveInRx()) || (ret == RFAL_ERR_BUSY)); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalTransceiveBlockingTxRx(uint8_t *txBuf, uint16_t txBufLen, + uint8_t *rxBuf, uint16_t rxBufLen, + uint16_t *actLen, uint32_t flags, + uint32_t fwt) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalTransceiveBlockingTx(txBuf, txBufLen, rxBuf, + rxBufLen, actLen, flags, fwt)); + ret = rfalTransceiveBlockingRx(); + + /* Convert received bits to bytes */ + if (actLen != NULL) { + *actLen = rfalConvBitsToBytes(*actLen); + } + + return ret; +} + +/*******************************************************************************/ +static ReturnCode rfalRunTransceiveWorker(void) { + if (gRFAL.state == RFAL_STATE_TXRX) { + /*******************************************************************************/ + /* Check Transceive Sanity Timer has expired */ + if (gRFAL.tmr.txRx != RFAL_TIMING_NONE) { + if (rfalTimerisExpired(gRFAL.tmr.txRx)) { + /* If sanity timer has expired abort ongoing transceive and signal error + */ + gRFAL.TxRx.status = RFAL_ERR_IO; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + } + } + + /*******************************************************************************/ + /* Run Tx or Rx state machines */ + if (rfalIsTransceiveInTx()) { + rfalTransceiveTx(); + return rfalGetTransceiveStatus(); + } + if (rfalIsTransceiveInRx()) { + rfalTransceiveRx(); + return rfalGetTransceiveStatus(); + } + } + return RFAL_ERR_WRONG_STATE; +} + +/*******************************************************************************/ +rfalTransceiveState rfalGetTransceiveState(void) { return gRFAL.TxRx.state; } + +/*******************************************************************************/ +ReturnCode rfalGetTransceiveStatus(void) { + return ((gRFAL.TxRx.state == RFAL_TXRX_STATE_IDLE) ? gRFAL.TxRx.status + : RFAL_ERR_BUSY); +} + +/*******************************************************************************/ +ReturnCode rfalGetTransceiveRSSI(uint16_t *rssi) { + uint16_t amRSSI; + uint16_t pmRSSI; + bool isSumMode; + + if (rssi == NULL) { + return RFAL_ERR_PARAM; + } + + st25r3916GetRSSI(&amRSSI, &pmRSSI); + + /* Check if Correlator Summation mode is being used */ + isSumMode = (st25r3916CheckReg(ST25R3916_REG_CORR_CONF1, + ST25R3916_REG_CORR_CONF1_corr_s4, + ST25R3916_REG_CORR_CONF1_corr_s4) + ? st25r3916CheckReg(ST25R3916_REG_AUX, + ST25R3916_REG_AUX_dis_corr, 0x00) + : false); + if (isSumMode) { + /*******************************************************************************/ + /* Usage of SQRT from math.h and float. Due to compiler, resources or * + * performance issues sqrt is not enabled by default. Using a less accuracy + * * accurate aproach such as: average, max value, etc */ + +#ifdef RFAL_ACCURATE_RSSI + *rssi = (uint16_t)sqrt( + ((double)amRSSI * (double)amRSSI) + + ((double)pmRSSI * + (double)pmRSSI)); /* PRQA S 5209 # MISRA 4.9 - External function + (sqrt()) requires double */ +#else + *rssi = ((amRSSI + pmRSSI) / 2U); +#endif + + } else { + /* Check which channel was used */ + *rssi = (st25r3916CheckReg(ST25R3916_REG_AUX_DISPLAY, + ST25R3916_REG_AUX_DISPLAY_a_cha, + ST25R3916_REG_AUX_DISPLAY_a_cha) + ? pmRSSI + : amRSSI); + } + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +bool rfalIsTransceiveSubcDetected(void) { return false; } + +/*******************************************************************************/ +void rfalWorker(void) { + platformProtectWorker(); /* Protect RFAL Worker/Task/Process */ + + switch (gRFAL.state) { + case RFAL_STATE_TXRX: + rfalRunTransceiveWorker(); + break; + +#if RFAL_FEATURE_LISTEN_MODE + case RFAL_STATE_LM: + rfalRunListenModeWorker(); + break; +#endif /* RFAL_FEATURE_LISTEN_MODE */ + +#if RFAL_FEATURE_WAKEUP_MODE + case RFAL_STATE_WUM: + rfalRunWakeUpModeWorker(); + break; +#endif /* RFAL_FEATURE_WAKEUP_MODE */ + + /* Nothing to be done */ + default: + /* MISRA 16.4: no empty default statement (a comment being enough) */ + break; + } + + platformUnprotectWorker(); /* Unprotect RFAL Worker/Task/Process */ +} + +/*******************************************************************************/ +static void rfalErrorHandling(void) { + uint16_t fifoBytesToRead; + + fifoBytesToRead = rfalFIFOStatusGetNumBytes(); + +#ifdef RFAL_SW_EMD + /*******************************************************************************/ + /* EMVCo */ + /*******************************************************************************/ + if (gRFAL.conf.eHandling == RFAL_ERRORHANDLING_EMD) { + bool rxHasIncParError; + + /*******************************************************************************/ + /* EMD Handling - Digital 2.1 4.1.1.1 ; EMVCo 3.0 4.9.2 ; ISO 14443-3 8.3 + */ + /* ReEnable the receiver on frames with a length < 4 bytes, upon: */ + /* - Collision or Framing error detected */ + /* - Residual bits are detected (hard framing error) */ + /* - Parity error */ + /* - CRC error */ + /*******************************************************************************/ + + /* Check if reception has incomplete bytes or parity error */ + rxHasIncParError = (rfalFIFOStatusIsIncompleteByte() + ? true + : rfalFIFOStatusIsMissingPar()); /* MISRA 13.5 */ + + /* In case there are residual bits decrement FIFO bytes */ + /* Ensure FIFO contains some byte as the FIFO might be empty upon Framing + * errors */ + if ((fifoBytesToRead > 0U) && rxHasIncParError) { + fifoBytesToRead--; + } + + if (((gRFAL.fifo.bytesTotal + fifoBytesToRead) < RFAL_EMVCO_RX_MAXLEN) && + ((gRFAL.TxRx.status == RFAL_ERR_RF_COLLISION) || + (gRFAL.TxRx.status == RFAL_ERR_FRAMING) || + (gRFAL.TxRx.status == RFAL_ERR_PAR) || + (gRFAL.TxRx.status == RFAL_ERR_CRC) || rxHasIncParError)) { + /* Ignore this reception, ReEnable receiver which also clears the FIFO */ + st25r3916ExecuteCommand(ST25R3916_CMD_UNMASK_RECEIVE_DATA); + + /* Ensure that the NRT has not expired meanwhile */ + if (st25r3916CheckReg(ST25R3916_REG_NFCIP1_BIT_RATE, + ST25R3916_REG_NFCIP1_BIT_RATE_nrt_on, 0x00)) { + if (st25r3916CheckReg(ST25R3916_REG_AUX_DISPLAY, + ST25R3916_REG_AUX_DISPLAY_rx_act, 0x00)) { + /* Abort reception */ + st25r3916ExecuteCommand(ST25R3916_CMD_MASK_RECEIVE_DATA); + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + return; + } + } + + rfalFIFOStatusClear(); + gRFAL.fifo.bytesTotal = 0; + gRFAL.TxRx.status = RFAL_ERR_BUSY; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_WAIT_RXS; + } + return; + } +#endif + + /*******************************************************************************/ + /* ISO14443A Mode */ + /*******************************************************************************/ + if (gRFAL.mode == RFAL_MODE_POLL_NFCA) { + /*******************************************************************************/ + /* If we received a frame with a incomplete byte we`ll raise a specific + * error * ( support for T2T 4 bit ACK / NAK, MIFARE and Kovio ) */ + /*******************************************************************************/ + if ((gRFAL.TxRx.status == RFAL_ERR_PAR) || + (gRFAL.TxRx.status == RFAL_ERR_CRC)) { + if ((rfalFIFOStatusIsIncompleteByte()) && + (fifoBytesToRead == RFAL_RX_INC_BYTE_LEN)) { + st25r3916ReadFifo((uint8_t *)(gRFAL.TxRx.ctx.rxBuf), fifoBytesToRead); + if ((gRFAL.TxRx.ctx.rxRcvdLen) != NULL) { + *gRFAL.TxRx.ctx.rxRcvdLen = rfalFIFOGetNumIncompleteBits(); + } + + gRFAL.TxRx.status = RFAL_ERR_INCOMPLETE_BYTE; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + } + } + } +} + +/*******************************************************************************/ +static void rfalCleanupTransceive(void) { + /*******************************************************************************/ + /* Transceive flags */ + /*******************************************************************************/ + + /* Restore default settings for listen mode, Receiving parity + CRC bits and + * manual Tx Parity*/ + st25r3916ClrRegisterBits(ST25R3916_REG_ISO14443A_NFC, + (ST25R3916_REG_ISO14443A_NFC_no_tx_par | + ST25R3916_REG_ISO14443A_NFC_no_rx_par | + ST25R3916_REG_ISO14443A_NFC_nfc_f0)); + st25r3916ClrRegisterBits(ST25R3916_REG_AUX, ST25R3916_REG_AUX_no_crc_rx); + + /* Restore AGC enabled */ + st25r3916SetRegisterBits(ST25R3916_REG_RX_CONF2, + ST25R3916_REG_RX_CONF2_agc_en); + + /*******************************************************************************/ + + /*******************************************************************************/ + /* Transceive timers */ + /*******************************************************************************/ + rfalTimerDestroy(gRFAL.tmr.txRx); + rfalTimerDestroy(gRFAL.tmr.RXE); + rfalTimerDestroy(gRFAL.tmr.PPON2); + gRFAL.tmr.txRx = RFAL_TIMING_NONE; + gRFAL.tmr.RXE = RFAL_TIMING_NONE; + gRFAL.tmr.PPON2 = RFAL_TIMING_NONE; + /*******************************************************************************/ + + /*******************************************************************************/ + /* Execute Post Transceive Callback */ + /*******************************************************************************/ + if (gRFAL.callbacks.postTxRx != NULL) { + gRFAL.callbacks.postTxRx(); + } + /*******************************************************************************/ +} + +/*******************************************************************************/ +static void rfalPrepareTransceive(void) { + uint32_t maskInterrupts; + uint8_t reg; + + /* If we are in RW or AP2P mode */ + if (!rfalIsModePassiveListen(gRFAL.mode)) { + /* Reset receive logic with STOP command */ + st25r3916ExecuteCommand(ST25R3916_CMD_STOP); + + /* Reset Rx Gain */ + st25r3916ExecuteCommand(ST25R3916_CMD_RESET_RXGAIN); + } else { + /* In Passive Listen Mode do not use STOP as it stops FDT timer */ + st25r3916ExecuteCommand(ST25R3916_CMD_CLEAR_FIFO); + } + + /*******************************************************************************/ + /* FDT Poll */ + /*******************************************************************************/ + + if (gRFAL.timings.FDTPoll != RFAL_TIMING_NONE) { + /* In Passive communications General Purpose Timer is used to measure FDT + * Poll */ + if (rfalIsModePassiveComm(gRFAL.mode)) /* Passive Comms */ + { + /* Configure GPT to start at RX end */ + st25r3916SetStartGPTimer( + (uint16_t)rfalConv1fcTo8fc( + ((gRFAL.timings.FDTPoll < RFAL_FDT_POLL_ADJUSTMENT) + ? gRFAL.timings.FDTPoll + : (gRFAL.timings.FDTPoll - RFAL_FDT_POLL_ADJUSTMENT))), + ST25R3916_REG_TIMER_EMV_CONTROL_gptc_erx); + } + /* In Active Poller mode GT PPON1 is used to ensure FDT Poll */ + else if (gRFAL.mode == RFAL_MODE_POLL_ACTIVE_P2P) { + st25r3916WriteRegister( + ST25R3916_REG_FIELD_ON_GT, + (uint8_t)rfalConv1fcTo2018fc(gRFAL.timings.FDTPoll)); + } else { + /* MISRA 15.7 - Empty else */ + } + } + + /*******************************************************************************/ + /* Execute Pre Transceive Callback */ + /*******************************************************************************/ + if (gRFAL.callbacks.preTxRx != NULL) { + gRFAL.callbacks.preTxRx(); + } + /*******************************************************************************/ + + maskInterrupts = (ST25R3916_IRQ_MASK_FWL | ST25R3916_IRQ_MASK_TXE | + ST25R3916_IRQ_MASK_RXS | ST25R3916_IRQ_MASK_RXE | + ST25R3916_IRQ_MASK_PAR | ST25R3916_IRQ_MASK_CRC | + ST25R3916_IRQ_MASK_ERR1 | ST25R3916_IRQ_MASK_ERR2 | + ST25R3916_IRQ_MASK_NRE); + + /*******************************************************************************/ + /* Transceive flags */ + /*******************************************************************************/ + + reg = (ST25R3916_REG_ISO14443A_NFC_no_tx_par_off | + ST25R3916_REG_ISO14443A_NFC_no_rx_par_off | + ST25R3916_REG_ISO14443A_NFC_nfc_f0_off); + + /* Check if NFCIP1 mode is to be enabled */ + if ((gRFAL.TxRx.ctx.flags & (uint32_t)RFAL_TXRX_FLAGS_NFCIP1_ON) != 0U) { + reg |= ST25R3916_REG_ISO14443A_NFC_nfc_f0; + } + + /* Check if Parity check is to be skipped and to keep the parity + CRC bits in + * FIFO */ + if ((gRFAL.TxRx.ctx.flags & (uint32_t)RFAL_TXRX_FLAGS_PAR_RX_KEEP) != 0U) { + reg |= ST25R3916_REG_ISO14443A_NFC_no_rx_par; + } + + /* Check if automatic Parity bits is to be disabled */ + if ((gRFAL.TxRx.ctx.flags & (uint32_t)RFAL_TXRX_FLAGS_PAR_TX_NONE) != 0U) { + reg |= ST25R3916_REG_ISO14443A_NFC_no_tx_par; + } + + /* Apply current TxRx flags on ISO14443A and NFC 106kb/s Settings Register */ + st25r3916ChangeRegisterBits(ST25R3916_REG_ISO14443A_NFC, + (ST25R3916_REG_ISO14443A_NFC_no_tx_par | + ST25R3916_REG_ISO14443A_NFC_no_rx_par | + ST25R3916_REG_ISO14443A_NFC_nfc_f0), + reg); + + /* Check if CRC is to be checked automatically upon reception */ + if ((gRFAL.TxRx.ctx.flags & (uint32_t)RFAL_TXRX_FLAGS_CRC_RX_MANUAL) != 0U) { + st25r3916SetRegisterBits(ST25R3916_REG_AUX, ST25R3916_REG_AUX_no_crc_rx); + } else { + st25r3916ClrRegisterBits(ST25R3916_REG_AUX, ST25R3916_REG_AUX_no_crc_rx); + } + + /* Check if AGC is to be disabled */ + if ((gRFAL.TxRx.ctx.flags & (uint32_t)RFAL_TXRX_FLAGS_AGC_OFF) != 0U) { + st25r3916ClrRegisterBits(ST25R3916_REG_RX_CONF2, + ST25R3916_REG_RX_CONF2_agc_en); + } else { + st25r3916SetRegisterBits(ST25R3916_REG_RX_CONF2, + ST25R3916_REG_RX_CONF2_agc_en); + } + /*******************************************************************************/ + + /*******************************************************************************/ + /* EMVCo NRT mode */ + /*******************************************************************************/ + if (gRFAL.conf.eHandling == RFAL_ERRORHANDLING_EMD) { + st25r3916SetRegisterBits(ST25R3916_REG_TIMER_EMV_CONTROL, + ST25R3916_REG_TIMER_EMV_CONTROL_nrt_emv); + maskInterrupts |= ST25R3916_IRQ_MASK_RX_REST; + } else { + st25r3916ClrRegisterBits(ST25R3916_REG_TIMER_EMV_CONTROL, + ST25R3916_REG_TIMER_EMV_CONTROL_nrt_emv); + } + /*******************************************************************************/ + + /* In Passive Listen mode additionally enable External Field interrupts */ + if (rfalIsModePassiveListen(gRFAL.mode)) { + maskInterrupts |= + (ST25R3916_IRQ_MASK_EOF | + ST25R3916_IRQ_MASK_WU_F); /* Enable external Field interrupts to detect + Link Loss and SENF_REQ auto responses */ + } + + /* In Active comms enable also External Field interrupts and set RF Collsion + * Avoidance */ + if (rfalIsModeActiveComm(gRFAL.mode)) { + maskInterrupts |= (ST25R3916_IRQ_MASK_EOF | ST25R3916_IRQ_MASK_EON | + ST25R3916_IRQ_MASK_PPON2 | ST25R3916_IRQ_MASK_CAT | + ST25R3916_IRQ_MASK_CAC); + + /* Set n=0 for subsequent RF Collision Avoidance */ + st25r3916ChangeRegisterBits(ST25R3916_REG_AUX, ST25R3916_REG_AUX_nfc_n_mask, + 0); + } + + /*******************************************************************************/ + /* Start transceive Sanity Timer if a FWT is used */ + if ((gRFAL.TxRx.ctx.fwt != RFAL_FWT_NONE) && (gRFAL.TxRx.ctx.fwt != 0U)) { + rfalTimerStart(gRFAL.tmr.txRx, rfalCalcSanityTmr(gRFAL.TxRx.ctx.fwt)); + } + /*******************************************************************************/ + + /*******************************************************************************/ + /* Clear and enable these interrupts */ + st25r3916GetInterrupt(maskInterrupts); + st25r3916EnableInterrupts(maskInterrupts); + + /* Clear FIFO status local copy */ + rfalFIFOStatusClear(); +} + +/*******************************************************************************/ +static void rfalTransceiveTx(void) { + volatile uint32_t irqs; + uint16_t tmp; + ReturnCode ret; + + /* Suppress warning in case NFC-V feature is disabled */ + ret = RFAL_ERR_NONE; + RFAL_NO_WARNING(ret); + + irqs = ST25R3916_IRQ_MASK_NONE; + + if (gRFAL.TxRx.state != gRFAL.TxRx.lastState) { +#if 0 /* Debug purposes */ + rfalLogD( "RFAL: lastSt: %d curSt: %d \r\n", gRFAL.TxRx.lastState, gRFAL.TxRx.state ); +#endif + + gRFAL.TxRx.lastState = gRFAL.TxRx.state; + } + + switch (gRFAL.TxRx.state) { + /*******************************************************************************/ + case RFAL_TXRX_STATE_TX_IDLE: + + /* Nothing to do */ + + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_WAIT_GT; + /* fall through */ + + /*******************************************************************************/ + case RFAL_TXRX_STATE_TX_WAIT_GT: /* PRQA S 2003 # MISRA 16.3 - Intentional + fall through */ + + if (!rfalIsGTExpired()) { + break; + } + + rfalTimerDestroy(gRFAL.tmr.GT); + gRFAL.tmr.GT = RFAL_TIMING_NONE; + + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_WAIT_FDT; + /* fall through */ + + /*******************************************************************************/ + case RFAL_TXRX_STATE_TX_WAIT_FDT: /* PRQA S 2003 # MISRA 16.3 - Intentional + fall through */ + + /* Only in Passive communications GPT is used to measure FDT Poll */ + if (rfalIsModePassiveComm(gRFAL.mode)) { + if (st25r3916IsGPTRunning()) { + break; + } + } + + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_PREP_TX; + /* fall through */ + + /*******************************************************************************/ + case RFAL_TXRX_STATE_TX_PREP_TX: /* PRQA S 2003 # MISRA 16.3 - Intentional + fall through */ + + /* Clear FIFO, Clear and Enable the Interrupts */ + rfalPrepareTransceive(); + + /* ST25R3916 has a fixed FIFO water level */ + gRFAL.fifo.expWL = RFAL_FIFO_OUT_WL; + +#if RFAL_FEATURE_NFCV + /*******************************************************************************/ + /* In NFC-V streaming mode, the FIFO needs to be loaded with the coded + * bits */ + if ((RFAL_MODE_POLL_NFCV == gRFAL.mode) || + (RFAL_MODE_POLL_PICOPASS == gRFAL.mode)) { +#if 0 + /* Debugging code: output the payload bits by writing into the FIFO and subsequent clearing */ + st25r3916WriteFifo(gRFAL.TxRx.ctx.txBuf, rfalConvBitsToBytes(gRFAL.TxRx.ctx.txBufLen)); + st25r3916ExecuteCommand( ST25R3916_CMD_CLEAR_FIFO ); +#endif + /* Calculate the bytes needed to be Written into FIFO (a incomplete byte + * will be added as 1byte) */ + gRFAL.nfcvData.nfcvOffset = 0; + ret = rfalIso15693VCDCode( + gRFAL.TxRx.ctx.txBuf, rfalConvBitsToBytes(gRFAL.TxRx.ctx.txBufLen), + (((gRFAL.nfcvData.origCtx.flags & + (uint32_t)RFAL_TXRX_FLAGS_CRC_TX_MANUAL) != 0U) + ? false + : true), + (((gRFAL.nfcvData.origCtx.flags & + (uint32_t)RFAL_TXRX_FLAGS_NFCV_FLAG_MANUAL) != 0U) + ? false + : true), + (RFAL_MODE_POLL_PICOPASS == gRFAL.mode), &gRFAL.fifo.bytesTotal, + &gRFAL.nfcvData.nfcvOffset, gRFAL.nfcvData.codingBuffer, + RFAL_MIN((uint16_t)ST25R3916_FIFO_DEPTH, + (uint16_t)sizeof(gRFAL.nfcvData.codingBuffer)), + &gRFAL.fifo.bytesWritten); + + if ((ret != RFAL_ERR_NONE) && (ret != RFAL_ERR_AGAIN)) { + gRFAL.TxRx.status = ret; + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_FAIL; + break; + } + /* Set the number of full bytes and bits to be transmitted */ + st25r3916SetNumTxBits( + (uint16_t)rfalConvBytesToBits(gRFAL.fifo.bytesTotal)); + + /* Load FIFO with coded bytes */ + st25r3916WriteFifo(gRFAL.nfcvData.codingBuffer, + gRFAL.fifo.bytesWritten); + + } + /*******************************************************************************/ + else +#endif /* RFAL_FEATURE_NFCV */ + { + /* Calculate the bytes needed to be Written into FIFO (a incomplete byte + * will be added as 1byte) */ + gRFAL.fifo.bytesTotal = + (uint16_t)rfalCalcNumBytes(gRFAL.TxRx.ctx.txBufLen); + + /* Set the number of full bytes and bits to be transmitted */ + st25r3916SetNumTxBits(gRFAL.TxRx.ctx.txBufLen); + + /* Load FIFO with total length or FIFO's maximum */ + gRFAL.fifo.bytesWritten = + RFAL_MIN(gRFAL.fifo.bytesTotal, ST25R3916_FIFO_DEPTH); + st25r3916WriteFifo(gRFAL.TxRx.ctx.txBuf, gRFAL.fifo.bytesWritten); + } + + /*Check if Observation Mode is enabled and set it on ST25R391x */ + rfalCheckEnableObsModeTx(); + + /*******************************************************************************/ + /* If we're in Passive Listen mode ensure that the external field is still + * On */ + if (rfalIsModePassiveListen(gRFAL.mode)) { + if (!rfalIsExtFieldOn()) { + gRFAL.TxRx.status = RFAL_ERR_LINK_LOSS; + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_FAIL; + break; + } + } + + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_TRANSMIT; + /* fall through */ + + /*******************************************************************************/ + case RFAL_TXRX_STATE_TX_TRANSMIT: /* PRQA S 2003 # MISRA 16.3 - Intentional + fall through */ + + /*******************************************************************************/ + /* Execute Sync Transceive Callback */ + /*******************************************************************************/ + if (gRFAL.callbacks.syncTxRx != NULL) { + /* If set, wait for sync callback to signal sync/trigger transmission */ + if (!gRFAL.callbacks.syncTxRx()) { + break; + } + } + + /*******************************************************************************/ + /* Trigger/Start transmission */ + if ((gRFAL.TxRx.ctx.flags & (uint32_t)RFAL_TXRX_FLAGS_CRC_TX_MANUAL) != + 0U) { + st25r3916ExecuteCommand(ST25R3916_CMD_TRANSMIT_WITHOUT_CRC); + } else { + st25r3916ExecuteCommand(ST25R3916_CMD_TRANSMIT_WITH_CRC); + } + + /* Check if a WL level is expected or TXE should come */ + gRFAL.TxRx.state = ((gRFAL.fifo.bytesWritten < gRFAL.fifo.bytesTotal) + ? RFAL_TXRX_STATE_TX_WAIT_WL + : RFAL_TXRX_STATE_TX_WAIT_TXE); + break; + + /*******************************************************************************/ + case RFAL_TXRX_STATE_TX_WAIT_WL: + + irqs = st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_FWL | ST25R3916_IRQ_MASK_TXE)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + if (((irqs & ST25R3916_IRQ_MASK_FWL) != 0U) && + ((irqs & ST25R3916_IRQ_MASK_TXE) == 0U)) { + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_RELOAD_FIFO; + } else { + gRFAL.TxRx.status = RFAL_ERR_IO; + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_FAIL; + break; + } + + /* fall through */ + + /*******************************************************************************/ + case RFAL_TXRX_STATE_TX_RELOAD_FIFO: /* PRQA S 2003 # MISRA 16.3 - + Intentional fall through */ + +#if RFAL_FEATURE_NFCV + /*******************************************************************************/ + /* In NFC-V streaming mode, the FIFO needs to be loaded with the coded + * bits */ + if ((RFAL_MODE_POLL_NFCV == gRFAL.mode) || + (RFAL_MODE_POLL_PICOPASS == gRFAL.mode)) { + uint16_t maxLen; + + /* Load FIFO with the remaining length or maximum available (which fit + * on the coding buffer) */ + maxLen = (uint16_t)RFAL_MIN( + (gRFAL.fifo.bytesTotal - gRFAL.fifo.bytesWritten), + gRFAL.fifo.expWL); + maxLen = + (uint16_t)RFAL_MIN(maxLen, sizeof(gRFAL.nfcvData.codingBuffer)); + tmp = 0; + + /* Calculate the bytes needed to be Written into FIFO (a incomplete byte + * will be added as 1byte) */ + ret = rfalIso15693VCDCode( + gRFAL.TxRx.ctx.txBuf, rfalConvBitsToBytes(gRFAL.TxRx.ctx.txBufLen), + (((gRFAL.nfcvData.origCtx.flags & + (uint32_t)RFAL_TXRX_FLAGS_CRC_TX_MANUAL) != 0U) + ? false + : true), + (((gRFAL.nfcvData.origCtx.flags & + (uint32_t)RFAL_TXRX_FLAGS_NFCV_FLAG_MANUAL) != 0U) + ? false + : true), + (RFAL_MODE_POLL_PICOPASS == gRFAL.mode), &gRFAL.fifo.bytesTotal, + &gRFAL.nfcvData.nfcvOffset, gRFAL.nfcvData.codingBuffer, maxLen, + &tmp); + + if ((ret != RFAL_ERR_NONE) && (ret != RFAL_ERR_AGAIN)) { + gRFAL.TxRx.status = ret; + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_FAIL; + break; + } + + /* Load FIFO with coded bytes */ + st25r3916WriteFifo(gRFAL.nfcvData.codingBuffer, tmp); + } + /*******************************************************************************/ + else +#endif /* RFAL_FEATURE_NFCV */ + { + /* Load FIFO with the remaining length or maximum available */ + tmp = RFAL_MIN((gRFAL.fifo.bytesTotal - gRFAL.fifo.bytesWritten), + gRFAL.fifo.expWL); /* tmp holds the number of bytes + written on this iteration */ + st25r3916WriteFifo(&gRFAL.TxRx.ctx.txBuf[gRFAL.fifo.bytesWritten], tmp); + } + + /* Update total written bytes to FIFO */ + gRFAL.fifo.bytesWritten += tmp; + + /* Check if a WL level is expected or TXE should come */ + gRFAL.TxRx.state = ((gRFAL.fifo.bytesWritten < gRFAL.fifo.bytesTotal) + ? RFAL_TXRX_STATE_TX_WAIT_WL + : RFAL_TXRX_STATE_TX_WAIT_TXE); + break; + + /*******************************************************************************/ + case RFAL_TXRX_STATE_TX_WAIT_TXE: + + irqs = st25r3916GetInterrupt((ST25R3916_IRQ_MASK_FWL | + ST25R3916_IRQ_MASK_TXE | + ST25R3916_IRQ_MASK_EOF)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + if ((irqs & ST25R3916_IRQ_MASK_TXE) != 0U) { + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_DONE; + } else if ((irqs & ST25R3916_IRQ_MASK_FWL) != 0U) { + break; /* Ignore ST25R3916 FIFO WL if total TxLen is already on the FIFO + */ + } else if (!rfalIsModeActiveComm( + gRFAL.mode)) { /* ST25R3916_IRQ_MASK_EOF will fall in here, + in rare cases this may happen when field + goes during CE transmit */ + gRFAL.TxRx.status = RFAL_ERR_IO; + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_FAIL; + break; + } else { + /* MISRA 15.7 - Empty else */ + } + + /* fall through */ + + /*******************************************************************************/ + case RFAL_TXRX_STATE_TX_DONE: /* PRQA S 2003 # MISRA 16.3 - Intentional + fall through */ + + /* If no rxBuf is provided do not wait/expect Rx */ + if (gRFAL.TxRx.ctx.rxBuf == NULL) { + /*Check if Observation Mode was enabled and disable it on ST25R391x */ + rfalCheckDisableObsMode(); + + /* Clean up Transceive */ + rfalCleanupTransceive(); + + gRFAL.TxRx.status = RFAL_ERR_NONE; + gRFAL.TxRx.state = RFAL_TXRX_STATE_IDLE; + break; + } + + rfalCheckEnableObsModeRx(); + + /* Goto Rx */ + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_IDLE; + break; + + /*******************************************************************************/ + case RFAL_TXRX_STATE_TX_FAIL: + + /* Error should be assigned by previous state */ + if (gRFAL.TxRx.status == RFAL_ERR_BUSY) { + gRFAL.TxRx.status = RFAL_ERR_SYSTEM; + } + + /*Check if Observation Mode was enabled and disable it on ST25R391x */ + rfalCheckDisableObsMode(); + + /* Clean up Transceive */ + rfalCleanupTransceive(); + + gRFAL.TxRx.state = RFAL_TXRX_STATE_IDLE; + break; + + /*******************************************************************************/ + default: + gRFAL.TxRx.status = RFAL_ERR_SYSTEM; + gRFAL.TxRx.state = RFAL_TXRX_STATE_TX_FAIL; + break; + } +} + +/*******************************************************************************/ +static void rfalTransceiveRx(void) { + volatile uint32_t irqs; + uint16_t tmp; + uint16_t aux; + + irqs = ST25R3916_IRQ_MASK_NONE; + + if (gRFAL.TxRx.state != gRFAL.TxRx.lastState) { +#if 0 /* Debug purposes */ + rfalLogD( "RFAL: lastSt: %d curSt: %d \r\n", gRFAL.TxRx.lastState, gRFAL.TxRx.state ); +#endif + + gRFAL.TxRx.lastState = gRFAL.TxRx.state; + } + + switch (gRFAL.TxRx.state) { + /*******************************************************************************/ + case RFAL_TXRX_STATE_RX_IDLE: + + /* Clear rx counters */ + gRFAL.fifo.bytesWritten = 0; /* Total bytes written on RxBuffer */ + gRFAL.fifo.bytesTotal = 0; /* Total bytes in FIFO will now be from Rx */ + if (gRFAL.TxRx.ctx.rxRcvdLen != NULL) { + *gRFAL.TxRx.ctx.rxRcvdLen = 0; + } + + /*******************************************************************************/ + /* REMARK: Silicon workaround ST25R3916 Errata #2.1.3 */ + rfalTimerStart(gRFAL.tmr.PPON2, 10U); + /*******************************************************************************/ + + gRFAL.TxRx.state = + (rfalIsModeActiveComm(gRFAL.mode) ? RFAL_TXRX_STATE_RX_WAIT_EON + : RFAL_TXRX_STATE_RX_WAIT_RXS); + break; + + /*******************************************************************************/ + case RFAL_TXRX_STATE_RX_WAIT_RXS: + + /*******************************************************************************/ + irqs = st25r3916GetInterrupt((ST25R3916_IRQ_MASK_RXS | + ST25R3916_IRQ_MASK_NRE | + ST25R3916_IRQ_MASK_EOF)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + /* Only raise Timeout if NRE is detected with no Rx Start (NRT EMV mode) + */ + if (((irqs & ST25R3916_IRQ_MASK_NRE) != 0U) && + ((irqs & ST25R3916_IRQ_MASK_RXS) == 0U)) { + gRFAL.TxRx.status = RFAL_ERR_TIMEOUT; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + break; + } + + /* Only raise Link Loss if EOF is detected with no Rx Start */ + if (((irqs & ST25R3916_IRQ_MASK_EOF) != 0U) && + ((irqs & ST25R3916_IRQ_MASK_RXS) == 0U)) { + /* In AP2P a Field On has already occurred - treat this as timeout | + * mute */ + gRFAL.TxRx.status = + (rfalIsModeActiveComm(gRFAL.mode) ? RFAL_ERR_TIMEOUT + : RFAL_ERR_LINK_LOSS); + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + break; + } + + if ((irqs & ST25R3916_IRQ_MASK_RXS) != 0U) { + /*******************************************************************************/ + /* REMARK: Silicon workaround ST25R3916 Errata #2.1.2 */ + /* Rarely on corrupted frames I_rxs gets signaled but I_rxe is not + * signaled */ + /* Use a SW timer to handle an eventual missing RXE */ + rfalTimerStart(gRFAL.tmr.RXE, RFAL_NORXE_TOUT); + /*******************************************************************************/ + + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_WAIT_RXE; + } else { + gRFAL.TxRx.status = RFAL_ERR_IO; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + break; + } + + /* remove NRE that might appear together (NRT EMV mode), and remove RXS, + * but keep EOF if present for next state */ + irqs &= ~(ST25R3916_IRQ_MASK_RXS | ST25R3916_IRQ_MASK_NRE); + + /* fall through */ + + /*******************************************************************************/ + case RFAL_TXRX_STATE_RX_WAIT_RXE: /* PRQA S 2003 # MISRA 16.3 - Intentional + fall through */ + + irqs |= st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_RXE | ST25R3916_IRQ_MASK_FWL | + ST25R3916_IRQ_MASK_EOF | ST25R3916_IRQ_MASK_RX_REST | + ST25R3916_IRQ_MASK_WU_F)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + /*******************************************************************************/ + /* REMARK: Silicon workaround ST25R3916 Errata #2.1.2 */ + /* ST25R396 may indicate RXS without RXE afterwards, this happens rarely + * on */ + /* corrupted frames. */ + /* SW timer is used to timeout upon a missing RXE */ + if (rfalTimerisExpired(gRFAL.tmr.RXE)) { + gRFAL.TxRx.status = RFAL_ERR_FRAMING; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + } + /*******************************************************************************/ + + break; /* No interrupt to process */ + } + + if ((irqs & ST25R3916_IRQ_MASK_RX_REST) != 0U) { + /* RX_REST indicates that Receiver has been reseted due to EMD, + * therefore a RXS + RXE should * follow if a good reception is followed + * within the valid initial timeout */ + + /* Check whether NRT has expired already, if so signal a timeout */ + if (st25r3916GetInterrupt(ST25R3916_IRQ_MASK_NRE) != 0U) { + gRFAL.TxRx.status = RFAL_ERR_TIMEOUT; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + break; + } + if (st25r3916CheckReg(ST25R3916_REG_NFCIP1_BIT_RATE, + ST25R3916_REG_NFCIP1_BIT_RATE_nrt_on, + 0)) /* MISRA 13.5 */ + { + gRFAL.TxRx.status = RFAL_ERR_TIMEOUT; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + break; + } + + /* Discard any previous RXS */ + st25r3916GetInterrupt(ST25R3916_IRQ_MASK_RXS); + + /* Check whether a following reception has already started */ + if (st25r3916CheckReg(ST25R3916_REG_AUX_DISPLAY, + ST25R3916_REG_AUX_DISPLAY_rx_act, + ST25R3916_REG_AUX_DISPLAY_rx_act)) { + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_WAIT_RXE; + break; + } + + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_WAIT_RXS; + break; + } + + if (((irqs & ST25R3916_IRQ_MASK_FWL) != 0U) && + ((irqs & ST25R3916_IRQ_MASK_RXE) == 0U)) { + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_READ_FIFO; + break; + } + + /* Automatic responses allowed during TxRx only for the SENSF_REQ */ + if (((irqs & ST25R3916_IRQ_MASK_WU_F) != 0U) && + ((irqs & ST25R3916_IRQ_MASK_EOF) == 0U)) { + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_WAIT_RXS; + break; + } + + /* After RXE retrieve and check for any error irqs */ + irqs |= st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_CRC | ST25R3916_IRQ_MASK_PAR | + ST25R3916_IRQ_MASK_ERR1 | ST25R3916_IRQ_MASK_ERR2 | + ST25R3916_IRQ_MASK_COL)); + + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_ERR_CHECK; + /* fall through */ + + /*******************************************************************************/ + case RFAL_TXRX_STATE_RX_ERR_CHECK: /* PRQA S 2003 # MISRA 16.3 - + Intentional fall through */ + + if ((irqs & ST25R3916_IRQ_MASK_ERR1) != 0U) { + gRFAL.TxRx.status = RFAL_ERR_FRAMING; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_READ_DATA; + + /* Check if there's a specific error handling for this */ + rfalErrorHandling(); + break; + } + /* Discard Soft Framing errors in AP2P and CE */ + /* Discard Soft Framing errors in CTS as Correlator does not support + no_eof */ + else if ((rfalIsModePassivePoll(gRFAL.mode)) && + ((irqs & ST25R3916_IRQ_MASK_ERR2) != 0U) && + (gRFAL.mode != RFAL_MODE_POLL_B_CTS)) { + gRFAL.TxRx.status = RFAL_ERR_FRAMING; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_READ_DATA; + + /* Check if there's a specific error handling for this */ + rfalErrorHandling(); + break; + } else if ((irqs & ST25R3916_IRQ_MASK_PAR) != 0U) { + gRFAL.TxRx.status = RFAL_ERR_PAR; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_READ_DATA; + + /* Check if there's a specific error handling for this */ + rfalErrorHandling(); + break; + } else if ((irqs & ST25R3916_IRQ_MASK_CRC) != 0U) { + gRFAL.TxRx.status = RFAL_ERR_CRC; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_READ_DATA; + + /* Check if there's a specific error handling for this */ + rfalErrorHandling(); + break; + } else if ((irqs & ST25R3916_IRQ_MASK_COL) != 0U) { + gRFAL.TxRx.status = RFAL_ERR_RF_COLLISION; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_READ_DATA; + + /* Check if there's a specific error handling for this */ + rfalErrorHandling(); + break; + } else if (rfalIsModePassiveListen(gRFAL.mode) && + ((irqs & ST25R3916_IRQ_MASK_EOF) != 0U)) { + gRFAL.TxRx.status = RFAL_ERR_LINK_LOSS; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + break; + } else if ((irqs & ST25R3916_IRQ_MASK_RXE) != 0U) { + /* Reception ended without any error indication, * + * check FIFO status for malformed or incomplete frames */ + + /* Check if the reception ends with an incomplete byte (residual bits) + */ + if (rfalFIFOStatusIsIncompleteByte()) { + gRFAL.TxRx.status = RFAL_ERR_INCOMPLETE_BYTE; + } + /* Check if the reception ends missing parity bit */ + else if (rfalFIFOStatusIsMissingPar()) { + gRFAL.TxRx.status = RFAL_ERR_FRAMING; + } else { + /* MISRA 15.7 - Empty else */ + } + + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_READ_DATA; + } else { + gRFAL.TxRx.status = RFAL_ERR_IO; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + break; + } + + /* fall through */ + + /*******************************************************************************/ + case RFAL_TXRX_STATE_RX_READ_DATA: /* PRQA S 2003 # MISRA 16.3 - + Intentional fall through */ + + tmp = rfalFIFOStatusGetNumBytes(); + + /*******************************************************************************/ + /* Check if CRC should not be placed in rxBuf */ + if (((gRFAL.TxRx.ctx.flags & (uint32_t)RFAL_TXRX_FLAGS_CRC_RX_KEEP) == + 0U)) { + /* if received frame was bigger than CRC */ + if ((uint16_t)(gRFAL.fifo.bytesTotal + tmp) > 0U) { + /* By default CRC will not be placed into the rxBuffer */ + if ((tmp > RFAL_CRC_LEN)) { + tmp -= RFAL_CRC_LEN; + } + /* If the CRC was already placed into rxBuffer (due to WL interrupt + * where CRC was already in FIFO Read) cannot remove it from rxBuf. + * Can only remove it from rxBufLen not indicate the presence of CRC + */ + else if (gRFAL.fifo.bytesTotal > RFAL_CRC_LEN) { + gRFAL.fifo.bytesTotal -= RFAL_CRC_LEN; + } else { + /* MISRA 15.7 - Empty else */ + } + } + } + + gRFAL.fifo.bytesTotal += tmp; /* add to total bytes counter */ + + /*******************************************************************************/ + /* Check if remaining bytes fit on the rxBuf available */ + if (gRFAL.fifo.bytesTotal > + rfalConvBitsToBytes(gRFAL.TxRx.ctx.rxBufLen)) { + tmp = (uint16_t)(rfalConvBitsToBytes(gRFAL.TxRx.ctx.rxBufLen) - + gRFAL.fifo.bytesWritten); + + /* Transmission errors have precedence over buffer error */ + if (gRFAL.TxRx.status == RFAL_ERR_BUSY) { + gRFAL.TxRx.status = RFAL_ERR_NOMEM; + } + } + + /*******************************************************************************/ + /* Retrieve remaining bytes from FIFO to rxBuf, and assign total length + * rcvd */ + st25r3916ReadFifo(&gRFAL.TxRx.ctx.rxBuf[gRFAL.fifo.bytesWritten], tmp); + if (gRFAL.TxRx.ctx.rxRcvdLen != NULL) { + (*gRFAL.TxRx.ctx.rxRcvdLen) = + (uint16_t)rfalConvBytesToBits(gRFAL.fifo.bytesTotal); + if (rfalFIFOStatusIsIncompleteByte()) { + (*gRFAL.TxRx.ctx.rxRcvdLen) -= + (RFAL_BITS_IN_BYTE - rfalFIFOGetNumIncompleteBits()); + } + } + +#if RFAL_FEATURE_NFCV + /*******************************************************************************/ + /* Decode sub bit stream into payload bits for NFCV, if no error found so + * far */ + if (((RFAL_MODE_POLL_NFCV == gRFAL.mode) || + (RFAL_MODE_POLL_PICOPASS == gRFAL.mode)) && + (gRFAL.TxRx.status == RFAL_ERR_BUSY)) { + ReturnCode ret; + uint16_t offset = 0; /* REMARK offset not currently used */ + + ret = rfalIso15693VICCDecode( + gRFAL.TxRx.ctx.rxBuf, gRFAL.fifo.bytesTotal, + gRFAL.nfcvData.origCtx.rxBuf, + rfalConvBitsToBytes(gRFAL.nfcvData.origCtx.rxBufLen), &offset, + gRFAL.nfcvData.origCtx.rxRcvdLen, gRFAL.nfcvData.ignoreBits, + (RFAL_MODE_POLL_PICOPASS == gRFAL.mode)); + + if (((RFAL_ERR_NONE == ret) || (RFAL_ERR_CRC == ret)) && + (((uint32_t)RFAL_TXRX_FLAGS_CRC_RX_KEEP & + gRFAL.nfcvData.origCtx.flags) == 0U) && + ((*gRFAL.nfcvData.origCtx.rxRcvdLen % RFAL_BITS_IN_BYTE) == 0U) && + (*gRFAL.nfcvData.origCtx.rxRcvdLen >= + rfalConvBytesToBits(RFAL_CRC_LEN))) { + *gRFAL.nfcvData.origCtx.rxRcvdLen -= + (uint16_t)rfalConvBytesToBits(RFAL_CRC_LEN); /* Remove CRC */ + } +#if 0 + /* Debugging code: output the payload bits by writing into the FIFO and subsequent clearing */ + st25r3916WriteFifo(gRFAL.nfcvData.origCtx.rxBuf, rfalConvBitsToBytes( *gRFAL.nfcvData.origCtx.rxRcvdLen)); + st25r3916ExecuteCommand( ST25R3916_CMD_CLEAR_FIFO ); +#endif + + /* Restore original ctx */ + gRFAL.TxRx.ctx = gRFAL.nfcvData.origCtx; + gRFAL.TxRx.status = ((ret != RFAL_ERR_NONE) ? ret : RFAL_ERR_BUSY); + } +#endif /* RFAL_FEATURE_NFCV */ + + if (rfalIsModeActiveComm(gRFAL.mode)) { + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_WAIT_EOF; + break; + } + + /*******************************************************************************/ + /* If an error as been marked/detected don't fall into to RX_DONE */ + if (gRFAL.TxRx.status != RFAL_ERR_BUSY) { + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + break; + } + + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_DONE; + /* fall through */ + + /*******************************************************************************/ + case RFAL_TXRX_STATE_RX_DONE: /* PRQA S 2003 # MISRA 16.3 - Intentional + fall through */ + + /*Check if Observation Mode was enabled and disable it on ST25R391x */ + rfalCheckDisableObsMode(); + + /* Clean up Transceive */ + rfalCleanupTransceive(); + + gRFAL.TxRx.status = RFAL_ERR_NONE; + gRFAL.TxRx.state = RFAL_TXRX_STATE_IDLE; + break; + + /*******************************************************************************/ + case RFAL_TXRX_STATE_RX_READ_FIFO: + + /*******************************************************************************/ + /* REMARK: Silicon workaround ST25R3916 Errata #2.1.2 */ + /* Rarely on corrupted frames I_rxs gets signaled but I_rxe is not + * signaled */ + /* Use a SW timer to handle an eventual missing RXE */ + rfalTimerStart(gRFAL.tmr.RXE, RFAL_NORXE_TOUT); + /*******************************************************************************/ + + tmp = rfalFIFOStatusGetNumBytes(); + gRFAL.fifo.bytesTotal += tmp; + + /*******************************************************************************/ + /* Calculate the amount of bytes that still fits in rxBuf */ + aux = ((gRFAL.fifo.bytesTotal > + rfalConvBitsToBytes(gRFAL.TxRx.ctx.rxBufLen)) + ? (rfalConvBitsToBytes(gRFAL.TxRx.ctx.rxBufLen) - + gRFAL.fifo.bytesWritten) + : tmp); + + /*******************************************************************************/ + /* Retrieve incoming bytes from FIFO to rxBuf, and store already read + * amount */ + st25r3916ReadFifo(&gRFAL.TxRx.ctx.rxBuf[gRFAL.fifo.bytesWritten], aux); + gRFAL.fifo.bytesWritten += aux; + + /*******************************************************************************/ + /* If the bytes already read were not the full FIFO WL, dump the remaining + * * FIFO so that ST25R391x can continue with reception */ + if (aux < tmp) { + st25r3916ReadFifo(NULL, (tmp - aux)); + } + + rfalFIFOStatusClear(); + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_WAIT_RXE; + break; + + /*******************************************************************************/ + case RFAL_TXRX_STATE_RX_FAIL: + + /*Check if Observation Mode was enabled and disable it on ST25R391x */ + rfalCheckDisableObsMode(); + + /* Clean up Transceive */ + rfalCleanupTransceive(); + + /* Error should be assigned by previous state */ + if (gRFAL.TxRx.status == RFAL_ERR_BUSY) { + gRFAL.TxRx.status = RFAL_ERR_SYSTEM; + } + +#if 0 /* Debug purposes */ + rfalLogD( "RFAL: curSt: %d Error: %d \r\n", gRFAL.TxRx.state, gRFAL.TxRx.status ); +#endif + + gRFAL.TxRx.state = RFAL_TXRX_STATE_IDLE; + break; + + /*******************************************************************************/ + case RFAL_TXRX_STATE_RX_WAIT_EON: + + irqs = st25r3916GetInterrupt((ST25R3916_IRQ_MASK_EON | + ST25R3916_IRQ_MASK_NRE | + ST25R3916_IRQ_MASK_PPON2)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + /*******************************************************************************/ + /* REMARK: Silicon workaround ST25R3916 Errata #2.1.3 */ + if (rfalTimerisExpired(gRFAL.tmr.PPON2)) { + gRFAL.TxRx.status = RFAL_ERR_LINK_LOSS; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + } + /*******************************************************************************/ + + break; /* No interrupt to process */ + } + + if ((irqs & ST25R3916_IRQ_MASK_EON) != 0U) { + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_WAIT_RXS; + +#ifdef ST25R3916B + /* Check if ST25R3916 AWS is enabled */ + if (st25r3916CheckReg(ST25R3916_REG_AUX_MOD, + ST25R3916_REG_AUX_MOD_rgs_am, + ST25R3916_REG_AUX_MOD_rgs_am)) { + /* Set Analog configurations for our own following Field On */ + rfalSetAnalogConfig((RFAL_ANALOG_CONFIG_TECH_CHIP | + RFAL_ANALOG_CONFIG_CHIP_FIELD_ON)); + } +#endif /* ST25R3916B */ + } + + if ((irqs & ST25R3916_IRQ_MASK_NRE) != 0U) { + gRFAL.TxRx.status = RFAL_ERR_TIMEOUT; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + } + if ((irqs & ST25R3916_IRQ_MASK_PPON2) != 0U) { + gRFAL.TxRx.status = RFAL_ERR_LINK_LOSS; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + } + break; + + /*******************************************************************************/ + case RFAL_TXRX_STATE_RX_WAIT_EOF: + + irqs = st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_CAT | ST25R3916_IRQ_MASK_CAC)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + if ((irqs & ST25R3916_IRQ_MASK_CAT) != 0U) { + /* Check if an error has been marked/detected before */ + gRFAL.TxRx.state = + ((gRFAL.TxRx.status != RFAL_ERR_BUSY) ? RFAL_TXRX_STATE_RX_FAIL + : RFAL_TXRX_STATE_RX_DONE); + } else if ((irqs & ST25R3916_IRQ_MASK_CAC) != 0U) { + gRFAL.TxRx.status = RFAL_ERR_RF_COLLISION; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + } else { + gRFAL.TxRx.status = RFAL_ERR_IO; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + } + break; + + /*******************************************************************************/ + default: + gRFAL.TxRx.status = RFAL_ERR_SYSTEM; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_FAIL; + break; + } +} + +/*******************************************************************************/ +static void rfalFIFOStatusUpdate(void) { + if (gRFAL.fifo.status[RFAL_FIFO_STATUS_REG2] == RFAL_FIFO_STATUS_INVALID) { + st25r3916ReadMultipleRegisters(ST25R3916_REG_FIFO_STATUS1, + gRFAL.fifo.status, + ST25R3916_FIFO_STATUS_LEN); + } +} + +/*******************************************************************************/ +static void rfalFIFOStatusClear(void) { + gRFAL.fifo.status[RFAL_FIFO_STATUS_REG2] = RFAL_FIFO_STATUS_INVALID; +} + +/*******************************************************************************/ +static uint16_t rfalFIFOStatusGetNumBytes(void) { + uint16_t result; + + rfalFIFOStatusUpdate(); + + result = ((((uint16_t)gRFAL.fifo.status[RFAL_FIFO_STATUS_REG2] & + ST25R3916_REG_FIFO_STATUS2_fifo_b_mask) >> + ST25R3916_REG_FIFO_STATUS2_fifo_b_shift) + << RFAL_BITS_IN_BYTE); + result |= (((uint16_t)gRFAL.fifo.status[RFAL_FIFO_STATUS_REG1]) & 0x00FFU); + return result; +} + +/*******************************************************************************/ +static bool rfalFIFOStatusIsIncompleteByte(void) { + rfalFIFOStatusUpdate(); + return ((gRFAL.fifo.status[RFAL_FIFO_STATUS_REG2] & + ST25R3916_REG_FIFO_STATUS2_fifo_lb_mask) != 0U); +} + +/*******************************************************************************/ +static bool rfalFIFOStatusIsMissingPar(void) { + rfalFIFOStatusUpdate(); + return ((gRFAL.fifo.status[RFAL_FIFO_STATUS_REG2] & + ST25R3916_REG_FIFO_STATUS2_np_lb) != 0U); +} + +/*******************************************************************************/ +static uint8_t rfalFIFOGetNumIncompleteBits(void) { + rfalFIFOStatusUpdate(); + return ((gRFAL.fifo.status[RFAL_FIFO_STATUS_REG2] & + ST25R3916_REG_FIFO_STATUS2_fifo_lb_mask) >> + ST25R3916_REG_FIFO_STATUS2_fifo_lb_shift); +} + +#if RFAL_FEATURE_NFCA + +/*******************************************************************************/ +ReturnCode rfalISO14443ATransceiveShortFrame(rfal14443AShortFrameCmd txCmd, + uint8_t *rxBuf, uint8_t rxBufLen, + uint16_t *rxRcvdLen, + uint32_t fwt) { + ReturnCode ret; + uint8_t directCmd; + + /* Check if RFAL is properly initialized */ + if ((!st25r3916IsTxEnabled()) || (gRFAL.state < RFAL_STATE_MODE_SET) || + ((gRFAL.mode != RFAL_MODE_POLL_NFCA) && + (gRFAL.mode != RFAL_MODE_POLL_NFCA_T1T))) { + return RFAL_ERR_WRONG_STATE; + } + + /* Check for valid parameters */ + if ((rxBuf == NULL) || (rxRcvdLen == NULL) || (fwt == RFAL_FWT_NONE)) { + return RFAL_ERR_PARAM; + } + + /*******************************************************************************/ + /* Select the Direct Command to be performed */ + switch (txCmd) { + case RFAL_14443A_SHORTFRAME_CMD_WUPA: + directCmd = ST25R3916_CMD_TRANSMIT_WUPA; + break; + + case RFAL_14443A_SHORTFRAME_CMD_REQA: + directCmd = ST25R3916_CMD_TRANSMIT_REQA; + break; + + default: + return RFAL_ERR_PARAM; + } + + /*******************************************************************************/ + /* Wait for GT and FDT */ + while (!rfalIsGTExpired()) { /* MISRA 15.6: mandatory brackets */ + }; + while (st25r3916IsGPTRunning()) { /* MISRA 15.6: mandatory brackets */ + }; + + rfalTimerDestroy(gRFAL.tmr.GT); + gRFAL.tmr.GT = RFAL_TIMING_NONE; + + /*******************************************************************************/ + /* Prepare for Transceive, Receive only (bypass Tx states) */ + gRFAL.TxRx.ctx.flags = ((uint32_t)RFAL_TXRX_FLAGS_CRC_TX_MANUAL | + (uint32_t)RFAL_TXRX_FLAGS_CRC_RX_KEEP | + (uint32_t)RFAL_TXRX_FLAGS_CRC_RX_MANUAL); + gRFAL.TxRx.ctx.rxBuf = rxBuf; + gRFAL.TxRx.ctx.rxBufLen = rxBufLen; + gRFAL.TxRx.ctx.rxRcvdLen = rxRcvdLen; + gRFAL.TxRx.ctx.fwt = fwt; + + /*******************************************************************************/ + /* Load NRT with FWT */ + st25r3916SetNoResponseTime(rfalConv1fcTo64fc( + RFAL_MIN((fwt + RFAL_FWT_ADJUSTMENT + RFAL_FWT_A_ADJUSTMENT), + RFAL_ST25R3916_NRT_MAX_1FC))); + + if (gRFAL.timings.FDTListen != RFAL_TIMING_NONE) { + /* Ensure that MRT is using 64/fc steps */ + st25r3916ClrRegisterBits(ST25R3916_REG_TIMER_EMV_CONTROL, + ST25R3916_REG_TIMER_EMV_CONTROL_mrt_step); + + /* Set Minimum FDT(Listen) in which PICC is not allowed to send a response + */ + st25r3916WriteRegister( + ST25R3916_REG_MASK_RX_TIMER, + (uint8_t)rfalConv1fcTo64fc( + ((RFAL_FDT_LISTEN_MRT_ADJUSTMENT + RFAL_FDT_LISTEN_A_ADJUSTMENT) > + gRFAL.timings.FDTListen) + ? RFAL_ST25R3916_MRT_MIN_1FC + : (gRFAL.timings.FDTListen - (RFAL_FDT_LISTEN_MRT_ADJUSTMENT + + RFAL_FDT_LISTEN_A_ADJUSTMENT)))); + } + + /* In Passive communications General Purpose Timer is used to measure FDT Poll + */ + if (gRFAL.timings.FDTPoll != RFAL_TIMING_NONE) { + /* Configure GPT to start at RX end */ + st25r3916SetStartGPTimer( + (uint16_t)rfalConv1fcTo8fc( + ((gRFAL.timings.FDTPoll < RFAL_FDT_POLL_ADJUSTMENT) + ? gRFAL.timings.FDTPoll + : (gRFAL.timings.FDTPoll - RFAL_FDT_POLL_ADJUSTMENT))), + ST25R3916_REG_TIMER_EMV_CONTROL_gptc_erx); + } + + /*******************************************************************************/ + rfalPrepareTransceive(); + + /* Also enable bit collision interrupt */ + st25r3916GetInterrupt(ST25R3916_IRQ_MASK_COL); + st25r3916EnableInterrupts(ST25R3916_IRQ_MASK_COL); + + /*Check if Observation Mode is enabled and set it on ST25R391x */ + rfalCheckEnableObsModeTx(); + + /*******************************************************************************/ + /* Clear nbtx bits before sending WUPA/REQA - otherwise ST25R3916 will report + * parity error, Note2 of the register */ + st25r3916WriteRegister(ST25R3916_REG_NUM_TX_BYTES2, 0); + + /* Send either WUPA or REQA. All affected tags will backscatter ATQA and + * change to READY state */ + st25r3916ExecuteCommand(directCmd); + + /* Wait for TXE */ + if (st25r3916WaitForInterruptsTimed( + ST25R3916_IRQ_MASK_TXE, + (uint16_t)RFAL_MAX(rfalConv1fcToMs(fwt), + RFAL_ST25R3916_SW_TMR_MIN_1MS)) == 0U) { + ret = RFAL_ERR_IO; + } else { + /*Check if Observation Mode is enabled and set it on ST25R391x */ + rfalCheckEnableObsModeRx(); + + /* Jump into a transceive Rx state for reception (bypass Tx states) */ + gRFAL.state = RFAL_STATE_TXRX; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_IDLE; + gRFAL.TxRx.status = RFAL_ERR_BUSY; + + /* Execute Transceive Rx blocking */ + ret = rfalTransceiveBlockingRx(); + } + + /* Disable Collision interrupt */ + st25r3916DisableInterrupts((ST25R3916_IRQ_MASK_COL)); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalISO14443ATransceiveAnticollisionFrame(uint8_t *buf, + uint8_t *bytesToSend, + uint8_t *bitsToSend, + uint16_t *rxLength, + uint32_t fwt) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR(ret, rfalISO14443AStartTransceiveAnticollisionFrame( + buf, bytesToSend, bitsToSend, rxLength, fwt)); + rfalRunBlocking(ret, rfalISO14443AGetTransceiveAnticollisionFrameStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalISO14443AStartTransceiveAnticollisionFrame(uint8_t *buf, + uint8_t *bytesToSend, + uint8_t *bitsToSend, + uint16_t *rxLength, + uint32_t fwt) { + ReturnCode ret; + rfalTransceiveContext ctx; + + /* Check if RFAL is properly initialized */ + if ((gRFAL.state < RFAL_STATE_MODE_SET) || + (gRFAL.mode != RFAL_MODE_POLL_NFCA)) { + return RFAL_ERR_WRONG_STATE; + } + + /* Check for valid parameters */ + if ((buf == NULL) || (bytesToSend == NULL) || (bitsToSend == NULL) || + (rxLength == NULL)) { + return RFAL_ERR_PARAM; + } + + /*******************************************************************************/ + /* Set speficic Analog Config for Anticolission if needed */ + rfalSetAnalogConfig((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | + RFAL_ANALOG_CONFIG_ANTICOL)); + + /*******************************************************************************/ + /* Enable anti collision to recognise collision in first byte of SENS_REQ */ + st25r3916SetRegisterBits(ST25R3916_REG_ISO14443A_NFC, + ST25R3916_REG_ISO14443A_NFC_antcl); + + /*******************************************************************************/ + /* Prepare for Transceive */ + ctx.flags = ((uint32_t)RFAL_TXRX_FLAGS_CRC_TX_MANUAL | + (uint32_t)RFAL_TXRX_FLAGS_CRC_RX_KEEP | + (uint32_t)RFAL_TXRX_FLAGS_CRC_RX_MANUAL); + ctx.txBuf = buf; + ctx.txBufLen = (uint16_t)(rfalConvBytesToBits(*bytesToSend) + *bitsToSend); + ctx.rxBuf = &buf[*bytesToSend]; + ctx.rxBufLen = (uint16_t)rfalConvBytesToBits(RFAL_ISO14443A_SDD_RES_LEN); + ctx.rxRcvdLen = rxLength; + ctx.fwt = fwt; + + /* Disable Automatic Gain Control (AGC) for better detection of collisions if + * using Coherent Receiver */ + ctx.flags |= (st25r3916CheckReg(ST25R3916_REG_AUX, ST25R3916_REG_AUX_dis_corr, + ST25R3916_REG_AUX_dis_corr) + ? (uint32_t)RFAL_TXRX_FLAGS_AGC_OFF + : 0x00U); + + RFAL_EXIT_ON_ERR(ret, rfalStartTransceive(&ctx)); + + /* Additionally enable bit collision interrupt */ + st25r3916GetInterrupt(ST25R3916_IRQ_MASK_COL); + st25r3916EnableInterrupts(ST25R3916_IRQ_MASK_COL); + + /*******************************************************************************/ + gRFAL.nfcaData.collByte = 0; + + /* Save the collision byte */ + if ((*bitsToSend) > 0U) { + buf[(*bytesToSend)] <<= (RFAL_BITS_IN_BYTE - (*bitsToSend)); + buf[(*bytesToSend)] >>= (RFAL_BITS_IN_BYTE - (*bitsToSend)); + gRFAL.nfcaData.collByte = buf[(*bytesToSend)]; + } + + gRFAL.nfcaData.buf = buf; + gRFAL.nfcaData.bytesToSend = bytesToSend; + gRFAL.nfcaData.bitsToSend = bitsToSend; + gRFAL.nfcaData.rxLength = rxLength; + + /*******************************************************************************/ + /* Run Transceive Tx */ + return rfalTransceiveRunBlockingTx(); +} + +/*******************************************************************************/ +ReturnCode rfalISO14443AGetTransceiveAnticollisionFrameStatus(void) { + ReturnCode ret; + uint8_t collData; + + RFAL_EXIT_ON_BUSY(ret, rfalGetTransceiveStatus()); + + /*******************************************************************************/ + if ((*gRFAL.nfcaData.bitsToSend) > 0U) { + gRFAL.nfcaData.buf[(*gRFAL.nfcaData.bytesToSend)] >>= + (*gRFAL.nfcaData.bitsToSend); + gRFAL.nfcaData.buf[(*gRFAL.nfcaData.bytesToSend)] <<= + (*gRFAL.nfcaData.bitsToSend); + gRFAL.nfcaData.buf[(*gRFAL.nfcaData.bytesToSend)] |= + gRFAL.nfcaData.collByte; + } + + if (ret == RFAL_ERR_RF_COLLISION) { + /* Read out collision register */ + st25r3916ReadRegister(ST25R3916_REG_COLLISION_STATUS, &collData); + + (*gRFAL.nfcaData.bytesToSend) = + ((collData >> ST25R3916_REG_COLLISION_STATUS_c_byte_shift) & + 0x0FU); // 4-bits Byte information + (*gRFAL.nfcaData.bitsToSend) = + ((collData >> ST25R3916_REG_COLLISION_STATUS_c_bit_shift) & + 0x07U); // 3-bits bit information + } + + /*******************************************************************************/ + /* Disable Collision interrupt */ + st25r3916DisableInterrupts((ST25R3916_IRQ_MASK_COL)); + + /* Disable anti collision again */ + st25r3916ClrRegisterBits(ST25R3916_REG_ISO14443A_NFC, + ST25R3916_REG_ISO14443A_NFC_antcl); + + /*******************************************************************************/ + /* Restore common Analog configurations for this mode */ + rfalSetAnalogConfig((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + rfalConvBR2ACBR(gRFAL.txBR) | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCA | + rfalConvBR2ACBR(gRFAL.rxBR) | RFAL_ANALOG_CONFIG_RX)); + + return ret; +} + +#endif /* RFAL_FEATURE_NFCA */ + +#if RFAL_FEATURE_NFCV + +/*******************************************************************************/ +ReturnCode rfalISO15693TransceiveAnticollisionFrame(uint8_t *txBuf, + uint8_t txBufLen, + uint8_t *rxBuf, + uint8_t rxBufLen, + uint16_t *actLen) { + ReturnCode ret; + rfalTransceiveContext ctx; + + /* Check if RFAL is properly initialized */ + if ((gRFAL.state < RFAL_STATE_MODE_SET) || + (gRFAL.mode != RFAL_MODE_POLL_NFCV)) { + return RFAL_ERR_WRONG_STATE; + } + + /*******************************************************************************/ + /* Set speficic Analog Config for Anticolission if needed */ + rfalSetAnalogConfig((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCV | + RFAL_ANALOG_CONFIG_BITRATE_COMMON | + RFAL_ANALOG_CONFIG_ANTICOL)); + + /* Ignoring collisions before the UID (RES_FLAG + DSFID) */ + gRFAL.nfcvData.ignoreBits = (uint16_t)RFAL_ISO15693_IGNORE_BITS; + + /*******************************************************************************/ + /* Prepare for Transceive */ + ctx.flags = + ((txBufLen == 0U) ? (uint32_t)RFAL_TXRX_FLAGS_CRC_TX_MANUAL + : (uint32_t)RFAL_TXRX_FLAGS_CRC_TX_AUTO) | + (uint32_t)RFAL_TXRX_FLAGS_CRC_RX_KEEP | + (uint32_t)RFAL_TXRX_FLAGS_AGC_OFF | + ((txBufLen == 0U) + ? (uint32_t)RFAL_TXRX_FLAGS_NFCV_FLAG_MANUAL + : (uint32_t) + RFAL_TXRX_FLAGS_NFCV_FLAG_AUTO); /* Disable Automatic Gain + Control (AGC) for better + detection of collision */ + ctx.txBuf = txBuf; + ctx.txBufLen = (uint16_t)rfalConvBytesToBits(txBufLen); + ctx.rxBuf = rxBuf; + ctx.rxBufLen = (uint16_t)rfalConvBytesToBits(rxBufLen); + ctx.rxRcvdLen = actLen; + ctx.fwt = rfalConv64fcTo1fc(ISO15693_FWT); + + RFAL_EXIT_ON_ERR(ret, rfalStartTransceive(&ctx)); + + /*******************************************************************************/ + /* Run Transceive blocking */ + ret = rfalTransceiveRunBlockingTx(); + if (ret == RFAL_ERR_NONE) { + ret = rfalTransceiveBlockingRx(); + } + + /* Check if a Transmission error and received data is less then expected */ + if (((ret == RFAL_ERR_RF_COLLISION) || (ret == RFAL_ERR_CRC) || + (ret == RFAL_ERR_FRAMING)) && + (rfalConvBitsToBytes(*ctx.rxRcvdLen) < RFAL_ISO15693_INV_RES_LEN)) { + /* If INVENTORY_RES is shorter than expected, tag is still modulating * + * Ensure that response is complete before next frame */ + platformDelay( + (uint8_t)((RFAL_ISO15693_INV_RES_LEN - + rfalConvBitsToBytes(*ctx.rxRcvdLen)) / + ((RFAL_ISO15693_INV_RES_LEN / RFAL_ISO15693_INV_RES_DUR) + + 1U))); + } + + /* Restore common Analog configurations for this mode */ + rfalSetAnalogConfig((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCV | + rfalConvBR2ACBR(gRFAL.txBR) | RFAL_ANALOG_CONFIG_TX)); + rfalSetAnalogConfig((RFAL_ANALOG_CONFIG_POLL | RFAL_ANALOG_CONFIG_TECH_NFCV | + rfalConvBR2ACBR(gRFAL.rxBR) | RFAL_ANALOG_CONFIG_RX)); + + gRFAL.nfcvData.ignoreBits = 0; + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalISO15693TransceiveEOFAnticollision(uint8_t *rxBuf, + uint8_t rxBufLen, + uint16_t *actLen) { + uint8_t dummy; + + return rfalISO15693TransceiveAnticollisionFrame(&dummy, 0, rxBuf, rxBufLen, + actLen); +} + +/*******************************************************************************/ +ReturnCode rfalISO15693TransceiveEOF(uint8_t *rxBuf, uint16_t rxBufLen, + uint16_t *actLen) { + ReturnCode ret; + uint8_t dummy; + + /* Check if RFAL is properly initialized */ + if ((gRFAL.state < RFAL_STATE_MODE_SET) || + (gRFAL.mode != RFAL_MODE_POLL_NFCV)) { + return RFAL_ERR_WRONG_STATE; + } + + /*******************************************************************************/ + /* Run Transceive blocking */ + ret = rfalTransceiveBlockingTxRx(&dummy, 0, rxBuf, rxBufLen, actLen, + ((uint32_t)RFAL_TXRX_FLAGS_CRC_TX_MANUAL | + (uint32_t)RFAL_TXRX_FLAGS_CRC_RX_KEEP | + (uint32_t)RFAL_TXRX_FLAGS_AGC_ON), + rfalConv64fcTo1fc(ISO15693_FWT)); + return ret; +} + +#endif /* RFAL_FEATURE_NFCV */ + +#if RFAL_FEATURE_NFCF + +/*******************************************************************************/ +ReturnCode rfalFeliCaPoll(rfalFeliCaPollSlots slots, uint16_t sysCode, + uint8_t reqCode, rfalFeliCaPollRes *pollResList, + uint8_t pollResListSize, uint8_t *devicesDetected, + uint8_t *collisionsDetected) { + ReturnCode ret; + + RFAL_EXIT_ON_ERR( + ret, + rfalStartFeliCaPoll(slots, sysCode, reqCode, pollResList, pollResListSize, + devicesDetected, collisionsDetected)); + rfalRunBlocking(ret, rfalGetFeliCaPollStatus()); + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalStartFeliCaPoll(rfalFeliCaPollSlots slots, uint16_t sysCode, + uint8_t reqCode, rfalFeliCaPollRes *pollResList, + uint8_t pollResListSize, + uint8_t *devicesDetected, + uint8_t *collisionsDetected) { + ReturnCode ret; + uint8_t + frame[RFAL_FELICA_POLL_REQ_LEN - + RFAL_FELICA_LEN_LEN]; // LEN is added by ST25R391x automatically + uint8_t frameIdx; + + /* Check if RFAL is properly initialized */ + if ((gRFAL.state < RFAL_STATE_MODE_SET) || + (gRFAL.mode != RFAL_MODE_POLL_NFCF)) { + return RFAL_ERR_WRONG_STATE; + } + + frameIdx = 0; + gRFAL.nfcfData.colDetected = 0; + gRFAL.nfcfData.devDetected = 0; + + /*******************************************************************************/ + /* Compute SENSF_REQ frame */ + frame[frameIdx++] = (uint8_t)FELICA_CMD_POLLING; /* CMD: SENF_REQ */ + frame[frameIdx++] = (uint8_t)(sysCode >> 8); /* System Code (SC) */ + frame[frameIdx++] = (uint8_t)(sysCode & 0xFFU); /* System Code (SC) */ + frame[frameIdx++] = reqCode; /* Communication Parameter Request (RC)*/ + frame[frameIdx++] = (uint8_t)slots; /* TimeSlot (TSN) */ + + /*******************************************************************************/ + /* NRT should not stop on reception - Fake EMD which uses NRT in nrt_emv * + * RFAL_ERRORHANDLING_EMD has no special handling for NFC-F mode */ + gRFAL.nfcfData.curHandling = gRFAL.conf.eHandling; + gRFAL.conf.eHandling = RFAL_ERRORHANDLING_EMD; + + /*******************************************************************************/ + /* Run transceive blocking, + * Calculate Total Response Time in(64/fc): + * 512 PICC process time + (n * 256 Time Slot duration) + */ + RFAL_EXIT_ON_ERR(ret, rfalTransceiveBlockingTx( + frame, (uint16_t)frameIdx, + (uint8_t *)gRFAL.nfcfData.pollResponses, + RFAL_FELICA_POLL_RES_LEN, &gRFAL.nfcfData.actLen, + (RFAL_TXRX_FLAGS_DEFAULT), + rfalConv64fcTo1fc(RFAL_FELICA_POLL_DELAY_TIME + + (RFAL_FELICA_POLL_SLOT_TIME * + ((uint32_t)slots + 1U))))); + + /* Store context */ + gRFAL.nfcfData.pollResList = pollResList; + gRFAL.nfcfData.pollResListSize = pollResListSize; + gRFAL.nfcfData.devicesDetected = devicesDetected; + gRFAL.nfcfData.collisionsDetected = collisionsDetected; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalGetFeliCaPollStatus(void) { + ReturnCode ret; + + /* Check if RFAL is properly initialized */ + if ((gRFAL.state != RFAL_STATE_TXRX) || (gRFAL.mode != RFAL_MODE_POLL_NFCF)) { + return RFAL_ERR_WRONG_STATE; + } + + /* Wait until transceive has terminated */ + RFAL_EXIT_ON_BUSY(ret, rfalGetTransceiveStatus()); + + /* Upon timeout the full Poll Delay + (Slot time)*(nbSlots) has expired */ + if (ret != RFAL_ERR_TIMEOUT) { + /* Reception done, reEnabled Rx for following Slot */ + /* The Rx reEnable is done before the check of NRT to be as fast as possible + * for the upcoming slot * Tslot = 1208us | SENSF_RES (19 payload + * bytes at 212) = 1135us -> Potentially ~75us between responses */ + st25r3916ExecuteCommand(ST25R3916_CMD_UNMASK_RECEIVE_DATA); + st25r3916ExecuteCommand(ST25R3916_CMD_RESET_RXGAIN); + rfalFIFOStatusClear(); + + /* If the reception was OK, new device found */ + if (ret == RFAL_ERR_NONE) { + gRFAL.nfcfData.devDetected++; + + /* Overwrite the Transceive context for the next reception */ + gRFAL.TxRx.ctx.rxBuf = + (uint8_t *)gRFAL.nfcfData.pollResponses[gRFAL.nfcfData.devDetected]; + } + /* If the reception was not OK, mark as collision */ + else { + gRFAL.nfcfData.colDetected++; + } + + /* Check whether that NRT has not expired meanwhile */ + if (st25r3916CheckReg(ST25R3916_REG_NFCIP1_BIT_RATE, + ST25R3916_REG_NFCIP1_BIT_RATE_nrt_on, + ST25R3916_REG_NFCIP1_BIT_RATE_nrt_on)) { + /* Jump again into transceive Rx state for the following reception */ + gRFAL.TxRx.status = RFAL_ERR_BUSY; + gRFAL.state = RFAL_STATE_TXRX; + gRFAL.TxRx.state = RFAL_TXRX_STATE_RX_IDLE; + return RFAL_ERR_BUSY; + } + + /* In case NRT has expired meanwhile, ensure that Rx is disabled */ + st25r3916ExecuteCommand(ST25R3916_CMD_MASK_RECEIVE_DATA); + } + + /*******************************************************************************/ + /* Back to previous error handling (restore NRT to normal mode) */ + gRFAL.conf.eHandling = gRFAL.nfcfData.curHandling; + + /*******************************************************************************/ + /* Assign output parameters if requested */ + if ((gRFAL.nfcfData.pollResList != NULL) && + (gRFAL.nfcfData.pollResListSize > 0U) && + (gRFAL.nfcfData.devDetected > 0U)) { + RFAL_MEMCPY(gRFAL.nfcfData.pollResList, gRFAL.nfcfData.pollResponses, + (RFAL_FELICA_POLL_RES_LEN * + (uint32_t)RFAL_MIN(gRFAL.nfcfData.pollResListSize, + gRFAL.nfcfData.devDetected))); + } + + if (gRFAL.nfcfData.devicesDetected != NULL) { + *gRFAL.nfcfData.devicesDetected = gRFAL.nfcfData.devDetected; + } + + if (gRFAL.nfcfData.collisionsDetected != NULL) { + *gRFAL.nfcfData.collisionsDetected = gRFAL.nfcfData.colDetected; + } + + return ( + ((gRFAL.nfcfData.colDetected != 0U) || (gRFAL.nfcfData.devDetected != 0U)) + ? RFAL_ERR_NONE + : ret); +} + +#endif /* RFAL_FEATURE_NFCF */ + +/***************************************************************************** + * Listen Mode * + *****************************************************************************/ + +/*******************************************************************************/ +bool rfalIsExtFieldOn(void) { return st25r3916IsExtFieldOn(); } + +#if RFAL_FEATURE_LISTEN_MODE + +/*******************************************************************************/ +ReturnCode rfalListenStart(uint32_t lmMask, const rfalLmConfPA *confA, + const rfalLmConfPB *confB, const rfalLmConfPF *confF, + uint8_t *rxBuf, uint16_t rxBufLen, uint16_t *rxLen) { + t_rfalPTMem PTMem; /* PRQA S 0759 # MISRA 19.2 - Allocating Union where + members are of the same type, just different names. Thus + no problem can occur. */ + uint8_t *pPTMem; + uint8_t autoResp; + + /* Check if RFAL is initialized */ + if (gRFAL.state < RFAL_STATE_INIT) { + return RFAL_ERR_WRONG_STATE; + } + + gRFAL.Lm.state = RFAL_LM_STATE_NOT_INIT; + gRFAL.Lm.mdIrqs = ST25R3916_IRQ_MASK_NONE; + gRFAL.Lm.mdReg = (ST25R3916_REG_MODE_targ_init | ST25R3916_REG_MODE_om_nfc | + ST25R3916_REG_MODE_nfc_ar_off); + + /* By default disable all automatic responses */ + autoResp = (ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a | + ST25R3916_REG_PASSIVE_TARGET_d_212_424_1r | + ST25R3916_REG_PASSIVE_TARGET_d_ac_ap2p); + + /*******************************************************************************/ + if ((lmMask & RFAL_LM_MASK_NFCA) != 0U) { + /* Check if the conf has been provided */ + if (confA == NULL) { + return RFAL_ERR_PARAM; + } + + pPTMem = (uint8_t *)PTMem.PTMem_A; + + /*******************************************************************************/ + /* Check and set supported NFCID Length */ + switch (confA->nfcidLen) { + case RFAL_LM_NFCID_LEN_04: + st25r3916ChangeRegisterBits(ST25R3916_REG_AUX, + ST25R3916_REG_AUX_nfc_id_mask, + ST25R3916_REG_AUX_nfc_id_4bytes); + break; + + case RFAL_LM_NFCID_LEN_07: + st25r3916ChangeRegisterBits(ST25R3916_REG_AUX, + ST25R3916_REG_AUX_nfc_id_mask, + ST25R3916_REG_AUX_nfc_id_7bytes); + break; + + default: + return RFAL_ERR_PARAM; + } + + /*******************************************************************************/ + /* Set NFCID */ + RFAL_MEMCPY(pPTMem, confA->nfcid, RFAL_NFCID1_TRIPLE_LEN); + pPTMem = &pPTMem[RFAL_NFCID1_TRIPLE_LEN]; /* MISRA 18.4 */ + + /* Set SENS_RES */ + RFAL_MEMCPY(pPTMem, confA->SENS_RES, RFAL_LM_SENS_RES_LEN); + pPTMem = &pPTMem[RFAL_LM_SENS_RES_LEN]; /* MISRA 18.4 */ + + /* Set SEL_RES */ + *(pPTMem++) = ((confA->nfcidLen == RFAL_LM_NFCID_LEN_04) + ? (confA->SEL_RES & ~RFAL_LM_NFCID_INCOMPLETE) + : (confA->SEL_RES | RFAL_LM_NFCID_INCOMPLETE)); + *(pPTMem++) = (confA->SEL_RES & ~RFAL_LM_NFCID_INCOMPLETE); + *(pPTMem++) = (confA->SEL_RES & ~RFAL_LM_NFCID_INCOMPLETE); + + /* Write into PTMem-A */ + st25r3916WritePTMem(PTMem.PTMem_A, ST25R3916_PTM_A_LEN); + + /*******************************************************************************/ + /* Enable automatic responses for A */ + autoResp &= ~ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a; + + /* Set Target mode, Bit Rate detection and Listen Mode for NFC-A */ + gRFAL.Lm.mdReg |= (ST25R3916_REG_MODE_targ_targ | ST25R3916_REG_MODE_om3 | + ST25R3916_REG_MODE_om0 | ST25R3916_REG_MODE_nfc_ar_off); + + gRFAL.Lm.mdIrqs |= (ST25R3916_IRQ_MASK_WU_A | ST25R3916_IRQ_MASK_WU_A_X | + ST25R3916_IRQ_MASK_RXE_PTA); + } + + /*******************************************************************************/ + if ((lmMask & RFAL_LM_MASK_NFCB) != 0U) { + /* Check if the conf has been provided */ + if (confB == NULL) { + return RFAL_ERR_PARAM; + } + + return RFAL_ERR_NOTSUPP; + } + + /*******************************************************************************/ + if ((lmMask & RFAL_LM_MASK_NFCF) != 0U) { + pPTMem = (uint8_t *)PTMem.PTMem_F; + + /* Check if the conf has been provided */ + if (confF == NULL) { + return RFAL_ERR_PARAM; + } + + /*******************************************************************************/ + /* Set System Code */ + RFAL_MEMCPY(pPTMem, confF->SC, RFAL_LM_SENSF_SC_LEN); + pPTMem = &pPTMem[RFAL_LM_SENSF_SC_LEN]; /* MISRA 18.4 */ + + /* Set SENSF_RES */ + RFAL_MEMCPY(pPTMem, confF->SENSF_RES, RFAL_LM_SENSF_RES_LEN); + + /* Set RD bytes to 0x00 as ST25R3916 cannot support advances features */ + pPTMem[RFAL_LM_SENSF_RD0_POS] = + 0x00; /* NFC Forum Digital 1.1 Table 46: 0x00 */ + pPTMem[RFAL_LM_SENSF_RD1_POS] = + 0x00; /* NFC Forum Digital 1.1 Table 47: No automatic bit rates */ + + pPTMem = &pPTMem[RFAL_LM_SENS_RES_LEN]; /* MISRA 18.4 */ + + /* Write into PTMem-F */ + st25r3916WritePTMemF(PTMem.PTMem_F, ST25R3916_PTM_F_LEN); + + /*******************************************************************************/ + /* Write 24 TSN "Random" Numbers at first initialization and let it rollover + */ + if (!gRFAL.Lm.iniFlag) { + pPTMem = (uint8_t *)PTMem.TSN; + + *(pPTMem++) = 0x12; + *(pPTMem++) = 0x34; + *(pPTMem++) = 0x56; + *(pPTMem++) = 0x78; + *(pPTMem++) = 0x9A; + *(pPTMem++) = 0xBC; + *(pPTMem++) = 0xDF; + *(pPTMem++) = 0x21; + *(pPTMem++) = 0x43; + *(pPTMem++) = 0x65; + *(pPTMem++) = 0x87; + *(pPTMem++) = 0xA9; + + /* Write into PTMem-TSN */ + st25r3916WritePTMemTSN(PTMem.TSN, ST25R3916_PTM_TSN_LEN); + } + + /*******************************************************************************/ + /* Enable automatic responses for F */ + autoResp &= ~(ST25R3916_REG_PASSIVE_TARGET_d_212_424_1r); + + /* Set Target mode, Bit Rate detection and Listen Mode for NFC-F */ + gRFAL.Lm.mdReg |= (ST25R3916_REG_MODE_targ_targ | ST25R3916_REG_MODE_om3 | + ST25R3916_REG_MODE_om2 | ST25R3916_REG_MODE_nfc_ar_off); + + /* In CE NFC-F any data without error will be passed to FIFO, to support CUP + */ + gRFAL.Lm.mdIrqs |= (ST25R3916_IRQ_MASK_WU_F | ST25R3916_IRQ_MASK_RXE_PTA | + ST25R3916_IRQ_MASK_RXE); + } + + /*******************************************************************************/ + if ((lmMask & RFAL_LM_MASK_ACTIVE_P2P) != 0U) { + /* Enable Reception of P2P frames */ + autoResp &= ~(ST25R3916_REG_PASSIVE_TARGET_d_ac_ap2p); + + /* Set Target mode, Bit Rate detection and Automatic Response RF Collision + * Avoidance */ + gRFAL.Lm.mdReg |= (ST25R3916_REG_MODE_targ_targ | ST25R3916_REG_MODE_om3 | + ST25R3916_REG_MODE_om2 | ST25R3916_REG_MODE_om0 | + ST25R3916_REG_MODE_nfc_ar_auto_rx); + + /* Ensure CRC check is enabled */ + st25r3916ClrRegisterBits(ST25R3916_REG_AUX, ST25R3916_REG_AUX_no_crc_rx); + + /* n * TRFW timing shall vary Activity 2.1 3.4.1.1 */ + st25r3916ChangeRegisterBits(ST25R3916_REG_AUX, ST25R3916_REG_AUX_nfc_n_mask, + gRFAL.timings.nTRFW); + gRFAL.timings.nTRFW = rfalGennTRFW(gRFAL.timings.nTRFW); + + gRFAL.Lm.mdIrqs |= (ST25R3916_IRQ_MASK_RXE); + } + + /* Check if one of the modes were selected */ + if ((gRFAL.Lm.mdReg & ST25R3916_REG_MODE_targ) == + ST25R3916_REG_MODE_targ_targ) { + gRFAL.state = RFAL_STATE_LM; + gRFAL.Lm.mdMask = lmMask; + + gRFAL.Lm.rxBuf = rxBuf; + gRFAL.Lm.rxBufLen = rxBufLen; + gRFAL.Lm.rxLen = rxLen; + *gRFAL.Lm.rxLen = 0; + gRFAL.Lm.dataFlag = false; + gRFAL.Lm.iniFlag = true; + + /* Apply the Automatic Responses configuration */ + st25r3916ChangeRegisterBits(ST25R3916_REG_PASSIVE_TARGET, + (ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a | + ST25R3916_REG_PASSIVE_TARGET_d_212_424_1r | + ST25R3916_REG_PASSIVE_TARGET_d_ac_ap2p), + autoResp); + + /* Disable GPT trigger source */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_TIMER_EMV_CONTROL, + ST25R3916_REG_TIMER_EMV_CONTROL_gptc_mask, + ST25R3916_REG_TIMER_EMV_CONTROL_gptc_no_trigger); + + /* On Bit Rate Detection Mode ST25R391x will filter incoming frames during + * MRT time starting on External Field On event, use 512/fc steps */ + st25r3916SetRegisterBits(ST25R3916_REG_TIMER_EMV_CONTROL, + ST25R3916_REG_TIMER_EMV_CONTROL_mrt_step_512); + st25r3916WriteRegister(ST25R3916_REG_MASK_RX_TIMER, + (uint8_t)rfalConv1fcTo512fc(RFAL_LM_GT)); + + /* Restore default settings on NFCIP1 mode, Receiving parity + CRC bits and + * manual Tx Parity*/ + st25r3916ClrRegisterBits(ST25R3916_REG_ISO14443A_NFC, + (ST25R3916_REG_ISO14443A_NFC_no_tx_par | + ST25R3916_REG_ISO14443A_NFC_no_rx_par | + ST25R3916_REG_ISO14443A_NFC_nfc_f0)); + + /* External Field Detector enabled as Automatics on rfalInitialize() */ + + /* Set Analog configurations for generic Listen mode */ + /* Not on SetState(POWER OFF) as otherwise would be applied on every Field + * Event */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_LISTEN_ON)); + + /* Initialize as POWER_OFF and set proper mode in RF Chip */ + rfalListenSetState(RFAL_LM_STATE_POWER_OFF); + } else { + return RFAL_ERR_REQUEST; /* Listen Start called but no mode was enabled */ + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +static ReturnCode rfalRunListenModeWorker(void) { + volatile uint32_t irqs; + uint8_t tmp; + + if (gRFAL.state != RFAL_STATE_LM) { + return RFAL_ERR_WRONG_STATE; + } + + switch (gRFAL.Lm.state) { + /*******************************************************************************/ + case RFAL_LM_STATE_POWER_OFF: + + irqs = st25r3916GetInterrupt((ST25R3916_IRQ_MASK_EON)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + if ((irqs & ST25R3916_IRQ_MASK_EON) != 0U) { + rfalListenSetState(RFAL_LM_STATE_IDLE); + } else { + break; + } + /* fall through */ + + /*******************************************************************************/ + case RFAL_LM_STATE_IDLE: /* PRQA S 2003 # MISRA 16.3 - Intentional fall + through */ + + irqs = st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_NFCT | ST25R3916_IRQ_MASK_WU_F | + ST25R3916_IRQ_MASK_RXE | ST25R3916_IRQ_MASK_EOF | + ST25R3916_IRQ_MASK_RXE_PTA)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + if ((irqs & ST25R3916_IRQ_MASK_NFCT) != 0U) { + /* Retrieve detected bitrate */ + uint8_t newBr; + st25r3916ReadRegister(ST25R3916_REG_NFCIP1_BIT_RATE, &newBr); + newBr >>= ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rate_shift; + + if (newBr > ST25R3916_REG_BIT_RATE_rxrate_424) { + newBr = ST25R3916_REG_BIT_RATE_rxrate_424; + } + + gRFAL.Lm.brDetected = + (rfalBitRate)(newBr); /* PRQA S 4342 # MISRA 10.5 - Guaranteed that + no invalid enum values may be created. See + also equalityGuard_RFAL_BR_106 ff.*/ + } + + /* If EOF has already been received processing of other events is + * neglectable */ + if (((irqs & ST25R3916_IRQ_MASK_EOF) != 0U) && (!gRFAL.Lm.dataFlag)) { + rfalListenSetState(RFAL_LM_STATE_POWER_OFF); + } else if (((irqs & ST25R3916_IRQ_MASK_WU_F) != 0U) && + (gRFAL.Lm.brDetected != RFAL_BR_KEEP)) { + rfalListenSetState(RFAL_LM_STATE_READY_F); + } else if (((irqs & ST25R3916_IRQ_MASK_RXE) != 0U) && + (gRFAL.Lm.brDetected != RFAL_BR_KEEP)) { + irqs = st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_WU_F | ST25R3916_IRQ_MASK_RXE | + ST25R3916_IRQ_MASK_EOF | ST25R3916_IRQ_MASK_CRC | + ST25R3916_IRQ_MASK_PAR | ST25R3916_IRQ_MASK_ERR2 | + ST25R3916_IRQ_MASK_ERR1)); + + if (((irqs & ST25R3916_IRQ_MASK_CRC) != 0U) || + ((irqs & ST25R3916_IRQ_MASK_PAR) != 0U) || + ((irqs & ST25R3916_IRQ_MASK_ERR1) != 0U)) { + st25r3916ExecuteCommand(ST25R3916_CMD_CLEAR_FIFO); + st25r3916ExecuteCommand(ST25R3916_CMD_UNMASK_RECEIVE_DATA); + st25r3916TxOff(); + break; /* A bad reception occurred, remain in same state */ + } + + /*******************************************************************************/ + /* REMARK: Silicon workaround ST25R3916 Errata #TBD */ + /* In bitrate detection mode the automatic RF Collision Avoidance */ + /* may not be able to emit RF carrier depending on the pt_res setting */ + /* Preemptively enter AP2P before FIFO retrieval and protocol checking + */ + if ((gRFAL.Lm.mdMask & RFAL_LM_MASK_ACTIVE_P2P) != 0U) { + st25r3916WriteRegister( + ST25R3916_REG_MODE, + (ST25R3916_REG_MODE_targ_targ | ST25R3916_REG_MODE_om_targ_nfcip | + ST25R3916_REG_MODE_nfc_ar_eof)); + } + /*******************************************************************************/ + + /* Retrieve received data */ + *gRFAL.Lm.rxLen = st25r3916GetNumFIFOBytes(); + st25r3916ReadFifo( + gRFAL.Lm.rxBuf, + RFAL_MIN(*gRFAL.Lm.rxLen, rfalConvBitsToBytes(gRFAL.Lm.rxBufLen))); + +#ifdef ST25R3916 + /*******************************************************************************/ + /* REMARK: Silicon workaround ST25R3916 Errata #TBD */ + /* In bitrate detection mode CRC is not checked for NFC-A frames */ + if ((*gRFAL.Lm.rxLen > RFAL_CRC_LEN) && + (gRFAL.Lm.brDetected == RFAL_BR_106)) { + if (rfalCrcCalculateCcitt(RFAL_ISO14443A_CRC_INTVAL, gRFAL.Lm.rxBuf, + *gRFAL.Lm.rxLen) != 0U) { + st25r3916ExecuteCommand(ST25R3916_CMD_CLEAR_FIFO); + st25r3916ExecuteCommand(ST25R3916_CMD_UNMASK_RECEIVE_DATA); + st25r3916TxOff(); + break; /* A bad reception occurred, remain in same state */ + } + } + /*******************************************************************************/ +#endif /* ST25R3916 */ + + /* Check if the data we got has at least the CRC and remove it, + * otherwise leave at 0 */ + *gRFAL.Lm.rxLen -= + ((*gRFAL.Lm.rxLen > RFAL_CRC_LEN) ? RFAL_CRC_LEN : *gRFAL.Lm.rxLen); + *gRFAL.Lm.rxLen = (uint16_t)rfalConvBytesToBits(*gRFAL.Lm.rxLen); + gRFAL.Lm.dataFlag = true; + + /*Check if Observation Mode was enabled and disable it on ST25R391x */ + rfalCheckDisableObsMode(); + } else if (((irqs & ST25R3916_IRQ_MASK_RXE_PTA) != 0U) && + (gRFAL.Lm.brDetected != RFAL_BR_KEEP)) { + if (((gRFAL.Lm.mdMask & RFAL_LM_MASK_NFCA) != 0U) && + (gRFAL.Lm.brDetected == RFAL_BR_106)) { + st25r3916ReadRegister(ST25R3916_REG_PASSIVE_TARGET_STATUS, &tmp); + if (tmp > ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_idle) { + rfalListenSetState(RFAL_LM_STATE_READY_A); + } + } + } else { + /* MISRA 15.7 - Empty else */ + } + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_READY_F: + + irqs = st25r3916GetInterrupt((ST25R3916_IRQ_MASK_WU_F | + ST25R3916_IRQ_MASK_RXE | + ST25R3916_IRQ_MASK_EOF)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + /* If EOF has already been received processing of other events is + * neglectable */ + if ((irqs & ST25R3916_IRQ_MASK_EOF) != 0U) { + rfalListenSetState(RFAL_LM_STATE_POWER_OFF); + } else if ((irqs & ST25R3916_IRQ_MASK_RXE) != 0U) { + /* Retrieve the error flags/irqs */ + irqs |= st25r3916GetInterrupt((ST25R3916_IRQ_MASK_CRC | + ST25R3916_IRQ_MASK_ERR2 | + ST25R3916_IRQ_MASK_ERR1)); + + if (((irqs & ST25R3916_IRQ_MASK_CRC) != 0U) || + ((irqs & ST25R3916_IRQ_MASK_ERR1) != 0U)) { + st25r3916ExecuteCommand(ST25R3916_CMD_CLEAR_FIFO); + st25r3916ExecuteCommand(ST25R3916_CMD_UNMASK_RECEIVE_DATA); + break; /* A bad reception occurred, remain in same state */ + } + + /* Retrieve received data */ + *gRFAL.Lm.rxLen = st25r3916GetNumFIFOBytes(); + st25r3916ReadFifo( + gRFAL.Lm.rxBuf, + RFAL_MIN(*gRFAL.Lm.rxLen, rfalConvBitsToBytes(gRFAL.Lm.rxBufLen))); + + /* Check if the data we got has at least the CRC and remove it, + * otherwise leave at 0 */ + *gRFAL.Lm.rxLen -= + ((*gRFAL.Lm.rxLen > RFAL_CRC_LEN) ? RFAL_CRC_LEN : *gRFAL.Lm.rxLen); + *gRFAL.Lm.rxLen = (uint16_t)rfalConvBytesToBits(*gRFAL.Lm.rxLen); + gRFAL.Lm.dataFlag = true; + } else if ((irqs & ST25R3916_IRQ_MASK_WU_F) != 0U) { + break; /* Remain in same state */ + } else { + /* MISRA 15.7 - Empty else */ + } + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_READY_A: + + irqs = st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_EOF | ST25R3916_IRQ_MASK_WU_A)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + /* If EOF has already been received processing of other events is + * neglectable */ + if ((irqs & ST25R3916_IRQ_MASK_EOF) != 0U) { + rfalListenSetState(RFAL_LM_STATE_POWER_OFF); + } else if ((irqs & ST25R3916_IRQ_MASK_WU_A) != 0U) { + rfalListenSetState(RFAL_LM_STATE_ACTIVE_A); + } else { + /* MISRA 15.7 - Empty else */ + } + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_ACTIVE_A: + case RFAL_LM_STATE_ACTIVE_Ax: + + irqs = st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_RXE | ST25R3916_IRQ_MASK_EOF)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + /* If EOF has already been received processing of other events is + * neglectable */ + if ((irqs & ST25R3916_IRQ_MASK_EOF) != 0U) { + rfalListenSetState(RFAL_LM_STATE_POWER_OFF); + } else if ((irqs & ST25R3916_IRQ_MASK_RXE) != 0U) { + /* Retrieve the error flags/irqs */ + irqs |= st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_PAR | ST25R3916_IRQ_MASK_CRC | + ST25R3916_IRQ_MASK_ERR2 | ST25R3916_IRQ_MASK_ERR1)); + *gRFAL.Lm.rxLen = st25r3916GetNumFIFOBytes(); + + if (((irqs & ST25R3916_IRQ_MASK_CRC) != 0U) || + ((irqs & ST25R3916_IRQ_MASK_ERR1) != 0U) || + ((irqs & ST25R3916_IRQ_MASK_PAR) != 0U) || + (*gRFAL.Lm.rxLen <= RFAL_CRC_LEN)) { + /* Clear rx context and FIFO */ + *gRFAL.Lm.rxLen = 0; + st25r3916ExecuteCommand(ST25R3916_CMD_CLEAR_FIFO); + st25r3916ExecuteCommand(ST25R3916_CMD_UNMASK_RECEIVE_DATA); + + /* Check if we should go to IDLE or Sleep */ + if (gRFAL.Lm.state == RFAL_LM_STATE_ACTIVE_Ax) { + rfalListenSleepStart(RFAL_LM_STATE_SLEEP_A, gRFAL.Lm.rxBuf, + gRFAL.Lm.rxBufLen, gRFAL.Lm.rxLen); + } else { + rfalListenSetState(RFAL_LM_STATE_IDLE); + } + + st25r3916DisableInterrupts(ST25R3916_IRQ_MASK_RXE); + break; + } + + /* Remove CRC from length */ + *gRFAL.Lm.rxLen -= RFAL_CRC_LEN; + + /* Retrieve received data */ + st25r3916ReadFifo( + gRFAL.Lm.rxBuf, + RFAL_MIN(*gRFAL.Lm.rxLen, rfalConvBitsToBytes(gRFAL.Lm.rxBufLen))); + *gRFAL.Lm.rxLen = (uint16_t)rfalConvBytesToBits(*gRFAL.Lm.rxLen); + gRFAL.Lm.dataFlag = true; + } else { + /* MISRA 15.7 - Empty else */ + } + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_SLEEP_A: + case RFAL_LM_STATE_SLEEP_B: + case RFAL_LM_STATE_SLEEP_AF: + + irqs = st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_NFCT | ST25R3916_IRQ_MASK_WU_F | + ST25R3916_IRQ_MASK_RXE | ST25R3916_IRQ_MASK_EOF | + ST25R3916_IRQ_MASK_RXE_PTA)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + if ((irqs & ST25R3916_IRQ_MASK_NFCT) != 0U) { + uint8_t newBr; + /* Retrieve detected bitrate */ + st25r3916ReadRegister(ST25R3916_REG_NFCIP1_BIT_RATE, &newBr); + newBr >>= ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rate_shift; + + if (newBr > ST25R3916_REG_BIT_RATE_rxrate_424) { + newBr = ST25R3916_REG_BIT_RATE_rxrate_424; + } + + gRFAL.Lm.brDetected = + (rfalBitRate)(newBr); /* PRQA S 4342 # MISRA 10.5 - Guaranteed that + no invalid enum values may be created. See + also equalityGuard_RFAL_BR_106 ff.*/ + } + + /* If EOF has already been received processing of other events is + * neglectable */ + if ((irqs & ST25R3916_IRQ_MASK_EOF) != 0U) { + rfalListenSetState(RFAL_LM_STATE_POWER_OFF); + } else if (((irqs & ST25R3916_IRQ_MASK_WU_F) != 0U) && + (gRFAL.Lm.brDetected != RFAL_BR_KEEP)) { + rfalListenSetState(RFAL_LM_STATE_READY_F); + } else if (((irqs & ST25R3916_IRQ_MASK_RXE) != 0U) && + (gRFAL.Lm.brDetected != RFAL_BR_KEEP)) { + /* Clear rx context and FIFO */ + *gRFAL.Lm.rxLen = 0; + st25r3916ExecuteCommand(ST25R3916_CMD_CLEAR_FIFO); + st25r3916ExecuteCommand(ST25R3916_CMD_UNMASK_RECEIVE_DATA); + + /* REMARK: In order to support CUP or proprietary frames, handling could + * be added here */ + } else if (((irqs & ST25R3916_IRQ_MASK_RXE_PTA) != 0U) && + (gRFAL.Lm.brDetected != RFAL_BR_KEEP)) { + if (((gRFAL.Lm.mdMask & RFAL_LM_MASK_NFCA) != 0U) && + (gRFAL.Lm.brDetected == RFAL_BR_106)) { + st25r3916ReadRegister(ST25R3916_REG_PASSIVE_TARGET_STATUS, &tmp); + if (tmp > ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_halt) { + rfalListenSetState(RFAL_LM_STATE_READY_Ax); + } + } + } else { + /* MISRA 15.7 - Empty else */ + } + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_READY_Ax: + + irqs = st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_EOF | ST25R3916_IRQ_MASK_WU_A_X)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + /* If EOF has already been received processing of other events is + * neglectable */ + if ((irqs & ST25R3916_IRQ_MASK_EOF) != 0U) { + rfalListenSetState(RFAL_LM_STATE_POWER_OFF); + } else if ((irqs & ST25R3916_IRQ_MASK_WU_A_X) != 0U) { + rfalListenSetState(RFAL_LM_STATE_ACTIVE_Ax); + } else { + /* MISRA 15.7 - Empty else */ + } + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_CARDEMU_4A: + case RFAL_LM_STATE_CARDEMU_4B: + case RFAL_LM_STATE_CARDEMU_3: + case RFAL_LM_STATE_TARGET_F: + case RFAL_LM_STATE_TARGET_A: + break; + + /*******************************************************************************/ + default: + return RFAL_ERR_WRONG_STATE; + } + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalListenStop(void) { + /* Check if RFAL is initialized */ + if (gRFAL.state < RFAL_STATE_INIT) { + return RFAL_ERR_WRONG_STATE; + } + + gRFAL.Lm.state = RFAL_LM_STATE_NOT_INIT; + + /*Check if Observation Mode was enabled and disable it on ST25R391x */ + rfalCheckDisableObsMode(); + + /* Re-Enable the Oscillator if not running */ + st25r3916OscOn(); + + /* Disable Receiver and Transmitter */ + rfalFieldOff(); + + /* Disable all automatic responses */ + st25r3916SetRegisterBits(ST25R3916_REG_PASSIVE_TARGET, + (ST25R3916_REG_PASSIVE_TARGET_d_212_424_1r | + ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a | + ST25R3916_REG_PASSIVE_TARGET_d_ac_ap2p)); + + /* As there's no Off mode, set default value: ISO14443A with automatic RF + * Collision Avoidance Off */ + st25r3916WriteRegister(ST25R3916_REG_MODE, (ST25R3916_REG_MODE_om_iso14443a | + ST25R3916_REG_MODE_tr_am_ook | + ST25R3916_REG_MODE_nfc_ar_off)); + + st25r3916DisableInterrupts( + (ST25R3916_IRQ_MASK_RXE_PTA | ST25R3916_IRQ_MASK_WU_F | + ST25R3916_IRQ_MASK_WU_A | ST25R3916_IRQ_MASK_WU_A_X | + ST25R3916_IRQ_MASK_RFU2 | ST25R3916_IRQ_MASK_OSC)); + st25r3916GetInterrupt((ST25R3916_IRQ_MASK_RXE_PTA | ST25R3916_IRQ_MASK_WU_F | + ST25R3916_IRQ_MASK_WU_A | ST25R3916_IRQ_MASK_WU_A_X | + ST25R3916_IRQ_MASK_RFU2 | ST25R3916_IRQ_MASK_TXE)); + + /* Set Analog configurations for Listen Off event */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_LISTEN_OFF)); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalListenSleepStart(rfalLmState sleepSt, uint8_t *rxBuf, + uint16_t rxBufLen, uint16_t *rxLen) { + /* Check if RFAL is not initialized */ + if (gRFAL.state < RFAL_STATE_INIT) { + return RFAL_ERR_WRONG_STATE; + } + + switch (sleepSt) { + /*******************************************************************************/ + case RFAL_LM_STATE_SLEEP_A: + + /* Enable automatic responses for A */ + st25r3916ClrRegisterBits(ST25R3916_REG_PASSIVE_TARGET, + (ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a)); + + /* Reset NFCA target */ + st25r3916ExecuteCommand(ST25R3916_CMD_GOTO_SLEEP); + + /* Set Target mode, Bit Rate detection and Listen Mode for NFC-A */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_MODE, + (ST25R3916_REG_MODE_targ | ST25R3916_REG_MODE_om_mask | + ST25R3916_REG_MODE_nfc_ar_mask), + (ST25R3916_REG_MODE_targ_targ | ST25R3916_REG_MODE_om3 | + ST25R3916_REG_MODE_om0 | ST25R3916_REG_MODE_nfc_ar_off)); + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_SLEEP_AF: + + /* Enable automatic responses for A + F */ + st25r3916ClrRegisterBits(ST25R3916_REG_PASSIVE_TARGET, + (ST25R3916_REG_PASSIVE_TARGET_d_212_424_1r | + ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a)); + + /* Reset NFCA target state */ + st25r3916ExecuteCommand(ST25R3916_CMD_GOTO_SLEEP); + + /* Set Target mode, Bit Rate detection, Listen Mode for NFC-A and NFC-F */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_MODE, + (ST25R3916_REG_MODE_targ | ST25R3916_REG_MODE_om_mask | + ST25R3916_REG_MODE_nfc_ar_mask), + (ST25R3916_REG_MODE_targ_targ | ST25R3916_REG_MODE_om3 | + ST25R3916_REG_MODE_om2 | ST25R3916_REG_MODE_om0 | + ST25R3916_REG_MODE_nfc_ar_off)); + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_SLEEP_B: + /* REMARK: Support for CE-B would be added here */ + return RFAL_ERR_NOT_IMPLEMENTED; + + /*******************************************************************************/ + default: + return RFAL_ERR_PARAM; + } + + /* Ensure that the NFCIP1 mode is disabled */ + st25r3916ClrRegisterBits(ST25R3916_REG_ISO14443A_NFC, + ST25R3916_REG_ISO14443A_NFC_nfc_f0); + + st25r3916ExecuteCommand(ST25R3916_CMD_UNMASK_RECEIVE_DATA); + + /* Clear and enable required IRQs */ + st25r3916ClearAndEnableInterrupts( + (ST25R3916_IRQ_MASK_NFCT | ST25R3916_IRQ_MASK_RXS | + ST25R3916_IRQ_MASK_CRC | ST25R3916_IRQ_MASK_ERR1 | + ST25R3916_IRQ_MASK_ERR2 | ST25R3916_IRQ_MASK_PAR | + ST25R3916_IRQ_MASK_EON | ST25R3916_IRQ_MASK_EOF | gRFAL.Lm.mdIrqs)); + + /* Check whether the field was turn off right after the Sleep request */ + if (!rfalIsExtFieldOn()) { +#if 0 /* Debug purposes */ + rfalLogD( "RFAL: curState: %02X newState: %02X \r\n", gRFAL.Lm.state, RFAL_LM_STATE_NOT_INIT ); +#endif + + rfalListenStop(); + return RFAL_ERR_LINK_LOSS; + } + +#if 0 /* Debug purposes */ + rfalLogD( "RFAL: curState: %02X newState: %02X \r\n", gRFAL.Lm.state, sleepSt ); +#endif + + /* Set the new Sleep State*/ + gRFAL.Lm.state = sleepSt; + gRFAL.state = RFAL_STATE_LM; + + gRFAL.Lm.rxBuf = rxBuf; + gRFAL.Lm.rxBufLen = rxBufLen; + gRFAL.Lm.rxLen = rxLen; + *gRFAL.Lm.rxLen = 0; + gRFAL.Lm.dataFlag = false; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +rfalLmState rfalListenGetState(bool *dataFlag, rfalBitRate *lastBR) { + /* Allow state retrieval even if gRFAL.state != RFAL_STATE_LM so * + * that this Lm state can be used by caller after activation */ + + if (lastBR != NULL) { + *lastBR = gRFAL.Lm.brDetected; + } + + if (dataFlag != NULL) { + *dataFlag = gRFAL.Lm.dataFlag; + } + + return gRFAL.Lm.state; +} + +/*******************************************************************************/ +ReturnCode rfalListenSetState(rfalLmState newSt) { + ReturnCode ret; + rfalLmState newState; + bool reSetState; + + /* Check if RFAL is initialized */ + if (gRFAL.state < RFAL_STATE_INIT) { + return RFAL_ERR_WRONG_STATE; + } + + /* SetState clears the Data flag */ + gRFAL.Lm.dataFlag = false; + newState = newSt; + ret = RFAL_ERR_NONE; + + do { + reSetState = false; + + /*******************************************************************************/ + switch (newState) { + /*******************************************************************************/ + case RFAL_LM_STATE_POWER_OFF: + + /* Enable the receiver and reset logic */ + st25r3916SetRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_rx_en); + st25r3916ExecuteCommand(ST25R3916_CMD_STOP); + + if ((gRFAL.Lm.mdMask & RFAL_LM_MASK_NFCA) != 0U) { + /* Enable automatic responses for A */ + st25r3916ClrRegisterBits(ST25R3916_REG_PASSIVE_TARGET, + ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a); + + /* Prepares the NFCIP-1 Passive target logic to wait in the Sense/Idle + * state */ + st25r3916ExecuteCommand(ST25R3916_CMD_GOTO_SENSE); + } + + if ((gRFAL.Lm.mdMask & RFAL_LM_MASK_NFCF) != 0U) { + /* Enable automatic responses for F */ + st25r3916ClrRegisterBits(ST25R3916_REG_PASSIVE_TARGET, + (ST25R3916_REG_PASSIVE_TARGET_d_212_424_1r)); + } + + if ((gRFAL.Lm.mdMask & RFAL_LM_MASK_ACTIVE_P2P) != 0U) { + /* Ensure automatic response RF Collision Avoidance is back to only + * after Rx */ + st25r3916ChangeRegisterBits(ST25R3916_REG_MODE, + ST25R3916_REG_MODE_nfc_ar_mask, + ST25R3916_REG_MODE_nfc_ar_auto_rx); + + /* Ensure that our field is Off, as automatic response RF Collision + * Avoidance may have been triggered */ + st25r3916TxOff(); + } + + /*******************************************************************************/ + /* Ensure that the NFCIP1 mode is disabled */ + st25r3916ClrRegisterBits(ST25R3916_REG_ISO14443A_NFC, + ST25R3916_REG_ISO14443A_NFC_nfc_f0); + + /*******************************************************************************/ + /* Clear and enable required IRQs */ + st25r3916DisableInterrupts(ST25R3916_IRQ_MASK_ALL); + + st25r3916ClearAndEnableInterrupts( + (ST25R3916_IRQ_MASK_NFCT | ST25R3916_IRQ_MASK_RXS | + ST25R3916_IRQ_MASK_CRC | ST25R3916_IRQ_MASK_ERR1 | + ST25R3916_IRQ_MASK_OSC | ST25R3916_IRQ_MASK_ERR2 | + ST25R3916_IRQ_MASK_PAR | ST25R3916_IRQ_MASK_EON | + ST25R3916_IRQ_MASK_EOF | gRFAL.Lm.mdIrqs)); + + /*******************************************************************************/ + /* Clear the bitRate previously detected */ + gRFAL.Lm.brDetected = RFAL_BR_KEEP; + + /*******************************************************************************/ + /* Apply the initial mode */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_MODE, + (ST25R3916_REG_MODE_targ | ST25R3916_REG_MODE_om_mask | + ST25R3916_REG_MODE_nfc_ar_mask), + (uint8_t)gRFAL.Lm.mdReg); + + /*******************************************************************************/ + /* Check if external Field is already On */ + if (rfalIsExtFieldOn()) { + reSetState = true; + newState = RFAL_LM_STATE_IDLE; /* Set IDLE state */ + } +#if 1 /* Perform bit rate detection in Low power mode */ + else { + st25r3916ClrRegisterBits( + ST25R3916_REG_OP_CONTROL, + (ST25R3916_REG_OP_CONTROL_tx_en | ST25R3916_REG_OP_CONTROL_rx_en | + ST25R3916_REG_OP_CONTROL_en)); + } +#endif + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_IDLE: + + /*******************************************************************************/ + /* Check if device is coming from Low Power bit rate detection */ + if (!st25r3916CheckReg(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_en, + ST25R3916_REG_OP_CONTROL_en)) { + /* Exit Low Power mode and confirm the temporarily enable */ + st25r3916SetRegisterBits( + ST25R3916_REG_OP_CONTROL, + (ST25R3916_REG_OP_CONTROL_en | ST25R3916_REG_OP_CONTROL_rx_en)); + + if (!st25r3916CheckReg(ST25R3916_REG_AUX_DISPLAY, + ST25R3916_REG_AUX_DISPLAY_osc_ok, + ST25R3916_REG_AUX_DISPLAY_osc_ok)) { + /* Wait for Oscilator ready */ + if (st25r3916WaitForInterruptsTimed( + ST25R3916_IRQ_MASK_OSC, ST25R3916_TOUT_OSC_STABLE) == 0U) { + ret = RFAL_ERR_IO; + break; + } + } + } else { + st25r3916GetInterrupt(ST25R3916_IRQ_MASK_OSC); + } + + /*******************************************************************************/ + /* Execute LM EON Callback */ + /*******************************************************************************/ + if (gRFAL.callbacks.lmEon != NULL) { + gRFAL.callbacks.lmEon(); + } + /*******************************************************************************/ + + /*******************************************************************************/ + /* In Active P2P the Initiator may: Turn its field On; LM goes into + * IDLE state; Initiator sends an unexpected frame raising a Protocol + * error; Initiator turns its field Off and ST25R3916 performs the + * automatic RF Collision Avoidance keeping our field On; upon a + * Protocol error upper layer sets again the state to IDLE to clear + * dataFlag and wait for next data. + * + * Ensure that when upper layer calls SetState(IDLE), it restores + * initial configuration and that check whether an external Field is + * still present */ + if ((gRFAL.Lm.mdMask & RFAL_LM_MASK_ACTIVE_P2P) != 0U) { + /* Ensure nfc_ar is reseted and back to only after Rx */ + st25r3916ExecuteCommand(ST25R3916_CMD_STOP); + st25r3916ChangeRegisterBits(ST25R3916_REG_MODE, + ST25R3916_REG_MODE_nfc_ar_mask, + ST25R3916_REG_MODE_nfc_ar_auto_rx); + + /* Ensure that our field is Off, as automatic response RF Collision + * Avoidance may have been triggered */ + st25r3916TxOff(); + + /* If external Field is no longer detected go back to POWER_OFF */ + if (!st25r3916IsExtFieldOn()) { + reSetState = true; + newState = RFAL_LM_STATE_POWER_OFF; /* Set POWER_OFF state */ + } + } + /*******************************************************************************/ + + /* If we are in ACTIVE_A, reEnable Listen for A before going to IDLE, + * otherwise do nothing */ + if (gRFAL.Lm.state == RFAL_LM_STATE_ACTIVE_A) { + /* Enable automatic responses for A and Reset NFCA target state */ + st25r3916ClrRegisterBits(ST25R3916_REG_PASSIVE_TARGET, + (ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a)); + st25r3916ExecuteCommand(ST25R3916_CMD_GOTO_SENSE); + } + + /* ReEnable the receiver */ + st25r3916ExecuteCommand(ST25R3916_CMD_CLEAR_FIFO); + st25r3916ExecuteCommand(ST25R3916_CMD_UNMASK_RECEIVE_DATA); + + /*******************************************************************************/ + /*Check if Observation Mode is enabled and set it on ST25R391x */ + rfalCheckEnableObsModeRx(); + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_READY_F: + + /*******************************************************************************/ + /* If we're coming from BitRate detection mode, the Bit Rate Definition + * reg still has the last bit rate used. If a frame is received between + * setting the mode to Listen NFCA and setting Bit Rate Definition reg, + * it will raise a framing error. Set the bitrate immediately, and then + * the normal SetMode procedure */ + st25r3916SetBitrate((uint8_t)gRFAL.Lm.brDetected, + (uint8_t)gRFAL.Lm.brDetected); + /*******************************************************************************/ + + /* Disable automatic responses for NFC-A */ + st25r3916SetRegisterBits(ST25R3916_REG_PASSIVE_TARGET, + (ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a)); + + /* Set Mode NFC-F only */ + ret = rfalSetMode(RFAL_MODE_LISTEN_NFCF, gRFAL.Lm.brDetected, + gRFAL.Lm.brDetected); + gRFAL.state = RFAL_STATE_LM; /* Keep in Listen Mode */ + + /* ReEnable the receiver */ + st25r3916ExecuteCommand(ST25R3916_CMD_CLEAR_FIFO); + st25r3916ExecuteCommand(ST25R3916_CMD_UNMASK_RECEIVE_DATA); + + /* Clear any previous transmission errors (if Reader polled for + * other/unsupported technologies) */ + st25r3916GetInterrupt((ST25R3916_IRQ_MASK_PAR | ST25R3916_IRQ_MASK_CRC | + ST25R3916_IRQ_MASK_ERR2 | + ST25R3916_IRQ_MASK_ERR1)); + + st25r3916EnableInterrupts( + ST25R3916_IRQ_MASK_RXE); /* Start looking for any incoming data */ + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_CARDEMU_3: + + /* Set Listen NFCF mode */ + ret = rfalSetMode(RFAL_MODE_LISTEN_NFCF, gRFAL.Lm.brDetected, + gRFAL.Lm.brDetected); + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_READY_Ax: + case RFAL_LM_STATE_READY_A: + + /*******************************************************************************/ + /* If we're coming from BitRate detection mode, the Bit Rate Definition + * reg still has the last bit rate used. If a frame is received between + * setting the mode to Listen NFCA and setting Bit Rate Definition reg, + * it will raise a framing error. Set the bitrate immediately, and then + * the normal SetMode procedure */ + st25r3916SetBitrate((uint8_t)gRFAL.Lm.brDetected, + (uint8_t)gRFAL.Lm.brDetected); + /*******************************************************************************/ + + /* Disable automatic responses for NFC-F */ + st25r3916SetRegisterBits(ST25R3916_REG_PASSIVE_TARGET, + (ST25R3916_REG_PASSIVE_TARGET_d_212_424_1r)); + + /* Set Mode NFC-A only */ + ret = rfalSetMode(RFAL_MODE_LISTEN_NFCA, gRFAL.Lm.brDetected, + gRFAL.Lm.brDetected); + + gRFAL.state = RFAL_STATE_LM; /* Keep in Listen Mode */ + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_ACTIVE_Ax: + case RFAL_LM_STATE_ACTIVE_A: + + /* Disable automatic responses for A */ + st25r3916SetRegisterBits(ST25R3916_REG_PASSIVE_TARGET, + (ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a)); + + /* Clear any previous transmission errors (if Reader polled for + * other/unsupported technologies) */ + st25r3916GetInterrupt((ST25R3916_IRQ_MASK_PAR | ST25R3916_IRQ_MASK_CRC | + ST25R3916_IRQ_MASK_ERR2 | + ST25R3916_IRQ_MASK_ERR1)); + + st25r3916EnableInterrupts( + ST25R3916_IRQ_MASK_RXE); /* Start looking for any incoming data */ + break; + + case RFAL_LM_STATE_TARGET_F: + /* Disable Automatic response SENSF_REQ */ + st25r3916SetRegisterBits(ST25R3916_REG_PASSIVE_TARGET, + (ST25R3916_REG_PASSIVE_TARGET_d_212_424_1r)); + break; + + /*******************************************************************************/ + case RFAL_LM_STATE_SLEEP_A: + case RFAL_LM_STATE_SLEEP_B: + case RFAL_LM_STATE_SLEEP_AF: + /* These sleep states have to be set by the rfalListenSleepStart() + * method */ + return RFAL_ERR_REQUEST; + + /*******************************************************************************/ + case RFAL_LM_STATE_CARDEMU_4A: + case RFAL_LM_STATE_CARDEMU_4B: + case RFAL_LM_STATE_TARGET_A: + /* States not handled by the LM, just keep state context */ + break; + + /*******************************************************************************/ + default: + return RFAL_ERR_WRONG_STATE; + } + } while (reSetState); + + gRFAL.Lm.state = newState; + + return ret; +} + +#endif /* RFAL_FEATURE_LISTEN_MODE */ + +/******************************************************************************* + * Wake-Up Mode * + *******************************************************************************/ + +#if RFAL_FEATURE_WAKEUP_MODE + +/*******************************************************************************/ +ReturnCode rfalWakeUpModeStart(const rfalWakeUpConfig *config) { + uint8_t aux; + uint8_t reg; + uint32_t irqs; + + /* Check if RFAL is not initialized */ + if (gRFAL.state < RFAL_STATE_INIT) { + return RFAL_ERR_WRONG_STATE; + } + + /* The Wake-Up procedure is explained in detail in Application Note: AN5320 */ + + if (config == NULL) { + gRFAL.wum.cfg.period = RFAL_WUM_PERIOD_200MS; + gRFAL.wum.cfg.irqTout = false; + gRFAL.wum.cfg.swTagDetect = false; + + gRFAL.wum.cfg.refWU.enabled = + true; /* Obtain WU reference from WU mode, not in Ready Mode */ + gRFAL.wum.cfg.refWU.refDelay = + RFAL_WUM_PERIOD_10MS; /* WU reference after this time in WU mode */ + + gRFAL.wum.cfg.indAmp.enabled = true; + gRFAL.wum.cfg.indPha.enabled = false; + gRFAL.wum.cfg.cap.enabled = false; + + gRFAL.wum.cfg.indAmp.delta = 2U; + gRFAL.wum.cfg.indAmp.fracDelta = 0U; + gRFAL.wum.cfg.indAmp.reference = RFAL_WUM_REFERENCE_AUTO; + gRFAL.wum.cfg.indAmp.autoAvg = false; + +#ifdef ST25R3916 + /*******************************************************************************/ + /* Check if AAT is enabled and if so make use of the SW Tag Detection */ + if (st25r3916IsAATOn()) { + /* Enable SW TD with delta of 1.5 and enable auto average */ + gRFAL.wum.cfg.swTagDetect = true; + gRFAL.wum.cfg.refWU.enabled = false; + gRFAL.wum.cfg.indAmp.delta = 1U; + gRFAL.wum.cfg.indAmp.fracDelta = 2U; + gRFAL.wum.cfg.indAmp.autoAvg = true; + gRFAL.wum.cfg.indAmp.aaWeight = RFAL_WUM_AA_WEIGHT_16; + } +#endif /* ST25R3916 */ + + } else { + gRFAL.wum.cfg = *config; + } + +#ifdef ST25R3916B + /* Check for not supported features */ + if (gRFAL.wum.cfg.cap.enabled) { + return RFAL_ERR_NOTSUPP; + } + + /* Set ST25R3916B Measure Tx delay */ + st25r3916WriteRegister( + ST25R3916_REG_MEAS_TX_DELAY, + (st25r3916IsAATOn() ? RFAL_ST25R3916B_AAT_SETTLE : 0x00)); +#endif /* ST25R3916B */ + + /* Check for valid configuration */ + if (((!gRFAL.wum.cfg.cap.enabled) && (!gRFAL.wum.cfg.indAmp.enabled) && + (!gRFAL.wum.cfg.indPha.enabled)) || + ((gRFAL.wum.cfg.cap.enabled) && + ((gRFAL.wum.cfg.indAmp.enabled) || (gRFAL.wum.cfg.indPha.enabled) || + (gRFAL.wum.cfg.swTagDetect))) || + ((gRFAL.wum.cfg.indAmp.reference > RFAL_WUM_REFERENCE_AUTO) || + (gRFAL.wum.cfg.indPha.reference > RFAL_WUM_REFERENCE_AUTO) || + (gRFAL.wum.cfg.cap.reference > RFAL_WUM_REFERENCE_AUTO)) || + ((gRFAL.wum.cfg.refWU.enabled) && + ((gRFAL.wum.cfg.cap.enabled) || (gRFAL.wum.cfg.swTagDetect) || + (gRFAL.wum.cfg.indAmp.autoAvg) || (gRFAL.wum.cfg.indPha.autoAvg) || + ((gRFAL.wum.cfg.indAmp.enabled) && + (gRFAL.wum.cfg.indAmp.reference != RFAL_WUM_REFERENCE_AUTO)) || + ((gRFAL.wum.cfg.indPha.enabled) && + (gRFAL.wum.cfg.indPha.reference != RFAL_WUM_REFERENCE_AUTO))))) { + return RFAL_ERR_PARAM; + } + + irqs = ST25R3916_IRQ_MASK_NONE; + + /* Disable Tx, Rx, External Field Detector and set default ISO14443A mode */ + st25r3916TxRxOff(); + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_en_fd_mask); + st25r3916ChangeRegisterBits( + ST25R3916_REG_MODE, + (ST25R3916_REG_MODE_targ | ST25R3916_REG_MODE_om_mask), + (ST25R3916_REG_MODE_targ_init | ST25R3916_REG_MODE_om_iso14443a)); + + /* Set Analog configurations for Wake-up On event */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_WAKEUP_ON)); + + /*******************************************************************************/ + /* Prepare Wake-Up Timer Control Register */ + reg = (uint8_t)(((uint8_t)gRFAL.wum.cfg.period & 0x0FU) + << ST25R3916_REG_WUP_TIMER_CONTROL_wut_shift); + reg |= + (uint8_t)(((uint8_t)gRFAL.wum.cfg.period < (uint8_t)RFAL_WUM_PERIOD_100MS) + ? ST25R3916_REG_WUP_TIMER_CONTROL_wur + : 0x00U); + + if ((gRFAL.wum.cfg.irqTout) || (gRFAL.wum.cfg.swTagDetect)) { + reg |= ST25R3916_REG_WUP_TIMER_CONTROL_wto; + irqs |= ST25R3916_IRQ_MASK_WT; + } + + /* Check if HW Wake-up is to be used or SW Tag detection */ + if (gRFAL.wum.cfg.swTagDetect) { + gRFAL.wum.cfg.indAmp.reference = 0U; + gRFAL.wum.cfg.indPha.reference = 0U; + gRFAL.wum.cfg.cap.reference = 0U; + } else { + /*******************************************************************************/ + /* Check if Inductive Amplitude is to be performed */ + if (gRFAL.wum.cfg.indAmp.enabled) { + aux = (uint8_t)((gRFAL.wum.cfg.indAmp.delta) + << ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d_shift); + aux |= (uint8_t)(gRFAL.wum.cfg.indAmp.aaInclMeas + ? ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aam + : 0x00U); + aux |= (uint8_t)(((uint8_t)gRFAL.wum.cfg.indAmp.aaWeight + << ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aew_shift) & + ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aew_mask); + aux |= (uint8_t)(gRFAL.wum.cfg.indAmp.autoAvg + ? ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_ae + : 0x00U); + + st25r3916WriteRegister(ST25R3916_REG_AMPLITUDE_MEASURE_CONF, aux); + + /* Only need to set the reference if not using Auto Average */ + if ((!gRFAL.wum.cfg.indAmp.autoAvg) && (!gRFAL.wum.cfg.refWU.enabled)) { + if (gRFAL.wum.cfg.indAmp.reference == RFAL_WUM_REFERENCE_AUTO) { + st25r3916MeasureAmplitude(&aux); + gRFAL.wum.cfg.indAmp.reference = aux; + } + st25r3916WriteRegister(ST25R3916_REG_AMPLITUDE_MEASURE_REF, + (uint8_t)gRFAL.wum.cfg.indAmp.reference); + } + + reg |= ST25R3916_REG_WUP_TIMER_CONTROL_wam; + irqs |= ST25R3916_IRQ_MASK_WAM; + } + + /*******************************************************************************/ + /* Check if Inductive Phase is to be performed */ + if (gRFAL.wum.cfg.indPha.enabled) { + aux = (uint8_t)((gRFAL.wum.cfg.indPha.delta) + << ST25R3916_REG_PHASE_MEASURE_CONF_pm_d_shift); + aux |= (uint8_t)(gRFAL.wum.cfg.indPha.aaInclMeas + ? ST25R3916_REG_PHASE_MEASURE_CONF_pm_aam + : 0x00U); + aux |= (uint8_t)(((uint8_t)gRFAL.wum.cfg.indPha.aaWeight + << ST25R3916_REG_PHASE_MEASURE_CONF_pm_aew_shift) & + ST25R3916_REG_PHASE_MEASURE_CONF_pm_aew_mask); + aux |= (uint8_t)(gRFAL.wum.cfg.indPha.autoAvg + ? ST25R3916_REG_PHASE_MEASURE_CONF_pm_ae + : 0x00U); + + st25r3916WriteRegister(ST25R3916_REG_PHASE_MEASURE_CONF, aux); + + /* Only need to set the reference if not using Auto Average */ + if ((!gRFAL.wum.cfg.indPha.autoAvg) && (!gRFAL.wum.cfg.refWU.enabled)) { + if (gRFAL.wum.cfg.indPha.reference == RFAL_WUM_REFERENCE_AUTO) { + st25r3916MeasurePhase(&aux); + gRFAL.wum.cfg.indPha.reference = aux; + } + st25r3916WriteRegister(ST25R3916_REG_PHASE_MEASURE_REF, + (uint8_t)gRFAL.wum.cfg.indPha.reference); + } + + reg |= ST25R3916_REG_WUP_TIMER_CONTROL_wph; + irqs |= ST25R3916_IRQ_MASK_WPH; + } + +#ifdef ST25R3916 + /*******************************************************************************/ + /* Check if Capacitive is to be performed */ + if (gRFAL.wum.cfg.cap.enabled) { + /*******************************************************************************/ + /* Perform Capacitive sensor calibration */ + + /* Disable Oscillator and Field */ + st25r3916ClrRegisterBits( + ST25R3916_REG_OP_CONTROL, + (ST25R3916_REG_OP_CONTROL_en | ST25R3916_REG_OP_CONTROL_tx_en)); + + /* Sensor gain should be configured on Analog Config: + * RFAL_ANALOG_CONFIG_CHIP_WAKEUP_ON */ + + /* Perform calibration procedure */ + st25r3916CalibrateCapacitiveSensor(NULL); + + /*******************************************************************************/ + aux = (uint8_t)((gRFAL.wum.cfg.cap.delta) + << ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d_shift); + aux |= (uint8_t)(gRFAL.wum.cfg.cap.aaInclMeas + ? ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aam + : 0x00U); + aux |= + (uint8_t)(((uint8_t)gRFAL.wum.cfg.cap.aaWeight + << ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aew_shift) & + ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aew_mask); + aux |= (uint8_t)(gRFAL.wum.cfg.cap.autoAvg + ? ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_ae + : 0x00U); + + st25r3916WriteRegister(ST25R3916_REG_CAPACITANCE_MEASURE_CONF, aux); + + /* Only need to set the reference if not using Auto Average */ + if ((!gRFAL.wum.cfg.cap.autoAvg) || (gRFAL.wum.cfg.swTagDetect)) { + if (gRFAL.wum.cfg.cap.reference == RFAL_WUM_REFERENCE_AUTO) { + st25r3916MeasureCapacitance(&aux); + gRFAL.wum.cfg.cap.reference = aux; + } + st25r3916WriteRegister(ST25R3916_REG_CAPACITANCE_MEASURE_REF, + (uint8_t)gRFAL.wum.cfg.cap.reference); + } + + reg |= ST25R3916_REG_WUP_TIMER_CONTROL_wcap; + irqs |= ST25R3916_IRQ_MASK_WCAP; + } +#endif /* ST25R3916 */ + } + + /* Disable and clear all interrupts except Wake-Up IRQs */ + st25r3916DisableInterrupts(ST25R3916_IRQ_MASK_ALL); + st25r3916GetInterrupt(irqs); + st25r3916EnableInterrupts(irqs); + + /* Use WUM state to start rfal */ + RFAL_MEMSET( + &gRFAL.wum.info, 0x00, + sizeof( + gRFAL.wum.info)); /* clear info struct to avoid old data being used */ + gRFAL.wum.state = RFAL_WUM_STATE_ENABLED; + gRFAL.state = RFAL_STATE_WUM; + + /*******************************************************************************/ + /* If reference is to be obtained by WU mode, set the WU config so that + * triggers WU IRQ upon first measurement */ + if (gRFAL.wum.cfg.refWU.enabled) { + if (gRFAL.wum.cfg.indAmp.enabled) { + st25r3916WriteRegister(ST25R3916_REG_AMPLITUDE_MEASURE_REF, 0); + st25r3916ChangeRegisterBits( + ST25R3916_REG_AMPLITUDE_MEASURE_CONF, + ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d_mask, 0); + gRFAL.wum.refWUTrg = ST25R3916_IRQ_MASK_WAM; + } + + if (gRFAL.wum.cfg.indPha.enabled) { + st25r3916WriteRegister(ST25R3916_REG_PHASE_MEASURE_REF, 0); + st25r3916ChangeRegisterBits(ST25R3916_REG_PHASE_MEASURE_CONF, + ST25R3916_REG_PHASE_MEASURE_CONF_pm_d_mask, + 0); + gRFAL.wum.refWUTrg = ST25R3916_IRQ_MASK_WPH; + } + + /* Set config timing for the ref measurement */ + reg &= ~(ST25R3916_REG_WUP_TIMER_CONTROL_wur | + ST25R3916_REG_WUP_TIMER_CONTROL_wut_mask); + reg |= (uint8_t)(((uint8_t)gRFAL.wum.cfg.refWU.refDelay & 0x0FU) + << ST25R3916_REG_WUP_TIMER_CONTROL_wut_shift); + reg |= (uint8_t)(((uint8_t)gRFAL.wum.cfg.refWU.refDelay < + (uint8_t)RFAL_WUM_PERIOD_100MS) + ? ST25R3916_REG_WUP_TIMER_CONTROL_wur + : 0x00U); + + gRFAL.wum.state = RFAL_WUM_STATE_INITIALIZING; + } + /*******************************************************************************/ + + /* Enable Low Power Wake-Up Mode (Disable: Oscilattor, Tx, Rx and External + * Field Detector) */ + st25r3916WriteRegister(ST25R3916_REG_WUP_TIMER_CONTROL, reg); + st25r3916ChangeRegisterBits( + ST25R3916_REG_OP_CONTROL, + (ST25R3916_REG_OP_CONTROL_en | ST25R3916_REG_OP_CONTROL_rx_en | + ST25R3916_REG_OP_CONTROL_tx_en | ST25R3916_REG_OP_CONTROL_en_fd_mask | + ST25R3916_REG_OP_CONTROL_wu), + ST25R3916_REG_OP_CONTROL_wu); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +bool rfalWakeUpModeHasWoke(void) { + return (gRFAL.wum.state >= RFAL_WUM_STATE_ENABLED_WOKE); +} + +/*******************************************************************************/ +bool rfalWakeUpModeIsEnabled(void) { + return ((gRFAL.state == RFAL_STATE_WUM) && + (gRFAL.wum.state >= RFAL_WUM_STATE_ENABLED)); +} + +/*******************************************************************************/ +ReturnCode rfalWakeUpModeGetInfo(bool force, rfalWakeUpInfo *info) { + uint8_t aux; + + /* Check if WU mode is running */ + if ((gRFAL.state != RFAL_STATE_WUM) || + (gRFAL.wum.state < RFAL_WUM_STATE_ENABLED)) { + return RFAL_ERR_WRONG_STATE; + } + + /* Check for valid parameters */ + if (info == NULL) { + return RFAL_ERR_PARAM; + } + + /* Clear info structure */ + RFAL_MEMSET(info, 0x00, sizeof(rfalWakeUpInfo)); + + /* Update general information */ + info->irqWut = gRFAL.wum.info.irqWut; + gRFAL.wum.info.irqWut = false; + + /* WUT IRQ is signaled when WUT expires. Delay slightly for the actual + * measurement to be performed */ + if ((info->irqWut) && (!gRFAL.wum.cfg.swTagDetect)) { + platformDelay(1); + } + + if (gRFAL.wum.cfg.indAmp.enabled) { + /* Update measure and reference from current info */ + info->indAmp.reference = gRFAL.wum.cfg.indAmp.reference; + info->indAmp.lastMeas = + gRFAL.wum.info.indAmp.lastMeas; /* For the case of swTagDetect==1 */ + + /* Only retrieve the reference from the device if needed */ + if ((force || (info->irqWut) || (gRFAL.wum.info.indAmp.irqWu)) && + (!gRFAL.wum.cfg.swTagDetect)) { + if (gRFAL.wum.cfg.indAmp.autoAvg) { + st25r3916ReadRegister(ST25R3916_REG_AMPLITUDE_MEASURE_AA_RESULT, &aux); + info->indAmp.reference = aux; + gRFAL.wum.cfg.indAmp.reference = + aux; /* Store last value for subsequenct calls */ + } + st25r3916ReadRegister(ST25R3916_REG_AMPLITUDE_MEASURE_RESULT, + &info->indAmp.lastMeas); + gRFAL.wum.info.indAmp.lastMeas = + info->indAmp.lastMeas; /* Store last value for subsequenct calls */ + } + + /* Update IRQ information and clear flag upon retrieving */ + info->indAmp.irqWu = gRFAL.wum.info.indAmp.irqWu; + gRFAL.wum.info.indAmp.irqWu = false; + } + + if (gRFAL.wum.cfg.indPha.enabled) { + /* Update measure and reference from current info */ + info->indPha.reference = gRFAL.wum.cfg.indPha.reference; + info->indPha.lastMeas = + gRFAL.wum.info.indPha.lastMeas; /* For the case of swTagDetect==1 */ + + /* Only retrieve the reference from the device if needed */ + if ((force || (info->irqWut) || (gRFAL.wum.info.indPha.irqWu)) && + (!gRFAL.wum.cfg.swTagDetect)) { + if (gRFAL.wum.cfg.indPha.autoAvg) { + st25r3916ReadRegister(ST25R3916_REG_PHASE_MEASURE_AA_RESULT, &aux); + info->indPha.reference = aux; + gRFAL.wum.cfg.indPha.reference = + aux; /* Store last value for subsequenct calls */ + } + st25r3916ReadRegister(ST25R3916_REG_PHASE_MEASURE_RESULT, + &info->indPha.lastMeas); + gRFAL.wum.info.indPha.lastMeas = + info->indPha.lastMeas; /* Store last value for subsequenct calls */ + } + + /* Update IRQ information and clear flag upon retrieving */ + info->indPha.irqWu = gRFAL.wum.info.indPha.irqWu; + gRFAL.wum.info.indPha.irqWu = false; + } + +#ifdef ST25R3916 + if (gRFAL.wum.cfg.cap.enabled) { + /* Update measure and reference from current info */ + info->cap.reference = gRFAL.wum.cfg.cap.reference; + info->cap.lastMeas = gRFAL.wum.info.cap.lastMeas; + + /* Retrieve the measurement from the device if needed */ + if (force || (info->irqWut) || (gRFAL.wum.info.cap.irqWu)) { + /* Only retrieve the reference from the device if needed */ + if (gRFAL.wum.cfg.cap.autoAvg) { + st25r3916ReadRegister(ST25R3916_REG_CAPACITANCE_MEASURE_AA_RESULT, + &aux); + info->cap.reference = aux; + gRFAL.wum.cfg.cap.reference = + aux; /* Store last value for subsequenct calls */ + } + st25r3916ReadRegister(ST25R3916_REG_CAPACITANCE_MEASURE_RESULT, + &info->cap.lastMeas); + gRFAL.wum.info.cap.lastMeas = + info->cap.lastMeas; /* Store last value for subsequenct calls */ + } + + /* Update IRQ information and clear flag upon retrieving */ + info->cap.irqWu = gRFAL.wum.info.cap.irqWu; + gRFAL.wum.info.cap.irqWu = false; + } +#endif /* ST25R3916 */ + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +static uint16_t rfalWakeUpModeFilter(uint16_t curRef, uint16_t curVal, + uint8_t weight) { + uint16_t newRef; + + /* Perform the averaging|filter as describded in ST25R3916 DS */ + + /* Avoid signed arithmetics by spliting in two cases */ + if (curVal > curRef) { + newRef = curRef + ((curVal - curRef) / weight); + + /* In order for the reference to converge to final value * + * increment once the diff is smaller that the weight */ + if ((curVal != curRef) && (curRef == newRef)) { + newRef &= 0xFF00U; + newRef += 0x0100U; + } + } else { + newRef = curRef - ((curRef - curVal) / weight); + + /* In order for the reference to converge to final value * + * decrement once the diff is smaller that the weight */ + if ((curVal != curRef) && (curRef == newRef)) { + newRef &= 0xFF00U; + } + } + + return newRef; +} + +/*******************************************************************************/ +static void rfalRunWakeUpModeWorker(void) { + uint32_t irqs; + uint8_t reg; + uint8_t aux; + uint16_t value; + uint16_t delta; + bool woke; + + if (gRFAL.state != RFAL_STATE_WUM) { + return; + } + + switch (gRFAL.wum.state) { + /*******************************************************************************/ + case RFAL_WUM_STATE_ENABLED: + case RFAL_WUM_STATE_ENABLED_WOKE: + + irqs = st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_WT | ST25R3916_IRQ_MASK_WAM | + ST25R3916_IRQ_MASK_WPH | ST25R3916_IRQ_MASK_WCAP)); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + /*******************************************************************************/ + /* Check and mark which measurement(s) cause interrupt */ + if ((irqs & ST25R3916_IRQ_MASK_WAM) != 0U) { + st25r3916ReadRegister(ST25R3916_REG_AMPLITUDE_MEASURE_RESULT, + &aux); /* Debug purposes */ + + gRFAL.wum.info.indAmp.irqWu = true; + gRFAL.wum.state = RFAL_WUM_STATE_ENABLED_WOKE; + } + + if ((irqs & ST25R3916_IRQ_MASK_WPH) != 0U) { + st25r3916ReadRegister(ST25R3916_REG_PHASE_MEASURE_RESULT, + &aux); /* Debug purposes */ + + gRFAL.wum.info.indPha.irqWu = true; + gRFAL.wum.state = RFAL_WUM_STATE_ENABLED_WOKE; + } + +#ifdef ST25R3916 + if ((irqs & ST25R3916_IRQ_MASK_WCAP) != 0U) { + st25r3916ReadRegister(ST25R3916_REG_CAPACITANCE_MEASURE_RESULT, + &aux); /* Debug purposes */ + + gRFAL.wum.info.cap.irqWu = true; + gRFAL.wum.state = RFAL_WUM_STATE_ENABLED_WOKE; + } +#endif /* ST25R3916 */ + + if ((irqs & ST25R3916_IRQ_MASK_WT) != 0U) { + gRFAL.wum.info.irqWut = true; + + /*******************************************************************************/ + if (gRFAL.wum.cfg.swTagDetect) { + woke = false; + + /* Enable Ready mode and wait the settle time if AAT is used */ + if (st25r3916IsAATOn()) { + st25r3916ChangeRegisterBits( + ST25R3916_REG_OP_CONTROL, + (ST25R3916_REG_OP_CONTROL_en | ST25R3916_REG_OP_CONTROL_wu), + ST25R3916_REG_OP_CONTROL_en); + platformDelay(RFAL_ST25R3916_AAT_SETTLE); + } else { + /* Disable wu mode - symmetric to above */ + st25r3916ChangeRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu, 0); + st25r3916OscOn(); + } + + /*******************************************************************************/ + if (gRFAL.wum.cfg.indAmp.enabled) { + /* Perform amplitude measurement */ + st25r3916MeasureAmplitude(®); + + /* Update last measurement info */ + gRFAL.wum.info.indAmp.lastMeas = reg; + + /* Convert inputs to TD format */ + value = rfalConvTDFormat(reg); + delta = rfalConvTDFormat(gRFAL.wum.cfg.indAmp.delta); + delta |= rfalAddFracTDFormat(gRFAL.wum.cfg.indAmp.fracDelta); + + /* Set first measurement as reference */ + if (gRFAL.wum.cfg.indAmp.reference == 0U) { + gRFAL.wum.cfg.indAmp.reference = value; + } + + /* Check if device should be woken */ + if ((value >= (gRFAL.wum.cfg.indAmp.reference + delta)) || + (value <= (gRFAL.wum.cfg.indAmp.reference - delta))) { + woke = true; + gRFAL.wum.info.indAmp.irqWu = true; + gRFAL.wum.state = RFAL_WUM_STATE_ENABLED_WOKE; + /* continue wake-up as for HW */ + } + + /* Update moving reference if enabled */ + if ((gRFAL.wum.cfg.indAmp.autoAvg) && + ((gRFAL.wum.cfg.indAmp.aaInclMeas) || (!woke))) { + gRFAL.wum.cfg.indAmp.reference = rfalWakeUpModeFilter( + gRFAL.wum.cfg.indAmp.reference, value, + (RFAL_WU_MIN_WEIGHT_VAL + << (uint8_t)gRFAL.wum.cfg.indAmp.aaWeight)); + } + } + + /*******************************************************************************/ + if (gRFAL.wum.cfg.indPha.enabled) { + /* Perform Phase measurement */ + st25r3916MeasurePhase(®); + + /* Update last measurement info */ + gRFAL.wum.info.indPha.lastMeas = reg; + + /* Convert inputs to TD format */ + value = rfalConvTDFormat(reg); + delta = rfalConvTDFormat(gRFAL.wum.cfg.indPha.delta); + delta |= rfalAddFracTDFormat(gRFAL.wum.cfg.indPha.fracDelta); + + /* Set first measurement as reference */ + if (gRFAL.wum.cfg.indPha.reference == 0U) { + gRFAL.wum.cfg.indPha.reference = value; + } + + /* Check if device should be woken */ + if ((value >= (gRFAL.wum.cfg.indPha.reference + delta)) || + (value <= (gRFAL.wum.cfg.indPha.reference - delta))) { + woke = true; + gRFAL.wum.info.indPha.irqWu = true; + gRFAL.wum.state = RFAL_WUM_STATE_ENABLED_WOKE; + /* continue wake-up as for HW */ + } + + /* Update moving reference if enabled */ + if ((gRFAL.wum.cfg.indPha.autoAvg) && + ((gRFAL.wum.cfg.indPha.aaInclMeas) || (!woke))) { + gRFAL.wum.cfg.indPha.reference = rfalWakeUpModeFilter( + gRFAL.wum.cfg.indPha.reference, value, + (RFAL_WU_MIN_WEIGHT_VAL + << (uint8_t)gRFAL.wum.cfg.indPha.aaWeight)); + } + } + + /* Re-Enable low power Wake-Up mode for wto to trigger another + * measurement(s) */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_OP_CONTROL, + (ST25R3916_REG_OP_CONTROL_en | ST25R3916_REG_OP_CONTROL_wu), + (ST25R3916_REG_OP_CONTROL_wu)); + } + } + break; + + /*******************************************************************************/ + case RFAL_WUM_STATE_INITIALIZING: + + irqs = st25r3916GetInterrupt(gRFAL.wum.refWUTrg); + if (irqs == ST25R3916_IRQ_MASK_NONE) { + break; /* No interrupt to process */ + } + + /*******************************************************************************/ + /* Check if Reference measurement is to be obtained at first WU pulse */ + if ((gRFAL.wum.cfg.refWU.enabled == true) && + ((irqs & gRFAL.wum.refWUTrg) != 0U)) { + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + st25r3916GetInterrupt( + (ST25R3916_IRQ_MASK_WAM | ST25R3916_IRQ_MASK_WPH)); + + /* Set measured value(s) as reference(s) */ + if (gRFAL.wum.cfg.indAmp.enabled) { + st25r3916ReadRegister(ST25R3916_REG_AMPLITUDE_MEASURE_RESULT, &aux); + st25r3916WriteRegister(ST25R3916_REG_AMPLITUDE_MEASURE_REF, aux); + st25r3916ChangeRegisterBits( + ST25R3916_REG_AMPLITUDE_MEASURE_CONF, + ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d_mask, + ((gRFAL.wum.cfg.indAmp.delta) + << ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d_shift)); + } + + if (gRFAL.wum.cfg.indPha.enabled) { + st25r3916ReadRegister(ST25R3916_REG_PHASE_MEASURE_RESULT, &aux); + st25r3916WriteRegister(ST25R3916_REG_PHASE_MEASURE_REF, aux); + st25r3916ChangeRegisterBits( + ST25R3916_REG_PHASE_MEASURE_CONF, + ST25R3916_REG_PHASE_MEASURE_CONF_pm_d_mask, + ((gRFAL.wum.cfg.indPha.delta) + << ST25R3916_REG_PHASE_MEASURE_CONF_pm_d_shift)); + } + + /* Set WU period and enter WU mode */ + aux = (uint8_t)(((uint8_t)gRFAL.wum.cfg.period & 0x0FU) + << ST25R3916_REG_WUP_TIMER_CONTROL_wut_shift); + aux |= (uint8_t)(((uint8_t)gRFAL.wum.cfg.period < + (uint8_t)RFAL_WUM_PERIOD_100MS) + ? ST25R3916_REG_WUP_TIMER_CONTROL_wur + : 0x00U); + st25r3916ChangeRegisterBits(ST25R3916_REG_WUP_TIMER_CONTROL, + (ST25R3916_REG_WUP_TIMER_CONTROL_wur | + ST25R3916_REG_WUP_TIMER_CONTROL_wut_mask), + aux); + st25r3916SetRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + + gRFAL.wum.state = RFAL_WUM_STATE_ENABLED; + return; + } + break; + + /*******************************************************************************/ + default: + /* MISRA 16.4: no empty default statement (a comment being enough) */ + break; + } +} + +/*******************************************************************************/ +ReturnCode rfalWakeUpModeStop(void) { + /* Check if RFAL is in Wake-up mode */ + if (gRFAL.state != RFAL_STATE_WUM) { + return RFAL_ERR_WRONG_STATE; + } + + gRFAL.wum.state = RFAL_WUM_STATE_NOT_INIT; + + /* Disable Wake-Up Mode */ + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_wu); + st25r3916DisableInterrupts((ST25R3916_IRQ_MASK_WT | ST25R3916_IRQ_MASK_WAM | + ST25R3916_IRQ_MASK_WPH | + ST25R3916_IRQ_MASK_WCAP)); + + /* Stop any ongoing activity */ + st25r3916ExecuteCommand(ST25R3916_CMD_STOP); + + /* Re-Enable External Field Detector as: Automatics */ + st25r3916ChangeRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_en_fd_mask, + ST25R3916_REG_OP_CONTROL_en_fd_auto_efd); + + /* Re-Enable the Oscillator */ + st25r3916OscOn(); + + /* Set Analog configurations for Wake-up Off event */ + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_WAKEUP_OFF)); + + return RFAL_ERR_NONE; +} + +#endif /* RFAL_FEATURE_WAKEUP_MODE */ + +/*******************************************************************************/ +ReturnCode rfalWlcPWptMonitorStart(const rfalWakeUpConfig *config) { + RFAL_NO_WARNING(config); + + return RFAL_ERR_NOTSUPP; +} + +/*******************************************************************************/ +ReturnCode rfalWlcPWptMonitorStop(void) { return RFAL_ERR_NOTSUPP; } + +/*******************************************************************************/ +bool rfalWlcPWptIsFodDetected(void) { return false; } + +/*******************************************************************************/ +bool rfalWlcPWptIsStopDetected(void) { return false; } + +/******************************************************************************* + * Low-Power Mode * + *******************************************************************************/ + +#if RFAL_FEATURE_LOWPOWER_MODE + +ReturnCode rfalLowPowerModeStart(rfalLpMode mode) { + /* Check if RFAL is not initialized */ + if (gRFAL.state < RFAL_STATE_INIT) { + return RFAL_ERR_WRONG_STATE; + } + + /* Check if mode is supported */ + if (mode != RFAL_LP_MODE_PD) { + return RFAL_ERR_NOTSUPP; + } + + /* Stop any ongoing activity and set the device in low power by disabling + * oscillator, transmitter, receiver and external field detector */ + st25r3916ExecuteCommand(ST25R3916_CMD_STOP); + st25r3916ClrRegisterBits( + ST25R3916_REG_OP_CONTROL, + (ST25R3916_REG_OP_CONTROL_en | ST25R3916_REG_OP_CONTROL_rx_en | + ST25R3916_REG_OP_CONTROL_wu | ST25R3916_REG_OP_CONTROL_tx_en | + ST25R3916_REG_OP_CONTROL_en_fd_mask)); + + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_LOWPOWER_ON)); + + gRFAL.state = RFAL_STATE_IDLE; + gRFAL.lpm.isRunning = true; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalLowPowerModeStop(void) { + ReturnCode ret; + + /* Check if RFAL is on right state */ + if (!gRFAL.lpm.isRunning) { + return RFAL_ERR_WRONG_STATE; + } + + /* Re-enable device */ + RFAL_EXIT_ON_ERR(ret, st25r3916OscOn()); + st25r3916ChangeRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_en_fd_mask, + ST25R3916_REG_OP_CONTROL_en_fd_auto_efd); + + rfalSetAnalogConfig( + (RFAL_ANALOG_CONFIG_TECH_CHIP | RFAL_ANALOG_CONFIG_CHIP_LOWPOWER_OFF)); + + gRFAL.state = RFAL_STATE_INIT; + gRFAL.lpm.isRunning = false; + return RFAL_ERR_NONE; +} + +#endif /* RFAL_FEATURE_LOWPOWER_MODE */ + +/******************************************************************************* + * RF Chip * + *******************************************************************************/ + +/*******************************************************************************/ +ReturnCode rfalChipWriteReg(uint16_t reg, const uint8_t *values, uint8_t len) { + if (!st25r3916IsRegValid((uint8_t)reg)) { + return RFAL_ERR_PARAM; + } + + return st25r3916WriteMultipleRegisters((uint8_t)reg, values, len); +} + +/*******************************************************************************/ +ReturnCode rfalChipReadReg(uint16_t reg, uint8_t *values, uint8_t len) { + if (!st25r3916IsRegValid((uint8_t)reg)) { + return RFAL_ERR_PARAM; + } + + return st25r3916ReadMultipleRegisters((uint8_t)reg, values, len); +} + +/*******************************************************************************/ +ReturnCode rfalChipExecCmd(uint16_t cmd) { + if (!st25r3916IsCmdValid((uint8_t)cmd)) { + return RFAL_ERR_PARAM; + } + + return st25r3916ExecuteCommand((uint8_t)cmd); +} + +/*******************************************************************************/ +ReturnCode rfalChipWriteTestReg(uint16_t reg, uint8_t value) { + return st25r3916WriteTestRegister((uint8_t)reg, value); +} + +/*******************************************************************************/ +ReturnCode rfalChipReadTestReg(uint16_t reg, uint8_t *value) { + return st25r3916ReadTestRegister((uint8_t)reg, value); +} + +/*******************************************************************************/ +ReturnCode rfalChipChangeRegBits(uint16_t reg, uint8_t valueMask, + uint8_t value) { + if (!st25r3916IsRegValid((uint8_t)reg)) { + return RFAL_ERR_PARAM; + } + + return st25r3916ChangeRegisterBits((uint8_t)reg, valueMask, value); +} + +/*******************************************************************************/ +ReturnCode rfalChipChangeTestRegBits(uint16_t reg, uint8_t valueMask, + uint8_t value) { + st25r3916ChangeTestRegisterBits((uint8_t)reg, valueMask, value); + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalChipSetRFO(uint8_t rfo) { + return st25r3916ChangeRegisterBits(ST25R3916_REG_TX_DRIVER, + ST25R3916_REG_TX_DRIVER_d_res_mask, rfo); +} + +/*******************************************************************************/ +ReturnCode rfalChipGetRFO(uint8_t *result) { + ReturnCode ret; + + ret = st25r3916ReadRegister(ST25R3916_REG_TX_DRIVER, result); + + if (result != NULL) { + (*result) = ((*result) & ST25R3916_REG_TX_DRIVER_d_res_mask); + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalChipSetLMMod(uint8_t mod, uint8_t unmod) { + return st25r3916WriteRegister(ST25R3916_REG_PT_MOD, + (((mod << ST25R3916_REG_PT_MOD_ptm_res_shift) & + ST25R3916_REG_PT_MOD_ptm_res_mask) | + ((unmod & ST25R3916_REG_PT_MOD_pt_res_mask)))); +} + +/*******************************************************************************/ +ReturnCode rfalChipGetLMMod(uint8_t *mod, uint8_t *unmod) { + ReturnCode ret; + uint8_t reg; + + ret = st25r3916ReadRegister(ST25R3916_REG_PT_MOD, ®); + + if (mod != NULL) { + (*mod) = ((reg >> ST25R3916_REG_PT_MOD_ptm_res_shift)); + } + + if (unmod != NULL) { + (*unmod) = ((reg >> ST25R3916_REG_PT_MOD_pt_res_shift) & + ST25R3916_REG_PT_MOD_pt_res_mask); + } + + return ret; +} + +/*******************************************************************************/ +ReturnCode rfalChipMeasureAmplitude(uint8_t *result) { + ReturnCode err; + uint8_t reg_opc, reg_mode, reg_conf1, reg_conf2, reg_auxmod; + + /* Save registers which will be adjusted below */ + st25r3916ReadRegister(ST25R3916_REG_OP_CONTROL, ®_opc); + st25r3916ReadRegister(ST25R3916_REG_MODE, ®_mode); + st25r3916ReadRegister(ST25R3916_REG_RX_CONF1, ®_conf1); + st25r3916ReadRegister(ST25R3916_REG_RX_CONF2, ®_conf2); + st25r3916ReadRegister(ST25R3916_REG_AUX_MOD, ®_auxmod); + + /* Set values as per defaults of DS. These regs/bits influence receiver chain + * and change amplitude */ + /* Doing so achieves an amplitude comparable over a complete polling cylce */ + st25r3916WriteRegister(ST25R3916_REG_OP_CONTROL, + (reg_opc & ~ST25R3916_REG_OP_CONTROL_rx_chn)); + st25r3916WriteRegister( + ST25R3916_REG_MODE, + (ST25R3916_REG_MODE_om_iso14443a | ST25R3916_REG_MODE_targ_init | + ST25R3916_REG_MODE_tr_am_ook | ST25R3916_REG_MODE_nfc_ar_off)); + st25r3916WriteRegister(ST25R3916_REG_RX_CONF1, + (reg_conf1 & ~ST25R3916_REG_RX_CONF1_ch_sel_AM)); + st25r3916WriteRegister(ST25R3916_REG_RX_CONF2, + ((reg_conf2 & ~(ST25R3916_REG_RX_CONF2_demod_mode | + ST25R3916_REG_RX_CONF2_amd_sel)) | + ST25R3916_REG_RX_CONF2_amd_sel_peak)); + +#ifdef ST25R3916B + /* Disable AWS for Amplitude Measurement */ + st25r3916WriteRegister(ST25R3916_REG_AUX_MOD, + (reg_auxmod & ~ST25R3916_REG_AUX_MOD_rgs_am)); +#endif /* ST25R3916B */ + + /* Perform the actual measurement */ + err = st25r3916MeasureAmplitude(result); + + /* Restore values */ + st25r3916WriteRegister(ST25R3916_REG_OP_CONTROL, reg_opc); + st25r3916WriteRegister(ST25R3916_REG_MODE, reg_mode); + st25r3916WriteRegister(ST25R3916_REG_RX_CONF1, reg_conf1); + st25r3916WriteRegister(ST25R3916_REG_RX_CONF2, reg_conf2); + st25r3916WriteRegister(ST25R3916_REG_AUX_MOD, reg_auxmod); + + return err; +} + +/*******************************************************************************/ +ReturnCode rfalChipMeasurePhase(uint8_t *result) { + st25r3916MeasurePhase(result); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalChipMeasureCapacitance(uint8_t *result) { + st25r3916MeasureCapacitance(result); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalChipMeasurePowerSupply(uint8_t param, uint8_t *result) { + *result = st25r3916MeasurePowerSupply(param); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode rfalChipMeasureIQ(int8_t *resI, int8_t *resQ) { + if (resI != NULL) { + (*resI) = 0; + } + + if (resQ != NULL) { + (*resQ) = 0; + } + + return RFAL_ERR_NOTSUPP; +} + +/*******************************************************************************/ +ReturnCode rfalChipMeasureCombinedIQ(uint8_t *result) { + if (result != NULL) { + (*result) = 0U; + } + + return RFAL_ERR_NOTSUPP; +} + +/*******************************************************************************/ +ReturnCode rfalChipSetAntennaMode(bool single, bool rfiox) { + return st25r3916SetAntennaMode(single, rfiox); +} + +/*******************************************************************************/ +extern uint8_t + invalid_size_of_stream_configs[(sizeof(struct st25r3916StreamConfig) == + sizeof(struct iso15693StreamConfig)) + ? 1 + : (-1)]; diff --git a/core/embed/io/nfc/rfal/source/st25r3916/st25r3916.c b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916.c new file mode 100644 index 0000000000..0e7ccef234 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916.c @@ -0,0 +1,893 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file + * + * \author Gustavo Patricio + * + * \brief ST25R3916 high level interface + * + */ + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ + +#include "st25r3916.h" +#include "rfal_utils.h" +#include "st25r3916_com.h" +#include "st25r3916_irq.h" +#include "st25r3916_led.h" + +/* + ****************************************************************************** + * ENABLE SWITCH + ****************************************************************************** + */ + +#if !defined(ST25R3916) && !defined(ST25R3916B) +#error \ + "RFAL: Missing ST25R device selection. Please globally define ST25R3916 / ST25R3916B." +#endif /* ST25R3916 | ST25R3916B */ + +/* +****************************************************************************** +* LOCAL DEFINES +****************************************************************************** +*/ + +#define ST25R3916_SUPPLY_THRESHOLD \ + 3600U /*!< Power supply measure threshold between 3.3V or 5V */ +#define ST25R3916_NRT_MAX 0xFFFFU /*!< Max Register value of NRT */ + +#define ST25R3916_TOUT_MEASURE_VDD \ + 100U /*!< Max duration time of Measure Power Supply command Datasheet: 25us \ + */ +#define ST25R3916_TOUT_MEASURE_AMPLITUDE \ + 10U /*!< Max duration time of Measure Amplitude command Datasheet: 25us \ + */ +#define ST25R3916_TOUT_MEASURE_PHASE \ + 10U /*!< Max duration time of Measure Phase command Datasheet: 25us \ + */ +#define ST25R3916_TOUT_MEASURE_CAPACITANCE \ + 10U /*!< Max duration time of Measure Capacitance command Datasheet: 25us \ + */ +#define ST25R3916_TOUT_CALIBRATE_CAP_SENSOR \ + 4U /*!< Max duration Calibrate Capacitive Sensor command Datasheet: 3ms */ +#define ST25R3916_TOUT_CALIBRATE_AWS_RC \ + 10U /*!< Max duration Calibrate RC command Datasheet: 5ms \ + */ +#define ST25R3916_TOUT_ADJUST_REGULATORS \ + 6U /*!< Max duration time of Adjust Regulators command Datasheet: 5ms */ +#define ST25R3916_TOUT_CA \ + 10U /*!< Max duration time of Collision Avoidance command */ + +#define ST25R3916_TEST_REG_PATTERN \ + 0x33U /*!< Register Read Write test pattern used during selftest */ +#define ST25R3916_TEST_WU_TOUT \ + 12U /*!< Timeout used on WU timer during self test */ +#define ST25R3916_TEST_TMR_TOUT 20U /*!< Timeout used during self test */ +#define ST25R3916_TEST_TMR_TOUT_DELTA 2U /*!< Timeout used during self test */ +#define ST25R3916_TEST_TMR_TOUT_8FC \ + (ST25R3916_TEST_TMR_TOUT * 1695U) /*!< Timeout in 8/fc */ + +/* +****************************************************************************** +* LOCAL CONSTANTS +****************************************************************************** +*/ + +/* +****************************************************************************** +* LOCAL VARIABLES +****************************************************************************** +*/ + +static uint32_t gST25R3916NRT_64fcs; + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/* + ****************************************************************************** + * LOCAL FUNCTION + ****************************************************************************** + */ + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ + +ReturnCode st25r3916Initialize(void) { + uint16_t vdd_mV; + ReturnCode ret; + +#ifndef RFAL_USE_I2C + /* Ensure a defined chip select state */ + platformSpiDeselect(); +#endif /* RFAL_USE_I2C */ + + /* Set default state on the ST25R3916 */ + st25r3916ExecuteCommand(ST25R3916_CMD_SET_DEFAULT); + +#ifndef RFAL_USE_I2C + /* Increase MISO driving level as SPI can go up to 10MHz */ + st25r3916WriteRegister(ST25R3916_REG_IO_CONF2, + ST25R3916_REG_IO_CONF2_io_drv_lvl); +#endif /* RFAL_USE_I2C */ + + if (!st25r3916CheckChipID(NULL)) { + platformErrorHandle(); + return RFAL_ERR_HW_MISMATCH; + } + + st25r3916InitInterrupts(); + st25r3916ledInit(); + + gST25R3916NRT_64fcs = 0; + +#ifndef RFAL_USE_I2C + /* Enable pull downs on MISO line */ + st25r3916SetRegisterBits( + ST25R3916_REG_IO_CONF2, + (ST25R3916_REG_IO_CONF2_miso_pd1 | ST25R3916_REG_IO_CONF2_miso_pd2)); +#endif /* RFAL_USE_I2C */ + +#ifdef ST25R3916 + /* Disable internal overheat protection */ + st25r3916ChangeTestRegisterBits(0x04, 0x10, 0x10); +#endif /* ST25R3916 */ + +#ifdef ST25R_SELFTEST + /****************************************************************************** + * Check communication interface: + * - write a pattern in a register + * - reads back the register value + * - return RFAL_ERR_IO in case the read value is different + */ + st25r3916WriteRegister(ST25R3916_REG_BIT_RATE, ST25R3916_TEST_REG_PATTERN); + if (!st25r3916CheckReg(ST25R3916_REG_BIT_RATE, + (ST25R3916_REG_BIT_RATE_rxrate_mask | + ST25R3916_REG_BIT_RATE_txrate_mask), + ST25R3916_TEST_REG_PATTERN)) { + platformErrorHandle(); + return RFAL_ERR_IO; + } + + /* Restore default value */ + st25r3916WriteRegister(ST25R3916_REG_BIT_RATE, 0x00); + + /* + * Check IRQ Handling: + * - use the Wake-up timer to trigger an IRQ + * - wait the Wake-up timer interrupt + * - return RFAL_ERR_TIMEOUT when the Wake-up timer interrupt is not received + */ + st25r3916WriteRegister(ST25R3916_REG_WUP_TIMER_CONTROL, + ST25R3916_REG_WUP_TIMER_CONTROL_wur | + ST25R3916_REG_WUP_TIMER_CONTROL_wto); + st25r3916EnableInterrupts(ST25R3916_IRQ_MASK_WT); + st25r3916ExecuteCommand(ST25R3916_CMD_START_WUP_TIMER); + if (st25r3916WaitForInterruptsTimed(ST25R3916_IRQ_MASK_WT, + ST25R3916_TEST_WU_TOUT) == 0U) { + platformErrorHandle(); + return RFAL_ERR_TIMEOUT; + } + st25r3916DisableInterrupts(ST25R3916_IRQ_MASK_WT); + st25r3916WriteRegister(ST25R3916_REG_WUP_TIMER_CONTROL, 0U); + /*******************************************************************************/ +#endif /* ST25R_SELFTEST */ + + /* Enable Oscillator and wait until it gets stable */ + ret = st25r3916OscOn(); + if (ret != RFAL_ERR_NONE) { + platformErrorHandle(); + return ret; + } + +#ifdef ST25R3916B + /* Trigger RC calibration */ + st25r3916ExecuteCommandAndGetResult(ST25R3916_CMD_RC_CAL, + ST25R3916_REG_AWS_RC_CAL, + ST25R3916_TOUT_CALIBRATE_AWS_RC, NULL); +#endif /* ST25R3916B */ + + /* Measure VDD and set sup3V bit according to Power supplied */ + vdd_mV = st25r3916MeasureVoltage(ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd); + st25r3916ChangeRegisterBits(ST25R3916_REG_IO_CONF2, + ST25R3916_REG_IO_CONF2_sup3V, + ((vdd_mV < ST25R3916_SUPPLY_THRESHOLD) + ? ST25R3916_REG_IO_CONF2_sup3V_3V + : ST25R3916_REG_IO_CONF2_sup3V_5V)); + + /* Make sure Transmitter and Receiver are disabled */ + st25r3916TxRxOff(); + +#ifdef ST25R_SELFTEST_TIMER + /****************************************************************************** + * Check SW timer operation : + * - use the General Purpose timer to measure an amount of time + * - test whether an interrupt is seen when less time was given + * - test whether an interrupt is seen when sufficient time was given + */ + + st25r3916EnableInterrupts(ST25R3916_IRQ_MASK_GPE); + st25r3916SetStartGPTimer((uint16_t)ST25R3916_TEST_TMR_TOUT_8FC, + ST25R3916_REG_TIMER_EMV_CONTROL_gptc_no_trigger); + if (st25r3916WaitForInterruptsTimed( + ST25R3916_IRQ_MASK_GPE, + (ST25R3916_TEST_TMR_TOUT - ST25R3916_TEST_TMR_TOUT_DELTA)) != 0U) { + platformErrorHandle(); + return RFAL_ERR_SYSTEM; + } + + /* Stop all activities to stop the GP timer */ + st25r3916ExecuteCommand(ST25R3916_CMD_STOP); + st25r3916ClearAndEnableInterrupts(ST25R3916_IRQ_MASK_GPE); + st25r3916SetStartGPTimer((uint16_t)ST25R3916_TEST_TMR_TOUT_8FC, + ST25R3916_REG_TIMER_EMV_CONTROL_gptc_no_trigger); + if (st25r3916WaitForInterruptsTimed( + ST25R3916_IRQ_MASK_GPE, + (ST25R3916_TEST_TMR_TOUT + ST25R3916_TEST_TMR_TOUT_DELTA)) == 0U) { + platformErrorHandle(); + return RFAL_ERR_SYSTEM; + } + + /* Stop all activities to stop the GP timer */ + st25r3916ExecuteCommand(ST25R3916_CMD_STOP); + /*******************************************************************************/ +#endif /* ST25R_SELFTEST_TIMER */ + + /* After reset all interrupts are enabled, so disable them at first */ + st25r3916DisableInterrupts(ST25R3916_IRQ_MASK_ALL); + + /* And clear them, just to be sure */ + st25r3916ClearInterrupts(); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +void st25r3916Deinitialize(void) { + /* Stop any ongoing activity */ + st25r3916ExecuteCommand(ST25R3916_CMD_STOP); + st25r3916DisableInterrupts(ST25R3916_IRQ_MASK_ALL); + + /* Set the device in PD mode */ + st25r3916ClrRegisterBits( + ST25R3916_REG_OP_CONTROL, + (ST25R3916_REG_OP_CONTROL_en | ST25R3916_REG_OP_CONTROL_rx_en | + ST25R3916_REG_OP_CONTROL_wu | ST25R3916_REG_OP_CONTROL_tx_en | + ST25R3916_REG_OP_CONTROL_en_fd_mask)); + + return; +} + +/*******************************************************************************/ +ReturnCode st25r3916OscOn(void) { + /* Check if oscillator is already turned on and stable */ + /* Use ST25R3916_REG_OP_CONTROL_en instead of ST25R3916_REG_AUX_DISPLAY_osc_ok + * to be on the safe side */ + if (!st25r3916CheckReg(ST25R3916_REG_OP_CONTROL, ST25R3916_REG_OP_CONTROL_en, + ST25R3916_REG_OP_CONTROL_en)) { + /* Clear any eventual previous oscillator frequency stable IRQ and enable it + */ + st25r3916ClearAndEnableInterrupts(ST25R3916_IRQ_MASK_OSC); + + /* Clear any oscillator IRQ that was potentially pending on ST25R */ + st25r3916GetInterrupt(ST25R3916_IRQ_MASK_OSC); + + /* Enable oscillator and regulator output */ + st25r3916SetRegisterBits(ST25R3916_REG_OP_CONTROL, + ST25R3916_REG_OP_CONTROL_en); + + /* Wait for the oscillator interrupt */ + st25r3916WaitForInterruptsTimed(ST25R3916_IRQ_MASK_OSC, + ST25R3916_TOUT_OSC_STABLE); + st25r3916DisableInterrupts(ST25R3916_IRQ_MASK_OSC); + } + + if (!st25r3916CheckReg(ST25R3916_REG_AUX_DISPLAY, + ST25R3916_REG_AUX_DISPLAY_osc_ok, + ST25R3916_REG_AUX_DISPLAY_osc_ok)) { + return RFAL_ERR_SYSTEM; + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916ExecuteCommandAndGetResult(uint8_t cmd, uint8_t resReg, + uint8_t tOut, uint8_t* result) { + /* Clear and enable Direct Command interrupt */ + st25r3916GetInterrupt(ST25R3916_IRQ_MASK_DCT); + st25r3916EnableInterrupts(ST25R3916_IRQ_MASK_DCT); + + st25r3916ExecuteCommand(cmd); + + st25r3916WaitForInterruptsTimed(ST25R3916_IRQ_MASK_DCT, tOut); + st25r3916DisableInterrupts(ST25R3916_IRQ_MASK_DCT); + + /* After execution read out the result if the pointer is not NULL */ + if (result != NULL) { + st25r3916ReadRegister(resReg, result); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +uint8_t st25r3916MeasurePowerSupply(uint8_t mpsv) { + uint8_t result; + + /* Set the source of direct command: Measure Power Supply Voltage */ + st25r3916ChangeRegisterBits(ST25R3916_REG_REGULATOR_CONTROL, + ST25R3916_REG_REGULATOR_CONTROL_mpsv_mask, mpsv); + + /* Execute command: Measure Power Supply Voltage */ + st25r3916ExecuteCommandAndGetResult(ST25R3916_CMD_MEASURE_VDD, + ST25R3916_REG_AD_RESULT, + ST25R3916_TOUT_MEASURE_VDD, &result); + + return result; +} + +/*******************************************************************************/ +uint16_t st25r3916MeasureVoltage(uint8_t mpsv) { + uint8_t result; + uint16_t mV; + + result = st25r3916MeasurePowerSupply(mpsv); + + /* Convert cmd output into mV (each step represents 23.4 mV )*/ + mV = ((uint16_t)result) * 23U; + mV += (((((uint16_t)result) * 4U) + 5U) / 10U); + + return mV; +} + +/*******************************************************************************/ +ReturnCode st25r3916AdjustRegulators(uint16_t* result_mV) { + uint8_t result; + + /* Reset logic and set regulated voltages to be defined by result of Adjust + * Regulators command */ + st25r3916SetRegisterBits(ST25R3916_REG_REGULATOR_CONTROL, + ST25R3916_REG_REGULATOR_CONTROL_reg_s); + st25r3916ClrRegisterBits(ST25R3916_REG_REGULATOR_CONTROL, + ST25R3916_REG_REGULATOR_CONTROL_reg_s); + + /* Execute Adjust regulators cmd and retrieve result */ + st25r3916ExecuteCommandAndGetResult( + ST25R3916_CMD_ADJUST_REGULATORS, ST25R3916_REG_REGULATOR_RESULT, + ST25R3916_TOUT_ADJUST_REGULATORS, &result); + + /* Calculate result in mV */ + result >>= ST25R3916_REG_REGULATOR_RESULT_reg_shift; + + if (result_mV != NULL) { + if (st25r3916CheckReg(ST25R3916_REG_IO_CONF2, ST25R3916_REG_IO_CONF2_sup3V, + ST25R3916_REG_IO_CONF2_sup3V)) { + result -= + ((result > 4U) ? (5U) : 0U); /* In 3.3V mode [0,4] are not used */ + *result_mV = + 2400U; /* Minimum regulated voltage 2.4V in case of 3.3V supply */ + } else { + *result_mV = + 3600U; /* Minimum regulated voltage 3.6V in case of 5V supply */ + } + + *result_mV += + (uint16_t)result * 100U; /* 100mV steps in both 3.3V and 5V supply */ + } + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916MeasureAmplitude(uint8_t* result) { + return st25r3916ExecuteCommandAndGetResult( + ST25R3916_CMD_MEASURE_AMPLITUDE, ST25R3916_REG_AD_RESULT, + ST25R3916_TOUT_MEASURE_AMPLITUDE, result); +} + +/*******************************************************************************/ +ReturnCode st25r3916MeasurePhase(uint8_t* result) { + return st25r3916ExecuteCommandAndGetResult( + ST25R3916_CMD_MEASURE_PHASE, ST25R3916_REG_AD_RESULT, + ST25R3916_TOUT_MEASURE_PHASE, result); +} + +/*******************************************************************************/ +ReturnCode st25r3916MeasureCapacitance(uint8_t* result) { +#ifdef ST25R3916B + return RFAL_ERR_NOTSUPP; +#else + return st25r3916ExecuteCommandAndGetResult( + ST25R3916_CMD_MEASURE_CAPACITANCE, ST25R3916_REG_AD_RESULT, + ST25R3916_TOUT_MEASURE_CAPACITANCE, result); +#endif /* ST25R3916B */ +} + +/*******************************************************************************/ +ReturnCode st25r3916CalibrateCapacitiveSensor(uint8_t* result) { +#ifdef ST25R3916B + return RFAL_ERR_NOTSUPP; +#else + ReturnCode ret; + uint8_t res; + + /* Clear Manual calibration values to enable automatic calibration mode */ + st25r3916ClrRegisterBits(ST25R3916_REG_CAP_SENSOR_CONTROL, + ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal_mask); + + /* Execute automatic calibration */ + ret = st25r3916ExecuteCommandAndGetResult( + ST25R3916_CMD_CALIBRATE_C_SENSOR, ST25R3916_REG_CAP_SENSOR_RESULT, + ST25R3916_TOUT_CALIBRATE_CAP_SENSOR, &res); + + /* Check wether the calibration was successull */ + if (((res & ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_end) != + ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_end) || + ((res & ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_err) == + ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_err) || + (ret != RFAL_ERR_NONE)) { + return RFAL_ERR_IO; + } + + if (result != NULL) { + (*result) = (uint8_t)(res >> ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_shift); + } + + return RFAL_ERR_NONE; +#endif /* ST25R3916B */ +} + +/*******************************************************************************/ +ReturnCode st25r3916SetBitrate(uint8_t txrate, uint8_t rxrate) { + uint8_t reg; + + st25r3916ReadRegister(ST25R3916_REG_BIT_RATE, ®); + if (rxrate != ST25R3916_BR_DO_NOT_SET) { + if (rxrate > ST25R3916_BR_848) { + return RFAL_ERR_PARAM; + } + + reg = (uint8_t)(reg & ~ST25R3916_REG_BIT_RATE_rxrate_mask); /* MISRA 10.3 */ + reg |= rxrate << ST25R3916_REG_BIT_RATE_rxrate_shift; + } + if (txrate != ST25R3916_BR_DO_NOT_SET) { + if (txrate > ST25R3916_BR_6780) { + return RFAL_ERR_PARAM; + } + + reg = (uint8_t)(reg & ~ST25R3916_REG_BIT_RATE_txrate_mask); /* MISRA 10.3 */ + reg |= txrate << ST25R3916_REG_BIT_RATE_txrate_shift; + } + return st25r3916WriteRegister(ST25R3916_REG_BIT_RATE, reg); +} + +/*******************************************************************************/ +ReturnCode st25r3916PerformCollisionAvoidance(uint8_t FieldONCmd, + uint8_t pdThreshold, + uint8_t caThreshold, + uint8_t nTRFW) { + uint8_t treMask; + uint32_t irqs; + ReturnCode err; + + if ((FieldONCmd != ST25R3916_CMD_INITIAL_RF_COLLISION) && + (FieldONCmd != ST25R3916_CMD_RESPONSE_RF_COLLISION_N)) { + return RFAL_ERR_PARAM; + } + + err = RFAL_ERR_INTERNAL; + + /* Check if new thresholds are to be applied */ + if ((pdThreshold != ST25R3916_THRESHOLD_DO_NOT_SET) || + (caThreshold != ST25R3916_THRESHOLD_DO_NOT_SET)) { + treMask = 0; + + if (pdThreshold != ST25R3916_THRESHOLD_DO_NOT_SET) { + treMask |= ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_mask; + } + + if (caThreshold != ST25R3916_THRESHOLD_DO_NOT_SET) { + treMask |= ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_mask; + } + + /* Set Detection Threshold and|or Collision Avoidance Threshold */ + st25r3916ChangeRegisterBits( + ST25R3916_REG_FIELD_THRESHOLD_ACTV, treMask, + (pdThreshold & ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_mask) | + (caThreshold & ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_mask)); + } + + /* Set n x TRFW */ + st25r3916ChangeRegisterBits(ST25R3916_REG_AUX, ST25R3916_REG_AUX_nfc_n_mask, + nTRFW); + + /*******************************************************************************/ + /* Enable and clear CA specific interrupts and execute command */ + st25r3916GetInterrupt((ST25R3916_IRQ_MASK_CAC | ST25R3916_IRQ_MASK_CAT | + ST25R3916_IRQ_MASK_APON)); + st25r3916EnableInterrupts((ST25R3916_IRQ_MASK_CAC | ST25R3916_IRQ_MASK_CAT | + ST25R3916_IRQ_MASK_APON)); + + st25r3916ExecuteCommand(FieldONCmd); + + /*******************************************************************************/ + /* Wait for initial APON interrupt, indicating anticollision avoidance done + * and ST25R3916's field is now on, or a CAC indicating a collision */ + irqs = st25r3916WaitForInterruptsTimed( + (ST25R3916_IRQ_MASK_CAC | ST25R3916_IRQ_MASK_APON), ST25R3916_TOUT_CA); + + if ((ST25R3916_IRQ_MASK_CAC & irqs) != 0U) /* Collision occurred */ + { + err = RFAL_ERR_RF_COLLISION; + } else if ((ST25R3916_IRQ_MASK_APON & irqs) != 0U) { + /* After APON wait for CAT interrupt, indication field was switched on + * minimum guard time has been fulfilled */ + irqs = st25r3916WaitForInterruptsTimed((ST25R3916_IRQ_MASK_CAT), + ST25R3916_TOUT_CA); + + if ((ST25R3916_IRQ_MASK_CAT & irqs) != + 0U) /* No Collision detected, Field On */ + { + err = RFAL_ERR_NONE; + } + } else { + /* MISRA 15.7 - Empty else */ + } + + /* Clear any previous External Field events and disable CA specific interrupts + */ + st25r3916GetInterrupt((ST25R3916_IRQ_MASK_EOF | ST25R3916_IRQ_MASK_EON)); + st25r3916DisableInterrupts((ST25R3916_IRQ_MASK_CAC | ST25R3916_IRQ_MASK_CAT | + ST25R3916_IRQ_MASK_APON)); + + return err; +} + +/*******************************************************************************/ +void st25r3916SetNumTxBits(uint16_t nBits) { + st25r3916WriteRegister(ST25R3916_REG_NUM_TX_BYTES2, + (uint8_t)((nBits >> 0) & 0xFFU)); + st25r3916WriteRegister(ST25R3916_REG_NUM_TX_BYTES1, + (uint8_t)((nBits >> 8) & 0xFFU)); +} + +/*******************************************************************************/ +uint16_t st25r3916GetNumFIFOBytes(void) { + uint8_t reg; + uint16_t result; + + st25r3916ReadRegister(ST25R3916_REG_FIFO_STATUS2, ®); + reg = ((reg & ST25R3916_REG_FIFO_STATUS2_fifo_b_mask) >> + ST25R3916_REG_FIFO_STATUS2_fifo_b_shift); + result = ((uint16_t)reg << 8); + + st25r3916ReadRegister(ST25R3916_REG_FIFO_STATUS1, ®); + result |= (((uint16_t)reg) & 0x00FFU); + + return result; +} + +/*******************************************************************************/ +uint8_t st25r3916GetNumFIFOLastBits(void) { + uint8_t reg; + + st25r3916ReadRegister(ST25R3916_REG_FIFO_STATUS2, ®); + + return ((reg & ST25R3916_REG_FIFO_STATUS2_fifo_lb_mask) >> + ST25R3916_REG_FIFO_STATUS2_fifo_lb_shift); +} + +/*******************************************************************************/ +uint32_t st25r3916GetNoResponseTime(void) { return gST25R3916NRT_64fcs; } + +/*******************************************************************************/ +ReturnCode st25r3916SetNoResponseTime(uint32_t nrt_64fcs) { + ReturnCode err; + uint8_t nrt_step; + uint32_t tmpNRT; + + tmpNRT = nrt_64fcs; /* MISRA 17.8 */ + err = RFAL_ERR_NONE; + + gST25R3916NRT_64fcs = + tmpNRT; /* Store given NRT value in 64/fc into local var */ + nrt_step = + ST25R3916_REG_TIMER_EMV_CONTROL_nrt_step_64fc; /* Set default NRT in steps + of 64/fc */ + + if (tmpNRT > ST25R3916_NRT_MAX) /* Check if the given NRT value fits using + 64/fc steps */ + { + nrt_step = + ST25R3916_REG_TIMER_EMV_CONTROL_nrt_step_4096_fc; /* If not, change NRT + set to 4096/fc */ + tmpNRT = ((tmpNRT + 63U) / 64U); /* Calculate number of steps in 4096/fc */ + + if (tmpNRT > + ST25R3916_NRT_MAX) /* Check if the NRT value fits using 64/fc steps */ + { + tmpNRT = ST25R3916_NRT_MAX; /* Assign the maximum possible */ + err = RFAL_ERR_PARAM; /* Signal parameter error */ + } + gST25R3916NRT_64fcs = (64U * tmpNRT); + } + + /* Set the ST25R3916 NRT step units and the value */ + st25r3916ChangeRegisterBits(ST25R3916_REG_TIMER_EMV_CONTROL, + ST25R3916_REG_TIMER_EMV_CONTROL_nrt_step, + nrt_step); + st25r3916WriteRegister(ST25R3916_REG_NO_RESPONSE_TIMER1, + (uint8_t)(tmpNRT >> 8U)); + st25r3916WriteRegister(ST25R3916_REG_NO_RESPONSE_TIMER2, + (uint8_t)(tmpNRT & 0xFFU)); + + return err; +} + +/*******************************************************************************/ +ReturnCode st25r3916SetStartNoResponseTimer(uint32_t nrt_64fcs) { + ReturnCode err; + + err = st25r3916SetNoResponseTime(nrt_64fcs); + if (err == RFAL_ERR_NONE) { + st25r3916ExecuteCommand(ST25R3916_CMD_START_NO_RESPONSE_TIMER); + } + + return err; +} + +/*******************************************************************************/ +void st25r3916SetGPTime(uint16_t gpt_8fcs) { + st25r3916WriteRegister(ST25R3916_REG_GPT1, (uint8_t)(gpt_8fcs >> 8)); + st25r3916WriteRegister(ST25R3916_REG_GPT2, (uint8_t)(gpt_8fcs & 0xFFU)); +} + +/*******************************************************************************/ +ReturnCode st25r3916SetStartGPTimer(uint16_t gpt_8fcs, uint8_t trigger_source) { + st25r3916SetGPTime(gpt_8fcs); + st25r3916ChangeRegisterBits(ST25R3916_REG_TIMER_EMV_CONTROL, + ST25R3916_REG_TIMER_EMV_CONTROL_gptc_mask, + trigger_source); + + /* If there's no trigger source, start GPT immediately */ + if (trigger_source == ST25R3916_REG_TIMER_EMV_CONTROL_gptc_no_trigger) { + st25r3916ExecuteCommand(ST25R3916_CMD_START_GP_TIMER); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +bool st25r3916CheckChipID(uint8_t* rev) { + uint8_t ID; + + ID = 0; + st25r3916ReadRegister(ST25R3916_REG_IC_IDENTITY, &ID); + + /* Check if IC Identity Register contains ST25R3916's IC type code */ +#if defined(ST25R3916) + if ((ID & ST25R3916_REG_IC_IDENTITY_ic_type_mask) != + ST25R3916_REG_IC_IDENTITY_ic_type_st25r3916) { + return false; + } +#elif defined(ST25R3916B) + if (((ID & ST25R3916_REG_IC_IDENTITY_ic_type_mask) != + ST25R3916_REG_IC_IDENTITY_ic_type_st25r3916B) || + ((ID & ST25R3916_REG_IC_IDENTITY_ic_rev_mask) < 1U)) { + return false; + } +#endif /* ST25R3916 */ + + if (rev != NULL) { + *rev = (ID & ST25R3916_REG_IC_IDENTITY_ic_rev_mask); + } + + return true; +} + +/*******************************************************************************/ +ReturnCode st25r3916GetRegsDump(t_st25r3916Regs* regDump) { + uint8_t regIt; + + if (regDump == NULL) { + return RFAL_ERR_PARAM; + } + + /* Dump Registers on space A */ + for (regIt = ST25R3916_REG_IO_CONF1; regIt <= ST25R3916_REG_IC_IDENTITY; + regIt++) { + st25r3916ReadRegister(regIt, ®Dump->RsA[regIt]); + } + + regIt = 0; + + /* Read non-consecutive Registers on space B */ + st25r3916ReadRegister(ST25R3916_REG_EMD_SUP_CONF, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_SUBC_START_TIME, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_P2P_RX_CONF, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_CORR_CONF1, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_CORR_CONF2, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_SQUELCH_TIMER, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_FIELD_ON_GT, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_AUX_MOD, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_TX_DRIVER_TIMING, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_RES_AM_MOD, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_TX_DRIVER_STATUS, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_REGULATOR_RESULT, ®Dump->RsB[regIt++]); + +#ifdef ST25R3916B + st25r3916ReadRegister(ST25R3916_REG_AWS_CONF1, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_AWS_CONF2, ®Dump->RsB[regIt++]); +#endif /* ST25R3916B */ + + st25r3916ReadRegister(ST25R3916_REG_OVERSHOOT_CONF1, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_OVERSHOOT_CONF2, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_UNDERSHOOT_CONF1, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_UNDERSHOOT_CONF2, ®Dump->RsB[regIt++]); + +#ifdef ST25R3916B + st25r3916ReadRegister(ST25R3916_REG_AWS_TIME1, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_AWS_TIME2, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_AWS_TIME3, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_AWS_TIME4, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_AWS_TIME5, ®Dump->RsB[regIt++]); + st25r3916ReadRegister(ST25R3916_REG_AWS_RC_CAL, ®Dump->RsB[regIt++]); +#endif /* ST25R3916B */ + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +bool st25r3916IsCmdValid(uint8_t cmd) { + if ((!((cmd >= ST25R3916_CMD_SET_DEFAULT) && + (cmd <= ST25R3916_CMD_RESPONSE_RF_COLLISION_N))) && + (!((cmd >= ST25R3916_CMD_GOTO_SENSE) && + (cmd <= ST25R3916_CMD_GOTO_SLEEP))) && + (!((cmd >= ST25R3916_CMD_MASK_RECEIVE_DATA) && + (cmd <= ST25R3916_CMD_MEASURE_AMPLITUDE))) && + (!((cmd >= ST25R3916_CMD_RESET_RXGAIN) && + (cmd <= ST25R3916_CMD_ADJUST_REGULATORS))) && + (!((cmd >= ST25R3916_CMD_CALIBRATE_DRIVER_TIMING) && + (cmd <= ST25R3916_CMD_START_PPON2_TIMER))) && +#ifdef ST25R3916B + (cmd != ST25R3916_CMD_RC_CAL) && +#endif /* ST25R3916B */ + (cmd != ST25R3916_CMD_SPACE_B_ACCESS) && + (cmd != ST25R3916_CMD_STOP_NRT)) { + return false; + } + return true; +} + +/*******************************************************************************/ +ReturnCode st25r3916StreamConfigure( + const struct st25r3916StreamConfig* config) { + uint8_t smd; + uint8_t mode; + + smd = 0; + + if (config->useBPSK != 0U) { + mode = ST25R3916_REG_MODE_om_bpsk_stream; + if ((config->din < 2U) || (config->din > 4U)) /* not in fc/4 .. fc/16 */ + { + return RFAL_ERR_PARAM; + } + smd |= ((4U - config->din) << ST25R3916_REG_STREAM_MODE_scf_shift); + } else { + mode = ST25R3916_REG_MODE_om_subcarrier_stream; + if ((config->din < 3U) || (config->din > 6U)) /* not in fc/8 .. fc/64 */ + { + return RFAL_ERR_PARAM; + } + smd |= ((6U - config->din) << ST25R3916_REG_STREAM_MODE_scf_shift); + if (config->report_period_length == 0U) { + return RFAL_ERR_PARAM; + } + } + + if ((config->dout < 1U) || (config->dout > 7U)) /* not in fc/2 .. fc/128 */ + { + return RFAL_ERR_PARAM; + } + smd |= (7U - config->dout) << ST25R3916_REG_STREAM_MODE_stx_shift; + + if (config->report_period_length > 3U) { + return RFAL_ERR_PARAM; + } + smd |= (config->report_period_length << ST25R3916_REG_STREAM_MODE_scp_shift); + + st25r3916WriteRegister(ST25R3916_REG_STREAM_MODE, smd); + st25r3916ChangeRegisterBits(ST25R3916_REG_MODE, ST25R3916_REG_MODE_om_mask, + mode); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916GetRSSI(uint16_t* amRssi, uint16_t* pmRssi) { + /*******************************************************************************/ + /* MISRA 8.9 An object should be defined at block scope if its identifier only + * appears in a single function */ + /*< ST25R3916 RSSI Display Reg values: 0 1 2 3 4 5 6 7 8 + * 9 a b c d e f */ + static const uint16_t st25r3916Rssi2mV[16] = { + 0, 20, 27, 37, 52, 72, 99, 136, 190, 262, 357, 500, 686, 950, 1150, 1150}; + + /* ST25R3916 2/3 stage gain reduction [dB] 0 0 0 0 0 3 + * 6 9 12 15 18 na na na na na */ + static const uint16_t st25r3916Gain2Percent[16] = { + 100, 100, 100, 100, 100, 141, 200, 281, 398, 562, 794, 1, 1, 1, 1, 1}; + /*******************************************************************************/ + + uint8_t rssi; + uint8_t gainRed; + + st25r3916ReadRegister(ST25R3916_REG_RSSI_RESULT, &rssi); + st25r3916ReadRegister(ST25R3916_REG_GAIN_RED_STATE, &gainRed); + + if (amRssi != NULL) { + *amRssi = + (uint16_t)(((uint32_t)st25r3916Rssi2mV[( + rssi >> ST25R3916_REG_RSSI_RESULT_rssi_am_shift)] * + (uint32_t)st25r3916Gain2Percent[( + gainRed >> ST25R3916_REG_GAIN_RED_STATE_gs_am_shift)]) / + 100U); + } + + if (pmRssi != NULL) { + *pmRssi = + (uint16_t)(((uint32_t)st25r3916Rssi2mV[( + rssi & ST25R3916_REG_RSSI_RESULT_rssi_pm_mask)] * + (uint32_t)st25r3916Gain2Percent[( + gainRed & ST25R3916_REG_GAIN_RED_STATE_gs_pm_mask)]) / + 100U); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916SetAntennaMode(bool single, bool rfiox) { + uint8_t val; + + val = 0U; + val |= ((single) ? ST25R3916_REG_IO_CONF1_single : 0U); + val |= ((rfiox) ? ST25R3916_REG_IO_CONF1_rfo2 : 0U); + + st25r3916ChangeRegisterBits( + ST25R3916_REG_IO_CONF1, + (ST25R3916_REG_IO_CONF1_single | ST25R3916_REG_IO_CONF1_rfo2), val); + return RFAL_ERR_NONE; +} diff --git a/core/embed/io/nfc/rfal/source/st25r3916/st25r3916.h b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916.h new file mode 100644 index 0000000000..474e172348 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916.h @@ -0,0 +1,705 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file + * + * \author Gustavo Patricio + * + * \brief ST25R3916 high level interface + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-HAL + * \brief RFAL Hardware Abstraction Layer + * @{ + * + * \addtogroup ST25R3916 + * \brief RFAL ST25R3916 Driver + * @{ + * + * \addtogroup ST25R3916_Driver + * \brief RFAL ST25R3916 Driver + * @{ + * + */ + +#ifndef ST25R3916_H +#define ST25R3916_H + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include "rfal_platform.h" +#include "rfal_utils.h" +#include "st25r3916_com.h" + +/* +****************************************************************************** +* GLOBAL DATATYPES +****************************************************************************** +*/ + +/*! Struct to represent all regs on ST25R3916 */ +typedef struct { + uint8_t RsA[(ST25R3916_REG_IC_IDENTITY + + 1U)]; /*!< Registers contained on ST25R3916 space A (Rs-A) */ + uint8_t RsB[ST25R3916_SPACE_B_REG_LEN]; /*!< Registers contained on ST25R3916 + space B (Rs-B) */ +} t_st25r3916Regs; + +/*! Parameters how the stream mode should work */ +struct st25r3916StreamConfig { + uint8_t useBPSK; /*!< 0: subcarrier, 1:BPSK */ + uint8_t din; /*!< Divider for the in subcarrier frequency: fc/2^din */ + uint8_t dout; /*!< Divider for the in subcarrier frequency fc/2^dout */ + uint8_t report_period_length; /*!< Length of the reporting period + 2^report_period_length*/ +}; + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ + +/* ST25R3916 direct commands */ +#define ST25R3916_CMD_SET_DEFAULT \ + 0xC1U /*!< Puts the chip in default state (same as after power-up) */ +#define ST25R3916_CMD_STOP \ + 0xC2U /*!< Stops all activities and clears FIFO */ +#define ST25R3916_CMD_TRANSMIT_WITH_CRC \ + 0xC4U /*!< Transmit with CRC */ +#define ST25R3916_CMD_TRANSMIT_WITHOUT_CRC \ + 0xC5U /*!< Transmit without CRC */ +#define ST25R3916_CMD_TRANSMIT_REQA \ + 0xC6U /*!< Transmit REQA */ +#define ST25R3916_CMD_TRANSMIT_WUPA \ + 0xC7U /*!< Transmit WUPA */ +#define ST25R3916_CMD_INITIAL_RF_COLLISION \ + 0xC8U /*!< NFC transmit with Initial RF Collision Avoidance */ +#define ST25R3916_CMD_RESPONSE_RF_COLLISION_N \ + 0xC9U /*!< NFC transmit with Response RF Collision Avoidance */ +#define ST25R3916_CMD_GOTO_SENSE \ + 0xCDU /*!< Passive target logic to Sense/Idle state */ +#define ST25R3916_CMD_GOTO_SLEEP \ + 0xCEU /*!< Passive target logic to Sleep/Halt state */ +#define ST25R3916_CMD_MASK_RECEIVE_DATA \ + 0xD0U /*!< Mask receive data */ +#define ST25R3916_CMD_UNMASK_RECEIVE_DATA \ + 0xD1U /*!< Unmask receive data */ +#define ST25R3916_CMD_AM_MOD_STATE_CHANGE \ + 0xD2U /*!< AM Modulation state change */ +#define ST25R3916_CMD_MEASURE_AMPLITUDE \ + 0xD3U /*!< Measure singal amplitude on RFI inputs */ +#define ST25R3916_CMD_RESET_RXGAIN \ + 0xD5U /*!< Reset RX Gain */ +#define ST25R3916_CMD_ADJUST_REGULATORS \ + 0xD6U /*!< Adjust regulators */ +#define ST25R3916_CMD_CALIBRATE_DRIVER_TIMING \ + 0xD8U /*!< Starts the sequence to adjust the driver timing */ +#define ST25R3916_CMD_MEASURE_PHASE \ + 0xD9U /*!< Measure phase between RFO and RFI signal */ +#define ST25R3916_CMD_CLEAR_RSSI \ + 0xDAU /*!< Clear RSSI bits and restart the measurement */ +#define ST25R3916_CMD_CLEAR_FIFO \ + 0xDBU /*!< Clears FIFO, Collision and IRQ status */ +#define ST25R3916_CMD_TRANSPARENT_MODE \ + 0xDCU /*!< Transparent mode */ +#ifdef ST25R3916 +#define ST25R3916_CMD_CALIBRATE_C_SENSOR \ + 0xDDU /*!< Calibrate the capacitive sensor */ +#define ST25R3916_CMD_MEASURE_CAPACITANCE \ + 0xDEU /*!< Measure capacitance */ +#endif /* ST25R3916 */ +#define ST25R3916_CMD_MEASURE_VDD \ + 0xDFU /*!< Measure power supply voltage */ +#define ST25R3916_CMD_START_GP_TIMER \ + 0xE0U /*!< Start the general purpose timer */ +#define ST25R3916_CMD_START_WUP_TIMER \ + 0xE1U /*!< Start the wake-up timer */ +#define ST25R3916_CMD_START_MASK_RECEIVE_TIMER \ + 0xE2U /*!< Start the mask-receive timer */ +#define ST25R3916_CMD_START_NO_RESPONSE_TIMER \ + 0xE3U /*!< Start the no-response timer */ +#define ST25R3916_CMD_START_PPON2_TIMER \ + 0xE4U /*!< Start PPon2 timer */ +#define ST25R3916_CMD_STOP_NRT \ + 0xE8U /*!< Stop No Response Timer */ +#ifdef ST25R3916B +#define ST25R3916_CMD_RC_CAL \ + 0xEAU /*!< Trigger RC calibration */ +#endif /* ST25R3916B */ +#define ST25R3916_CMD_SPACE_B_ACCESS \ + 0xFBU /*!< Enable R/W access to the space B registers */ +#define ST25R3916_CMD_TEST_ACCESS \ + 0xFCU /*!< Enable R/W access to the test registers */ + +#define ST25R3916_THRESHOLD_DO_NOT_SET \ + 0xFFU /*!< Indicates not to change this Threshold */ + +#define ST25R3916_BR_DO_NOT_SET \ + 0xFFU /*!< Indicates not to change this Bit Rate */ +#define ST25R3916_BR_106 \ + 0x00U /*!< ST25R3916 Bit Rate 106 kbit/s (fc/128) */ +#define ST25R3916_BR_212 \ + 0x01U /*!< ST25R3916 Bit Rate 212 kbit/s (fc/64) */ +#define ST25R3916_BR_424 \ + 0x02U /*!< ST25R3916 Bit Rate 424 kbit/s (fc/32) */ +#define ST25R3916_BR_848 \ + 0x03U /*!< ST25R3916 Bit Rate 848 kbit/s (fc/16) */ +#define ST25R3916_BR_1695 \ + 0x04U /*!< ST25R3916 Bit Rate 1696 kbit/s (fc/8) */ +#define ST25R3916_BR_3390 \ + 0x05U /*!< ST25R3916 Bit Rate 3390 kbit/s (fc/4) */ +#define ST25R3916_BR_6780 \ + 0x07U /*!< ST25R3916 Bit Rate 6780 kbit/s (fc/2) */ + +#define ST25R3916_FIFO_DEPTH \ + 512U /*!< Depth of FIFO */ +#define ST25R3916_TOUT_OSC_STABLE \ + 10U /*!< Max timeout for Oscillator to get stable DS: 700us */ + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ + +/*! Enables the Transmitter (Field On) and Receiver */ +#define st25r3916TxRxOn() \ + st25r3916SetRegisterBits( \ + ST25R3916_REG_OP_CONTROL, \ + (ST25R3916_REG_OP_CONTROL_rx_en | ST25R3916_REG_OP_CONTROL_tx_en)) + +/*! Disables the Transmitter (Field Off) and Receiver */ +#define st25r3916TxRxOff() \ + st25r3916ClrRegisterBits( \ + ST25R3916_REG_OP_CONTROL, \ + (ST25R3916_REG_OP_CONTROL_rx_en | ST25R3916_REG_OP_CONTROL_tx_en)) + +/*! Disables the Transmitter (Field Off) */ +#define st25r3916TxOff() \ + st25r3916ClrRegisterBits(ST25R3916_REG_OP_CONTROL, \ + ST25R3916_REG_OP_CONTROL_tx_en) + +/*! Checks if General Purpose Timer is still running by reading gpt_on flag */ +#define st25r3916IsGPTRunning() \ + st25r3916CheckReg(ST25R3916_REG_NFCIP1_BIT_RATE, \ + ST25R3916_REG_NFCIP1_BIT_RATE_gpt_on, \ + ST25R3916_REG_NFCIP1_BIT_RATE_gpt_on) + +/*! Checks if External Filed is detected by reading ST25R3916 External Field + * Detector output */ +#define st25r3916IsExtFieldOn() \ + st25r3916CheckReg(ST25R3916_REG_AUX_DISPLAY, \ + ST25R3916_REG_AUX_DISPLAY_efd_o, \ + ST25R3916_REG_AUX_DISPLAY_efd_o) + +/*! Checks if Transmitter is enabled (Field On) */ +#define st25r3916IsTxEnabled() \ + st25r3916CheckReg(ST25R3916_REG_OP_CONTROL, ST25R3916_REG_OP_CONTROL_tx_en, \ + ST25R3916_REG_OP_CONTROL_tx_en) + +/*! Checks if NRT is in EMV mode */ +#define st25r3916IsNRTinEMV() \ + st25r3916CheckReg(ST25R3916_REG_TIMER_EMV_CONTROL, \ + ST25R3916_REG_TIMER_EMV_CONTROL_nrt_emv, \ + ST25R3916_REG_TIMER_EMV_CONTROL_nrt_emv_on) + +/*! Checks if last FIFO byte is complete */ +#define st25r3916IsLastFIFOComplete() \ + st25r3916CheckReg(ST25R3916_REG_FIFO_STATUS2, \ + ST25R3916_REG_FIFO_STATUS2_fifo_lb_mask, 0) + +/*! Checks if the Oscillator is enabled */ +#define st25r3916IsOscOn() \ + st25r3916CheckReg(ST25R3916_REG_OP_CONTROL, ST25R3916_REG_OP_CONTROL_en, \ + ST25R3916_REG_OP_CONTROL_en) + +/*! Checks if the AAT is enabled */ +#define st25r3916IsAATOn() \ + st25r3916CheckReg(ST25R3916_REG_IO_CONF2, ST25R3916_REG_IO_CONF2_aat_en, \ + ST25R3916_REG_IO_CONF2_aat_en) + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief Initialise ST25R3916 driver + * + * This function initialises the ST25R3916 driver. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_HW_MISMATCH : Expected HW do not match or communication + *error \return RFAL_ERR_IO : Error during communication selftest. + *Check communication interface \return RFAL_ERR_TIMEOUT : Timeout during + *IRQ selftest. Check IRQ handling \return RFAL_ERR_SYSTEM : Failure + *during oscillator activation or timer error + * + ***************************************************************************** + */ +ReturnCode st25r3916Initialize(void); + +/*! + ***************************************************************************** + * \brief Deinitialize ST25R3916 driver + * + * Calling this function deinitializes the ST25R3916 driver. + * + ***************************************************************************** + */ +void st25r3916Deinitialize(void); + +/*! + ***************************************************************************** + * \brief Turn on Oscillator and Regulator + * + * This function turn on oscillator and regulator and waits for the + * oscillator to become stable + * + * \return RFAL_ERR_SYSTEM : Failure dusring Oscillator activation + * \return RFAL_ERR_NONE : No error, Oscillator is active and stable, + *Regulator is on + * + ***************************************************************************** + */ +ReturnCode st25r3916OscOn(void); + +/*! + ***************************************************************************** + * \brief Sets the bitrate + * + * This function sets the bitrates for rx and tx + * + * \param txrate : speed is 2^txrate * 106 kb/s + * 0xff : don't set txrate (ST25R3916_BR_DO_NOT_SET) + * \param rxrate : speed is 2^rxrate * 106 kb/s + * 0xff : don't set rxrate (ST25R3916_BR_DO_NOT_SET) + * + * \return RFAL_ERR_PARAM: At least one bit rate was invalid + * \return RFAL_ERR_NONE : No error, both bit rates were set + * + ***************************************************************************** + */ +ReturnCode st25r3916SetBitrate(uint8_t txrate, uint8_t rxrate); + +/*! + ***************************************************************************** + * \brief Adjusts supply regulators according to the current supply voltage + * + * This function the power level is measured in maximum load conditions and + * the regulated voltage reference is set to 250mV below this level. + * Execution of this function lasts arround 5ms. + * + * The regulated voltages will be set to the result of Adjust Regulators + * + * \param [out] result_mV : Result of calibration in milliVolts + * + * \return RFAL_ERR_IO : Error during communication with ST25R3916 + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode st25r3916AdjustRegulators(uint16_t* result_mV); + +/*! + ***************************************************************************** + * \brief Measure Amplitude + * + * This function measures the amplitude on the RFI inputs and stores the + * result in parameter \a result. + * + * \param[out] result: result of RF measurement. + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode st25r3916MeasureAmplitude(uint8_t* result); + +/*! + ***************************************************************************** + * \brief Measure Power Supply + * + * This function executes Measure Power Supply and returns the raw value + * + * \param[in] mpsv : one of ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd + * ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_rf + * ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_a + * ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_d + * ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_am + * + * \return the measured voltage in raw format. + * + ***************************************************************************** + */ +uint8_t st25r3916MeasurePowerSupply(uint8_t mpsv); + +/*! + ***************************************************************************** + * \brief Measure Voltage + * + * This function measures the voltage on one of VDD and VDD_* and returns + * the result in mV + * + * \param[in] mpsv : one of ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd + * ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_rf + * ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_a + * ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_d + * or ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_am + * + * \return the measured voltage in mV + * + ***************************************************************************** + */ +uint16_t st25r3916MeasureVoltage(uint8_t mpsv); + +/*! + ***************************************************************************** + * \brief Measure Phase + * + * This function performs a Phase measurement. + * The result is stored in the \a result parameter. + * + * \param[out] result: 8 bit long result of the measurement. + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode st25r3916MeasurePhase(uint8_t* result); + +/*! + ***************************************************************************** + * \brief Measure Capacitance + * + * This function performs the capacitance measurement and stores the + * result in parameter \a result. + * + * \param[out] result: 8 bit long result of RF measurement. + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode st25r3916MeasureCapacitance(uint8_t* result); + +/*! + ***************************************************************************** + * \brief Calibrates Capacitive Sensor + * + * This function performs automatic calibration of the capacitive sensor + * and stores the result in parameter \a result. + * + * \warning To avoid interference with Xtal oscillator and reader magnetic + * field, it is strongly recommended to perform calibration + * in Power-down mode only. + * This method does not modify the Oscillator nor transmitter state, + * these should be configured before by user. + * + * \param[out] result: 5 bit long result of the calibration. + * Binary weighted, step 0.1 pF, max 3.1 pF + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_IO : The calibration was not successful + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode st25r3916CalibrateCapacitiveSensor(uint8_t* result); + +/*! + ***************************************************************************** + * \brief Get NRT time + * + * This returns the last value set on the NRT + * + * \warning it does not read chip register, just the sw var that contains the + * last value set before + * + * \return the value of the NRT in 64/fc + */ +uint32_t st25r3916GetNoResponseTime(void); + +/*! + ***************************************************************************** + * \brief Set NRT time + * + * This function sets the No Response Time with the given value + * + * \param [in] nrt_64fcs : no response time in steps of 64/fc (4.72us) + * + * \return RFAL_ERR_PARAM : Invalid parameter (time is too large) + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode st25r3916SetNoResponseTime(uint32_t nrt_64fcs); + +/*! + ***************************************************************************** + * \brief Set and Start NRT + * + * This function sets the No Response Time with the given value and + * immediately starts it + * Used when needs to add more time before timeout without performing Tx + * + * \param [in] nrt_64fcs : no response time in steps of 64/fc (4.72us) + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode st25r3916SetStartNoResponseTimer(uint32_t nrt_64fcs); + +/*! + ***************************************************************************** + * \brief Set GPT time + * + * This function sets the General Purpose Timer time registers + * + * \param [in] gpt_8fcs : general purpose timer timeout in steps of 8/fc + *(590ns) + * + ***************************************************************************** + */ +void st25r3916SetGPTime(uint16_t gpt_8fcs); + +/*! + ***************************************************************************** + * \brief Set and Start GPT + * + * This function sets the General Purpose Timer with the given timeout and + * immediately starts it ONLY if the trigger source is not set to none. + * + * \param [in] gpt_8fcs : general purpose timer timeout in steps of8/fc + *(590ns) \param [in] trigger_source : no trigger, start of Rx, end of Rx, end + *of Tx in NFC mode + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode st25r3916SetStartGPTimer(uint16_t gpt_8fcs, uint8_t trigger_source); + +/*! + ***************************************************************************** + * \brief Sets the number Tx Bits + * + * Sets ST25R3916 internal registers with correct number of complete bytes and + * bits to be sent + * + * \param [in] nBits : number of bits to be set/transmitted + * + ***************************************************************************** + */ +void st25r3916SetNumTxBits(uint16_t nBits); + +/*! + ***************************************************************************** + * \brief Get amount of bytes in FIFO + * + * Gets the number of bytes currently in the FIFO + * + * \return the number of bytes currently in the FIFO + * + ***************************************************************************** + */ +uint16_t st25r3916GetNumFIFOBytes(void); + +/*! + ***************************************************************************** + * \brief Get amount of bits of the last FIFO byte if incomplete + * + * Gets the number of bits of the last FIFO byte if incomplete + * + * \return the number of bits of the last FIFO byte if incomplete, 0 if + * the last byte is complete + * + ***************************************************************************** + */ +uint8_t st25r3916GetNumFIFOLastBits(void); + +/*! + ***************************************************************************** + * \brief Perform Collision Avoidance + * + * Performs Collision Avoidance with the given threshold and with the + * n number of TRFW + * + * \param[in] FieldONCmd : Field ON command to be executed + *ST25R3916_CMD_INITIAL_RF_COLLISION or ST25R3916_CMD_RESPONSE_RF_COLLISION_N + * \param[in] pdThreshold : Peer Detection Threshold + *(ST25R3916_REG_FIELD_THRESHOLD_trg_xx) 0xff : don't set Threshold + *(ST25R3916_THRESHOLD_DO_NOT_SET) \param[in] caThreshold : Collision Avoidance + *Threshold (ST25R3916_REG_FIELD_THRESHOLD_rfe_xx) 0xff : don't set Threshold + *(ST25R3916_THRESHOLD_DO_NOT_SET) \param[in] nTRFW : Number of TRFW + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_RF_COLLISION : Collision detected + * \return RFAL_ERR_NONE : No collision detected + * + ***************************************************************************** + */ +ReturnCode st25r3916PerformCollisionAvoidance(uint8_t FieldONCmd, + uint8_t pdThreshold, + uint8_t caThreshold, + uint8_t nTRFW); + +/*! + ***************************************************************************** + * \brief Check Identity + * + * Checks if the chip ID is as expected. + * + * 5 bit IC type code for ST25R3916: 00101 + * The 3 lsb contain the IC revision code + * + * \param[out] rev : the IC revision code + * + * \return true when IC type is as expected + * \return false otherwise + */ +bool st25r3916CheckChipID(uint8_t* rev); + +/*! + ***************************************************************************** + * \brief Retrieves all internal registers from ST25R3916 + * + * \param[out] regDump : pointer to the struct/buffer where the reg dump + * will be written + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode st25r3916GetRegsDump(t_st25r3916Regs* regDump); + +/*! + ***************************************************************************** + * \brief Check if command is valid + * + * Checks if the given command is a valid ST25R3916 command + * + * \param[in] cmd: Command to check + * + * \return true if is a valid command + * \return false otherwise + * + ***************************************************************************** + */ +bool st25r3916IsCmdValid(uint8_t cmd); + +/*! + ***************************************************************************** + * \brief Configure the stream mode of ST25R3916 + * + * This function initializes the stream with the given parameters + * + * \param[in] config : all settings for bitrates, type, etc. + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error, stream mode driver initialized + * + ***************************************************************************** + */ +ReturnCode st25r3916StreamConfigure(const struct st25r3916StreamConfig* config); + +/*! + ***************************************************************************** + * \brief Executes a direct command and returns the result + * + * This function executes the direct command given by \a cmd waits for + * \a sleeptime for I_dct and returns the result read from register \a resreg. + * The value of cmd is not checked. + * + * \param[in] cmd : direct command to execute + * \param[in] resReg: address of the register containing the result + * \param[in] tOut : time in milliseconds to wait before reading the result + * \param[out] result: result + * + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode st25r3916ExecuteCommandAndGetResult(uint8_t cmd, uint8_t resReg, + uint8_t tOut, uint8_t* result); + +/*! + ***************************************************************************** + * \brief Gets the RSSI values + * + * This function gets the RSSI value of the previous reception taking into + * account the gain reductions that were used. + * RSSI value for both AM and PM channel can be retrieved. + * + * \param[out] amRssi: the RSSI on the AM channel expressed in mV + * \param[out] pmRssi: the RSSI on the PM channel expressed in mV + * + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_NONE : No error + * + ***************************************************************************** + */ +ReturnCode st25r3916GetRSSI(uint16_t* amRssi, uint16_t* pmRssi); + +/*! + ***************************************************************************** + * \brief Set Antenna mode + * + * Sets the antenna mode. + * Differential or single ended antenna mode (RFO1 or RFO2) + * + * \param[in] single: FALSE differential ; single ended mode + * \param[in] rfiox: FALSE RFI1/RFO1 ; TRUE RFI2/RFO2 + * + * \return RFAL_ERR_IO : Internal error + * \return RFAL_ERR_NOTSUPP : Feature not supported + * \return RFAL_ERR_NONE : No error + ***************************************************************************** + */ +ReturnCode st25r3916SetAntennaMode(bool single, bool rfiox); + +#endif /* ST25R3916_H */ + +/** + * @} + * + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_aat.c b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_aat.c new file mode 100644 index 0000000000..e60faf37fe --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_aat.c @@ -0,0 +1,351 @@ +/****************************************************************************** + * @attention + * + * COPYRIGHT 2019 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file st25r3916_aat.c + * + * \author + * + * \brief ST25R3916 Antenna Tuning + * + * The antenna tuning algorithm tries to find the optimal settings for + * the AAT_A and AAT_B registers, which are connected to variable capacitors + * to tune the antenna matching. + * + */ + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include "st25r3916_aat.h" +#include "rfal_chip.h" +#include "rfal_platform.h" +#include "rfal_utils.h" +#include "st25r3916.h" +#include "st25r3916_com.h" + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ +#define ST25R3916_AAT_CAP_DELAY_MAX \ + 10 /*!< Max Variable Capacitor settle delay */ + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ +#define st25r3916AatLog( \ + ...) /* platformLog(__VA_ARGS__) */ /*!< Logging macro */ + +/* +****************************************************************************** +* LOCAL FUNCTION PROTOTYPES +****************************************************************************** +*/ +static ReturnCode aatHillClimb( + const struct st25r3916AatTuneParams *tuningParams, + struct st25r3916AatTuneResult *tuningStatus); +static int32_t aatGreedyDescent( + uint32_t *f_min, const struct st25r3916AatTuneParams *tuningParams, + struct st25r3916AatTuneResult *tuningStatus, int32_t previousDir); +static int32_t aatSteepestDescent( + uint32_t *f_min, const struct st25r3916AatTuneParams *tuningParams, + struct st25r3916AatTuneResult *tuningStatus, int32_t previousDir, + int32_t previousDir2); + +static ReturnCode aatMeasure(uint8_t serCap, uint8_t parCap, uint8_t *amplitude, + uint8_t *phase, uint16_t *measureCnt); +static uint32_t aatCalcF(const struct st25r3916AatTuneParams *tuningParams, + uint8_t amplitude, uint8_t phase); +static ReturnCode aatStepDacVals( + const struct st25r3916AatTuneParams *tuningParams, uint8_t *a, uint8_t *b, + int32_t dir); + +/*******************************************************************************/ +ReturnCode st25r3916AatTune(const struct st25r3916AatTuneParams *tuningParams, + struct st25r3916AatTuneResult *tuningStatus) { + ReturnCode err; + const struct st25r3916AatTuneParams *tp = tuningParams; + struct st25r3916AatTuneResult *ts = tuningStatus; + struct st25r3916AatTuneParams defaultTuningParams = { + .aat_a_min = 0, + .aat_a_max = 255, + .aat_a_start = 127, + .aat_a_stepWidth = 32, + .aat_b_min = 0, + .aat_b_max = 255, + .aat_b_start = 127, + .aat_b_stepWidth = 32, + + .phaTarget = 128, + .phaWeight = 2, + .ampTarget = 196, + .ampWeight = 1, + + .doDynamicSteps = true, + .measureLimit = 50, + }; + struct st25r3916AatTuneResult defaultTuneResult; + + if ((NULL != tp) && + ((tp->aat_a_min > tp->aat_a_max) || (tp->aat_a_start < tp->aat_a_min) || + (tp->aat_a_start > tp->aat_a_max) || (tp->aat_b_min > tp->aat_b_max) || + (tp->aat_b_start < tp->aat_b_min) || + (tp->aat_b_start > tp->aat_b_max))) { + return RFAL_ERR_PARAM; + } + + if (NULL == tp) { /* Start from current caps with default params */ + st25r3916ReadRegister(ST25R3916_REG_ANT_TUNE_A, + &defaultTuningParams.aat_a_start); + st25r3916ReadRegister(ST25R3916_REG_ANT_TUNE_B, + &defaultTuningParams.aat_b_start); + tp = &defaultTuningParams; + } + + if (NULL == ts) { + ts = &defaultTuneResult; + } + + ts->measureCnt = 0; /* Clear current measure count */ + + err = aatHillClimb(tp, ts); + + return err; +} + +/*******************************************************************************/ +static ReturnCode aatHillClimb( + const struct st25r3916AatTuneParams *tuningParams, + struct st25r3916AatTuneResult *tuningStatus) { + ReturnCode err = RFAL_ERR_NONE; + uint32_t f_min; + int32_t direction, gdirection; + uint8_t amp, phs; + struct st25r3916AatTuneParams tp = *tuningParams; // local copy to obey const + + tuningStatus->aat_a = tuningParams->aat_a_start; + tuningStatus->aat_b = tuningParams->aat_b_start; + + /* Get a proper start value */ + aatMeasure(tuningStatus->aat_a, tuningStatus->aat_b, &, &phs, + &tuningStatus->measureCnt); + f_min = aatCalcF(&tp, amp, phs); + direction = 0; + + st25r3916AatLog("%d %d: %d***\n", tuningStatus->aat_a, tuningStatus->aat_b, + f_min); + + do { + direction = 0; /* Initially and after reducing step sizes we don't have a + previous direction */ + do { + /* With the greedy step below always executed aftwards the -direction does + * never need to be investigated */ + direction = + aatSteepestDescent(&f_min, &tp, tuningStatus, direction, -direction); + if (tuningStatus->measureCnt > tp.measureLimit) { + err = RFAL_ERR_OVERRUN; + break; + } + do { + gdirection = aatGreedyDescent(&f_min, &tp, tuningStatus, direction); + if (tuningStatus->measureCnt > tp.measureLimit) { + err = RFAL_ERR_OVERRUN; + break; + } + } while (0 != gdirection); + } while (0 != direction); + tp.aat_a_stepWidth /= 2U; /* Reduce step sizes */ + tp.aat_b_stepWidth /= 2U; + } while ((tp.doDynamicSteps) && + ((tp.aat_a_stepWidth > 0U) || (tp.aat_b_stepWidth > 0U))); + + return err; +} + +/*******************************************************************************/ +static int32_t aatSteepestDescent( + uint32_t *f_min, const struct st25r3916AatTuneParams *tuningParams, + struct st25r3916AatTuneResult *tuningStatus, int32_t previousDir, + int32_t previousDir2) { + int32_t i; + uint8_t amp, phs; + uint32_t f; + int32_t bestdir = 0; /* Negative direction: decrease, Positive: increase. + (-)1: aat_a, (-)2: aat_b */ + + for (i = -2; i <= 2; i++) { + uint8_t a = tuningStatus->aat_a, b = tuningStatus->aat_b; + + if ((0 == i) || (i == -previousDir) || + (i == + -previousDir2)) { /* Skip no direction and avoid going backwards */ + continue; + } + if (0U != aatStepDacVals(tuningParams, &a, &b, + i)) { /* If stepping did not change the value, omit + this direction */ + continue; + } + + aatMeasure(a, b, &, &phs, &tuningStatus->measureCnt); + f = aatCalcF(tuningParams, amp, phs); + st25r3916AatLog("%d : %d %d: %d", i, a, b, f); + if (f < *f_min) { /* Value is better than all previous ones */ + st25r3916AatLog("*"); + *f_min = f; + bestdir = i; + } + st25r3916AatLog("\n"); + } + if (0 != bestdir) { /* Walk into the best direction */ + aatStepDacVals(tuningParams, &tuningStatus->aat_a, &tuningStatus->aat_b, + bestdir); + } + return bestdir; +} + +/*******************************************************************************/ +static int32_t aatGreedyDescent( + uint32_t *f_min, const struct st25r3916AatTuneParams *tuningParams, + struct st25r3916AatTuneResult *tuningStatus, int32_t previousDir) { + uint8_t amp, phs; + uint32_t f; + uint8_t a = tuningStatus->aat_a, b = tuningStatus->aat_b; + + if (0U != aatStepDacVals(tuningParams, &a, &b, + previousDir)) { /* If stepping did not change the + value, omit this direction */ + return 0; + } + + aatMeasure(a, b, &, &phs, &tuningStatus->measureCnt); + f = aatCalcF(tuningParams, amp, phs); + st25r3916AatLog("g : %d %d: %d", a, b, f); + if (f < *f_min) { /* Value is better than previous one */ + st25r3916AatLog("*\n"); + tuningStatus->aat_a = a; + tuningStatus->aat_b = b; + *f_min = f; + return previousDir; + } + + st25r3916AatLog("\n"); + return 0; +} + +/*******************************************************************************/ +static uint32_t aatCalcF(const struct st25r3916AatTuneParams *tuningParams, + uint8_t amplitude, uint8_t phase) { + /* f(amp, pha) = (ampWeight * |amp - ampTarget|) + (phaWeight * |pha - + * phaTarget|) */ + uint8_t ampTarget = tuningParams->ampTarget; + uint8_t phaTarget = tuningParams->phaTarget; + + uint32_t ampWeight = tuningParams->ampWeight; + uint32_t phaWeight = tuningParams->phaWeight; + + /* Temp variables to avoid MISRA R10.8 (cast on composite expression) */ + uint8_t ad = ((amplitude > ampTarget) ? (amplitude - ampTarget) + : (ampTarget - amplitude)); + uint8_t pd = + ((phase > phaTarget) ? (phase - phaTarget) : (phaTarget - phase)); + + uint32_t ampDelta = (uint32_t)ad; + uint32_t phaDelta = (uint32_t)pd; + + return ((ampWeight * ampDelta) + (phaWeight * phaDelta)); +} + +/*******************************************************************************/ +static ReturnCode aatStepDacVals( + const struct st25r3916AatTuneParams *tuningParams, uint8_t *a, uint8_t *b, + int32_t dir) { + int16_t aat_a = (int16_t)*a, aat_b = (int16_t)*b; + + switch (abs(dir)) { /* Advance by steps size in requested direction */ + case 1: + aat_a = (dir < 0) ? (aat_a - (int16_t)tuningParams->aat_a_stepWidth) + : (aat_a + (int16_t)tuningParams->aat_a_stepWidth); + if (aat_a < (int16_t)tuningParams->aat_a_min) { + aat_a = (int16_t)tuningParams->aat_a_min; + } + if (aat_a > (int16_t)tuningParams->aat_a_max) { + aat_a = (int16_t)tuningParams->aat_a_max; + } + if ((int16_t)*a == aat_a) { + return RFAL_ERR_PARAM; + } + break; + case 2: + aat_b = (dir < 0) ? (aat_b - (int16_t)tuningParams->aat_b_stepWidth) + : (aat_b + (int16_t)tuningParams->aat_b_stepWidth); + if (aat_b < (int16_t)tuningParams->aat_b_min) { + aat_b = (int16_t)tuningParams->aat_b_min; + } + if (aat_b > (int16_t)tuningParams->aat_b_max) { + aat_b = (int16_t)tuningParams->aat_b_max; + } + if ((int16_t)*b == aat_b) { + return RFAL_ERR_PARAM; + } + break; + default: + return RFAL_ERR_REQUEST; + } + /* We only get here if actual values have changed. In all other cases an error + * is returned */ + *a = (uint8_t)aat_a; + *b = (uint8_t)aat_b; + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +static ReturnCode aatMeasure(uint8_t serCap, uint8_t parCap, uint8_t *amplitude, + uint8_t *phase, uint16_t *measureCnt) { + ReturnCode err; + + *amplitude = 0; + *phase = 0; + + st25r3916WriteRegister(ST25R3916_REG_ANT_TUNE_A, serCap); + st25r3916WriteRegister(ST25R3916_REG_ANT_TUNE_B, parCap); + + /* Wait till caps have settled.. */ + platformDelay(ST25R3916_AAT_CAP_DELAY_MAX); + + /* Get amplitude and phase .. */ + err = rfalChipMeasureAmplitude(amplitude); + if (RFAL_ERR_NONE == err) { + err = rfalChipMeasurePhase(phase); + } + + if (measureCnt != NULL) { + (*measureCnt)++; + } + return err; +} diff --git a/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_aat.h b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_aat.h new file mode 100644 index 0000000000..7454ed74df --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_aat.h @@ -0,0 +1,106 @@ +/****************************************************************************** + * @attention + * + * COPYRIGHT 2019 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file st25r3916_aat.h + * + * \author + * + * \brief ST25R3916 Antenna Tuning + * + * The antenna tuning algorithm tries to find the optimal settings for + * the AAT_A and AAT_B registers, which are connected to variable capacitors + * to tune the antenna matching. + * + */ + +#ifndef ST25R3916_AAT_H +#define ST25R3916_AAT_H + +#include "rfal_platform.h" +#include "rfal_utils.h" + +/* +****************************************************************************** +* GLOBAL DATATYPES +****************************************************************************** +*/ + +/*! + * struct representing input parameters for the antenna tuning + */ +struct st25r3916AatTuneParams { + uint8_t aat_a_min; /*!< min value of A cap */ + uint8_t aat_a_max; /*!< max value of A cap */ + uint8_t aat_a_start; /*!< start value of A cap */ + uint8_t aat_a_stepWidth; /*!< increment stepWidth for A cap */ + uint8_t aat_b_min; /*!< min value of B cap */ + uint8_t aat_b_max; /*!< max value of B cap */ + uint8_t aat_b_start; /*!< start value of B cap */ + uint8_t aat_b_stepWidth; /*!< increment stepWidth for B cap */ + + uint8_t phaTarget; /*!< target phase */ + uint8_t phaWeight; /*!< weight of target phase */ + uint8_t ampTarget; /*!< target amplitude */ + uint8_t ampWeight; /*!< weight of target amplitude */ + + bool doDynamicSteps; /*!< dynamically reduce step size in algo */ + uint8_t measureLimit; /*!< max number of allowed steps/measurements */ +}; + +/*! + * struct representing out parameters for the antenna tuning + */ +struct st25r3916AatTuneResult { + uint8_t aat_a; /*!< serial cap after tuning */ + uint8_t aat_b; /*!< parallel cap after tuning */ + uint8_t pha; /*!< phase after tuning */ + uint8_t amp; /*!< amplitude after tuning */ + uint16_t measureCnt; /*!< number of measures performed */ +}; + +/*! + ***************************************************************************** + * \brief Perform antenna tuning + * + * This function starts an antenna tuning procedure by modifying the serial + * and parallel capacitors of the antenna matching circuit via the AAT_A + * and AAT_B registers. + * This function is best run if the field is already turned on. + * When used on ST25R3916B with new rgs_am=1 it is necessary to turn on the + * field before running this procedure or to set rgs_txonoff=0. + * + * \param[in] tuningParams : Input parameters for the tuning algorithm. If NULL + * default values will be used. + * \param[out] tuningStatus : Result information of performed tuning. If NULL + * no further information is returned, only + *registers ST25R3916 (AAT_A,B) will be adapted. + * + * \return RFAL_ERR_IO : Error during communication. + * \return RFAL_ERR_PARAM : Invalid input parameters + * \return RFAL_ERR_NONE : No error. + * + ***************************************************************************** + */ +extern ReturnCode st25r3916AatTune( + const struct st25r3916AatTuneParams *tuningParams, + struct st25r3916AatTuneResult *tuningStatus); + +#endif /* ST25R3916_AAT_H */ diff --git a/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_com.c b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_com.c new file mode 100644 index 0000000000..0fa7742a5b --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_com.c @@ -0,0 +1,643 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file + * + * \author Gustavo Patricio + * + * \brief Implementation of ST25R3916 communication + * + */ + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ + +#include "st25r3916_com.h" +#include "rfal_platform.h" +#include "rfal_utils.h" +#include "st25r3916.h" +#include "st25r3916_led.h" + +/* +****************************************************************************** +* LOCAL DEFINES +****************************************************************************** +*/ + +#define ST25R3916_OPTIMIZE \ + true /*!< Optimization switch: false always write value to register */ +#define ST25R3916_I2C_ADDR \ + (0xA0U >> 1) /*!< ST25R3916's default I2C address \ + */ +#define ST25R3916_REG_LEN \ + 1U /*!< Byte length of a ST25R3916 register */ +#define ST25R3916_MOSI_IDLE (0x00) /*!< ST25R3916 MOSI IDLE state */ + +#define ST25R3916_WRITE_MODE (0U << 6) /*!< ST25R3916 Operation Mode: Write */ +#define ST25R3916_READ_MODE (1U << 6) /*!< ST25R3916 Operation Mode: Read */ +#define ST25R3916_CMD_MODE \ + (3U << 6) /*!< ST25R3916 Operation Mode: Direct Command */ +#define ST25R3916_FIFO_LOAD \ + (0x80U) /*!< ST25R3916 Operation Mode: FIFO Load \ + */ +#define ST25R3916_FIFO_READ \ + (0x9FU) /*!< ST25R3916 Operation Mode: FIFO Read \ + */ +#define ST25R3916_PT_A_CONFIG_LOAD \ + (0xA0U) /*!< ST25R3916 Operation Mode: Passive Target Memory A-Config Load \ + */ +#define ST25R3916_PT_F_CONFIG_LOAD \ + (0xA8U) /*!< ST25R3916 Operation Mode: Passive Target Memory F-Config Load \ + */ +#define ST25R3916_PT_TSN_DATA_LOAD \ + (0xACU) /*!< ST25R3916 Operation Mode: Passive Target Memory TSN Load */ +#define ST25R3916_PT_MEM_READ \ + (0xBFU) /*!< ST25R3916 Operation Mode: Passive Target Memory Read */ + +#define ST25R3916_CMD_LEN \ + (1U) /*!< ST25R3916 CMD length */ +#define ST25R3916_BUF_LEN \ + (ST25R3916_CMD_LEN + ST25R3916_FIFO_DEPTH) /*!< ST25R3916 communication \ + buffer: CMD + FIFO length */ + +/* +****************************************************************************** +* MACROS +****************************************************************************** +*/ +#ifdef RFAL_USE_I2C +#define st25r3916I2CStart() \ + platformI2CStart() /*!< ST25R3916 HAL I2C driver macro to start a I2C \ + transfer */ +#define st25r3916I2CStop() \ + platformI2CStop() /*!< ST25R3916 HAL I2C driver macro to stop a I2C transfer \ + */ +#define st25r3916I2CRepeatStart() \ + platformI2CRepeatStart() /*!< ST25R3916 HAL I2C driver macro to repeat Start \ + */ +#define st25r3916I2CSlaveAddrWR(sA) \ + platformI2CSlaveAddrWR( \ + sA) /*!< ST25R3916 HAL I2C driver macro to repeat Start */ +#define st25r3916I2CSlaveAddrRD(sA) \ + platformI2CSlaveAddrRD( \ + sA) /*!< ST25R3916 HAL I2C driver macro to repeat Start */ +#endif /* RFAL_USE_I2C */ + +#if defined(ST25R_COM_SINGLETXRX) && !defined(RFAL_USE_I2C) +static uint8_t comBuf[ST25R3916_BUF_LEN]; /*!< ST25R3916 communication buffer */ +static uint16_t comBufIt; /*!< ST25R3916 communication buffer iterator */ +#endif /* ST25R_COM_SINGLETXRX */ + +/* + ****************************************************************************** + * LOCAL FUNCTION PROTOTYPES + ****************************************************************************** + */ + +/*! + ****************************************************************************** + * \brief ST25R3916 communication Start + * + * This method performs the required actions to start communications with + * ST25R3916, either by SPI or I2C + ****************************************************************************** + */ +static void st25r3916comStart(void); + +/*! + ****************************************************************************** + * \brief ST25R3916 communication Stop + * + * This method performs the required actions to terminate communications with + * ST25R3916, either by SPI or I2C + ****************************************************************************** + */ +static void st25r3916comStop(void); + +/*! + ****************************************************************************** + * \brief ST25R3916 communication Repeat Start + * + * This method performs the required actions to repeat start a transmission + * with ST25R3916, either by SPI or I2C + ****************************************************************************** + */ +#ifdef RFAL_USE_I2C +static void st25r3916comRepeatStart(void); +#else +#define st25r3916comRepeatStart() +#endif /* RFAL_USE_I2C */ + +/*! + ****************************************************************************** + * \brief ST25R3916 communication Tx + * + * This method performs the required actions to transmit the given buffer + * to ST25R3916, either by SPI or I2C + * + * \param[in] txBuf : the buffer to transmit + * \param[in] txLen : the length of the buffer to transmit + * \param[in] last : true if last data to be transmitted + * \param[in] txOnly : true no reception is to be performed + * + ****************************************************************************** + */ +static void st25r3916comTx(const uint8_t* txBuf, uint16_t txLen, bool last, + bool txOnly); + +/*! + ****************************************************************************** + * \brief ST25R3916 communication Rx + * + * This method performs the required actions to receive from ST25R3916 the given + * amount of bytes, either by SPI or I2C + * + * \param[out] rxBuf : the buffer place the received bytes + * \param[in] rxLen : the length to receive + * + ****************************************************************************** + */ +static void st25r3916comRx(uint8_t* rxBuf, uint16_t rxLen); + +/*! + ****************************************************************************** + * \brief ST25R3916 communication Tx Byte + * + * This helper method transmits a byte passed by value and not by reference + * + * \param[in] txByte : the value of the byte to be transmitted + * \param[in] last : true if last byte to be transmitted + * \param[in] txOnly : true no reception is to be performed + * + ****************************************************************************** + */ +static void st25r3916comTxByte(uint8_t txByte, bool last, bool txOnly); + +/* + ****************************************************************************** + * LOCAL FUNCTION + ****************************************************************************** + */ +static void st25r3916comStart(void) { + /* Make this operation atomic, disabling ST25R3916 interrupt during + * communications*/ + platformProtectST25RComm(); + +#ifdef RFAL_USE_I2C + /* I2C Start and send Slave Address */ + st25r3916I2CStart(); + st25r3916I2CSlaveAddrWR(ST25R3916_I2C_ADDR); +#else + /* Perform the chip select */ + platformSpiSelect(); + +#if defined(ST25R_COM_SINGLETXRX) + comBufIt = 0; /* reset local buffer position */ +#endif /* ST25R_COM_SINGLETXRX */ + +#endif /* RFAL_USE_I2C */ +} + +/*******************************************************************************/ +static void st25r3916comStop(void) { +#ifdef RFAL_USE_I2C + /* Generate Stop signal */ + st25r3916I2CStop(); +#else + /* Release the chip select */ + platformSpiDeselect(); +#endif /* RFAL_USE_I2C */ + + /* reEnable the ST25R3916 interrupt */ + platformUnprotectST25RComm(); +} + +/*******************************************************************************/ +#ifdef RFAL_USE_I2C +static void st25r3916comRepeatStart(void) { + st25r3916I2CRepeatStart(); + st25r3916I2CSlaveAddrRD(ST25R3916_I2C_ADDR); +} +#endif /* RFAL_USE_I2C */ + +/*******************************************************************************/ +static void st25r3916comTx(const uint8_t* txBuf, uint16_t txLen, bool last, + bool txOnly) { + RFAL_NO_WARNING(last); + RFAL_NO_WARNING(txOnly); + + if (txLen > 0U) { +#ifdef RFAL_USE_I2C + platformI2CTx(txBuf, txLen, last, txOnly); +#else /* RFAL_USE_I2C */ + +#ifdef ST25R_COM_SINGLETXRX + + RFAL_MEMCPY( + &comBuf[comBufIt], txBuf, + RFAL_MIN(txLen, + (uint16_t)(ST25R3916_BUF_LEN - + comBufIt))); /* copy tx data to local buffer */ + comBufIt += RFAL_MIN( + txLen, + (ST25R3916_BUF_LEN - comBufIt)); /* store position on local buffer */ + + if (last && txOnly) /* only perform SPI transaction if no Rx will follow */ + { + platformSpiTxRx(comBuf, NULL, comBufIt); + } + +#else + platformSpiTxRx(txBuf, NULL, txLen); +#endif /* ST25R_COM_SINGLETXRX */ + +#endif /* RFAL_USE_I2C */ + } +} + +/*******************************************************************************/ +static void st25r3916comRx(uint8_t* rxBuf, uint16_t rxLen) { +#ifndef ST25R_COM_SINGLETXRX + uint8_t dummyBuf; + uint16_t rxIt; +#endif /* ST25R_COM_SINGLETXRX */ + + if (rxLen > 0U) { +#ifdef RFAL_USE_I2C + platformI2CRx(rxBuf, rxLen); +#else /* RFAL_USE_I2C */ + +#ifdef ST25R_COM_SINGLETXRX + RFAL_MEMSET( + &comBuf[comBufIt], ST25R3916_MOSI_IDLE, + RFAL_MIN(rxLen, (uint16_t)(ST25R3916_BUF_LEN - + comBufIt))); /* Clear outgoing buffer */ + platformSpiTxRx( + comBuf, comBuf, + RFAL_MIN((comBufIt + rxLen), + ST25R3916_BUF_LEN)); /* Transceive as a single SPI call */ + if (rxBuf != NULL) { + RFAL_MEMCPY( + rxBuf, &comBuf[comBufIt], + RFAL_MIN(rxLen, + (uint16_t)(ST25R3916_BUF_LEN - + comBufIt))); /* Copy from local buf to output + buffer and skip cmd byte */ + } +#else + + /* In case rxBuf is not provided, ensure that SPI operation is executed. * + * Depending on the HAL used, the SPI driver may not support * + * NULL as Rx buffer, do single byte SPI transactions to a dummy buffer */ + if (rxBuf == NULL) { + for (rxIt = 0; (rxIt < rxLen); rxIt++) { + dummyBuf = ST25R3916_MOSI_IDLE; /* Clear outgoing|incoming buffer */ + platformSpiTxRx( + &dummyBuf, &dummyBuf, + 1U); /* Re-use the buffer as SPI outputs data first then reads */ + } + } else { + RFAL_MEMSET(rxBuf, ST25R3916_MOSI_IDLE, + rxLen); /* Clear outgoing|incoming buffer */ + platformSpiTxRx( + rxBuf, rxBuf, + rxLen); /* Re-use the rxBuf as SPI outputs data first then reads */ + } + +#endif /* ST25R_COM_SINGLETXRX */ +#endif /* RFAL_USE_I2C */ + } +} + +/*******************************************************************************/ +static void st25r3916comTxByte(uint8_t txByte, bool last, bool txOnly) { + uint8_t val = txByte; /* MISRA 17.8: use intermediate variable */ + st25r3916comTx(&val, ST25R3916_REG_LEN, last, txOnly); +} + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ + +/*******************************************************************************/ +ReturnCode st25r3916ReadRegister(uint8_t reg, uint8_t* val) { + return st25r3916ReadMultipleRegisters(reg, val, ST25R3916_REG_LEN); +} + +/*******************************************************************************/ +ReturnCode st25r3916ReadMultipleRegisters(uint8_t reg, uint8_t* values, + uint8_t length) { + if (length > 0U) { + st25r3916comStart(); + + /* If is a space-B register send a direct command first */ + if ((reg & ST25R3916_SPACE_B) != 0U) { + st25r3916comTxByte(ST25R3916_CMD_SPACE_B_ACCESS, false, false); + } + + st25r3916comTxByte(((reg & ~ST25R3916_SPACE_B) | ST25R3916_READ_MODE), true, + false); + st25r3916comRepeatStart(); + st25r3916comRx(values, length); + st25r3916comStop(); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916WriteRegister(uint8_t reg, uint8_t val) { + uint8_t value = val; /* MISRA 17.8: use intermediate variable */ + return st25r3916WriteMultipleRegisters(reg, &value, ST25R3916_REG_LEN); +} + +/*******************************************************************************/ +ReturnCode st25r3916WriteMultipleRegisters(uint8_t reg, const uint8_t* values, + uint8_t length) { + if (length > 0U) { + st25r3916comStart(); + + if ((reg & ST25R3916_SPACE_B) != 0U) { + st25r3916comTxByte(ST25R3916_CMD_SPACE_B_ACCESS, false, true); + } + + st25r3916comTxByte(((reg & ~ST25R3916_SPACE_B) | ST25R3916_WRITE_MODE), + false, true); + st25r3916comTx(values, length, true, true); + st25r3916comStop(); + + /* Send a WriteMultiReg event to LED handling */ + st25r3916ledEvtWrMultiReg(reg, values, length); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916WriteFifo(const uint8_t* values, uint16_t length) { + if (length > ST25R3916_FIFO_DEPTH) { + return RFAL_ERR_PARAM; + } + + if (length > 0U) { + st25r3916comStart(); + st25r3916comTxByte(ST25R3916_FIFO_LOAD, false, true); + st25r3916comTx(values, length, true, true); + st25r3916comStop(); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916ReadFifo(uint8_t* buf, uint16_t length) { + if (length > 0U) { + st25r3916comStart(); + st25r3916comTxByte(ST25R3916_FIFO_READ, true, false); + + st25r3916comRepeatStart(); + st25r3916comRx(buf, length); + st25r3916comStop(); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916WritePTMem(const uint8_t* values, uint16_t length) { + if (length > ST25R3916_PTM_LEN) { + return RFAL_ERR_PARAM; + } + + if (length > 0U) { + st25r3916comStart(); + st25r3916comTxByte(ST25R3916_PT_A_CONFIG_LOAD, false, true); + st25r3916comTx(values, length, true, true); + st25r3916comStop(); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916ReadPTMem(uint8_t* values, uint16_t length) { + uint8_t tmp[ST25R3916_REG_LEN + + ST25R3916_PTM_LEN]; /* local buffer to handle prepended byte on + I2C and SPI */ + + if (length > 0U) { + if (length > ST25R3916_PTM_LEN) { + return RFAL_ERR_PARAM; + } + + st25r3916comStart(); + st25r3916comTxByte(ST25R3916_PT_MEM_READ, true, false); + + st25r3916comRepeatStart(); + st25r3916comRx(tmp, (ST25R3916_REG_LEN + length)); /* skip prepended byte */ + st25r3916comStop(); + + /* Copy PTMem content without prepended byte */ + RFAL_MEMCPY(values, (tmp + ST25R3916_REG_LEN), length); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916WritePTMemF(const uint8_t* values, uint16_t length) { + if (length > (ST25R3916_PTM_F_LEN + ST25R3916_PTM_TSN_LEN)) { + return RFAL_ERR_PARAM; + } + + if (length > 0U) { + st25r3916comStart(); + st25r3916comTxByte(ST25R3916_PT_F_CONFIG_LOAD, false, true); + st25r3916comTx(values, length, true, true); + st25r3916comStop(); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916WritePTMemTSN(const uint8_t* values, uint16_t length) { + if (length > ST25R3916_PTM_TSN_LEN) { + return RFAL_ERR_PARAM; + } + + if (length > 0U) { + st25r3916comStart(); + st25r3916comTxByte(ST25R3916_PT_TSN_DATA_LOAD, false, true); + st25r3916comTx(values, length, true, true); + st25r3916comStop(); + } + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916ExecuteCommand(uint8_t cmd) { + st25r3916comStart(); + st25r3916comTxByte((cmd | ST25R3916_CMD_MODE), true, true); + st25r3916comStop(); + + /* Send a cmd event to LED handling */ + st25r3916ledEvtCmd(cmd); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916ReadTestRegister(uint8_t reg, uint8_t* val) { + st25r3916comStart(); + st25r3916comTxByte(ST25R3916_CMD_TEST_ACCESS, false, false); + st25r3916comTxByte((reg | ST25R3916_READ_MODE), true, false); + st25r3916comRepeatStart(); + st25r3916comRx(val, ST25R3916_REG_LEN); + st25r3916comStop(); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916WriteTestRegister(uint8_t reg, uint8_t val) { + uint8_t value = val; /* MISRA 17.8: use intermediate variable */ + + st25r3916comStart(); + st25r3916comTxByte(ST25R3916_CMD_TEST_ACCESS, false, true); + st25r3916comTxByte((reg | ST25R3916_WRITE_MODE), false, true); + st25r3916comTx(&value, ST25R3916_REG_LEN, true, true); + st25r3916comStop(); + + return RFAL_ERR_NONE; +} + +/*******************************************************************************/ +ReturnCode st25r3916ClrRegisterBits(uint8_t reg, uint8_t clr_mask) { + ReturnCode ret; + uint8_t rdVal; + + /* Read current reg value */ + RFAL_EXIT_ON_ERR(ret, st25r3916ReadRegister(reg, &rdVal)); + + /* Only perform a Write if value to be written is different */ + if (ST25R3916_OPTIMIZE && (rdVal == (uint8_t)(rdVal & ~clr_mask))) { + return RFAL_ERR_NONE; + } + + /* Write new reg value */ + return st25r3916WriteRegister(reg, (uint8_t)(rdVal & ~clr_mask)); +} + +/*******************************************************************************/ +ReturnCode st25r3916SetRegisterBits(uint8_t reg, uint8_t set_mask) { + ReturnCode ret; + uint8_t rdVal; + + /* Read current reg value */ + RFAL_EXIT_ON_ERR(ret, st25r3916ReadRegister(reg, &rdVal)); + + /* Only perform a Write if the value to be written is different */ + if (ST25R3916_OPTIMIZE && (rdVal == (rdVal | set_mask))) { + return RFAL_ERR_NONE; + } + + /* Write new reg value */ + return st25r3916WriteRegister(reg, (rdVal | set_mask)); +} + +/*******************************************************************************/ +ReturnCode st25r3916ChangeRegisterBits(uint8_t reg, uint8_t valueMask, + uint8_t value) { + return st25r3916ModifyRegister(reg, valueMask, (valueMask & value)); +} + +/*******************************************************************************/ +ReturnCode st25r3916ModifyRegister(uint8_t reg, uint8_t clr_mask, + uint8_t set_mask) { + ReturnCode ret; + uint8_t rdVal; + uint8_t wrVal; + + /* Read current reg value */ + RFAL_EXIT_ON_ERR(ret, st25r3916ReadRegister(reg, &rdVal)); + + /* Compute new value */ + wrVal = (uint8_t)(rdVal & ~clr_mask); + wrVal |= set_mask; + + /* Only perform a Write if the value to be written is different */ + if (ST25R3916_OPTIMIZE && (rdVal == wrVal)) { + return RFAL_ERR_NONE; + } + + /* Write new reg value */ + return st25r3916WriteRegister(reg, wrVal); +} + +/*******************************************************************************/ +ReturnCode st25r3916ChangeTestRegisterBits(uint8_t reg, uint8_t valueMask, + uint8_t value) { + ReturnCode ret; + uint8_t rdVal; + uint8_t wrVal; + + /* Read current reg value */ + RFAL_EXIT_ON_ERR(ret, st25r3916ReadTestRegister(reg, &rdVal)); + + /* Compute new value */ + wrVal = (uint8_t)(rdVal & ~valueMask); + wrVal |= (uint8_t)(value & valueMask); + + /* Only perform a Write if the value to be written is different */ + if (ST25R3916_OPTIMIZE && (rdVal == wrVal)) { + return RFAL_ERR_NONE; + } + + /* Write new reg value */ + return st25r3916WriteTestRegister(reg, wrVal); +} + +/*******************************************************************************/ +bool st25r3916CheckReg(uint8_t reg, uint8_t mask, uint8_t val) { + uint8_t regVal; + + regVal = 0; + st25r3916ReadRegister(reg, ®Val); + + return ((regVal & mask) == val); +} + +/*******************************************************************************/ +bool st25r3916IsRegValid(uint8_t reg) { + if (!(((int16_t)reg >= (int16_t)ST25R3916_REG_IO_CONF1) && + (reg <= (ST25R3916_SPACE_B | ST25R3916_REG_IC_IDENTITY)))) { + return false; + } + return true; +} diff --git a/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_com.h b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_com.h new file mode 100644 index 0000000000..6df98e755c --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_com.h @@ -0,0 +1,1618 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file + * + * \author Gustavo Patricio + * + * \brief ST25R3916 communication declaration file + * + * This driver provides basic abstraction for communication with the ST25R3916 + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-HAL + * \brief RFAL Hardware Abstraction Layer + * @{ + * + * \addtogroup ST25R3916 + * \brief RFAL ST25R3916 Driver + * @{ + * + * \addtogroup ST25R3916_COM + * \brief RFAL ST25R3916 Communications + * @{ + * + */ + +#ifndef ST25R3916_COM_H +#define ST25R3916_COM_H + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ +#include "rfal_platform.h" +#include "rfal_utils.h" + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ +#define ST25R3916_SPACE_B \ + 0x40U /*!< ST25R3916 Space-B indicator */ +#ifdef ST25R3916B +#define ST25R3916_SPACE_B_REG_LEN \ + 24U /*!< Number of register in the space B */ +#else +#define ST25R3916_SPACE_B_REG_LEN \ + 16U /*!< Number of register in the space B */ +#endif /* ST25R3916B */ + +#define ST25R3916_FIFO_STATUS_LEN \ + 2 /*!< Number of FIFO Status Register */ + +#define ST25R3916_PTM_A_LEN \ + 15U /*!< Passive target memory A config length */ +#define ST25R3916_PTM_B_LEN \ + 0U /*!< Passive target memory B config length */ +#define ST25R3916_PTM_F_LEN \ + 21U /*!< Passive target memory F config length */ +#define ST25R3916_PTM_TSN_LEN \ + 12U /*!< Passive target memory TSN data length */ + +/*! Full Passive target memory length */ +#define ST25R3916_PTM_LEN \ + (ST25R3916_PTM_A_LEN + ST25R3916_PTM_B_LEN + ST25R3916_PTM_F_LEN + \ + ST25R3916_PTM_TSN_LEN) + +/* IO configuration registers */ +#define ST25R3916_REG_IO_CONF1 \ + 0x00U /*!< RW IO Configuration Register 1 */ +#define ST25R3916_REG_IO_CONF2 \ + 0x01U /*!< RW IO Configuration Register 2 */ + +/* Operation control and mode definition registers */ +#define ST25R3916_REG_OP_CONTROL \ + 0x02U /*!< RW Operation Control Register */ +#define ST25R3916_REG_MODE \ + 0x03U /*!< RW Mode Definition Register */ +#define ST25R3916_REG_BIT_RATE \ + 0x04U /*!< RW Bit Rate Definition Register */ + +/* Protocol Configuration registers */ +#define ST25R3916_REG_ISO14443A_NFC \ + 0x05U /*!< RW ISO14443A and NFC 106 kBit/s Settings Register */ +#define ST25R3916_REG_EMD_SUP_CONF \ + (ST25R3916_SPACE_B | \ + 0x05U) /*!< RW EMD Suppression Configuration Register */ +#define ST25R3916_REG_ISO14443B_1 \ + 0x06U /*!< RW ISO14443B Settings Register 1 */ +#define ST25R3916_REG_SUBC_START_TIME \ + (ST25R3916_SPACE_B | 0x06U) /*!< RW Subcarrier Start Time Register */ +#define ST25R3916_REG_ISO14443B_2 \ + 0x07U /*!< RW ISO14443B Settings Register 2 */ +#define ST25R3916_REG_PASSIVE_TARGET \ + 0x08U /*!< RW Passive Target Definition Register */ +#define ST25R3916_REG_STREAM_MODE \ + 0x09U /*!< RW Stream Mode Definition Register */ +#define ST25R3916_REG_AUX \ + 0x0AU /*!< RW Auxiliary Definition Register */ + +/* Receiver Configuration registers */ +#define ST25R3916_REG_RX_CONF1 \ + 0x0BU /*!< RW Receiver Configuration Register 1 */ +#define ST25R3916_REG_RX_CONF2 \ + 0x0CU /*!< RW Receiver Configuration Register 2 */ +#define ST25R3916_REG_RX_CONF3 \ + 0x0DU /*!< RW Receiver Configuration Register 3 */ +#define ST25R3916_REG_RX_CONF4 \ + 0x0EU /*!< RW Receiver Configuration Register 4 */ +#define ST25R3916_REG_P2P_RX_CONF \ + (ST25R3916_SPACE_B | 0x0BU) /*!< RW P2P Receiver Configuration Register 1 */ +#define ST25R3916_REG_CORR_CONF1 \ + (ST25R3916_SPACE_B | 0x0CU) /*!< RW Correlator configuration register 1 */ +#define ST25R3916_REG_CORR_CONF2 \ + (ST25R3916_SPACE_B | 0x0DU) /*!< RW Correlator configuration register 2 */ + +/* Timer definition registers */ +#define ST25R3916_REG_MASK_RX_TIMER \ + 0x0FU /*!< RW Mask Receive Timer Register */ +#define ST25R3916_REG_NO_RESPONSE_TIMER1 \ + 0x10U /*!< RW No-response Timer Register 1 */ +#define ST25R3916_REG_NO_RESPONSE_TIMER2 \ + 0x11U /*!< RW No-response Timer Register 2 */ +#define ST25R3916_REG_TIMER_EMV_CONTROL \ + 0x12U /*!< RW Timer and EMV Control */ +#define ST25R3916_REG_GPT1 \ + 0x13U /*!< RW General Purpose Timer Register 1 */ +#define ST25R3916_REG_GPT2 \ + 0x14U /*!< RW General Purpose Timer Register 2 */ +#define ST25R3916_REG_PPON2 \ + 0x15U /*!< RW PPON2 Field waiting Timer Register */ +#define ST25R3916_REG_SQUELCH_TIMER \ + (ST25R3916_SPACE_B | 0x0FU) /*!< RW Squelch timeout Register */ +#define ST25R3916_REG_FIELD_ON_GT \ + (ST25R3916_SPACE_B | 0x15U) /*!< RW NFC Field on guard time */ + +/* Interrupt and associated reporting registers */ +#define ST25R3916_REG_IRQ_MASK_MAIN \ + 0x16U /*!< RW Mask Main Interrupt Register */ +#define ST25R3916_REG_IRQ_MASK_TIMER_NFC \ + 0x17U /*!< RW Mask Timer and NFC Interrupt Register */ +#define ST25R3916_REG_IRQ_MASK_ERROR_WUP \ + 0x18U /*!< RW Mask Error and Wake-up Interrupt Register */ +#define ST25R3916_REG_IRQ_MASK_TARGET \ + 0x19U /*!< RW Mask 3916 Target Interrupt Register */ +#define ST25R3916_REG_IRQ_MAIN \ + 0x1AU /*!< R Main Interrupt Register */ +#define ST25R3916_REG_IRQ_TIMER_NFC \ + 0x1BU /*!< R Timer and NFC Interrupt Register */ +#define ST25R3916_REG_IRQ_ERROR_WUP \ + 0x1CU /*!< R Error and Wake-up Interrupt Register */ +#define ST25R3916_REG_IRQ_TARGET \ + 0x1DU /*!< R ST25R3916 Target Interrupt Register */ +#define ST25R3916_REG_FIFO_STATUS1 \ + 0x1EU /*!< R FIFO Status Register 1 */ +#define ST25R3916_REG_FIFO_STATUS2 \ + 0x1FU /*!< R FIFO Status Register 2 */ +#define ST25R3916_REG_COLLISION_STATUS \ + 0x20U /*!< R Collision Display Register */ +#define ST25R3916_REG_PASSIVE_TARGET_STATUS \ + 0x21U /*!< R Passive target state status */ + +/* Definition of number of transmitted bytes */ +#define ST25R3916_REG_NUM_TX_BYTES1 \ + 0x22U /*!< RW Number of Transmitted Bytes Register 1 */ +#define ST25R3916_REG_NUM_TX_BYTES2 \ + 0x23U /*!< RW Number of Transmitted Bytes Register 2 */ + +/* NFCIP Bit Rate Display Register */ +#define ST25R3916_REG_NFCIP1_BIT_RATE \ + 0x24U /*!< R NFCIP Bit Rate Detection Display Register */ + +/* A/D Converter Output Register */ +#define ST25R3916_REG_AD_RESULT \ + 0x25U /*!< R A/D Converter Output Register */ + +/* Antenna tuning registers */ +#define ST25R3916_REG_ANT_TUNE_A \ + 0x26U /*!< RW Antenna Tuning Control (AAT-A) Register 1 */ +#define ST25R3916_REG_ANT_TUNE_B \ + 0x27U /*!< RW Antenna Tuning Control (AAT-B) Register 2 */ + +/* Antenna Driver and Modulation registers */ +#define ST25R3916_REG_TX_DRIVER \ + 0x28U /*!< RW TX driver register */ +#define ST25R3916_REG_PT_MOD \ + 0x29U /*!< RW PT modulation Register */ +#define ST25R3916_REG_AUX_MOD \ + (ST25R3916_SPACE_B | 0x28U) /*!< RW Aux Modulation setting Register */ +#define ST25R3916_REG_TX_DRIVER_TIMING \ + (ST25R3916_SPACE_B | 0x29U) /*!< RW TX driver timing Register */ +#define ST25R3916_REG_RES_AM_MOD \ + (ST25R3916_SPACE_B | 0x2AU) /*!< RW Resistive AM modulation register */ +#define ST25R3916_REG_TX_DRIVER_STATUS \ + (ST25R3916_SPACE_B | 0x2BU) /*!< R TX driver timing readout Register */ + +/* External Field Detector Threshold Registers */ +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV \ + 0x2AU /*!< RW External Field Detector Activation Threshold Reg */ +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV \ + 0x2BU /*!< RW External Field Detector Deactivation Threshold Reg*/ + +/* Regulator registers */ +#define ST25R3916_REG_REGULATOR_CONTROL \ + 0x2CU /*!< RW Regulated Voltage Control Register */ +#define ST25R3916_REG_REGULATOR_RESULT \ + (ST25R3916_SPACE_B | 0x2CU) /*!< R Regulator Display Register */ + +/* Receiver State Display Register */ +#define ST25R3916_REG_RSSI_RESULT \ + 0x2DU /*!< R RSSI Display Register */ +#define ST25R3916_REG_GAIN_RED_STATE \ + 0x2EU /*!< R Gain Reduction State Register */ +#define ST25R3916_REG_CAP_SENSOR_CONTROL \ + 0x2FU /*!< RW Capacitive Sensor Control Register */ +#define ST25R3916_REG_CAP_SENSOR_RESULT \ + 0x30U /*!< R Capacitive Sensor Display Register */ +#define ST25R3916_REG_AUX_DISPLAY \ + 0x31U /*!< R Auxiliary Display Register */ + +/* Over/Undershoot Protection Configuration Registers */ +#define ST25R3916_REG_OVERSHOOT_CONF1 \ + (ST25R3916_SPACE_B | \ + 0x30U) /*!< RW Overshoot Protection Configuration Register 1 */ +#define ST25R3916_REG_OVERSHOOT_CONF2 \ + (ST25R3916_SPACE_B | \ + 0x31U) /*!< RW Overshoot Protection Configuration Register 2 */ +#define ST25R3916_REG_UNDERSHOOT_CONF1 \ + (ST25R3916_SPACE_B | \ + 0x32U) /*!< RW Undershoot Protection Configuration Register 1 */ +#define ST25R3916_REG_UNDERSHOOT_CONF2 \ + (ST25R3916_SPACE_B | \ + 0x33U) /*!< RW Undershoot Protection Configuration Register 2 */ + +#ifdef ST25R3916B +/* AWS Configuration Registers */ +#define ST25R3916_REG_AWS_CONF1 \ + (ST25R3916_SPACE_B | 0x2EU) /*!< RW AWS Configuration Register 1 */ +#define ST25R3916_REG_AWS_CONF2 \ + (ST25R3916_SPACE_B | 0x2FU) /*!< RW AWS Configuration Register 2 */ +#define ST25R3916_REG_AWS_TIME1 \ + (ST25R3916_SPACE_B | 0x34U) /*!< RW AWS Time Register 1 */ +#define ST25R3916_REG_AWS_TIME2 \ + (ST25R3916_SPACE_B | 0x35U) /*!< RW AWS Time Register 2 */ +#define ST25R3916_REG_AWS_TIME3 \ + (ST25R3916_SPACE_B | 0x36U) /*!< RW AWS Time Register 1 */ +#define ST25R3916_REG_AWS_TIME4 \ + (ST25R3916_SPACE_B | 0x37U) /*!< RW AWS Time Register 2 */ +#define ST25R3916_REG_AWS_TIME5 \ + (ST25R3916_SPACE_B | 0x38U) /*!< RW AWS Time Register 1 */ +#define ST25R3916_REG_AWS_RC_CAL \ + (ST25R3916_SPACE_B | 0x39U) /*!< RW AWS Time Register 2 */ +#endif /* ST25R3916B */ + +/* Detection of card presence */ +#define ST25R3916_REG_WUP_TIMER_CONTROL \ + 0x32U /*!< RW Wake-up Timer Control Register */ +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF \ + 0x33U /*!< RW Amplitude Measurement Configuration Register */ +#define ST25R3916_REG_AMPLITUDE_MEASURE_REF \ + 0x34U /*!< RW Amplitude Measurement Reference Register */ +#define ST25R3916_REG_AMPLITUDE_MEASURE_AA_RESULT \ + 0x35U /*!< R Amplitude Measurement Auto Averaging Display Reg */ +#define ST25R3916_REG_AMPLITUDE_MEASURE_RESULT \ + 0x36U /*!< R Amplitude Measurement Display Register */ +#define ST25R3916_REG_PHASE_MEASURE_CONF \ + 0x37U /*!< RW Phase Measurement Configuration Register */ +#define ST25R3916_REG_PHASE_MEASURE_REF \ + 0x38U /*!< RW Phase Measurement Reference Register */ +#define ST25R3916_REG_PHASE_MEASURE_AA_RESULT \ + 0x39U /*!< R Phase Measurement Auto Averaging Display Register */ +#define ST25R3916_REG_PHASE_MEASURE_RESULT \ + 0x3AU /*!< R Phase Measurement Display Register */ + +#if defined(ST25R3916) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF \ + 0x3BU /*!< RW Capacitance Measurement Configuration Register */ +#define ST25R3916_REG_CAPACITANCE_MEASURE_REF \ + 0x3CU /*!< RW Capacitance Measurement Reference Register */ +#define ST25R3916_REG_CAPACITANCE_MEASURE_AA_RESULT \ + 0x3DU /*!< R Capacitance Measurement Auto Averaging Display Reg*/ +#define ST25R3916_REG_CAPACITANCE_MEASURE_RESULT \ + 0x3EU /*!< R Capacitance Measurement Display Register */ +#elif defined(ST25R3916B) +#define ST25R3916_REG_MEAS_TX_DELAY \ + 0x3BU /*!< RW Capacitance Measurement Configuration Register */ +#endif /* ST25R3916 */ + +/* IC identity */ +#define ST25R3916_REG_IC_IDENTITY \ + 0x3FU /*!< R Chip Id: 0 for old silicon, v2 silicon: 0x09 */ + +/*! Register bit definitions \cond DOXYGEN_SUPPRESS */ + +#define ST25R3916_REG_IO_CONF1_single (1U << 7) +#define ST25R3916_REG_IO_CONF1_rfo2 (1U << 6) +#define ST25R3916_REG_IO_CONF1_i2c_thd1 (1U << 5) +#define ST25R3916_REG_IO_CONF1_i2c_thd0 (1U << 4) +#define ST25R3916_REG_IO_CONF1_i2c_thd_mask (3U << 4) +#define ST25R3916_REG_IO_CONF1_i2c_thd_shift (4U) +#define ST25R3916_REG_IO_CONF1_rfu (1U << 3) +#define ST25R3916_REG_IO_CONF1_out_cl1 (1U << 2) +#define ST25R3916_REG_IO_CONF1_out_cl0 (1U << 1) +#define ST25R3916_REG_IO_CONF1_out_cl_disabled (3U << 1) +#define ST25R3916_REG_IO_CONF1_out_cl_13_56MHZ (2U << 1) +#define ST25R3916_REG_IO_CONF1_out_cl_4_78MHZ (1U << 1) +#define ST25R3916_REG_IO_CONF1_out_cl_3_39MHZ (0U << 1) +#define ST25R3916_REG_IO_CONF1_out_cl_mask (3U << 1) +#define ST25R3916_REG_IO_CONF1_out_cl_shift (1U) +#define ST25R3916_REG_IO_CONF1_lf_clk_off (1U << 0) +#define ST25R3916_REG_IO_CONF1_lf_clk_off_on (1U << 0) +#define ST25R3916_REG_IO_CONF1_lf_clk_off_off (0U << 0) + +#define ST25R3916_REG_IO_CONF2_sup3V (1U << 7) +#define ST25R3916_REG_IO_CONF2_sup3V_3V (1U << 7) +#define ST25R3916_REG_IO_CONF2_sup3V_5V (0U << 7) +#define ST25R3916_REG_IO_CONF2_vspd_off (1U << 6) +#define ST25R3916_REG_IO_CONF2_aat_en (1U << 5) +#define ST25R3916_REG_IO_CONF2_miso_pd2 (1U << 4) +#define ST25R3916_REG_IO_CONF2_miso_pd1 (1U << 3) +#define ST25R3916_REG_IO_CONF2_io_drv_lvl (1U << 2) +#if defined(ST25R3916) +#define ST25R3916_REG_IO_CONF2_slow_up (1U << 0) +#elif defined(ST25R3916B) +#define ST25R3916_REG_IO_CONF2_act_amsink (1U << 0) +#endif /* ST25R3916B */ + +#define ST25R3916_REG_OP_CONTROL_en (1U << 7) +#define ST25R3916_REG_OP_CONTROL_rx_en (1U << 6) +#define ST25R3916_REG_OP_CONTROL_rx_chn (1U << 5) +#define ST25R3916_REG_OP_CONTROL_rx_man (1U << 4) +#define ST25R3916_REG_OP_CONTROL_tx_en (1U << 3) +#define ST25R3916_REG_OP_CONTROL_wu (1U << 2) +#define ST25R3916_REG_OP_CONTROL_en_fd_c1 (1U << 1) +#define ST25R3916_REG_OP_CONTROL_en_fd_c0 (1U << 0) +#define ST25R3916_REG_OP_CONTROL_en_fd_efd_off (0U << 0) +#define ST25R3916_REG_OP_CONTROL_en_fd_manual_efd_ca (1U << 0) +#define ST25R3916_REG_OP_CONTROL_en_fd_manual_efd_pdt (2U << 0) +#define ST25R3916_REG_OP_CONTROL_en_fd_auto_efd (3U << 0) +#define ST25R3916_REG_OP_CONTROL_en_fd_shift (0U) +#define ST25R3916_REG_OP_CONTROL_en_fd_mask (3U << 0) + +#define ST25R3916_REG_MODE_targ (1U << 7) +#define ST25R3916_REG_MODE_targ_targ (1U << 7) +#define ST25R3916_REG_MODE_targ_init (0U << 7) +#define ST25R3916_REG_MODE_om3 (1U << 6) +#define ST25R3916_REG_MODE_om2 (1U << 5) +#define ST25R3916_REG_MODE_om1 (1U << 4) +#define ST25R3916_REG_MODE_om0 (1U << 3) +#define ST25R3916_REG_MODE_om_bpsk_stream (0xfU << 3) +#define ST25R3916_REG_MODE_om_subcarrier_stream (0xeU << 3) +#define ST25R3916_REG_MODE_om_topaz (0x4U << 3) +#define ST25R3916_REG_MODE_om_felica (0x3U << 3) +#define ST25R3916_REG_MODE_om_iso14443b (0x2U << 3) +#define ST25R3916_REG_MODE_om_iso14443a (0x1U << 3) +#define ST25R3916_REG_MODE_om_targ_nfca (0x1U << 3) +#define ST25R3916_REG_MODE_om_targ_nfcb (0x2U << 3) +#define ST25R3916_REG_MODE_om_targ_nfcf (0x4U << 3) +#define ST25R3916_REG_MODE_om_targ_nfcip (0x7U << 3) +#define ST25R3916_REG_MODE_om_nfc (0x0U << 3) +#define ST25R3916_REG_MODE_om_mask (0xfU << 3) +#define ST25R3916_REG_MODE_om_shift (3U) +#define ST25R3916_REG_MODE_tr_am (1U << 2) +#define ST25R3916_REG_MODE_tr_am_ook (0U << 2) +#define ST25R3916_REG_MODE_tr_am_am (1U << 2) +#define ST25R3916_REG_MODE_nfc_ar1 (1U << 1) +#define ST25R3916_REG_MODE_nfc_ar0 (1U << 0) +#define ST25R3916_REG_MODE_nfc_ar_off (0U << 0) +#define ST25R3916_REG_MODE_nfc_ar_auto_rx (1U << 0) +#define ST25R3916_REG_MODE_nfc_ar_eof (2U << 0) +#define ST25R3916_REG_MODE_nfc_ar_rfu (3U << 0) +#define ST25R3916_REG_MODE_nfc_ar_mask (3U << 0) +#define ST25R3916_REG_MODE_nfc_ar_shift (0U) + +#define ST25R3916_REG_BIT_RATE_txrate_106 (0x0U << 4) +#define ST25R3916_REG_BIT_RATE_txrate_212 (0x1U << 4) +#define ST25R3916_REG_BIT_RATE_txrate_424 (0x2U << 4) +#define ST25R3916_REG_BIT_RATE_txrate_848 (0x3U << 4) +#define ST25R3916_REG_BIT_RATE_txrate_mask (0x3U << 4) +#define ST25R3916_REG_BIT_RATE_txrate_shift (4U) +#define ST25R3916_REG_BIT_RATE_rxrate_106 (0x0U << 0) +#define ST25R3916_REG_BIT_RATE_rxrate_212 (0x1U << 0) +#define ST25R3916_REG_BIT_RATE_rxrate_424 (0x2U << 0) +#define ST25R3916_REG_BIT_RATE_rxrate_848 (0x3U << 0) +#define ST25R3916_REG_BIT_RATE_rxrate_mask (0x3U << 0) +#define ST25R3916_REG_BIT_RATE_rxrate_shift (0U) + +#define ST25R3916_REG_ISO14443A_NFC_no_tx_par (1U << 7) +#define ST25R3916_REG_ISO14443A_NFC_no_tx_par_off (0U << 7) +#define ST25R3916_REG_ISO14443A_NFC_no_rx_par (1U << 6) +#define ST25R3916_REG_ISO14443A_NFC_no_rx_par_off (0U << 6) +#define ST25R3916_REG_ISO14443A_NFC_nfc_f0 (1U << 5) +#define ST25R3916_REG_ISO14443A_NFC_nfc_f0_off (0U << 5) +#define ST25R3916_REG_ISO14443A_NFC_p_len3 (1U << 4) +#define ST25R3916_REG_ISO14443A_NFC_p_len2 (1U << 3) +#define ST25R3916_REG_ISO14443A_NFC_p_len1 (1U << 2) +#define ST25R3916_REG_ISO14443A_NFC_p_len0 (1U << 1) +#define ST25R3916_REG_ISO14443A_NFC_p_len_mask (0xfU << 1) +#define ST25R3916_REG_ISO14443A_NFC_p_len_shift (1U) +#define ST25R3916_REG_ISO14443A_NFC_antcl (1U << 0) + +#define ST25R3916_REG_EMD_SUP_CONF_emd_emv (1U << 7) +#define ST25R3916_REG_EMD_SUP_CONF_emd_emv_on (1U << 7) +#define ST25R3916_REG_EMD_SUP_CONF_emd_emv_off (0U << 7) +#define ST25R3916_REG_EMD_SUP_CONF_rx_start_emv (1U << 6) +#define ST25R3916_REG_EMD_SUP_CONF_rx_start_emv_on (1U << 6) +#define ST25R3916_REG_EMD_SUP_CONF_rx_start_emv_off (0U << 6) +#define ST25R3916_REG_EMD_SUP_CONF_rfu1 (1U << 5) +#define ST25R3916_REG_EMD_SUP_CONF_rfu0 (1U << 4) +#define ST25R3916_REG_EMD_SUP_CONF_emd_thld3 (1U << 3) +#define ST25R3916_REG_EMD_SUP_CONF_emd_thld2 (1U << 2) +#define ST25R3916_REG_EMD_SUP_CONF_emd_thld1 (1U << 1) +#define ST25R3916_REG_EMD_SUP_CONF_emd_thld0 (1U << 0) +#define ST25R3916_REG_EMD_SUP_CONF_emd_thld_mask (0xfU << 0) +#define ST25R3916_REG_EMD_SUP_CONF_emd_thld_shift (0U) + +#define ST25R3916_REG_SUBC_START_TIME_rfu2 (1U << 7) +#define ST25R3916_REG_SUBC_START_TIME_rfu1 (1U << 6) +#define ST25R3916_REG_SUBC_START_TIME_rfu0 (1U << 5) +#define ST25R3916_REG_SUBC_START_TIME_sst4 (1U << 4) +#define ST25R3916_REG_SUBC_START_TIME_sst3 (1U << 3) +#define ST25R3916_REG_SUBC_START_TIME_sst2 (1U << 2) +#define ST25R3916_REG_SUBC_START_TIME_sst1 (1U << 1) +#define ST25R3916_REG_SUBC_START_TIME_sst0 (1U << 0) +#define ST25R3916_REG_SUBC_START_TIME_sst_mask (0x1fU << 0) +#define ST25R3916_REG_SUBC_START_TIME_sst_shift (0U) + +#define ST25R3916_REG_ISO14443B_1_egt2 (1U << 7) +#define ST25R3916_REG_ISO14443B_1_egt1 (1U << 6) +#define ST25R3916_REG_ISO14443B_1_egt0 (1U << 5) +#define ST25R3916_REG_ISO14443B_1_egt_shift (5U) +#define ST25R3916_REG_ISO14443B_1_egt_mask (7U << 5) +#define ST25R3916_REG_ISO14443B_1_sof_1 (1U << 3) +#define ST25R3916_REG_ISO14443B_1_sof_1_3etu (1U << 3) +#define ST25R3916_REG_ISO14443B_1_sof_1_2etu (0U << 3) +#define ST25R3916_REG_ISO14443B_1_sof_0 (1U << 4) +#define ST25R3916_REG_ISO14443B_1_sof_0_11etu (1U << 4) +#define ST25R3916_REG_ISO14443B_1_sof_0_10etu (0U << 4) +#define ST25R3916_REG_ISO14443B_1_sof_mask (3U << 3) +#define ST25R3916_REG_ISO14443B_1_eof (1U << 2) +#define ST25R3916_REG_ISO14443B_1_eof_11etu (1U << 2) +#define ST25R3916_REG_ISO14443B_1_eof_10etu (0U << 2) +#define ST25R3916_REG_ISO14443B_1_half (1U << 1) +#if defined(ST25R3916) +#define ST25R3916_REG_ISO14443B_1_rx_st_om (1U << 0) +#elif defined(ST25R3916B) +#define ST25R3916_REG_ISO14443B_1_rfu0 (1U << 0) +#endif /* ST25R3916B */ + +#define ST25R3916_REG_ISO14443B_2_tr1_1 (1U << 7) +#define ST25R3916_REG_ISO14443B_2_tr1_0 (1U << 6) +#define ST25R3916_REG_ISO14443B_2_tr1_64fs32fs (1U << 6) +#define ST25R3916_REG_ISO14443B_2_tr1_80fs80fs (0U << 6) +#define ST25R3916_REG_ISO14443B_2_tr1_mask (3U << 6) +#define ST25R3916_REG_ISO14443B_2_tr1_shift (6U) +#define ST25R3916_REG_ISO14443B_2_no_sof (1U << 5) +#define ST25R3916_REG_ISO14443B_2_no_eof (1U << 4) +#define ST25R3916_REG_ISO14443B_rfu1 (1U << 3) +#define ST25R3916_REG_ISO14443B_rfu0 (1U << 2) +#define ST25R3916_REG_ISO14443B_2_f_p1 (1U << 1) +#define ST25R3916_REG_ISO14443B_2_f_p0 (1U << 0) +#define ST25R3916_REG_ISO14443B_2_f_p_96 (3U << 0) +#define ST25R3916_REG_ISO14443B_2_f_p_80 (2U << 0) +#define ST25R3916_REG_ISO14443B_2_f_p_64 (1U << 0) +#define ST25R3916_REG_ISO14443B_2_f_p_48 (0U << 0) +#define ST25R3916_REG_ISO14443B_2_f_p_mask (3U << 0) +#define ST25R3916_REG_ISO14443B_2_f_p_shift (0U) + +#define ST25R3916_REG_PASSIVE_TARGET_fdel_3 (1U << 7) +#define ST25R3916_REG_PASSIVE_TARGET_fdel_2 (1U << 6) +#define ST25R3916_REG_PASSIVE_TARGET_fdel_1 (1U << 5) +#define ST25R3916_REG_PASSIVE_TARGET_fdel_0 (1U << 4) +#define ST25R3916_REG_PASSIVE_TARGET_fdel_mask (0xfU << 4) +#define ST25R3916_REG_PASSIVE_TARGET_fdel_shift (4U) +#define ST25R3916_REG_PASSIVE_TARGET_d_ac_ap2p (1U << 3) +#define ST25R3916_REG_PASSIVE_TARGET_d_212_424_1r (1U << 2) +#define ST25R3916_REG_PASSIVE_TARGET_rfu (1U << 1) +#define ST25R3916_REG_PASSIVE_TARGET_d_106_ac_a (1U << 0) + +#define ST25R3916_REG_STREAM_MODE_rfu (1U << 7) +#define ST25R3916_REG_STREAM_MODE_scf1 (1U << 6) +#define ST25R3916_REG_STREAM_MODE_scf0 (1U << 5) +#define ST25R3916_REG_STREAM_MODE_scf_sc212 (0U << 5) +#define ST25R3916_REG_STREAM_MODE_scf_sc424 (1U << 5) +#define ST25R3916_REG_STREAM_MODE_scf_sc848 (2U << 5) +#define ST25R3916_REG_STREAM_MODE_scf_sc1695 (3U << 5) +#define ST25R3916_REG_STREAM_MODE_scf_bpsk848 (0U << 5) +#define ST25R3916_REG_STREAM_MODE_scf_bpsk1695 (1U << 5) +#define ST25R3916_REG_STREAM_MODE_scf_bpsk3390 (2U << 5) +#define ST25R3916_REG_STREAM_MODE_scf_bpsk106 (3U << 5) +#define ST25R3916_REG_STREAM_MODE_scf_mask (3U << 5) +#define ST25R3916_REG_STREAM_MODE_scf_shift (5U) +#define ST25R3916_REG_STREAM_MODE_scp1 (1U << 4) +#define ST25R3916_REG_STREAM_MODE_scp0 (1U << 3) +#define ST25R3916_REG_STREAM_MODE_scp_1pulse (0U << 3) +#define ST25R3916_REG_STREAM_MODE_scp_2pulses (1U << 3) +#define ST25R3916_REG_STREAM_MODE_scp_4pulses (2U << 3) +#define ST25R3916_REG_STREAM_MODE_scp_8pulses (3U << 3) +#define ST25R3916_REG_STREAM_MODE_scp_mask (3U << 3) +#define ST25R3916_REG_STREAM_MODE_scp_shift (3U) +#define ST25R3916_REG_STREAM_MODE_stx2 (1U << 2) +#define ST25R3916_REG_STREAM_MODE_stx1 (1U << 1) +#define ST25R3916_REG_STREAM_MODE_stx0 (1U << 0) +#define ST25R3916_REG_STREAM_MODE_stx_106 (0U << 0) +#define ST25R3916_REG_STREAM_MODE_stx_212 (1U << 0) +#define ST25R3916_REG_STREAM_MODE_stx_424 (2U << 0) +#define ST25R3916_REG_STREAM_MODE_stx_848 (3U << 0) +#define ST25R3916_REG_STREAM_MODE_stx_mask (7U << 0) +#define ST25R3916_REG_STREAM_MODE_stx_shift (0U) + +#define ST25R3916_REG_AUX_no_crc_rx (1U << 7) +#define ST25R3916_REG_AUX_rfu (1U << 6) +#define ST25R3916_REG_AUX_nfc_id1 (1U << 5) +#define ST25R3916_REG_AUX_nfc_id0 (1U << 4) +#define ST25R3916_REG_AUX_nfc_id_7bytes (1U << 4) +#define ST25R3916_REG_AUX_nfc_id_4bytes (0U << 4) +#define ST25R3916_REG_AUX_nfc_id_mask (3U << 4) +#define ST25R3916_REG_AUX_nfc_id_shift (4U) +#define ST25R3916_REG_AUX_mfaz_cl90 (1U << 3) +#define ST25R3916_REG_AUX_dis_corr (1U << 2) +#define ST25R3916_REG_AUX_dis_corr_coherent (1U << 2) +#define ST25R3916_REG_AUX_dis_corr_correlator (0U << 2) +#define ST25R3916_REG_AUX_nfc_n1 (1U << 1) +#define ST25R3916_REG_AUX_nfc_n0 (1U << 0) +#define ST25R3916_REG_AUX_nfc_n_mask (3U << 0) +#define ST25R3916_REG_AUX_nfc_n_shift (0U) + +#define ST25R3916_REG_RX_CONF1_ch_sel (1U << 7) +#define ST25R3916_REG_RX_CONF1_ch_sel_PM (1U << 7) +#define ST25R3916_REG_RX_CONF1_ch_sel_AM (0U << 7) +#define ST25R3916_REG_RX_CONF1_lp2 (1U << 6) +#define ST25R3916_REG_RX_CONF1_lp1 (1U << 5) +#define ST25R3916_REG_RX_CONF1_lp0 (1U << 4) +#define ST25R3916_REG_RX_CONF1_lp_1200khz (0U << 4) +#define ST25R3916_REG_RX_CONF1_lp_600khz (1U << 4) +#define ST25R3916_REG_RX_CONF1_lp_300khz (2U << 4) +#define ST25R3916_REG_RX_CONF1_lp_2000khz (4U << 4) +#define ST25R3916_REG_RX_CONF1_lp_7000khz (5U << 4) +#define ST25R3916_REG_RX_CONF1_lp_mask (7U << 4) +#define ST25R3916_REG_RX_CONF1_lp_shift (4U) +#define ST25R3916_REG_RX_CONF1_z600k (1U << 3) +#define ST25R3916_REG_RX_CONF1_h200 (1U << 2) +#define ST25R3916_REG_RX_CONF1_h80 (1U << 1) +#define ST25R3916_REG_RX_CONF1_z12k (1U << 0) +#define ST25R3916_REG_RX_CONF1_hz_60_400khz (0U << 0) +#define ST25R3916_REG_RX_CONF1_hz_60_200khz (4U << 0) +#define ST25R3916_REG_RX_CONF1_hz_40_80khz (2U << 0) +#define ST25R3916_REG_RX_CONF1_hz_12_200khz (1U << 0) +#define ST25R3916_REG_RX_CONF1_hz_12_80khz (3U << 0) +#define ST25R3916_REG_RX_CONF1_hz_12_200khz_alt (5U << 0) +#define ST25R3916_REG_RX_CONF1_hz_600_400khz (8U << 0) +#define ST25R3916_REG_RX_CONF1_hz_600_200khz (12U << 0) +#define ST25R3916_REG_RX_CONF1_hz_mask (0xfU << 0) +#define ST25R3916_REG_RX_CONF1_hz_shift (0U) + +#define ST25R3916_REG_RX_CONF2_demod_mode (1U << 7) +#define ST25R3916_REG_RX_CONF2_amd_sel (1U << 6) +#define ST25R3916_REG_RX_CONF2_amd_sel_mixer (1U << 6) +#define ST25R3916_REG_RX_CONF2_amd_sel_peak (0U << 6) +#define ST25R3916_REG_RX_CONF2_sqm_dyn (1U << 5) +#define ST25R3916_REG_RX_CONF2_pulz_61 (1U << 4) +#define ST25R3916_REG_RX_CONF2_agc_en (1U << 3) +#define ST25R3916_REG_RX_CONF2_agc_m (1U << 2) +#define ST25R3916_REG_RX_CONF2_agc_alg (1U << 1) +#define ST25R3916_REG_RX_CONF2_agc6_3 (1U << 0) + +#define ST25R3916_REG_RX_CONF3_rg1_am2 (1U << 7) +#define ST25R3916_REG_RX_CONF3_rg1_am1 (1U << 6) +#define ST25R3916_REG_RX_CONF3_rg1_am0 (1U << 5) +#define ST25R3916_REG_RX_CONF3_rg1_am_mask (0x7U << 5) +#define ST25R3916_REG_RX_CONF3_rg1_am_shift (5U) +#define ST25R3916_REG_RX_CONF3_rg1_pm2 (1U << 4) +#define ST25R3916_REG_RX_CONF3_rg1_pm1 (1U << 3) +#define ST25R3916_REG_RX_CONF3_rg1_pm0 (1U << 2) +#define ST25R3916_REG_RX_CONF3_rg1_pm_mask (0x7U << 2) +#define ST25R3916_REG_RX_CONF3_rg1_pm_shift (2U) +#define ST25R3916_REG_RX_CONF3_lf_en (1U << 1) +#define ST25R3916_REG_RX_CONF3_lf_op (1U << 0) + +#define ST25R3916_REG_RX_CONF4_rg2_am3 (1U << 7) +#define ST25R3916_REG_RX_CONF4_rg2_am2 (1U << 6) +#define ST25R3916_REG_RX_CONF4_rg2_am1 (1U << 5) +#define ST25R3916_REG_RX_CONF4_rg2_am0 (1U << 4) +#define ST25R3916_REG_RX_CONF4_rg2_am_mask (0xfU << 4) +#define ST25R3916_REG_RX_CONF4_rg2_am_shift (4U) +#define ST25R3916_REG_RX_CONF4_rg2_pm3 (1U << 3) +#define ST25R3916_REG_RX_CONF4_rg2_pm2 (1U << 2) +#define ST25R3916_REG_RX_CONF4_rg2_pm1 (1U << 1) +#define ST25R3916_REG_RX_CONF4_rg2_pm0 (1U << 0) +#define ST25R3916_REG_RX_CONF4_rg2_pm_mask (0xfU << 0) +#define ST25R3916_REG_RX_CONF4_rg2_pm_shift (0U) + +#define ST25R3916_REG_P2P_RX_CONF_ook_fd (1U << 7) +#define ST25R3916_REG_P2P_RX_CONF_ook_rc1 (1U << 6) +#define ST25R3916_REG_P2P_RX_CONF_ook_rc0 (1U << 5) +#define ST25R3916_REG_P2P_RX_CONF_ook_thd1 (1U << 4) +#define ST25R3916_REG_P2P_RX_CONF_ook_thd0 (1U << 3) +#define ST25R3916_REG_P2P_RX_CONF_ask_rc1 (1U << 2) +#define ST25R3916_REG_P2P_RX_CONF_ask_rc0 (1U << 1) +#define ST25R3916_REG_P2P_RX_CONF_ask_thd (1U << 0) + +#define ST25R3916_REG_CORR_CONF1_corr_s7 (1U << 7) +#define ST25R3916_REG_CORR_CONF1_corr_s6 (1U << 6) +#define ST25R3916_REG_CORR_CONF1_corr_s5 (1U << 5) +#define ST25R3916_REG_CORR_CONF1_corr_s4 (1U << 4) +#define ST25R3916_REG_CORR_CONF1_corr_s3 (1U << 3) +#define ST25R3916_REG_CORR_CONF1_corr_s2 (1U << 2) +#define ST25R3916_REG_CORR_CONF1_corr_s1 (1U << 1) +#define ST25R3916_REG_CORR_CONF1_corr_s0 (1U << 0) + +#define ST25R3916_REG_CORR_CONF2_rfu5 (1U << 7) +#define ST25R3916_REG_CORR_CONF2_rfu4 (1U << 6) +#define ST25R3916_REG_CORR_CONF2_rfu3 (1U << 5) +#define ST25R3916_REG_CORR_CONF2_rfu2 (1U << 4) +#define ST25R3916_REG_CORR_CONF2_rfu1 (1U << 3) +#define ST25R3916_REG_CORR_CONF2_rfu0 (1U << 2) +#define ST25R3916_REG_CORR_CONF2_corr_s9 (1U << 1) +#define ST25R3916_REG_CORR_CONF2_corr_s8 (1U << 0) + +#define ST25R3916_REG_TIMER_EMV_CONTROL_gptc2 (1U << 7) +#define ST25R3916_REG_TIMER_EMV_CONTROL_gptc1 (1U << 6) +#define ST25R3916_REG_TIMER_EMV_CONTROL_gptc0 (1U << 5) +#define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_no_trigger (0U << 5) +#define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_erx (1U << 5) +#define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_srx (2U << 5) +#define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_etx_nfc (3U << 5) +#define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_mask (7U << 5) +#define ST25R3916_REG_TIMER_EMV_CONTROL_gptc_shift (5U) +#define ST25R3916_REG_TIMER_EMV_CONTROL_rfu (1U << 4) +#define ST25R3916_REG_TIMER_EMV_CONTROL_mrt_step (1U << 3) +#define ST25R3916_REG_TIMER_EMV_CONTROL_mrt_step_512 (1U << 3) +#define ST25R3916_REG_TIMER_EMV_CONTROL_mrt_step_64 (0U << 3) +#define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_nfc (1U << 2) +#define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_nfc_on (1U << 2) +#define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_nfc_off (0U << 2) +#define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_emv (1U << 1) +#define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_emv_on (1U << 1) +#define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_emv_off (0U << 1) +#define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_step (1U << 0) +#define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_step_64fc (0U << 0) +#define ST25R3916_REG_TIMER_EMV_CONTROL_nrt_step_4096_fc (1U << 0) + +#define ST25R3916_REG_FIFO_STATUS2_fifo_b9 (1U << 7) +#define ST25R3916_REG_FIFO_STATUS2_fifo_b8 (1U << 6) +#define ST25R3916_REG_FIFO_STATUS2_fifo_b_mask (3U << 6) +#define ST25R3916_REG_FIFO_STATUS2_fifo_b_shift (6U) +#define ST25R3916_REG_FIFO_STATUS2_fifo_unf (1U << 5) +#define ST25R3916_REG_FIFO_STATUS2_fifo_ovr (1U << 4) +#define ST25R3916_REG_FIFO_STATUS2_fifo_lb2 (1U << 3) +#define ST25R3916_REG_FIFO_STATUS2_fifo_lb1 (1U << 2) +#define ST25R3916_REG_FIFO_STATUS2_fifo_lb0 (1U << 1) +#define ST25R3916_REG_FIFO_STATUS2_fifo_lb_mask (7U << 1) +#define ST25R3916_REG_FIFO_STATUS2_fifo_lb_shift (1U) +#define ST25R3916_REG_FIFO_STATUS2_np_lb (1U << 0) + +#define ST25R3916_REG_COLLISION_STATUS_c_byte3 (1U << 7) +#define ST25R3916_REG_COLLISION_STATUS_c_byte2 (1U << 6) +#define ST25R3916_REG_COLLISION_STATUS_c_byte1 (1U << 5) +#define ST25R3916_REG_COLLISION_STATUS_c_byte0 (1U << 4) +#define ST25R3916_REG_COLLISION_STATUS_c_byte_mask (0xfU << 4) +#define ST25R3916_REG_COLLISION_STATUS_c_byte_shift (4U) +#define ST25R3916_REG_COLLISION_STATUS_c_bit2 (1U << 3) +#define ST25R3916_REG_COLLISION_STATUS_c_bit1 (1U << 2) +#define ST25R3916_REG_COLLISION_STATUS_c_bit0 (1U << 1) +#define ST25R3916_REG_COLLISION_STATUS_c_pb (1U << 0) +#define ST25R3916_REG_COLLISION_STATUS_c_bit_mask (3U << 1) +#define ST25R3916_REG_COLLISION_STATUS_c_bit_shift (1U) + +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_rfu (1U << 7) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_rfu1 (1U << 6) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_rfu2 (1U << 5) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_rfu3 (1U << 4) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state3 (1U << 3) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state2 (1U << 2) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state1 (1U << 1) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state0 (1U << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_power_off (0x0U << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_idle (0x1U << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_ready_l1 (0x2U << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_ready_l2 (0x3U << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_rfu4 (0x4U << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_active (0x5U << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_rfu6 (0x6U << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_rfu7 (0x7U << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_rfu8 (0x8U << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_halt (0x9U << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_ready_l1_x (0xaU << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_ready_l2_x (0xbU << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_rfu12 (0xcU << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_st_active_x (0xdU << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state_mask (0xfU << 0) +#define ST25R3916_REG_PASSIVE_TARGET_STATUS_pta_state_shift (0U) + +#define ST25R3916_REG_NUM_TX_BYTES2_ntx4 (1U << 7) +#define ST25R3916_REG_NUM_TX_BYTES2_ntx3 (1U << 6) +#define ST25R3916_REG_NUM_TX_BYTES2_ntx2 (1U << 5) +#define ST25R3916_REG_NUM_TX_BYTES2_ntx1 (1U << 4) +#define ST25R3916_REG_NUM_TX_BYTES2_ntx0 (1U << 3) +#define ST25R3916_REG_NUM_TX_BYTES2_ntx_mask (0x1fU << 3) +#define ST25R3916_REG_NUM_TX_BYTES2_ntx_shift (3U) +#define ST25R3916_REG_NUM_TX_BYTES2_nbtx2 (1U << 2) +#define ST25R3916_REG_NUM_TX_BYTES2_nbtx1 (1U << 1) +#define ST25R3916_REG_NUM_TX_BYTES2_nbtx0 (1U << 0) +#define ST25R3916_REG_NUM_TX_BYTES2_nbtx_mask (7U << 0) +#define ST25R3916_REG_NUM_TX_BYTES2_nbtx_shift (0U) + +#define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rfu1 (1U << 7) +#define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rfu0 (1U << 6) +#define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rate1 (1U << 5) +#define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rate0 (1U << 4) +#define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rate_mask (0x3U << 4) +#define ST25R3916_REG_NFCIP1_BIT_RATE_nfc_rate_shift (4U) +#define ST25R3916_REG_NFCIP1_BIT_RATE_ppt2_on (1U << 3) +#define ST25R3916_REG_NFCIP1_BIT_RATE_gpt_on (1U << 2) +#define ST25R3916_REG_NFCIP1_BIT_RATE_nrt_on (1U << 1) +#define ST25R3916_REG_NFCIP1_BIT_RATE_mrt_on (1U << 0) + +#define ST25R3916_REG_TX_DRIVER_am_mod3 (1U << 7) +#define ST25R3916_REG_TX_DRIVER_am_mod2 (1U << 6) +#define ST25R3916_REG_TX_DRIVER_am_mod1 (1U << 5) +#define ST25R3916_REG_TX_DRIVER_am_mod0 (1U << 4) +#if defined(ST25R3916) +#define ST25R3916_REG_TX_DRIVER_am_mod_5percent (0x0U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_6percent (0x1U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_7percent (0x2U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_8percent (0x3U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_9percent (0x4U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_10percent (0x5U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_11percent (0x6U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_12percent (0x7U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_13percent (0x8U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_14percent (0x9U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_15percent (0xaU << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_17percent (0xbU << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_19percent (0xcU << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_22percent (0xdU << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_26percent (0xeU << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_40percent (0xfU << 4) +#elif defined(ST25R3916B) +#define ST25R3916_REG_TX_DRIVER_am_mod_0percent (0x0U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_8percent (0x1U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_10percent (0x2U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_11percent (0x3U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_12percent (0x4U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_13percent (0x5U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_14percent (0x6U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_15percent (0x7U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_20percent (0x8U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_25percent (0x9U << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_30percent (0xaU << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_40percent (0xbU << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_50percent (0xcU << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_60percent (0xdU << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_70percent (0xeU << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_82percent (0xfU << 4) +#endif +#define ST25R3916_REG_TX_DRIVER_am_mod_mask (0xfU << 4) +#define ST25R3916_REG_TX_DRIVER_am_mod_shift (4U) +#define ST25R3916_REG_TX_DRIVER_d_res3 (1U << 3) +#define ST25R3916_REG_TX_DRIVER_d_res2 (1U << 2) +#define ST25R3916_REG_TX_DRIVER_d_res1 (1U << 1) +#define ST25R3916_REG_TX_DRIVER_d_res0 (1U << 0) +#define ST25R3916_REG_TX_DRIVER_d_res_mask (0xfU << 0) +#define ST25R3916_REG_TX_DRIVER_d_res_shift (0U) + +#define ST25R3916_REG_PT_MOD_ptm_res3 (1U << 7) +#define ST25R3916_REG_PT_MOD_ptm_res2 (1U << 6) +#define ST25R3916_REG_PT_MOD_ptm_res1 (1U << 5) +#define ST25R3916_REG_PT_MOD_ptm_res0 (1U << 4) +#define ST25R3916_REG_PT_MOD_ptm_res_mask (0xfU << 4) +#define ST25R3916_REG_PT_MOD_ptm_res_shift (4U) +#define ST25R3916_REG_PT_MOD_pt_res3 (1U << 3) +#define ST25R3916_REG_PT_MOD_pt_res2 (1U << 2) +#define ST25R3916_REG_PT_MOD_pt_res1 (1U << 1) +#define ST25R3916_REG_PT_MOD_pt_res0 (1U << 0) +#define ST25R3916_REG_PT_MOD_pt_res_mask (0xfU << 0) +#define ST25R3916_REG_PT_MOD_pt_res_shift (0U) + +#define ST25R3916_REG_AUX_MOD_dis_reg_am (1U << 7) +#define ST25R3916_REG_AUX_MOD_lm_ext_pol (1U << 6) +#define ST25R3916_REG_AUX_MOD_lm_ext (1U << 5) +#define ST25R3916_REG_AUX_MOD_lm_dri (1U << 4) +#define ST25R3916_REG_AUX_MOD_res_am (1U << 3) +#if defined(ST25R3916) +#define ST25R3916_REG_AUX_MOD_rfu2 (1U << 2) +#elif defined(ST25R3916B) +#define ST25R3916_REG_AUX_MOD_rgs_am (1U << 2) +#endif /* ST25R3916B */ +#define ST25R3916_REG_AUX_MOD_rfu1 (1U << 1) +#define ST25R3916_REG_AUX_MOD_rfu0 (1U << 0) + +#define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_t3 (1U << 7) +#define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_t2 (1U << 6) +#define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_t1 (1U << 5) +#define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_t0 (1U << 4) +#define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_mask (0xfU << 4) +#define ST25R3916_REG_TX_DRIVER_TIMING_d_rat_shift (4U) +#define ST25R3916_REG_TX_DRIVER_TIMING_rfu (1U << 3) +#define ST25R3916_REG_TX_DRIVER_TIMING_d_tim_m2 (1U << 2) +#define ST25R3916_REG_TX_DRIVER_TIMING_d_tim_m1 (1U << 1) +#define ST25R3916_REG_TX_DRIVER_TIMING_d_tim_m0 (1U << 0) +#define ST25R3916_REG_TX_DRIVER_TIMING_d_tim_m_mask (0x7U << 0) +#define ST25R3916_REG_TX_DRIVER_TIMING_d_tim_m_shift (0U) + +#define ST25R3916_REG_RES_AM_MOD_fa3_f (1U << 7) +#define ST25R3916_REG_RES_AM_MOD_md_res6 (1U << 6) +#define ST25R3916_REG_RES_AM_MOD_md_res5 (1U << 5) +#define ST25R3916_REG_RES_AM_MOD_md_res4 (1U << 4) +#define ST25R3916_REG_RES_AM_MOD_md_res3 (1U << 3) +#define ST25R3916_REG_RES_AM_MOD_md_res2 (1U << 2) +#define ST25R3916_REG_RES_AM_MOD_md_res1 (1U << 1) +#define ST25R3916_REG_RES_AM_MOD_md_res0 (1U << 0) +#define ST25R3916_REG_RES_AM_MOD_md_res_mask (0x7FU << 0) +#define ST25R3916_REG_RES_AM_MOD_md_res_shift (0U) + +#define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_r3 (1U << 7) +#define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_r2 (1U << 6) +#define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_r1 (1U << 5) +#define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_r0 (1U << 4) +#define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_mask (0xfU << 4) +#define ST25R3916_REG_TX_DRIVER_STATUS_d_rat_shift (4U) +#define ST25R3916_REG_TX_DRIVER_STATUS_rfu (1U << 3) +#define ST25R3916_REG_TX_DRIVER_STATUS_d_tim_r2 (1U << 2) +#define ST25R3916_REG_TX_DRIVER_STATUS_d_tim_r1 (1U << 1) +#define ST25R3916_REG_TX_DRIVER_STATUS_d_tim_r0 (1U << 0) +#define ST25R3916_REG_TX_DRIVER_STATUS_d_tim_mask (0x7U << 0) +#define ST25R3916_REG_TX_DRIVER_STATUS_d_tim_shift (0U) + +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_l2a (1U << 6) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_l1a (1U << 5) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_l0a (1U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_75mV (0x0U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_105mV (0x1U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_150mV (0x2U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_205mV (0x3U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_290mV (0x4U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_400mV (0x5U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_560mV (0x6U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_800mV (0x7U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_mask (7U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_trg_shift (4U) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_t3a (1U << 3) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_t2a (1U << 2) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_t1a (1U << 1) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_t0a (1U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_75mV (0x0U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_105mV (0x1U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_150mV (0x2U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_205mV (0x3U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_290mV (0x4U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_400mV (0x5U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_560mV (0x6U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_800mV (0x7U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_25mV (0x8U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_33mV (0x9U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_47mV (0xAU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_64mV (0xBU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_90mV (0xCU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_125mV (0xDU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_175mV (0xEU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_250mV (0xFU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_mask (0xfU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_ACTV_rfe_shift (0U) + +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_l2d (1U << 6) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_l1d (1U << 5) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_l0d (1U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_75mV (0x0U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_105mV (0x1U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_150mV (0x2U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_205mV (0x3U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_290mV (0x4U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_400mV (0x5U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_560mV (0x6U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_800mV (0x7U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_mask (7U << 4) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_trg_shift (4U) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_t3d (1U << 3) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_t2d (1U << 2) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_t1d (1U << 1) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_t0d (1U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_75mV (0x0U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_105mV (0x1U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_150mV (0x2U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_205mV (0x3U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_290mV (0x4U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_400mV (0x5U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_560mV (0x6U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_800mV (0x7U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_25mV (0x8U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_33mV (0x9U << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_47mV (0xAU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_64mV (0xBU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_90mV (0xCU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_125mV (0xDU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_175mV (0xEU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_250mV (0xFU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_mask (0xfU << 0) +#define ST25R3916_REG_FIELD_THRESHOLD_DEACTV_rfe_shift (0U) + +#define ST25R3916_REG_REGULATOR_CONTROL_reg_s (1U << 7) +#define ST25R3916_REG_REGULATOR_CONTROL_rege_3 (1U << 6) +#define ST25R3916_REG_REGULATOR_CONTROL_rege_2 (1U << 5) +#define ST25R3916_REG_REGULATOR_CONTROL_rege_1 (1U << 4) +#define ST25R3916_REG_REGULATOR_CONTROL_rege_0 (1U << 3) +#define ST25R3916_REG_REGULATOR_CONTROL_rege_mask (0xfU << 3) +#define ST25R3916_REG_REGULATOR_CONTROL_rege_shift (3U) +#define ST25R3916_REG_REGULATOR_CONTROL_mpsv2 (2U << 2) +#define ST25R3916_REG_REGULATOR_CONTROL_mpsv1 (1U << 1) +#define ST25R3916_REG_REGULATOR_CONTROL_mpsv0 (1U << 0) +#define ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd (0U) +#define ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_a (1U) +#define ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_d (2U) +#define ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_rf (3U) +#define ST25R3916_REG_REGULATOR_CONTROL_mpsv_vdd_am (4U) +#define ST25R3916_REG_REGULATOR_CONTROL_rfu (5U) +#define ST25R3916_REG_REGULATOR_CONTROL_rfu1 (6U) +#define ST25R3916_REG_REGULATOR_CONTROL_rfu2 (7U) +#define ST25R3916_REG_REGULATOR_CONTROL_mpsv_mask (7U) +#define ST25R3916_REG_REGULATOR_CONTROL_mpsv_shift (0U) + +#define ST25R3916_REG_REGULATOR_RESULT_reg_3 (1U << 7) +#define ST25R3916_REG_REGULATOR_RESULT_reg_2 (1U << 6) +#define ST25R3916_REG_REGULATOR_RESULT_reg_1 (1U << 5) +#define ST25R3916_REG_REGULATOR_RESULT_reg_0 (1U << 4) +#define ST25R3916_REG_REGULATOR_RESULT_reg_mask (0xfU << 4) +#define ST25R3916_REG_REGULATOR_RESULT_reg_shift (4U) +#define ST25R3916_REG_REGULATOR_RESULT_i_lim (1U << 0) + +#define ST25R3916_REG_RSSI_RESULT_rssi_am_3 (1U << 7) +#define ST25R3916_REG_RSSI_RESULT_rssi_am_2 (1U << 6) +#define ST25R3916_REG_RSSI_RESULT_rssi_am_1 (1U << 5) +#define ST25R3916_REG_RSSI_RESULT_rssi_am_0 (1U << 4) +#define ST25R3916_REG_RSSI_RESULT_rssi_am_mask (0xfU << 4) +#define ST25R3916_REG_RSSI_RESULT_rssi_am_shift (4U) +#define ST25R3916_REG_RSSI_RESULT_rssi_pm3 (1U << 3) +#define ST25R3916_REG_RSSI_RESULT_rssi_pm2 (1U << 2) +#define ST25R3916_REG_RSSI_RESULT_rssi_pm1 (1U << 1) +#define ST25R3916_REG_RSSI_RESULT_rssi_pm0 (1U << 0) +#define ST25R3916_REG_RSSI_RESULT_rssi_pm_mask (0xfU << 0) +#define ST25R3916_REG_RSSI_RESULT_rssi_pm_shift (0U) + +#define ST25R3916_REG_GAIN_RED_STATE_gs_am_3 (1U << 7) +#define ST25R3916_REG_GAIN_RED_STATE_gs_am_2 (1U << 6) +#define ST25R3916_REG_GAIN_RED_STATE_gs_am_1 (1U << 5) +#define ST25R3916_REG_GAIN_RED_STATE_gs_am_0 (1U << 4) +#define ST25R3916_REG_GAIN_RED_STATE_gs_am_mask (0xfU << 4) +#define ST25R3916_REG_GAIN_RED_STATE_gs_am_shift (4U) +#define ST25R3916_REG_GAIN_RED_STATE_gs_pm_3 (1U << 3) +#define ST25R3916_REG_GAIN_RED_STATE_gs_pm_2 (1U << 2) +#define ST25R3916_REG_GAIN_RED_STATE_gs_pm_1 (1U << 1) +#define ST25R3916_REG_GAIN_RED_STATE_gs_pm_0 (1U << 0) +#define ST25R3916_REG_GAIN_RED_STATE_gs_pm_mask (0xfU << 0) +#define ST25R3916_REG_GAIN_RED_STATE_gs_pm_shift (0U) + +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal4 (1U << 7) +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal3 (1U << 6) +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal2 (1U << 5) +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal1 (1U << 4) +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal0 (1U << 3) +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal_mask (0x1fU << 3) +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_mcal_shift (3U) +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_g2 (1U << 2) +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_g1 (1U << 1) +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_g0 (1U << 0) +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_g_mask (7U << 0) +#define ST25R3916_REG_CAP_SENSOR_CONTROL_cs_g_shift (0U) + +#define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal4 (1U << 7) +#define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal3 (1U << 6) +#define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal2 (1U << 5) +#define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal1 (1U << 4) +#define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal0 (1U << 3) +#define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_mask (0x1fU << 3) +#define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_shift (3U) +#define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_end (1U << 2) +#define ST25R3916_REG_CAP_SENSOR_RESULT_cs_cal_err (1U << 1) + +#define ST25R3916_REG_AUX_DISPLAY_a_cha (1U << 7) +#define ST25R3916_REG_AUX_DISPLAY_efd_o (1U << 6) +#define ST25R3916_REG_AUX_DISPLAY_tx_on (1U << 5) +#define ST25R3916_REG_AUX_DISPLAY_osc_ok (1U << 4) +#define ST25R3916_REG_AUX_DISPLAY_rx_on (1U << 3) +#define ST25R3916_REG_AUX_DISPLAY_rx_act (1U << 2) +#define ST25R3916_REG_AUX_DISPLAY_en_peer (1U << 1) +#define ST25R3916_REG_AUX_DISPLAY_en_ac (1U << 0) + +#define ST25R3916_REG_OVERSHOOT_CONF1_ov_tx_mode1 (1U << 7) +#define ST25R3916_REG_OVERSHOOT_CONF1_ov_tx_mode0 (1U << 6) +#define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern13 (1U << 5) +#define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern12 (1U << 4) +#define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern11 (1U << 3) +#define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern10 (1U << 2) +#define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern9 (1U << 1) +#define ST25R3916_REG_OVERSHOOT_CONF1_ov_pattern8 (1U << 0) + +#define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern7 (1U << 7) +#define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern6 (1U << 6) +#define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern5 (1U << 5) +#define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern4 (1U << 4) +#define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern3 (1U << 3) +#define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern2 (1U << 2) +#define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern1 (1U << 1) +#define ST25R3916_REG_OVERSHOOT_CONF2_ov_pattern0 (1U << 0) + +#define ST25R3916_REG_UNDERSHOOT_CONF1_un_tx_mode1 (1U << 7) +#define ST25R3916_REG_UNDERSHOOT_CONF1_un_tx_mode0 (1U << 6) +#define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern13 (1U << 5) +#define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern12 (1U << 4) +#define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern11 (1U << 3) +#define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern10 (1U << 2) +#define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern9 (1U << 1) +#define ST25R3916_REG_UNDERSHOOT_CONF1_un_pattern8 (1U << 0) + +#define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern7 (1U << 7) +#define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern6 (1U << 6) +#define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern5 (1U << 5) +#define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern4 (1U << 4) +#define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern3 (1U << 3) +#define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern2 (1U << 2) +#define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern1 (1U << 1) +#define ST25R3916_REG_UNDERSHOOT_CONF2_un_pattern0 (1U << 0) + +#ifdef ST25R3916B + +#define ST25R3916_REG_AWS_CONF1_rfu3 (1U << 7) +#define ST25R3916_REG_AWS_CONF1_rfu2 (1U << 6) +#define ST25R3916_REG_AWS_CONF1_rfu1 (1U << 5) +#define ST25R3916_REG_AWS_CONF1_rfu0 (1U << 4) +#define ST25R3916_REG_AWS_CONF1_vddrf_cont (1U << 3) +#define ST25R3916_REG_AWS_CONF1_rfam_sep_rx (1U << 2) +#define ST25R3916_REG_AWS_CONF1_vddrf_rx_only (1U << 1) +#define ST25R3916_REG_AWS_CONF1_rgs_txonoff (1U << 0) + +#define ST25R3916_REG_AWS_CONF2_rfu1 (1U << 7) +#define ST25R3916_REG_AWS_CONF2_rfu0 (1U << 6) +#define ST25R3916_REG_AWS_CONF2_am_sym (1U << 5) +#define ST25R3916_REG_AWS_CONF2_en_modsink (1U << 4) +#define ST25R3916_REG_AWS_CONF2_am_filt3 (1U << 3) +#define ST25R3916_REG_AWS_CONF2_am_filt2 (1U << 2) +#define ST25R3916_REG_AWS_CONF2_am_filt1 (1U << 1) +#define ST25R3916_REG_AWS_CONF2_am_filt0 (1U << 0) +#define ST25R3916_REG_AWS_CONF2_am_filt_mask (0xfU << 0) +#define ST25R3916_REG_AWS_CONF2_am_filt_shift (0U) + +#define ST25R3916_REG_AWS_TIME1_tholdx1_3 (1U << 7) +#define ST25R3916_REG_AWS_TIME1_tholdx1_2 (1U << 6) +#define ST25R3916_REG_AWS_TIME1_tholdx1_1 (1U << 5) +#define ST25R3916_REG_AWS_TIME1_tholdx1_0 (1U << 4) +#define ST25R3916_REG_AWS_TIME1_tmoddx1_mask (0xfU << 4) +#define ST25R3916_REG_AWS_TIME1_tmoddx1_shift (4U) +#define ST25R3916_REG_AWS_TIME1_tmodsw1_3 (1U << 3) +#define ST25R3916_REG_AWS_TIME1_tmodsw1_2 (1U << 2) +#define ST25R3916_REG_AWS_TIME1_tmodsw1_1 (1U << 1) +#define ST25R3916_REG_AWS_TIME1_tmodsw1_0 (1U << 0) +#define ST25R3916_REG_AWS_TIME1_tmodsw1_mask (0xfU << 0) +#define ST25R3916_REG_AWS_TIME1_tmodsw1_shift (0U) + +#define ST25R3916_REG_AWS_TIME2_tammod1_3 (1U << 7) +#define ST25R3916_REG_AWS_TIME2_tammod1_2 (1U << 6) +#define ST25R3916_REG_AWS_TIME2_tammod1_1 (1U << 5) +#define ST25R3916_REG_AWS_TIME2_tammod1_0 (1U << 4) +#define ST25R3916_REG_AWS_TIME2_tammod1_mask (0xfU << 4) +#define ST25R3916_REG_AWS_TIME2_tammod1_shift (4U) +#define ST25R3916_REG_AWS_TIME2_tdres1_3 (1U << 3) +#define ST25R3916_REG_AWS_TIME2_tdres1_2 (1U << 2) +#define ST25R3916_REG_AWS_TIME2_tdres1_1 (1U << 1) +#define ST25R3916_REG_AWS_TIME2_tdres1_0 (1U << 0) +#define ST25R3916_REG_AWS_TIME2_tdres1_mask (0xfU << 0) +#define ST25R3916_REG_AWS_TIME2_tdres1_shift (0U) + +#define ST25R3916_REG_AWS_TIME3_tentx1_3 (1U << 7) +#define ST25R3916_REG_AWS_TIME3_tentx1_2 (1U << 6) +#define ST25R3916_REG_AWS_TIME3_tentx1_1 (1U << 5) +#define ST25R3916_REG_AWS_TIME3_tentx1_0 (1U << 4) +#define ST25R3916_REG_AWS_TIME3_tentx1_mask (0xfU << 4) +#define ST25R3916_REG_AWS_TIME3_tentx1_shift (4U) +#define ST25R3916_REG_AWS_TIME3_tmods2_3 (1U << 3) +#define ST25R3916_REG_AWS_TIME3_tmods2_2 (1U << 2) +#define ST25R3916_REG_AWS_TIME3_tmods2_1 (1U << 1) +#define ST25R3916_REG_AWS_TIME3_tmods2_0 (1U << 0) +#define ST25R3916_REG_AWS_TIME3_tmods2_mask (0xfU << 0) +#define ST25R3916_REG_AWS_TIME3_tmods2_shift (0U) + +#define ST25R3916_REG_AWS_TIME4_tholdx2_3 (1U << 7) +#define ST25R3916_REG_AWS_TIME4_tholdx2_2 (1U << 6) +#define ST25R3916_REG_AWS_TIME4_tholdx2_1 (1U << 5) +#define ST25R3916_REG_AWS_TIME4_tholdx2_0 (1U << 4) +#define ST25R3916_REG_AWS_TIME4_tholdx2_mask (0xfU << 4) +#define ST25R3916_REG_AWS_TIME4_tholdx2_shift (4U) +#define ST25R3916_REG_AWS_TIME4_tmodsw2_3 (1U << 3) +#define ST25R3916_REG_AWS_TIME4_tmodsw2_2 (1U << 2) +#define ST25R3916_REG_AWS_TIME4_tmodsw2_1 (1U << 1) +#define ST25R3916_REG_AWS_TIME4_tmodsw2_0 (1U << 0) +#define ST25R3916_REG_AWS_TIME4_tmodsw2_mask (0xfU << 0) +#define ST25R3916_REG_AWS_TIME4_tmodsw2_shift (0U) + +#define ST25R3916_REG_AWS_TIME5_tdres2_3 (1U << 7) +#define ST25R3916_REG_AWS_TIME5_tdres2_2 (1U << 6) +#define ST25R3916_REG_AWS_TIME5_tdres2_1 (1U << 5) +#define ST25R3916_REG_AWS_TIME5_tdres2_0 (1U << 4) +#define ST25R3916_REG_AWS_TIME5_tdres2_mask (0xfU << 4) +#define ST25R3916_REG_AWS_TIME5_tdres2_shift (4U) +#define ST25R3916_REG_AWS_TIME5_trez2_3 (1U << 3) +#define ST25R3916_REG_AWS_TIME5_trez2_2 (1U << 2) +#define ST25R3916_REG_AWS_TIME5_trez2_1 (1U << 1) +#define ST25R3916_REG_AWS_TIME5_trez2_0 (1U << 0) +#define ST25R3916_REG_AWS_TIME5_trez2_mask (0xfU << 0) +#define ST25R3916_REG_AWS_TIME5_trez2_shift (0U) + +#define ST25R3916_REG_AWS_RC_CAL_rfu4 (1U << 7) +#define ST25R3916_REG_AWS_RC_CAL_rfu3 (1U << 6) +#define ST25R3916_REG_AWS_RC_CAL_rfu2 (1U << 5) +#define ST25R3916_REG_AWS_RC_CAL_rfu1 (1U << 4) +#define ST25R3916_REG_AWS_RC_CAL_rfu0 (1U << 3) +#define ST25R3916_REG_AWS_RC_CAL_rc_cal_ro_2 (1U << 2) +#define ST25R3916_REG_AWS_RC_CAL_rc_cal_ro_1 (1U << 1) +#define ST25R3916_REG_AWS_RC_CAL_rc_cal_ro_0 (1U << 0) +#define ST25R3916_REG_AWS_RC_CAL_rc_cal_ro_mask (0x7U << 0) +#define ST25R3916_REG_AWS_RC_CAL_rc_cal_ro_shift (0U) + +#endif /* ST25R3916B */ + +#define ST25R3916_REG_WUP_TIMER_CONTROL_wur (1U << 7) +#define ST25R3916_REG_WUP_TIMER_CONTROL_wut2 (1U << 6) +#define ST25R3916_REG_WUP_TIMER_CONTROL_wut1 (1U << 5) +#define ST25R3916_REG_WUP_TIMER_CONTROL_wut0 (1U << 4) +#define ST25R3916_REG_WUP_TIMER_CONTROL_wut_mask (7U << 4) +#define ST25R3916_REG_WUP_TIMER_CONTROL_wut_shift (4U) +#define ST25R3916_REG_WUP_TIMER_CONTROL_wto (1U << 3) +#define ST25R3916_REG_WUP_TIMER_CONTROL_wam (1U << 2) +#define ST25R3916_REG_WUP_TIMER_CONTROL_wph (1U << 1) +#if defined(ST25R3916) +#define ST25R3916_REG_WUP_TIMER_CONTROL_wcap (1U << 0) +#elif defined(ST25R3916B) +#define ST25R3916_REG_WUP_TIMER_CONTROL_rfu0 (1U << 0) +#endif /* ST25R3916 */ + +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d3 (1U << 7) +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d2 (1U << 6) +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d1 (1U << 5) +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d0 (1U << 4) +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d_mask (0xfU << 4) +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_d_shift (4U) +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aam (1U << 3) +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aew1 (1U << 2) +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aew0 (1U << 1) +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aew_mask (0x3U << 1) +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_aew_shift (1U) +#define ST25R3916_REG_AMPLITUDE_MEASURE_CONF_am_ae (1U << 0) + +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d3 (1U << 7) +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d2 (1U << 6) +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d1 (1U << 5) +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d0 (1U << 4) +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d_mask (0xfU << 4) +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_d_shift (4U) +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_aam (1U << 3) +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_aew1 (1U << 2) +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_aew0 (1U << 1) +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_aew_mask (0x3U << 1) +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_aew_shift (1U) +#define ST25R3916_REG_PHASE_MEASURE_CONF_pm_ae (1U << 0) + +#if defined(ST25R3916) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d3 (1U << 7) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d2 (1U << 6) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d1 (1U << 5) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d0 (1U << 4) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d_mask (0xfU << 4) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_d_shift (4U) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aam (1U << 3) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aew1 (1U << 2) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aew0 (1U << 1) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aew_mask (0x3U << 1) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_aew_shift (1U) +#define ST25R3916_REG_CAPACITANCE_MEASURE_CONF_cm_ae (1U << 0) +#elif defined(ST25R3916B) +#define ST25R3916_REG_MEAS_TX_DELAY_m_phase_ana (1U << 7) +#define ST25R3916_REG_MEAS_TX_DELAY_m_amp_ana (1U << 6) +#define ST25R3916_REG_MEAS_TX_DELAY_rfu1 (1U << 5) +#define ST25R3916_REG_MEAS_TX_DELAY_rfu0 (1U << 4) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del3 (1U << 3) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del2 (1U << 2) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del1 (1U << 1) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del0 (1U << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_0ms (0U << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_0_60ms (1U << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_1_21ms (2U << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_1_81ms (3U << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_2_42ms (4U << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_3_02ms (5U << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_3_62ms (6U << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_4_23ms (7U << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_4_83ms (8U << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_5_44ms (9U << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_6_44ms (0xAU << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_7_25ms (0xBU << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_8_46ms (0xCU << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_9_67ms (0xDU << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_10_87ms (0xEU << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_12_08ms (0xFU << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_mask (0xFU << 0) +#define ST25R3916_REG_MEAS_TX_DELAY_meas_tx_del_shift (0U) + +#endif /* ST25R3916 */ + +#define ST25R3916_REG_IC_IDENTITY_ic_type4 (1U << 7) +#define ST25R3916_REG_IC_IDENTITY_ic_type3 (1U << 6) +#define ST25R3916_REG_IC_IDENTITY_ic_type2 (1U << 5) +#define ST25R3916_REG_IC_IDENTITY_ic_type1 (1U << 4) +#define ST25R3916_REG_IC_IDENTITY_ic_type0 (1U << 3) +#define ST25R3916_REG_IC_IDENTITY_ic_type_st25r3916 (5U << 3) +#define ST25R3916_REG_IC_IDENTITY_ic_type_st25r3916B (6U << 3) +#define ST25R3916_REG_IC_IDENTITY_ic_type_mask (0x1fU << 3) +#define ST25R3916_REG_IC_IDENTITY_ic_type_shift (3U) +#define ST25R3916_REG_IC_IDENTITY_ic_rev2 (1U << 2) +#define ST25R3916_REG_IC_IDENTITY_ic_rev1 (1U << 1) +#define ST25R3916_REG_IC_IDENTITY_ic_rev0 (1U << 0) +#define ST25R3916_REG_IC_IDENTITY_ic_rev_v0 (0U << 0) +#define ST25R3916_REG_IC_IDENTITY_ic_rev_mask (7U << 0) +#define ST25R3916_REG_IC_IDENTITY_ic_rev_shift (0U) + +/*! \endcond DOXYGEN_SUPPRESS */ + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief Returns the content of a register within the ST25R3916 + * + * This function is used to read out the content of ST25R3916 registers. + * + * \param[in] reg: Address of register to read. + * \param[out] val: Returned value. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916ReadRegister(uint8_t reg, uint8_t* val); + +/*! + ***************************************************************************** + * \brief Reads from multiple ST25R3916 registers + * + * This function is used to read from multiple registers using the + * auto-increment feature. That is, after each read the address pointer + * inside the ST25R3916 gets incremented automatically. + * + * \param[in] reg: Address of the frist register to read from. + * \param[in] values: pointer to a buffer where the result shall be written + *to. \param[in] length: Number of registers to be read out. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916ReadMultipleRegisters(uint8_t reg, uint8_t* values, + uint8_t length); + +/*! + ***************************************************************************** + * \brief Writes a given value to a register within the ST25R3916 + * + * This function is used to write \a val to address \a reg within the + *ST25R3916. + * + * \param[in] reg: Address of the register to write. + * \param[in] val: Value to be written. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916WriteRegister(uint8_t reg, uint8_t val); + +/*! + ***************************************************************************** + * \brief Writes multiple values to ST25R3916 registers + * + * This function is used to write multiple values to the ST25R3916 using the + * auto-increment feature. That is, after each write the address pointer + * inside the ST25R3916 gets incremented automatically. + * + * \param[in] reg: Address of the frist register to write. + * \param[in] values: pointer to a buffer containing the values to be written. + * \param[in] length: Number of values to be written. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916WriteMultipleRegisters(uint8_t reg, const uint8_t* values, + uint8_t length); + +/*! + ***************************************************************************** + * \brief Writes values to ST25R3916 FIFO + * + * This function needs to be called in order to write to the ST25R3916 FIFO. + * + * \param[in] values: pointer to a buffer containing the values to be written + * to the FIFO. + * \param[in] length: Number of values to be written. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916WriteFifo(const uint8_t* values, uint16_t length); + +/*! + ***************************************************************************** + * \brief Read values from ST25R3916 FIFO + * + * This function needs to be called in order to read from ST25R3916 FIFO. + * + * \param[out] buf: pointer to a buffer where the FIFO content shall be + * written to. + * \param[in] length: Number of bytes to read. + * + * \note: This function doesn't check whether \a length is really the + * number of available bytes in FIFO + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916ReadFifo(uint8_t* buf, uint16_t length); + +/*! + ***************************************************************************** + * \brief Writes values to ST25R3916 PTM + * + * Accesses to the begging of ST25R3916 Passive Target Memory (PTM A Config) + * and writes the given values + * + * \param[in] values: pointer to a buffer containing the values to be written + * to the Passive Target Memory. + * \param[in] length: Number of values to be written. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916WritePTMem(const uint8_t* values, uint16_t length); + +/*! + ***************************************************************************** + * \brief Reads the ST25R3916 PTM + * + * Accesses to the begging of ST25R3916 Passive Target Memory (PTM A Config) + * and reads the memory for the given length + * + * \param[out] values: pointer to a buffer where the PTM content shall be + * written to. + * \param[in] length: Number of bytes to read. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916ReadPTMem(uint8_t* values, uint16_t length); + +/*! + ***************************************************************************** + * \brief Writes values to ST25R3916 PTM F config + * + * Accesses ST25R3916 Passive Target Memory F config and writes the given + *values + * + * \param[in] values: pointer to a buffer containing the values to be written + * to the Passive Target Memory + * \param[in] length: Number of values to be written. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916WritePTMemF(const uint8_t* values, uint16_t length); + +/*! + ***************************************************************************** + * \brief Writes values to ST25R3916 PTM TSN Data + * + * Accesses ST25R3916 Passive Target Memory TSN data and writes the given + *values + * + * \param[in] values: pointer to a buffer containing the values to be written + * to the Passive Target Memory. + * \param[in] length: Number of values to be written. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916WritePTMemTSN(const uint8_t* values, uint16_t length); + +/*! + ***************************************************************************** + * \brief Execute a direct command + * + * This function is used to start so-called direct command. These commands + * are implemented inside the chip and each command has unique code (see + * datasheet). + * + * \param[in] cmd : code of the direct command to be executed. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916ExecuteCommand(uint8_t cmd); + +/*! + ***************************************************************************** + * \brief Read a test register within the ST25R3916 + * + * This function is used to read the content of test address \a reg within the + *ST25R3916 + * + * \param[in] reg: Address of the register to read + * \param[out] val: Returned read value + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916ReadTestRegister(uint8_t reg, uint8_t* val); + +/*! + ***************************************************************************** + * \brief Writes a given value to a test register within the ST25R3916 + * + * This function is used to write \a val to test address \a reg within the + *ST25R3916 + * + * \param[in] reg: Address of the register to write + * \param[in] val: Value to be written + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916WriteTestRegister(uint8_t reg, uint8_t val); + +/*! + ***************************************************************************** + * \brief Cleart bits on Register + * + * This function clears the given bitmask on the register + * + * \param[in] reg: Address of the register clear + * \param[in] clr_mask: Bitmask of bit to be cleared + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916ClrRegisterBits(uint8_t reg, uint8_t clr_mask); + +/*! + ***************************************************************************** + * \brief Set bits on Register + * + * This function sets the given bitmask on the register + * + * \param[in] reg: Address of the register clear + * \param[in] set_mask: Bitmask of bit to be cleared + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916SetRegisterBits(uint8_t reg, uint8_t set_mask); + +/*! + ***************************************************************************** + * \brief Changes the given bits on a ST25R3916 register + * + * This function is used if only a particular bits should be changed within + * an ST25R3916 register. + * + * \param[in] reg: Address of the register to change. + * \param[in] valueMask: bitmask of bits to be changed + * \param[in] value: the bits to be written on the enabled valueMask bits + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916ChangeRegisterBits(uint8_t reg, uint8_t valueMask, + uint8_t value); + +/*! + ***************************************************************************** + * \brief Modifies a value within a ST25R3916 register + * + * This function is used if only a particular bits should be changed within + * an ST25R3916 register. + * + * \param[in] reg: Address of the register to write. + * \param[in] clr_mask: bitmask of bits to be cleared to 0. + * \param[in] set_mask: bitmask of bits to be set to 1. + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916ModifyRegister(uint8_t reg, uint8_t clr_mask, + uint8_t set_mask); + +/*! + ***************************************************************************** + * \brief Changes the given bits on a ST25R3916 Test register + * + * This function is used if only a particular bits should be changed within + * an ST25R3916 register. + * + * \param[in] reg: Address of the Test register to change. + * \param[in] valueMask: bitmask of bits to be changed + * \param[in] value: the bits to be written on the enabled valueMask bits + * + * \return RFAL_ERR_NONE : Operation successful + * \return RFAL_ERR_PARAM : Invalid parameter + * \return RFAL_ERR_SEND : Transmission error or acknowledge not received + ***************************************************************************** + */ +ReturnCode st25r3916ChangeTestRegisterBits(uint8_t reg, uint8_t valueMask, + uint8_t value); + +/*! + ***************************************************************************** + * \brief Checks if register contains a expected value + * + * This function checks if the given reg contains a value that once masked + * equals the expected value + * + * \param reg : the register to check the value + * \param mask : the mask apply on register value + * \param val : expected value to be compared to + * + * \return true when reg contains the expected value | false otherwise + */ +bool st25r3916CheckReg(uint8_t reg, uint8_t mask, uint8_t val); + +/*! + ***************************************************************************** + * \brief Check if register ID is valid + * + * Checks if the given register ID a valid ST25R3916 register + * + * \param[in] reg: Address of register to check + * + * \return true if is a valid register ID + * \return false otherwise + * + ***************************************************************************** + */ +bool st25r3916IsRegValid(uint8_t reg); + +#endif /* ST25R3916_COM_H */ + +/** + * @} + * + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_irq.c b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_irq.c new file mode 100644 index 0000000000..d9606555be --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_irq.c @@ -0,0 +1,232 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file + * + * \author Gustavo Patricio + * + * \brief ST25R3916 Interrupt handling + * + */ + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ + +#include "st25r3916_irq.h" +#include "rfal_utils.h" +#include "st25r3916.h" +#include "st25r3916_com.h" +#include "st25r3916_led.h" + +/* + ****************************************************************************** + * LOCAL DATA TYPES + ****************************************************************************** + */ + +/*! Holds current and previous interrupt callback pointer as well as current + * Interrupt status and mask */ +typedef struct { + void (*prevCallback)(void); /*!< call back function for ST25R3916 interrupt */ + void (*callback)(void); /*!< call back function for ST25R3916 interrupt */ + uint32_t status; /*!< latest interrupt status */ + uint32_t mask; /*!< Interrupt mask. Negative mask = ST25R3916 mask regs */ +} st25r3916Interrupt; + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ + +/*! Length of the interrupt registers */ +#define ST25R3916_INT_REGS_LEN \ + ((ST25R3916_REG_IRQ_TARGET - ST25R3916_REG_IRQ_MAIN) + 1U) + +/* +****************************************************************************** +* GLOBAL VARIABLES +****************************************************************************** +*/ + +static volatile st25r3916Interrupt + st25r3916interrupt; /*!< Instance of ST25R3916 interrupt */ + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ +void st25r3916InitInterrupts(void) { + platformIrqST25RPinInitialize(); + platformIrqST25RSetCallback(st25r3916Isr); + + st25r3916interrupt.callback = NULL; + st25r3916interrupt.prevCallback = NULL; + st25r3916interrupt.status = ST25R3916_IRQ_MASK_NONE; + st25r3916interrupt.mask = ST25R3916_IRQ_MASK_NONE; +} + +/*******************************************************************************/ +void st25r3916Isr(void) { + st25r3916CheckForReceivedInterrupts(); + + // Check if callback is set and run it + if (NULL != st25r3916interrupt.callback) { + st25r3916interrupt.callback(); + } +} + +/*******************************************************************************/ +void st25r3916CheckForReceivedInterrupts(void) { + uint8_t iregs[ST25R3916_INT_REGS_LEN]; + uint32_t irqStatus; + + /* Initialize iregs */ + irqStatus = ST25R3916_IRQ_MASK_NONE; + RFAL_MEMSET(iregs, (int32_t)(ST25R3916_IRQ_MASK_ALL & 0xFFU), + ST25R3916_INT_REGS_LEN); + + /* In case the IRQ is Edge (not Level) triggered read IRQs until done */ + while (platformGpioIsHigh(ST25R_INT_PORT, ST25R_INT_PIN)) { + st25r3916ReadMultipleRegisters(ST25R3916_REG_IRQ_MAIN, iregs, + ST25R3916_INT_REGS_LEN); + + irqStatus |= (uint32_t)iregs[0]; + irqStatus |= (uint32_t)iregs[1] << 8; + irqStatus |= (uint32_t)iregs[2] << 16; + irqStatus |= (uint32_t)iregs[3] << 24; + } + + /* Forward all interrupts, even masked ones to application */ + platformProtectST25RIrqStatus(); + st25r3916interrupt.status |= irqStatus; + platformUnprotectST25RIrqStatus(); + + /* Send an IRQ event to LED handling */ + st25r3916ledEvtIrq(st25r3916interrupt.status); +} + +/*******************************************************************************/ +void st25r3916ModifyInterrupts(uint32_t clr_mask, uint32_t set_mask) { + uint8_t i; + uint32_t old_mask; + uint32_t new_mask; + + old_mask = st25r3916interrupt.mask; + new_mask = ((~old_mask & set_mask) | (old_mask & clr_mask)); + st25r3916interrupt.mask &= ~clr_mask; + st25r3916interrupt.mask |= set_mask; + + for (i = 0; i < ST25R3916_INT_REGS_LEN; i++) { + if (((new_mask >> (8U * i)) & 0xFFU) == 0U) { + continue; + } + + st25r3916WriteRegister( + ST25R3916_REG_IRQ_MASK_MAIN + i, + (uint8_t)((st25r3916interrupt.mask >> (8U * i)) & 0xFFU)); + } + return; +} + +/*******************************************************************************/ +uint32_t st25r3916WaitForInterruptsTimed(uint32_t mask, uint16_t tmo) { + uint32_t tmrDelay; + uint32_t status; + + tmrDelay = platformTimerCreate(tmo); + + /* Run until specific interrupt has happen or the timer has expired */ + do { + status = (st25r3916interrupt.status & mask); + } while (((!platformTimerIsExpired(tmrDelay)) || (tmo == 0U)) && + (status == 0U)); + + platformTimerDestroy(tmrDelay); + + status = st25r3916interrupt.status & mask; + + platformProtectST25RIrqStatus(); + st25r3916interrupt.status &= ~status; + platformUnprotectST25RIrqStatus(); + + return status; +} + +/*******************************************************************************/ +uint32_t st25r3916GetInterrupt(uint32_t mask) { + uint32_t irqs; + + irqs = (st25r3916interrupt.status & mask); + if (irqs != ST25R3916_IRQ_MASK_NONE) { + platformProtectST25RIrqStatus(); + st25r3916interrupt.status &= ~irqs; + platformUnprotectST25RIrqStatus(); + } + + return irqs; +} + +/*******************************************************************************/ +void st25r3916ClearAndEnableInterrupts(uint32_t mask) { + st25r3916GetInterrupt(mask); + st25r3916EnableInterrupts(mask); +} + +/*******************************************************************************/ +void st25r3916EnableInterrupts(uint32_t mask) { + st25r3916ModifyInterrupts(mask, 0); +} + +/*******************************************************************************/ +void st25r3916DisableInterrupts(uint32_t mask) { + st25r3916ModifyInterrupts(0, mask); +} + +/*******************************************************************************/ +void st25r3916ClearInterrupts(void) { + uint8_t iregs[ST25R3916_INT_REGS_LEN]; + + st25r3916ReadMultipleRegisters(ST25R3916_REG_IRQ_MAIN, iregs, + ST25R3916_INT_REGS_LEN); + + platformProtectST25RIrqStatus(); + st25r3916interrupt.status = ST25R3916_IRQ_MASK_NONE; + platformUnprotectST25RIrqStatus(); + return; +} + +/*******************************************************************************/ +void st25r3916IRQCallbackSet(void (*cb)(void)) { + st25r3916interrupt.prevCallback = st25r3916interrupt.callback; + st25r3916interrupt.callback = cb; +} + +/*******************************************************************************/ +void st25r3916IRQCallbackRestore(void) { + st25r3916interrupt.callback = st25r3916interrupt.prevCallback; + st25r3916interrupt.prevCallback = NULL; +} diff --git a/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_irq.h b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_irq.h new file mode 100644 index 0000000000..d2224d7426 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_irq.h @@ -0,0 +1,312 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file + * + * \author Gustavo Patricio + * + * \brief ST25R3916 Interrupt handling + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-HAL + * \brief RFAL Hardware Abstraction Layer + * @{ + * + * \addtogroup ST25R3916 + * \brief RFAL ST25R3916 Driver + * @{ + * + * \addtogroup ST25R3916_IRQ + * \brief RFAL ST25R3916 IRQ + * @{ + * + */ + +#ifndef ST25R3916_IRQ_H +#define ST25R3916_IRQ_H + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ + +#include "rfal_platform.h" + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ + +#define ST25R3916_IRQ_MASK_ALL \ + (uint32_t)(0xFFFFFFFFUL) /*!< All ST25R3916 interrupt sources */ +#define ST25R3916_IRQ_MASK_NONE \ + (uint32_t)(0x00000000UL) /*!< No ST25R3916 interrupt source */ + +/* Main interrupt register */ +#define ST25R3916_IRQ_MASK_OSC \ + (uint32_t)(0x00000080U) /*!< ST25R3916 oscillator stable interrupt */ +#define ST25R3916_IRQ_MASK_FWL \ + (uint32_t)(0x00000040U) /*!< ST25R3916 FIFO water level interrupt */ +#define ST25R3916_IRQ_MASK_RXS \ + (uint32_t)(0x00000020U) /*!< ST25R3916 start of receive interrupt */ +#define ST25R3916_IRQ_MASK_RXE \ + (uint32_t)(0x00000010U) /*!< ST25R3916 end of receive interrupt */ +#define ST25R3916_IRQ_MASK_TXE \ + (uint32_t)(0x00000008U) /*!< ST25R3916 end of transmission interrupt */ +#define ST25R3916_IRQ_MASK_COL \ + (uint32_t)(0x00000004U) /*!< ST25R3916 bit collision interrupt */ +#define ST25R3916_IRQ_MASK_RX_REST \ + (uint32_t)( \ + 0x00000002U) /*!< ST25R3916 automatic reception restart interrupt */ +#define ST25R3916_IRQ_MASK_RFU \ + (uint32_t)(0x00000001U) /*!< ST25R3916 RFU interrupt */ + +/* Timer and NFC interrupt register */ +#define ST25R3916_IRQ_MASK_DCT \ + (uint32_t)( \ + 0x00008000U) /*!< ST25R3916 termination of direct command interrupt. */ +#define ST25R3916_IRQ_MASK_NRE \ + (uint32_t)(0x00004000U) /*!< ST25R3916 no-response timer expired interrupt \ + */ +#define ST25R3916_IRQ_MASK_GPE \ + (uint32_t)( \ + 0x00002000U) /*!< ST25R3916 general purpose timer expired interrupt */ +#define ST25R3916_IRQ_MASK_EON \ + (uint32_t)(0x00001000U) /*!< ST25R3916 external field on interrupt */ +#define ST25R3916_IRQ_MASK_EOF \ + (uint32_t)(0x00000800U) /*!< ST25R3916 external field off interrupt */ +#define ST25R3916_IRQ_MASK_CAC \ + (uint32_t)(0x00000400U) /*!< ST25R3916 collision during RF collision \ + avoidance interrupt */ +#define ST25R3916_IRQ_MASK_CAT \ + (uint32_t)(0x00000200U) /*!< ST25R3916 minimum guard time expired interrupt \ + */ +#define ST25R3916_IRQ_MASK_NFCT \ + (uint32_t)( \ + 0x00000100U) /*!< ST25R3916 initiator bit rate recognised interrupt */ + +/* Error and wake-up interrupt register */ +#define ST25R3916_IRQ_MASK_CRC \ + (uint32_t)(0x00800000U) /*!< ST25R3916 CRC error interrupt */ +#define ST25R3916_IRQ_MASK_PAR \ + (uint32_t)(0x00400000U) /*!< ST25R3916 parity error interrupt */ +#define ST25R3916_IRQ_MASK_ERR2 \ + (uint32_t)(0x00200000U) /*!< ST25R3916 soft framing error interrupt */ +#define ST25R3916_IRQ_MASK_ERR1 \ + (uint32_t)(0x00100000U) /*!< ST25R3916 hard framing error interrupt */ +#define ST25R3916_IRQ_MASK_WT \ + (uint32_t)(0x00080000U) /*!< ST25R3916 wake-up interrupt */ +#define ST25R3916_IRQ_MASK_WAM \ + (uint32_t)(0x00040000U) /*!< ST25R3916 wake-up due to amplitude interrupt */ +#define ST25R3916_IRQ_MASK_WPH \ + (uint32_t)(0x00020000U) /*!< ST25R3916 wake-up due to phase interrupt */ +#if defined(ST25R3916) +#define ST25R3916_IRQ_MASK_WCAP \ + (uint32_t)( \ + 0x00010000U) /*!< ST25R3916 wake-up due to capacitance measurement */ +#elif defined(ST25R3916B) +#define ST25R3916_IRQ_MASK_WCAP \ + ST25R3916_IRQ_MASK_NONE /*!< ST25R3916B disable capacitive WU */ +#endif /* ST25R3916 */ + +/* Passive Target Interrupt Register */ +#define ST25R3916_IRQ_MASK_PPON2 \ + (uint32_t)( \ + 0x80000000U) /*!< ST25R3916 PPON2 Field on waiting Timer interrupt */ +#define ST25R3916_IRQ_MASK_SL_WL \ + (uint32_t)(0x40000000U) /*!< ST25R3916 Passive target slot number water \ + level interrupt */ +#define ST25R3916_IRQ_MASK_APON \ + (uint32_t)( \ + 0x20000000U) /*!< ST25R3916 Anticollision done and Field On interrupt */ +#define ST25R3916_IRQ_MASK_RXE_PTA \ + (uint32_t)( \ + 0x10000000U) /*!< ST25R3916 RXE with an automatic response interrupt */ +#define ST25R3916_IRQ_MASK_WU_F \ + (uint32_t)(0x08000000U) /*!< ST25R3916 212/424b/s Passive target interrupt: \ + Active */ +#define ST25R3916_IRQ_MASK_RFU2 \ + (uint32_t)(0x04000000U) /*!< ST25R3916 RFU2 interrupt */ +#define ST25R3916_IRQ_MASK_WU_A_X \ + (uint32_t)(0x02000000U) /*!< ST25R3916 106kb/s Passive target state \ + interrupt: Active* */ +#define ST25R3916_IRQ_MASK_WU_A \ + (uint32_t)(0x01000000U) /*!< ST25R3916 106kb/s Passive target state \ + interrupt: Active */ + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief Wait until an ST25R3916 interrupt occurs + * + * This function is used to access the ST25R3916 interrupt flags. Use this + * to wait for max. \a tmo milliseconds for the \b first interrupt indicated + * with mask \a mask to occur. + * + * \param[in] mask : mask indicating the interrupts to wait for. + * \param[in] tmo : time in milliseconds until timeout occurs. If set to 0 + * the functions waits forever. + * + * \return : 0 if timeout occured otherwise a mask indicating the cleared + * interrupts. + * + ***************************************************************************** + */ +uint32_t st25r3916WaitForInterruptsTimed(uint32_t mask, uint16_t tmo); + +/*! + ***************************************************************************** + * \brief Get status for the given interrupt + * + * This function is used to check whether the interrupt given by \a mask + * has occured. If yes the interrupt gets cleared. This function returns + * only status bits which are inside \a mask. + * + * \param[in] mask : mask indicating the interrupt to check for. + * + * \return the mask of the interrupts occurred + * + ***************************************************************************** + */ +uint32_t st25r3916GetInterrupt(uint32_t mask); + +/*! + ***************************************************************************** + * \brief Init the 3916 interrupt + * + * This function is used to check whether the interrupt given by \a mask + * has occured. + * + ***************************************************************************** + */ +void st25r3916InitInterrupts(void); + +/*! + ***************************************************************************** + * \brief Modifies the Interrupt + * + * This function modifies the interrupt + * + * \param[in] clr_mask : bit mask to be cleared on the interrupt mask + * \param[in] set_mask : bit mask to be set on the interrupt mask + ***************************************************************************** + */ +void st25r3916ModifyInterrupts(uint32_t clr_mask, uint32_t set_mask); + +/*! + ***************************************************************************** + * \brief Checks received interrupts + * + * Checks received interrupts and saves the result into global params + ***************************************************************************** + */ +void st25r3916CheckForReceivedInterrupts(void); + +/*! + ***************************************************************************** + * \brief ISR Service routine + * + * This function modiefies the interupt + ***************************************************************************** + */ +void st25r3916Isr(void); + +/*! + ***************************************************************************** + * \brief Enable a given ST25R3916 Interrupt source + * + * This function enables all interrupts given by \a mask, + * ST25R3916_IRQ_MASK_ALL enables all interrupts. + * + * \param[in] mask: mask indicating the interrupts to be enabled + * + ***************************************************************************** + */ +void st25r3916EnableInterrupts(uint32_t mask); + +/*! + ***************************************************************************** + * \brief Disable one or more a given ST25R3916 Interrupt sources + * + * This function disables all interrupts given by \a mask. 0xff disables all. + * + * \param[in] mask: mask indicating the interrupts to be disabled. + * + ***************************************************************************** + */ +void st25r3916DisableInterrupts(uint32_t mask); + +/*! + ***************************************************************************** + * \brief Clear all ST25R3916 irq flags + * + ***************************************************************************** + */ +void st25r3916ClearInterrupts(void); + +/*! + ***************************************************************************** + * \brief Clears and then enables the given ST25R3916 Interrupt sources + * + * \param[in] mask: mask indicating the interrupts to be cleared and enabled + ***************************************************************************** + */ +void st25r3916ClearAndEnableInterrupts(uint32_t mask); + +/*! + ***************************************************************************** + * \brief Sets IRQ callback for the ST25R3916 interrupt + * + * \param[in] cb: pointer to the callback method + * + ***************************************************************************** + */ +void st25r3916IRQCallbackSet(void (*cb)(void)); + +/*! + ***************************************************************************** + * \brief Sets IRQ callback for the ST25R3916 interrupt + * + ***************************************************************************** + */ +void st25r3916IRQCallbackRestore(void); + +#endif /* ST25R3916_IRQ_H */ + +/** + * @} + * + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_led.c b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_led.c new file mode 100644 index 0000000000..0bf66c88a7 --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_led.c @@ -0,0 +1,162 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file + * + * \author Gustavo Patricio + * + * \brief ST25R3916 LEDs handling + * + */ + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ + +#include "st25r3916_led.h" +#include "st25r3916.h" +#include "st25r3916_com.h" +#include "st25r3916_irq.h" + +/* +****************************************************************************** +* MACROS +****************************************************************************** +*/ + +#ifdef PLATFORM_LED_RX_PIN +#define st25r3916ledRxOn() \ + platformLedOn(PLATFORM_LED_RX_PORT, \ + PLATFORM_LED_RX_PIN); /*!< LED Rx Pin On from system HAL */ +#define st25r3916ledRxOff() \ + platformLedOff(PLATFORM_LED_RX_PORT, \ + PLATFORM_LED_RX_PIN); /*!< LED Rx Pin Off from system HAL */ +#else /* PLATFORM_LED_RX_PIN */ +#define st25r3916ledRxOn() +#define st25r3916ledRxOff() +#endif /* PLATFORM_LED_RX_PIN */ + +#ifdef PLATFORM_LED_FIELD_PIN +#define st25r3916ledFieldOn() \ + platformLedOn( \ + PLATFORM_LED_FIELD_PORT, \ + PLATFORM_LED_FIELD_PIN); /*!< LED Field Pin On from system HAL */ +#define st25r3916ledFieldOff() \ + platformLedOff( \ + PLATFORM_LED_FIELD_PORT, \ + PLATFORM_LED_FIELD_PIN); /*!< LED Field Pin Off from system HAL */ +#else /* PLATFORM_LED_FIELD_PIN */ +#define st25r3916ledFieldOn() +#define st25r3916ledFieldOff() +#endif /* PLATFORM_LED_FIELD_PIN */ + +#ifdef PLATFORM_LED_ERR_PIN +#define st25r3916ledErrOn() \ + platformLedOn( \ + PLATFORM_LED_ERR_PORT, \ + PLATFORM_LED_ERR_PIN); /*!< LED Field Pin On from system HAL */ +#define st25r3916ledErrOff() \ + platformLedOff( \ + PLATFORM_LED_ERR_PORT, \ + PLATFORM_LED_ERR_PIN); /*!< LED Field Pin Off from system HAL */ +#else /* PLATFORM_LED_ERR_PIN */ +#define st25r3916ledErrOn() +#define st25r3916ledErrOff() +#endif /* PLATFORM_LED_ERR_PIN */ + +/* +****************************************************************************** +* GLOBAL FUNCTIONS +****************************************************************************** +*/ + +void st25r3916ledInit(void) { + /* Initialize LEDs if existing and defined */ + platformLedsInitialize(); + + st25r3916ledRxOff(); + st25r3916ledFieldOff(); + st25r3916ledErrOff(); +} + +/*******************************************************************************/ +void st25r3916ledEvtIrq(uint32_t irqs) { + if ((irqs & (ST25R3916_IRQ_MASK_TXE | ST25R3916_IRQ_MASK_CAT)) != 0U) { + st25r3916ledFieldOn(); + st25r3916ledErrOff(); + } + + if ((irqs & (ST25R3916_IRQ_MASK_RXS | ST25R3916_IRQ_MASK_NFCT)) != 0U) { + st25r3916ledRxOn(); + } + + if ((irqs & (ST25R3916_IRQ_MASK_RXE | ST25R3916_IRQ_MASK_NRE | + ST25R3916_IRQ_MASK_RX_REST | ST25R3916_IRQ_MASK_RXE_PTA | + ST25R3916_IRQ_MASK_WU_A | ST25R3916_IRQ_MASK_WU_A_X | + ST25R3916_IRQ_MASK_WU_F | ST25R3916_IRQ_MASK_RFU2)) != 0U) { + st25r3916ledRxOff(); + } + + if (((irqs & (ST25R3916_IRQ_MASK_CRC | ST25R3916_IRQ_MASK_PAR | + ST25R3916_IRQ_MASK_ERR1 | ST25R3916_IRQ_MASK_ERR2)) != 0U)) { + st25r3916ledErrOn(); + } +} + +/*******************************************************************************/ +void st25r3916ledEvtWrReg(uint8_t reg, uint8_t val) { + if (reg == ST25R3916_REG_OP_CONTROL) { + if ((ST25R3916_REG_OP_CONTROL_tx_en & val) != 0U) { + st25r3916ledFieldOn(); + } else { + st25r3916ledFieldOff(); + } + } +} + +/*******************************************************************************/ +void st25r3916ledEvtWrMultiReg(uint8_t reg, const uint8_t* vals, uint8_t len) { + uint8_t i; + + for (i = 0; i < (len); i++) { + st25r3916ledEvtWrReg((reg + i), vals[i]); + } +} + +/*******************************************************************************/ +void st25r3916ledEvtCmd(uint8_t cmd) { + if ((cmd >= ST25R3916_CMD_TRANSMIT_WITH_CRC) && + (cmd <= ST25R3916_CMD_RESPONSE_RF_COLLISION_N)) { + st25r3916ledFieldOff(); + } + + if (cmd == ST25R3916_CMD_UNMASK_RECEIVE_DATA) { + st25r3916ledRxOff(); + } + + if (cmd == ST25R3916_CMD_SET_DEFAULT) { + st25r3916ledFieldOff(); + st25r3916ledRxOff(); + } +} diff --git a/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_led.h b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_led.h new file mode 100644 index 0000000000..ffc58ba2aa --- /dev/null +++ b/core/embed/io/nfc/rfal/source/st25r3916/st25r3916_led.h @@ -0,0 +1,145 @@ + +/****************************************************************************** + * @attention + * + * COPYRIGHT 2016 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ + +/* + * PROJECT: ST25R3916 firmware + * Revision: + * LANGUAGE: ISO C99 + */ + +/*! \file + * + * \author Gustavo Patricio + * + * \brief ST25R3916 LEDs handling + * + * + * \addtogroup RFAL + * @{ + * + * \addtogroup RFAL-HAL + * \brief RFAL Hardware Abstraction Layer + * @{ + * + * \addtogroup ST25R3916 + * \brief RFAL ST25R3916 Driver + * @{ + * + * \addtogroup ST25R3916_LED + * \brief RFAL ST25R3916 LED + * @{ + * + */ + +#ifndef ST25R3916_LED_H +#define ST25R3916_LED_H + +/* +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ + +#include "rfal_platform.h" + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ + +/* +****************************************************************************** +* GLOBAL FUNCTION PROTOTYPES +****************************************************************************** +*/ + +/*! + ***************************************************************************** + * \brief ST25R3916 LED Initialize + * + * This function initializes the LEDs that represent ST25R3916 activity + * + ***************************************************************************** + */ +void st25r3916ledInit(void); + +/*! + ***************************************************************************** + * \brief ST25R3916 LED Event Interrupt + * + * This function should be called upon a ST25R3916 Interrupt, providing + * the interrupt event with ST25R3916 irq flags to update LEDs + * + * \param[in] irqs: ST25R3916 irqs mask + * + ***************************************************************************** + */ +void st25r3916ledEvtIrq(uint32_t irqs); + +/*! + ***************************************************************************** + * \brief ST25R3916 LED Event Write Register + * + * This function should be called on a ST25R3916 Write Register operation + * providing the event with the register and value to update LEDs + * + * \param[in] reg: ST25R3916 register to be written + * \param[in] val: value to be written on the register + * + ***************************************************************************** + */ +void st25r3916ledEvtWrReg(uint8_t reg, uint8_t val); + +/*! + ***************************************************************************** + * \brief ST25R3916 LED Event Write Multiple Register + * + * This function should be called upon a ST25R3916 Write Multiple Registers, + * providing the event with the registers and values to update LEDs + * + * \param[in] reg : ST25R3916 first register written + * \param[in] vals: pointer to the values written + * \param[in] len : number of registers written + * + ***************************************************************************** + */ +void st25r3916ledEvtWrMultiReg(uint8_t reg, const uint8_t* vals, uint8_t len); + +/*! + ***************************************************************************** + * \brief ST25R3916 LED Event Direct Command + * + * This function should be called upon a ST25R3916 direct command, providing + * the event with the command executed + * + * \param[in] cmd: ST25R3916 cmd executed + * + ***************************************************************************** + */ +void st25r3916ledEvtCmd(uint8_t cmd); + +#endif /* ST25R3916_LED_H */ + +/** + * @} + * + * @} + * + * @} + * + * @} + */ diff --git a/core/embed/io/nfc/st25r3916b/nfc.c b/core/embed/io/nfc/st25r3916b/nfc.c new file mode 100644 index 0000000000..95547e5ad0 --- /dev/null +++ b/core/embed/io/nfc/st25r3916b/nfc.c @@ -0,0 +1,306 @@ + +#include +#include +#include +#include + +#include "../inc/io/nfc.h" +#include "nfc_internal.h" +#include "rfal_platform.h" + +#include "../rfal/include/rfal_nfca.h" +#include "../rfal/include/rfal_rf.h" +#include "../rfal/include/rfal_utils.h" + +#include "stm32u5xx_hal.h" + +typedef struct { + bool initialized; + // SPI driver + SPI_HandleTypeDef hspi; + // NFC IRQ pin callback + void (*nfc_irq_callback)(void); + EXTI_HandleTypeDef hEXTI; +} st25r3916b_driver_t; + +static st25r3916b_driver_t g_st25r3916b_driver = { + .initialized = false, +}; + +nfc_status_t nfc_init() { + st25r3916b_driver_t *drv = &g_st25r3916b_driver; + + if (drv->initialized) { + return NFC_OK; + } + + // Enable clock of relevant peripherals + // SPI + GPIO ports + SPI_INSTANCE_3_CLK_EN(); + SPI_INSTANCE_3_MISO_CLK_EN(); + SPI_INSTANCE_3_MOSI_CLK_EN(); + SPI_INSTANCE_3_SCK_CLK_EN(); + SPI_INSTANCE_3_NSS_CLK_EN(); + + // SPI peripheral pin config + GPIO_InitTypeDef GPIO_InitStruct = {0}; + GPIO_InitStruct.Mode = GPIO_MODE_AF_PP; + GPIO_InitStruct.Pull = GPIO_NOPULL; + GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct.Alternate = SPI_INSTANCE_3_PIN_AF; + + GPIO_InitStruct.Pin = SPI_INSTANCE_3_MISO_PIN; + HAL_GPIO_Init(SPI_INSTANCE_3_MISO_PORT, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = SPI_INSTANCE_3_MOSI_PIN; + HAL_GPIO_Init(SPI_INSTANCE_3_MOSI_PORT, &GPIO_InitStruct); + + GPIO_InitStruct.Pin = SPI_INSTANCE_3_SCK_PIN; + HAL_GPIO_Init(SPI_INSTANCE_3_SCK_PORT, &GPIO_InitStruct); + + // NSS pin controled by software, set as classical GPIO + GPIO_InitTypeDef GPIO_InitStruct_nss = {0}; + GPIO_InitStruct_nss.Mode = GPIO_MODE_OUTPUT_PP; + GPIO_InitStruct_nss.Pull = GPIO_NOPULL; + GPIO_InitStruct_nss.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStruct_nss.Pin = SPI_INSTANCE_3_NSS_PIN; + HAL_GPIO_Init(SPI_INSTANCE_3_NSS_PORT, &GPIO_InitStruct_nss); + + // NFC IRQ pin + GPIO_InitTypeDef GPIO_InitStructure_int = {0}; + GPIO_InitStructure_int.Mode = GPIO_MODE_INPUT; + GPIO_InitStructure_int.Pull = GPIO_PULLDOWN; + GPIO_InitStructure_int.Speed = GPIO_SPEED_FREQ_LOW; + GPIO_InitStructure_int.Pin = NFC_INT_PIN; + HAL_GPIO_Init(NFC_INT_PORT, &GPIO_InitStructure_int); + + memset(&(drv->hspi), 0, sizeof(drv->hspi)); + + drv->hspi.Instance = SPI_INSTANCE_3; + drv->hspi.Init.Mode = SPI_MODE_MASTER; + drv->hspi.Init.BaudRatePrescaler = + SPI_BAUDRATEPRESCALER_32; // TODO: Calculate frequency precisly. + drv->hspi.Init.DataSize = SPI_DATASIZE_8BIT; + drv->hspi.Init.Direction = SPI_DIRECTION_2LINES; + drv->hspi.Init.CLKPolarity = SPI_POLARITY_LOW; + drv->hspi.Init.CLKPhase = SPI_PHASE_2EDGE; + drv->hspi.Init.NSS = SPI_NSS_SOFT; // For rfal lib purpose, use software NSS + drv->hspi.Init.NSSPolarity = SPI_NSS_POLARITY_LOW; + drv->hspi.Init.NSSPMode = SPI_NSS_PULSE_DISABLE; + + EXTI_ConfigTypeDef EXTI_Config = {0}; + EXTI_Config.GPIOSel = NFC_EXTI_INTERRUPT_GPIOSEL; + EXTI_Config.Line = NFC_EXTI_INTERRUPT_LINE; + EXTI_Config.Mode = EXTI_MODE_INTERRUPT; + EXTI_Config.Trigger = EXTI_TRIGGER_RISING; + HAL_EXTI_SetConfigLine(&drv->hEXTI, &EXTI_Config); + NVIC_SetPriority(NFC_EXTI_INTERRUPT_NUM, IRQ_PRI_NORMAL); + __HAL_GPIO_EXTI_CLEAR_FLAG(NFC_INT_PIN); + NVIC_EnableIRQ(NFC_EXTI_INTERRUPT_NUM); + + HAL_StatusTypeDef status; + + status = HAL_SPI_Init(&(drv->hspi)); + + if (status != HAL_OK) { + return false; + } + + ReturnCode ret_code = rfalInitialize(); + if (ret_code != RFAL_ERR_NONE) { + return NFC_INITIALIZATION_FAILED; + } + + drv->initialized = true; + + return NFC_OK; +} + +nfc_status_t nfc_deinit() { + st25r3916b_driver_t *drv = &g_st25r3916b_driver; + + if (!drv->initialized) { + return NFC_OK; + } + + HAL_EXTI_ClearConfigLine(&drv->hEXTI); + NVIC_DisableIRQ(NFC_EXTI_INTERRUPT_NUM); + + ReturnCode ret_code = rfalDeinitialize(); + + if (ret_code != RFAL_ERR_NONE) { + return NFC_ERROR; + } + + HAL_SPI_DeInit(&(drv->hspi)); + + HAL_GPIO_DeInit(SPI_INSTANCE_3_MISO_PORT, SPI_INSTANCE_3_MISO_PIN); + HAL_GPIO_DeInit(SPI_INSTANCE_3_MOSI_PORT, SPI_INSTANCE_3_MOSI_PIN); + HAL_GPIO_DeInit(SPI_INSTANCE_3_SCK_PORT, SPI_INSTANCE_3_SCK_PIN); + HAL_GPIO_DeInit(SPI_INSTANCE_3_NSS_PORT, SPI_INSTANCE_3_NSS_PIN); + HAL_GPIO_DeInit(NFC_INT_PORT, NFC_INT_PIN); + + drv->initialized = false; + + return NFC_OK; +} + +HAL_StatusTypeDef nfc_spi_transmit_receive(const uint8_t *txData, + uint8_t *rxData, uint16_t length) { + st25r3916b_driver_t *drv = &g_st25r3916b_driver; + HAL_StatusTypeDef status; + + if ((txData != NULL) && (rxData == NULL)) { + status = HAL_SPI_Transmit(&(drv->hspi), (uint8_t *)txData, length, 1000); + } else if ((txData == NULL) && (rxData != NULL)) { + status = HAL_SPI_Receive(&(drv->hspi), rxData, length, 1000); + } else { + status = HAL_SPI_TransmitReceive(&(drv->hspi), (uint8_t *)txData, rxData, + length, 1000); + } + + return status; +} + +uint32_t nfc_create_timer(uint16_t time) { return (systick_ms() + time); } + +bool nfc_timer_is_expired(uint32_t timer) { + + uint32_t u_diff; + int32_t s_diff; + + u_diff = (timer - systick_ms()); // Calculate the diff between the timers + s_diff = u_diff; // Convert the diff to a signed var + + // Check if the given timer has expired already + if (s_diff < 0) { + return true; + } + + return false; +} + +void nfc_ext_irq_set_callback(void (*cb)(void)) { + st25r3916b_driver_t *drv = &g_st25r3916b_driver; + drv->nfc_irq_callback = cb; +} + +void NFC_EXTI_INTERRUPT_HANDLER(void) { + st25r3916b_driver_t *drv = &g_st25r3916b_driver; + + // Clear the EXTI line pending bit + __HAL_GPIO_EXTI_CLEAR_FLAG(NFC_INT_PIN); + if (drv->nfc_irq_callback != NULL) { + drv->nfc_irq_callback(); + } +} + +#define EXAMPLE_NFCA_DEVICES 10 + +void nfc_poll_type_A() { + /* + ****************************************************************************** + * GLOBAL FUNCTIONS + ****************************************************************************** + */ + ReturnCode err; + rfalNfcaSensRes sensRes; + rfalNfcaSelRes selRes; + rfalNfcaListenDevice nfcaDevList[EXAMPLE_NFCA_DEVICES]; + uint8_t devCnt; + uint8_t devIt; + + rfalInitialize(); + + for (;;) { + rfalFieldOff(); /* Turn the Field Off */ + platformDelay(500); + rfalNfcaPollerInitialize(); /* Initialize RFAL for NFC-A */ + rfalFieldOnAndStartGT(); /* Turns the Field On and starts GT timer */ + + /*******************************************************************************/ + /* Perform NFC-A Technology detection */ + err = rfalNfcaPollerTechnologyDetection( + RFAL_COMPLIANCE_MODE_NFC, &sensRes); /* Poll for nearby NFC-A devices */ + + if (err == RFAL_ERR_NONE) /* NFC-A type card found */ + { + return; + /*******************************************************************************/ + /* Perform NFC-A Collision Resolution */ + err = rfalNfcaPollerFullCollisionResolution( + RFAL_COMPLIANCE_MODE_NFC, EXAMPLE_NFCA_DEVICES, nfcaDevList, + &devCnt); /* Perform collision avoidance */ + if ((err == RFAL_ERR_NONE) && (devCnt > 0)) { + platformLog("NFC-A device(s) found %d\r\n", devCnt); + devIt = 0; /* Use the first device on the list */ + /*******************************************************************************/ + /* Check if desired device is in Sleep */ + if (nfcaDevList[devIt].isSleep) { + err = rfalNfcaPollerCheckPresence(RFAL_14443A_SHORTFRAME_CMD_WUPA, + &sensRes); /* Wake up all cards */ + if (err != RFAL_ERR_NONE) { + continue; + } + err = rfalNfcaPollerSelect(nfcaDevList[devIt].nfcId1, + nfcaDevList[devIt].nfcId1Len, + &selRes); /* Select specific device */ + if (err != RFAL_ERR_NONE) { + continue; + } + } + /*******************************************************************************/ + /* Perform protocol specific activation */ + switch (nfcaDevList[devIt].type) { + case RFAL_NFCA_T1T: + /* No further activation needed for a T1T (RID already + * performed)*/ + platformLog( + "NFC-A T1T device found \r\n"); /* NFC-A T1T device fained in: + t1tRidRes.uid */ + /* Following communications shall be performed using: + * - Non blocking: rfalStartTransceive() + + * rfalGetTransceiveState() + * - Blocking: rfalTransceiveBlockingTx() + + * rfalTransceiveBlockingRx() or rfalTransceiveBlockingTxRx() */ + break; + case RFAL_NFCA_T2T: + /* No specific activation needed for a T2T */ + platformLog( + "NFC-A T2T device found \r\n"); /* NFC-A T2T device found, + NFCID/UID is contained in: + nfcaDev.nfcid */ + /* Following communications shall be perforound, + NFCID/UID is contmed using: + * - Non blocking: rfalStartTransceive() + + * rfalGetTransceiveState() + * - Blocking: rfalTransceiveBlockingTx() + + * rfalTransceiveBlockingRx() or rfalTransceiveBlockingTxRx() */ + break; + case RFAL_NFCA_T4T: + platformLog( + "NFC-A T4T (ISO-DEP) device found \r\n"); /* NFC-A T4T device + found, NFCID/UID + is contained in: + nfcaDev.nfcid */ + /* Activation should continue using + * rfalIsoDepPollAHandleActivation(), see exampleRfalPoller.c */ + break; + case RFAL_NFCA_T4T_NFCDEP: /* Device supports T4T and NFC-DEP */ + case RFAL_NFCA_NFCDEP: /* Device supports NFC-DEP */ + platformLog( + "NFC-A P2P (NFC-DEP) device found \r\n"); /* NFC-A P2P device + found, NFCID/UID + is contained in: + nfcaDev.nfcid */ + /* Activation should continue using + * rfalNfcDepInitiatorHandleActivation(), see exampleRfalPoller.c + */ + break; + } + rfalNfcaPollerSleep(); /* Put device to sleep / HLTA (useless as the + field will be turned off anyhow) */ + } + } + } +} diff --git a/core/embed/io/nfc/st25r3916b/nfc_internal.h b/core/embed/io/nfc/st25r3916b/nfc_internal.h new file mode 100644 index 0000000000..579a786efa --- /dev/null +++ b/core/embed/io/nfc/st25r3916b/nfc_internal.h @@ -0,0 +1,16 @@ + +#include + +#ifndef TREZORHAL_NFC_INTERNAL_H +#define TREZORHAL_NFC_INTERNAL_H + +HAL_StatusTypeDef nfc_spi_transmit_receive(const uint8_t *txData, + uint8_t *rxData, uint16_t length); + +uint32_t nfc_create_timer(uint16_t time); + +bool nfc_timer_is_expired(uint32_t timer); + +void nfc_ext_irq_set_callback(void (*cb)(void)); + +#endif diff --git a/core/embed/io/nfc/st25r3916b/rfal_platform.h b/core/embed/io/nfc/st25r3916b/rfal_platform.h new file mode 100644 index 0000000000..d410e93001 --- /dev/null +++ b/core/embed/io/nfc/st25r3916b/rfal_platform.h @@ -0,0 +1,296 @@ +/****************************************************************************** + * @attention + * + * COPYRIGHT 2018 STMicroelectronics, all rights reserved + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, + * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. + * See the License for the specific language governing permissions and + * limitations under the License. + * + ******************************************************************************/ +/*! \file + * + * \author + * + * \brief Platform header file. Defining platform independent functionality. + * + */ + +#ifndef RFAL_PLATFORM_H +#define RFAL_PLATFORM_H + +#ifdef __cplusplus +extern "C" { +#endif + +/*ReturnCode +****************************************************************************** +* INCLUDES +****************************************************************************** +*/ + +#include +#include "stm32u5xx_hal.h" + +#include +#include +#include +#include +#include +#include + +#include "io/nfc.h" +#include "nfc_internal.h" + +/* +****************************************************************************** +* GLOBAL DEFINES +****************************************************************************** +*/ + +// Device type definition +#define ST25R3916B + +// GPIO pin used for ST25R SPI SS +#define ST25R_SS_PIN SPI_INSTANCE_3_NSS_PIN + +// GPIO port used for ST25R SPI SS port +#define ST25R_SS_PORT SPI_INSTANCE_3_NSS_PORT + +// GPIO pin used for ST25R External Interrupt +#define ST25R_INT_PIN NFC_INT_PIN + +// GPIO port used for ST25R External Interrupt +#define ST25R_INT_PORT NFC_INT_PORT + +/* +****************************************************************************** +* GLOBAL MACROS +****************************************************************************** +*/ +#define platformProtectST25RComm() \ + NVIC_DisableIRQ(EXTI10_IRQn) // TODO: PRobably should be irq_lock instead // + // Protect the unique access to communication + // channel (disable IRQ on single thread) + +#define platformUnprotectST25RComm() \ + NVIC_EnableIRQ(EXTI10_IRQn) // TODO: Use macro here / + +#define platformProtectST25RIrqStatus() \ + platformProtectST25RComm() /*!< Protect unique access to IRQ status var - \ + IRQ disable on single thread environment (MCU) \ + ; Mutex lock on a multi thread environment */ +#define platformUnprotectST25RIrqStatus() \ + platformUnprotectST25RComm() /*!< Unprotect the IRQ status var - IRQ enable \ + on a single thread environment (MCU) ; Mutex \ + unlock on a multi thread environment */ + +// Turns the given GPIO High +#define platformGpioSet(port, pin) HAL_GPIO_WritePin(port, pin, GPIO_PIN_SET) + +// Turns the given GPIO Low +#define platformGpioClear(port, pin) \ + HAL_GPIO_WritePin(port, pin, GPIO_PIN_RESET) + +// Toggles the given GPIO +#define platformGpioToggle(port, pin) HAL_GPIO_TogglePin(port, pin) + +// Checks if the given LED is High +#define platformGpioIsHigh(port, pin) \ + (HAL_GPIO_ReadPin(port, pin) == GPIO_PIN_SET) + +// Checks if the given LED is Low +#define platformGpioIsLow(port, pin) (!platformGpioIsHigh(port, pin)) + +// Create a timer with the given time (ms) +#define platformTimerCreate(t) nfc_create_timer(t) + +// Checks if the given timer is expired +#define platformTimerIsExpired(timer) nfc_timer_is_expired(timer) + +// Performs a delay for the given time (ms) +#define platformDelay(t) HAL_Delay(t) + +// Get System Tick ( 1 tick = 1 ms) +#define platformGetSysTick() HAL_GetTick() + +// Asserts whether the given expression is true +#define platformAssert(exp) assert_param(exp) + +#define platformErrorHandle() //_Error_Handler(__FILE__, __LINE__) /*!< Global + // error handle\trap */ + +#define platformIrqST25RSetCallback(cb) nfc_ext_irq_set_callback(cb) + +// SPI SS\CS: Chip|Slave Select +#define platformSpiSelect() \ + HAL_GPIO_WritePin(ST25R_SS_PORT, ST25R_SS_PIN, GPIO_PIN_RESET) + +// SPI SS\CS: Chip|Slave Deselect +#define platformSpiDeselect() \ + HAL_GPIO_WritePin(ST25R_SS_PORT, ST25R_SS_PIN, GPIO_PIN_SET) + +// SPI transceive +#define platformSpiTxRx(txBuf, rxBuf, len) \ + nfc_spi_transmit_receive(txBuf, rxBuf, len) + +// Log method +#define platformLog(...) // logUsart(__VA_ARGS__) + +/* +****************************************************************************** +* GLOBAL VARIABLES +****************************************************************************** +*/ +extern uint8_t globalCommProtectCnt; /* Global Protection Counter provided per + platform - instantiated in main.c */ + +/* +****************************************************************************** +* RFAL FEATURES CONFIGURATION +****************************************************************************** +*/ + +#define RFAL_FEATURE_LISTEN_MODE \ + true /*!< Enable/Disable RFAL support for Listen Mode */ +#define RFAL_FEATURE_WAKEUP_MODE \ + true /*!< Enable/Disable RFAL support for the Wake-Up mode */ +#define RFAL_FEATURE_LOWPOWER_MODE \ + false /*!< Enable/Disable RFAL support for the Low Power mode */ +#define RFAL_FEATURE_NFCA \ + true /*!< Enable/Disable RFAL support for NFC-A (ISO14443A) */ +#define RFAL_FEATURE_NFCB \ + true /*!< Enable/Disable RFAL support for NFC-B (ISO14443B) */ +#define RFAL_FEATURE_NFCF \ + true /*!< Enable/Disable RFAL support for NFC-F (FeliCa) */ +#define RFAL_FEATURE_NFCV \ + true /*!< Enable/Disable RFAL support for NFC-V (ISO15693) */ +#define RFAL_FEATURE_T1T \ + true /*!< Enable/Disable RFAL support for T1T (Topaz) */ +#define RFAL_FEATURE_T2T true /*!< Enable/Disable RFAL support for T2T */ +#define RFAL_FEATURE_T4T true /*!< Enable/Disable RFAL support for T4T */ +#define RFAL_FEATURE_ST25TB \ + true /*!< Enable/Disable RFAL support for ST25TB \ + */ +#define RFAL_FEATURE_ST25xV \ + true /*!< Enable/Disable RFAL support for ST25TV/ST25DV */ +#define RFAL_FEATURE_DYNAMIC_ANALOG_CONFIG \ + false /*!< Enable/Disable Analog Configs to be dynamically updated (RAM) */ +#define RFAL_FEATURE_DPO \ + true /*!< Enable/Disable RFAL Dynamic Power Output support */ +#define RFAL_FEATURE_ISO_DEP \ + true /*!< Enable/Disable RFAL support for ISO-DEP (ISO14443-4) */ +#define RFAL_FEATURE_ISO_DEP_POLL \ + true /*!< Enable/Disable RFAL support for Poller mode (PCD) ISO-DEP \ + (ISO14443-4) */ +#define RFAL_FEATURE_ISO_DEP_LISTEN \ + true /*!< Enable/Disable RFAL support for Listen mode (PICC) ISO-DEP \ + (ISO14443-4) */ +#define RFAL_FEATURE_NFC_DEP \ + true /*!< Enable/Disable RFAL support for NFC-DEP (NFCIP1/P2P) */ + +#define RFAL_FEATURE_ISO_DEP_IBLOCK_MAX_LEN \ + 256U /*!< ISO-DEP I-Block max length. Please use values as defined by \ + rfalIsoDepFSx */ +#define RFAL_FEATURE_NFC_DEP_BLOCK_MAX_LEN \ + 254U /*!< NFC-DEP Block/Payload length. Allowed values: 64, 128, 192, 254 */ +#define RFAL_FEATURE_NFC_RF_BUF_LEN \ + 258U /*!< RF buffer length used by RFAL NFC layer */ + +#define RFAL_FEATURE_ISO_DEP_APDU_MAX_LEN \ + 512U /*!< ISO-DEP APDU max length. Please use multiples of I-Block max \ + length */ +#define RFAL_FEATURE_NFC_DEP_PDU_MAX_LEN 512U /*!< NFC-DEP PDU max length. */ + +/* +****************************************************************************** +* RFAL CUSTOM SETTINGS +****************************************************************************** + Custom analog configs are used to cope with Automatic Antenna Tuning (AAT) + that are optimized differently for each board. +*/ +// #define RFAL_ANALOG_CONFIG_CUSTOM /*!< Use Custom +// Analog Configs when defined */ + +#ifndef platformProtectST25RIrqStatus +#define platformProtectST25RIrqStatus() /*!< Protect unique access to IRQ \ + status var - IRQ disable on single \ + thread environment (MCU) ; Mutex \ + lock on a multi thread environment \ + */ +#endif /* platformProtectST25RIrqStatus */ + +#ifndef platformUnprotectST25RIrqStatus +#define platformUnprotectST25RIrqStatus() /*!< Unprotect the IRQ status var - \ + IRQ enable on a single thread \ + environment (MCU) ; Mutex unlock \ + on a multi thread environment */ +#endif /* platformUnprotectST25RIrqStatus */ + +#ifndef platformProtectWorker +#define platformProtectWorker() /* Protect RFAL Worker/Task/Process from \ + concurrent execution on multi thread \ + platforms */ +#endif /* platformProtectWorker */ + +#ifndef platformUnprotectWorker +#define platformUnprotectWorker() /* Unprotect RFAL Worker/Task/Process from \ + concurrent execution on multi thread \ + platforms */ +#endif /* platformUnprotectWorker */ + +#ifndef platformIrqST25RPinInitialize +#define platformIrqST25RPinInitialize() /*!< Initializes ST25R IRQ pin */ +#endif /* platformIrqST25RPinInitialize */ + +#ifndef platformIrqST25RSetCallback +#define platformIrqST25RSetCallback(cb) /*!< Sets ST25R ISR callback */ +#endif /* platformIrqST25RSetCallback */ + +#ifndef platformLedsInitialize +#define platformLedsInitialize() /*!< Initializes the pins used as LEDs to \ + outputs */ +#endif /* platformLedsInitialize */ + +#ifndef platformLedOff +#define platformLedOff(port, pin) /*!< Turns the given LED Off */ +#endif /* platformLedOff */ + +#ifndef platformLedOn +#define platformLedOn(port, pin) /*!< Turns the given LED On */ +#endif /* platformLedOn */ + +#ifndef platformLedToggle +#define platformLedToggle(port, pin) /*!< Toggles the given LED */ +#endif /* platformLedToggle */ + +#ifndef platformGetSysTick +#define platformGetSysTick() /*!< Get System Tick ( 1 tick = 1 ms) */ +#endif /* platformGetSysTick */ + +#ifndef platformTimerDestroy +#define platformTimerDestroy(timer) /*!< Stops and released the given timer */ +#endif /* platformTimerDestroy */ + +#ifndef platformLog +#define platformLog(...) /*!< Log method */ +#endif /* platformLog */ + +#ifndef platformAssert +#define platformAssert(exp) /*!< Asserts whether the given expression is true \ + */ +#endif /* platformAssert */ + +#ifndef platformErrorHandle +#define platformErrorHandle() /*!< Global error handler or trap */ +#endif /* platformErrorHandle */ + +#ifdef __cplusplus +} +#endif + +#endif /* RFAL_PLATFORM_H */ diff --git a/core/embed/models/T3W1/boards/trezor_t3w1_revA.h b/core/embed/models/T3W1/boards/trezor_t3w1_revA.h index f95649d9f2..f925495484 100644 --- a/core/embed/models/T3W1/boards/trezor_t3w1_revA.h +++ b/core/embed/models/T3W1/boards/trezor_t3w1_revA.h @@ -160,4 +160,29 @@ #define NRF_OUT_FW_RUNNING_PORT GPIOE #define NRF_OUT_FW_RUNNING_CLK_ENA __HAL_RCC_GPIOE_CLK_ENABLE +#define SPI_INSTANCE_3 SPI3 +#define SPI_INSTANCE_3_PIN_AF GPIO_AF6_SPI3 +#define SPI_INSTANCE_3_CLK_EN __HAL_RCC_SPI3_CLK_ENABLE +#define SPI_INSTANCE_3_CLK_DIS __HAL_RCC_SPI3_CLK_DISABLE +#define SPI_INSTANCE_3_MISO_PORT GPIOB +#define SPI_INSTANCE_3_MISO_PIN GPIO_PIN_4 +#define SPI_INSTANCE_3_MISO_CLK_EN __HAL_RCC_GPIOB_CLK_ENABLE +#define SPI_INSTANCE_3_MOSI_PORT GPIOB +#define SPI_INSTANCE_3_MOSI_PIN GPIO_PIN_5 +#define SPI_INSTANCE_3_MOSI_CLK_EN __HAL_RCC_GPIOB_CLK_ENABLE +#define SPI_INSTANCE_3_SCK_PORT GPIOG +#define SPI_INSTANCE_3_SCK_PIN GPIO_PIN_9 +#define SPI_INSTANCE_3_SCK_CLK_EN __HAL_RCC_GPIOG_CLK_ENABLE +#define SPI_INSTANCE_3_NSS_PORT GPIOG +#define SPI_INSTANCE_3_NSS_PIN GPIO_PIN_12 +#define SPI_INSTANCE_3_NSS_CLK_EN __HAL_RCC_GPIOG_CLK_ENABLE + +#define NFC_INT_PIN GPIO_PIN_10 +#define NFC_INT_PORT GPIOG +#define NFC_INT_PIN_CLK_ENA __HAL_RCC_GPIOG_CLK_ENABLE +#define NFC_EXTI_INTERRUPT_GPIOSEL EXTI_GPIOG +#define NFC_EXTI_INTERRUPT_LINE EXTI_LINE_10 +#define NFC_EXTI_INTERRUPT_NUM EXTI10_IRQn +#define NFC_EXTI_INTERRUPT_HANDLER EXTI10_IRQHandler + #endif // TREZOR_T3W1_REVA_H_ diff --git a/core/embed/projects/prodtest/main.c b/core/embed/projects/prodtest/main.c index cbf4af7ec6..0e46cdcb00 100644 --- a/core/embed/projects/prodtest/main.c +++ b/core/embed/projects/prodtest/main.c @@ -60,6 +60,10 @@ #include #endif +#ifdef USE_NFC +#include +#endif + #ifdef USE_RGB_LED #include #endif diff --git a/core/site_scons/models/T3W1/trezor_t3w1_revA.py b/core/site_scons/models/T3W1/trezor_t3w1_revA.py index 4ad20e5cad..731e6bce31 100644 --- a/core/site_scons/models/T3W1/trezor_t3w1_revA.py +++ b/core/site_scons/models/T3W1/trezor_t3w1_revA.py @@ -91,6 +91,26 @@ def configure( "vendor/stm32u5xx_hal_driver/Src/stm32u5xx_hal_uart_ex.c", ] + if "nfc" in features_wanted: + sources += ["embed/io/nfc/st25r3916b/nfc.c"] + sources += ["embed/io/nfc/rfal/source/st25r3916/rfal_rfst25r3916.c"] + sources += ["embed/io/nfc/rfal/source/rfal_analogConfig.c"] + sources += ["embed/io/nfc/rfal/source/rfal_nfca.c"] + sources += ["embed/io/nfc/rfal/source/rfal_t1t.c"] + sources += ["embed/io/nfc/rfal/source/rfal_iso15693_2.c"] + sources += ["embed/io/nfc/rfal/source/rfal_crc.c"] + sources += ["embed/io/nfc/rfal/source/st25r3916/st25r3916.c"] + sources += ["embed/io/nfc/rfal/source/st25r3916/st25r3916_com.c"] + sources += ["embed/io/nfc/rfal/source/st25r3916/st25r3916_led.c"] + sources += ["embed/io/nfc/rfal/source/st25r3916/st25r3916_irq.c"] + paths += ["embed/io/nfc/inc/"] + paths += ["embed/io/nfc/st25r3916b/"] + paths += ["embed/io/nfc/rfal/source"] + paths += ["embed/io/nfc/rfal/source/st25r3916"] + paths += ["embed/io/nfc/rfal/include/"] + features_available.append("nfc") + defines += [("USE_NFC", "1")] + if "optiga" in features_wanted: sources += ["embed/sec/optiga/stm32/optiga_hal.c"] sources += ["embed/sec/optiga/optiga.c"]

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 !>?-W7*#LU!@3;E+$b{)8K>9U_?*4R?%| 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

eks8|EGd9@Xb>%n~dmwhln(uYt$u8=b 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