Tuoreniot.c 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. #include "stm32f10x.h"
  2. #include <stdio.h>
  3. #include <stdarg.h>
  4. #include <string.h>
  5. #include <stdlib.h>
  6. #include "Tuoreniot.h"
  7. #include "mbedtls_util.h"
  8. #include "Log_Module.h"
  9. #include "At_Module.h"
  10. #include "Common_Util.h"
  11. #include "ec800m.h"
  12. #include "cJSON.h"
  13. unsigned char key[17]="tuorenzhinenghua";
  14. /**
  15. *
  16. *注册参数信息打包
  17. */
  18. void packRegistParams(uint8_t * pack_data, uint16_t * pack_data_length, struct Regist_Params_Struct registParams)
  19. {
  20. sprintf((char *)(pack_data + 2), "{\"platform\":\"%s\",\"connectionType\":\"%s\",\"deviceId\":\"%s\"}",
  21. registParams.platform, registParams.networkProtocol, registParams.deviceId); // 拼接AT指令
  22. Log_Printf_Debug("%s\r\n", (char *)(pack_data + 2));
  23. uint16_t datalen = utils_aes128_ECB_base64_enc_with_length((char *)key, (pack_data + 2));
  24. pack_data[0] = datalen>>8;//头2个字节赋值数据长度
  25. pack_data[1] = datalen;
  26. * pack_data_length = datalen + 2;
  27. }
  28. /**
  29. *
  30. *注册数据解密
  31. */
  32. uint8_t analysisRegistData(uint8_t * regist_data, uint16_t regist_data_length, struct Regist_Result_Struct * registResult)
  33. {
  34. Log_Printf_Debug("regist_data: \r\n");
  35. Log_SendHex(regist_data, regist_data_length);
  36. Log_Printf_Debug("\r\n");
  37. uint8_t result;
  38. utils_aes128_ECB_base64_dec((char *)key,regist_data,regist_data_length);
  39. Log_Printf_Debug("解密数据(%d):%s\r\n", regist_data_length, (char *)regist_data);
  40. cJSON *json = cJSON_Parse((char *)regist_data);
  41. if(!json)
  42. {
  43. Log_Printf_Debug("json parse error,%s\r\n",cJSON_GetErrorPtr());
  44. result = 0;
  45. }
  46. else if(cJSON_GetObjectItem(json, "code")->valueint == 200)
  47. {
  48. registResult->version = 1;
  49. registResult->userId = 1000;
  50. strcpy(registResult->networkProtocol, "CoAP");
  51. strcpy(registResult->platform, "aliyun");
  52. registResult->code = cJSON_GetObjectItem(json, "code")->valueint;
  53. strcpy(registResult->deviceSecret, cJSON_GetObjectItem(json, "deviceSecret")->valuestring);
  54. strcpy(registResult->productId, cJSON_GetObjectItem(json, "productKey")->valuestring);
  55. strcpy(registResult->deviceId, cJSON_GetObjectItem(json, "deviceName")->valuestring);
  56. strcpy(registResult->remoteAddress, cJSON_GetObjectItem(json, "address")->valuestring);
  57. registResult->remotePort = atoi(cJSON_GetObjectItem(json, "port")->valuestring);
  58. result = 1;
  59. }
  60. else
  61. {
  62. result = 0;
  63. }
  64. cJSON_Delete(json);
  65. return result;
  66. }
  67. void printf_regist_param_struct(struct Regist_Params_Struct regist_params_struct)
  68. {
  69. Log_Printf("------print regist params start------\r\n");
  70. Log_Printf("version=%d\r\n", regist_params_struct.version);
  71. Log_Printf("networkType=%s\r\n", regist_params_struct.networkType);
  72. Log_Printf("networkProtocol=%s\r\n", regist_params_struct.networkProtocol);
  73. Log_Printf("deviceId=%s\r\n", regist_params_struct.deviceId);
  74. Log_Printf("platform=%s\r\n", regist_params_struct.platform);
  75. Log_Printf("userId=%d\r\n", regist_params_struct.userId);
  76. Log_Printf("------print regist params end------\r\n");
  77. }
  78. void printf_regist_result_struct(struct Regist_Result_Struct regist_result_struct)
  79. {
  80. Log_Printf("------print regist result start------\r\n");
  81. Log_Printf("code=%d\r\n", regist_result_struct.code);
  82. Log_Printf("version=%d\r\n", regist_result_struct.version);
  83. Log_Printf("networkProtocol=%s\r\n", regist_result_struct.networkProtocol);
  84. Log_Printf("platform=%s\r\n", regist_result_struct.platform);
  85. Log_Printf("deviceId=%s\r\n", regist_result_struct.deviceId);
  86. Log_Printf("deviceSecret=%s\r\n", regist_result_struct.deviceSecret);
  87. Log_Printf("remoteAddress=%s\r\n", regist_result_struct.remoteAddress);
  88. Log_Printf("remotePort=%d\r\n", regist_result_struct.remotePort);
  89. Log_Printf("productId=%s\r\n", regist_result_struct.productId);
  90. Log_Printf("userId=%d\r\n", regist_result_struct.userId);
  91. Log_Printf("------print regist result end------\r\n");
  92. }