Explorar o código

Merge pull request #11 from qgyhd1234/sample

[修改]:修改 sample 例程
朱天龙 (Armink) %!s(int64=7) %!d(string=hai) anos
pai
achega
c286f752de
Modificáronse 4 ficheiros con 81 adicións e 7 borrados
  1. 3 0
      inc/onenet.h
  2. 57 0
      samples/onenet_sample.c
  3. 3 6
      src/onenet_http.c
  4. 18 1
      src/onenet_mqtt.c

+ 3 - 0
inc/onenet.h

@@ -95,6 +95,7 @@ if (!(EXPR))                                                                   \
 #define ONENET_INFO_APIKEY_LEN         32
 #define ONENET_INFO_PROID_LEN          16
 #define ONENET_INFO_AUTH_LEN           64
+#define ONENET_INFO_NAME_LEN           64
 #define ONENET_INFO_URL_LEN            32
 
 #define ONENET_DATASTREAM_NAME_MAX     32
@@ -167,6 +168,8 @@ void onenet_set_cmd_rsp_cb(void(*cmd_rsp_cb)(uint8_t *recv_data, size_t recv_siz
 #ifdef ONENET_USING_AUTO_REGISTER
 /* Save device info. */
 rt_err_t onenet_port_save_device_info(char *dev_id, char *api_key);
+/* Get device name and auth info for register. */
+rt_err_t onenet_port_get_register_info(char *ds_name, char *auth_info);
 /* Get device info. */
 rt_err_t onenet_port_get_device_info(char *dev_id, char *api_key, char *auth_info);
 /* Check the device has been registered or not. */

+ 57 - 0
samples/onenet_sample.c

@@ -27,6 +27,7 @@
 #ifdef FINSH_USING_MSH
 #include <finsh.h>
 
+/* upload random value to temperature*/
 static void onenet_upload_entry(void *parameter)
 {
     int value = 0;
@@ -64,4 +65,60 @@ int onenet_upload_cycle(void)
 }
 MSH_CMD_EXPORT(onenet_upload_cycle, send data to OneNET cloud cycle);
 
+int onenet_publish_digit(int argc, char **argv)
+{
+    if (argc != 3)
+    {
+        log_e("onenet_publish [datastream_id]  [value]  - mqtt pulish digit data to OneNET.");
+        return -1;
+    }
+
+    if (onenet_mqtt_upload_digit(argv[1], atoi(argv[2])) < 0)
+    {
+        log_e("upload digit data has an error!\n");
+    }
+
+    return 0;
+}
+MSH_CMD_EXPORT_ALIAS(onenet_publish_digit, onenet_mqtt_publish_digit, send digit data to onenet cloud);
+
+int onenet_publish_string(int argc, char **argv)
+{
+    if (argc != 3)
+    {
+        log_e("onenet_publish [datastream_id]  [string]  - mqtt pulish string data to OneNET.");
+        return -1;
+    }
+
+    if (onenet_mqtt_upload_string(argv[1], argv[2]) < 0)
+    {
+        log_e("upload string has an error!\n");
+    }
+
+    return 0;
+}
+MSH_CMD_EXPORT_ALIAS(onenet_publish_string, onenet_mqtt_publish_string, send string data to onenet cloud);
+
+/* onenet mqtt command response callback function */
+static void onenet_cmd_rsp_cb(uint8_t *recv_data, size_t recv_size, uint8_t **resp_data, size_t *resp_size)
+{
+    char res_buf[] = { "cmd is received!\n" };
+
+    log_d("recv data is %.*s\n", recv_size, recv_data);
+
+    /* user have to malloc memory for response data */
+    *resp_data = (uint8_t *) ONENET_MALLOC(strlen(res_buf));
+
+    strncpy(*resp_data, res_buf, strlen(res_buf));
+
+    *resp_size = strlen(res_buf);
+}
+
+/* set the onenet mqtt command response callback function */
+int onenet_set_cmd_rsp(int argc, char **argv)
+{
+    onenet_set_cmd_rsp_cb(onenet_cmd_rsp_cb);
+}
+MSH_CMD_EXPORT(onenet_set_cmd_rsp, set cmd response function);
+
 #endif /* FINSH_USING_MSH */

+ 3 - 6
src/onenet_http.c

@@ -82,15 +82,10 @@ static rt_err_t onenet_upload_data(char *send_buffer)
     header_ptr = header;
 
     /* build header for upload */
-#ifdef ONENET_USING_MQTT
     header_ptr += rt_snprintf(header_ptr,
                               WEBCLIENT_HEADER_BUFSZ - (header_ptr - header),
                               "api-key: %s\r\n", onenet_info.api_key);
-#else
-    header_ptr += rt_snprintf(header_ptr,
-                              WEBCLIENT_HEADER_BUFSZ - (header_ptr - header),
-                              "api-key: %s\r\n", ONENET_INFO_APIKEY);
-#endif
+
     header_ptr += rt_snprintf(header_ptr,
                               WEBCLIENT_HEADER_BUFSZ - (header_ptr - header),
                               "Content-Length: %d\r\n", strlen(buffer));
@@ -287,6 +282,7 @@ __exit:
     return result;
 }
 
+#ifdef ONENET_USING_AUTO_REGISTER
 static rt_err_t response_register_handlers(const unsigned char *rec_buf, const size_t length)
 {
     cJSON *root = RT_NULL;
@@ -530,6 +526,7 @@ __exit:
 
     return result;
 }
+#endif /* ONENET_USING_AUTO_REGISTER */
 
 static cJSON *response_get_datapoints_handlers(const uint8_t *rec_buf)
 {

+ 18 - 1
src/onenet_mqtt.c

@@ -137,14 +137,31 @@ static rt_err_t onenet_get_info(void)
     char dev_id[ONENET_INFO_DEVID_LEN] = { 0 };
     char api_key[ONENET_INFO_APIKEY_LEN] = { 0 };
     char auth_info[ONENET_INFO_AUTH_LEN] = { 0 };
+    char name[ONENET_INFO_NAME_LEN] = { 0 };
 
 #ifdef ONENET_USING_AUTO_REGISTER
+    if (!onenet_port_is_registed())
+    {
+        if (onenet_port_get_register_info(name, auth_info) < 0)
+        {
+            log_e("onenet get register info fail!");
+            return -RT_ERROR;
+        }
+
+        if (onenet_http_register_device(name, auth_info) < 0)
+        {
+            log_e("onenet register device fail! name is %s,auth info is %s", name, auth_info);
+            return -RT_ERROR;
+        }
+    }
+
     if (onenet_port_get_device_info(dev_id, api_key, auth_info))
     {
         log_e("onenet get device id fail,dev_id is %s,api_key is %s,auth_info is %s\n", dev_id, api_key, auth_info);
         return -RT_ERROR;
     }
-#elif
+
+#else
     strncpy(dev_id, ONENET_INFO_DEVID, strlen(ONENET_INFO_DEVID));
     strncpy(api_key, ONENET_INFO_APIKEY, strlen(ONENET_INFO_APIKEY));
     strncpy(auth_info, ONENET_INFO_AUTH, strlen(ONENET_INFO_AUTH));