Hi,
- Open RF user security session with rfalST25xVPollerPresentPassword with pwdNum=0 (RF_PWD_0), pwd=your passwd and pwdLen=8
- Authorize the enabling of the MB (set MB_MODE bit to 1 in MB_MODE register thanks to rfalST25xVPollerWriteConfiguration)
- Read the current value of the MB_CTRL_Dyn register with rfalST25xVPollerReadDynamicConfiguration
- set MB_EN bit to 1 and write the updated value to MB_CTRL_Dyn register with rfalST25xVPollerWriteDynamicConfiguration
- read the length of the mailbox message with rfalST25xVPollerReadMessageLength or rfalST25xVPollerFastReadMessageLength (double speed)
- read the mailbox message with rfalST25xVPollerReadMessage or rfalST25xVPollerFastReadMessage
#define ST25DV04K_SYSTEM_CONFIG_MB_MODE 0x0D
#define ST25DV04K_REG_MB_MODE_FTM_AUTHORIZED 1U
#define ST25DV04K_DYN_REG_MB_CTRL 0x0D
#define ST25DV04K_REG_MB_CTRL_DYN_MB_EN 1U
uint8_t pointer;
uint8_t reg;
static uint8_t pwd[8] = {0,0,0,0,0,0,0,0};
uint8_t pwdLen = 8;
uint8_t pwdNum = 0;
uint8_t msgLen;
ReturnCode err;
uint16_t rcvLen;
static uint8_t rxBuf[256];
/* Open RF configuration security session */
err = rfalST25xVPollerPresentPassword(RFAL_NFCV_REQ_FLAG_DEFAULT, uid, pwdNum, pwd, pwdLen);
/* set MB_MODE to 1: Enabling fast transfer mode is authorized.*/
pointer = ST25DV04K_SYSTEM_CONFIG_MB_MODE;
reg = ST25DV04K_REG_MB_MODE_FTM_AUTHORIZED;
err = rfalST25xVPollerWriteConfiguration(RFAL_NFCV_REQ_FLAG_DEFAULT, uid, pointer, reg);
/* set MB_EN to 1: Enable FTM. Read, update and write */
pointer = ST25DV04K_DYN_REG_MB_CTRL;
err = rfalST25xVPollerFastReadDynamicConfiguration(RFAL_NFCV_REQ_FLAG_DEFAULT, uid, pointer, ®);
reg |= ST25DV04K_REG_MB_CTRL_DYN_MB_EN;
err = rfalST25xVPollerFastWriteDynamicConfiguration(RFAL_NFCV_REQ_FLAG_DEFAULT, uid, pointer, reg);
/* Read Msg Len */
err = rfalST25xVPollerFastReadMessageLength(RFAL_NFCV_REQ_FLAG_DEFAULT, uid, &msgLen);
/* Read Msg */
err = rfalST25xVPollerReadMessage(RFAL_NFCV_REQ_FLAG_DEFAULT, uid, 0,0, rxBuf, sizeof(rxBuf), &rcvLen);
Rgds
BT