mirror of
https://github.com/openshwprojects/OpenBK7231T_App.git
synced 2026-02-08 18:25:22 +00:00
committed by
GitHub
parent
b9bdc0bc79
commit
3b99b17cc2
@ -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