mirror of
https://github.com/openshwprojects/OpenBK7231T_App.git
synced 2026-03-07 07:47:43 +01:00
committed by
GitHub
parent
b9bdc0bc79
commit
3b99b17cc2
@@ -33,8 +33,9 @@
|
||||
#include <wifi_mgmr_ext.h> //For BL602 WiFi AP Scan
|
||||
#elif PLATFORM_W600 || PLATFORM_W800
|
||||
|
||||
#elif PLATFORM_XR809
|
||||
#elif PLATFORM_XRADIO
|
||||
#include <image/flash.h>
|
||||
#include "ota/ota.h"
|
||||
#elif defined(PLATFORM_BK7231N)
|
||||
// tuya-iotos-embeded-sdk-wifi-ble-bk7231n/sdk/include/tuya_hal_storage.h
|
||||
#include "tuya_hal_storage.h"
|
||||
@@ -1009,11 +1010,7 @@ typedef enum {
|
||||
|
||||
#endif
|
||||
|
||||
#if WINDOWS
|
||||
#elif PLATFORM_BL602
|
||||
#elif PLATFORM_W600 || PLATFORM_W800
|
||||
#elif PLATFORM_XR809
|
||||
#elif PLATFORM_BK7231N || PLATFORM_BK7231T
|
||||
#if PLATFORM_BK7231N || PLATFORM_BK7231T
|
||||
if (ota_progress() >= 0)
|
||||
{
|
||||
hprintf255(request, "<h5>OTA In Progress. Downloaded: %i B Flashed: %06lXh</h5>", OTA_GetTotalBytes(), ota_progress());
|
||||
@@ -3165,8 +3162,6 @@ int http_fn_cfg_dgr(http_request_t* request) {
|
||||
}
|
||||
#endif
|
||||
|
||||
void XR809_RequestOTAHTTP(const char* s);
|
||||
|
||||
void OTA_RequestDownloadFromHTTP(const char* s) {
|
||||
#if WINDOWS
|
||||
|
||||
@@ -3186,10 +3181,35 @@ void OTA_RequestDownloadFromHTTP(const char* s) {
|
||||
else ota_done(0);
|
||||
#elif PLATFORM_W600 || PLATFORM_W800
|
||||
t_http_fwup(s);
|
||||
#elif PLATFORM_XR809
|
||||
XR809_RequestOTAHTTP(s);
|
||||
#elif PLATFORM_XR872
|
||||
#elif PLATFORM_XRADIO
|
||||
uint32_t* verify_value;
|
||||
ota_verify_t verify_type;
|
||||
ota_verify_data_t verify_data;
|
||||
|
||||
if(ota_get_image(OTA_PROTOCOL_HTTP, s) != OTA_STATUS_OK)
|
||||
{
|
||||
addLogAdv(LOG_ERROR, LOG_FEATURE_HTTP, "OTA http get image failed");
|
||||
return;
|
||||
}
|
||||
|
||||
if(ota_get_verify_data(&verify_data) != OTA_STATUS_OK)
|
||||
{
|
||||
verify_type = OTA_VERIFY_NONE;
|
||||
verify_value = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
verify_type = verify_data.ov_type;
|
||||
verify_value = (uint32_t*)(verify_data.ov_data);
|
||||
}
|
||||
|
||||
if(ota_verify_image(verify_type, verify_value) != OTA_STATUS_OK)
|
||||
{
|
||||
addLogAdv(LOG_ERROR, LOG_FEATURE_HTTP, "OTA http verify image failed");
|
||||
return;
|
||||
}
|
||||
|
||||
ota_reboot();
|
||||
#else
|
||||
otarequest(s);
|
||||
#endif
|
||||
|
||||
@@ -385,20 +385,6 @@ static int http_tasmota_json_status_SNS(void* request, jsonCb_t printer, bool bA
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef PLATFORM_XR809
|
||||
//XR809 does not support drivers but its build script compiles many drivers including ntp.
|
||||
|
||||
#else
|
||||
#ifndef ENABLE_NTP
|
||||
unsigned int NTP_GetCurrentTime() {
|
||||
return 0;
|
||||
}
|
||||
unsigned int NTP_GetCurrentTimeWithoutOffset() {
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Topic: tele/tasmota_48E7F3/STATE
|
||||
// Sample:
|
||||
/*
|
||||
|
||||
@@ -29,6 +29,7 @@ typedef struct
|
||||
} tcp_thread_t;
|
||||
|
||||
static xTaskHandle g_http_thread = NULL;
|
||||
static const size_t max_socks = MAX_SOCKETS_TCP - 1;
|
||||
static int listen_sock = INVALID_SOCK;
|
||||
static tcp_thread_t sock[MAX_SOCKETS_TCP - 1] =
|
||||
{
|
||||
@@ -137,6 +138,32 @@ static inline char* get_clientaddr(struct sockaddr_storage* source_addr)
|
||||
return address_str;
|
||||
}
|
||||
|
||||
void HTTPServer_Stop(void* arg)
|
||||
{
|
||||
if(g_http_thread != NULL)
|
||||
{
|
||||
rtos_delete_thread(&g_http_thread);
|
||||
}
|
||||
if(listen_sock != INVALID_SOCK)
|
||||
{
|
||||
close(listen_sock);
|
||||
}
|
||||
|
||||
for(int i = 0; i < max_socks; ++i)
|
||||
{
|
||||
if(sock[i].thread != NULL)
|
||||
{
|
||||
rtos_delete_thread(&sock[i].thread);
|
||||
sock[i].thread = NULL;
|
||||
}
|
||||
if(sock[i].fd != INVALID_SOCK)
|
||||
{
|
||||
close(sock[i].fd);
|
||||
sock[i].fd = INVALID_SOCK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void restart_tcp_server(void* arg)
|
||||
{
|
||||
HTTPServer_Start();
|
||||
@@ -147,7 +174,6 @@ static void tcp_server_thread(beken_thread_arg_t arg)
|
||||
{
|
||||
OSStatus err = kNoErr;
|
||||
int reuse = 1;
|
||||
const size_t max_socks = MAX_SOCKETS_TCP - 1;
|
||||
|
||||
struct sockaddr_in server_addr =
|
||||
{
|
||||
|
||||
@@ -13,9 +13,10 @@
|
||||
|
||||
#define DEFAULT_FLASH_LEN 0x200000
|
||||
|
||||
#if PLATFORM_XR809
|
||||
#if PLATFORM_XRADIO
|
||||
|
||||
#include <image/flash.h>
|
||||
#include "ota/ota.h"
|
||||
|
||||
uint32_t flash_read(uint32_t flash, uint32_t addr, void* buf, uint32_t size);
|
||||
#define FLASH_INDEX_XR809 0
|
||||
@@ -314,6 +315,8 @@ static int http_rest_post(http_request_t* request) {
|
||||
return http_rest_post_flash(request, 0, -1);
|
||||
#elif PLATFORM_ECR6600 || PLATFORM_TR6260
|
||||
return http_rest_post_flash(request, -1, -1);
|
||||
#elif PLATFORM_XRADIO && !PLATFORM_XR809
|
||||
return http_rest_post_flash(request, 0, -1);
|
||||
#else
|
||||
// TODO
|
||||
ADDLOG_DEBUG(LOG_FEATURE_API, "No OTA");
|
||||
@@ -1596,11 +1599,6 @@ static int ota_verify_download(void)
|
||||
|
||||
static int http_rest_post_flash(http_request_t* request, int startaddr, int maxaddr)
|
||||
{
|
||||
|
||||
#if PLATFORM_XR809 || PLATFORM_XR872
|
||||
return 0; //Operation not supported yet
|
||||
#endif
|
||||
|
||||
int total = 0;
|
||||
int towrite = request->bodylen;
|
||||
char* writebuf = request->bodystart;
|
||||
@@ -3074,6 +3072,117 @@ update_ota_exit:
|
||||
return http_rest_error(request, ret, "error");
|
||||
}
|
||||
|
||||
#elif PLATFORM_XRADIO
|
||||
|
||||
bool recvfp = true;
|
||||
|
||||
ota_status_t ota_update_rest_init(void* url)
|
||||
{
|
||||
return OTA_STATUS_OK;
|
||||
}
|
||||
ota_status_t ota_update_rest_get(uint8_t* buf, uint32_t buf_size, uint32_t* recv_size, uint8_t* eof_flag)
|
||||
{
|
||||
if(recvfp)
|
||||
{
|
||||
//free(buf);
|
||||
//recvfp = false;
|
||||
//buf = writebuf;
|
||||
//*recv_size = writelen;
|
||||
//return OTA_STATUS_OK;
|
||||
int bsize = (writelen > buf_size ? buf_size : writelen);
|
||||
memcpy(buf, writebuf + startaddr, bsize);
|
||||
ADDLOG_DEBUG(LOG_FEATURE_OTA, "Writelen %i at %i", bsize, startaddr);
|
||||
startaddr += bsize;
|
||||
*recv_size = bsize;
|
||||
*eof_flag = 0;
|
||||
total += bsize;
|
||||
towrite -= bsize;
|
||||
writelen -= bsize;
|
||||
recvfp = writelen > 0;
|
||||
return OTA_STATUS_OK;
|
||||
}
|
||||
if(towrite > 0)
|
||||
{
|
||||
*recv_size = writelen = recv(request->fd, buf, (request->receivedLenmax > buf_size ? buf_size : request->receivedLenmax), 0);
|
||||
//*recv_size = writelen = recv(request->fd, writebuf, request->receivedLenmax, 0);
|
||||
ADDLOG_DEBUG(LOG_FEATURE_OTA, "Writelen %i at %i", writelen, total);
|
||||
if(writelen < 0)
|
||||
{
|
||||
ADDLOG_INFO(LOG_FEATURE_OTA, "recv returned %d - end of data - remaining %d", writelen, towrite);
|
||||
*eof_flag = 1;
|
||||
*recv_size = 0;
|
||||
return OTA_STATUS_OK;
|
||||
//return OTA_STATUS_ERROR;
|
||||
}
|
||||
}
|
||||
total += writelen;
|
||||
towrite -= writelen;
|
||||
|
||||
if((towrite > 0) && (writelen >= 0))
|
||||
{
|
||||
*eof_flag = 0;
|
||||
rtos_delay_milliseconds(10);
|
||||
return OTA_STATUS_OK;
|
||||
}
|
||||
*eof_flag = 1;
|
||||
return OTA_STATUS_OK;
|
||||
}
|
||||
|
||||
int ret = 0;
|
||||
uint32_t* verify_value;
|
||||
ota_verify_t verify_type;
|
||||
ota_verify_data_t verify_data;
|
||||
|
||||
if(request->contentLength > 0)
|
||||
{
|
||||
towrite = request->contentLength;
|
||||
}
|
||||
else
|
||||
{
|
||||
ret = -1;
|
||||
ADDLOG_ERROR(LOG_FEATURE_OTA, "Content-length is 0");
|
||||
goto update_ota_exit;
|
||||
}
|
||||
|
||||
ota_init();
|
||||
|
||||
if(ota_update_image(NULL, ota_update_rest_init, ota_update_rest_get) != OTA_STATUS_OK)
|
||||
{
|
||||
ret = -1;
|
||||
ADDLOG_ERROR(LOG_FEATURE_OTA, "ota_update_image failed");
|
||||
goto update_ota_exit;
|
||||
}
|
||||
|
||||
if(ota_get_verify_data(&verify_data) != OTA_STATUS_OK)
|
||||
{
|
||||
ADDLOG_INFO(LOG_FEATURE_OTA, "ota_get_verify_data not ok, OTA_VERIFY_NONE");
|
||||
verify_type = OTA_VERIFY_NONE;
|
||||
verify_value = NULL;
|
||||
}
|
||||
else
|
||||
{
|
||||
verify_type = verify_data.ov_type;
|
||||
ADDLOG_INFO(LOG_FEATURE_OTA, "ota_get_verify_data ok");
|
||||
verify_value = (uint32_t*)(verify_data.ov_data);
|
||||
}
|
||||
|
||||
if(ota_verify_image(verify_type, verify_value) != OTA_STATUS_OK)
|
||||
{
|
||||
ret = -1;
|
||||
ADDLOG_ERROR(LOG_FEATURE_OTA, "OTA verify image failed");
|
||||
goto update_ota_exit;
|
||||
}
|
||||
|
||||
update_ota_exit:
|
||||
if(ret != -1)
|
||||
{
|
||||
ADDLOG_INFO(LOG_FEATURE_OTA, "OTA is successful");
|
||||
}
|
||||
else
|
||||
{
|
||||
ADDLOG_ERROR(LOG_FEATURE_OTA, "OTA failed.");
|
||||
return http_rest_error(request, ret, "error");
|
||||
}
|
||||
#else
|
||||
|
||||
init_ota(startaddr);
|
||||
@@ -3169,10 +3278,9 @@ static int http_rest_get_flash(http_request_t* request, int startaddr, int len)
|
||||
}
|
||||
#if PLATFORM_BEKEN
|
||||
res = flash_read((char*)buffer, readlen, startaddr);
|
||||
#elif PLATFORM_XR809
|
||||
#elif PLATFORM_XRADIO
|
||||
//uint32_t flash_read(uint32_t flash, uint32_t addr,void *buf, uint32_t size)
|
||||
#define FLASH_INDEX_XR809 0
|
||||
res = flash_read(FLASH_INDEX_XR809, startaddr, buffer, readlen);
|
||||
res = flash_read(0, startaddr, buffer, readlen);
|
||||
#elif PLATFORM_XR872
|
||||
res = 0;
|
||||
#elif PLATFORM_BL602
|
||||
|
||||
Reference in New Issue
Block a user