/* * Subscribe the topic: IOT_MQTT_Subscribe(pclient, TOPIC_DATA, IOTX_MQTT_QOS1, _demo_message_arrive, NULL); * Publish the topic: IOT_MQTT_Publish(pclient, TOPIC_DATA, &topic_msg); */ static void mqtt_publish(void *pclient) { int rc = -1; if(is_subscribed == 0) { /* Subscribe the specific topic */ rc = IOT_MQTT_Subscribe(pclient, TOPIC_DATA, IOTX_MQTT_QOS1, _demo_message_arrive, NULL); if (rc<0) { // IOT_MQTT_Destroy(&pclient); LOG("IOT_MQTT_Subscribe() failed, rc = %d", rc); } is_subscribed = 1; aos_schedule_call(ota_init, gpclient); } else{ /* Initialize topic information */ memset(&topic_msg, 0x0, sizeof(iotx_mqtt_topic_info_t)); topic_msg.qos = IOTX_MQTT_QOS1; topic_msg.retain = 0; topic_msg.dup = 0; /* Generate topic message */ int msg_len = snprintf(msg_pub, sizeof(msg_pub), "{\"attr_name\":\"temperature\", \"attr_value\":\"%d\"}", cnt); if (msg_len < 0) { LOG("Error occur! Exit program"); } topic_msg.payload = (void *)msg_pub; topic_msg.payload_len = msg_len; rc = IOT_MQTT_Publish(pclient, TOPIC_DATA, &topic_msg); if (rc < 0) { LOG("error occur when publish"); } #ifdef MQTT_ID2_CRYPTO LOG("packet-id=%u, publish topic msg='0x%02x%02x%02x%02x'...", (uint32_t)rc, msg_pub[0], msg_pub[1], msg_pub[2], msg_pub[3]); #else LOG("packet-id=%u, publish topic msg=%s", (uint32_t)rc, msg_pub); #endif } cnt++; if(cnt < 200) { aos_post_delayed_action(3000, mqtt_publish, pclient); } else { IOT_MQTT_Unsubscribe(pclient, TOPIC_DATA); aos_msleep(200); IOT_MQTT_Destroy(&pclient); release_buff(); is_subscribed = 0; cnt = 0; } }
/* * Subscribe the topic: IOT_MQTT_Subscribe(pclient, TOPIC_DATA, IOTX_MQTT_QOS1, _demo_message_arrive, NULL); * Publish the topic: IOT_MQTT_Publish(pclient, TOPIC_DATA, &topic_msg); */ static void mqtt_work(void *parms) { int rc = -1; if (is_subscribed == 0) { /* Subscribe the specific topic */ rc = mqtt_subscribe(TOPIC_GET, mqtt_sub_callback, NULL); if (rc < 0) { // IOT_MQTT_Destroy(&pclient); LOG("IOT_MQTT_Subscribe() failed, rc = %d", rc); } is_subscribed = 1; aos_schedule_call(ota_init, NULL); } #ifndef MQTT_PRESS_TEST else { /* Generate topic message */ int msg_len = snprintf(msg_pub, sizeof(msg_pub), "{\"attr_name\":\"temperature\", \"attr_value\":\"%d\"}", cnt); if (msg_len < 0) { LOG("Error occur! Exit program"); } rc = mqtt_publish(TOPIC_UPDATE, IOTX_MQTT_QOS1, msg_pub, msg_len); if (rc < 0) { LOG("error occur when publish"); } LOG("packet-id=%u, publish topic msg=%s", (uint32_t)rc, msg_pub); } cnt++; if (cnt < 200) { aos_post_delayed_action(3000, mqtt_work, NULL); } else { aos_cancel_delayed_action(3000, mqtt_work, NULL); mqtt_unsubscribe(TOPIC_GET); aos_msleep(200); mqtt_deinit_instance(); is_subscribed = 0; cnt = 0; } #endif }
static void handle_active_cmd(char *pwbuf, int blen, int argc, char **argv) { aos_schedule_call(do_awss_active, NULL); }
static void key_ps_work(void *arg) { aos_schedule_call(key_ps_func, NULL); }