sys_common.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. #include "stdint.h"
  2. #include <stdarg.h>
  3. #include "stdbool.h"
  4. #include "string.h"
  5. #include "stdio.h"
  6. #include "sys_common.h"
  7. #include "sys_log.h"
  8. #define MAX_BUF 128
  9. int HAL_Vsnprintf(char *buffer, int n, const char *format, va_list ap)
  10. {
  11. return vsnprintf((char *)buffer, n, (const char *)format, ap);
  12. }
  13. int HAL_Sprintf(char *buf, const char *fmt, ...)
  14. {
  15. va_list ap;
  16. int rv;
  17. va_start(ap, fmt);
  18. rv = vsnprintf((char *)buf, MAX_BUF, (const char *)fmt, ap);
  19. va_end(ap);
  20. return rv;
  21. }
  22. int8_t *SYS_Strcpy(int8_t *dst, const int8_t *src)
  23. {
  24. return (int8_t *)strncpy((char *)dst, (const char *)src, strlen((const char *)src));
  25. }
  26. int8_t *SYS_Strstr(const int8_t *haystack, const int8_t *needle)
  27. {
  28. return (int8_t *)strstr((const char *)haystack, (const char *)needle);
  29. }
  30. int8_t *SYS_Strcat(int8_t *dst, const int8_t *src)
  31. {
  32. return (int8_t *)strcat((char *)dst, (const char *)src);
  33. }
  34. #define MAX_TRAS_BUF 1536
  35. uint8_t *SYS_Hex2str(uint8_t *hex, int len)
  36. {
  37. int i;
  38. char szTmp[5];
  39. static uint8_t g_log_buff[MAX_TRAS_BUF + 1];
  40. len = len > MAX_TRAS_BUF / 2 ? MAX_TRAS_BUF / 2 : len;
  41. memset(g_log_buff, 0, MAX_TRAS_BUF + 1);
  42. for (i = 0; i < len; i++)
  43. {
  44. sprintf(szTmp, "%02X", (uint8_t)hex[i]);
  45. memcpy(&g_log_buff[i * 2], szTmp, 2);
  46. }
  47. g_log_buff[MAX_TRAS_BUF] = '\0';
  48. return g_log_buff;
  49. }
  50. uint8_t *SYS_Str2hex(uint8_t *src, int len)
  51. {
  52. uint8_t hb;
  53. uint8_t lb;
  54. int i,j;
  55. static uint8_t dest[64];
  56. if (len > 64)
  57. {
  58. DLOG_E("Str2Hex length is too large !!!");
  59. return NULL;
  60. }
  61. memset((char *)dest, 0, 64);
  62. if (len % 2 != 0)
  63. {
  64. DLOG_E("Str2Hex length is not right !!!");
  65. return NULL;
  66. }
  67. for (i = 0, j = 0; i < len; i++)
  68. {
  69. hb = src[i];
  70. if (hb >= 'A' && hb <= 'F')
  71. {
  72. hb = hb - 'A' + 10;
  73. }
  74. else if (hb >= '0' && hb <= '9')
  75. {
  76. hb = hb - '0';
  77. }
  78. else if (hb == 0x0d || hb == 0x0a)
  79. {
  80. hb = 0;
  81. }
  82. else
  83. {
  84. DLOG_E("Str2Hex data[%d] not right 1 !!!", hb);
  85. }
  86. i++;
  87. lb = src[i];
  88. if (lb >= 'A' && lb <= 'F')
  89. {
  90. lb = lb - 'A' + 10;
  91. }
  92. else if (lb >= '0' && lb <= '9')
  93. {
  94. lb = lb - '0';
  95. }
  96. else if (lb == 0x0d || lb == 0x0a)
  97. {
  98. lb = 0;
  99. }
  100. else
  101. {
  102. DLOG_E("Str2Hex data[%d] not right 2 !!!", hb);
  103. }
  104. dest[j++] = (hb << 4) | (lb);
  105. }
  106. return dest;
  107. }
  108. void small_big_transfer32(uint32_t *data)
  109. {
  110. uint8_t *p_data = (uint8_t *)data;
  111. uint8_t a = p_data[0];
  112. uint8_t b = p_data[1];
  113. uint8_t c = p_data[2];
  114. uint8_t d = p_data[3];
  115. p_data[0] = d;
  116. p_data[1] = c;
  117. p_data[2] = b;
  118. p_data[3] = a;
  119. }
  120. void small_big_transfer16(uint16_t *data)
  121. {
  122. uint8_t *p_data = (uint8_t *)data;
  123. uint8_t a = p_data[0];
  124. uint8_t b = p_data[1];
  125. p_data[0] = b;
  126. p_data[1] = a;
  127. }
  128. uint8_t SYS_CheckStrLen(const char* buf, const char* key, uint8_t len)
  129. {
  130. uint8_t err = 1;
  131. uint8_t *start = (uint8_t* )buf;
  132. uint8_t *end = strstr(buf, key);
  133. if (len == end - start)
  134. {
  135. err = 0;
  136. }
  137. else
  138. {
  139. err = 1;
  140. }
  141. return err;
  142. }