Commit 0178ccff authored by 尹佳钦's avatar 尹佳钦
parents f87d8ac5 644c7681
......@@ -6,6 +6,7 @@
#include "curl.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)
{
......@@ -57,6 +58,8 @@ int kk_http_download(char* url, char* filename)
}
static const char oatStorageDirectory[] = "ota-files";
int kk_ota_process(cJSON* root){
cJSON *params;
cJSON *id;
......@@ -70,7 +73,9 @@ int kk_ota_process(cJSON* root){
int ret = 0;
struct stat st;
int iFileSize;
printf("===============kk_ota_process \n");
char fileName[100] = {0};
info = rpc_cJSON_GetObjectItem(root, "info");
if(info != NULL){
......@@ -79,14 +84,15 @@ int kk_ota_process(cJSON* root){
}
payload = rpc_cJSON_GetObjectItem(root, "payload");
if(payload != NULL){
printf("===============kk_ota_process ===========11111111\n");
params = rpc_cJSON_GetObjectItem(payload, "data");
//id = rpc_cJSON_GetObjectItem(payload, "msgId");
url = rpc_cJSON_GetObjectItem(params, "url");
md5 = rpc_cJSON_GetObjectItem(params, "md5");
size = rpc_cJSON_GetObjectItem(params, "size");
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))
printf("读取出错!\n");
......@@ -101,7 +107,7 @@ int kk_ota_process(cJSON* root){
char md5str[34] = {0};
FILE *fp;
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);
......@@ -124,6 +130,11 @@ int kk_ota_process(cJSON* root){
}
fclose(fp);
remove(md5File);
kk_ota_notify(fileName);
return ret;
}
return -1;
......
......@@ -570,3 +570,42 @@ void emberAfOtaServerSendUpgradeCommandCallback(EmberNodeId dest,
"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