Esempio n. 1
0
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;
}
Esempio n. 2
0
File: sample.c Progetto: hwwr/test
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;
}