//#define DEGUB_RX //#define PKTDUMP /****************************************************************************** * * Name: application.c * * Description: web and TCP/IP process invoke * * Copyright: (c) 2005-2050 IC Plus Corp. * All rights reserved. By Jesse * *******************************************************************************/ //include data #include #include #include "uip.h" #include "httpd.h" #include "type_def.h" #include "IP210reg.h" #include "switch.h" #include "timer.h" #include "MACdriver.h" #include "eeprom.h" #include #include "option.h" #include "wdg.h" #include "dido.h" #ifdef MODULE_SMALL_UDP #include "..\net_uart\udp.h" #endif #ifdef MODULE_NET_UART #include "net_uart.h" #else #include "net_uart.h" #endif //NET_UART #ifdef MODULE_DHCPC #include "dhcpc.h" extern u8_t DHCP_get_ip; #endif #ifdef MODULE_NET_CMD #include "../netcmd/net_cmd.h" #endif #ifdef MODULE_SMTP #include "../smtp/smtp.h" #endif extern u8_t need_load_default; u8_t force_reset_countdown=0; void CPU_REBOOT(); #ifdef MODULE_FIRMWARE void CPU_GOTO_FFF7H(void); extern void FUU_Run(void); u8_t firm_flag=0; u8_t boot_flag=0; #endif //#ifdef MODULE_GPIO #include "gpio.h" #include "MDC_MDIO.h" u16_t gpio_cnt=0; u8_t last_status=0; #ifdef IC_PACKAGE_128_PIN #define SMTP_GPIO_PIN0 P3_2 #define SMTP_GPIO_PIN1 P3_3 #else #define SMTP_GPIO_PIN0 P3_5 #define SMTP_GPIO_PIN1 P1_2 #endif //#endif #ifdef MODULE_DNS #include "../net_uart/dns.h" void udp_get_dns(); extern u8_t udp_dns; #endif #ifdef MODULE_SNMP_TRAP #define MAX_SNMP_CNT 100 u16_t SNMP_cnt=MAX_SNMP_CNT; #include "../snmp_trap/snmp_trap.h" #endif #ifdef MODULE_RS485 #include "gpio.h" #endif #ifdef MODULE_NET_UART_CTRL #include "netuart_ctrl.h" #endif //------------------Server Connect---------- #ifdef MODULE_NET_UART u32_t conn_timer=0; extern u8_t conn_flag; #else SRingBuffer UartRxBuf,UartTxBuf; u16_t max_uart_rx_buf_len; u16_t max_uart_tx_buf_len; u8_t volatile xdata* UartBuf=UARTBUF_START_ADDR; u8_t volatile xdata* RxBuf; u8_t volatile xdata* TxBuf; #endif #ifdef DB_FIFO extern u8_t rx_over; #endif //Gateway MAC #define GATEWAY_RESET_TIME 600 u16_t gateway_count=600; u8_t gateway_mac[6]={0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; extern void gateway_mac_req(); /******************************************************20081211 void db_test(); unsigned int getkey2(void); extern void Delay(u16_t data delay); u8_t db_flag=0; //*************************************************************/ #ifdef MODULE_VLAN_TAG u8_t *vlan_tag_pkt(u8_t *input_buf, u16_t *len_ptr); u8_t eth_vlan=0; u8_t vlan_value[4]=0; u8_t EnVlanCheck(); void re_init(); #endif #ifdef MODULE_UART_AUTO_SEND void uart_auto_send(); u8_t f_auto_send=0; #endif //------------------------------------------ #ifdef MODULE_COMMAND_LINE extern u8_t code_flag; extern void scan_cmd(); extern void ATD_loop(); extern u8_t ATD_close; extern u32_t ATD_timer; extern u8_t CLI_flag; extern u8_t *CMD; extern void CLI_init(); extern u8_t cmd_flag; extern u8_t listen_wait; extern u32_t s_con_timer; u8_t code car[14]="NO CARRIER\n\r"; u8_t code car1[5]="2\n\r"; extern u8_t end[4]; u8_t listen_back=0; u8_t back_2_CLI=1; u8_t ip_info=0; extern void NetworkConfig(); #endif #ifdef MODULE_TELNET_RFC extern void rfc_loop(); // void rfc_init(); #endif //public data CONFIG_T config_g; static u32_t xdata start, current; #ifdef PKTDUMP void PktDump() { u32_t i; printf("\n\r=============================[len=%d]=============================\n\r",uip_len); printf("[DA="); for(i=0;i<6;i++) { printf("%x,",(u16_t)uip_buf_real[i]); } printf("]"); printf("[SA="); for(i=6;i<12;i++) { printf("%x,",(u16_t)uip_buf_real[i]); } printf("]"); printf("[EtherType="); for(i=12;i<14;i++) { printf("%x,",(u16_t)uip_buf_real[i]); } printf("]"); printf("[IP.PktLen="); for(i=16;i<18;i++) { printf("%x,",(u16_t)uip_buf_real[i]); } printf("]"); printf("[IP.sIP="); for(i=26;i<30;i++) { printf("%x,",(u16_t)uip_buf_real[i]); } printf("]"); printf("[IP.dIP="); for(i=30;i<34;i++) { printf("%x,",(u16_t)uip_buf_real[i]); } printf("]"); printf("[UDP/TCP.sPort="); for(i=34;i<36;i++) { printf("%x,",(u16_t)uip_buf_real[i]); } printf("]"); printf("[UDP/TCP.dPort="); for(i=36;i<38;i++) { printf("%x,",(u16_t)uip_buf_real[i]); } printf("]"); } #endif extern u8_t borcast_flag; #ifdef MODULE_VLAN_TAG extern u8_t udp_send_pkt; #endif void CheckPktSend() { if(uip_len) { #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\rY");rx_over=0;} #endif #endif #ifdef MODULE_NET_CMD if( NetCmdData.CurrentPktType == TypeUCmd ) //Joe for UDP NetCmd from Different LAN { if(borcast_flag) { borcast_flag=0; memcpy(uip_buf_real, uip_buf_real+6, 6); memcpy(uip_buf_real+6, uip_ethaddr.addr, 6); uip_len += 14; } else { uip_arp_out(); } NetCmdData.CurrentPktType=TypeTCmd; } else #endif { uip_arp_out(); } #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\rX");rx_over=0;} #endif #endif #ifdef MODULE_VLAN_TAG EthernetSend(eth_vlan_buf, uip_len); #else EthernetSend(&uip_buf_real,uip_len); #endif uip_len=0; } } u8_t fiber_not_link_cnt=0; void fiber_cover() { if(Read_MDC(0x1f,0x1)&0x04) { fiber_not_link_cnt=0; } else { fiber_not_link_cnt++; if(fiber_not_link_cnt>=50) { Write_MDC(0x1f,0x0,0x8000); fiber_not_link_cnt=0; } } } void fiber_cover2()//disable phy power saving { u16_t tmp10,tmp00,tmp00b; tmp00=Read_MDC(0x1f,0x00); tmp10=Read_MDC(0x1f,0x10); Write_MDC(0x1f,0x00,tmp00|0x1000); tmp00b=Read_MDC(0x1f,0x00); if((tmp00b&0x1000)!=0x1000) {//it is fiber Write_MDC(0x1f,0x10,tmp10&0xff7f); } Write_MDC(0x1f,0x00,tmp00); } u8_t on_tcp_rx() { #ifdef MODULE_NET_UART #ifdef MODULE_VLAN_TAG if(EnVlanCheck()) #endif { if(NetUartOnTCPRx()){ return 1; } } #endif #ifdef MODULE_NET_CMD if(NetCmdOnTCPRx()){ return 1; } #endif #ifdef MODULE_SMTP if(SMTPOnTCPRx()){ return 1; } #endif #ifdef MODULE_NET_UART_CTRL if(nuc_on_tcp_rx()){ return 1; } #endif #ifdef MODULE_TCP_DIDO if(dido_tcp_rx_fun()){return 1;} #endif return 0; } u32_t system_parameter; void* get_system_parameter(u16_t ID) { switch(ID) { case SYS_PARAM_EXPIRE_TIME: system_parameter=60000; break; } return &system_parameter; } /****************************************************************************** * * Function: application() * * Description: Network process * * Parameters: None * * Returns: None * *******************************************************************************/ u8_t load_default_pin_pressed=1; u8_t in_isr=0; u8_t EEPROMLoadDefault(void); void EEPROMInit(void); void application(void) { #ifdef MODULE_FIRMWARE u16_t firm_count=0; #endif u8_t i=0,l=0; #ifdef MODULE_SMTP u16_t j=0; #endif #ifdef MODULE_COMMAND_LINE #ifdef MODULE_NET_UART u8_t code ans[13]="NO ANSWER\n\r"; u8_t code ans1[5]="3\n\r"; #endif #endif #ifdef DEGUB_RX u8_t DebugRxCnt=0; #endif uip_arp_init(); restore_uip_buf(); uip_init(); #ifdef MODULE_MUIP muip_init(); #endif #ifdef MODULE_NET_UART #ifdef MODULE_RS485 P4_0=0x0; #endif NetUartInit(); #ifdef MODULE_DIDO dido_init(); #endif #endif #ifdef MODULE_SMALL_UDP udp_init(&uip_buf[UIP_LLH_LEN],&uip_len,uip_hostaddr); #endif //MODULE_SMALL_UDP #ifdef MODULE_CLI_CUSTOMIAZE #else httpd_init(); #endif #ifdef MODULE_FULL_MSG printf("\n\rWebCodeVersion : %s",WEB_CODE_VERSION); printf("\n\rWebPageVersion : %s",WEB_PAGE_VERSION); #else // printf("\n\rWebCodeVersion : %s",WEB_CODE_VERSION); // printf("\n\rWebPageVersion : %s",WEB_PAGE_VERSION); #endif IP210_Update_Timer_Counter(); current = timercounter; start = current; uip_len=0; #ifdef MODULE_DHCPC DHCPCInit(); #endif #ifdef MODULE_GPIO /*Initial SMTP-GPIO pins to 0*/ //SMTP_GPIO_PIN0=0;//jc_db: need to add //SMTP_GPIO_PIN1=0;//jc_db: need to add #endif //MODULE_GPIO #ifdef MODULE_SMTP SMTP_GPIO_PIN0=0;//jc_db: need to add SMTP_GPIO_PIN1=0;//jc_db: need to add smtp_init(); #endif #ifdef MODULE_NET_CMD NetCmdInit(); #endif #ifdef MODULE_NET_UART_CTRL nuc_init(); #endif #ifdef MODULE_COMMAND_LINE CLI_init(); #endif #ifdef MODULE_TELNET_RFC // rfc_init(); #endif #ifdef DB_DUMP_EEPROM { u16_t i; u8_t tmp; printf("\n\r EEPROM information:"); for(i=0;i<2048;i++) { if(i%16==0)printf("\n\r [%4.4x] ",i); EEPROM_Read_Byte(i,&tmp); printf("%2.2x ",(u16_t)tmp); } } #endif #ifdef DB_SHOW_EEPROM_SIZE { u16_t ee_len=0; printf("\n\rchip_id%x %d",(u16_t)EE_Default.chip_id-(u16_t)&EE_Default,(u16_t)sizeof(EE_Default.chip_id)); ee_len+=sizeof(EE_Default.chip_id); printf("\n\rapp_id%x %d",(u16_t)EE_Default.app_id-(u16_t)&EE_Default,(u16_t)sizeof(EE_Default.app_id)); ee_len+=sizeof(EE_Default.app_id); printf("\n\rEEConfigInfo%x %d",(u16_t)&EE_Default.netif-(u16_t)&EE_Default,(u16_t)sizeof(EE_Default.netif)); ee_len+=sizeof(EE_Default.netif); printf("\n\rSUARTInfo%x %d",(u16_t)&EE_Default.ModuleInfo.UARTInfo-(u16_t)&EE_Default,(u16_t)sizeof(EE_Default.ModuleInfo.UARTInfo)); ee_len+=sizeof(EE_Default.ModuleInfo.UARTInfo); printf("\n\rSTelnetInfo%x %d",(u16_t)&EE_Default.ModuleInfo.TelnetInfo-(u16_t)&EE_Default,(u16_t)sizeof(EE_Default.ModuleInfo.TelnetInfo)); ee_len+=sizeof(EE_Default.ModuleInfo.TelnetInfo); printf("\n\rSNetCmdInfo%x %d",(u16_t)&EE_Default.ModuleInfo.NetCmdInfo-(u16_t)&EE_Default,(u16_t)sizeof(EE_Default.ModuleInfo.NetCmdInfo)); ee_len+=sizeof(EE_Default.ModuleInfo.NetCmdInfo); printf("\n\rudp_tel_info_t%x %d",(u16_t)&EE_Default.ModuleInfo.UDPTelInfo-(u16_t)&EE_Default,(u16_t)sizeof(EE_Default.ModuleInfo.UDPTelInfo)); ee_len+=sizeof(EE_Default.ModuleInfo.UDPTelInfo); printf("\n\rSSMTPInfo%x %d",(u16_t)&EE_Default.ModuleInfo.SMTPInfo-(u16_t)&EE_Default,(u16_t)sizeof(EE_Default.ModuleInfo.SMTPInfo)); ee_len+=sizeof(EE_Default.ModuleInfo.SMTPInfo); printf("\n\rtatol=%d",ee_len); } #endif fiber_cover2(); #ifdef MODULE_COMMAND_LINE RingInit(UartRxBuf,RxBuf,max_uart_rx_buf_len); RingInit(UartTxBuf,TxBuf,max_uart_tx_buf_len); #endif //-------------------------------------------------------------------------RS485 IP210RegWrite(REG_PAD_CONTROL, 0x3); LOAD_DEFAULT_PIN=1; //(HW > FW) For RS422/485 we pull this pin high //------------------------------------------------------------------------------ TR0=1; while (1) { // db_test(); #ifdef MODULE_UART_AUTO_SEND uart_auto_send(); if(f_auto_send) { uip_conn=TelnetData.uip_conn_last; uip_process(UIP_TIMER); CheckPktSend(); #ifdef MODULE_MUIP muip_send(); #endif//MODULE_MUIP f_auto_send=0; } #endif #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r1");rx_over=0;} #endif #endif if(need_load_default || load_default_pin_pressed) { if(Delta_Time(0L)>500)//5 sec { printf("\n\rLoad Default Setting..."); EEPROMLoadDefault(); EEPROMInit(); need_load_default=0; load_default_pin_pressed=0; printf("OK"); force_reset_countdown=5; } } if((LOAD_DEFAULT_PIN==1)&&(load_default_pin_pressed==1))//not pressed { load_default_pin_pressed=0; } #ifdef MODULE_NET_UART #ifdef MODULE_RS485 if(TelnetData.pEEPROM_UART->OP_Mode!=UART_INFO_OP_M_RS232) { LOAD_DEFAULT_PIN=0; } else { LOAD_DEFAULT_PIN=1; } #endif//MODULE_RS485 #endif #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\rG");rx_over=0;} #endif #endif //-----------------Command line------------------------------------------------ #ifdef MODULE_COMMAND_LINE #ifdef MODULE_NET_UART ATD_loop(); WatchDogTimerReset(); #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r2");rx_over=0;} #endif #endif #ifdef MODULE_UART_AUTO_SEND uart_auto_send(); if(f_auto_send) { uip_conn=TelnetData.uip_conn_last; uip_process(UIP_TIMER); CheckPktSend(); #ifdef MODULE_MUIP muip_send(); #endif//MODULE_MUIP f_auto_send=0; } #endif if(ATD_close == 1) { if( Delta_Time(ATD_timer)>=(100*NetUARTData.pTelnetData->pEEPROM_Telnet->CLI_timeout) ) { if(TelnetData.ConnectStatus == tcConnected) { back_2_CLI=0; } else { TelnetData.WaitAck=0; CLI_flag=1; ATD_close=0; conn_flag=0; if(back_2_CLI==1) { if(code_flag){ UART_Transmit_Multi(ans, 13); } else{ UART_Transmit_Multi(ans1, 5); } } else { if(code_flag){ UART_Transmit_Multi(car, 14); } else{ UART_Transmit_Multi(car1, 5); } back_2_CLI=1; } if(cmd_flag) { UART_Transmit_Multi(CMD, strlen(CMD)); } } } } #ifndef MODULE_CLI_CUSTOMIAZE else if(NetUARTData.pTelnetData->pEEPROM_Telnet->cli_en) #else else #endif { #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r3");rx_over=0;} #endif #endif if(CLI_flag==0) { #ifdef MODULE_FLASH512 if( (TelnetData.ConnectStatus==tcConnected)||(NetUARTData.pTelnetData->pEEPROM_Telnet->op_mode==NU_OP_MODE_UDP_LIS)||(NetUARTData.pTelnetData->pEEPROM_Telnet->op_mode==NU_OP_MODE_UDP_NOR) ) #else if( (TelnetData.ConnectStatus==tcConnected)||(NetUARTData.pTelnetData->pEEPROM_Telnet->op_mode==NU_OP_MODE_UDP) ) #endif { back_2_CLI=0; } else { TelnetData.WaitAck=0; CLI_flag=1; conn_flag=0; if(back_2_CLI==0) { if(code_flag){ UART_Transmit_Multi(car, 14); } else{ UART_Transmit_Multi(car1, 5); } back_2_CLI=1; } if(cmd_flag) { UART_Transmit_Multi(CMD, strlen(CMD)); } } } } if(listen_wait) { listen_back=1; if( Delta_Time(s_con_timer)>=(100*NetUARTData.pTelnetData->pEEPROM_Telnet->s_connect_time) ) { listen_wait=0; conn_flag=0; } } #endif #endif //----------------------------------------------------------------------------- #ifdef MODULE_UART_AUTO_SEND uart_auto_send(); if(f_auto_send) { uip_conn=TelnetData.uip_conn_last; uip_process(UIP_TIMER); CheckPktSend(); #ifdef MODULE_MUIP muip_send(); #endif//MODULE_MUIP f_auto_send=0; } #endif #ifdef MODULE_NET_UART NET_UART_LOOP('A'); #ifdef DB_FIFO if(rx_over){printf("\n\r4");rx_over=0;} #endif #endif #ifdef MODULE_RS485 if(TelnetData.pEEPROM_UART->OP_Mode==UART_INFO_OP_M_RS485) { UART_RS485_Update_TxControl(); } #endif //reset WDT in case WDT would cause a CPU Reset WatchDogTimerReset(); #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\rW");rx_over=0;} #endif #endif CheckPktSend(); #ifdef MODULE_UART_AUTO_SEND uart_auto_send(); if(f_auto_send) { uip_conn=TelnetData.uip_conn_last; uip_process(UIP_TIMER); CheckPktSend(); #ifdef MODULE_MUIP muip_send(); #endif//MODULE_MUIP f_auto_send=0; } #endif #ifdef MODULE_UDP_TELNET #ifdef MODULE_FLASH512 if( (NetUARTData.pTelnetData->pEEPROM_Telnet->op_mode==NU_OP_MODE_UDP_NOR)|| (NetUARTData.pTelnetData->pEEPROM_Telnet->op_mode==NU_OP_MODE_UDP_LIS) ) #else if(NetUARTData.pTelnetData->pEEPROM_Telnet->op_mode==NU_OP_MODE_UDP) #endif { #ifdef MODULE_DNS if(NetUARTData.pTelnetData->pEEPROM_Telnet->op_mode==NU_OP_MODE_UDP_LIS) { udp_dns=1; } if(udp_dns!=1) { if(EEConfigInfo.DHCPEnable!=sDHCP_DISABLE) { if(DHCP_get_ip) { if(NetUARTData.pTelnetData->pEEPROM_Telnet->op_mode==NU_OP_MODE_UDP_NOR) { udp_get_dns(); CheckPktSend(); } } } else { udp_dns=1; } } else #endif { #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r5");rx_over=0;} #endif #endif udp_tel_chk_send(); WatchDogTimerReset(); #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r6");rx_over=0;} #endif #endif } } #endif //MODULE_UDP_TELNET #ifdef MODULE_VLAN_TAG uip_len = EthernetReceive(ð_vlan_buf[4]); #else uip_len = EthernetReceive(&uip_buf_real); #endif if (uip_len > 0) { int uip_len_tmp; #ifdef MODULE_VLAN_TAG if(ModuleInfo.VLANINFO.vlan==1) //Enable VLAN Tag { #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r7");rx_over=0;} #endif #endif if( (eth_vlan_buf[16]==0x81)&&(eth_vlan_buf[17]==0x00) ) { vlan_tag_pkt(ð_vlan_buf[4], &uip_len); uip_buf_real=ð_vlan_buf[8]; uip_buf=ð_vlan_buf[8]; eth_vlan=1; } else { uip_buf_real=ð_vlan_buf[4]; uip_buf=ð_vlan_buf[4]; } re_init(); } #endif #ifdef MODULE_NET_UART NET_UART_LOOP('A'); #ifdef DB_FIFO if(rx_over){printf("\n\r8");rx_over=0;} #endif #endif if( (uip_buf_real[0]&0x01)==0 ) //Check Unicast DA { for(l=0;l<6;l++) { if(uip_buf_real[l]!=EEConfigInfo.MACID[l])uip_len=0; } } uip_len_tmp=uip_len; #ifdef DEGUB_RX if(DebugRxCnt++>=10) { DebugRxCnt=0; printf("*"); } #endif #ifdef MODULE_NET_CMD NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r9");rx_over=0;} #endif LocalCmd(); if(uip_len) { //uip_arp_out(); #ifdef MODULE_VLAN_TAG EthernetSend(eth_vlan_buf, uip_len); #else EthernetSend(&uip_buf_real,uip_len); #endif } #endif //MODULE_NET_CMD uip_len=uip_len_tmp; uip_arp_ipin(); uip_len=uip_len_tmp; uip_arp_arpin(); #ifdef MODULE_NET_CMD NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\rE");rx_over=0;} #endif #endif if(uip_len) { //uip_arp_out();//Remove for ARP bug #ifdef MODULE_VLAN_TAG EthernetSend(eth_vlan_buf, uip_len); #else EthernetSend(&uip_buf_real,uip_len); #endif } #ifdef MODULE_SMALL_UDP uip_len=uip_len_tmp; #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r10");rx_over=0;} #endif #endif udp_process(); #ifdef MODULE_NET_UART NET_UART_LOOP('B'); #ifdef DB_FIFO if(rx_over){printf("\n\r11");rx_over=0;} #endif #endif CheckPktSend(); #endif //MODULE_SMALL_UDP #ifdef MODULE_MUIP uip_len=uip_len_tmp; muip_process(); //it will not send any packet out #endif//MODULE_MUIP uip_len=uip_len_tmp; uip_process(UIP_DATA); #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r12");rx_over=0;} #endif #endif CheckPktSend(); #ifdef MODULE_MUIP muip_send(); #endif//MODULE_MUIP #ifdef MODULE_UART_AUTO_SEND uart_auto_send(); if(f_auto_send) { uip_conn=TelnetData.uip_conn_last; uip_process(UIP_TIMER); CheckPktSend(); #ifdef MODULE_MUIP muip_send(); #endif//MODULE_MUIP f_auto_send=0; } #endif #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r13");rx_over=0;} #endif #endif } //---------------------Server Connect--------------- #ifdef MODULE_NET_UART if(conn_flag) //joe modify juset use get newdate to reflash timer do not use heart_beat 20081202 { if(NetUARTData.pTelnetData->pEEPROM_Telnet->tcptimeout==0) { conn_flag=0; } else if(NetUARTData.pTelnetData->pEEPROM_Telnet->tcptimeout!=99) { if(Delta_Time(conn_timer) >= (6000*NetUARTData.pTelnetData->pEEPROM_Telnet->tcptimeout)) { conn_flag=0; } } } #endif //-------------------------------------------------- IP210_Update_Timer_Counter(); current = timercounter; IP210_Update_Timer_Counter(); if (Delta_Time(start) >= IP210_TIMER_SCALE) // 100 msec. { //----------------------For Gateway MAC----------------------------- gateway_count++; if(gateway_count>=GATEWAY_RESET_TIME) { // if(TelnetData.ConnectStatus!=tcConnected) // { gateway_mac_req(); #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\rZZ");rx_over=0;} #endif #endif // } // else // { gateway_count=0; } if(uip_len) { #ifdef MODULE_VLAN_TAG EthernetSend(eth_vlan_buf, uip_len); #else EthernetSend(&uip_buf_real,uip_len); #endif uip_len=0; } } //------------------------------------------------------------------ #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r14");rx_over=0;} #endif #endif #ifdef MODULE_FIRMWARE //****************************TEST FOR FIRMWARE UPDATE if( (firm_flag==1)||(boot_flag==1) ) { firm_count++; if(firm_count>10) { if(firm_flag==1) { CPU_GOTO_FFF7H(); } if(boot_flag==1) { FUU_Run(); } } } //**************************************************** #endif #ifdef MODULE_NET_UART_CTRL nuc_on_loop(); #endif //MODULE_NET_UART_CTRL #ifdef MODULE_TELNET_RFC rfc_loop(); #endif fiber_cover(); if(force_reset_countdown) { if(force_reset_countdown--==1)CPU_REBOOT(); } #ifdef MODULE_NET_UART NET_UART_LOOP('A'); #ifdef DB_FIFO if(rx_over){printf("\n\r15");rx_over=0;} #endif NetUartTimer(); CheckPktSend(); #ifdef MODULE_VLAN_TAG if(NetUARTData.pTelnetData->pEEPROM_Telnet->op_mode==NU_OP_MODE_CLIENT) { udp_send_pkt=0; } #endif uip_len=0; #ifdef MODULE_UART_AUTO_SEND uart_auto_send(); if(f_auto_send) { uip_conn=TelnetData.uip_conn_last; uip_process(UIP_TIMER); CheckPktSend(); #ifdef MODULE_MUIP muip_send(); #endif//MODULE_MUIP f_auto_send=0; } #endif #endif #ifdef MODULE_NET_CMD NetCmdTimer(); #endif //MODULE_NET_CMD #ifdef MODULE_SNMP_TRAP if(SNMP_cnt--<=0) { SNMP_cnt=MAX_SNMP_CNT; SNMP_TRAP(); CheckPktSend(); uip_len=0; } #endif //#ifdef MODULE_GPIO #ifdef MODULE_SMTP #define MASK_BIT_G4_G3 0x18 #define GPIO_CHECK_RATE 1200 /* Send mail after 2 minute */ #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r16");rx_over=0;} #endif #endif j=SMTP_GPIO_PIN1; j*=2; j|=SMTP_GPIO_PIN0; if(gpio_cnt++>=GPIO_CHECK_RATE) { if(j!=0)smtp_send_mail(j-1); gpio_cnt=0; } else { /* Send mail when status change */ if(j!=0) { if(last_status!=j) { smtp_send_mail(j-1); gpio_cnt=0; } } } last_status=j; //#endif //MODULE_GPIO #endif //MODULE_SMTP #ifdef MODULE_SMTP smtp_timer(); #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r78");rx_over=0;} #endif #endif CheckPktSend(); uip_len=0; #endif //MODULE_SMTP #ifdef MODULE_UART_AUTO_SEND uart_auto_send(); if(f_auto_send) { uip_conn=TelnetData.uip_conn_last; uip_process(UIP_TIMER); CheckPktSend(); #ifdef MODULE_MUIP muip_send(); #endif//MODULE_MUIP f_auto_send=0; } #endif #ifdef MODULE_DHCPC #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r17");rx_over=0;} #endif #endif DHCPCTimer(); if(uip_len) { uip_arp_out(); #ifdef MODULE_VLAN_TAG EthernetSend(eth_vlan_buf, uip_len); #else EthernetSend(&uip_buf_real,uip_len); #endif uip_len=0; } #endif for (i=0; i < UIP_CONNS; ++i) { #ifdef MODULE_NET_UART NET_UART_LOOP('D'); #ifdef DB_FIFO if(rx_over){printf("\n\r18");rx_over=0;} #endif #endif uip_conn = &uip_conns[i]; uip_process(UIP_TIMER); #ifdef MODULE_NET_UART NET_UART_LOOP('D'); #ifdef DB_FIFO if(rx_over){printf("\n\rH");rx_over=0;} #endif #endif CheckPktSend(); #ifdef MODULE_MUIP muip_send(); #endif//MODULE_MUIP #ifdef MODULE_UART_AUTO_SEND uart_auto_send(); if(f_auto_send) { uip_conn=TelnetData.uip_conn_last; uip_process(UIP_TIMER); CheckPktSend(); #ifdef MODULE_MUIP muip_send(); #endif//MODULE_MUIP f_auto_send=0; } #endif #ifdef MODULE_NET_UART NET_UART_LOOP('E'); #ifdef DB_FIFO if(rx_over){printf("\n\r19");rx_over=0;} #endif #endif } start = timercounter; uip_arp_timer(); if(uip_len) { //uip_arp_out(); #ifdef MODULE_VLAN_TAG EthernetSend(eth_vlan_buf, uip_len); #else EthernetSend(&uip_buf_real,uip_len); #endif uip_len=0; } } #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r20");rx_over=0;} #endif #endif } // end while(1) } // end main() #ifdef MODULE_VLAN_TAG u8_t *vlan_tag_pkt(u8_t *input_buf, u16_t *len_ptr) { u8_t tag_buf[16]=0; #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r21");rx_over=0;} #endif #endif memcpy(tag_buf, &input_buf[12], 4); memcpy(vlan_value, tag_buf, 4); //remember vlan tag value memcpy(&tag_buf[4], &input_buf[0], 12); memcpy(input_buf, tag_buf, 16); *len_ptr-=4; #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r22");rx_over=0;} #endif #endif return &input_buf[4]; } u8_t EnVlanCheck() { #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r23");rx_over=0;} #endif #endif if(ModuleInfo.VLANINFO.vlan==1) { if( (ModuleInfo.VLANINFO.value_id[0]!=0)||(ModuleInfo.VLANINFO.value_id[1]!=0) ) { if( (vlan_value[2]!=ModuleInfo.VLANINFO.value_id[0])||(vlan_value[3]!=ModuleInfo.VLANINFO.value_id[1]) ) { return 0; } } } #ifdef MODULE_NET_UART NET_UART_LOOP('C'); #ifdef DB_FIFO if(rx_over){printf("\n\r24");rx_over=0;} #endif #endif return 1; } void re_init() { restore_uip_buf(); WriteEthRx2UART(); udp_init(&uip_buf[UIP_LLH_LEN],&uip_len,uip_hostaddr); if( (NetUARTData.pTelnetData->pEEPROM_Telnet->op_mode==NU_OP_MODE_SERVER)|| (NetUARTData.pTelnetData->pEEPROM_Telnet->op_mode==NU_OP_MODE_CLIENT) ) { NetUARTData.pkt_rx_data_offset=uip_appdata; NetUARTData.pkt_tx_data_offset=uip_appdata; } else { NetUARTData.pkt_rx_data_offset=UdpData.p_DataPkt->udpload; NetUARTData.pkt_tx_data_offset=UdpData.p_DataPkt->udpload; } } #endif /* void db_test() { char choice; char cmd[2]; int i=0; for(i=0;i<1;i++) { if(RI) { break; } } choice=SBUF; if(((choice==0x31)||(choice==0x32))&&(strlen(cmd)==0)) { cmd[0]=getkey2(); cmd[1]=0x0; if(!strncmp(cmd, "1", 1)) //star { if(db_flag==0) { printf("\n\rstar"); db_flag=1; memset(cmd, 0, 2); } else if(db_flag==1) { db_flag=0; memset(cmd, 0, 2); printf("\n\rstop"); } } else if(!strncmp(cmd, "2", 1)) //stop { } } else { RI=0; } } unsigned int getkey2(void) { int a; u8_t jo=0x0; if(!RI){return jo;} a = SBUF; RI = 0; if(a==27) { while(!RI) { Delay(5000); RI=1; } a=SBUF; RI=0; if(a==27) ; else { if(a==91) { while (!RI); a = SBUF; RI = 0; } } return a; } } */