void ICACHE_FLASH_ATTR WIFI_Connect(uint8_t* ssid, uint8_t* pass, WifiCallback cb) { struct station_config stationConf; INFO("WIFI_INIT\r\n"); wifi_set_opmode(STATION_MODE); wifi_station_set_auto_connect(FALSE); wifiCb = cb; os_memset(&stationConf, 0, sizeof(struct station_config)); os_sprintf(stationConf.ssid, "%s", ssid); os_sprintf(stationConf.password, "%s", pass); wifi_station_set_config(&stationConf); os_timer_disarm(&WiFiLinker); os_timer_setfn(&WiFiLinker, (os_timer_func_t *)wifi_check_ip, NULL); os_timer_arm(&WiFiLinker, 1000, 0); wifi_station_set_auto_connect(TRUE); wifi_station_connect(); }
void ICACHE_FLASH_ATTR light_SendMeshBroadcastUpgrade(uint32 nonce,char* version,int pkt_len) { struct espconn* pconn = (struct espconn*)user_GetUserPConn(); uint8* pkt_upgrade = (uint8*)os_zalloc(pkt_len); if(pkt_upgrade == NULL) return; os_sprintf(pkt_upgrade,UPGRADE_BROADCAST_CMD,nonce,version); //data_send_buf(pconn, true, pkt_upgrade,os_strlen(pkt_upgrade),NULL,0); espconn_esp_sent(pconn, pkt_upgrade, os_strlen(pkt_upgrade),0); os_free(pkt_upgrade); pkt_upgrade = NULL; }
void ICACHE_FLASH_ATTR mesh_MacIdInit() { if(mdev_mac){ os_printf("Mesh mdev_mac: %s \r\n",mdev_mac); return; } mdev_mac = (char*)os_zalloc(ESP_MESH_JSON_DEV_MAC_ELEM_LEN+1); //uint32 MAC_FLG = READ_PERI_REG(0x3ff00054); uint8 mac_sta[6] = {0}; wifi_get_macaddr(STATION_IF, mac_sta); os_sprintf(mdev_mac,"\"mdev_mac\":\"%02X%02X%02X%02X%02X%02X\"",MAC2STR(mac_sta)); os_printf("Disp mdev_mac: %s\r\n",mdev_mac); }
void ICACHE_FLASH_ATTR mqttConnectedCb(uint32_t *args) { char topic[100]; MQTT_Client* client = (MQTT_Client*) args; mqttConnected = true; INFOP("MQTT is Connected to %s:%d\n", sysCfg.mqtt_host, sysCfg.mqtt_port); os_sprintf(topic, "/Raw/%s/set/#", sysCfg.device_id); INFOP("Subscribe to: %s\n", topic); MQTT_Subscribe(client, topic, 0); os_sprintf(topic, "/Raw/%s/+/set/filter", sysCfg.device_id); INFOP("Subscribe to: %s\n", topic); MQTT_Subscribe(client, topic, 0); MQTT_Subscribe(client, "/App/#", 0); publishDeviceInfo(client); publishData(client); os_timer_disarm(&switch_timer); os_timer_setfn(&switch_timer, (os_timer_func_t *) switchTimerCb, NULL); os_timer_arm(&switch_timer, 100, true); os_timer_disarm(&display_timer); os_timer_setfn(&display_timer, (os_timer_func_t *) displayCb, NULL); os_timer_arm(&display_timer, 2000, true); os_timer_disarm(&date_timer); os_timer_setfn(&date_timer, (os_timer_func_t *) dateTimerCb, NULL); os_timer_arm(&date_timer, 10 * 60 * 1000, false); //10 minutes os_timer_disarm(&transmit_timer); os_timer_setfn(&transmit_timer, (os_timer_func_t *) transmitCb, (void *) client); os_timer_arm(&transmit_timer, sysCfg.updates * 1000, true); lightOff(); }
// print various Wifi information into json buffer int ICACHE_FLASH_ATTR printWifiInfo(char *buff) { int len; //struct station_config stconf; wifi_station_get_config(&stconf); //struct softap_config apconf; wifi_softap_get_config(&apconf); uint8_t op = wifi_get_opmode() & 0x3; char *mode = wifiMode[op]; char *status = "unknown"; int st = wifi_station_get_connect_status(); if (st >= 0 && st < sizeof(connStatuses)) status = connStatuses[st]; int p = wifi_get_phy_mode(); char *phy = wifiPhy[p&3]; char *warn = wifiWarn[op]; if (op == 3) op = 4; // Done to let user switch to AP only mode from Soft-AP settings page, using only one set of warnings char *apwarn = wifiWarn[op]; char *apauth = apAuthMode[apconf.authmode]; sint8 rssi = wifi_station_get_rssi(); if (rssi > 0) rssi = 0; uint8 mac_addr[6]; uint8 apmac_addr[6]; wifi_get_macaddr(0, mac_addr); wifi_get_macaddr(1, apmac_addr); uint8_t chan = wifi_get_channel(); len = os_sprintf(buff, "\"mode\": \"%s\", \"modechange\": \"%s\", \"ssid\": \"%s\", \"status\": \"%s\", \"phy\": \"%s\", " "\"rssi\": \"%ddB\", \"warn\": \"%s\", \"apwarn\": \"%s\",\"mac\":\"%02x:%02x:%02x:%02x:%02x:%02x\", \"chan\":\"%d\", \"apssid\": \"%s\", " "\"appass\": \"%s\", \"apchan\": \"%d\", \"apmaxc\": \"%d\", \"aphidd\": \"%s\", \"apbeac\": \"%d\", \"apauth\": \"%s\",\"apmac\":\"%02x:%02x:%02x:%02x:%02x:%02x\"", mode, MODECHANGE, (char*)stconf.ssid, status, phy, rssi, warn, apwarn, mac_addr[0], mac_addr[1], mac_addr[2], mac_addr[3], mac_addr[4], mac_addr[5], chan, (char*)apconf.ssid,(char*)apconf.password,apconf.channel,apconf.max_connection,apconf.ssid_hidden?"enabled":"disabled",apconf.beacon_interval, apauth,apmac_addr[0], apmac_addr[1], apmac_addr[2], apmac_addr[3], apmac_addr[4], apmac_addr[5]); struct ip_info info; if (wifi_get_ip_info(0, &info)) { len += os_sprintf(buff+len, ", \"ip\": \"%d.%d.%d.%d\"", IP2STR(&info.ip.addr)); len += os_sprintf(buff+len, ", \"netmask\": \"%d.%d.%d.%d\"", IP2STR(&info.netmask.addr)); len += os_sprintf(buff+len, ", \"gateway\": \"%d.%d.%d.%d\"", IP2STR(&info.gw.addr)); len += os_sprintf(buff+len, ", \"hostname\": \"%s\"", flashConfig.hostname); } else { len += os_sprintf(buff+len, ", \"ip\": \"-none-\""); } len += os_sprintf(buff+len, ", \"staticip\": \"%d.%d.%d.%d\"", IP2STR(&flashConfig.staticip)); len += os_sprintf(buff+len, ", \"dhcp\": \"%s\"", flashConfig.staticip > 0 ? "off" : "on"); return len; }
static void topicGetKeys( v_entity e, c_voidp arg) { c_array keyList = v_topicMessageKeyList(e); gapi_char **keys = (gapi_char **) arg; gapi_char *ptr; c_ulong i; c_ulong size; c_ulong total = 0; c_ulong len = 0; size = c_arraySize(keyList); for ( i = 0; i < size; i++ ) { total += strlen(c_fieldName(keyList[i])) + 1; } if ( total > 0 ) { *keys = (gapi_char *)os_malloc(total); memset(*keys, 0, total); } else { *keys = (gapi_char *)os_malloc(1); **keys = '\0'; } ptr = *keys; for ( i = 0; i < size; i++ ) { if ( i == 0 ) { len = os_sprintf(ptr, "%s", keyNameFromField(keyList[i])); } else { len = os_sprintf(ptr, ",%s", keyNameFromField(keyList[i])); } ptr = &(ptr[len]); } }
static void ICACHE_FLASH_ATTR connect_callback(void * arg) { PRINTF("Connected\n"); struct espconn * conn = (struct espconn *)arg; request_args * req = (request_args *)conn->reverse; espconn_regist_recvcb(conn, receive_callback); espconn_regist_sentcb(conn, sent_callback); const char * method = "GET"; char post_headers[32] = ""; if (req->post_data != NULL) { // If there is data this is a POST request. method = "POST"; os_sprintf(post_headers, "Content-Length: %d\r\n", strlen(req->post_data)); } char buf[69 + strlen(method) + strlen(req->path) + strlen(req->hostname) + strlen(req->headers) + strlen(post_headers)]; int len = os_sprintf(buf, "%s %s HTTP/1.1\r\n" "Host: %s:%d\r\n" "Connection: close\r\n" "User-Agent: ESP8266\r\n" "%s" "%s" "\r\n", method, req->path, req->hostname, req->port, req->headers, post_headers); if (req->secure) espconn_secure_sent(conn, (uint8_t *)buf, len); else espconn_sent(conn, (uint8_t *)buf, len); os_free(req->headers); req->headers = NULL; PRINTF("Sending request header\n"); }
static void ICACHE_FLASH_ATTR connect_callback(void * arg) { HTTP_DEBUG("Connected\n"); struct espconn * conn = (struct espconn *)arg; request_args * req = (request_args *)conn->reverse; espconn_regist_recvcb(conn, receive_callback); espconn_regist_sentcb(conn, sent_callback); const char * method = "GET"; char post_headers[128] = ""; if (req->post_data != NULL) { // If there is data this is a POST request. method = "POST"; os_sprintf(post_headers, "Content-Type: application/x-www-form-urlencoded\r\n" "Content-Length: %d\r\n", strlen(req->post_data)); } char buf[2048]; int len = os_sprintf(buf, "%s %s HTTP/1.1\r\n" "Host: %s:%d\r\n" "Connection: close\r\n" "User-Agent: ESP8266\r\n" "%s" "\r\n", method, req->path, req->hostname, req->port, post_headers); sint8 espsent_status = espconn_sent(conn, (uint8_t *)buf, len); if(espsent_status == ESPCONN_OK) { HTTP_DEBUG("Data sent, buf = %s\n", buf); } else { HTTP_DEBUG("Error while sending data.\n"); } HTTP_DEBUG("Sending request header\n"); }
int ICACHE_FLASH_ATTR cgiEnv(HttpdConnData *connData) { char buff[2048]; int len=0; httpdStartResponse(connData, 200); httpdHeader(connData, "Content-Type", "application/json"); httpdHeader(connData, "Access-Control-Allow-Origin", "*"); httpdEndHeaders(connData); if (connData->conn==NULL) { //Connection aborted. Clean up. return HTTPD_CGI_DONE; } //os_strcpy(buff, "Unknown"); //os_strcpy(temp, "N/A"); //os_strcpy(humi, "N/A"); len=httpdFindArg(connData->getArgs, "param", buff, sizeof(buff)); if (len>0) { if(os_strcmp(buff,"temp")==0) { len=os_sprintf(buff, "%d",tempF); httpdSend(connData, buff, -1); tempF = tempF - 2; hudP = hudP + 2; os_printf("\nTemp val = %d\n",tempF); } if(os_strcmp(buff,"hud")==0) { len=os_sprintf(buff, "%d",hudP); httpdSend(connData, buff, -1); hudP = hudP - 2; tempF = tempF + 2; os_printf("\nHud val = %d\n",hudP); } } return HTTPD_CGI_DONE; }
i2c_status ICACHE_FLASH_ATTR tc_read(i2c_config *config) { tc_config_data *config_data = (tc_config_data *)config->data; i2c_master_start(); /* Send address */ i2c_master_writeByte(config->address << 1 | 0); if (i2c_master_getAck()) { i2c_master_stop(); return I2C_ADDRESS_NACK; } /* Send command */ i2c_master_writeByte(0x21); if (i2c_master_getAck()) { i2c_master_stop(); return I2C_DATA_NACK; } i2c_master_stop(); i2c_master_start(); i2c_master_writeByte(config->address << 1 | 1); if (i2c_master_getAck()) { i2c_master_stop(); return I2C_ADDRESS_NACK; } uint8 i; uint8 data[4]; for (i=0; i < 4; i++) { data[i] = i2c_master_readByte(); i2c_master_setAck(i == 3); } i2c_master_stop(); if ((data[2] & 0x01) != 0) { return I2C_COMMUNICATION_FAILED; } sint16 d = data[3] * 256 + (data[2] & 0xFC); float tf = 0.0625 * d; int ti = tf; uint16 td = (tf - ti) * 100; config_data->temperature = d / 4; os_sprintf(config_data->temperature_str, "%d.%02d", ti, td); return I2C_OK; }
int ICACHE_FLASH_ATTR cgiPropLoad(HttpdConnData *connData) { PropellerConnection *connection = &myConnection; // check for the cleanup call if (connData->conn == NULL) return HTTPD_CGI_DONE; if (connection->state != stIdle) { char buf[128]; os_sprintf(buf, "Transfer already in progress: state %s\r\n", stateName(connection->state)); httpdSendResponse(connData, 400, buf, -1); return HTTPD_CGI_DONE; } connData->cgiData = connection; connection->connData = connData; os_timer_setfn(&connection->timer, timerCallback, connection); if (connData->post->len == 0) { httpdSendResponse(connData, 400, "No data\r\n", -1); abortLoading(connection); return HTTPD_CGI_DONE; } else if (connData->post->buffLen != connData->post->len) { httpdSendResponse(connData, 400, "Data too large\r\n", -1); return HTTPD_CGI_DONE; } if (!getIntArg(connData, "baud-rate", &connection->baudRate)) connection->baudRate = flashConfig.loader_baud_rate; if (!getIntArg(connData, "final-baud-rate", &connection->finalBaudRate)) connection->finalBaudRate = flashConfig.baud_rate; if (!getIntArg(connData, "reset-pin", &connection->resetPin)) connection->resetPin = flashConfig.reset_pin; if (!getIntArg(connData, "response-size", &connection->responseSize)) connection->responseSize = 0; if (!getIntArg(connData, "response-timeout", &connection->responseTimeout)) connection->responseTimeout = 1000; DBG("load: size %d, baud-rate %d, final-baud-rate %d, reset-pin %d\n", connData->post->buffLen, connection->baudRate, connection->finalBaudRate, connection->resetPin); if (connection->responseSize > 0) DBG(" responseSize %d, responseTimeout %d\n", connection->responseSize, connection->responseTimeout); connection->file = NULL; startLoading(connection, (uint8_t *)connData->post->buff, connData->post->buffLen); return HTTPD_CGI_MORE; }
void ftoa(double val, char *buff) { char smallBuff[16]; char smallBuff_tmp[16]; int val1 = (int) val; int val2 = (int) (100.0 * val) % 100; unsigned int uval2; if (val < 0) { uval2 = (int) (-100.0 * val) % 100; } else { uval2 = (int) (100.0 * val) % 100; } if (uval2 < 10) { os_sprintf(smallBuff, "%i.0%u", val1, uval2); } else { os_sprintf(smallBuff, "%i.%u", val1, uval2); } if(val2 < 0 && val1 == 0) { os_sprintf(smallBuff_tmp, "-%s", smallBuff); strcat(buff, smallBuff_tmp); } else { strcat(buff, smallBuff); } }
LOCAL void ICACHE_FLASH_ATTR mod_led_8x8_rgb_preferences_set() { char preferences[WEBSERVER_MAX_VALUE]; os_sprintf( preferences, "{" "\"cols\": %d, " "\"rows\": %d, " "\"Speed\": %d" "}", mod_led_8x8_cols, mod_led_8x8_rows, mod_led_8x8_speed ); preferences_set(MOD_LED8x8RGB, preferences); }
void ICACHE_FLASH_ATTR debug_FlashSvExceptInfo(struct rst_info* pInfo) { debug_FlashBufInit(); uint8 InfoBuf[200]; os_memset(InfoBuf,0,200); //os_sprintf("reason:%d,"); uint8* ptmp = InfoBuf; os_sprintf(ptmp,"reset reason:%x\n", pInfo->reason); ptmp+=os_strlen(ptmp); if (pInfo->reason == REASON_WDT_RST || pInfo->reason == REASON_EXCEPTION_RST || pInfo->reason == REASON_SOFT_WDT_RST) { if (pInfo->reason == REASON_EXCEPTION_RST) { os_sprintf(ptmp,"Fatal exception (%d):\n", pInfo->exccause); ptmp += os_strlen(ptmp); } os_sprintf(ptmp,"debug_version:%d\r\n",FlashDebugBufParam.DebugVersion); ptmp+=os_strlen(ptmp); os_sprintf(ptmp,"epc1=0x%08x, epc2=0x%08x, epc3=0x%08x, excvaddr=0x%08x, depc=0x%08x\r\n", pInfo->epc1, pInfo->epc2, pInfo->epc3, pInfo->excvaddr, pInfo->depc); ptmp+=os_strlen(ptmp); } int len = os_strlen(InfoBuf); uint8 pad_len = 0; if(len%4 != 0){ pad_len = 4 - (len%4); os_memcpy(ptmp," ",pad_len); } len += pad_len; debug_PrintToFlash(InfoBuf,len); }
S32 WpaCore_StartWpsPIN(THandle hWpaCore) { TWpaCore* pWpaCore = (TWpaCore*)hWpaCore; S8 cmd[100]; pWpaCore->WpaSupplParams.WscMode = WSC_MODE_PIN; #ifdef SUPPL_WPS_SUPPORT os_sprintf(cmd, "WPS_PIN any"); IpcWpa_Command(pWpaCore->hIpcWpa, cmd, TRUE); #endif return OK; }
wchar_t* String::copyValue(wchar_t* _pwstData) { try { return os_wcsdup(_pwstData); } catch (std::bad_alloc & /*e*/) { char message[bsiz]; os_sprintf(message, _("Can not allocate data.\n")); throw ast::InternalError(message); } return NULL; }
static int ICACHE_FLASH_ATTR cgiWiFiGetScan(HttpdConnData *connData) { char buff[2048]; int len; jsonHeader(connData, 200); if (cgiWifiAps.scanInProgress==1) { //We're still scanning. Tell Javascript code that. len = os_sprintf(buff, "{\n \"result\": { \n\"inProgress\": \"1\"\n }\n}\n"); httpdSend(connData, buff, len); return HTTPD_CGI_DONE; } len = os_sprintf(buff, "{\"result\": {\"inProgress\": \"0\", \"APs\": [\n"); for (int pos=0; pos<cgiWifiAps.noAps; pos++) { len += os_sprintf(buff+len, "{\"essid\": \"%s\", \"rssi\": %d, \"enc\": \"%d\"}%s\n", cgiWifiAps.apData[pos]->ssid, cgiWifiAps.apData[pos]->rssi, cgiWifiAps.apData[pos]->enc, (pos==cgiWifiAps.noAps-1)?"":","); } len += os_sprintf(buff+len, "]}}\n"); //os_printf("Sending %d bytes: %s\n", len, buff); httpdSend(connData, buff, len); return HTTPD_CGI_DONE; }
void ICACHE_FLASH_ATTR user_init(void) { char buf[64] = {0}; at_customLinkMax = 5; at_init(); os_sprintf(buf,"compile time:%s %s",__DATE__,__TIME__); at_set_custom_info(buf); at_port_print("\r\nready\r\n"); at_cmd_array_regist(&at_custom_cmd[0], sizeof(at_custom_cmd)/sizeof(at_custom_cmd[0])); at_port_print("\r\n***==================================***"); at_port_print("\r\n*** Welcome to at espconn demo!!! ***"); at_port_print("\r\n*** Please create a TCP Server on PC,***"); at_port_print("\r\n*** then enter command AT+TEST. ***"); at_port_print("\r\n***==================================***\r\n"); }
void ICACHE_FLASH_ATTR load_config() { os_printf("size of config=%d 0x%08x\n",sizeof(config), sizeof(config)); spi_flash_read(CONFIG_ADDR, (uint32*)&config, sizeof(config)); if (config.magic != CONFIG_MAGIC) { os_memset(&config,0,sizeof(config)); } if (!config.myname[0]) { uint8 mac[6]; wifi_get_macaddr(STATION_IF, mac); os_sprintf(config.myname,"esp8266-%02x%02x%02x",mac[3],mac[4],mac[5]); } }
//Template code for the counter on the index page. int ICACHE_FLASH_ATTR tplCounter(HttpdConnData *connData, char *token, void **arg) { char buff[20] = ""; if (token==NULL) return HTTPD_CGI_DONE; if (os_strcmp(token, "counter")==0) { hitCounter++; os_sprintf(buff, "%ld", hitCounter); } if (os_strcmp(token, "myname")==0) { hitCounter++; os_strcpy(buff,config.myname); } httpdSend(connData, buff, -1); return HTTPD_CGI_DONE; }
/* Could require up to 16 bytes */ char * ip2str_i ( char *buf, unsigned int ip ) { int n1, n2, n3, n4; n1 = ip & 0xff; ip >>= 8; n2 = ip & 0xff; ip >>= 8; n3 = ip & 0xff; ip >>= 8; n4 = ip & 0xff; os_sprintf ( buf, "%d.%d.%d.%d", n1, n2, n3, n4 ); return buf; }
//Template code for the DS18b20 page. void ICACHE_FLASH_ATTR tplDS18b20 (HttpdConnData *connData, char *token, void **arg) { char buff[384]; if (token==NULL) return; os_strcpy(buff, "Unknown"); if (os_strcmp(token, "numds")==0) { os_sprintf( buff,"%d", numds); } if (os_strcmp(token, "temperatures")==0) { int Treading, SignBit, Whole, Fract; os_strcpy(buff, ""); for(int i=0; i<numds; i++) { if(dsreading[i].success) { Treading = dsreading[i].temperature; SignBit = Treading & 0x8000; // test most sig bit if (SignBit) // negative Treading = (Treading ^ 0xffff) + 1; // 2's comp Whole = Treading >> 4; // separate off the whole and fractional portions Fract = (Treading & 0xf) * 100 / 16; if (SignBit) // negative Whole*=-1; os_sprintf( buff+strlen(buff) ,"Sensor %d (%02x %02x %02x %02x %02x %02x %02x %02x) reading is %d.%d°C<br />", i+1, addr[i][0], addr[i][1], addr[i][2], addr[i][3], addr[i][4], addr[i][5], addr[i][6], addr[i][7], Whole, Fract < 10 ? 0 : Fract); } else {
void ICACHE_FLASH_ATTR network_check_ip(void) { struct ip_info ipconfig; os_timer_disarm(&network_timer); wifi_get_ip_info(STATION_IF, &ipconfig); if (wifi_station_get_connect_status() == STATION_GOT_IP && ipconfig.ip.addr != 0) { char page_buffer[20]; os_sprintf(page_buffer,"IP: %d.%d.%d.%d",IP2STR(&ipconfig.ip)); os_sprintf(ipstation, "%d.%d.%d.%d",IP2STR(&ipconfig.ip)); os_printf(page_buffer); ServerInit(flashData->ServerPort); //GetNetworkTime(); os_printf("SNTP-----%d", flashData->SNTP); sntp_init(flashData->SNTP); } else { counter++; os_printf("No ip found\n\r"); if (counter < 12) { os_timer_setfn(&network_timer, (os_timer_func_t *)network_check_ip, NULL); os_printf("try %d\n", counter); os_timer_arm(&network_timer, 1000, 0); } else { os_printf("could not connect to server\n", counter); wifi_station_disconnect(); ServerInit(flashData->ServerPort); counter = 0; } } }
// Cgi to return choice of pin assignments int ICACHE_FLASH_ATTR cgiPinsGet(HttpdConnData *connData) { if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted char buff[1024]; int len; len = os_sprintf(buff, "{ \"reset\":%d, \"isp\":%d, \"conn\":%d, \"ser\":%d, \"swap\":%d, \"rxpup\":%d }", flashConfig.reset_pin, flashConfig.isp_pin, flashConfig.conn_led_pin, flashConfig.ser_led_pin, !!flashConfig.swap_uart, 1); jsonHeader(connData, 200); httpdSend(connData, buff, len); return HTTPD_CGI_DONE; }
int ICACHE_FLASH_ATTR cgiRadioConnStatus(HttpdConnData *connData) { char buff[1024]; int len; if (connData->conn==NULL) return HTTPD_CGI_DONE; // Connection aborted. Clean up. jsonHeader(connData, 200); len = os_sprintf(buff, "{"); len += printRadioStatus(buff+len); len += os_sprintf(buff+len, ", "); // if (radioReason != 0) { // len += os_sprintf(buff+len, "\"reason\": \"%s\", ", radioGetReason()); // } #if 0 // commented out 'cause often the client that requested the change can't get a request in to // find out that it succeeded. Better to just wait the std 15 seconds... // int st=radio_station_get_connect_status(); // if (st == STATION_GOT_IP) { // if (radio_get_opmode() != 1) { // // Reset into AP-only mode sooner. // } }
//============================================================================================================================ void ICACHE_FLASH_ATTR setup_wifi_st_mode(void) { wifi_set_opmode(STATION_MODE); struct station_config stconfig; wifi_station_disconnect(); wifi_station_dhcpc_stop(); if(wifi_station_get_config(&stconfig)) { os_memset(stconfig.ssid, 0, sizeof(stconfig.ssid)); os_memset(stconfig.password, 0, sizeof(stconfig.password)); os_sprintf(stconfig.ssid, "%s", configs.hwSettings.wifi.SSID); os_sprintf(stconfig.password, "%s", configs.hwSettings.wifi.SSID_PASS); ets_uart_printf("\r\nSTA SSID:%s", configs.hwSettings.wifi.SSID); ets_uart_printf("\r\nSTA SSIDPAS:%s\r\n", configs.hwSettings.wifi.SSID_PASS); if(!wifi_station_set_config(&stconfig)) { ets_uart_printf("ESP8266 not set station config!\r\n"); } } wifi_station_connect(); wifi_station_dhcpc_start(); wifi_station_set_auto_connect(1); ets_uart_printf("ESP8266 in STA mode configured.\r\n"); }
//upload debug info to esp-server void ICACHE_FLASH_ATTR debug_UploadExceptionInfo(void* arg) { struct espconn *pespconn = (struct espconn *)arg; ESP_DBG("reset reason: %x\n", rtc_info_dbg.reason); uint8 debug_upload_buf[DEBUG_UPLOAD_BUF_LEN]; uint8* pInfo = debug_upload_buf; os_memset(debug_upload_buf,0,DEBUG_UPLOAD_BUF_LEN); uint8 devkey[41]; os_memset(devkey,0,sizeof(devkey)); user_esp_platform_get_devkey(devkey); if (rtc_info_dbg.reason == REASON_WDT_RST || rtc_info_dbg.reason == REASON_EXCEPTION_RST || rtc_info_dbg.reason == REASON_SOFT_WDT_RST) { os_sprintf(pInfo,UPLOAD_DEBUG_LOG,rtc_info_dbg.reason,rtc_info_dbg.exccause,rtc_info_dbg.epc1, rtc_info_dbg.epc2,rtc_info_dbg.epc3,rtc_info_dbg.excvaddr, rtc_info_dbg.depc,FlashDebugBufParam.DebugVersion ,devkey); }else{ return; } #if ESP_MESH_SUPPORT mesh_json_add_elem(pInfo, sizeof(pInfo), (char*)mesh_GetMdevMac(), ESP_MESH_JSON_DEV_MAC_ELEM_LEN); #endif uint8 *dst = NULL,*src = NULL; #if ESP_MESH_SUPPORT uint8 dst_t[6],src_t[6]; if(pespconn && pespconn->proto.tcp){ os_memcpy(dst_t,pespconn->proto.tcp->remote_ip,4); os_memcpy(dst_t+4,&pespconn->proto.tcp->remote_port,2); } wifi_get_macaddr(STATION_IF,src_t); dst = dst_t; src = src_t; #endif ESP_DBG("debug Info: %s \r\n",pInfo); if(0 == user_JsonDataSend(pespconn, pInfo, os_strlen(pInfo),0,src,dst)){ debug_DropExceptionInfo(); ESP_DBG("upload success...\r\n"); }else{ ESP_DBG("upload fail...\r\n"); } }
void ICACHE_FLASH_ATTR user_event_build(char *event, char *url, char *data) { char url_quote[2] = "\""; if (url == NULL) { url_quote[0] = '\0'; } os_sprintf( event, "{\"EventURL\" : %s%s%s, \"EventData\" : %s}", url_quote, url == NULL ? "null" : url, url_quote, data ); }
char* sntp_asctime_r(struct tm *tim_p ,char *result) { static const char day_name[7][4] = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" }; static const char mon_name[12][4] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" }; os_sprintf (result, "%s %s %02d %02d:%02d:%02d %02d\n", day_name[tim_p->tm_wday], mon_name[tim_p->tm_mon], tim_p->tm_mday, tim_p->tm_hour, tim_p->tm_min, tim_p->tm_sec, 1900 + tim_p->tm_year); return result; }
void ICACHE_FLASH_ATTR display_redraw(void) { char page_buffer[20]; //Clear the lcd LCD_clear(); //Draw the page from the buffer display_draw_page(display_page); //Draw page counter LCD_setCursor(17,3); os_sprintf(page_buffer, "%i/%i",display_page,DISPLAY_PAGE_MAX); LCD_print(page_buffer); }