in source/ota_cbor.c [236:364]
bool OTA_CBOR_Encode_GetStreamRequestMessage( uint8_t * pMessageBuffer,
size_t messageBufferSize,
size_t * pEncodedMessageSize,
const char * pClientToken,
int32_t fileId,
int32_t blockSize,
int32_t blockOffset,
uint8_t * pBlockBitmap,
size_t blockBitmapSize,
int32_t numOfBlocksRequested )
{
CborError cborResult = CborNoError;
CborEncoder cborEncoder, cborMapEncoder;
if( ( pMessageBuffer == NULL ) ||
( pEncodedMessageSize == NULL ) ||
( pClientToken == NULL ) ||
( pBlockBitmap == NULL ) )
{
cborResult = CborUnknownError;
}
/* Initialize the CBOR encoder. */
if( CborNoError == cborResult )
{
cbor_encoder_init( &cborEncoder,
pMessageBuffer,
messageBufferSize,
0 );
cborResult = cbor_encoder_create_map( &cborEncoder,
&cborMapEncoder,
OTA_CBOR_GETSTREAMREQUEST_ITEM_COUNT );
}
/* Encode the client token key and value. */
if( CborNoError == cborResult )
{
cborResult = cbor_encode_text_stringz( &cborMapEncoder,
OTA_CBOR_CLIENTTOKEN_KEY );
}
if( CborNoError == cborResult )
{
cborResult = cbor_encode_text_stringz( &cborMapEncoder,
pClientToken );
}
/* Encode the file ID key and value. */
if( CborNoError == cborResult )
{
cborResult = cbor_encode_text_stringz( &cborMapEncoder,
OTA_CBOR_FILEID_KEY );
}
if( CborNoError == cborResult )
{
cborResult = cbor_encode_int( &cborMapEncoder,
fileId );
}
/* Encode the block size key and value. */
if( CborNoError == cborResult )
{
cborResult = cbor_encode_text_stringz( &cborMapEncoder,
OTA_CBOR_BLOCKSIZE_KEY );
}
if( CborNoError == cborResult )
{
cborResult = cbor_encode_int( &cborMapEncoder,
blockSize );
}
/* Encode the block offset key and value. */
if( CborNoError == cborResult )
{
cborResult = cbor_encode_text_stringz( &cborMapEncoder,
OTA_CBOR_BLOCKOFFSET_KEY );
}
if( CborNoError == cborResult )
{
cborResult = cbor_encode_int( &cborMapEncoder,
blockOffset );
}
/* Encode the block bitmap key and value. */
if( CborNoError == cborResult )
{
cborResult = cbor_encode_text_stringz( &cborMapEncoder,
OTA_CBOR_BLOCKBITMAP_KEY );
}
if( CborNoError == cborResult )
{
cborResult = cbor_encode_byte_string( &cborMapEncoder,
pBlockBitmap,
blockBitmapSize );
}
/* Encode the number of blocks requested key and value. */
if( CborNoError == cborResult )
{
cborResult = cbor_encode_text_stringz( &cborMapEncoder,
OTA_CBOR_NUMBEROFBLOCKS_KEY );
}
if( CborNoError == cborResult )
{
cborResult = cbor_encode_int( &cborMapEncoder,
numOfBlocksRequested );
}
/* Close the encoder. */
if( CborNoError == cborResult )
{
cborResult = cbor_encoder_close_container_checked( &cborEncoder,
&cborMapEncoder );
}
/* Get the encoded size. */
if( CborNoError == cborResult )
{
*pEncodedMessageSize = cbor_encoder_get_buffer_size( &cborEncoder,
pMessageBuffer );
}
return CborNoError == cborResult;
}