Otázka number one prečo v .h súbore máš napísané funkcie hod ich do .c suboru
A možno som paranoidný ale nemám rad nekonečne cykly daj si tam nejaký timeout (premennú) a inkrementuj po jej preplnení radšej vráť nejaký error (return 1,2,3,4) a len keď funkcia dobehne dokonca vráti return 0. Potom v maine to možes kontrolovať . Pretože ak sa ti niekde bude zasekávať sw raz za čas bude problém zistiť kde presne a prečo takto si to môžeš logovať alebo niekam posielať a budeš vedieť ktorá funkcia a v akom while sa zasekla. A pripadne do budúcna vieš nato nejak reagovať napríklad resetnuť i2c zbernicu
Priklad :
Kód: Vybrať všetko
while ((receive_data_length <= 0) && (timeout < TIMEOUT_DHCPOFFER)) // wait to data or timeout 5sec
{
timeout++;
receive_data_length = w5500_get_receive_data_length(socket_number);
w5500_delay_ms(1000);
}
if (timeout >= TIMEOUT_DHCPOFFER)
{
w5500_close_socket(socket_number);
return 3; // timeout error
}
return 0;