Common.c 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. /*
  2. * Common.c
  3. *
  4. * Created on: 2021年8月7日
  5. * Author: Wendell
  6. */
  7. #include <stdlib.h>
  8. #include <stdio.h>
  9. #include <string.h>
  10. #include <stdarg.h>
  11. #include <time.h>
  12. #include <sys/timeb.h>
  13. #include "Common.h"
  14. int StoreSysLogMsg(const char *fmt, ...)
  15. {
  16. char Buf[4096+256];
  17. char buffer[4096];
  18. va_list args;
  19. struct timeb SeqEndTime;
  20. struct tm *tm;
  21. va_start(args, fmt);
  22. int rc = vsnprintf(buffer, sizeof(buffer), fmt, args);
  23. va_end(args);
  24. memset(Buf,0,sizeof(Buf));
  25. ftime(&SeqEndTime);
  26. SeqEndTime.time = time(NULL);
  27. tm=localtime(&SeqEndTime.time);
  28. sprintf(Buf,"echo \'%04d-%02d-%02d %02d:%02d:%02d:%03d - %s\' >> /Storage/SystemLog/[%04d.%02d]SystemLog",
  29. tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,SeqEndTime.millitm,
  30. buffer,
  31. tm->tm_year+1900,tm->tm_mon+1);
  32. system(Buf);
  33. return rc;
  34. }
  35. int StorePsuLogMsg(const char *fmt, ...)
  36. {
  37. char Buf[4096+256];
  38. char buffer[4096];
  39. va_list args;
  40. struct timeb SeqEndTime;
  41. struct tm *tm;
  42. va_start(args, fmt);
  43. int rc = vsnprintf(buffer, sizeof(buffer), fmt, args);
  44. va_end(args);
  45. memset(Buf,0,sizeof(Buf));
  46. ftime(&SeqEndTime);
  47. SeqEndTime.time = time(NULL);
  48. tm=localtime(&SeqEndTime.time);
  49. sprintf(Buf,"echo \"%04d-%02d-%02d %02d:%02d:%02d:%03d - %s\" >> /Storage/SystemLog/[%04d.%02d]PsuLog",
  50. tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,SeqEndTime.millitm,
  51. buffer,
  52. tm->tm_year+1900,tm->tm_mon+1);
  53. system(Buf);
  54. return rc;
  55. }
  56. int StoreEventLogMsg(const char *fmt, ...)
  57. {
  58. char Buf[4096+256];
  59. char buffer[4096];
  60. va_list args;
  61. struct timeb SeqEndTime;
  62. struct tm *tm;
  63. va_start(args, fmt);
  64. int rc = vsnprintf(buffer, sizeof(buffer), fmt, args);
  65. va_end(args);
  66. memset(Buf,0,sizeof(Buf));
  67. ftime(&SeqEndTime);
  68. SeqEndTime.time = time(NULL);
  69. tm=localtime(&SeqEndTime.time);
  70. sprintf(Buf,"echo \"%04d-%02d-%02d %02d:%02d:%02d:%03d - %s\" >> /Storage/EventLog/[%04d.%02d]EventLog",
  71. tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,SeqEndTime.millitm,
  72. buffer,
  73. tm->tm_year+1900,tm->tm_mon+1);
  74. system(Buf);
  75. return rc;
  76. }
  77. int StoreAuthLogMsg(const char *fmt, ...)
  78. {
  79. char Buf[4096+256];
  80. char buffer[4096];
  81. va_list args;
  82. struct timeb SeqEndTime;
  83. struct tm *tm;
  84. va_start(args, fmt);
  85. int rc = vsnprintf(buffer, sizeof(buffer), fmt, args);
  86. va_end(args);
  87. memset(Buf,0,sizeof(Buf));
  88. ftime(&SeqEndTime);
  89. SeqEndTime.time = time(NULL);
  90. tm=localtime(&SeqEndTime.time);
  91. sprintf(Buf,"echo \'%04d-%02d-%02d %02d:%02d:%02d:%03d - %s\' >> /Storage/SystemLog/[%04d.%02d]AuthLog",
  92. tm->tm_year+1900,tm->tm_mon+1,tm->tm_mday,tm->tm_hour,tm->tm_min,tm->tm_sec,SeqEndTime.millitm,
  93. buffer,
  94. tm->tm_year+1900,tm->tm_mon+1);
  95. system(Buf);
  96. return rc;
  97. }
  98. void GetClockTime(struct timespec *_now_time)
  99. {
  100. clock_gettime(CLOCK_MONOTONIC, _now_time);
  101. }
  102. // return value unit: 1us
  103. unsigned long GetTimeoutValue(struct timespec _start_time)
  104. {
  105. struct timespec ts_end;
  106. unsigned long ret = 0;
  107. clock_gettime(CLOCK_MONOTONIC, &ts_end);
  108. ret = ((unsigned long)(ts_end.tv_sec - _start_time.tv_sec) * 1000000) + ((unsigned long)((ts_end.tv_nsec / 1000) - (_start_time.tv_nsec/ 1000)));
  109. /*
  110. printf("\r\n TimeInterval: %ld.%09ld - %ld.%09ld = %ld.%06ld ns",
  111. ts_end.tv_sec, ts_end.tv_nsec, _start_time.tv_sec, _start_time.tv_nsec,
  112. (ret / 1000000), (ret % 1000000));
  113. */
  114. #if 0
  115. struct timespec ts_interval;
  116. ts_interval.tv_sec = ts_end.tv_sec - _start_time.tv_sec;
  117. ts_interval.tv_nsec = ts_end.tv_nsec - _start_time.tv_nsec;
  118. if(ts_interval.tv_nsec < 0)
  119. {
  120. ts_interval.tv_nsec += 1000000000;
  121. ts_interval.tv_sec--;
  122. }
  123. #endif
  124. return ret;
  125. }
  126. // return value unit: 1s
  127. unsigned long GetSecTimeoutValue(struct timespec _start_time)
  128. {
  129. struct timespec ts_end;
  130. unsigned long ret = 0;
  131. clock_gettime(CLOCK_MONOTONIC, &ts_end);
  132. ret = ((unsigned long)(ts_end.tv_sec - _start_time.tv_sec) * 1000) + ((unsigned long)((ts_end.tv_nsec / 1000000) - (_start_time.tv_nsec / 1000000)));
  133. /*
  134. printf("\r\n TimeInterval: %ld.%09ld - %ld.%09ld = %ld.%03ld ms",
  135. ts_end.tv_sec, ts_end.tv_nsec, _start_time.tv_sec, _start_time.tv_nsec,
  136. (ret / 1000), (ret % 1000));
  137. */
  138. ret /= 1000;
  139. return ret;
  140. }
  141. int StatusCodeCompose(char *oriCode, char *newCode)
  142. {
  143. if(strlen(oriCode) > 0)
  144. {
  145. strcat(oriCode, ",");
  146. }
  147. strcat(oriCode, newCode);
  148. return strlen(oriCode);
  149. }
  150. void getNowDatetime(unsigned char *data)
  151. {
  152. time_t t = time(NULL);
  153. struct tm tm = *localtime(&t);
  154. sprintf((char*)data, "%04d-%02d-%02dT%02d:%02d:%02dZ", tm.tm_year + 1900, tm.tm_mon + 1, tm.tm_mday, tm.tm_hour, tm.tm_min, tm.tm_sec);
  155. }
  156. int IsModelNameMatch_ForUpdate(char *model_1, char *model_2)
  157. {
  158. if(strlen(model_1) < MODELNAME_LENGTH || strlen(model_2) < MODELNAME_LENGTH)
  159. {
  160. return NO;
  161. }
  162. if(model_1[0] == model_2[0] &&
  163. model_1[1] == model_2[1] &&
  164. model_1[7] == model_2[7] &&
  165. model_1[8] == model_2[8] &&
  166. model_1[9] == model_2[9] &&
  167. model_1[11] == model_2[11] &&
  168. model_1[12] == model_2[12] &&
  169. model_1[13] == model_2[13])
  170. {
  171. return YES;
  172. }
  173. return NO;
  174. }