?? ztask.c
字號:
#include "include/zarch.h"#include "include/ztask.h"#include "include/znetif.h"#include "include/zbuffer.h"#include "include/zeth.h"#include "include/zarp.h"#include "include/zipv4.h"#include "include/ztcp.h"task_t znet_task_id;u8_t znet_state;sys_sem_t znet_sem;sys_sem_t znet_sem_tmr;static void znetif_rx(znetif_t *pnetif, zbuffer_t *pbuffer);void change_led2(void);void znet_task(void *pdata){ u8_t err; zbuffer_t *pbuffer; printf("ZNet(tcp/ip stack) now working....\n"); znet_sem = sys_new_sem(0); znet_sem_tmr = sys_new_sem(1); tcp_ticks = 0; sys_enter_critical(); znet_state |= ZNET_START; sys_exit_critical(); for(;;) { for(;;) { pbuffer = znetif_read(&default_netif); if ( pbuffer == NULL) { sys_enter_critical(); znet_state &= ~ZNET_RUNNING; sys_wait_sem(znet_sem, 0, &err); /*enter sleep state*/ } else break; } sys_enter_critical(); znet_state |= ZNET_RUNNING; sys_exit_critical(); sys_wait_sem(znet_sem_tmr, 0, &err); led_change(0); znetif_rx(&default_netif, pbuffer); sys_signal_sem(znet_sem_tmr); } }static void znetif_rx(znetif_t *pnetif, zbuffer_t *pbuffer){ eth_header_t *pheader; zbuffer_t *p; pheader = (eth_header_t *)pbuffer->pdata; switch( pheader->eth_type ) { case ETHTYPE_IP: ip_input(pnetif, pbuffer); break; case ETHTYPE_ARP: p = arp_arp_input(pnetif, pbuffer); if (p != NULL) { pnetif->netif_tx(pnetif, p); zbuffer_delete(p); return; } zbuffer_delete(pbuffer); break; default: zbuffer_delete(pbuffer); break; } return;}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -