ST Expansion SW Team / RFAL

Dependents:   mbed-os-nfc05a1

Embed: (wiki syntax)

« Back to documentation index

rfal_rf.h File Reference

rfal_rf.h File Reference

RF Abstraction Layer (RFAL) More...

Go to the source code of this file.

Data Structures

struct  rfalTransceiveContext
struct  rfalLmConfPA
struct  rfalLmConfPB
struct  rfalLmConfPF

Typedefs

typedef void(* rfalUpperLayerCallback )(void)
typedef void(* rfalPreTxRxCallback )(void)
typedef void(* rfalPostTxRxCallback )(void)
typedef uint8_t rfalFeliCaPollRes [RFAL_FELICA_POLL_RES_LEN]

Enumerations

enum  {
  RFAL_GT_NFCA = rfalConvMsTo1fc(5), RFAL_GT_NFCB = rfalConvMsTo1fc(5), RFAL_GT_NFCF = rfalConvMsTo1fc(20), RFAL_GT_NFCV = rfalConvMsTo1fc(1),
  RFAL_GT_NFCV_ADJUSTED = rfalConvMsTo1fc(1+4), RFAL_GT_PICOPASS = rfalConvMsTo1fc(1), RFAL_GT_AP2P = rfalConvMsTo1fc(5), RFAL_GT_AP2P_ADJUSTED = rfalConvMsTo1fc(5+25)
}
enum  {
  RFAL_FDT_LISTEN_NFCA_POLLER = 1172, RFAL_FDT_LISTEN_NFCB_POLLER = 1008, RFAL_FDT_LISTEN_NFCF_POLLER = 2672, RFAL_FDT_LISTEN_NFCV_POLLER = 4192,
  RFAL_FDT_LISTEN_PICOPASS_POLLER = 3400, RFAL_FDT_LISTEN_AP2P_POLLER = 64, RFAL_FDT_LISTEN_NFCA_LISTENER = 1172, RFAL_FDT_LISTEN_NFCB_LISTENER = 1024,
  RFAL_FDT_LISTEN_NFCF_LISTENER = 2688, RFAL_FDT_LISTEN_AP2P_LISTENER = 64
}
enum  {
  RFAL_FDT_POLL_NFCA_POLLER = 6780, RFAL_FDT_POLL_NFCA_T1T_POLLER = 384, RFAL_FDT_POLL_NFCB_POLLER = 6780, RFAL_FDT_POLL_NFCF_POLLER = 2672,
  RFAL_FDT_POLL_NFCV_POLLER = 4192, RFAL_FDT_POLL_PICOPASS_POLLER = 1790, RFAL_FDT_POLL_AP2P_POLLER = 0
}
enum  rfalMode {
  RFAL_MODE_NONE = 0, RFAL_MODE_POLL_NFCA = 1, RFAL_MODE_POLL_NFCA_T1T = 2, RFAL_MODE_POLL_NFCB = 3,
  RFAL_MODE_POLL_B_PRIME = 4, RFAL_MODE_POLL_B_CTS = 5, RFAL_MODE_POLL_NFCF = 6, RFAL_MODE_POLL_NFCV = 7,
  RFAL_MODE_POLL_PICOPASS = 8, RFAL_MODE_POLL_ACTIVE_P2P = 9, RFAL_MODE_LISTEN_NFCA = 10, RFAL_MODE_LISTEN_NFCB = 11,
  RFAL_MODE_LISTEN_NFCF = 12, RFAL_MODE_LISTEN_ACTIVE_P2P = 13
}
enum  rfalBitRate {
  RFAL_BR_106 = 0, RFAL_BR_212 = 1, RFAL_BR_424 = 2, RFAL_BR_848 = 3,
  RFAL_BR_1695 = 4, RFAL_BR_3390 = 5, RFAL_BR_6780 = 6, RFAL_BR_52p97 = 0xEB,
  RFAL_BR_26p48 = 0xEC, RFAL_BR_1p66 = 0xED, RFAL_BR_KEEP = 0xFF
}
enum  rfalComplianceMode { RFAL_COMPLIANCE_MODE_NFC, RFAL_COMPLIANCE_MODE_EMV, RFAL_COMPLIANCE_MODE_ISO }
enum  rfalState
enum  rfalTransceiveState
enum  {
  RFAL_TXRX_FLAGS_CRC_TX_AUTO = (0<<0), RFAL_TXRX_FLAGS_CRC_TX_MANUAL = (1<<0), RFAL_TXRX_FLAGS_CRC_RX_KEEP = (1<<1), RFAL_TXRX_FLAGS_CRC_RX_REMV = (0<<1),
  RFAL_TXRX_FLAGS_NFCIP1_ON = (1<<2), RFAL_TXRX_FLAGS_NFCIP1_OFF = (0<<2), RFAL_TXRX_FLAGS_AGC_OFF = (1<<3), RFAL_TXRX_FLAGS_AGC_ON = (0<<3),
  RFAL_TXRX_FLAGS_PAR_RX_KEEP = (1<<4), RFAL_TXRX_FLAGS_PAR_RX_REMV = (0<<0), RFAL_TXRX_FLAGS_PAR_TX_NONE = (1<<5), RFAL_TXRX_FLAGS_PAR_TX_AUTO = (0<<5),
  RFAL_TXRX_FLAGS_NFCV_FLAG_MANUAL = (1<<6), RFAL_TXRX_FLAGS_NFCV_FLAG_AUTO = (0<<6)
}
enum  rfalEHandling { RFAL_ERRORHANDLING_NONE = 0, RFAL_ERRORHANDLING_NFC = 1, RFAL_ERRORHANDLING_EMVCO = 2 }
enum  rfal14443AShortFrameCmd { RFAL_14443A_SHORTFRAME_CMD_WUPA = 0x52, RFAL_14443A_SHORTFRAME_CMD_REQA = 0x26 }
enum  { RFAL_FELICA_POLL_RC_NO_REQUEST = 0x00, RFAL_FELICA_POLL_RC_SYSTEM_CODE = 0x01, RFAL_FELICA_POLL_RC_COM_PERFORMANCE = 0x02 }
enum  rfalFeliCaPollSlots {
  RFAL_FELICA_1_SLOT = 0, RFAL_FELICA_2_SLOTS = 1, RFAL_FELICA_4_SLOTS = 3, RFAL_FELICA_8_SLOTS = 7,
  RFAL_FELICA_16_SLOTS = 15
}
enum  rfalLmNfcidLen { RFAL_LM_NFCID_LEN_04 = 4, RFAL_LM_NFCID_LEN_07 = 7, RFAL_LM_NFCID_LEN_10 = 10 }
enum  rfalLmState {
  RFAL_LM_STATE_NOT_INIT = 0x00, RFAL_LM_STATE_POWER_OFF = 0x01, RFAL_LM_STATE_IDLE = 0x02, RFAL_LM_STATE_READY_A = 0x03,
  RFAL_LM_STATE_READY_B = 0x04, RFAL_LM_STATE_READY_F = 0x05, RFAL_LM_STATE_ACTIVE_A = 0x06, RFAL_LM_STATE_CARDEMU_4A = 0x07,
  RFAL_LM_STATE_CARDEMU_4B = 0x08, RFAL_LM_STATE_CARDEMU_3 = 0x09, RFAL_LM_STATE_TARGET_A = 0x0A, RFAL_LM_STATE_TARGET_F = 0x0B,
  RFAL_LM_STATE_SLEEP_A = 0x0C, RFAL_LM_STATE_SLEEP_B = 0x0D, RFAL_LM_STATE_READY_Ax = 0x0E, RFAL_LM_STATE_ACTIVE_Ax = 0x0F,
  RFAL_LM_STATE_SLEEP_AF = 0x10
}
enum  rfalWumState { RFAL_WUM_STATE_NOT_INIT = 0x00, RFAL_WUM_STATE_ENABLED = 0x01, RFAL_WUM_STATE_ENABLED_WOKE = 0x02 }

Functions

ReturnCode rfalInitialize (SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Initialize.
ReturnCode rfalCalibrate (SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Calibrate.
ReturnCode rfalAdjustRegulators (uint16_t *result, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Adjust Regulators.
void rfalSetUpperLayerCallback (rfalUpperLayerCallback pFunc)
 RFAL Set System Callback.
void rfalSetPreTxRxCallback (rfalPreTxRxCallback pFunc)
 RFAL Set Pre Tx Callback.
void rfalSetPostTxRxCallback (rfalPostTxRxCallback pFunc)
 RFAL Set Post Tx Callback.
ReturnCode rfalDeinitialize (SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Deinitialize.
ReturnCode rfalSetMode (rfalMode mode, rfalBitRate txBR, rfalBitRate rxBR, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Set Mode.
rfalMode rfalGetMode (void)
 RFAL Get Mode.
ReturnCode rfalSetBitRate (rfalBitRate txBR, rfalBitRate rxBR, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Set Bit Rate.
ReturnCode rfalGetBitRate (rfalBitRate *txBR, rfalBitRate *rxBR)
 RFAL Get Bit Rate.
ReturnCode rfalSetModulatedRFO (uint8_t rfo, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Set Modulated RFO.
uint8_t rfalGetModulatedRFO (SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Get Modulated RFO.
ReturnCode rfalMeasureRF (uint8_t *result, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Measure RF Amplitude.
void rfalSetErrorHandling (rfalEHandling eHandling)
 Set Error Handling Mode.
rfalEHandling rfalGetErrorHandling (void)
 Get Error Handling Mode.
void rfalSetObsvMode (uint8_t txMode, uint8_t rxMode)
 Set Observation Mode.
void rfalGetObsvMode (uint8_t *txMode, uint8_t *rxMode)
 Get Observation Mode.
void rfalDisableObsvMode (void)
 Disable Observation Mode.
void rfalSetFDTPoll (uint32_t fdt)
 RFAL Set FDT Poll.
uint32_t rfalGetFDTPoll (void)
 RFAL Set FDT Poll.
void rfalSetFDTListen (uint32_t fdt)
 RFAL Set FDT Listen.
uint32_t rfalGetFDTListen (void)
 RFAL Set FDT Listen.
uint32_t rfalGetGT (void)
 RFAL Get GT.
void rfalSetGT (uint32_t gt)
 RFAL Set GT.
bool rfalIsGTExpired (void)
 RFAL Is GT expired.
ReturnCode rfalFieldOnAndStartGT (SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Turn Field On and Start GT.
ReturnCode rfalFieldOff (SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Turn Field Off.
ReturnCode rfalStartTransceive (rfalTransceiveContext *ctx, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Set transceive context.
rfalTransceiveState rfalGetTransceiveState (void)
 Get Transceive State.
ReturnCode rfalGetTransceiveStatus (void)
 Get Transceive Status.
void rfalWorker (SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 RFAL Worker.
ReturnCode rfalISO14443ATransceiveShortFrame (rfal14443AShortFrameCmd txCmd, uint8_t *rxBuf, uint8_t rxBufLen, uint16_t *rxRcvdLen, uint32_t fwt, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Transceives an ISO14443A ShortFrame.
ReturnCode rfalISO14443ATransceiveAnticollisionFrame (uint8_t *buf, uint8_t *bytesToSend, uint8_t *bitsToSend, uint16_t *rxLength, uint32_t fwt, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Sends an ISO14443A Anticollision Frame.
ReturnCode rfalFeliCaPoll (rfalFeliCaPollSlots slots, uint16_t sysCode, uint8_t reqCode, rfalFeliCaPollRes *pollResList, uint8_t pollResListSize, uint8_t *devicesDetected, uint8_t *collisionsDetected, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 FeliCa Poll.
ReturnCode rfalISO15693TransceiveAnticollisionFrame (uint8_t *txBuf, uint8_t txBufLen, uint8_t *rxBuf, uint8_t rxBufLen, uint16_t *actLen, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Sends an ISO15693 Anticollision Frame.
ReturnCode rfalISO15693TransceiveAnticollisionEOF (uint8_t *rxBuf, uint8_t rxBufLen, uint16_t *actLen, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Sends an ISO15693 Anticollision EOF.
ReturnCode rfalISO15693TransceiveEOF (uint8_t *rxBuf, uint8_t rxBufLen, uint16_t *actLen, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ)
 Sends an ISO15693 Slot Marker.
ReturnCode rfalTransceiveBlockingTx (uint8_t *txBuf, uint16_t txBufLen, uint8_t *rxBuf, uint16_t rxBufLen, uint16_t *actLen, uint32_t flags, uint32_t fwt, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Transceive Blocking Tx.
ReturnCode rfalTransceiveBlockingRx (SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Transceive Blocking Rx.
ReturnCode rfalTransceiveBlockingTxRx (uint8_t *txBuf, uint16_t txBufLen, uint8_t *rxBuf, uint16_t rxBufLen, uint16_t *actLen, uint32_t flags, uint32_t fwt, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Transceive Blocking.
bool rfalIsExtFieldOn (SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Is external Field On.
ReturnCode rfalListenStart (uint32_t lmMask, rfalLmConfPA *confA, rfalLmConfPB *confB, rfalLmConfPF *confF, uint8_t *rxBuf, uint16_t rxBufLen, uint16_t *rxLen, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Listen Mode start.
ReturnCode rfalListenSleepStart (rfalLmState sleepSt, uint8_t *rxBuf, uint16_t rxBufLen, uint16_t *rxLen)
 Listen Mode start Sleeping.
ReturnCode rfalListenStop (SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Listen Mode Stop.
rfalLmState rfalListenGetState (bool *dataFlag, rfalBitRate *lastBR)
 Listen Mode get state.
ReturnCode rfalListenSetState (rfalLmState newSt, SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Listen Mode set state.
ReturnCode rfalWakeUpModeStart (void *config, ST25R3911 *mST25, SPI *mspiChannel, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Wake-Up Mode Start.
bool rfalWakeUpModeHasWoke (ST25R3911 *mST25, SPI *mspiChannel, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Wake-Up Has Woke.
ReturnCode rfalWakeUpModeStop (SPI *mspiChannel, ST25R3911 *mST25, DigitalOut *gpio_cs, InterruptIn *IRQ, DigitalOut *fieldLED_01, DigitalOut *fieldLED_02, DigitalOut *fieldLED_03, DigitalOut *fieldLED_04, DigitalOut *fieldLED_05, DigitalOut *fieldLED_06)
 Wake-Up Mode Stop.

Detailed Description

RF Abstraction Layer (RFAL)

Author:
Gustavo Patricio

RFAL (RF Abstraction Layer) provides several functionalities required to perform RF/NFC communications.
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()

Definition in file rfal_rf.h.