Hi there,
I used the pingpong example from the heltec lib 0.0.7 to test a request-confirmation-response-szenario.
This means “ping” sends a message, then it goes to RX with a timeout and expects a response from “pong” within this timeout.
Wifi Lora V3 calls the RxTimeout-ISR constantly after 60 seconds whereas Wifi Lora V2 calls the isr almost immediately.
Does anybody has an idea how to fix this behavior?
Thanx Lutz
Wifi Lora V3 - RxTimeout does not work
Hi Lutz,
First of all there is LORA_SYMBOL_TIMEOUT 0 definition in the original pingpong.ino file, and the last true of the argumentum list means RX continuous mode)
So there is no need to define void OnRxtimeout(void) callback function and no need to register it.
Radio.SetRxConfig( MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
**LORA_SYMBOL_TIMEOUT**, LORA_FIX_LENGTH_PAYLOAD_ON,
0, true, 0, 0, LORA_IQ_INVERSION_ON, **true** );
I hope it is help
Laszlo
Thank you for your reply.
My RxConfig is as follows:
Radio.SetRxConfig(MODEM_LORA, LORA_BANDWIDTH, LORA_SPREADING_FACTOR,
LORA_CODINGRATE, 0, LORA_PREAMBLE_LENGTH,
LORA_SYMBOL_TIMEOUT, LORA_FIX_LENGTH_PAYLOAD_ON,
0, true, 0, 0, LORA_IQ_INVERSION_ON, false);
And within the RadioRx function of radio.c in the LoraWan102 lib there is no usage of LORA_SYMBOL_TIMEOUT:
void RadioRx( uint32_t timeout )
{
SX126xSetDioIrqParams( IRQ_RX_DONE | IRQ_CRC_ERROR| IRQ_RX_TX_TIMEOUT,
IRQ_RX_DONE | IRQ_CRC_ERROR| IRQ_RX_TX_TIMEOUT,
IRQ_RADIO_NONE,
IRQ_RADIO_NONE );
if( timeout != 0 )
{
TimerSetValue( &RxTimeoutTimer, timeout );
TimerStart( &RxTimeoutTimer );
}
if( RxContinuous == true ) // here false
{
SX126xSetLoRaSymbNumTimeout( 0 );
SX126xSetRx( 0xFFFFFF ); // Rx Continuous
}
else
{
SX126xSetRx( RxTimeout << 6 );// this local var is always zero, there is no assignment to it, so I think, here must be “timeout” used
}
}
How can I build this library on my own?
Solved.
Just as I guessed.
SX126xSetRx( timeout << 6 );
solved this problem.
Thanks for figuring this out!