joylink_extern_json.c 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208
  1. /* --------------------------------------------------
  2. * @brief:
  3. *
  4. * @version: 1.0
  5. *
  6. * @date: 08/01/2018
  7. *
  8. * @author:
  9. * --------------------------------------------------
  10. */
  11. #include <stdio.h>
  12. #include <stdlib.h>
  13. #include <string.h>
  14. #include "cJSON.h"
  15. #include "joylink_json.h"
  16. #include "joylink_dev.h"
  17. #include "joylink_log.h"
  18. #include "joylink_extern.h"
  19. /**
  20. * brief:
  21. *
  22. * @Param: pMsg
  23. * @Param: user_dev
  24. *
  25. * @Returns:
  26. */
  27. int
  28. joylink_dev_parse_ctrl(const char *pMsg, user_dev_status_t *userDev)
  29. {
  30. int ret = -1;
  31. if(NULL == pMsg || NULL == userDev){
  32. goto RET;
  33. }
  34. log_debug("json_org:%s", pMsg);
  35. cJSON * pSub;
  36. cJSON * pJson = cJSON_Parse(pMsg);
  37. if(NULL == pJson){
  38. log_error("--->:ERROR: pMsg is NULL\n");
  39. goto RET;
  40. }
  41. char tmp_str[64];
  42. cJSON *pStreams = cJSON_GetObjectItem(pJson, "streams");
  43. if(NULL != pStreams){
  44. int iSize = cJSON_GetArraySize(pStreams);
  45. int iCnt;
  46. for( iCnt = 0; iCnt < iSize; iCnt++){
  47. pSub = cJSON_GetArrayItem(pStreams, iCnt);
  48. if(NULL == pSub){
  49. continue;
  50. }
  51. cJSON *pSId = cJSON_GetObjectItem(pSub, "stream_id");
  52. if(NULL == pSId){
  53. break;
  54. }
  55. cJSON *pV = cJSON_GetObjectItem(pSub, "current_value");
  56. if(NULL == pV){
  57. continue;
  58. }
  59. char *dout = cJSON_Print(pSub);
  60. if(NULL != dout){
  61. log_debug("org streams:%s", dout);
  62. free(dout);
  63. }
  64. }
  65. }
  66. cJSON_Delete(pJson);
  67. RET:
  68. return ret;
  69. }
  70. /**
  71. * brief:
  72. * NOTE: If return is not NULL,
  73. * must free it, after use.
  74. *
  75. * @Param: retMsg
  76. * @Param: retCode
  77. * @Param: wci
  78. * @Param: devlist
  79. *
  80. * @Returns: char *
  81. */
  82. char *
  83. joylink_dev_package_info(const int retCode, user_dev_status_t *userDev)
  84. {
  85. if(NULL == userDev){
  86. return NULL;
  87. }
  88. cJSON *root, *arrary;
  89. char *out = NULL;
  90. root = cJSON_CreateObject();
  91. if(NULL == root){
  92. goto RET;
  93. }
  94. arrary = cJSON_CreateArray();
  95. if(NULL == arrary){
  96. cJSON_Delete(root);
  97. goto RET;
  98. }
  99. cJSON_AddNumberToObject(root, "code", retCode);
  100. cJSON_AddItemToObject(root, "streams", arrary);
  101. out=cJSON_Print(root);
  102. cJSON_Delete(root);
  103. RET:
  104. return out;
  105. }
  106. /**
  107. * brief:
  108. *
  109. * @Param: retCode
  110. * @Param: userDev
  111. *
  112. * @Returns:
  113. */
  114. char *
  115. joylink_dev_modelcode_info(const int retCode, JLPInfo_t *userDev)
  116. {
  117. if(NULL == userDev){
  118. return NULL;
  119. }
  120. cJSON *root, *arrary;
  121. char *out = NULL;
  122. root = cJSON_CreateObject();
  123. if(NULL == root){
  124. goto RET;
  125. }
  126. arrary = cJSON_CreateArray();
  127. if(NULL == arrary){
  128. cJSON_Delete(root);
  129. goto RET;
  130. }
  131. cJSON_AddItemToObject(root, "model_codes", arrary);
  132. char i2str[32];
  133. bzero(i2str, sizeof(i2str));
  134. cJSON *element = cJSON_CreateObject();
  135. cJSON_AddItemToArray(arrary, element);
  136. cJSON_AddStringToObject(element, "feedid", userDev->feedid);
  137. cJSON_AddStringToObject(element, "model_code", "12345678123456781234567812345678");
  138. out=cJSON_Print(root);
  139. cJSON_Delete(root);
  140. RET:
  141. return out;
  142. }
  143. /**
  144. * brief:
  145. *
  146. * @Param: jlp
  147. * @Param: pMsg
  148. *
  149. * @Returns:
  150. */
  151. int
  152. joylink_parse_jlp(JLPInfo_t *jlp, char * pMsg)
  153. {
  154. int ret = -1;
  155. if(NULL == pMsg || NULL == jlp){
  156. return ret;
  157. }
  158. cJSON *pVal;
  159. cJSON * pJson = cJSON_Parse(pMsg);
  160. if(NULL == pJson){
  161. log_error("--->:ERROR: pMsg is NULL\n");
  162. goto RET;
  163. }
  164. pVal = cJSON_GetObjectItem(pJson, "uuid");
  165. if(NULL != pVal){
  166. strcpy(jlp->uuid, pVal->valuestring);
  167. }
  168. pVal = cJSON_GetObjectItem(pJson, "feedid");
  169. if(NULL != pVal){
  170. strcpy(jlp->feedid, pVal->valuestring);
  171. }
  172. pVal = cJSON_GetObjectItem(pJson, "accesskey");
  173. if(NULL != pVal){
  174. strcpy(jlp->accesskey, pVal->valuestring);
  175. }
  176. pVal = cJSON_GetObjectItem(pJson, "localkey");
  177. if(NULL != pVal){
  178. strcpy(jlp->localkey, pVal->valuestring);
  179. }
  180. pVal = cJSON_GetObjectItem(pJson, "version");
  181. if(NULL != pVal){
  182. jlp->version = pVal->valueint;
  183. }
  184. cJSON_Delete(pJson);
  185. ret = 0;
  186. RET:
  187. return ret;
  188. }