Commit 1e3c7b60 authored by 黄振令's avatar 黄振令

【修改内容】网关下载ota文件,通知oatserver

【提交人】huang.zhenling
parent 9210363f
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
#include "curl.h" #include "curl.h"
#include "./jsonrpc/rpccJSON.h" #include "./jsonrpc/rpccJSON.h"
static int s_ota_server_init = 0;
size_t kk_write_func(void *ptr, size_t size, size_t nmemb, FILE *stream) size_t kk_write_func(void *ptr, size_t size, size_t nmemb, FILE *stream)
{ {
...@@ -57,6 +58,8 @@ int kk_http_download(char* url, char* filename) ...@@ -57,6 +58,8 @@ int kk_http_download(char* url, char* filename)
} }
static const char oatStorageDirectory[] = "ota-files";
int kk_ota_process(cJSON* root){ int kk_ota_process(cJSON* root){
cJSON *params; cJSON *params;
cJSON *id; cJSON *id;
...@@ -70,7 +73,9 @@ int kk_ota_process(cJSON* root){ ...@@ -70,7 +73,9 @@ int kk_ota_process(cJSON* root){
int ret = 0; int ret = 0;
struct stat st; struct stat st;
int iFileSize; int iFileSize;
printf("===============kk_ota_process \n"); char fileName[100] = {0};
info = rpc_cJSON_GetObjectItem(root, "info"); info = rpc_cJSON_GetObjectItem(root, "info");
if(info != NULL){ if(info != NULL){
...@@ -79,14 +84,15 @@ int kk_ota_process(cJSON* root){ ...@@ -79,14 +84,15 @@ int kk_ota_process(cJSON* root){
} }
payload = rpc_cJSON_GetObjectItem(root, "payload"); payload = rpc_cJSON_GetObjectItem(root, "payload");
if(payload != NULL){ if(payload != NULL){
printf("===============kk_ota_process ===========11111111\n");
params = rpc_cJSON_GetObjectItem(payload, "data"); params = rpc_cJSON_GetObjectItem(payload, "data");
//id = rpc_cJSON_GetObjectItem(payload, "msgId"); //id = rpc_cJSON_GetObjectItem(payload, "msgId");
url = rpc_cJSON_GetObjectItem(params, "url"); url = rpc_cJSON_GetObjectItem(params, "url");
md5 = rpc_cJSON_GetObjectItem(params, "md5"); md5 = rpc_cJSON_GetObjectItem(params, "md5");
size = rpc_cJSON_GetObjectItem(params, "size"); size = rpc_cJSON_GetObjectItem(params, "size");
printf("===============kk_ota_process ===========[%s][%s][%s]\n", url->valuestring,mac->valuestring,size->valuestring); printf("===============kk_ota_process ===========[%s][%s][%s]\n", url->valuestring,mac->valuestring,size->valuestring);
kk_http_download(url->valuestring, mac->valuestring); sprintf(fileName, "%s/%s.%s", oatStorageDirectory, mac->valuestring, "ota");
kk_http_download(url->valuestring, fileName);
if(stat(mac->valuestring, &st)) if(stat(mac->valuestring, &st))
printf("读取出错!\n"); printf("读取出错!\n");
...@@ -101,7 +107,7 @@ int kk_ota_process(cJSON* root){ ...@@ -101,7 +107,7 @@ int kk_ota_process(cJSON* root){
char md5str[34] = {0}; char md5str[34] = {0};
FILE *fp; FILE *fp;
sprintf(md5File, "%s.md5", mac->valuestring); sprintf(md5File, "%s.md5", mac->valuestring);
sprintf(cmd, "md5sum %s|cut -d\" \" -f1 > %s", mac->valuestring, md5File); sprintf(cmd, "md5sum %s|cut -d\" \" -f1 > %s", fileName, md5File);
system(cmd); system(cmd);
...@@ -124,6 +130,11 @@ int kk_ota_process(cJSON* root){ ...@@ -124,6 +130,11 @@ int kk_ota_process(cJSON* root){
} }
fclose(fp); fclose(fp);
remove(md5File);
kk_ota_notify(fileName);
return ret; return ret;
} }
return -1; return -1;
......
...@@ -570,3 +570,42 @@ void emberAfOtaServerSendUpgradeCommandCallback(EmberNodeId dest, ...@@ -570,3 +570,42 @@ void emberAfOtaServerSendUpgradeCommandCallback(EmberNodeId dest,
"error 0x%x", status); "error 0x%x", status);
} }
} }
static int s_ota_server_init = 0;
EmberAfOtaImageId kk_get_imageId(char* filename){
char* oatfile = NULL;
EmberAfOtaImageId id = emberAfOtaStorageIteratorFirstCallback();
do {
oatfile = emAfOtaStorageGetFilepath(&id);
if (oatfile != NULL && strcmp(oatfile, filename) == 0){
return id;
}
id = emberAfOtaStorageIteratorNextCallback();
} while (emberAfIsOtaImageIdValid(&id));
return emberAfInvalidImageId;
}
void kk_ota_notify(char* filepath){
if (s_ota_server_init == 0){
s_ota_server_init = 1;
emberAfOtaBootloadClusterServerInitCallback(0x00);
}
//add file
emAfOtaReloadStorageDevice();
//TODO:开启通知, 通过mac地址获取dest,endpoint
EmberNodeId dest;
uint8_t endpoint;
EmberAfOtaImageId id;
id = kk_get_imageId(filepath);
emberAfOtaServerSendUpgradeCommandCallback(dest, endpoint, &id);
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment