📄 hc_subs.c
字号:
/** Copyright (c) 2004,wuxi xietong tech corp* All rights reserved.** filename:hc_subfuncs.c* content :subfuncs for HC** version :2.0* author :hwz* date :2004/03/01**/#include "common.h"#include "hc.h"#include "hc_display.h"#include <stdarg.h>/* For share memory */struct global_var *gvar;/* For display interface */int unix_socket_cli = -1;struct sockaddr_un dis_addr_un;struct dis_head_msg send_dis_msg;int speed_arr[] = { B38400, B19200, B9600, B4800, B2400, B1200, B300, B38400, B19200, B9600, B4800, B2400, B1200, B300, };int name_arr[] = {38400, 19200, 9600, 4800, 2400, 1200, 300, 38400, 19200, 9600, 4800, 2400, 1200, 300, };void set_speed(int fd, int speed){ int i; int status; struct termios Opt; tcgetattr(fd, &Opt); for ( i= 0; i < sizeof(speed_arr) / sizeof(int); i++) { if (speed == name_arr[i]) { tcflush(fd, TCIOFLUSH); cfsetispeed(&Opt, speed_arr[i]); cfsetospeed(&Opt, speed_arr[i]); status = tcsetattr(fd, TCSANOW, &Opt); if (status != 0) { err_dump(PRINT_ERROR,"tcsetattr fd1"); return; } tcflush(fd,TCIOFLUSH); } }}int set_parity(int fd,int databits,int stopbits,int parity){ struct termios options; if ( tcgetattr( fd,&options) != 0) { err_dump(PRINT_ERROR,"SetupSerial 1"); return -1; } options.c_cflag &= ~CSIZE; switch (databits) /*设置数据位数*/ { case 7: options.c_cflag |= CS7; break; case 8: options.c_cflag |= CS8; break; default: err_dump(PRINT_ERROR,"Unsupported data size\n"); return -1; } switch (parity) { case 'n': case 'N': options.c_cflag &= ~PARENB; /* Clear parity enable */ options.c_iflag &= ~INPCK; /* Enable parity checking */ break; case 'o': case 'O': options.c_cflag |= (PARODD | PARENB); /* 设置为奇效验*/ options.c_iflag |= INPCK; /* Disnable parity checking */ break; case 'e': case 'E': options.c_cflag |= PARENB; /* Enable parity */ options.c_cflag &= ~PARODD; /* 转换为偶效验*/ options.c_iflag |= INPCK; /* Disnable parity checking */ break; case 'S': case 's': /*as no parity*/ options.c_cflag &= ~PARENB; options.c_cflag &= ~CSTOPB; break; default: err_dump(PRINT_ERROR,"Unsupported parity\n"); return -1; } /* 设置停止位*/ switch (stopbits) { case 1: options.c_cflag &= ~CSTOPB; break; case 2: options.c_cflag |= CSTOPB; break; default: err_dump(PRINT_ERROR,"Unsupported stop bits\n"); return -1; } /* Set input parity option */ if (parity != 'n' && parity != 'N') options.c_iflag |= INPCK; tcflush(fd,TCIFLUSH); options.c_cc[VTIME] = 30; /* 设置超时10 seconds*/ options.c_cc[VMIN] = 0; /* Update the options and do it NOW */ options.c_iflag &= ~(BRKINT | ICRNL | INPCK | ISTRIP | IXON | IXOFF | IXANY); options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG |IEXTEN); options.c_oflag &= ~OPOST; options.c_cflag |= CRTSCTS; if (tcsetattr(fd,TCSANOW,&options) != 0) { err_dump(PRINT_ERROR,"SetupSerial 3"); return -1; } return 0;}int opendev(char *dev,mode_t mode){ int fd; fd = open(dev, mode); if (-1 == fd){ err_dump(PRINT_ERROR,"Can't Open Serial Port"); return -1; } else{ fcntl(fd, F_SETFL, FNDELAY); return fd; }}void hc_global_init(void){ int shmid; ENTRY(); ASSERT( HC_SHM_SIZE>=sizeof(*gvar) ); shmid = shmget((key_t)HC_SHM_KEY, HC_SHM_SIZE, IPC_CREAT); if( shmid<0 ){ ERR_DUMP(); exit(-1); } gvar = (struct global_var *)shmat(shmid, NULL, 0); if( gvar==(struct global_var *)-1 ){ ERR_DUMP(); exit(-1); } setenv("TZ", "CST -8", 1); setenv("PT", "HC", 1);}void hc_global_init2(){ ENTRY(); memset((void *)gvar, 0, sizeof(*gvar)); ghc_hc_version.magic = HC_VERSION_MAGIC; ghc_hc_version.version = dchc_get_ver();err_dump(PRINT_ERROR, "!!!! Hc software version = %d\n", ghc_hc_version.version); /* Now can use ghc variable */ ghc_mtd_size = check_mtdblock_size(); /* Get and set MAC/IP address?? */ mtd_read_hc_ip(); if( ghc_hc_ip.magic==HC_IP_MAGIC ){ ghc_ip_configure = 1; dchc_set_mac(ghc_hc_ip.hc_ip); dchc_set_ip(ghc_hc_ip.hc_ip); system("ifconfig eth0 netmask 255.255.0.0 >>/dev/null");/* sprintf(buf, "route add -host 172.29.%d.254 dev eth0 >>/dev/null", (ntohl(ghc_hc_ip.hc_ip)<<16)>>24 ); system(buf); system("route add -net 172.29.192.0 netmask 255.255.255.0 dev eth0 >>/dev/null"); system("route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 >>/dev/null"); if( ntohl(ghc_hc_ip.hc_ip)%2 == 0 ){ system("route add default gw 172.29.192.1 >>/dev/null"); system("route add default gw 172.29.192.2 >>/dev/null"); }else{ system("route add default gw 172.29.192.2 >>/dev/null"); system("route add default gw 172.29.192.1 >>/dev/null"); }*/ }else ghc_ip_configure = 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -