Solved
STM32WL store NVM context Lorawan
Hi,
I need some help trying to undestand this operation in Lorawan_end_node example project
nvm_size = ( ( sizeof( LoRaMacNvmData_t ) + 7 ) & ~0x07 ); in the code below:
Maybe it is so simple, but i thought that it would be something like that
nvm_size = sizeof( LoRaMacNvmData_t );
Thanks in advance
LmHandlerErrorStatus_t LmHandlerNvmDataStore( void )
{
#if (defined( CONTEXT_MANAGEMENT_ENABLED ) && ( CONTEXT_MANAGEMENT_ENABLED == 1 ))
LoRaMacNvmData_t *nvm;
uint32_t nvm_size;
LmHandlerErrorStatus_t lmhStatus = LORAMAC_HANDLER_SUCCESS;
int32_t status = NVM_DATA_OK;
lmhStatus = LmHandlerHalt();
if( lmhStatus == LORAMAC_HANDLER_SUCCESS )
{
status = NvmDataMgmtStoreBegin();
if( status == NVM_DATA_NO_UPDATED_DATA )
{
lmhStatus = LORAMAC_HANDLER_NVM_DATA_UP_TO_DATE;
}
else if( ( status != NVM_DATA_OK ) || ( LmHandlerCallbacks->OnStoreContextRequest == NULL ) )
{
lmhStatus = LORAMAC_HANDLER_ERROR;
}
else
{
MibRequestConfirm_t mibReq;
mibReq.Type = MIB_NVM_CTXS;
LoRaMacMibGetRequestConfirm( &mibReq );
nvm = ( LoRaMacNvmData_t * )mibReq.Param.Contexts;
nvm_size = ( ( sizeof( LoRaMacNvmData_t ) + 7 ) & ~0x07 );
LmHandlerCallbacks->OnStoreContextRequest( nvm, nvm_size );
}
if( NvmDataMgmtStoreEnd() != NVM_DATA_OK )
{
lmhStatus = LORAMAC_HANDLER_ERROR;
}
}
if( ( lmhStatus == LORAMAC_HANDLER_SUCCESS ) && ( LmHandlerCallbacks->OnNvmDataChange != NULL ) )
{
LmHandlerCallbacks->OnNvmDataChange( LORAMAC_HANDLER_NVM_STORE );
}
return lmhStatus;
#else
return LORAMAC_HANDLER_ERROR;
#endif /* CONTEXT_MANAGEMENT_ENABLED */
}