mirror of
https://gitlab.com/fabinfra/fabhardware/FabReader2.git
synced 2025-03-14 15:41:51 +01:00
197 lines
6.2 KiB
C
197 lines
6.2 KiB
C
|
/******************************************************************************
|
||
|
* \attention
|
||
|
*
|
||
|
* <h2><center>© COPYRIGHT 2019 STMicroelectronics</center></h2>
|
||
|
*
|
||
|
* Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License");
|
||
|
* You may not use this file except in compliance with the License.
|
||
|
* You may obtain a copy of the License at:
|
||
|
*
|
||
|
* www.st.com/myliberty
|
||
|
*
|
||
|
* 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: NDEF firmware
|
||
|
* Revision:
|
||
|
* LANGUAGE: ISO C99
|
||
|
*/
|
||
|
|
||
|
/*! \file
|
||
|
*
|
||
|
* \author
|
||
|
*
|
||
|
* \brief NDEF message header file
|
||
|
*
|
||
|
* NDEF Message provides functionalities required to perform message management.
|
||
|
* A message is a list of records.
|
||
|
*
|
||
|
* The most common interfaces are:
|
||
|
* <br> ndefMessageReset()
|
||
|
* <br> ndefMessageAppend()
|
||
|
* <br> ndefMessageEncode()
|
||
|
* <br> ndefMessageDecode()
|
||
|
*
|
||
|
* \addtogroup NDEF
|
||
|
* @{
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
#ifndef NDEF_MESSAGE_H
|
||
|
#define NDEF_MESSAGE_H
|
||
|
|
||
|
|
||
|
/*
|
||
|
******************************************************************************
|
||
|
* INCLUDES
|
||
|
******************************************************************************
|
||
|
*/
|
||
|
|
||
|
#include "ndef_record.h"
|
||
|
|
||
|
|
||
|
/*
|
||
|
******************************************************************************
|
||
|
* GLOBAL DEFINES
|
||
|
******************************************************************************
|
||
|
*/
|
||
|
|
||
|
/*! Message scanning macros */
|
||
|
#define ndefMessageGetFirstRecord(message) (((message) == NULL) ? NULL : (message)->record) /*!< Get first record */
|
||
|
#define ndefMessageGetNextRecord(record) (((record) == NULL) ? NULL : (record)->next) /*!< Get next record */
|
||
|
|
||
|
/*
|
||
|
******************************************************************************
|
||
|
* GLOBAL TYPES
|
||
|
******************************************************************************
|
||
|
*/
|
||
|
|
||
|
|
||
|
/*! Message information */
|
||
|
typedef struct
|
||
|
{
|
||
|
uint32_t length; /*!< Message length in bytes */
|
||
|
uint32_t recordCount; /*!< Number of records in the message */
|
||
|
} ndefMessageInfo;
|
||
|
|
||
|
|
||
|
/*! NDEF message */
|
||
|
struct ndefMessageStruct
|
||
|
{
|
||
|
ndefRecord* record; /*!< Pointer to a record */
|
||
|
ndefMessageInfo info; /*!< Message information, e.g. length in bytes, record count */
|
||
|
};
|
||
|
|
||
|
|
||
|
/*
|
||
|
******************************************************************************
|
||
|
* GLOBAL FUNCTION PROTOTYPES
|
||
|
******************************************************************************
|
||
|
*/
|
||
|
|
||
|
|
||
|
/*!
|
||
|
*****************************************************************************
|
||
|
* Initialize an empty NDEF message
|
||
|
*
|
||
|
* \param[in,out] message to initialize
|
||
|
*
|
||
|
* \return ERR_NONE if successful or a standard error code
|
||
|
*****************************************************************************
|
||
|
*/
|
||
|
ReturnCode ndefMessageInit(ndefMessage* message);
|
||
|
|
||
|
|
||
|
/*!
|
||
|
*****************************************************************************
|
||
|
* Get NDEF message information
|
||
|
*
|
||
|
* Return the message information
|
||
|
*
|
||
|
* \param[in] message
|
||
|
* \param[out] info: e.g. message length in bytes, number of records
|
||
|
*
|
||
|
* \return ERR_NONE if successful or a standard error code
|
||
|
*****************************************************************************
|
||
|
*/
|
||
|
ReturnCode ndefMessageGetInfo(const ndefMessage* message, ndefMessageInfo* info);
|
||
|
|
||
|
|
||
|
/*!
|
||
|
*****************************************************************************
|
||
|
* Get the number of NDEF message records
|
||
|
*
|
||
|
* Return the number of records in the given message
|
||
|
*
|
||
|
* \param[in] message
|
||
|
*
|
||
|
* \return number of records
|
||
|
*****************************************************************************
|
||
|
*/
|
||
|
uint32_t ndefMessageGetRecordCount(const ndefMessage* message);
|
||
|
|
||
|
|
||
|
/*!
|
||
|
*****************************************************************************
|
||
|
* Append a record to an NDEF message
|
||
|
*
|
||
|
* \param[in] record: Record to append
|
||
|
* \param[in,out] message: Message to be appended with the given record
|
||
|
*
|
||
|
* \return ERR_NONE if successful or a standard error code
|
||
|
*****************************************************************************
|
||
|
*/
|
||
|
ReturnCode ndefMessageAppend(ndefMessage* message, ndefRecord* record);
|
||
|
|
||
|
|
||
|
/*!
|
||
|
*****************************************************************************
|
||
|
* Decode a raw buffer to an NDEF message
|
||
|
*
|
||
|
* Convert a raw buffer to a message
|
||
|
*
|
||
|
* \param[in] bufPayload: Payload buffer to convert into message
|
||
|
* \param[out] message: Message created from the raw buffer
|
||
|
*
|
||
|
* \return ERR_NONE if successful or a standard error code
|
||
|
*****************************************************************************
|
||
|
*/
|
||
|
ReturnCode ndefMessageDecode(const ndefConstBuffer* bufPayload, ndefMessage* message);
|
||
|
|
||
|
|
||
|
/*!
|
||
|
*****************************************************************************
|
||
|
* Encode an NDEF message to a raw buffer
|
||
|
*
|
||
|
* Convert a message to a raw buffer
|
||
|
*
|
||
|
* \param[in] message: Message to convert
|
||
|
* \param[in,out] bufPayload: Output buffer to store the converted message
|
||
|
* The input length provides the output buffer allocated
|
||
|
* length, used for parameter check to avoid overflow.
|
||
|
* In case the buffer provided is too short, it is
|
||
|
* updated with the required buffer length.
|
||
|
* On success, it is updated with the actual buffer
|
||
|
* length used to contain the converted message.
|
||
|
*
|
||
|
* \return ERR_NONE if successful or a standard error code
|
||
|
*****************************************************************************
|
||
|
*/
|
||
|
ReturnCode ndefMessageEncode(const ndefMessage* message, ndefBuffer* bufPayload);
|
||
|
|
||
|
|
||
|
#endif /* NDEF_MESSAGE_H */
|
||
|
|
||
|
/**
|
||
|
* @}
|
||
|
*
|
||
|
*/
|