Skip to content

Commit

Permalink
Fix interDelayMS in _Cellular_AtcmdDataSend (#155)
Browse files Browse the repository at this point in the history
* The interDelayMS delay should occur after the command respond is received but before data sending.
  • Loading branch information
chinglee-iot authored Oct 23, 2023
1 parent 9f38180 commit ccbd0fc
Showing 1 changed file with 10 additions and 9 deletions.
19 changes: 10 additions & 9 deletions source/cellular_pkthandler.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,7 @@ static CellularPktStatus_t _Cellular_AtcmdRequestTimeoutWithCallbackRaw( Cellula
uint32_t timeoutMS );
static CellularPktStatus_t _Cellular_DataSendWithTimeoutDelayRaw( CellularContext_t * pContext,
CellularAtDataReq_t dataReq,
uint32_t timeoutMs,
uint32_t interDelayMS );
uint32_t timeoutMs );
static void _Cellular_PktHandlerAcquirePktRequestMutex( CellularContext_t * pContext );
static void _Cellular_PktHandlerReleasePktRequestMutex( CellularContext_t * pContext );
static int _searchCompareFunc( const void * pInputToken,
Expand Down Expand Up @@ -267,8 +266,7 @@ static CellularPktStatus_t _Cellular_AtcmdRequestTimeoutWithCallbackRaw( Cellula

static CellularPktStatus_t _Cellular_DataSendWithTimeoutDelayRaw( CellularContext_t * pContext,
CellularAtDataReq_t dataReq,
uint32_t timeoutMs,
uint32_t interDelayMS )
uint32_t timeoutMs )
{
CellularPktStatus_t respCode = CELLULAR_PKT_STATUS_OK;
CellularPktStatus_t pktStatus = CELLULAR_PKT_STATUS_OK;
Expand Down Expand Up @@ -299,9 +297,6 @@ static CellularPktStatus_t _Cellular_DataSendWithTimeoutDelayRaw( CellularContex
}
}

/* Some driver required wait for a minimum of delay before sending data. */
Platform_Delay( interDelayMS );

/* End pattern for specific modem. */
if( ( pktStatus == CELLULAR_PKT_STATUS_OK ) && ( dataReq.pEndPattern != NULL ) )
{
Expand Down Expand Up @@ -706,7 +701,13 @@ CellularPktStatus_t _Cellular_AtcmdDataSend( CellularContext_t * pContext,

if( pktStatus == CELLULAR_PKT_STATUS_OK )
{
pktStatus = _Cellular_DataSendWithTimeoutDelayRaw( pContext, dataReq, dataTimeoutMS, interDelayMS );
if( interDelayMS > 0U )
{
/* Cellular modem may require a minimum delay before sending data. */
Platform_Delay( interDelayMS );
}

pktStatus = _Cellular_DataSendWithTimeoutDelayRaw( pContext, dataReq, dataTimeoutMS );
}

_Cellular_PktHandlerReleasePktRequestMutex( pContext );
Expand Down Expand Up @@ -763,7 +764,7 @@ CellularPktStatus_t _Cellular_TimeoutAtcmdDataSendSuccessToken( CellularContext_

if( pktStatus == CELLULAR_PKT_STATUS_OK )
{
pktStatus = _Cellular_DataSendWithTimeoutDelayRaw( pContext, dataReq, dataTimeoutMS, 0U );
pktStatus = _Cellular_DataSendWithTimeoutDelayRaw( pContext, dataReq, dataTimeoutMS );
}

_Cellular_PktHandlerReleasePktRequestMutex( pContext );
Expand Down

0 comments on commit ccbd0fc

Please sign in to comment.