Telegram transmission stops after a while
 Problem
I am having an application that receives and transmits radio telegrams. When I start the application it works ok, but after a while it stops transmitting telegrams. My source code is the following:
while (1)
{
CLR_WDT();
Â
// Handle radio to uart traffic
if (radio_getTelegram(&rTelIn, &pTelIn) == OK)
{
io_togDigital(ADIO_5);
misc_radioToSerial(&rTelIn,&sTelOut);
while (uart_sendTelegram(&sTelOut) != OK);
}
Â
// Handle uart to radio traffic
if (uart_getTelegram(&sTelIn) == OK)
{
misc_serialToRadio(&sTelIn,&rTelOut);
while (radio_sendTelegram(&rTelOut,&pTelOut) !=OK);
}
}
 Solution
All Rx and Tx radio buffers shares the same memory resources. Currently there is no radio buffer dedicated to transmitting telegrams. This can lead to a situation that incoming telegrams will fill all available buffers, thus no buffer is left for transmitting a telegram. To avoid this situation you have to keep fetching telegrams from the buffer even when transmitting.
Correct Example:
void FetchTelegram()
{
// Handle radio to uart traffic
if (radio_getTelegram(&rTelIn, &pTelIn) == OK)
{
io_togDigital(ADIO_5);
misc_radioToSerial(&rTelIn,&sTelOut);
while (uart_sendTelegram(&sTelOut) != OK);
}
Â
}
Â
while (1)
{
CLR_WDT();
FetchTelegram();
Â
// Handle uart to radio traffic
if (uart_getTelegram(&sTelIn) == OK)
{
misc_serialToRadio(&sTelIn,&rTelOut);
while (radio_sendTelegram(&rTelOut,&pTelOut) !=OK)
{ FetchTelegram() };
}
}
 Related Products
4170
DolphinAPI 2.0.0.0, 2.1.0.0