in source/ota.c [1012:1081]
static OtaErr_t initFileHandler( const OtaEventData_t * pEventData )
{
OtaErr_t err = OtaErrUninitialized;
OtaOsStatus_t osErr = OtaOsSuccess;
OtaEventMsg_t eventMsg = { 0 };
( void ) pEventData;
err = otaDataInterface.initFileTransfer( &otaAgent );
if( err != OtaErrNone )
{
if( otaAgent.requestMomentum < otaconfigMAX_NUM_REQUEST_MOMENTUM )
{
/* Start the request timer. */
osErr = otaAgent.pOtaInterface->os.timer.start( OtaRequestTimer,
"OtaRequestTimer",
otaconfigFILE_REQUEST_WAIT_MS,
otaTimerCallback );
if( osErr != OtaOsSuccess )
{
LogError( ( "Failed to start request timer: "
"OtaOsStatus_t=%s",
OTA_OsStatus_strerror( osErr ) ) );
err = OtaErrInitFileTransferFailed;
}
else
{
otaAgent.requestMomentum++;
}
}
else
{
/* Stop the request timer. */
( void ) otaAgent.pOtaInterface->os.timer.stop( OtaRequestTimer );
/* Send shutdown event. */
eventMsg.eventId = OtaAgentEventShutdown;
if( OTA_SignalEvent( &eventMsg ) == false )
{
err = OtaErrSignalEventFailed;
}
else
{
/* Too many requests have been sent without a response or too many failures
* when trying to publish the request message. Abort. */
err = OtaErrMomentumAbort;
}
}
}
else
{
/* Reset the request momentum. */
otaAgent.requestMomentum = 0;
/* Reset the OTA statistics. */
( void ) memset( &otaAgent.statistics, 0, sizeof( otaAgent.statistics ) );
eventMsg.eventId = OtaAgentEventRequestFileBlock;
if( OTA_SignalEvent( &eventMsg ) == false )
{
err = OtaErrSignalEventFailed;
}
}
return err;
}