in source/ota.c [1838:1898]
static DocParseErr_t initDocModel( JsonDocModel_t * pDocModel,
const JsonDocParam_t * pBodyDef,
void * contextBaseAddr,
uint32_t contextSize,
uint16_t numJobParams )
{
DocParseErr_t err = DocParseErrUnknown;
uint32_t scanIndex;
/* Sanity check the model pointers and parameter count. Exclude the context base address and size since
* it is technically possible to create a model that writes entirely into absolute memory locations.
*/
if( pDocModel == NULL )
{
LogError( ( "Parameter check failed: pDocModel is NULL." ) );
err = DocParseErrNullModelPointer;
}
else if( pBodyDef == NULL )
{
LogError( ( "Parameter check failed: pBodyDef is NULL." ) );
err = DocParseErrNullBodyPointer;
}
else if( numJobParams > OTA_DOC_MODEL_MAX_PARAMS )
{
LogError( ( "Parameter check failed: "
"Document model has %u parameters: "
"Document model should have <= %u parameters.",
numJobParams,
OTA_DOC_MODEL_MAX_PARAMS ) );
err = DocParseErrTooManyParams;
}
else
{
pDocModel->contextBase = contextBaseAddr;
pDocModel->contextSize = contextSize;
pDocModel->pBodyDef = pBodyDef;
pDocModel->numModelParams = numJobParams;
pDocModel->paramsReceivedBitmap = 0;
pDocModel->paramsRequiredBitmap = 0;
/* Scan the model and detect all required parameters (i.e. not optional). */
for( scanIndex = 0; scanIndex < pDocModel->numModelParams; scanIndex++ )
{
if( pDocModel->pBodyDef[ scanIndex ].required == true )
{
/* Add parameter to the required bitmap. */
pDocModel->paramsRequiredBitmap |= ( ( uint32_t ) 1U << scanIndex );
}
}
err = DocParseErrNone;
}
if( err != DocParseErrNone )
{
LogError( ( "Failed to initialize document model: "
"DocParseErr_t=%d", err ) );
}
return err;
}