int application_start(int argc, char *argv[]) { #if AOS_ATCMD uart_dev_t at_uart; at_uart_configure(&at_uart); at.init(&at_uart, AT_RECV_DELIMITER, AT_SEND_DELIMITER, 1000); at.set_mode(ASYN); #endif #ifdef WITH_SAL sal_init(); #endif parse_opt(argc, argv); aos_set_log_level(AOS_LL_DEBUG); #ifndef AOS_AT_ADAPTER if (mesh_mode == MESH_MASTER) { #ifdef CONFIG_AOS_DDM ddm_run(argc, argv); #endif return 0; } #ifdef CONFIG_AOS_DDA dda_enable(atoi(mesh_num)); dda_service_init(); #endif #endif // #ifndef AOS_AT_ADAPTER aos_cli_register_command(&uuidcmd); alink_cloud_init(); if (mesh_mode == MESH_GATEWAY) { aos_cli_register_command(&ncmd); aos_cli_register_command(&modelcmd); aos_cli_register_command(&resetcmd); if (env == SANDBOX) alink_enable_sandbox_mode(); else if (env == DAILY) alink_enable_daily_mode(NULL, 0); #ifndef AOS_AT_ADAPTER aos_register_event_filter(EV_WIFI, alink_service_event, NULL); #else aos_register_event_filter(EV_AT, alink_service_event, NULL); #endif aos_register_event_filter(EV_SYS, alink_connect_event, NULL); aos_register_event_filter(EV_KEY, alink_key_process, NULL); #ifndef AOS_AT_ADAPTER aos_register_event_filter(EV_YUNIO, auto_active_handler, NULL); auto_netmgr = get_auto_netmgr_config(); awss_register_callback(AWSS_HOTSPOT_CONNECTED, &awss_hotspot_connected_handler); awss_register_callback(AWSS_HOTSPOT_SWITCH_AP_DONE, &awss_hotspot_switch_ap_done_handler); if (auto_netmgr) start_auto_netmgr_timer(); #else auto_netmgr = false; at_adapter_init(); #endif netmgr_init(); netmgr_start(auto_netmgr); } #if defined(CONFIG_AOS_DDA) && !defined(AOS_AT_ADAPTER) dda_service_start(); #else aos_loop_run(); LOG("alink end."); alink_end(); #endif return 0; }
int ICACHE_FLASH_ATTR alink_demo() { struct device_info main_dev; memset(&main_dev, 0, sizeof(main_dev)); alink_fill_deviceinfo(&main_dev); // 必须根据PRD表格更新设备信息 //alink_set_loglevel(ALINK_LL_DEBUG | ALINK_LL_INFO | ALINK_LL_WARN | ALINK_LL_ERROR); alink_set_loglevel(ALINK_LL_ERROR); //alink_enable_sandbox_mode(); // 线上环境需要注解此函数 main_dev.sys_callback[ALINK_FUNC_SERVER_STATUS] = alink_handler_systemstates_callback; alink_set_callback(ALINK_FUNC_AVAILABLE_MEMORY, print_mem_callback); /* ALINK_CONFIG_LEN 2048 */ alink_register_cb(ALINK_FUNC_READ_CONFIG, (void *)&read_config); alink_register_cb(ALINK_FUNC_WRITE_CONFIG, (void *)&write_config); alink_register_cb(ALINK_FUNC_GET_STATUS, alink_get_debuginfo); //alink_enable_sandbox(&main_dev); // 线上环境需要注解此函数 alink_register_cb(ALINK_FUNC_OTA_FIRMWARE_SAVE, esp_ota_firmware_update); alink_register_cb(ALINK_FUNC_OTA_UPGRADE, esp_ota_upgrade); /*start alink-sdk */ #ifdef PASS_THROUGH //透传方式(设备与服务器采用raw data通讯) alink_start_rawdata(&main_dev, rawdata_get_callback, rawdata_set_callback); #else // 非透传方式(设备与服务器采用json格式数据通讯) main_dev.dev_callback[ACB_GET_DEVICE_STATUS] = main_dev_get_device_status_callback; main_dev.dev_callback[ACB_SET_DEVICE_STATUS] = main_dev_set_device_status_callback; alink_start(&main_dev); //register main device here #endif //PASS_THROUGH os_printf("%s %d wait time=%d \n", __FUNCTION__, __LINE__, ALINK_WAIT_FOREVER); ESP_DBG(("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^")); if (ALINK_OK == alink_wait_connect(NULL, ALINK_WAIT_FOREVER)) //wait main device login, -1 means wait forever { #if USER_UART_CTRL_DEV_EN char send_buf_alink_connOK[] = { 0x31, 0x31, 0x31, 0x31 }; // demo data to tell uart mcu dev, alink conn success uart0_write_data(send_buf_alink_connOK, sizeof(send_buf_alink_connOK)); #endif } else { #if USER_UART_CTRL_DEV_EN char send_buf_alink_connFailed[] = { 0x32, 0x32, 0x32, 0x32 }; // demo data to tell uart mcu dev, alink conn success uart0_write_data(send_buf_alink_connFailed, sizeof(send_buf_alink_connFailed)); #endif } if (need_notify_app) { need_notify_app = 0; uint8 macaddr[6]; char mac[17 + 1]; if (wifi_get_macaddr(0, macaddr)) { os_printf("macaddr=%02x:%02x:%02x:%02x:%02x:%02x\n", MAC2STR(macaddr)); snprintf(mac, sizeof(mac), "%02x:%02x:%02x:%02x:%02x:%02x", MAC2STR(macaddr)); zconfig_notify_app(DEV_MODEL, mac, ""); // if not factory reset , } } //printf("%s %d \n",__FUNCTION__,__LINE__); //printf("alink_demo heap_size %d\n",system_get_free_heap_size()); //system_print_meminfo(); /* 设备主动上报数据 */ while (sample_running) { //os_printf("%s %d \n",__FUNCTION__,__LINE__); #ifdef PASS_THROUGH alink_device_post_raw_data(); #else alink_device_post_data(NULL); #endif //PASS_THROUGH if (need_factory_reset) { wsf_deb("key to factory_reset\n"); need_factory_reset = 0; alink_factory_reset(); } alink_sleep(1000); } /* 设备退出alink-sdk */ alink_end(); return 0; }