资源简介
实现乐鑫esp8266的无线OTA升级,实现远程在线升级固件。
代码片段和文件信息
/******************************************************************************/
/* ESP8266 Family */
/* JiaXin */
/******************************************************************************/
#include “osapi.h“
#include “mem.h“
#include “upgrade.h“
#include “user_interface.h“
#include “ota_update.h“
#include “espconn.h“
struct EspconnUpdateTransferData {
//// 请求参数 ////
unsigned short remotePort;
char* host;
char* filename;
};
#define INET_ADDRSTRLEN 18
////////////////////////////////////////////////////////////////////////////////
bool ICACHE_FLASH_ATTR getIpArray(char* host char *server_ip)
{
if(NULL == server_ip) {
return false;
}
char tmp[4];
char *ptr = NULL;
char *divStr = “.“;
int i = 0;
ptr = strtok(host divStr);
while (ptr != NULL) {
strncpy(tmp ptr strlen(ptr));
int ip_int = atoi(tmp);
if (ip_int < 0 || ip_int > 255) {
return false;
}
server_ip[i] = ip_int;
ptr = strtok(NULL divStr);
if(NULL != ptr) {
++i;
}
}
if(i != 3) {
return false;
}
char output[32];
os_sprintf(output “getIpAddr(): “IPSTR“\r\n“ IP2STR(server_ip));
uart0_sendStr(output);
return true;
}
void ICACHE_FLASH_ATTR getIpAddrString(ip_addr_t *ipaddr char *ip)
{
memset(ip 0 INET_ADDRSTRLEN);
os_sprintf(ip IPSTR ip4_addr1(ipaddr) ip4_addr2(ipaddr) ip4_addr3(ipaddr) ip4_addr4(ipaddr));
}
bool ICACHE_FLASH_ATTR http_parse_request_url(char *URL char *host int hostSizechar *filename int nameSize unsigned short *port) {
char *PA;
char *PB;
memset(host 0 hostSize);
memset(filename 0 nameSize);
*port = 0;
if (!(*URL)){
uart0_sendStr(“\r\n ----- URL return ----- \r\n“);
return false;
}
PA = URL;
if (!strncmp(PA “http://“ strlen(“http://“))) {
PA = URL + strlen(“http://“);
} else if (!strncmp(PA “https://“ strlen(“https://“))) {
PA = URL + strlen(“https://“);
}
PB = strchr(PA ‘/‘);
if (PB) {
uart0_sendStr(“\r\n ----- PB=true ----- \r\n“);
memcpy(host PA strlen(PA) - strlen(PB));
if (PB + 1) {
memcpy(filename PB + 1 strlen(PB - 1));
filename[strlen(PB) - 1] = 0;
}
host[strlen(PA) - strlen(PB)] = 0;
//uart0_log(host);
} else {
uart0_sendStr(“\r\n ----- PB=false ----- \r\n“);
memcpy(host PA strlen(PA));
host[strlen(PA)] = 0;
//uart0_log(host);
}
PA = strchr(host ‘:‘);
if (PA){
*port = atoi(PA + 1);
host[PA - host] = 0;
}else{
*port = 80;
}
char buf[500];
os_sprintf(buf “---PARSE URL host[%s] filename[%s] port[%u]\r\n“ host filename *port);
uart0_sendStr(buf);
return true;
}
////////////////////////////////////////////////////////////////////////////////
void ICACHE_FLASH_ATTR freeTcpConn(struct espconn *pTcp_conn)
{
if(NULL != pTcp_conn) {
struct EspconnUpdateTransferData * pData = pTcp_conn->reverse;
if(NULL != pData) {
if(NULL != pData->filename) {
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 8251 2018-10-10 11:25 ota_update.c
文件 663 2018-10-10 10:41 ota_update.h
目录 0 2018-04-26 12:06 19_Esp8266_OTA_NONOS\
文件 3719 2018-04-26 12:06 19_Esp8266_OTA_NONOS\.cproject
文件 798 2018-04-26 12:06 19_Esp8266_OTA_NONOS\.project
目录 0 2018-04-26 12:06 19_Esp8266_OTA_NONOS\.settings\
目录 0 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\
目录 0 2018-04-26 12:06 19_Esp8266_OTA_NONOS\app\.output\
目录 0 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\.output\eagle\
目录 0 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\.output\eagle\debug\
目录 0 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\.output\eagle\debug\bin\
目录 0 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\.output\eagle\debug\image\
文件 337118 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\.output\eagle\debug\image\eagle.app.v6.out
文件 3080 2018-02-06 04:45 19_Esp8266_OTA_NONOS\app\gen_misc.bat
文件 3788 2018-02-06 04:45 19_Esp8266_OTA_NONOS\app\gen_misc.sh
目录 0 2018-04-26 12:04 19_Esp8266_OTA_NONOS\app\include\
文件 1296 2018-02-06 04:45 19_Esp8266_OTA_NONOS\app\include\user_config.h
文件 2814 2018-02-06 04:45 19_Esp8266_OTA_NONOS\app\Makefile
目录 0 2018-04-26 14:41 19_Esp8266_OTA_NONOS\app\user\
目录 0 2018-04-26 12:06 19_Esp8266_OTA_NONOS\app\user\.output\
目录 0 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\user\.output\eagle\
目录 0 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\user\.output\eagle\debug\
目录 0 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\user\.output\eagle\debug\lib\
文件 22956 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\user\.output\eagle\debug\lib\libuser.a
目录 0 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\user\.output\eagle\debug\obj\
文件 1317 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\user\.output\eagle\debug\obj\user_main.d
文件 22692 2018-04-27 11:38 19_Esp8266_OTA_NONOS\app\user\.output\eagle\debug\obj\user_main.o
文件 1477 2018-02-06 04:45 19_Esp8266_OTA_NONOS\app\user\Makefile
文件 7560 2018-04-27 11:37 19_Esp8266_OTA_NONOS\app\user\user_main.c
目录 0 2018-04-26 14:49 19_Esp8266_OTA_NONOS\bin\
目录 0 2018-02-06 04:45 19_Esp8266_OTA_NONOS\bin\at\
............此处省略114个文件信息
- 上一篇:PowerBI视觉对象75个
- 下一篇:佳蓝客户端在线生成平台
相关资源
- 51单片机便携式输液点滴控制报警器
- 单片机原理及应用.pdf
- USART空闲中断发送数据包
- 毕业设计 - 非接触式数字体温计的设
- STM32 控制ESP8266 WIFI模块 连接OneNET
- 51单片机开发板PCB 原理图
- 飞思卡尔MC9S12X128单片机的认识与实践
- 单片机原理及其接口技术(第二版)
- 51单片机和modbus中文资料软件源代码全
- D1开发板学习资料例程.rar
- PIC系列单片机开发精解
- 蓝桥杯 单片机设计 历年决赛真题及答
- 单片机课件赵志衡主讲
- 蓝牙模块详细资料 51单片机控制蓝牙
- STM32单片机最小原理图+PCB
- 匿名上位机V7.rar
- 单片机开发环境Keil6.12安装程序有注册
- 51单片机驱动TFT真彩屏
- 51单片机波形发生器设计,正弦波、三
- 伺服电机相关电动机的单片机控制
- AVR单片机原理及应用
- ESP8266和stm32之四实现LCD联网
- 51单片机Modbus_RTU
- AVR单片机嵌入式系统原理与应用实践
- 胎压监测单片机
- 12864液晶带字库+不带字库+51单片机贪
- 单片微型机原理、应用与实验学习指
- STM32平衡小车程序
- GY-82 GY-302资料
- pic18f46k22系列中文数据手册.pdf
评论
共有 条评论