三木社区

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 589|回复: 0
打印 上一主题 下一主题

user_property_get_event_handler

[复制链接]

1657

主题

1684

帖子

5684

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5684
跳转到指定楼层
楼主
发表于 2019-6-17 15:48:36 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
  1. static int user_property_get_event_handler(const int devid, const char *request, const int request_len, char **response,
  2.         int *response_len)
  3. {
  4.     cJSON *request_root = NULL, *item_propertyid = NULL;
  5.     cJSON *response_root = NULL;
  6.     int index = 0;
  7.     EXAMPLE_TRACE("Property Get Received, Devid: %d, Request: %s", devid, request);

  8.     /* Parse Request */
  9.     request_root = cJSON_Parse(request);
  10.     if (request_root == NULL || !cJSON_IsArray(request_root)) {
  11.         EXAMPLE_TRACE("JSON Parse Error");
  12.         return -1;
  13.     }

  14.     /* Prepare Response */
  15.     response_root = cJSON_CreateObject();
  16.     if (response_root == NULL) {
  17.         EXAMPLE_TRACE("No Enough Memory");
  18.         cJSON_Delete(request_root);
  19.         return -1;
  20.     }

  21.     for (index = 0; index < cJSON_GetArraySize(request_root); index++) {
  22.         item_propertyid = cJSON_GetArrayItem(request_root, index);
  23.         if (item_propertyid == NULL || !cJSON_IsString(item_propertyid)) {
  24.             EXAMPLE_TRACE("JSON Parse Error");
  25.             cJSON_Delete(request_root);
  26.             cJSON_Delete(response_root);
  27.             return -1;
  28.         }

  29.         EXAMPLE_TRACE("Property ID, index: %d, Value: %s", index, item_propertyid->valuestring);

  30.         if (strcmp("WIFI_Tx_Rate", item_propertyid->valuestring) == 0) {
  31.             cJSON_AddNumberToObject(response_root, "WIFI_Tx_Rate", 1111);
  32.         } else if (strcmp("WIFI_Rx_Rate", item_propertyid->valuestring) == 0) {
  33.             cJSON_AddNumberToObject(response_root, "WIFI_Rx_Rate", 2222);
  34.         } else if (strcmp("RGBColor", item_propertyid->valuestring) == 0) {
  35.             cJSON *item_rgbcolor = cJSON_CreateObject();
  36.             if (item_rgbcolor == NULL) {
  37.                 cJSON_Delete(request_root);
  38.                 cJSON_Delete(response_root);
  39.                 return -1;
  40.             }
  41.             cJSON_AddNumberToObject(item_rgbcolor, "Red", 100);
  42.             cJSON_AddNumberToObject(item_rgbcolor, "Green", 100);
  43.             cJSON_AddNumberToObject(item_rgbcolor, "Blue", 100);
  44.             cJSON_AddItemToObject(response_root, "RGBColor", item_rgbcolor);
  45.         } else if (strcmp("HSVColor", item_propertyid->valuestring) == 0) {
  46.             cJSON *item_hsvcolor = cJSON_CreateObject();
  47.             if (item_hsvcolor == NULL) {
  48.                 cJSON_Delete(request_root);
  49.                 cJSON_Delete(response_root);
  50.                 return -1;
  51.             }
  52.             cJSON_AddNumberToObject(item_hsvcolor, "Hue", 50);
  53.             cJSON_AddNumberToObject(item_hsvcolor, "Saturation", 50);
  54.             cJSON_AddNumberToObject(item_hsvcolor, "Value", 50);
  55.             cJSON_AddItemToObject(response_root, "HSVColor", item_hsvcolor);
  56.         } else if (strcmp("HSLColor", item_propertyid->valuestring) == 0) {
  57.             cJSON *item_hslcolor = cJSON_CreateObject();
  58.             if (item_hslcolor == NULL) {
  59.                 cJSON_Delete(request_root);
  60.                 cJSON_Delete(response_root);
  61.                 return -1;
  62.             }
  63.             cJSON_AddNumberToObject(item_hslcolor, "Hue", 70);
  64.             cJSON_AddNumberToObject(item_hslcolor, "Saturation", 70);
  65.             cJSON_AddNumberToObject(item_hslcolor, "Lightness", 70);
  66.             cJSON_AddItemToObject(response_root, "HSLColor", item_hslcolor);
  67.         } else if (strcmp("WorkMode", item_propertyid->valuestring) == 0) {
  68.             cJSON_AddNumberToObject(response_root, "WorkMode", 4);
  69.         } else if (strcmp("NightLightSwitch", item_propertyid->valuestring) == 0) {
  70.             cJSON_AddNumberToObject(response_root, "NightLightSwitch", 1);
  71.         } else if (strcmp("Brightness", item_propertyid->valuestring) == 0) {
  72.             cJSON_AddNumberToObject(response_root, "Brightness", 30);
  73.         } else if (strcmp("LightSwitch", item_propertyid->valuestring) == 0) {
  74.             cJSON_AddNumberToObject(response_root, "LightSwitch", 1);
  75.         } else if (strcmp("ColorTemperature", item_propertyid->valuestring) == 0) {
  76.             cJSON_AddNumberToObject(response_root, "ColorTemperature", 2800);
  77.         } else if (strcmp("PropertyCharacter", item_propertyid->valuestring) == 0) {
  78.             cJSON_AddStringToObject(response_root, "PropertyCharacter", "testprop");
  79.         } else if (strcmp("Propertypoint", item_propertyid->valuestring) == 0) {
  80.             cJSON_AddNumberToObject(response_root, "Propertypoint", 50);
  81.         } else if (strcmp("LocalTimer", item_propertyid->valuestring) == 0) {
  82.             cJSON *array_localtimer = cJSON_CreateArray();
  83.             if (array_localtimer == NULL) {
  84.                 cJSON_Delete(request_root);
  85.                 cJSON_Delete(response_root);
  86.                 return -1;
  87.             }

  88.             cJSON *item_localtimer = cJSON_CreateObject();
  89.             if (item_localtimer == NULL) {
  90.                 cJSON_Delete(request_root);
  91.                 cJSON_Delete(response_root);
  92.                 cJSON_Delete(array_localtimer);
  93.                 return -1;
  94.             }
  95.             cJSON_AddStringToObject(item_localtimer, "Timer", "10 11 * * * 1 2 3 4 5");
  96.             cJSON_AddNumberToObject(item_localtimer, "Enable", 1);
  97.             cJSON_AddNumberToObject(item_localtimer, "IsValid", 1);
  98.             cJSON_AddItemToArray(array_localtimer, item_localtimer);
  99.             cJSON_AddItemToObject(response_root, "LocalTimer", array_localtimer);
  100.         }
  101.     }
  102.     cJSON_Delete(request_root);

  103.     *response = cJSON_PrintUnformatted(response_root);
  104.     if (*response == NULL) {
  105.         EXAMPLE_TRACE("No Enough Memory");
  106.         cJSON_Delete(response_root);
  107.         return -1;
  108.     }
  109.     cJSON_Delete(response_root);
  110.     *response_len = strlen(*response);

  111.     EXAMPLE_TRACE("Property Get Response: %s", *response);

  112.     return SUCCESS_RETURN;
  113. }
复制代码
获得用户属性事件处理程序

回复

使用道具 举报

Archiver|手机版|小黑屋|三木电子社区 ( 辽ICP备11000133号-4 )

辽公网安备 21021702000620号

GMT+8, 2026-3-19 00:37 , Processed in 0.045895 second(s), 22 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表