/** * @brief Execution commad of get module ip. * @param id: commad id number * @retval None */ void ICACHE_FLASH_ATTR at_exeCmdCifsr(uint8_t id)//add get station ip and ap ip { struct ip_info pTempIp; char temp[64]; if((at_wifiMode == SOFTAP_MODE)||(at_wifiMode == STATIONAP_MODE)) { wifi_get_ip_info(0x01, &pTempIp); os_sprintf(temp, "%d.%d.%d.%d\r\n", IP2STR(&pTempIp.ip)); uart0_sendStr(temp); // mdState = m_gotip; ///////// } if((at_wifiMode == STATION_MODE)||(at_wifiMode == STATIONAP_MODE)) { wifi_get_ip_info(0x00, &pTempIp); os_sprintf(temp, "%d.%d.%d.%d\r\n", IP2STR(&pTempIp.ip)); uart0_sendStr(temp); // mdState = m_gotip; ///////// } mdState = m_gotip; at_backOk; }
/* * 硬件平台相关,UDP监听端口数据接收处理函数 */ void wifilan_recv_callbk(void *arg, char *pdata, unsigned short len) { airkiss_lan_ret_t ret = airkiss_lan_recv(pdata, len, &akconf); airkiss_lan_ret_t packret; switch (ret) { case AIRKISS_LAN_SSDP_REQ: airkiss_udp.remote_port = DEFAULT_LAN_PORT; lan_buf_len = sizeof(lan_buf); packret = airkiss_lan_pack(AIRKISS_LAN_SSDP_RESP_CMD, DEVICE_TYPE, DEVICE_ID, 0, 0, lan_buf, &lan_buf_len, &akconf); if (packret != AIRKISS_LAN_PAKE_READY) { uart0_sendStr("Pack lan packet error!\r\n"); return; } packret = espconn_sent(&ptrairudpconn, lan_buf, lan_buf_len); if (packret != 0) { uart0_sendStr("LAN UDP Send err!\r\n"); } else { // close the udp 12476 } break; default: uart0_sendStr("Pack is not ssdq req!\r\n"); break; } }
void user_init(void) { //gpio_init(); uart_init(BIT_RATE_115200, BIT_RATE_115200); int at_wifiMode = wifi_get_opmode(); uart0_sendStr("\r\nCustom Server\r\n"); wifi_set_opmode( 2 ); //We broadcast our ESSID, wait for peopel to join. pTcpServer = (struct espconn *)os_zalloc(sizeof(struct espconn)); pTcpServer->type = ESPCONN_TCP; pTcpServer->state = ESPCONN_NONE; pTcpServer->proto.tcp = (esp_tcp *)os_zalloc(sizeof(esp_tcp)); pTcpServer->proto.tcp->local_port = PORT; espconn_regist_connectcb(pTcpServer, at_tcpserver_listen); espconn_accept(pTcpServer); espconn_regist_time(pTcpServer, SERVER_TIMEOUT, 0); printf("Hello, world. Starting server.\n" ); InitDumbcraft(); os_sprintf( my_server_name, "ESP8266Dumb" ); system_os_task(at_procTask, at_procTaskPrio, at_procTaskQueue, at_procTaskQueueLen); uart0_sendStr("\r\nCustom Server\r\n"); system_os_post(at_procTaskPrio, 0, 0 ); }
/** * @brief Test commad of start client. * @param id: commad id number * @retval None */ void ICACHE_FLASH_ATTR at_testCmdCipstart(uint8_t id) { char temp[64]; if(at_ipMux) { os_sprintf(temp, "%s:(\"type\"),(\"ip address\"),(port)\r\n", at_fun[id].at_cmdName); uart0_sendStr(temp); os_sprintf(temp, "%s:(\"type\"),(\"domain name\"),(port)\r\n", at_fun[id].at_cmdName); uart0_sendStr(temp); } else { os_sprintf(temp, "%s:(id)(\"type\"),(\"ip address\"),(port)\r\n", at_fun[id].at_cmdName); uart0_sendStr(temp); os_sprintf(temp, "%s:((id)\"type\"),(\"domain name\"),(port)\r\n", at_fun[id].at_cmdName); uart0_sendStr(temp); } at_backOk; }
void user_init(void) { uart_init(BIT_RATE_115200, BIT_RATE_115200); int at_wifiMode = wifi_get_opmode(); uart0_sendStr("\r\nCustom Server\r\n"); wifi_set_opmode( 2 ); //We broadcast our ESSID, wait for peopel to join. pUdpServer = (struct espconn *)os_zalloc(sizeof(struct espconn)); if (pUdpServer == NULL) { uart0_sendStr("UdpServer Failure\r\n"); return; } pUdpServer->type = ESPCONN_UDP; pUdpServer->state = ESPCONN_NONE; pUdpServer->proto.udp = (esp_udp *)os_zalloc(sizeof(esp_udp)); pUdpServer->proto.udp->local_port = PORT; pUdpServer->reverse = NULL; espconn_regist_recvcb(pUdpServer, at_udpserver_recv); espconn_accept(pUdpServer); char outbuffer[] = { 0xff, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff }; WS2812OutBuffer( outbuffer, sizeof(outbuffer) ); system_os_task(at_procTask, at_procTaskPrio, at_procTaskQueue, at_procTaskQueueLen); uart0_sendStr("\r\nCustom Server\r\n"); system_os_post(at_procTaskPrio, 0, 0 ); }
void ICACHE_FLASH_ATTR clear_interrupt(){ //clear interrupt status if(state_machine<3)return; uart0_sendStr("clear irq\n"); GPIO_REG_WRITE(GPIO_STATUS_W1TC_ADDRESS, GPIO_REG_READ(GPIO_STATUS_ADDRESS) ); as3935_chip_read(); switch(as3935.x3.a3.INT){ case IRQ_L: uart0_sendStr("as3935 lightning event \r\n"); //check if we are within treshold if(threshold_distance>as3935.x7.a7.DISTANCE){ //switch relay off //GPIO_OUTPUT_SET(GPIO_ID_PIN(RELAY_PIN),0); //sqedule further checking if(state_machine>2) state_machine=6; } break; case IRQ_D: uart0_sendStr("as3935 disturber detected \r\n"); break; case IRQ_NF: uart0_sendStr("as3935 noise lewel to high \r\n"); //todo: print to web page that we need to change settings break; } }
/** * @brief Setup commad of module as wifi ap. * @param id: commad id number * @param pPara: AT input param * @retval None */ void ICACHE_FLASH_ATTR at_setupCmdCwsap(uint8_t id, char *pPara) { char temp[64]; int8_t len; struct softap_config apConfig; wifi_softap_get_config(&apConfig); if(at_wifiMode == STATION_MODE) { at_backError; return; } pPara++; len = at_dataStrCpy(apConfig.ssid, pPara, 32); if(len < 1) { uart0_sendStr("ssid ERROR\r\n"); return; } pPara += (len+3); len = at_dataStrCpy(apConfig.password, pPara, 64); if(len < 8) { uart0_sendStr("pwd ERROR\r\n"); return; } pPara += (len+3); apConfig.channel = atoi(pPara); if(apConfig.channel<1 || apConfig.channel>13) { uart0_sendStr("ch ERROR\r\n"); return; } pPara++; pPara = strchr(pPara, ','); pPara++; apConfig.authmode = atoi(pPara); if(apConfig.authmode >= 5) { uart0_sendStr("s ERROR\r\n"); return; } // os_sprintf(temp,"%s,%s,%d,%d\r\n", // apConfig.ssid, // apConfig.password, // apConfig.channel, // apConfig.authmode); // uart0_sendStr(temp); ETS_UART_INTR_DISABLE(); wifi_softap_set_config(&apConfig); ETS_UART_INTR_ENABLE(); at_backOk; // system_restart(); }
/** * @brief Execution commad of version. * @param id: commad id number * @retval None */ void ICACHE_FLASH_ATTR at_exeCmdGmr(uint8_t id) { char temp[64]; os_sprintf(temp, AT_VERSION); uart0_sendStr(temp); os_sprintf(temp,"%s\r\n", system_get_sdk_version()); uart0_sendStr(temp); at_backOk; }
LOCAL void ICACHE_FLASH_ATTR info_cb(void *arg) { wdt_feed(); uart0_sendStr("System Info\r\n"); os_printf("Time=%ld\r\n", system_get_time()); os_printf("Chip id=%ld\r\n", system_get_chip_id()); os_printf("Free heap size=%ld\r\n", system_get_free_heap_size()); uart0_sendStr("Mem info:\r\n"); system_print_meminfo(); uart0_sendStr("\r\n"); }
void user_init(void) { uart_init(BIT_RATE_115200, BIT_RATE_115200); uart0_sendStr("\r\nesp8266 ws2812 driver\r\n"); // int opm = wifi_get_opmode(); // if( opm == 1 ) need_to_switch_opmode = 120; // wifi_set_opmode_current(2); //Uncomment this to force a system restore. // system_restore(); CSSettingsLoad( 0 ); CSPreInit(); pUdpServer = (struct espconn *)os_zalloc(sizeof(struct espconn)); ets_memset( pUdpServer, 0, sizeof( struct espconn ) ); espconn_create( pUdpServer ); pUdpServer->type = ESPCONN_UDP; pUdpServer->proto.udp = (esp_udp *)os_zalloc(sizeof(esp_udp)); pUdpServer->proto.udp->local_port = 7777; espconn_regist_recvcb(pUdpServer, udpserver_recv); if( espconn_create( pUdpServer ) ) { while(1) { uart0_sendStr( "\r\nFAULT\r\n" ); } } CSInit(); SetServiceName( "ws2812" ); AddMDNSName( "cn8266" ); AddMDNSName( "ws2812" ); AddMDNSService( "_http._tcp", "An ESP8266 Webserver", 80 ); AddMDNSService( "_ws2812._udp", "WS2812 Driver", 7777 ); AddMDNSService( "_cn8266._udp", "ESP8266 Backend", 7878 ); //Add a process system_os_task(procTask, procTaskPrio, procTaskQueue, procTaskQueueLen); //Timer example os_timer_disarm(&some_timer); os_timer_setfn(&some_timer, (os_timer_func_t *)myTimer, NULL); os_timer_arm(&some_timer, 100, 1); ws2812_init(); uint8_t ledout[] = { 0x00, 0xff, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00 }; ws2812_push( ledout, sizeof( ledout ) ); system_os_post(procTaskPrio, 0, 0 ); }
/** * @brief Execution commad of close ip link. * @param id: commad id number * @retval None */ void ICACHE_FLASH_ATTR at_exeCmdCipclose(uint8_t id) { char temp[64]; // if(mdState == m_linked) // { // // } if(at_ipMux) { uart0_sendStr("MUX=1\r\n"); return; } if(pLink[0].linkEn) { if(serverEn) { /* restart */ uart0_sendStr("we must restart\r\n"); return; } else { if(pLink[0].pCon->type == ESPCONN_TCP) { specialAtState = FALSE; espconn_disconnect(pLink[0].pCon); } else { pLink[0].linkEn = FALSE; espconn_delete(pLink[0].pCon); os_free(pLink[0].pCon->proto.udp); os_free(pLink[0].pCon); at_linkNum--; if(at_linkNum == 0) { mdState = m_unlink; at_backOk; uart0_sendStr("Unlink\r\n"); } } } } else { at_backError; } }
static void ICACHE_FLASH_ATTR at_busyTask(os_event_t *events) { switch(events->par) { case 1: uart0_sendStr("\r\nbusy p...\r\n"); break; case 2: uart0_sendStr("\r\nbusy s...\r\n"); break; } }
/** * @brief Transparent data through ip. * @param arg: no used * @retval None */ void ICACHE_FLASH_ATTR at_japChack(void *arg) { static uint8_t chackTime = 0; uint8_t japState; os_timer_disarm(&at_japDelayChack); chackTime++; japState = wifi_station_get_connect_status(); if(japState == STATION_GOT_IP) { chackTime = 0; at_backOk; specialAtState = TRUE; at_state = at_statIdle; return; } else if(chackTime >= 7) { wifi_station_disconnect(); chackTime = 0; uart0_sendStr("\r\nFAIL\r\n"); specialAtState = TRUE; at_state = at_statIdle; return; } os_timer_arm(&at_japDelayChack, 2000, 0); }
/** * @brief Through uart to update * @param id: commad id number * @retval None */ void ICACHE_FLASH_ATTR at_exeCmdUpdate(uint8_t id) { char temp[32]; updateFlagType upFlag; os_sprintf(temp,"Is about to restart\r\n"); uart0_sendStr(temp); spi_flash_read(60 * 4096, (uint32 *)&upFlag, sizeof(updateFlagType)); // os_printf("%X\r\n",upFlag.flag); // os_printf("%X\r\n",upFlag.reserve[0]); // os_printf("%X\r\n",upFlag.reserve[1]); // os_printf("%X\r\n",upFlag.reserve[2]); upFlag.flag = 1; spi_flash_erase_sector(60); spi_flash_write(60 * 4096, (uint32 *)&upFlag, sizeof(updateFlagType)); // spi_flash_read(60 * 4096, (uint32 *)&upFlag, sizeof(updateFlagType)); // os_printf("%X\r\n",upFlag.flag); // os_printf("%X\r\n",upFlag.reserve[0]); // os_printf("%X\r\n",upFlag.reserve[1]); // os_printf("%X\r\n",upFlag.reserve[2]); os_delay_us(10000); system_reboot_from(0x00); }
//Init function void ICACHE_FLASH_ATTR user_init() { uart_init(115200, 115200); os_delay_us(100); uart0_sendStr("*** Monitor mode test ***\r\n"); os_printf(" -> Promisc mode setup ... "); wifi_set_promiscuous_rx_cb(promisc_cb); wifi_promiscuous_enable(1); os_printf("done.\n"); os_printf(" -> Timer setup ... "); os_timer_disarm(&channelHop_timer); os_timer_setfn(&channelHop_timer, (os_timer_func_t *) channelHop, NULL); os_timer_arm(&channelHop_timer, CHANNEL_HOP_INTERVAL, 1); os_printf("done.\n"); os_printf(" -> Set opmode ... "); wifi_set_opmode( 0x1 ); os_printf("done.\n"); //Start os task system_os_task(loop, user_procTaskPrio,user_procTaskQueue, user_procTaskQueueLen); os_printf(" -> Init finished!\n\n"); }
/** * @brief Setup commad of set wifi mode. * @param id: commad id number * @param pPara: AT input param * @retval None */ void ICACHE_FLASH_ATTR at_setupCmdCwmode(uint8_t id, char *pPara) { uint8_t mode; char temp[32]; pPara++; mode = atoi(pPara); if(mode == at_wifiMode) { uart0_sendStr("no change\r\n"); return; } if((mode >= 1) && (mode <= 3)) { ETS_UART_INTR_DISABLE(); wifi_set_opmode(mode); ETS_UART_INTR_ENABLE(); at_backOk; // system_restart(); } else { at_backError; } }
/** * @brief Setup commad of set multilink mode. * @param id: commad id number * @param pPara: AT input param * @retval None */ void ICACHE_FLASH_ATTR at_setupCmdCipmux(uint8_t id, char *pPara) { uint8_t muxTemp; if(mdState == m_linked) { uart0_sendStr("link is builded\r\n"); return; } pPara++; muxTemp = atoi(pPara); if(muxTemp == 1) { at_ipMux = TRUE; } else if(muxTemp == 0) { at_ipMux = FALSE; } else { at_backError; return; } at_backOk; }
void ICACHE_FLASH_ATTR user_init(void) { gpio_init(); gpio_output_set(0, 0, 0, 0xFFFFFFFF); //init software uart Softuart_SetPinRx(&softuart,13); Softuart_SetPinTx(&softuart,15); gpio_pin_wakeup_disable(); PIN_FUNC_SELECT(PERIPHS_IO_MUX_MTDI_U,FUNC_GPIO12); UART_SetPrintPort(UART1); UartDev.data_bits = EIGHT_BITS; UartDev.parity = NONE_BITS; UartDev.stop_bits = ONE_STOP_BIT; uart_init(BIT_RATE_9600, BIT_RATE_115200); //clear noise uart0_sendStr("\r\n\r\n\r\n"); //wifi_set_phy_mode(3); system_phy_set_powerup_option(3); wifi_set_opmode(STATION_MODE); //Set station mode system_phy_set_max_tpw(82); //MAX POWERR! system_phy_set_tpw_via_vdd33(system_get_vdd33()); user_set_station_config(); os_timer_disarm(&init_timer); os_timer_setfn(&init_timer, (os_timer_func_t *)gps_uart_init, NULL); os_timer_arm(&init_timer, 1000, 0); }
void ICACHE_FLASH_ATTR at_setupCmdCifsr(uint8_t id, char *pPara) { struct ip_info pTempIp; int8_t len; char ipTemp[64]; // char temp[64]; if(at_wifiMode == STATION_MODE) { at_backError; return; } pPara = strchr(pPara, '\"'); len = at_dataStrCpy(ipTemp, pPara, 32); if(len == -1) { uart0_sendStr("IP ERROR\r\n"); return; } wifi_get_ip_info(0x01, &pTempIp); pTempIp.ip.addr = ipaddr_addr(ipTemp); os_printf("%d.%d.%d.%d\r\n", IP2STR(&pTempIp.ip)); if(!wifi_set_ip_info(0x01, &pTempIp)) { at_backError; return; } at_backOk; return; }
LOCAL void ICACHE_FLASH_ATTR at_tcpserver_listen(void *arg) { struct espconn *pespconn = (struct espconn *)arg; uint8_t i; printf("get tcpClient:\r\n"); for( i = 0; i < MAX_CONNS; i++ ) { if( connections[i].pespconn == 0 ) { break; } } if( i == MAX_CONNS ) { return; } connections[i].pespconn = pespconn; connections[i].cansend = 1; connections[i].id = i; pespconn->reverse = (void*)&connections[i]; espconn_regist_recvcb(pespconn, at_tcpclient_recv); espconn_regist_reconcb(pespconn, at_tcpserver_recon_cb); espconn_regist_disconcb(pespconn, at_tcpserver_discon_cb); espconn_regist_sentcb(pespconn, at_tcpclient_sent_cb); uart0_sendStr("Link\r\n"); AddPlayer( i ); }
/** * @brief Tcp client connect success callback function. * @param arg: contain the ip link information * @retval None */ static void ICACHE_FLASH_ATTR at_upDate_connect_cb(void *arg) { struct espconn *pespconn = (struct espconn *)arg; uint8_t user_bin[9] = {0}; // uint8_t devkey[41] = {0}; char *temp; uart0_sendStr("+CIPUPDATE:2\r\n"); // user_esp_platform_load_param(&esp_param); // os_memcpy(devkey, esp_param.devkey, 40); espconn_regist_disconcb(pespconn, at_upDate_discon_cb); espconn_regist_recvcb(pespconn, at_upDate_recv);//////// espconn_regist_sentcb(pespconn, at_upDate_sent_cb); // os_printf("at_upDate_connect_cb %p\r\n", arg); temp = (uint8 *) os_zalloc(512); os_sprintf(temp,"GET /v1/device/rom/?is_format_simple=true HTTP/1.0\r\nHost: "IPSTR":%d\r\n"pheadbuffer"", IP2STR(pespconn->proto.tcp->remote_ip), 80, KEY); espconn_sent(pespconn, temp, os_strlen(temp)); os_free(temp); ///////////////////////// }
/** * @brief Tcp server listend callback function. * @param arg: contain the ip link information * @retval None */ LOCAL void ICACHE_FLASH_ATTR at_tcpserver_listen(void *arg) { struct espconn *pespconn = (struct espconn *)arg; uint8_t i; os_printf("get tcpClient:\r\n"); for(i=0;i<at_linkMax;i++) { if(pLink[i].linkEn == FALSE) { pLink[i].linkEn = TRUE; break; } } if(i>=5) { return; } pLink[i].teToff = FALSE; pLink[i].linkId = i; pLink[i].teType = teServer; pLink[i].repeaTime = 0; pLink[i].pCon = pespconn; mdState = m_linked; at_linkNum++; pespconn->reverse = &pLink[i]; espconn_regist_recvcb(pespconn, at_tcpclient_recv); espconn_regist_reconcb(pespconn, at_tcpserver_recon_cb); espconn_regist_disconcb(pespconn, at_tcpserver_discon_cb); espconn_regist_sentcb(pespconn, at_tcpclient_sent_cb);/////// uart0_sendStr("Link\r\n"); }
/** * @brief Tcp client disconnect success callback function. * @param arg: contain the ip link information * @retval None */ static void ICACHE_FLASH_ATTR at_upDate_discon_cb(void *arg) { struct espconn *pespconn = (struct espconn *)arg; uint8_t idTemp; // if(pespconn == NULL) // { // return; // } if(pespconn->proto.tcp != NULL) { os_free(pespconn->proto.tcp); } if(pespconn != NULL) { os_free(pespconn); } os_printf("disconnect\r\n"); if(system_upgrade_start(upServer) == false) { // uart0_sendStr("+CIPUPDATE:0/r/n"); at_backError; specialAtState = TRUE; at_state = at_statIdle; } else { uart0_sendStr("+CIPUPDATE:4\r\n"); } }
/** * @brief Tcp server connect repeat callback function. * @param arg: contain the ip link information * @retval None */ static void ICACHE_FLASH_ATTR at_tcpserver_recon_cb(void *arg, sint8 errType) { struct espconn *pespconn = (struct espconn *)arg; at_linkConType *linkTemp = (at_linkConType *)pespconn->reverse; os_printf("S conect C: %p\r\n", arg); if(pespconn == NULL) { return; } linkTemp->linkEn = false; linkTemp->pCon = NULL; os_printf("con EN? %d\r\n", linkTemp->linkId); at_linkNum--; if (at_linkNum == 0) { mdState = m_unlink; ////////////////////// uart0_sendStr("Unlink\r\n"); disAllFlag = false; } if(linkTemp->teToff == TRUE) { linkTemp->teToff = FALSE; specialAtState = true; at_state = at_statIdle; at_backOk; } }
void ICACHE_FLASH_ATTR as3935_init(){ //we can only use uart for debugging no jtag in this iot devil //uart_div_modify(0, 115200); system_soft_wdt_stop(); uart0_sendStr("as3935_init function\n"); //we use i2c for communication with as3935 //justinitialize it in read and write functions //first inicialize chip spi_write(0x3c,0x96);//dc PRESET_DEFAULT //as3935_set_tuning_capacitor(3); //factory calibrated 3 and 12 //as3935_set_tuning_capacitor(12); spi_write(0x3d,0x96);//dc CALIB_RCO as3935_TRCO_calibration(); /*as3935_set_min_lightning_events(0);//REG0x02[5] REG0x02[4] 1(0),5(1),9(2),16(3) as3935_set_mask_disturbers(0);//after we are satified with operation just turn off by sending 1 as3935_set_AFE_gainboost(INDOOR); as3935_set_watchdog_thresold(1); as3935_set_spike_rejection(2); as3935_set_noise_floor_level(2);*/ as3935_set_mask_disturbers(1); system_soft_wdt_restart(); }
/** * @brief Query commad of join to wifi ap. * @param id: commad id number * @retval None */ void ICACHE_FLASH_ATTR at_queryCmdCwjap(uint8_t id) { char temp[64]; struct station_config stationConf; wifi_station_get_config(&stationConf); struct ip_info pTempIp; wifi_get_ip_info(0x00, &pTempIp); if(pTempIp.ip.addr == 0) { at_backError; // os_sprintf(temp, at_backTeError, 4); // uart0_sendStr(at_backTeError"4\r\n"); return; } mdState = m_gotip; if(stationConf.ssid != 0) { os_sprintf(temp, "%s:\"%s\"\r\n", at_fun[id].at_cmdName, stationConf.ssid); uart0_sendStr(temp); at_backOk; } else { at_backError; // os_sprintf(temp, at_backTeError, 5); // uart0_sendStr(at_backTeError"5\r\n"); } }
void user_init(void) { uart_init(BIT_RATE_115200, BIT_RATE_115200); //Add a process uart0_sendStr("Registering idle task...\r\n"); system_os_task(procTask, procTaskPrio, procTaskQueue, procTaskQueueLen); //Timer example uart0_sendStr("Starting timer task...\r\n"); os_timer_disarm(&some_timer); os_timer_setfn(&some_timer, (os_timer_func_t *)myProber, NULL); os_timer_arm(&some_timer, 50, 1); // Do this every 50ms uart0_sendStr("Starting idle task...\r\n"); system_os_post(procTaskPrio, 0, 0 ); }
/** * @brief Test commad of set wifi mode. * @param id: commad id number * @retval None */ void ICACHE_FLASH_ATTR at_testCmdCwmode(uint8_t id) { char temp[32]; os_sprintf(temp, "%s:(1-3)\r\n", at_fun[id].at_cmdName); uart0_sendStr(temp); at_backOk; }
/** * @brief Udp server receive data callback function. * @param arg: contain the ip link information * @retval None */ LOCAL void ICACHE_FLASH_ATTR at_udpserver_recv(void *arg, char *pusrdata, unsigned short len) { struct espconn *pespconn = (struct espconn *)arg; at_linkConType *linkTemp; char temp[32]; uint8_t i; os_printf("get udpClient:\r\n"); if(pespconn->reverse == NULL) { for(i = 0;i < at_linkMax;i++) { if(pLink[i].linkEn == FALSE) { pLink[i].linkEn = TRUE; break; } } if(i >= 5) { return; } pLink[i].teToff = FALSE; pLink[i].linkId = i; pLink[i].teType = teServer; pLink[i].repeaTime = 0; pLink[i].pCon = pespconn; espconn_regist_sentcb(pLink[i].pCon, at_tcpclient_sent_cb); mdState = m_linked; at_linkNum++; pespconn->reverse = &pLink[i]; uart0_sendStr("Link\r\n"); } linkTemp = (at_linkConType *)pespconn->reverse; if(pusrdata == NULL) { return; } os_sprintf(temp, "\r\n+IPD,%d,%d:", linkTemp->linkId, len); uart0_sendStr(temp); uart0_tx_buffer(pusrdata, len); at_backOk; }
static void ICACHE_FLASH_ATTR at_udpserver_recv(void *arg, char *pusrdata, unsigned short len) { struct espconn *pespconn = (struct espconn *)arg; WS2812OutBuffer( pusrdata, len ); uart0_sendStr("sent\r\n"); return; }