FactoryConfig.c 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190
  1. #include <sys/time.h>
  2. #include <sys/timeb.h>
  3. #include <sys/types.h>
  4. #include <sys/stat.h>
  5. #include <sys/types.h>
  6. #include <sys/ioctl.h>
  7. #include <sys/socket.h>
  8. #include <sys/ipc.h>
  9. #include <sys/shm.h>
  10. #include <sys/shm.h>
  11. #include <sys/mman.h>
  12. #include <linux/can.h>
  13. #include <linux/can/raw.h>
  14. #include <linux/wireless.h>
  15. #include <arpa/inet.h>
  16. #include <netinet/in.h>
  17. #include <unistd.h>
  18. #include <stdarg.h>
  19. #include <stdio.h> /*標準輸入輸出定義*/
  20. #include <stdlib.h> /*標準函數庫定義*/
  21. #include <unistd.h> /*Unix 標準函數定義*/
  22. #include <fcntl.h> /*檔控制定義*/
  23. #include <termios.h> /*PPSIX 終端控制定義*/
  24. #include <errno.h> /*錯誤號定義*/
  25. #include <errno.h>
  26. #include <string.h>
  27. #include <time.h>
  28. #include <ctype.h>
  29. #include <ifaddrs.h>
  30. #include "../../define.h"
  31. /**************************************************************************************/
  32. /************This task will create Factory default confgiuration file *****************/
  33. /***********and store it into mtdblock 10,11,12 ****************/
  34. /**************************************************************************************/
  35. int StoreLogMsg(const char *fmt, ...);
  36. #define DEBUG_INFO(format, args...) StoreLogMsg("[%s:%d][%s][Info] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
  37. #define DEBUG_WARN(format, args...) StoreLogMsg("[%s:%d][%s][Warn] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
  38. #define DEBUG_ERROR(format, args...) StoreLogMsg("[%s:%d][%s][Error] "format, __FILE__, __LINE__, __FUNCTION__, ##args)
  39. int StoreLogMsg(const char *fmt, ...)
  40. {
  41. char Buf[4096+256];
  42. char buffer[4096];
  43. time_t CurrentTime;
  44. struct tm *tm;
  45. va_list args;
  46. va_start(args, fmt);
  47. int rc = vsnprintf(buffer, sizeof(buffer), fmt, args);
  48. va_end(args);
  49. memset(Buf,0,sizeof(Buf));
  50. CurrentTime = time(NULL);
  51. tm=localtime(&CurrentTime);
  52. sprintf(Buf,"echo \"%04d-%02d-%02d %02d:%02d:%02d - %s\" >> /Storage/SystemLog/[%04d.%02d]SystemLog",
  53. tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,
  54. buffer,
  55. tm->tm_year+1900,tm->tm_mon+1);
  56. system(Buf);
  57. return rc;
  58. }
  59. int main(int argc,char *argv[])
  60. {
  61. struct SysConfigData SysConfig;
  62. unsigned int i,Chk;
  63. unsigned char *ptr;
  64. int fd,wrd;
  65. ptr=malloc(sizeof(struct SysConfigData));
  66. if(ptr==NULL)
  67. {
  68. #ifdef SystemLogMessage
  69. StoreLogMsg("[FactoryConfig]main: malloc for SysConfigData NG");
  70. #endif
  71. return 0;
  72. }
  73. memset(ptr,0,sizeof(struct SysConfigData));
  74. memset(&SysConfig,0,sizeof(struct SysConfigData));
  75. //Set default configuration
  76. strcpy((char *)SysConfig.Eth0Interface.EthIpAddress, "192.168.1.10");
  77. strcpy((char *)SysConfig.Eth0Interface.EthSubmaskAddress,"255.255.255.0");
  78. strcpy((char *)SysConfig.Eth0Interface.EthGatewayAddress,"192.168.1.254");
  79. strcpy((char *)SysConfig.Eth1Interface.EthIpAddress,"192.168.0.10");
  80. strcpy((char *)SysConfig.Eth1Interface.EthSubmaskAddress,"255.255.255.0");
  81. strcpy((char *)SysConfig.Eth1Interface.EthGatewayAddress,"192.168.0.254");
  82. SysConfig.BackendConnTimeout=300; //300 seconds
  83. //copy default configuration to pointer
  84. memcpy(ptr,&SysConfig,sizeof(struct SysConfigData));
  85. //calculate CRC
  86. Chk=0;
  87. for(i=0;i<(sizeof(struct SysConfigData)-4);i++)
  88. {
  89. Chk+=*(ptr+i);
  90. }
  91. SysConfig.Checksum=Chk;
  92. fd = open("/mnt/FactoryDefaultConfig.bin", O_RDWR|O_CREAT);
  93. if (fd < 0)
  94. {
  95. #ifdef SystemLogMessage
  96. StoreLogMsg("[FactoryConfig]main: open /mnt/FactoryDefaultConfig.bin NG");
  97. #endif
  98. free(ptr);
  99. return 0;
  100. }
  101. wrd=write(fd, &SysConfig, sizeof(struct SysConfigData));
  102. close(fd);
  103. if(wrd!=(sizeof(struct SysConfigData)))
  104. {
  105. #ifdef SystemLogMessage
  106. StoreLogMsg("[FactoryConfig]main: write /mnt/FactoryDefaultConfig.bin NG");
  107. #endif
  108. free(ptr);
  109. return 0;
  110. }
  111. fd = open("/dev/mtdblock12", O_RDWR);
  112. if (fd < 0)
  113. {
  114. #ifdef SystemLogMessage
  115. StoreLogMsg("[FactoryConfig]main: open /dev/mtdblock12 NG");
  116. #endif
  117. free(ptr);
  118. return 0;
  119. }
  120. wrd=write(fd, &SysConfig, sizeof(struct SysConfigData));
  121. close(fd);
  122. if(wrd!=(sizeof(struct SysConfigData)))
  123. {
  124. #ifdef SystemLogMessage
  125. StoreLogMsg("[FactoryConfig]main: write /dev/mtdblock12 NG");
  126. #endif
  127. free(ptr);
  128. return 0;
  129. }
  130. fd = open("/dev/mtdblock11", O_RDWR);
  131. if (fd < 0)
  132. {
  133. #ifdef SystemLogMessage
  134. StoreLogMsg("[FactoryConfig]main: open /dev/mtdblock11 NG");
  135. #endif
  136. free(ptr);
  137. return 0;
  138. }
  139. wrd=write(fd, &SysConfig, sizeof(struct SysConfigData));
  140. close(fd);
  141. if(wrd!=(sizeof(struct SysConfigData)))
  142. {
  143. #ifdef SystemLogMessage
  144. StoreLogMsg("[FactoryConfig]main: write /dev/mtdblock11 NG");
  145. #endif
  146. free(ptr);
  147. return 0;
  148. }
  149. fd = open("/dev/mtdblock10", O_RDWR);
  150. if (fd < 0)
  151. {
  152. #ifdef SystemLogMessage
  153. StoreLogMsg("[FactoryConfig]main: open /dev/mtdblock10 NG");
  154. #endif
  155. free(ptr);
  156. return 0;
  157. }
  158. wrd=write(fd, &SysConfig, sizeof(struct SysConfigData));
  159. close(fd);
  160. if(wrd!=(sizeof(struct SysConfigData)))
  161. {
  162. #ifdef SystemLogMessage
  163. StoreLogMsg("[FactoryConfig]main: write /dev/mtdblock10 NG");
  164. #endif
  165. free(ptr);
  166. return 0;
  167. }
  168. free(ptr);
  169. #ifdef SystemLogMessage
  170. StoreLogMsg("[FactoryConfig]main: FactoryConfig OK");
  171. #endif
  172. }