Firmware library for the X-NUCLEO-NFC01A1 Dynamic NFC Tag board.
Dependencies: M24SR
Dependents: NFC M2M_2016_STM32 MyongjiElec_capstone1 IDW01M1_Cloud_IBM ... more
Fork of X_NUCLEO_NFC01A1 by
X-NUCLEO-NFC01A1 Dynamic NFC Tag Expansion Board Firmware Package
Introduction
This firmware package includes Components Device Drivers, Board Support Package and example applications for STMicroelectronics X-NUCLEO-NFC01A1 Dynamic NFC Tag Expansion Board based on M24SR.
Firmware Library
Class X_NUCLEO_NFC01A1 is intended to represent the Dynamic NFC Tag Expansion Board with the same name.
It provides an API to access to the M24SR component and to the three onboard LEDs.
It is intentionally implemented as a singleton because only one X_NUCLEO_NFC01A1 at a time might be deployed in a HW component stack.
The library also provides an implementation of the NDEF library API for M24SR, providing an simple way to read/write NDEF formatted messages from/to the M24SR dynamic NFC tag.
Example applications
1. Hello World
2. Asynchronous Hello World
Diff: m24sr/M24SR.cpp
- Revision:
- 33:e6b7e74be1d5
- Parent:
- 30:68fa3accb6b4
- Child:
- 34:b76765d2cc68
--- a/m24sr/M24SR.cpp Thu May 18 15:20:43 2017 +0000
+++ b/m24sr/M24SR.cpp Wed Jul 12 14:15:02 2017 +0000
@@ -58,8 +58,8 @@
/**
* default password, also used to enable super user mode through the I2C channel
*/
-const uint8_t M24SR::DEFAULT_PASSWORD[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
+const uint8_tM24SR::DEFAULT_PASSWORD[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
+ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };
/** @addtogroup M24SR_Driver
* @{
@@ -80,7 +80,7 @@
* otherwise return the error status*/
#define errchk(fCall) {\
const int status = (int) (fCall); \
- if((status!=M24SR_SUCCESS)){ \
+ if((status!=M24SR_SUCCESS)) { \
return (M24SR::StatusTypeDef)status; \
}\
}
@@ -94,8 +94,7 @@
static uint16_t M24SR_UpdateCrc(uint8_t ch, uint16_t *lpwCrc) {
ch = (ch ^ (uint8_t) ((*lpwCrc) & 0x00FF));
ch = (ch ^ (ch << 4));
- *lpwCrc = (*lpwCrc >> 8) ^ ((uint16_t) ch << 8) ^ ((uint16_t) ch << 3)
- ^ ((uint16_t) ch >> 4);
+ *lpwCrc = (*lpwCrc >> 8) ^ ((uint16_t) ch << 8) ^ ((uint16_t) ch << 3) ^ ((uint16_t) ch >> 4);
return (*lpwCrc);
}
@@ -125,12 +124,13 @@
* @retval Status (SW1&SW2) : CRC16 residue is correct
* @retval M24SR_ERROR_CRC : CRC16 residue is false
*/
- static M24SR::StatusTypeDef M24SR_IsCorrectCRC16Residue(uint8_t *DataIn, uint8_t Length) {
+ staticM24SR::StatusTypeDef M24SR_IsCorrectCRC16Residue(uint8_t *DataIn, uint8_t Length) {
uint16_t ResCRC = 0x0000;
M24SR::StatusTypeDef status;
/* check the CRC16 Residue */
- if (Length != 0)
+ if (Length != 0) {
ResCRC = M24SR_ComputeCrc(DataIn, Length);
+ }
if (ResCRC == 0x0000) {
/* Good CRC, but error status from M24SR */
@@ -141,14 +141,17 @@
ResCRC = M24SR_ComputeCrc(DataIn, 5);
if (ResCRC != 0x0000) {
/* Bad CRC */
- return M24SR::M24SR_IO_ERROR_CRC;
+ returnM24SR::M24SR_IO_ERROR_CRC;
} else {
/* Good CRC, but error status from M24SR */
status= (M24SR::StatusTypeDef) (((DataIn[1] << 8) & 0xFF00)
| (DataIn[2] & 0x00FF));
}
}
- if(status==NFC_COMMAND_SUCCESS) status = M24SR::M24SR_SUCCESS;
+ if (status==NFC_COMMAND_SUCCESS) {
+ status =M24SR::M24SR_SUCCESS;
+ }
+
return status;
}
@@ -159,8 +162,7 @@
* @param NbByte : number of bytes of the command
* @param pCommand : pointer to the command created
*/
- static void M24SR_BuildIBlockCommand(uint16_t CommandStructure, C_APDU *Command,
- uint8_t uDIDbyte, uint16_t *NbByte, uint8_t *pCommand) {
+static void M24SR_BuildIBlockCommand(uint16_t CommandStructure, C_APDU *Command, uint8_t uDIDbyte, uint16_t *NbByte, uint8_t *pCommand) {
uint16_t uCRC16;
static uint8_t BlockNumber = 0x01;
@@ -228,17 +230,16 @@
* @retval M24SR_SUCCESS : the data is a S-Block
* @retval NFC_ERROR : the data is not a S-Block
*/
- static M24SR::StatusTypeDef IsSBlock(uint8_t *pBuffer) {
+ staticM24SR::StatusTypeDef IsSBlock(uint8_t *pBuffer) {
if ((pBuffer[M24SR_OFFSET_PCB] & M24SR_MASK_BLOCK) == M24SR_MASK_SBLOCK) {
- return M24SR::M24SR_SUCCESS;
+ returnM24SR::M24SR_SUCCESS;
} else {
- return M24SR::M24SR_ERROR;
+ returnM24SR::M24SR_ERROR;
}
}
-
M24SR::M24SR(const uint8_t address, I2C &I2C,gpoEventCallback eventCallback, const PinName& GPOPinName,
const PinName& RFDISPinName) :
who_am_i(0),
@@ -258,8 +259,9 @@
//mNDefTagUtil(NULL){
memset(uM24SRbuffer, 0, 0xFF * sizeof(int8_t));
uDIDbyte = 0;
- if(RFDisablePin.is_connected()!=0)
+ if (RFDisablePin.is_connected()!=0) {
RFDisablePin = 0;
+ }
if(GPOPin.is_connected()!=0){
if(eventCallback!=NULL)
mGpoEventInterrupt.fall(eventCallback);
@@ -277,7 +279,7 @@
* @param FWTbyte : FWT value
* @return M24SR_SUCCESS if no errors
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendFWTExtension(uint8_t FWTbyte) {
+M24SR::StatusTypeDefM24SR::M24SR_SendFWTExtension(uint8_t FWTbyte) {
uint8_t pBuffer[M24SR_STATUSRESPONSE_NBBYTE];
M24SR::StatusTypeDef status;
uint8_t NthByte = 0;
@@ -294,19 +296,19 @@
/* send the request */
status = M24SR_IO_SendI2Ccommand(NthByte, pBuffer);
- if(status != M24SR_SUCCESS)
+ if (status != M24SR_SUCCESS) {
return status;
+ }
mLastCommandSend=UPDATE;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status == M24SR_SUCCESS)
+ if (status == M24SR_SUCCESS) {
return M24SR_ReceiveUpdateBinary();
- else{
+ } else {
mLastCommandSend = NONE;
- getCallback()->on_updated_binary(this,status,mLastCommandData.offset,
- mLastCommandData.data,mLastCommandData.length);
+ getCallback()->on_updated_binary(this,status,mLastCommandData.offset, mLastCommandData.data,mLastCommandData.length);
return status;
}//if-else
}//if
@@ -318,28 +320,30 @@
* @brief This function initialize the M24SR device
* @retval None
*/
- M24SR::StatusTypeDef M24SR::M24SR_Init(M24SR_InitTypeDef *notUsed) {
+M24SR::StatusTypeDefM24SR::M24SR_Init(M24SR_InitTypeDef *notUsed) {
(void) notUsed;
//force to open a i2c session
StatusTypeDef status = M24SR_ForceSession();
- if(status!= M24SR_SUCCESS)
+ if(status!= M24SR_SUCCESS) {
return status;
+ }
//leave the gpo always up
- if(GPOPin.is_connected()!=0){
+ if(GPOPin.is_connected()!=0) {
status = M24SR_ManageI2CGPO(DEFAULT_GPO_STATUS);
if(status!= M24SR_SUCCESS)
return status;
}
- if(RFDisablePin.is_connected()!=0){
+ if(RFDisablePin.is_connected()!=0) {
status = M24SR_ManageRFGPO(DEFAULT_GPO_STATUS);
if(status!= M24SR_SUCCESS)
return status;
}
//close the session
status = M24SR_Deselect();
- if(status!= M24SR_SUCCESS)
+ if (status!= M24SR_SUCCESS) {
return status;
- if(GPOPin.is_connected()!=0){
+ }
+ if(GPOPin.is_connected()!=0) {
mGpoEventInterrupt.enable_irq();
}
return M24SR_SUCCESS;
@@ -351,11 +355,11 @@
* @param None
* @return M24SR_SUCCESS if no errors
*/
- M24SR::StatusTypeDef M24SR::M24SR_ForceSession(void) {
+M24SR::StatusTypeDefM24SR::M24SR_ForceSession(void) {
uint8_t commandBuffer[] = M24SR_KILLSESSION_COMMAND;
M24SR::StatusTypeDef status;
status = M24SR_IO_SendI2Ccommand(sizeof(commandBuffer), commandBuffer);
- if(status!=M24SR_SUCCESS){
+ if(status!=M24SR_SUCCESS) {
mCallback->on_session_open(this,status);
return status;
}
@@ -374,22 +378,22 @@
* @brief This function sends the Deselect command (S-Block format)
* @return M24SR_SUCCESS if no errors
*/
- M24SR::StatusTypeDef M24SR::M24SR_Deselect(void) {
+M24SR::StatusTypeDefM24SR::M24SR_Deselect(void) {
uint8_t pBuffer[] = M24SR_DESELECTREQUEST_COMMAND;
M24SR::StatusTypeDef status;
/* send the request */
status = M24SR_IO_SendI2Ccommand(sizeof(pBuffer), pBuffer);
- if(status!=M24SR_SUCCESS){
+ if(status!=M24SR_SUCCESS) {
getCallback()->on_deselect(this,status);
}
mLastCommandSend=DESELECT;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status == M24SR_SUCCESS)
+ if(status == M24SR_SUCCESS) {
return M24SR_ReceiveDeselect();
- else{
+ } else {
mLastCommandSend = NONE;
getCallback()->on_selected_application(this,status);
return status;
@@ -400,7 +404,7 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveDeselect(void){
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveDeselect(void) {
uint8_t pBuffer[4];
M24SR::StatusTypeDef status;
status = M24SR_IO_ReceiveI2Cresponse(sizeof(pBuffer), pBuffer);
@@ -408,19 +412,17 @@
return status;
}
-
-
/**
* @brief This function sends the GetSession command to the M24SR device
* @retval M24SR_SUCCESS the function is successful.
* @retval Status (SW1&SW2) if operation does not complete.
*/
- M24SR::StatusTypeDef M24SR::M24SR_GetSession(void) {
+M24SR::StatusTypeDefM24SR::M24SR_GetSession(void) {
uint8_t commandBuffer[] = M24SR_OPENSESSION_COMMAND;
M24SR::StatusTypeDef status;
status = M24SR_IO_SendI2Ccommand(sizeof(commandBuffer), commandBuffer);
- if(status!=M24SR_SUCCESS){
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_session_open(this,status);
return status;
}
@@ -438,7 +440,7 @@
* @brief This function sends the SelectApplication command
* @return M24SR_SUCCESS if no errors
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendSelectApplication(void) {
+M24SR::StatusTypeDefM24SR::M24SR_SendSelectApplication(void) {
C_APDU command;
M24SR::StatusTypeDef status;
@@ -460,23 +462,22 @@
/* copy the number of byte to read */
command.Body.LE = uLe;
/* build the I2C command */
- M24SR_BuildIBlockCommand( M24SR_CMDSTRUCT_SELECTAPPLICATION, &command,
- uDIDbyte, &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand( M24SR_CMDSTRUCT_SELECTAPPLICATION, &command, uDIDbyte, &NbByte, pBuffer);
/* send the request */
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status != M24SR_SUCCESS){
+ if (status != M24SR_SUCCESS) {
getCallback()->on_selected_application(this,status);
return status;
}
mLastCommandSend=SELECT_APPLICATION;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status == M24SR_SUCCESS)
+ if (status == M24SR_SUCCESS) {
return M24SR_ReceiveSelectApplication();
- else{
+ } else {
mLastCommandSend = NONE;
getCallback()->on_selected_application(this,status);
return status;
@@ -486,27 +487,24 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveSelectApplication(void) {
-
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveSelectApplication(void) {
uint8_t pDataIn[M24SR_STATUSRESPONSE_NBBYTE];
M24SR::StatusTypeDef status;
mLastCommandSend = NONE;
status = M24SR_IO_ReceiveI2Cresponse(sizeof(pDataIn), pDataIn);
- if(status!=M24SR_SUCCESS){
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_selected_application(this,status);
return status;
}//else
- status= M24SR_IsCorrectCRC16Residue(pDataIn, sizeof(pDataIn));
+ status = M24SR_IsCorrectCRC16Residue(pDataIn, sizeof(pDataIn));
getCallback()->on_selected_application(this,status);
+
return status;
-
}
-
-
-M24SR::StatusTypeDef M24SR::M24SR_ReadID(uint8_t *nfc_id) {
+M24SR::StatusTypeDefM24SR::M24SR_ReadID(uint8_t *nfc_id) {
if (!nfc_id) {
return M24SR_ERROR;
}
@@ -525,7 +523,7 @@
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
* @retval Status (SW1&SW2) if operation does not complete for another reason.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendSelectCCfile(void) {
+M24SR::StatusTypeDefM24SR::M24SR_SendSelectCCfile(void) {
C_APDU command;
M24SR::StatusTypeDef status;
uint8_t *pBuffer = uM24SRbuffer;
@@ -543,24 +541,22 @@
command.Body.LC = sizeof(pDataOut);
command.Body.pData = pDataOut;
/* build the I2C command */
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_SELECTCCFILE, &command, uDIDbyte,
- &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_SELECTCCFILE, &command, uDIDbyte, &NbByte, pBuffer);
/* send the request */
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status!=M24SR_SUCCESS){
+ if(status!=M24SR_SUCCESS) {
getCallback()->on_selected_CC_file(this,status);
return status;
}//else
-
mLastCommandSend=SELECT_CC_FILE;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC){
status = M24SR_IO_PollI2C();
- if(status==M24SR_SUCCESS)
+ if (status==M24SR_SUCCESS) {
return M24SR_ReceiveSelectCCfile();
- else{
+ } else {
mLastCommandSend = NONE;
getCallback()->on_selected_CC_file(this,status);
return status;
@@ -570,7 +566,7 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveSelectCCfile(void){
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveSelectCCfile(void){
uint8_t pDataIn[M24SR_STATUSRESPONSE_NBBYTE];
M24SR::StatusTypeDef status;
@@ -578,14 +574,14 @@
mLastCommandSend = NONE;
status = M24SR_IO_ReceiveI2Cresponse(sizeof(pDataIn), pDataIn);
- if(status!=M24SR_SUCCESS){
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_selected_CC_file(this,status);
return status;
}//else
- status= M24SR_IsCorrectCRC16Residue(pDataIn, sizeof(pDataIn));
+ status = M24SR_IsCorrectCRC16Residue(pDataIn, sizeof(pDataIn));
getCallback()->on_selected_CC_file(this,status);
+
return status;
-
}
/**
@@ -593,7 +589,7 @@
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendSelectSystemfile(void) {
+M24SR::StatusTypeDefM24SR::M24SR_SendSelectSystemfile(void) {
C_APDU command;
uint8_t *pBuffer = uM24SRbuffer;
@@ -611,23 +607,22 @@
command.Body.LC = sizeof(pDataOut);
command.Body.pData = pDataOut;
/* build the I²C command */
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_SELECTCCFILE, &command, uDIDbyte,
- &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_SELECTCCFILE, &command, uDIDbyte, &NbByte, pBuffer);
/* send the request */
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status!=M24SR_SUCCESS){
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_selected_system_file(this,status);
return status;
}//else
mLastCommandSend=SELECT_SYSTEM_FILE;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status == M24SR_SUCCESS)
+ if (status == M24SR_SUCCESS) {
return M24SR_ReceiveSelectSystemfile();
- else{
+ } else {
mLastCommandSend = NONE;
getCallback()->on_selected_system_file(this,status);
return status;
@@ -637,22 +632,21 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveSelectSystemfile(){
-
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveSelectSystemfile() {
uint8_t pDataIn[M24SR_STATUSRESPONSE_NBBYTE];
M24SR::StatusTypeDef status;
mLastCommandSend = NONE;
status = M24SR_IO_ReceiveI2Cresponse(sizeof(pDataIn), pDataIn);
- if(status!=M24SR_SUCCESS){
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_selected_system_file(this,status);
return status;
}//else
- status= M24SR_IsCorrectCRC16Residue(pDataIn, sizeof(pDataIn));
+ status = M24SR_IsCorrectCRC16Residue(pDataIn, sizeof(pDataIn));
getCallback()->on_selected_system_file(this,status);
+
return status;
-
}
/**
@@ -660,7 +654,7 @@
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendSelectNDEFfile(uint16_t NDEFfileId) {
+M24SR::StatusTypeDefM24SR::M24SR_SendSelectNDEFfile(uint16_t NDEFfileId) {
C_APDU command;
M24SR::StatusTypeDef status;
uint8_t *pBuffer = uM24SRbuffer;
@@ -678,22 +672,19 @@
command.Body.pData = pDataOut;
/* copy the offset */
/* build the I2C command */
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_SELECTNDEFFILE, &command, uDIDbyte,
- &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_SELECTNDEFFILE, &command, uDIDbyte, &NbByte, pBuffer);
/* send the request */
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status!=M24SR_SUCCESS){
-
- }
+ if (status!=M24SR_SUCCESS) {}
mLastCommandSend=SELECT_NDEF_FILE;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status==M24SR_SUCCESS)
+ if (status==M24SR_SUCCESS) {
return M24SR_ReceiveSelectNDEFfile();
- else{
+ } else {
mLastCommandSend = NONE;
getCallback()->on_selected_NDEF_file(this,status);
return status;
@@ -704,7 +695,7 @@
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveSelectNDEFfile(){
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveSelectNDEFfile(){
uint8_t pDataIn[M24SR_STATUSRESPONSE_NBBYTE];
M24SR::StatusTypeDef status;
@@ -712,14 +703,14 @@
mLastCommandSend = NONE;
status = M24SR_IO_ReceiveI2Cresponse(sizeof(pDataIn), pDataIn);
- if(status!=M24SR_SUCCESS){
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_selected_NDEF_file(this,status);
return status;
}//else
status= M24SR_IsCorrectCRC16Residue(pDataIn, sizeof(pDataIn));
getCallback()->on_selected_NDEF_file(this,status);
+
return status;
-
}
/**
@@ -730,11 +721,11 @@
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendReadBinary(uint16_t Offset, uint8_t NbByteToRead,
- uint8_t *pBufferRead) {
+M24SR::StatusTypeDefM24SR::M24SR_SendReadBinary(uint16_t Offset, uint8_t NbByteToRead, uint8_t *pBufferRead) {
//clamp the buffer to the max size
- if(NbByteToRead>M24SR_MAX_BYTE_OPERATION_LENGHT)
+ if (NbByteToRead>M24SR_MAX_BYTE_OPERATION_LENGHT) {
NbByteToRead=M24SR_MAX_BYTE_OPERATION_LENGHT;
+ }
C_APDU command;
uint8_t *pBuffer = uM24SRbuffer;
@@ -750,11 +741,10 @@
/* copy the number of byte to read */
command.Body.LE = NbByteToRead;
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_READBINARY, &command, uDIDbyte,
- &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_READBINARY, &command, uDIDbyte, &NbByte, pBuffer);
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status!=M24SR_SUCCESS){
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_read_byte(this,status,Offset,pBufferRead,NbByteToRead);
return status;
}
@@ -764,11 +754,11 @@
mLastCommandData.length=NbByteToRead;
mLastCommandData.offset=Offset;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status==M24SR_SUCCESS){
+ if (status==M24SR_SUCCESS) {
return M24SR_ReceiveReadBinary();
- }else{
+ } else {
mLastCommandSend = NONE;
getCallback()->on_read_byte(this,status,Offset,pBufferRead,NbByteToRead);
return status;
@@ -778,30 +768,29 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveReadBinary(){
-
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveReadBinary() {
M24SR::StatusTypeDef status;
const uint16_t length = mLastCommandData.length;
const uint16_t offset = mLastCommandData.offset;
uint8_t *data = mLastCommandData.data;
- mLastCommandSend=NONE;
+ mLastCommandSend = NONE;
status = M24SR_IO_ReceiveI2Cresponse (length + M24SR_STATUSRESPONSE_NBBYTE , uM24SRbuffer );
- if(status!=M24SR_SUCCESS){
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_read_byte(this,status,offset,data,length);
return status;
}
status = M24SR_IsCorrectCRC16Residue(uM24SRbuffer, length + M24SR_STATUSRESPONSE_NBBYTE);
- if(status != M24SR_SUCCESS)
+ if (status != M24SR_SUCCESS) {
getCallback()->on_read_byte(this,status,offset,data,length);
- else{
+ } else{
/* retrieve the data without SW1 & SW2 as provided as return value of the function */
memcpy(mLastCommandData.data, &uM24SRbuffer[1], length);
getCallback()->on_read_byte(this,status,offset,data,length);
}
+
return status;
-
}
/**
@@ -812,11 +801,11 @@
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendSTReadBinary(uint16_t Offset,
- uint8_t NbByteToRead, uint8_t *pBufferRead) {
+M24SR::StatusTypeDefM24SR::M24SR_SendSTReadBinary(uint16_t Offset, uint8_t NbByteToRead, uint8_t *pBufferRead) {
//clamp the buffer to the max size
- if(NbByteToRead>M24SR_MAX_BYTE_OPERATION_LENGHT)
+ if (NbByteToRead>M24SR_MAX_BYTE_OPERATION_LENGHT) {
NbByteToRead=M24SR_MAX_BYTE_OPERATION_LENGHT;
+ }
C_APDU command;
uint8_t *pBuffer = uM24SRbuffer;
@@ -832,11 +821,10 @@
/* copy the number of byte to read */
command.Body.LE = NbByteToRead;
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_READBINARY, &command, uDIDbyte,
- &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_READBINARY, &command, uDIDbyte, &NbByte, pBuffer);
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status!=M24SR_SUCCESS){
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_read_byte(this,status,Offset,pBufferRead,NbByteToRead);
return status;
}
@@ -845,11 +833,11 @@
mLastCommandData.data=pBufferRead;
mLastCommandData.length=NbByteToRead;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status==M24SR_SUCCESS){
+ if (status==M24SR_SUCCESS) {
return M24SR_ReceiveReadBinary();
- }else{
+ } else {
mLastCommandSend = NONE;
getCallback()->on_read_byte(this,status,Offset,pBufferRead,NbByteToRead);
return status;
@@ -867,11 +855,11 @@
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendUpdateBinary(uint16_t Offset,
- uint8_t NbByteToWrite, uint8_t *pDataToWrite) {
+M24SR::StatusTypeDefM24SR::M24SR_SendUpdateBinary(uint16_t Offset, uint8_t NbByteToWrite, uint8_t *pDataToWrite) {
//clamp the buffer to the max size
- if(NbByteToWrite>M24SR_MAX_BYTE_OPERATION_LENGHT)
+ if (NbByteToWrite>M24SR_MAX_BYTE_OPERATION_LENGHT) {
NbByteToWrite=M24SR_MAX_BYTE_OPERATION_LENGHT;
+ }
C_APDU command;
M24SR::StatusTypeDef status;
@@ -889,11 +877,10 @@
command.Body.pData = pDataToWrite;
/* copy the File Id */
//memcpy(command.Body.pData ,pDataToWrite, NbByteToWrite );
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_UPDATEBINARY, &command, uDIDbyte,
- &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_UPDATEBINARY, &command, uDIDbyte, &NbByte, pBuffer);
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status!=M24SR_SUCCESS){
+ if (status!=M24SR_SUCCESS){
getCallback()->on_updated_binary(this,status,Offset,pDataToWrite,NbByteToWrite);
return status;
}
@@ -903,11 +890,11 @@
mLastCommandData.length=NbByteToWrite;
mLastCommandData.offset=Offset;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status==M24SR_SUCCESS){
+ if (status==M24SR_SUCCESS) {
return M24SR_ReceiveUpdateBinary();
- }else{
+ } else {
mLastCommandSend = NONE;
getCallback()->on_updated_binary(this,status,Offset,pDataToWrite,NbByteToWrite);
return status;
@@ -917,8 +904,7 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveUpdateBinary() {
-
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveUpdateBinary() {
uint8_t respBuffer[M24SR_STATUSRESPONSE_NBBYTE];
M24SR::StatusTypeDef status;
const uint16_t length = mLastCommandData.length;
@@ -935,8 +921,7 @@
if (IsSBlock(respBuffer) == M24SR_SUCCESS) {
/*check the CRC */
- status =M24SR_IsCorrectCRC16Residue(respBuffer,
- M24SR_WATINGTIMEEXTRESPONSE_NBBYTE);
+ status = M24SR_IsCorrectCRC16Residue(respBuffer, M24SR_WATINGTIMEEXTRESPONSE_NBBYTE);
// TODO: why if we check ==NFC_Commandsuccess it fail?
if (status != M24SR_IO_ERROR_CRC) {
/* send the FrameExension response*/
@@ -946,14 +931,13 @@
}//status
}//if
} else { //isSBlock
- status = M24SR_IsCorrectCRC16Residue(respBuffer,
- M24SR_STATUSRESPONSE_NBBYTE);
+ status = M24SR_IsCorrectCRC16Residue(respBuffer, M24SR_STATUSRESPONSE_NBBYTE);
getCallback()->on_updated_binary(this,status,offset,data,length);
}//if else
+
return status;
}//M24SR_ReceiveUpdateBinary
-
/**
* @brief This function sends the Verify command
* @param uPwdId PasswordId ( 0x0001 : Read NDEF pwd or 0x0002 : Write NDEF pwd or 0x0003 : I2C pwd)
@@ -962,8 +946,7 @@
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendVerify(uint16_t uPwdId, uint8_t NbPwdByte,
- const uint8_t *pPwd) {
+M24SR::StatusTypeDefM24SR::M24SR_SendVerify(uint16_t uPwdId, uint8_t NbPwdByte, const uint8_t *pPwd) {
C_APDU command;
M24SR::StatusTypeDef status;
uint8_t *pBuffer = uM24SRbuffer;
@@ -988,31 +971,28 @@
/* copy the password */
command.Body.pData = pPwd;
/* build the I2C command */
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_VERIFYBINARYWITHPWD, &command,
- uDIDbyte, &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_VERIFYBINARYWITHPWD, &command, uDIDbyte, &NbByte, pBuffer);
} else {
command.Body.pData = NULL;
/* build the I2C command */
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_VERIFYBINARYWOPWD, &command,
- uDIDbyte, &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_VERIFYBINARYWOPWD, &command, uDIDbyte, &NbByte, pBuffer);
}
/* send the request */
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status!=M24SR_SUCCESS){
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_verified(this,status,constToPasswordType(uPwdId),pPwd);
return status;
}
mLastCommandSend=VERIFY;
-
mLastCommandData.data=(uint8_t*)pPwd;
mLastCommandData.offset=uPwdId;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status == M24SR_SUCCESS)
+ if(status == M24SR_SUCCESS) {
return M24SR_ReceiveVerify();
- else{
+ } else {
mLastCommandSend = NONE;
getCallback()->on_verified(this,status,constToPasswordType(uPwdId),pPwd);
return status;
@@ -1022,7 +1002,7 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveVerify(){
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveVerify() {
M24SR::StatusTypeDef status;
uint8_t respBuffer[M24SR_STATUSRESPONSE_NBBYTE];
mLastCommandSend=NONE;
@@ -1032,7 +1012,7 @@
status=M24SR_IO_ReceiveI2Cresponse (sizeof(respBuffer),respBuffer);
- if(status !=M24SR_SUCCESS){
+ if (status !=M24SR_SUCCESS) {
getCallback()->on_verified(this,status,type,data);
return status;
}
@@ -1049,8 +1029,7 @@
* @retval Status (SW1&SW2) Satus of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendChangeReferenceData(uint16_t uPwdId,
- uint8_t *pPwd) {
+M24SR::StatusTypeDefM24SR::M24SR_SendChangeReferenceData(uint16_t uPwdId, uint8_t *pPwd) {
C_APDU command;
M24SR::StatusTypeDef status;
uint8_t *pBuffer = uM24SRbuffer;
@@ -1058,8 +1037,7 @@
/*check the parameters */
if (uPwdId > 0x0003) {
- getCallback()->on_change_reference_data(this,M24SR_IO_ERROR_PARAMETER,
- constToPasswordType(uPwdId), pPwd);
+ getCallback()->on_change_reference_data(this,M24SR_IO_ERROR_PARAMETER, constToPasswordType(uPwdId), pPwd);
return M24SR_IO_ERROR_PARAMETER;
}
@@ -1074,14 +1052,12 @@
/* copy the password */
command.Body.pData = pPwd;
/* build the I²C command */
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_CHANGEREFDATA, &command, uDIDbyte,
- &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_CHANGEREFDATA, &command, uDIDbyte, &NbByte, pBuffer);
/* send the request */
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status != M24SR_SUCCESS){
- getCallback()->on_change_reference_data(this,status,
- constToPasswordType(uPwdId), pPwd);
+ if (status != M24SR_SUCCESS) {
+ getCallback()->on_change_reference_data(this,status, constToPasswordType(uPwdId), pPwd);
return status;
}
@@ -1090,14 +1066,13 @@
//use the offset filed for store the pwd id;
mLastCommandData.offset = (uint8_t)uPwdId;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status == M24SR_SUCCESS){
+ if (status == M24SR_SUCCESS) {
return M24SR_ReceiveChangeReferenceData();
- }else{
+ } else {
mLastCommandSend = NONE;
- getCallback()->on_change_reference_data(this,status,
- constToPasswordType(uPwdId), pPwd);
+ getCallback()->on_change_reference_data(this, status, constToPasswordType(uPwdId), pPwd);
return status;
}//if-else
}//if
@@ -1105,7 +1080,7 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveChangeReferenceData(){
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveChangeReferenceData(){
M24SR::StatusTypeDef status;
//TODO the size is 3?
uint8_t rensponseBuffer[M24SR_STATUSRESPONSE_NBBYTE];
@@ -1113,8 +1088,8 @@
PasswordType_t type = constToPasswordType(mLastCommandData.offset);
uint8_t *data = mLastCommandData.data;
- status =M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , rensponseBuffer );
- if(status!=M24SR_SUCCESS){
+ status = M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , rensponseBuffer );
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_change_reference_data(this,status,type,data);
return status;
}//else
@@ -1130,8 +1105,7 @@
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendEnableVerificationRequirement(
- uint16_t uReadOrWrite) {
+M24SR::StatusTypeDefM24SR::M24SR_SendEnableVerificationRequirement(uint16_t uReadOrWrite) {
C_APDU command;
M24SR::StatusTypeDef status;
uint8_t *pBuffer = uM24SRbuffer;
@@ -1139,8 +1113,7 @@
/*check the parameters */
if ((uReadOrWrite != 0x0001) && (uReadOrWrite != 0x0002)) {
- getCallback()->on_enable_verification_requirement(this,M24SR_IO_ERROR_PARAMETER,
- constToPasswordType(uReadOrWrite));
+ getCallback()->on_enable_verification_requirement(this,M24SR_IO_ERROR_PARAMETER, constToPasswordType(uReadOrWrite));
return M24SR_IO_ERROR_PARAMETER;
}
@@ -1151,14 +1124,12 @@
command.Header.P1 = GETMSB(uReadOrWrite);
command.Header.P2 = GETLSB(uReadOrWrite);
/* build the I2C command */
- M24SR_BuildIBlockCommand( M24SR_CMDSTRUCT_ENABLEVERIFREQ, &command,
- uDIDbyte, &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand( M24SR_CMDSTRUCT_ENABLEVERIFREQ, &command, uDIDbyte, &NbByte, pBuffer);
/* send the request */
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status != M24SR_SUCCESS){
- getCallback()->on_enable_verification_requirement(this,status,
- constToPasswordType(uReadOrWrite));
+ if (status != M24SR_SUCCESS) {
+ getCallback()->on_enable_verification_requirement(this, status, constToPasswordType(uReadOrWrite));
return status;
}//if
@@ -1166,14 +1137,13 @@
//use the offset filed for store the pwd id;
mLastCommandData.offset = (uint8_t)uReadOrWrite;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status == M24SR_SUCCESS){
+ if (status == M24SR_SUCCESS) {
return M24SR_ReceiveEnableVerificationRequirement();
- }else{
+ } else {
mLastCommandSend = NONE;
- getCallback()->on_enable_verification_requirement(this,status,
- constToPasswordType(uReadOrWrite));
+ getCallback()->on_enable_verification_requirement(this, status, constToPasswordType(uReadOrWrite));
return status;
}//if-else
}//if
@@ -1181,15 +1151,15 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveEnableVerificationRequirement(){
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveEnableVerificationRequirement(){
M24SR::StatusTypeDef status;
//TODO the size is 3?
uint8_t rensponseBuffer[M24SR_STATUSRESPONSE_NBBYTE];
const PasswordType_t type = constToPasswordType(mLastCommandData.offset);
- status =M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , rensponseBuffer );
- if(status!=M24SR_SUCCESS){
+ status = M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , rensponseBuffer );
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_enable_verification_requirement(this,status,type);
return status;
}//else
@@ -1199,15 +1169,13 @@
return status;
}
-
/**
* @brief This function sends the DisableVerificationRequirement command
* @param uReadOrWrite enable the read or write protection ( 0x0001 : Read or 0x0002 : Write )
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendDisableVerificationRequirement(
- uint16_t uReadOrWrite) {
+M24SR::StatusTypeDefM24SR::M24SR_SendDisableVerificationRequirement(uint16_t uReadOrWrite) {
C_APDU command;
M24SR::StatusTypeDef status;
uint8_t *pBuffer = uM24SRbuffer;
@@ -1215,8 +1183,7 @@
/*check the parameters */
if ((uReadOrWrite != 0x0001) && (uReadOrWrite != 0x0002)) {
- getCallback()->on_disable_verification_requirement(this,M24SR_IO_ERROR_PARAMETER,
- constToPasswordType(uReadOrWrite));
+ getCallback()->on_disable_verification_requirement(this,M24SR_IO_ERROR_PARAMETER, constToPasswordType(uReadOrWrite));
return M24SR_IO_ERROR_PARAMETER;
}
@@ -1227,14 +1194,12 @@
command.Header.P1 = GETMSB(uReadOrWrite);
command.Header.P2 = GETLSB(uReadOrWrite);
/* build the I²C command */
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_DISABLEVERIFREQ, &command,
- uDIDbyte, &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_DISABLEVERIFREQ, &command, uDIDbyte, &NbByte, pBuffer);
/* send the request */
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status != M24SR_SUCCESS){
- getCallback()->on_disable_verification_requirement(this,status,
- constToPasswordType(uReadOrWrite));
+ if (status != M24SR_SUCCESS) {
+ getCallback()->on_disable_verification_requirement(this, status, constToPasswordType(uReadOrWrite));
return status;
}
@@ -1242,31 +1207,29 @@
//use the offset filed for store the pwd id;
mLastCommandData.offset = (uint8_t)uReadOrWrite;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status==M24SR_SUCCESS){
+ if (status==M24SR_SUCCESS) {
return M24SR_ReceiveDisableVerificationRequirement();
- }else{
+ } else {
mLastCommandSend = NONE;
- getCallback()->on_disable_verification_requirement(this,status,
- constToPasswordType(uReadOrWrite));
+ getCallback()->on_disable_verification_requirement(this, status, constToPasswordType(uReadOrWrite));
return status;
}//if-else
}
return M24SR_SUCCESS;
-
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveDisableVerificationRequirement(){
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveDisableVerificationRequirement() {
M24SR::StatusTypeDef status;
//TODO the size is 3?
uint8_t rensponseBuffer[M24SR_STATUSRESPONSE_NBBYTE];
PasswordType_t type = constToPasswordType(mLastCommandData.offset);
- status =M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , rensponseBuffer );
- if(status!=M24SR_SUCCESS){
+ status = M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , rensponseBuffer );
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_disable_verification_requirement(this,status,type);
return status;
}//else
@@ -1276,14 +1239,13 @@
return status;
}
-
/**
* @brief This function sends the EnablePermananentState command
* @param uReadOrWrite enable the read or write protection ( 0x0001 : Read or 0x0002 : Write )
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendEnablePermanentState(uint16_t uReadOrWrite) {
+M24SR::StatusTypeDefM24SR::M24SR_SendEnablePermanentState(uint16_t uReadOrWrite) {
C_APDU command;
M24SR::StatusTypeDef status;
@@ -1292,8 +1254,7 @@
/*check the parameters */
if ((uReadOrWrite != 0x0001) && (uReadOrWrite != 0x0002)) {
- getCallback()->on_enable_permanent_state(this,M24SR_IO_ERROR_PARAMETER,
- constToPasswordType(uReadOrWrite));
+ getCallback()->on_enable_permanent_state(this, M24SR_IO_ERROR_PARAMETER, constToPasswordType(uReadOrWrite));
return M24SR_IO_ERROR_PARAMETER;
}
@@ -1304,14 +1265,12 @@
command.Header.P1 = GETMSB(uReadOrWrite);
command.Header.P2 = GETLSB(uReadOrWrite);
/* build the I2C command */
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_ENABLEVERIFREQ, &command, uDIDbyte,
- &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_ENABLEVERIFREQ, &command, uDIDbyte, &NbByte, pBuffer);
/* send the request */
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status != M24SR_SUCCESS){
- getCallback()->on_enable_permanent_state(this,status,
- constToPasswordType(uReadOrWrite));
+ if (status != M24SR_SUCCESS) {
+ getCallback()->on_enable_permanent_state(this, status, constToPasswordType(uReadOrWrite));
return status;
}
@@ -1319,14 +1278,13 @@
//use the offset filed for store the pwd id;
mLastCommandData.offset = (uint8_t)uReadOrWrite;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType==M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status==M24SR_SUCCESS){
+ if (status == M24SR_SUCCESS) {
return M24SR_ReceiveEnablePermanentState();
- }else{
+ } else {
mLastCommandSend = NONE;
- getCallback()->on_enable_permanent_state(this,status,
- constToPasswordType(uReadOrWrite));
+ getCallback()->on_enable_permanent_state(this, status, constToPasswordType(uReadOrWrite));
return status;
}//if-else
}
@@ -1334,15 +1292,15 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveEnablePermanentState(){
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveEnablePermanentState() {
M24SR::StatusTypeDef status;
//TODO the size is 3?
uint8_t rensponseBuffer[M24SR_STATUSRESPONSE_NBBYTE];
PasswordType_t type = constToPasswordType(mLastCommandData.offset);
- status =M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , rensponseBuffer );
- if(status!=M24SR_SUCCESS){
+ status = M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , rensponseBuffer );
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_enable_permanent_state(this,status,type);
return status;
}//else
@@ -1352,14 +1310,13 @@
return status;
}
-
/**
* @brief This function sends the DisablePermanentState command
* @param uReadOrWrite enable the read or write protection ( 0x0001 : Read or 0x0002 : Write )
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendDisablePermanentState(uint16_t uReadOrWrite) {
+M24SR::StatusTypeDefM24SR::M24SR_SendDisablePermanentState(uint16_t uReadOrWrite) {
C_APDU command;
M24SR::StatusTypeDef status;
uint8_t *pBuffer = uM24SRbuffer;
@@ -1367,8 +1324,7 @@
/*check the parameters */
if ((uReadOrWrite != 0x0001) && (uReadOrWrite != 0x0002)) {
- getCallback()->on_disable_permanent_state(this,M24SR_IO_ERROR_PARAMETER,
- constToPasswordType(uReadOrWrite));
+ getCallback()->on_disable_permanent_state(this, M24SR_IO_ERROR_PARAMETER, constToPasswordType(uReadOrWrite));
return M24SR_IO_ERROR_PARAMETER;
}
@@ -1379,14 +1335,12 @@
command.Header.P1 = GETMSB(uReadOrWrite);
command.Header.P2 = GETLSB(uReadOrWrite);
/* build the I2C command */
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_DISABLEVERIFREQ, &command,
- uDIDbyte, &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_DISABLEVERIFREQ, &command, uDIDbyte, &NbByte, pBuffer);
/* send the request */
status = M24SR_IO_SendI2Ccommand(NbByte, pBuffer);
- if(status != M24SR_SUCCESS){
- getCallback()->on_enable_permanent_state(this,status,
- constToPasswordType(uReadOrWrite));
+ if (status != M24SR_SUCCESS) {
+ getCallback()->on_enable_permanent_state(this, status, constToPasswordType(uReadOrWrite));
return status;
}
@@ -1394,14 +1348,13 @@
//use the offset filed for store the pwd id;
mLastCommandData.offset = (uint8_t)uReadOrWrite;
- if(mCommunicationType==M24SR::SYNC){
+ if (mCommunicationType == M24SR::SYNC) {
status = M24SR_IO_PollI2C();
- if(status==M24SR_SUCCESS){
+ if (status == M24SR_SUCCESS) {
return M24SR_ReceiveDisablePermanentState();
- }else{
+ } else {
mLastCommandSend = NONE;
- getCallback()->on_disable_permanent_state(this,status,
- constToPasswordType(uReadOrWrite));
+ getCallback()->on_disable_permanent_state(this, status, constToPasswordType(uReadOrWrite));
return status;
}//if-else
}
@@ -1409,15 +1362,15 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_ReceiveDisablePermanentState(){
+M24SR::StatusTypeDefM24SR::M24SR_ReceiveDisablePermanentState() {
M24SR::StatusTypeDef status;
//TODO the size is 3?
uint8_t rensponseBuffer[M24SR_STATUSRESPONSE_NBBYTE];
PasswordType_t type = constToPasswordType(mLastCommandData.offset);
- status =M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , rensponseBuffer );
- if(status!=M24SR_SUCCESS){
+ status = M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , rensponseBuffer );
+ if (status!=M24SR_SUCCESS) {
getCallback()->on_disable_permanent_state(this,status,type);
return status;
}//else
@@ -1433,7 +1386,7 @@
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_SendInterrupt(void) {
+M24SR::StatusTypeDefM24SR::M24SR_SendInterrupt(void) {
C_APDU command;
uint8_t *pBuffer = uM24SRbuffer;
@@ -1442,8 +1395,9 @@
StatusTypeDef status = M24SR_ManageI2CGPO(INTERRUPT);
- if(status!=M24SR_SUCCESS)
+ if (status!=M24SR_SUCCESS) {
return status;
+ }
/* build the command */
command.Header.CLA = C_APDU_CLA_ST;
@@ -1453,15 +1407,13 @@
command.Header.P2 = GETLSB(uP1P2);
command.Body.LC = 0x00;
/* build the I2C command */
- M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_SENDINTERRUPT, &command, uDIDbyte,
- &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand(M24SR_CMDSTRUCT_SENDINTERRUPT, &command, uDIDbyte, &NbByte, pBuffer);
/* send the request */
errchk(M24SR_IO_SendI2Ccommand(NbByte, pBuffer));
errchk(M24SR_IO_PollI2C());
/* read the response */
- errchk(
- M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , pBuffer ));
+ errchk(M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , pBuffer ));
return M24SR_IsCorrectCRC16Residue(pBuffer, M24SR_STATUSRESPONSE_NBBYTE);
@@ -1473,7 +1425,7 @@
* @retval Status (SW1&SW2) Status of the operation to complete.
* @retval M24SR_ERROR_I2CTIMEOUT I2C timeout occurred.
*/
- M24SR::StatusTypeDef M24SR::M24SR_StateControl(uint8_t uSetOrReset) {
+M24SR::StatusTypeDefM24SR::M24SR_StateControl(uint8_t uSetOrReset) {
C_APDU command;
uint8_t *pBuffer = uM24SRbuffer;
uint16_t uP1P2 = 0x001F;
@@ -1486,8 +1438,9 @@
StatusTypeDef status = M24SR_ManageI2CGPO(STATE_CONTROL);
- if(status == M24SR_SUCCESS)
+ if (status == M24SR_SUCCESS) {
return status;
+ }
/* build the command */
command.Header.CLA = C_APDU_CLA_ST;
@@ -1501,24 +1454,20 @@
//memcpy(command.Body.pData , &uSetOrReset, 0x01 );
//command.Body.LE = 0x00 ;
/* build the I2C command */
- M24SR_BuildIBlockCommand( M24SR_CMDSTRUCT_GPOSTATE, &command, uDIDbyte,
- &NbByte, pBuffer);
+ M24SR_BuildIBlockCommand( M24SR_CMDSTRUCT_GPOSTATE, &command, uDIDbyte, &NbByte, pBuffer);
/* send the request */
errchk(M24SR_IO_SendI2Ccommand(NbByte, pBuffer));
errchk(M24SR_IO_PollI2C());
/* read the response */
- errchk(
- M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , pBuffer ));
+ errchk(M24SR_IO_ReceiveI2Cresponse (M24SR_STATUSRESPONSE_NBBYTE , pBuffer ));
return M24SR_IsCorrectCRC16Residue(pBuffer, M24SR_STATUSRESPONSE_NBBYTE);
-
}
+M24SR::StatusTypeDefM24SR::M24SR_ManageI2CGPO(NFC_GPO_MGMT GPO_I2Cconfig) {
-M24SR::StatusTypeDef M24SR::M24SR_ManageI2CGPO(NFC_GPO_MGMT GPO_I2Cconfig) {
-
- if(GPOPin.is_connected()==0){
+ if (GPOPin.is_connected() == 0) {
return M24SR_IO_PIN_NOT_CONNECTED;
}
if (GPO_I2Cconfig > STATE_CONTROL) {
@@ -1533,9 +1482,9 @@
return M24SR_SendSelectApplication();
}
-M24SR::StatusTypeDef M24SR::M24SR_ManageRFGPO(NFC_GPO_MGMT GPO_I2Cconfig) {
+M24SR::StatusTypeDefM24SR::M24SR_ManageRFGPO(NFC_GPO_MGMT GPO_I2Cconfig) {
- if(RFDisablePin.is_connected()==0){
+ if(RFDisablePin.is_connected()==0) {
return M24SR_IO_PIN_NOT_CONNECTED;
}
if (GPO_I2Cconfig > STATE_CONTROL) {
@@ -1550,8 +1499,8 @@
return M24SR_SendSelectApplication();
}
-M24SR::StatusTypeDef M24SR::M24SR_RFConfig(uint8_t OnOffChoice) {
- if(RFDisablePin.is_connected()==0){
+M24SR::StatusTypeDefM24SR::M24SR_RFConfig(uint8_t OnOffChoice) {
+ if (RFDisablePin.is_connected()==0) {
return M24SR_IO_PIN_NOT_CONNECTED;
}
/* Disable RF */
@@ -1563,24 +1512,24 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::M24SR_IO_SendI2Ccommand(uint8_t NbByte,
- uint8_t *pBuffer) {
+M24SR::StatusTypeDefM24SR::M24SR_IO_SendI2Ccommand(uint8_t NbByte, uint8_t *pBuffer) {
int ret = dev_I2C.write(address, (char*) pBuffer, NbByte);
- if (ret == 0)
+ if (ret == 0) {
return M24SR_SUCCESS;
+ }
return M24SR_IO_ERROR_I2CTIMEOUT;
}
-M24SR::StatusTypeDef M24SR::M24SR_IO_ReceiveI2Cresponse(uint8_t NbByte,
- uint8_t *pBuffer) {
+M24SR::StatusTypeDefM24SR::M24SR_IO_ReceiveI2Cresponse(uint8_t NbByte, uint8_t *pBuffer) {
int ret = dev_I2C.read(address, (char*) pBuffer, NbByte);
- if (ret == 0)
+ if (ret == 0) {
return M24SR_SUCCESS;
+ }
return M24SR_IO_ERROR_I2CTIMEOUT;
}
-M24SR::StatusTypeDef M24SR::M24SR_IO_PollI2C(void) {
+M24SR::StatusTypeDefM24SR::M24SR_IO_PollI2C(void) {
int status = 1;
while (status != 0 ) {
@@ -1590,9 +1539,9 @@
return M24SR_SUCCESS;
}
-M24SR::StatusTypeDef M24SR::manage_event(void){
+M24SR::StatusTypeDefM24SR::manage_event(void){
- switch(mLastCommandSend){
+ switch(mLastCommandSend) {
case SELECT_APPLICATION:
return M24SR_ReceiveSelectApplication();
case SELECT_CC_FILE:
@@ -1619,14 +1568,14 @@
return M24SR_ReceiveEnablePermanentState();
case DISABLE_PERMANET_STATE:
return M24SR_ReceiveDisablePermanentState();
-
default:
return M24SR_SUCCESS;
}//switch
}//manageInterrupt
-NDefLib::NDefNfcTag& M24SR::get_NDef_tag(){
- return *mNDefTagUtil;
+NDefLib::NDefNfcTag&M24SR::get_NDef_tag(){
+ return *mNDefTagUtil;
}
+
/******************* (C) COPYRIGHT 2013 STMicroelectronics *****END OF FILE****/

X-NUCLEO-NFC01A1 Dynamic NFC Tag