in ports/Storage/src/aia_storage_config.c [389:451]
bool AiaLoadAlert( char* alertToken, size_t alertTokenLen,
AiaTimepointSeconds_t* scheduledTime,
AiaDurationMs_t* duration, uint8_t* alertType,
const uint8_t* allAlertsBuffer )
{
if( !alertToken )
{
AiaLogError( "Null alertToken" );
return false;
}
if( !scheduledTime )
{
AiaLogError( "Null scheduledTime" );
return false;
}
if( !duration )
{
AiaLogError( "Null duration" );
return false;
}
if( !alertType )
{
AiaLogError( "Null alertType" );
return false;
}
if( !allAlertsBuffer )
{
AiaLogError( "Null allAlertsBuffer" );
return false;
}
if( alertTokenLen != AIA_ALERT_TOKEN_CHARS )
{
AiaLogError( "Invalid alert token length" );
return false;
}
size_t bytePosition = 0;
*scheduledTime = 0;
*duration = 0;
*alertType = 0;
memcpy( alertToken, allAlertsBuffer, alertTokenLen );
bytePosition += alertTokenLen;
for( size_t i = 0; i < sizeof( AiaTimepointSeconds_t );
++i, ++bytePosition )
{
*scheduledTime |= (unsigned)allAlertsBuffer[ bytePosition ]
<< ( i * 8 );
}
for( size_t i = 0; i < sizeof( AiaDurationMs_t ); ++i, ++bytePosition )
{
*duration |= (unsigned)allAlertsBuffer[ bytePosition ] << ( i * 8 );
}
for( size_t i = 0; i < sizeof( uint8_t ); ++i, ++bytePosition )
{
*alertType |= (unsigned)allAlertsBuffer[ bytePosition ] << ( i * 8 );
}
return true;
}