void dhcp_callback(enum dhcp_event event) { switch(event) { case dhcp_event_timeout: DBG_INFO("[dhcp]: timeout\n"); const ip_address ip = NET_IP_ADDRESS; const ip_address gw = NET_IP_GATEWAY; const ip_address nm = NET_IP_NETMASK; ip_init(&ip, &nm, &gw); netstat(stdout, NETSTAT_OPT_ALL); break; case dhcp_event_lease_acquired: DBG_INFO("[dhcp]: lease acquired\n"); netstat(stdout, NETSTAT_OPT_ALL); break; case dhcp_event_lease_expiring: DBG_INFO("[dhcp]: lease expiring\n"); break; case dhcp_event_lease_expired: DBG_INFO("[dhcp]: lease expired\n"); break; case dhcp_event_lease_denied: DBG_INFO("[dhcp]: lease denied\n"); break; case dhcp_event_error: DBG_ERROR("[dhcp]: error\n"); break; default: DBG_ERROR("[dhcp]: unknown event (0x%x)\n", event); break; } }
LRESULT CALLBACK DlgProc(HWND hWndDlg, UINT Msg, WPARAM wParam, LPARAM lParam) { switch (Msg) { case WM_USER: switch (lParam) { case WM_LBUTTONDBLCLK: ShowWindow(hWndDlg, SW_SHOW); return TRUE; } break; case WM_TERM: do_stop(hWndDlg); break; case WM_INITDIALOG: _hwnd = hWndDlg; do_init(); do_stop(_hwnd); start_stop(hWndDlg); /* didn't we say on by default? ;D */ break; case WM_SYSCOMMAND: if ((wParam & 0xfff0) == SC_MINIMIZE) { minimize(hWndDlg); return TRUE; } break; case WM_CLOSE: minimize(hWndDlg); return TRUE; case WM_COMMAND: switch(wParam) { case IDOK: start_stop(hWndDlg); return TRUE; case IDCANCEL: netstat(); return TRUE; case IDC_BUTTON1: EndDialog(hWndDlg, 0); return TRUE; case IDC_BUTTON2: hof(); return TRUE; } break; } return FALSE; }
void timer_callback(timer_t timer, void * data) { static struct date_time dt; // ds1338_get_date_time(&dt); /* DBG_INFO("[time]: %02d:%02d:%02d\n", dt.hours, dt.minutes, dt.seconds );*/ netstat(stdout, NETSTAT_OPT_ALL); }
int get_file_over_ftp (net_t *netpolicy) { char buffer [HUGE0], *ptr; struct hostent *phostent; struct sockaddr_in client, pasvclient; int rval; unsigned long filesz, received; slassert (netpolicy != NULL); fprintf (stdout, netpolicy->msg); fflush (stdout); if (!netpolicy->savepart) slassert (!netpolicy->checkstamp); if (!netpolicy->overwrite && file_exist (netpolicy->destpath, NULL, true)) /* regular file exist */ { return shutdown_net_t (netpolicy, FILE_DOWNLOADED, "Already downloaded"); } __act (phostent = gethostbyname (netpolicy->hostname), -1, "Cannot resolve host"); client.sin_family = phostent->h_addrtype; client.sin_port = htons ((unsigned short) netpolicy->port); memcpy (&client.sin_addr.s_addr, phostent->h_addr_list[0], phostent->h_length); __act ((netpolicy->sd = socket (client.sin_family, SOCK_STREAM, 0)) >= 0, -1, NULL); __act ((rval = t_connect (netpolicy->sd, (struct sockaddr *)&client, sizeof client, netpolicy->timeout)) >= 0, -1, NULL); /* starting FTP transaction */ fprintf (stdout, "\r%s [Starting ftp transaction]", netpolicy->msg); fflush (stdout); netpolicy->ftpquit = true; /* read server ready */ __act (t_recv (netpolicy->sd, buffer, HUGE) >= 0, FILE_NOT_DOWNLOADED, "Server not ready"); __act (strncmp (buffer, "220", 3) == 0, FILE_NOT_DOWNLOADED, "Server not ready"); /* anonymous login */ clrline (stdout, strlen (netpolicy->msg) + 30); fprintf (stdout, "\r%s [FTP anonymous login]", netpolicy->msg); fflush (stdout); /* sending username */ __act (!ftp_act (netpolicy, "USER anonymous\r\n", "331"), FILE_NOT_DOWNLOADED, "User failed"); /* sending pass */ __act (!ftp_act (netpolicy, "PASS [email protected]\r\n", "230"), FILE_NOT_DOWNLOADED, "Pass failed"); clrline (stdout, strlen (netpolicy->msg) + 25); fprintf (stdout, "\r%s [Retrieving file]", netpolicy->msg); fflush (stdout); __act (!ftp_act (netpolicy, "SYST\r\n", "215"), FILE_NOT_DOWNLOADED, "Syst error"); __act (!ftp_act (netpolicy, "TYPE I\r\n", "200"), FILE_NOT_DOWNLOADED, "Type I error"); __act (!ftp_act (netpolicy, "PASV\r\n", "227"), FILE_NOT_DOWNLOADED, "Pasv error"); /* obtain ip and port on passive mode */ __act (ptr = strchr (netpolicy->ftpreply, '('), FILE_NOT_DOWNLOADED, "Error on pasv mode"); sscanf (ptr, "(%hu,%hu,%hu,%hu,%hu,%hu)", &netpolicy->pasv[0], &netpolicy->pasv[1], /* IP */ &netpolicy->pasv[2], &netpolicy->pasv[3], /* IP */ &netpolicy->pasv[4], &netpolicy->pasv[5]); /* port: pasv[4] * 256 + pasv[5] */ snprintf (netpolicy->pasvip, sizeof netpolicy->pasvip, "%hu.%hu.%hu.%hu", netpolicy->pasv[0], netpolicy->pasv[1], netpolicy->pasv[2], netpolicy->pasv[3]); netpolicy->pasvport = netpolicy->pasv[4] * 256 + netpolicy->pasv[5]; netpolicy->pasvsd = socket (AF_INET, SOCK_STREAM, 0); pasvclient.sin_family = AF_INET; pasvclient.sin_port = htons((unsigned short) netpolicy->pasvport); __act (inet_pton (AF_INET, netpolicy->pasvip, &pasvclient.sin_addr) == 1 && !t_connect (netpolicy->pasvsd, (struct sockaddr *) &pasvclient, sizeof pasvclient, netpolicy->timeout), -1, "ftp pasv error"); snprintf (buffer, HUGE, "SIZE %s\r\n", netpolicy->srcpath); __act (!ftp_act (netpolicy, buffer, "213"), FILE_NOT_DOWNLOADED, (atoi (netpolicy->ftpreply) == 550) ? "File not found" : "Size error"); filesz = atoi (netpolicy->ftpreply + 4); /* 4 = strlen ("213 ") */ /* require file */ snprintf (buffer, HUGE, "RETR %s\r\n", netpolicy->srcpath); __act (!ftp_act (netpolicy, buffer, "150"), FILE_NOT_DOWNLOADED, "Retr error"); checkstamp (netpolicy, netpolicy->pasvsd); __act (netpolicy->oldstamp != 0, FILE_ALREADY_UPDATE, "Already update"); if (netpolicy->savepart) { slassert ((strlen (netpolicy->destpath) + strlen (".part")) < sizeof (netpolicy->destpath)); strcat (netpolicy->destpath, ".part"); } __act (netpolicy->fddest = fopen (netpolicy->destpath, "wb"), -1, netpolicy->destpath); if (netpolicy->oldstamp == 1) { fwrite (netpolicy->stamprecv, 1, STAMPSZ, netpolicy->fddest); } received = (netpolicy->checkstamp) ? STAMPSZ : 0; clrline (stdout, strlen (netpolicy->msg) + 25); netstat (NETSTAT_INIT, 0, 0, 0); /* init */ while ((rval = recv (netpolicy->pasvsd, buffer, HUGE, 0)) > 0) { received += (unsigned long) rval; fprintf (stdout, "\r%s [%s]", netpolicy->msg, netstat (0, 1, received, filesz)); fflush (stdout); fwrite (buffer, 1, rval, netpolicy->fddest); } fprintf (stdout, "\r%s [%s]\n", netpolicy->msg, netstat (NETSTAT_END, 1, received, filesz)); /* finish, flush 100% */ fflush (stdout); return shutdown_net_t (netpolicy, 0, NULL); }
int get_file_over_http (net_t *netpolicy) { char buffer[HUGE0]; unsigned long received, filesz; int rval; struct stat st; struct hostent *phostent; struct sockaddr_in client; slassert (netpolicy != NULL); fprintf (stdout, netpolicy->msg); fflush (stdout); /* sanity check */ if (!netpolicy->savepart) slassert (!netpolicy->checkstamp); if (!netpolicy->overwrite && file_exist (netpolicy->destpath, &st, true)) /* regular file exist */ { return shutdown_net_t (netpolicy, FILE_DOWNLOADED, "Already downloaded"); } __act (phostent = gethostbyname (netpolicy->hostname), -1, "Cannot resolve host"); client.sin_family = phostent->h_addrtype; client.sin_port = htons ((unsigned short) netpolicy->port); memcpy (&client.sin_addr.s_addr, phostent->h_addr_list[0], phostent->h_length); __act ((netpolicy->sd = socket (client.sin_family, SOCK_STREAM, 0)) >= 0, -1, NULL); __act (!t_connect (netpolicy->sd, (struct sockaddr *)&client, sizeof client, netpolicy->timeout), -1, NULL); snprintf (buffer, HUGE, HTTP_TEMPLATE, netpolicy->srcpath, netpolicy->hostname); __act (send (netpolicy->sd, buffer, strlen(buffer), 0) == (int) strlen(buffer), -1, NULL); /* receive http header and save to `filesz' length of file required */ __act ((rval = read_http_header (netpolicy->sd)) > 0, FILE_NOT_DOWNLOADED, "File Not Found"); filesz = (unsigned long) rval; checkstamp (netpolicy, netpolicy->sd); __act (netpolicy->oldstamp != 0, FILE_ALREADY_UPDATE, "Already update"); if (netpolicy->savepart) { slassert ((strlen (netpolicy->destpath) + strlen (".part")) < sizeof (netpolicy->destpath)); strcat (netpolicy->destpath, ".part"); } __act (netpolicy->fddest = fopen (netpolicy->destpath, "wb"), -1, netpolicy->destpath); if (netpolicy->oldstamp == 1) { fwrite (netpolicy->stamprecv, 1, STAMPSZ, netpolicy->fddest); } received = (netpolicy->checkstamp) ? STAMPSZ : 0; netstat (NETSTAT_INIT, 0, 0, 0); /* init */ while ((rval = recv (netpolicy->sd, buffer, HUGE, 0)) > 0) { received += rval; fprintf (stdout, "\r%s [%s]", netpolicy->msg, netstat (0, 1, received, filesz)); fflush (stdout); fwrite (buffer, 1, rval, netpolicy->fddest); } fprintf (stdout, "\r%s [%s]\n", netpolicy->msg, netstat (NETSTAT_END, 1, received, filesz)); /* finish, flush 100% */ fflush (stdout); return shutdown_net_t (netpolicy, 0, NULL); }
uint32_t CmdShowData(char *outputstr,T_MESSAGE *message) { uint8_t i; uint8_t status=0; char *p; struct tm time_now; time_t old_time; static float MeaRecordTab[MEANUM]; static uint8_t DiRecording[16]; old_time = 0; memset (outputstr,0,1314); p=outputstr; switch(message->m_type) { case CMD_AI: #if MEAUPDATE_METHOD==MEMBLKCP status = AiQuerry(); if(status) { I2C_MeasureTab[23]=GetTemperature(); #endif #if LINGUA==EN sprintf(p, "╔════════╦═════total meas:%3d═════╦════════╗\r\n",MEANUM); p+=strlen("╔════════╦═════total meas:%3d═════╦════════╗\r\n"); #endif #if LINGUA==CH sprintf(p, "╔════════╦═════遥测量总数:%3d═════╦════════╗\r\n",MEANUM); p+=strlen("╔════════╦═════遥测量总数:%3d═════╦════════╗\r\n"); #endif for(i=0;i<MEANUM;i++) { if ((i+1) % 4) { if((16==i)||(17==i)||(21==i)||(22==i)) { // if((I2C_MeasureTab[i]-MeaRecordTab[i])>Compress_Factor*MeaPropTab[i].scale) // { // sprintf(p, "║%-4s:%s%6.1f%s %4s",MeaPropTab[i].Title,rouge_mutation,\ // I2C_MeasureTab[i],normale,MeaPropTab[i].Unit); // p+=strlen(rouge_mutation); // p+=strlen(normale); // } // else sprintf(p, "║%-4s:%6.1f %-4s",MeaPropTab[i].Title,I2C_MeasureTab[i],MeaPropTab[i].Unit); p+=strlen("║XXXX:01234.5XXXX"); } else if(18==i) { // if((I2C_MeasureTab[i]-MeaRecordTab[i])>Compress_Factor*MeaPropTab[i].scale) // { // sprintf(p, "║%-4s:%s%6.1f %s%4s",MeaPropTab[i].Title,rouge_mutation,\ // I2C_MeasureTab[i],normale,MeaPropTab[i].Unit); // p+=strlen(rouge_mutation); // p+=strlen(normale); // } // else sprintf(p, "║%-4s:%6.4f %-4s",MeaPropTab[i].Title,I2C_MeasureTab[i],MeaPropTab[i].Unit); p+=strlen("║XXXX:01.2345XXXX"); } else { // if((I2C_MeasureTab[i]-MeaRecordTab[i])>Compress_Factor*MeaPropTab[i].scale) // { // sprintf(p, "║%-4s:%s%6.1f%s %4s",MeaPropTab[i].Title,rouge_mutation,\ // I2C_MeasureTab[i],normale,MeaPropTab[i].Unit); // p+=strlen(rouge_mutation); // p+=strlen(normale); // } // else sprintf(p, "║%-4s:%6.2f %-4s",MeaPropTab[i].Title,I2C_MeasureTab[i],MeaPropTab[i].Unit); p+=strlen("║XXXX:0123.45XXXX"); } } else { // if((I2C_MeasureTab[i]-MeaRecordTab[i])>Compress_Factor*MeaPropTab[i].scale) // { // sprintf(p, "║%-4s:%s%6.1f %s%4s",MeaPropTab[i].Title,rouge_mutation,\ // I2C_MeasureTab[i],normale,MeaPropTab[i].Unit); // p+=strlen(rouge_mutation); // p+=strlen(normale); // } // else sprintf(p, "║%-4s:%6.2f %-4s║\r\n",MeaPropTab[i].Title,I2C_MeasureTab[i],MeaPropTab[i].Unit); p+=strlen("║XXXX:0123.45XXXX║\r\n"); //sprintf(p, "╠════════╬════════╬════════╬════════╣\r\n"); if((MEANUM-1)==i) sprintf(p, "╚════════╩════════╩════════╩════════╝\r\n"); p+=strlen("╠════════╬════════╬════════╬════════╣\r\n"); } MeaRecordTab[i]=I2C_MeasureTab[i]; } #if MEAUPDATE_METHOD==MEMBLKCP } else { #if LINGUA== EN sprintf(outputstr,"can't read data from AI board \r\n"); p+=strlen("can't read data from AI board \r\n"); #endif #if LINGUA== CH sprintf(outputstr,"无法读取AI数据 \r\n"); p+=strlen("无法读取AI数据 \r\n"); #endif } #endif break; case CMD_DI: #if LINGUA== EN sprintf(p, "╔══totaldis%2d══╗\r\n",16); p+=strlen("╔══totaldis%2d══╗\r\n"); #endif #if LINGUA ==CH sprintf(p, "╔══遥信总数%2d══╗\r\n",16); p+=strlen("╔══遥信总数%2d══╗\r\n"); #endif for(i=0;i<8;i++) { if(1==DiStatus_DI[i].Value) { sprintf(p, "║ %-3d %s◆%s ",i+1,rouge,normale); if(DiRecording[i]!=DiStatus_DI[i].Value) sprintf(p, "║ %-3d %s◆%s ",i+1,rouge_mutation,normale); p+=strlen("║ %-3d ◆ "); p+=strlen(rouge); p+=strlen(normale); } else { sprintf(p, "║ %-3d %s◇%s ",i+1,vert,normale); if(DiRecording[i]!=DiStatus_DI[i].Value) sprintf(p, "║ %-3d %s◇%s ",i+1,vert_mutation,normale); p+=strlen("║ %-3d ◇ "); p+=strlen(vert); p+=strlen(normale); } DiRecording[i]=DiStatus_DI[i].Value; if(1==DiStatus_DI[i+8].Value) { sprintf(p, "║ %-3d %s◆%s ║\r\n",i+9,rouge,normale); if(DiRecording[i+8]!=DiStatus_DI[i+8].Value) sprintf(p, "║ %-3d %s◆%s ║\r\n",i+9,rouge_mutation,normale); p+=strlen("%║ -3d ◆ ║\r\n"); p+=strlen(rouge); p+=strlen(normale); } else { sprintf(p, "║ %-3d %s◇%s ║\r\n",i+9,vert,normale); if(DiRecording[i+8]!=DiStatus_DI[i+8].Value) sprintf(p, "║ %-3d %s◇%s ║\r\n",i+9,vert_mutation,normale); p+=strlen("║ %-3d ◇ ║\r\n"); p+=strlen(vert); p+=strlen(normale); } if(7==i) { sprintf(p, "╚════╩════╝\r\n"); p+=strlen("╚════╩════╝\r\n"); } else { sprintf(p, "╠════╬════╣\r\n"); p+=strlen("╚════╩════╝\r\n"); } DiRecording[i+8]=DiStatus_DI[i+8].Value; } break; case CMD_TI: if(Can_Online) { for(i=0;i<4;i++) { if(CAN_MeasureTab[i]>6000) sprintf(p, "%s\r\n","OffSccope"); sprintf(p, "%s:%5d %s\r\n",MeaPropTab[24+i].Title,CAN_MeasureTab[i],MeaPropTab[24+i].Unit); p+=strlen("XXXXX:01234XX\r\n"); } #if LINGUA ==EN sprintf(p,"enter the number of 4~20mA channel\r\n"); p=p+strlen("enter the number of 4~20mA channel\r\n")+strlen(DevNameStr); #endif #if LINGUA ==CH sprintf(p,"输入4~20mA通道序号查看电流显示\r\n"); p=p+strlen("输入4~20mA通道序号查看电流显示\r\n")+strlen(DevNameStr); #endif Shell_State=TI_mA; } else { #if LINGUA== EN sprintf(outputstr,"can't read data from TI board \r\n"); p+=strlen("can't read data from TI board \r\n"); #endif #if LINGUA== CH sprintf(outputstr,"无法读取TI数据\r\n"); p+=strlen("无法读取TI数据\r\n"); #endif } break; case CMD_COEF: break; case CMD_DATE: time_now = Time_GetCalendarTime(); sprintf(p, "%d-%02d-%02d %02d:%02d:%02d %s\r\n",time_now.tm_year,time_now.tm_mon/*+1*/,time_now.tm_mday,\ time_now.tm_hour,time_now.tm_min,time_now.tm_sec,Weekchar[time_now.tm_wday]); p+=strlen("1982-05-24 21:13:14 Tue\r\n"); break; case CMD_NAME: #if LINGUA ==EN sprintf(p,"device name now:%s,enter your new name\r\n",DevNameStr); p=p+strlen("device name now:,enter your new name\r\n")+strlen(DevNameStr); #endif #if LINGUA ==CH sprintf(p,"当前装置名称为%s,请输入新名称\r\n",DevNameStr); p=p+strlen("当前装置名称为,请输入新名称\r\n")+strlen(DevNameStr); #endif Shell_State=MODIFY_NAME; break; case CMD_NET: i=netstat(p); p+=i; break; case CMD_SOE: sprintf(p,"***************SOE事件记录***************\r\n"); p+=strlen("***************SOE事件记录***************\r\n"); if(0==SetCurrent.TrigSoeQueue.total) { sprintf(p,"无SOE事件记录 *_*||\r\n"); p+=strlen("无SOE事件记录 *_*||\r\n"); } else { for(i=0;i<SetCurrent.TrigSoeQueue.total;i++) { //tyh:20130312 判断当前显示的是否是最新记录,如果不是画线区分 if(old_time > SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].timetamp) { sprintf(p, "~~~~~~~~~~"); p+=10; sprintf(p, "~~~~~~~~~~"); p+=10; sprintf(p, "~~~~~~~~~~"); p+=10; sprintf(p, "~~~~~~~~~~"); p+=10; sprintf(p, "~\r\n"); p+=3; } time_now = Time_ConvUnixToCalendar(SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].timetamp); sprintf(p, "%4d-%02d-%02d %02d:%02d:%02d %4dms DI%02d非电量%4s\r\n",time_now.tm_year,time_now.tm_mon,time_now.tm_mday,\ time_now.tm_hour,time_now.tm_min,time_now.tm_sec,SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].mscd,\ SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].diseq+1,(SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].state?"动作":"返回")); p+=43; old_time = SetCurrent.TrigSoeQueue.SOE_Queue_Flash[i].timetamp; } old_time = 0; } break; case CMD_REC: sprintf(p,"***************ERROR LIST***************\r\n"); p+=strlen("***************ERROR LIST***************\r\n"); if(0==SetCurrent.ErrorQueue.total) { sprintf(p,"no error recorded *_*||\r\n"); p+=strlen("no error recorded *_*||\r\n"); } else { for(i=0;i<SetCurrent.ErrorQueue.total;i++) { //tyh:20130312 判断当前显示的是否是最新记录,如果不是画线区分 if(old_time > SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].timetamp) { sprintf(p, "~~~~~~~~~~~~~~~~~~~~"); p+=20; sprintf(p, "~~~~~~~~~~~~~~~~~~~~"); p+=20; sprintf(p, "~~~~~~~~~~~~~~~~~~~~"); p+=20; sprintf(p, "~~~~~~~~~~~~~~~~~~~~"); p+=20; sprintf(p, "\r\n"); p+=2; } time_now = Time_ConvUnixToCalendar(SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].timetamp); sprintf(p, "%4d-%02d-%02d %02d:%02d:%02d %4dms %08x's Reg=|%08x|%08x|%08x|%08x|\r\n",time_now.tm_year,time_now.tm_mon/*+1*/,time_now.tm_mday,\ time_now.tm_hour,time_now.tm_min,time_now.tm_sec,SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].mscd,\ SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].Perirh_baseaddr,\ SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].Register_1,\ SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].Register_2,\ SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].Register_3,\ SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].Register_4); p+=strlen("1982-05-24 13:14:10 1234ms 12345678's Reg=|00000400|00000003|00000401|00000124|\r\n"); old_time = SetCurrent.ErrorQueue.ERROR_Queue_Flash[i].timetamp; } old_time = 0; } break; case CMD_SHOWIP://20130312 TYH:添加IP显示命令处理 break; case CMD_AI_RESET_COUNT: //tyh:20130730 sprintf(p,"AI RESET COUNT = %7.0f\r\n", AI_Reset_Count); p+=strlen("AI RESET COUNT = 1234567\r\n"); break; default: break; } *(p++)=0x0A; *(p++)=0x0D; return (p-outputstr); }