今天主要做lwip協議棧中的DHCP部分。學會了一個用數組來輪詢的方法。1.將函數指針當成數組的一個元素 2.參數等都可以當變量 3.使用判斷條件for循環就能輪詢的調用這些函數了。
- last_time = cur_time;
- for(idxtimer=0;
- idxtimer < (sizeof(timers_table)/sizeof(timers_info));
- idxtimer ++)
- {
- ptmr_inf = &timers_table[idxtimer];
- ptmr_inf->timer += time_diff;
- if (ptmr_inf->timer > ptmr_inf->timer_interval)
- {
- if (ptmr_inf->timer_func)
- ptmr_inf->timer_func();
- ptmr_inf->timer -= ptmr_inf->timer_interval;
- }
- }
其中 timers_table的定義爲
- static timers_info timers_table[] = {
- /* LWIP_TCP */
- { 0, TCP_FAST_INTERVAL, tcp_fasttmr},
- { 0, TCP_SLOW_INTERVAL, tcp_slowtmr},
- /* LWIP_ARP */
- { 0, ARP_TMR_INTERVAL, etharp_tmr},
- /* LWIP_DHCP */
- #if LWIP_DHCP
- { 0, DHCP_COARSE_TIMER_SECS, dhcp_coarse_tmr},
- { 0, DHCP_FINE_TIMER_MSECS, dhcp_fine_tmr},
- #endif
- };
DHCP調通了添加DHCP部分。