main.c 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226
  1. #include "tc_system.h"
  2. #include "logger.h"
  3. #include "config.h"
  4. #include "com_ttySx.h"
  5. #include "ptimer.h"
  6. #include "acrel_DJSF1352RN.h"
  7. #include "ast_XH.h"
  8. #include "modbus_TCP_HW.h"
  9. #include "goose_HW.h"
  10. #include "stm32f103.h"
  11. #include "tc_tcu.h"
  12. #include "tcXHHW.h"
  13. #include <ifaddrs.h>
  14. // static int tcu_quit = 0;
  15. // void sigint_handler(int sig)
  16. // {
  17. // tcu_quit = 1;
  18. // }
  19. // void parse_options(int argc, char** argv)
  20. // {
  21. // int c;
  22. // while ((c = getopt(argc, argv, "ct:")) != -1) {
  23. // switch (c) {
  24. // case 'c':
  25. // config_filename = optarg;
  26. // break;
  27. // case 't':
  28. // // ttyS0_devname = optarg;
  29. // break;
  30. // case '?':
  31. // break;
  32. // default:
  33. // exit(2);
  34. // }
  35. // }
  36. // }
  37. const char *months[] = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
  38. static char app_version[128] = {0};
  39. char* formatAppVersion(void)
  40. {
  41. int i;
  42. int month, mday, year, hour, min, sec;
  43. #define ASCII_CODE(x) ((x)==32? 0:((x)-'0'))
  44. mday = ASCII_CODE(__DATE__[4])*10 + ASCII_CODE(__DATE__[5]);
  45. year = ASCII_CODE(__DATE__[7])*1000 + ASCII_CODE(__DATE__[8])*100 + ASCII_CODE(__DATE__[9])*10 + ASCII_CODE(__DATE__[10]);
  46. hour = ASCII_CODE(__TIME__[0])*10 + ASCII_CODE(__TIME__[1]);
  47. min = ASCII_CODE(__TIME__[3])*10 + ASCII_CODE(__TIME__[4]);
  48. sec = ASCII_CODE(__TIME__[6])*10 + ASCII_CODE(__TIME__[7]);
  49. #undef ASCII_CODE
  50. for (i = 0; i < 12; i++)
  51. {
  52. if (strncmp(__DATE__, months[i], 3)==0)
  53. {
  54. month = i + 1;
  55. break;
  56. }
  57. }
  58. snprintf(app_version, 128, "app_XHHW_V1R1-%04d%02d%02d %02d:%02d:%02d", year, month, mday, hour, min, sec);
  59. return app_version;
  60. }
  61. char version[10] ="1.1.7";
  62. void printVersion(char* arg)
  63. {
  64. int len;
  65. static uint8_t comfire = 0;
  66. char src_path[32] = {0};
  67. if(comfire == 1)
  68. {
  69. printi("SW:%s\n",version);
  70. return ;
  71. }
  72. len = readlink(arg, src_path, sizeof(src_path) - 1);
  73. comfire = 1;
  74. if (len == -1) {
  75. printi("this is sr_path %s:%s\n", arg,version);
  76. return ;
  77. }
  78. src_path[len] = '\0';
  79. printi("SW:%s:%s\n", src_path,version);
  80. }
  81. int get_interface_ip(const char *ifname) {
  82. struct ifaddrs *ifap, *ifa;
  83. struct sockaddr_in *sa;
  84. int found = 0;
  85. char ip_buf[32];
  86. if (ifname == NULL) {
  87. return -1;
  88. }
  89. // 1. ???????????
  90. if (getifaddrs(&ifap) == -1) {
  91. return -1;
  92. }
  93. // 2. ???????????? IPv4 ??
  94. for (ifa = ifap; ifa != NULL; ifa = ifa->ifa_next) {
  95. // ?????
  96. // - ?????
  97. // - ???? IPv4?AF_INET?
  98. // - ?????
  99. if (strcmp(ifa->ifa_name, ifname) == 0 &&
  100. ifa->ifa_addr != NULL &&
  101. ifa->ifa_addr->sa_family == AF_INET) {
  102. // ?? IPv4 ??
  103. sa = (struct sockaddr_in *)ifa->ifa_addr;
  104. inet_ntop(AF_INET, &(sa->sin_addr), ip_buf, 32);
  105. printi("ip:%s\n",ip_buf);
  106. found = 1;
  107. break;
  108. }
  109. }
  110. freeifaddrs(ifap);
  111. if (!found) {
  112. printe("no ip\n");
  113. return -1;
  114. }
  115. return 0;
  116. }
  117. extern void rs232_test(int loop);
  118. int main(int argc, char* argv[])
  119. {
  120. signal(SIGPIPE, SIG_IGN);
  121. // signal(SIGINT, sigint_handler);
  122. // parse_options(argc, argv);
  123. clog_init("/home/root/log/tcu", CLOG_BUFF_SIZE*60*24, 30);
  124. tcu_BSP_init();
  125. tcu_config_init(config_filename);
  126. // printd("\n\r\tSW:%s\n", formatAppVersion());
  127. clog_bind_serverip(tcu_config.xhlog_ip, tcu_config.xhlog_port);
  128. extern void print_stationID();
  129. print_stationID();
  130. printVersion(argv[0]);
  131. get_interface_ip("eth0");
  132. set_GUNLED_on(0, 0);
  133. set_GUNLED_on(1, 0);
  134. set_GUNLED_on(2, 0);
  135. set_GUNLED_on(3, 0);
  136. set_KMD_out(0, 0);
  137. set_KMD_out(1, 0);
  138. set_KMD_out(2, 0);
  139. set_KMD_out(3, 0);
  140. // for (;;)
  141. // {
  142. // // rs232_test(10);
  143. // set_SYSLED_on(0, 1);
  144. // printf("\nget_TCUID:%4d, get_USERKEY:%d\n\n", get_TCUID(), get_USEKEY());
  145. // printf("set_GUNLED_on(...)\n");
  146. // set_GUNLED_on(0, 1);
  147. // printf("set_GUNLED_on(0)\n"); getchar();
  148. // set_GUNLED_on(1, 1);
  149. // printf("set_GUNLED_on(1)\n"); getchar();
  150. // set_GUNLED_on(2, 1);
  151. // printf("set_GUNLED_on(2)\n"); getchar();
  152. // set_GUNLED_on(3, 1);
  153. // printf("set_GUNLED_on(3)\n"); getchar();
  154. // set_SYSLED_on(0, 0);
  155. // printf("set_GUNLED_off(ALL)...\n");
  156. // set_GUNLED_on(0, 0);
  157. // set_GUNLED_on(1, 0);
  158. // set_GUNLED_on(2, 0);
  159. // set_GUNLED_on(3, 0);
  160. // printf("set_GUNLED_off(all) done.\n"); getchar();
  161. // set_SYSLED_on(1, 1);
  162. // printf("set_KMD_out(...)\n");
  163. // set_KMD_out(0, 1);
  164. // printf("set_KMD_out(0)\n");getchar();
  165. // set_KMD_out(1, 1);
  166. // printf("set_KMD_out(1)\n");getchar();
  167. // set_KMD_out(2, 1);
  168. // printf("set_KMD_out(2)\n");getchar();
  169. // set_KMD_out(3, 1);
  170. // printf("set_KMD_out(3)\n");getchar();
  171. // printf("get_KMDFB:%d, %d, %d, %d\n", get_KMDFB(0), get_KMDFB(1), get_KMDFB(2), get_KMDFB(3));
  172. // set_SYSLED_on(1, 0);
  173. // printf("set_KMD_off(ALL)...\n");
  174. // set_KMD_out(0, 0);
  175. // set_KMD_out(1, 0);
  176. // set_KMD_out(2, 0);
  177. // set_KMD_out(3, 0);
  178. // printf("set_KMD_off(ALL) done.\n");
  179. // msleep(500);
  180. // printf("get_KMDFB:%d, %d, %d, %d\n", get_KMDFB(0), get_KMDFB(1), get_KMDFB(2), get_KMDFB(3));
  181. // getchar();
  182. // }
  183. ccu_TCU_init();
  184. ccu_TCU_run(0);
  185. ccu_TCU_exit();
  186. tcu_BSP_exit();
  187. tcu_config_exit();
  188. clog_exit();
  189. return 0;
  190. }