Compare commits

...

5 Commits

Author SHA1 Message Date
Maxime JOURDAN 3043c3b21a
Merge 5a2a231dea into 3416a7dd18 2025-05-14 02:38:54 +01:00
Giovanni Strano 3416a7dd18 [PRJ] Correct the dest addr and Unlock back the Flash after an erase in FLASH_IF_INT_Write()
Change-Id: Id5b1fe757f2f2e62f255d22b2fd14d5320320031
2025-05-13 17:15:20 +01:00
Maxime JOURDAN 5a2a231dea fix typo 2023-04-03 19:15:35 +02:00
Maxime JOURDAN 78bc3c4a6d Add return status for LmHandlerJoin function 2023-04-03 19:08:05 +02:00
Maxime JOURDAN 2ccbb7479f fix comment format 2023-04-03 19:06:41 +02:00
14 changed files with 108 additions and 18 deletions

View File

@ -595,8 +595,10 @@ TimerTime_t LmHandlerGetDutyCycleWaitTime( void )
return DutyCycleWaitTime; return DutyCycleWaitTime;
} }
void LmHandlerJoin( ActivationType_t mode, bool forceRejoin ) LmHandlerErrorStatus_t LmHandlerJoin( ActivationType_t mode, bool forceRejoin )
{ {
LmHandlerErrorStatus_t lmhStatus = LORAMAC_HANDLER_ERROR;
LoRaMacStatus_t status;
MlmeReq_t mlmeReq; MlmeReq_t mlmeReq;
mlmeReq.Type = MLME_JOIN; mlmeReq.Type = MLME_JOIN;
@ -611,7 +613,12 @@ void LmHandlerJoin( ActivationType_t mode, bool forceRejoin )
LoRaMacStart(); LoRaMacStart();
#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 )) #if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 ))
/* Starts the OTAA join procedure */ /* Starts the OTAA join procedure */
LoRaMacMlmeRequest( &mlmeReq ); status = LoRaMacMlmeRequest( &mlmeReq );
if( status == LORAMAC_STATUS_OK )
{
lmhStatus = LORAMAC_STATUS_OK;
}
#endif /* LORAMAC_VERSION */ #endif /* LORAMAC_VERSION */
} }
else else
@ -661,7 +668,7 @@ void LmHandlerJoin( ActivationType_t mode, bool forceRejoin )
{ {
LmHandlerCallbacks->OnJoinRequest( &JoinParams ); LmHandlerCallbacks->OnJoinRequest( &JoinParams );
} }
LmHandlerRequestClass( LmHandlerParams.DefaultClass ); lmhStatus = LmHandlerRequestClass( LmHandlerParams.DefaultClass );
#endif /* LORAMAC_VERSION */ #endif /* LORAMAC_VERSION */
} }
@ -669,10 +676,17 @@ void LmHandlerJoin( ActivationType_t mode, bool forceRejoin )
if( ( CtxRestoreDone == false ) || ( forceRejoin == true ) ) if( ( CtxRestoreDone == false ) || ( forceRejoin == true ) )
{ {
/* Starts the join procedure */ /* Starts the join procedure */
LoRaMacMlmeRequest( &mlmeReq ); status = LoRaMacMlmeRequest( &mlmeReq );
if( status == LORAMAC_STATUS_OK )
{
lmhStatus = LORAMAC_STATUS_OK;
}
} }
DutyCycleWaitTime = mlmeReq.ReqReturn.DutyCycleWaitTime; DutyCycleWaitTime = mlmeReq.ReqReturn.DutyCycleWaitTime;
#endif /* LORAMAC_VERSION */ #endif /* LORAMAC_VERSION */
return lmhStatus;
} }
LmHandlerFlagStatus_t LmHandlerJoinStatus( void ) LmHandlerFlagStatus_t LmHandlerJoinStatus( void )

View File

@ -363,8 +363,12 @@ TimerTime_t LmHandlerGetDutyCycleWaitTime( void );
* *
* \param [in] mode Activation mode (OTAA or ABP) * \param [in] mode Activation mode (OTAA or ABP)
* \param [in] forceRejoin Flag to force the rejoin even if LoRaWAN context can be restored * \param [in] forceRejoin Flag to force the rejoin even if LoRaWAN context can be restored
*
* \retval status Returns \ref LORAMAC_HANDLER_SUCCESS if request has been
* processed else if device not yet joined a network \ref LORAMAC_HANDLER_NO_NETWORK_JOINED
* else \ref LORAMAC_HANDLER_ERROR
*/ */
void LmHandlerJoin( ActivationType_t mode, bool forceRejoin ); LmHandlerErrorStatus_t LmHandlerJoin( ActivationType_t mode, bool forceRejoin );
/*! /*!
* Check whether the Device is joined to the network * Check whether the Device is joined to the network
@ -394,7 +398,7 @@ LmHandlerErrorStatus_t LmHandlerPingSlotReq( uint8_t periodicity );
* *
* \retval status Returns \ref LORAMAC_HANDLER_SUCCESS if request has been * \retval status Returns \ref LORAMAC_HANDLER_SUCCESS if request has been
* processed else if device not yet joined a network \ref LORAMAC_HANDLER_NO_NETWORK_JOINED * processed else if device not yet joined a network \ref LORAMAC_HANDLER_NO_NETWORK_JOINED
else \ref LORAMAC_HANDLER_ERROR * else \ref LORAMAC_HANDLER_ERROR
*/ */
LmHandlerErrorStatus_t LmHandlerRequestClass( DeviceClass_t newClass ); LmHandlerErrorStatus_t LmHandlerRequestClass( DeviceClass_t newClass );

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {

View File

@ -248,7 +248,7 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++) for (page_index = start_page_index; page_index < (start_page_index + number_pages); page_index++)
{ {
page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE; page_address = page_index * FLASH_PAGE_SIZE + FLASH_BASE;
if (FLASH_IF_INT_IsEmpty(pDestination, length) != FLASH_IF_MEM_EMPTY) if (FLASH_IF_INT_IsEmpty((void *)uDest, length) != FLASH_IF_MEM_EMPTY)
{ {
if (pAllocatedBuffer == NULL) if (pAllocatedBuffer == NULL)
{ {
@ -272,6 +272,12 @@ static FLASH_IF_StatusTypedef FLASH_IF_INT_Write(void *pDestination, const void
current_dest = page_address; current_dest = page_address;
current_source = (uint32_t)pAllocatedBuffer; current_source = (uint32_t)pAllocatedBuffer;
current_length = FLASH_PAGE_SIZE; current_length = FLASH_PAGE_SIZE;
/* Unlock back the Flash */
if (HAL_OK != HAL_FLASH_Unlock())
{
ret_status = FLASH_IF_LOCK_ERROR;
}
} }
else else
{ {