You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am using LoRaMAC version 4.70 and face an issue with the application data not being sent.
After a join procedure, the application layer is supposed to quickly send a couple of upload frames in order to verify the unit installation and to allow the server to send some unit extra configuration (besides of the LoRaMAC commands it could eventually send to setup channels, etc.). However, as it is clearly written in the LoRaMAC code in loramac.c in function PrepareFrame:
// There is application payload available but the MAC commands does NOT fit into FOpts field.
else if( ( MacCtx.AppDataSize > 0 ) && ( macCmdsSize > LORA_MAC_COMMAND_MAX_FOPTS_LENGTH ) )
{
if( LoRaMacCommandsSerializeCmds( availableSize, &macCmdsSize, MacCtx.MacCommandsBuffer ) != LORAMAC_COMMANDS_SUCCESS )
{
return LORAMAC_STATUS_MAC_COMMAD_ERROR;
}
return LORAMAC_STATUS_SKIPPED_APP_DATA;
}
which is fine by me. However, this LORAMAC_STATUS_SKIPPED_APP_DATA is never sent back to the user application as its sole usage is in the send function that will overwrite this status value in the next call:
// Prepare the frame
status = PrepareFrame( macHdr, &fCtrl, fPort, fBuffer, fBufferSize );
// Validate status
if( ( status == LORAMAC_STATUS_OK ) || ( status == LORAMAC_STATUS_SKIPPED_APP_DATA ) )
{
// Schedule frame, do not allow delayed transmissions
status = ScheduleTx( false );
}
In other words, my application will never be aware that the initial packets were never sent. A return of this LORAMAC_STATUS_SKIPPED_APP_DATA value instead of LORAMAC_STATUS_OK would be nice, so that the user application is aware that the application data has not been sent and perform any correction method.
Olivier.
The text was updated successfully, but these errors were encountered:
I am using LoRaMAC version 4.70 and face an issue with the application data not being sent.
After a join procedure, the application layer is supposed to quickly send a couple of upload frames in order to verify the unit installation and to allow the server to send some unit extra configuration (besides of the LoRaMAC commands it could eventually send to setup channels, etc.). However, as it is clearly written in the LoRaMAC code in
loramac.c
in functionPrepareFrame
:which is fine by me. However, this LORAMAC_STATUS_SKIPPED_APP_DATA is never sent back to the user application as its sole usage is in the
send
function that will overwrite thisstatus
value in the next call:In other words, my application will never be aware that the initial packets were never sent. A return of this
LORAMAC_STATUS_SKIPPED_APP_DATA
value instead ofLORAMAC_STATUS_OK
would be nice, so that the user application is aware that the application data has not been sent and perform any correction method.Olivier.
The text was updated successfully, but these errors were encountered: