/****************************************************************************** * FunctionName : user_plug_init * Description : init plug's key function and relay output * Parameters : none * Returns : none *******************************************************************************/ void user_plug_init(void) { printf("user_plug_init start!\n"); user_link_led_init(); wifi_status_led_install(PLUG_WIFI_LED_IO_NUM, PLUG_WIFI_LED_IO_MUX, PLUG_WIFI_LED_IO_FUNC); single_key[0] = key_init_single(PLUG_KEY_0_IO_NUM, PLUG_KEY_0_IO_MUX, PLUG_KEY_0_IO_FUNC, user_plug_long_press, user_plug_short_press); keys.key_num = PLUG_KEY_NUM; keys.single_key = single_key; key_init(&keys); spi_flash_read((PRIV_PARAM_START_SEC + PRIV_PARAM_SAVE) * SPI_FLASH_SEC_SIZE, (uint32 *)&plug_param, sizeof(struct plug_saved_param)); PIN_FUNC_SELECT(PLUG_RELAY_LED_IO_MUX, PLUG_RELAY_LED_IO_FUNC); // default to be off, for safety. if (plug_param.status == 0xff) { plug_param.status = 0; } PLUG_STATUS_OUTPUT(PLUG_RELAY_LED_IO_NUM, plug_param.status); }
/****************************************************************************** * FunctionName : user_plug_init * Description : init plug's key function and relay output * Parameters : none * Returns : none *******************************************************************************/ void ICACHE_FLASH_ATTR user_plug_init(void) { user_link_led_init(); wifi_status_led_install(PLUG_WIFI_LED_IO_NUM, PLUG_WIFI_LED_IO_MUX, PLUG_WIFI_LED_IO_FUNC); single_key[0] = key_init_single(PLUG_KEY_0_IO_NUM, PLUG_KEY_0_IO_MUX, PLUG_KEY_0_IO_FUNC, user_plug_long_press, user_plug_short_press); keys.key_num = PLUG_KEY_NUM; keys.single_key = single_key; key_init(&keys); spi_flash_read((PRIV_PARAM_START_SEC + PRIV_PARAM_SAVE) * SPI_FLASH_SEC_SIZE, (uint32 *)&plug_param, sizeof(struct plug_saved_param)); PIN_FUNC_SELECT(PLUG_RELAY_LED_IO_MUX, PLUG_RELAY_LED_IO_FUNC); // no used SPI Flash if (plug_param.status == 0xff) { plug_param.status = 1; } PLUG_STATUS_OUTPUT(PLUG_RELAY_LED_IO_NUM, plug_param.status); }
/****************************************************************************** * FunctionName : user_sensor_init * Description : init sensor function, include key and mvh3004 * Parameters : none * Returns : none *******************************************************************************/ void ICACHE_FLASH_ATTR user_sensor_init(uint8 active) { user_link_led_init(); wifi_status_led_install(SENSOR_WIFI_LED_IO_NUM, SENSOR_WIFI_LED_IO_MUX, SENSOR_WIFI_LED_IO_FUNC); if (wifi_get_opmode() != SOFTAP_MODE) { single_key[0] = key_init_single(SENSOR_KEY_IO_NUM, SENSOR_KEY_IO_MUX, SENSOR_KEY_IO_FUNC, user_sensor_long_press, NULL); keys.key_num = SENSOR_KEY_NUM; keys.single_key = single_key; key_init(&keys); if (GPIO_INPUT_GET(GPIO_ID_PIN(SENSOR_KEY_IO_NUM)) == 0) { user_sensor_long_press(); } } if (wifi_get_opmode() != STATIONAP_MODE) { if (active == 1) { user_sensor_deep_sleep_init(SENSOR_CONNECT_TIME / 1000);//exceed SENSOR_CONNECT_TIME,sleep directly } else { user_sensor_deep_sleep_init(SENSOR_CONNECT_TIME / 1000);//exceed SENSOR_CONNECT_TIME,sleep directly } } }
irom void xkey_init() { single_key[0] = key_init_single (XKEY_IO_NUM, XKEY_IO_MUX, XKEY_IO_FUNC, xkey_long_press, xkey_short_press); // key level is HIGH when key is pressed single_key[0]->key_level = 1; keys.key_num = 1; keys.single_key = single_key; key_init(&keys); }
void ICACHE_FLASH_ATTR user_init(void) { single_key = key_init_single(WPS_KEY_IO_NUM, WPS_KEY_IO_MUX, WPS_KEY_IO_FUNC, NULL, user_wps_key_short_press); keys.key_num = WPS_KEY_NUM; keys.single_key = &single_key; key_init(&keys); wifi_set_opmode(STATION_MODE); }
void ICACHE_FLASH_ATTR user_button_init() { struct single_key_param *key = NULL; key = key_init_single( GPIO_ID_PIN(0), PERIPHS_IO_MUX_GPIO0_U, FUNC_GPIO0, button_press, button_short_release, button_long_press, button_long_release ); if (key == NULL) { debug("BUTTON: Initialization Fail\n"); return; } webserver_register_handler_callback(BUTTON_URL, button_handler); device_register(NATIVE, 0, BUTTON_URL, NULL, NULL); }
/****************************************************************************** * FunctionName : user_humiture_init * Description : init humiture function, include key and mvh3004 * Parameters : none * Returns : none *******************************************************************************/ void ICACHE_FLASH_ATTR user_sensor_init(uint8 active) { user_link_led_init(); wifi_status_led_install(SENSOR_WIFI_LED_IO_NUM, SENSOR_WIFI_LED_IO_MUX, SENSOR_WIFI_LED_IO_FUNC); if (wifi_get_opmode() != SOFTAP_MODE) { single_key[0] = key_init_single(SENSOR_KEY_IO_NUM, SENSOR_KEY_IO_MUX, SENSOR_KEY_IO_FUNC, user_sensor_long_press, NULL); keys.key_num = SENSOR_KEY_NUM; keys.single_key = single_key; key_init(&keys); if (GPIO_INPUT_GET(GPIO_ID_PIN(SENSOR_KEY_IO_NUM)) == 0) { user_sensor_long_press(); } } #if HUMITURE_SUB_DEVICE user_mvh3004_init(); user_mvh3004_read_th(humiture_data); #endif #ifdef SENSOR_DEEP_SLEEP if (wifi_get_opmode() != STATIONAP_MODE) { if (active == 1) { user_sensor_deep_sleep_init(SENSOR_DEEP_SLEEP_TIME / 1000 ); } else { user_sensor_deep_sleep_init(SENSOR_DEEP_SLEEP_TIME / 1000 / 3 * 2); } } #endif }
/****************************************************************************** * FunctionName : user_esp_platform_init * Description : device parame init based on espressif platform * Parameters : none * Returns : none *******************************************************************************/ void ICACHE_FLASH_ATTR user_esp_platform_init(void) { os_sprintf(iot_version,"%s%d.%d.%dt%d(%s)",VERSION_TYPE,IOT_VERSION_MAJOR,\ IOT_VERSION_MINOR,IOT_VERSION_REVISION,device_type,UPGRADE_FALG); os_printf("IOT VERSION = %s\n",iot_version); system_param_load(ESP_PARAM_START_SEC, 0, &esp_param, sizeof(esp_param)); struct rst_info *rtc_info = system_get_rst_info(); os_printf("reset reason: %x\n", rtc_info->reason); if (rtc_info->reason == REASON_WDT_RST || rtc_info->reason == REASON_EXCEPTION_RST || rtc_info->reason == REASON_SOFT_WDT_RST) { if (rtc_info->reason == REASON_EXCEPTION_RST) { os_printf("Fatal exception (%d):\n", rtc_info->exccause); } os_printf("epc1=0x%08x, epc2=0x%08x, epc3=0x%08x, excvaddr=0x%08x, depc=0x%08x\n", rtc_info->epc1, rtc_info->epc2, rtc_info->epc3, rtc_info->excvaddr, rtc_info->depc); } /***add by tzx for saving ip_info to avoid dhcp_client start****/ struct dhcp_client_info dhcp_info; struct ip_info sta_info; system_rtc_mem_read(64,&dhcp_info,sizeof(struct dhcp_client_info)); if(dhcp_info.flag == 0x01 ) { if (true == wifi_station_dhcpc_status()) { wifi_station_dhcpc_stop(); } sta_info.ip = dhcp_info.ip_addr; sta_info.gw = dhcp_info.gw; sta_info.netmask = dhcp_info.netmask; if ( true != wifi_set_ip_info(STATION_IF,&sta_info)) { os_printf("set default ip wrong\n"); } } os_memset(&dhcp_info,0,sizeof(struct dhcp_client_info)); system_rtc_mem_write(64,&dhcp_info,sizeof(struct rst_info)); #if AP_CACHE wifi_station_ap_number_set(AP_CACHE_NUMBER); #endif #if 0 { char sofap_mac[6] = {0x16, 0x34, 0x56, 0x78, 0x90, 0xab}; char sta_mac[6] = {0x12, 0x34, 0x56, 0x78, 0x90, 0xab}; struct ip_info info; wifi_set_macaddr(SOFTAP_IF, sofap_mac); wifi_set_macaddr(STATION_IF, sta_mac); IP4_ADDR(&info.ip, 192, 168, 3, 200); IP4_ADDR(&info.gw, 192, 168, 3, 1); IP4_ADDR(&info.netmask, 255, 255, 255, 0); wifi_set_ip_info(STATION_IF, &info); IP4_ADDR(&info.ip, 10, 10, 10, 1); IP4_ADDR(&info.gw, 10, 10, 10, 1); IP4_ADDR(&info.netmask, 255, 255, 255, 0); wifi_set_ip_info(SOFTAP_IF, &info); } #endif if (esp_param.activeflag != 1) { #ifdef SOFTAP_ENCRYPT struct softap_config config; char password[33]; char macaddr[6]; wifi_softap_get_config(&config); wifi_get_macaddr(SOFTAP_IF, macaddr); os_memset(config.password, 0, sizeof(config.password)); os_sprintf(password, MACSTR "_%s", MAC2STR(macaddr), PASSWORD); os_memcpy(config.password, password, os_strlen(password)); config.authmode = AUTH_WPA_WPA2_PSK; wifi_softap_set_config(&config); #endif wifi_station_set_hostname( HOST_NAME ); wifi_set_opmode(STATION_MODE); } #if SENSOR_DEVICE user_sensor_init(esp_param.activeflag); #endif #if 0 if (wifi_get_opmode() != SOFTAP_MODE) { os_timer_disarm(&client_timer); os_timer_setfn(&client_timer, (os_timer_func_t *)user_esp_platform_check_ip, 1); os_timer_arm(&client_timer, 100, 0); } // 2015-12-27 single_key[0] = key_init_single( 12, PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12, NULL, GPIO_INTER); keys.key_num = 1; keys.single_key = single_key; key_init(&keys); #endif }
void user_init(void) { uart_init(BIT_RATE_115200, BIT_RATE_115200); os_printf("SDK version:%s\n", system_get_sdk_version()); // rsa_api_unit_test(); os_printf("================= \n"); packet_test(); //json_test(); //aes_api_unit_test(); //os_printf("================= \n"); //crypto_api_unit_test(); return; struct station_config station_conf; wifi_station_get_config(&station_conf); os_printf(MACSTR ",%s,%s \n", MAC2STR(station_conf.bssid), station_conf.password, station_conf.ssid); //struct station_config { // uint8 ssid[32]; // uint8 password[64]; // uint8 bssid_set; // Note: If bssid_set is 1, station will just connect to the router // // with both ssid[] and bssid[] matched. Please check about this. // uint8 bssid[6]; //}; // 0c:4b:54:84:9e:2d t77y2qs4 //station_conf.bssid[0] = 0x0c; //station_conf.bssid[1] = 0x4b; //station_conf.bssid[2] = 0x54; //station_conf.bssid[3] = 0x84; //station_conf.bssid[4] = 0x9e; //station_conf.bssid[5] = 0x2d; station_conf.bssid_set = 0; //os_strcpy(station_conf.ssid, "hehao"); //os_strcpy(station_conf.password, "ziqiangbuxi"); wifi_station_set_config(&station_conf); wifi_station_get_config(&station_conf); os_printf(MACSTR ", %s, %s %d\n", MAC2STR(station_conf.bssid), station_conf.password, station_conf.ssid, station_conf.bssid_set); int8 id_buf[16] = {0}; flash_param_get_id(id_buf); os_printf("get id = %s \n", id_buf); if (0 == os_strcmp(id_buf, CONFIG_RESET_ID)) { os_printf("airkiss start ... \n"); smart_config_start(); user_switch_init(); os_timer_disarm(&status_timer); os_timer_setfn(&status_timer, (os_timer_func_t *)led_status_center, NULL); os_timer_arm(&status_timer, 2000, 0); single_key[0] = key_init_single(PLUG_KEY_0_IO_NUM, PLUG_KEY_0_IO_MUX, PLUG_KEY_0_IO_FUNC, key_long_press, key_short_press); keys.key_num = PLUG_KEY_NUM; keys.single_key = single_key; key_init(&keys); os_timer_disarm(&sys_timer); os_timer_setfn(&sys_timer, (os_timer_func_t *)system_secs_center, NULL); os_timer_arm(&sys_timer, 1000, 1); // 0 at once, 1 restart auto. switch_level = 0x01; user_switch_output(1); } else { schedule_create(0); } }
void ICACHE_FLASH_ATTR supla_esp_gpio_init(void) { switch_cfgbtn_state_check = 0; switch_cfgbtn_last_state = -1; switch_cfgbtn_counter = 0; #if defined(USE_GPIO3) || defined(UART_SWAP) system_uart_swap (); #endif ETS_GPIO_INTR_DISABLE(); GPIO_PORT_INIT; #ifdef USE_GPIO16_INPUT gpio16_input_conf(); #endif #ifdef USE_GPIO16_OUTPUT gpio16_output_conf(); #endif #ifdef USE_GPIO3 PIN_FUNC_SELECT(PERIPHS_IO_MUX_U0RXD_U, FUNC_GPIO3); PIN_PULLUP_DIS(PERIPHS_IO_MUX_U0RXD_U); #endif #ifdef BTN_PULLUP #if CFG_PORT == 0 PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO0_U); #elif CFG_PORT == 2 PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO2_U); #elif CFG_PORT == 4 PIN_PULLUP_EN(PERIPHS_IO_MUX_GPIO4_U); #elif CFG_PORT == 12 PIN_PULLUP_EN(PERIPHS_IO_MUX_MTDI_U); #elif CFG_PORT == 13 PIN_PULLUP_EN(PERIPHS_IO_MUX_MTCK_U); #elif CFG_PORT == 14 PIN_PULLUP_EN(PERIPHS_IO_MUX_MTMS_U); #endif #endif #ifdef LED_RED_PORT #if LED_RED_PORT != 16 gpio_pin_intr_state_set(GPIO_ID_PIN(LED_RED_PORT), GPIO_PIN_INTR_DISABLE); #endif #endif #ifdef LED_GREEN_PORT gpio_pin_intr_state_set(GPIO_ID_PIN(LED_GREEN_PORT), GPIO_PIN_INTR_DISABLE); #endif #ifdef LED_BLUE_PORT gpio_pin_intr_state_set(GPIO_ID_PIN(LED_BLUE_PORT), GPIO_PIN_INTR_DISABLE); #endif #ifdef RELAY1_PORT gpio_pin_intr_state_set(GPIO_ID_PIN(RELAY1_PORT), GPIO_PIN_INTR_DISABLE); #endif #ifdef RELAY2_PORT gpio_pin_intr_state_set(GPIO_ID_PIN(RELAY2_PORT), GPIO_PIN_INTR_DISABLE); #endif #ifdef ZAM_INPUT1 supla_esp_gpio_enable_input_port(ZAM_INPUT1); #endif #ifdef ZAM_INPUT2 supla_esp_gpio_enable_input_port(ZAM_INPUT2); #endif ETS_GPIO_INTR_ENABLE(); keys.key_num = 0; single_key[0] = key_init_single(CFG_PORT, supla_esg_gpio_cfg_pressed, supla_esg_gpio_manual_pressed); keys.key_num++; #if defined(BUTTON1_PORT) && defined(RELAY1_PORT) single_key[keys.key_num] = key_init_single(BUTTON1_PORT, NULL, supla_esg_gpio_button1_pressed); keys.key_num++; #endif #if defined(BUTTON1_PORT) && defined(RELAY1_PORT) single_key[keys.key_num] = key_init_single(BUTTON2_PORT, NULL, supla_esg_gpio_button2_pressed); keys.key_num++; #endif keys.single_key = single_key; keys.handler = supla_esp_key_intr_handler; #ifdef RELAY_STATE_RESTORE struct rst_info *rtc_info = system_get_rst_info(); #ifdef RELAY1_PORT if ( rtc_info->reason == 0 ) { supla_esp_gpio_relay1_hi(supla_esp_state.Relay1); } #endif #ifdef RELAY2_PORT if ( rtc_info->reason == 0 ) { supla_esp_gpio_relay2_hi(supla_esp_state.Relay2); } #endif #elif defined(RESET_RELAY_PORT) #ifdef RELAY1_PORT supla_esp_gpio_relay1_hi(RELAY_INIT_VALUE); #endif #ifdef RELAY2_PORT supla_esp_gpio_relay2_hi(RELAY_INIT_VALUE); #endif #endif key_init(&keys); GPIO_PORT_POST_INIT; supla_esp_gpio_init_time = system_get_time(); }
/****************************************************************************** * FunctionName : user_init * Description : entry of user application, init user function here * Parameters : none * Returns : none *******************************************************************************/ void ICACHE_FLASH_ATTR user_init(void) { uart_init(BIT_RATE_115200, BIT_RATE_115200); show_sysinfo(); rw_info rw; os_memset(&rw, 0, sizeof(rw_info)); if(!read_cfg_flash(&rw)) { rw.run_mode = MODE_SOFTAP; } if(!rw_check_hash(&rw)) { os_printf("rw check hash error\n"); rw.run_mode = MODE_SOFTAP; } else { show_rw(&rw); } //startup_ledshow(&rw); single_key[0] = key_init_single(13, PERIPHS_IO_MUX_MTCK_U, FUNC_GPIO13, user_btn_long_press, user_btn_short_press); keys.key_num = 1; keys.single_key = single_key; key_init(&keys); //DHTInit(SENSOR_DHT11, 5000); PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTMS_U,FUNC_GPIO14); gpio_output_set(0, 0, 0, BIT14); #if 0 if(rw.run_mode == MODE_STATION) { os_printf("run in client only mode\n"); wifi_set_opmode(STATION_MODE); struct station_config config; os_memset(&config, 0, sizeof(struct station_config)); os_strcpy(config.ssid, rw.ssid); os_strcpy(config.password, rw.ssid_pwd); /* need to sure that you are in station mode first, * otherwise it will be failed. */ wifi_station_set_config(&config); wifi_station_set_auto_connect(1); //启动定时器,每秒中检查,若连接到路由器,则连接云端 //若成功连接到云端,则关闭定时器 //若从云端断开连接,则重启定时器 restart_init_station_chk_timer(1000); } else if (rw.run_mode == MODE_SOFTAP) { set_softap_mode(); } os_printf("OVER\n"); os_timer_disarm(&server_listen_chk_timer); os_timer_setfn(&server_listen_chk_timer, listen_chk_timer_cb, &server_listen_chk_timer); os_timer_arm(&server_listen_chk_timer, 1000, 1); system_init_done_cb(init_over); #endif }