Commit f7ac64c6 authored by chen.weican's avatar chen.weican

【修改内容】1,增加离线语音OTA功能;2,修改编译级别为werror

【提交人】陈伟灿
parent ac14fe24
...@@ -19,8 +19,6 @@ typedef enum { ...@@ -19,8 +19,6 @@ typedef enum {
RETURN_FAIL = -1, RETURN_FAIL = -1,
RETURN_SUCCESS = 0, RETURN_SUCCESS = 0,
} kk_kcloud_error_code_t; } kk_kcloud_error_code_t;
#define KK_DEVICESECRET_PATH "/data/kk/kk_deviceSecret.txt"
#define KK_TOKEN_PATH "/data/kk/kk_token.txt"
#define HOST_NAME "dev.nj-ikonke.site" #define HOST_NAME "dev.nj-ikonke.site"
int KK_Get_ccuid( char *device_code); int KK_Get_ccuid( char *device_code);
#endif #endif
......
...@@ -379,8 +379,41 @@ int kk_data_handle(cJSON *json,int sockfd) ...@@ -379,8 +379,41 @@ int kk_data_handle(cJSON *json,int sockfd)
if(key != NULL){ if(key != NULL){
kk_handle_del_history_info(key->valuestring); kk_handle_del_history_info(key->valuestring);
} }
}else if(strcmp(opcode->valuestring,VOICE_VOLUME_CTRL) == 0){
cJSON *vol = cJSON_GetObjectItem(json, "arg");
if(vol != NULL){
kk_voice_control(atoi(vol->valuestring));
}
}else if(strcmp(opcode->valuestring,VOICE_SWITCH_CTRL) == 0){
cJSON *onff = cJSON_GetObjectItem(json, "arg");
int value = 0;
if(onff != NULL){
if(strcmp(onff->valuestring,"on") == 0){
value = 1;
}else{
value = 0;
}
kk_voice_switch(value);
}
}else if(strcmp(opcode->valuestring,VOICE_VERSION_QUERY) == 0){
char ver[16] = {0};
kk_vp_voice_version_get(ver,sizeof(ver));
cJSON * root=cJSON_CreateObject();
cJSON_AddStringToObject(root, "nodeid", "*");
cJSON_AddStringToObject(root, "opcode", VOICE_VERSION_QUERY);
cJSON_AddStringToObject(root, "status", "success");
cJSON_AddStringToObject(root, "arg", ver);
send_msg_to_module(root);
cJSON_Delete(root);
}else if(strcmp(opcode->valuestring,VOICE_OTA) == 0){
cJSON *otafile = cJSON_GetObjectItem(json, "arg");
if(otafile != NULL){
kk_voice_ota_mtu_set(KK_VOICE_OTA_MTU);
kk_vp_ota_file_update_start(otafile->valuestring);
}
}else if(strcmp(opcode->valuestring,EXIT_VOICE_FACTORY) == 0){
kk_voice_exit_factory_mode();
}else{ }else{
kk_ccu_opcode_handle(json); kk_ccu_opcode_handle(json);
} }
} }
...@@ -416,24 +449,13 @@ static int kk_parse_syncinfo(cJSON *payload) ...@@ -416,24 +449,13 @@ static int kk_parse_syncinfo(cJSON *payload)
gwdevicecode = cJSON_GetObjectItem(gwitem,MSG_DEVICE_CODE_STR)->valuestring; gwdevicecode = cJSON_GetObjectItem(gwitem,MSG_DEVICE_CODE_STR)->valuestring;
if(subdevices != NULL){ if(subdevices != NULL){
subitem = subdevices->child; subitem = subdevices->child;
while(subitem != NULL){ while(subitem != NULL){
deviceCode = cJSON_GetObjectItem(subitem,MSG_DEVICE_CODE_STR)->valuestring; deviceCode = cJSON_GetObjectItem(subitem,MSG_DEVICE_CODE_STR)->valuestring;
productCode = cJSON_GetObjectItem(subitem,MSG_PRODUCT_CODE_STR)->valuestring; productCode = cJSON_GetObjectItem(subitem,MSG_PRODUCT_CODE_STR)->valuestring;
onlineStatus = cJSON_GetObjectItem(subitem,MSG_ONLINE_STATUS_STR); onlineStatus = cJSON_GetObjectItem(subitem,MSG_ONLINE_STATUS_STR);
properties = cJSON_GetObjectItem(subitem,MSG_PROPERTIES_STR); properties = cJSON_GetObjectItem(subitem,MSG_PROPERTIES_STR);
kk_map_dev_node_add(deviceCode,productCode,gwdevicecode,(onlineStatus->valueint==1)?"1":"0"); kk_map_dev_node_add(deviceCode,productCode,gwdevicecode,(onlineStatus->valueint==1)?"1":"0");
kk_lan_property_syn_deal(deviceCode,properties); kk_lan_property_syn_deal(deviceCode,properties);
subitem = subitem->next; subitem = subitem->next;
} }
} }
...@@ -444,10 +466,6 @@ static int kk_parse_syncinfo(cJSON *payload) ...@@ -444,10 +466,6 @@ static int kk_parse_syncinfo(cJSON *payload)
} }
int is_ccu_msg(cJSON *productCode,cJSON *deviceCode) int is_ccu_msg(cJSON *productCode,cJSON *deviceCode)
{ {
char ccuid[33] = {0}; char ccuid[33] = {0};
......
...@@ -282,15 +282,27 @@ int kk_vp_config_file_info_check(int f_ver,int f_size,int crc32) ...@@ -282,15 +282,27 @@ int kk_vp_config_file_info_check(int f_ver,int f_size,int crc32)
} }
return 0; return 0;
} }
int kk_voice_exit_factory_mode(void)
{
uint8_t data[1] = {1};
vp_send_data_build(OPCODE_COMPLETED_TEST_OP,sizeof(data),data);
return 1;
}
void kk_voice_ota_mtu_set(uint16_t mtu)
{
uint8_t res[3] = {0};
res[0] = 0xff;
res[1] = (mtu>>8)&0xff;
res[2] = mtu&0xff;
INFO_PRINT("[set] MTU OTA SIZE = %d\n",mtu);
vp_send_data_build(OPCODE_VOICE_SWITCH,sizeof(res),res);
}
void kk_vp_manage_init(void) void kk_vp_manage_init(void)
{ {
vp_scene_id_map_load(); vp_scene_id_map_load();
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
_vp_config_file_version_load(); _vp_config_file_version_load();
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
vp_mag.cfg_info.f_size = _vp_get_cfg_file_size(); vp_mag.cfg_info.f_size = _vp_get_cfg_file_size();
vp_mag.cfg_info.crc32 = _vp_get_cfg_file_crc32(); vp_mag.cfg_info.crc32 = _vp_get_cfg_file_crc32();
} }
......
...@@ -14,41 +14,17 @@ int kk_voice_panel_init(int argc, char* argv[]); ...@@ -14,41 +14,17 @@ int kk_voice_panel_init(int argc, char* argv[]);
#define UPDATING_8009_CONFIG_FILE_INFO 3 #define UPDATING_8009_CONFIG_FILE_INFO 3
#define STOP_8009_CONFIG_FILE_UPDATE 4 #define STOP_8009_CONFIG_FILE_UPDATE 4
#define GET_8009_CONFIG_FILE_INFO 5 #define GET_8009_CONFIG_FILE_INFO 5
#define KK_VOICE_OTA_MTU 128
void kk_vp_set_state_machine(int state); void kk_vp_set_state_machine(int state);
void kk_vp_set_config_file_version(int ver); void kk_vp_set_config_file_version(int ver);
int kk_vp_config_file_info_check(int f_ver,int f_size,int crc32); int kk_vp_config_file_info_check(int f_ver,int f_size,int crc32);
void kk_vp_update_result_check(uint8_t status,uint32_t f_ver); void kk_vp_update_result_check(uint8_t status,uint32_t f_ver);
void kk_vp_set_config_file_version(int ver); void kk_vp_set_config_file_version(int ver);
void kk_vp_cfg_info_check(uint32_t f_ver,uint32_t f_size,uint32_t crc32); void kk_vp_cfg_info_check(uint32_t f_ver,uint32_t f_size,uint32_t crc32);
void kk_vp_cfg_info_set(uint32_t f_ver,uint32_t f_size,uint32_t crc32); void kk_vp_cfg_info_set(uint32_t f_ver,uint32_t f_size,uint32_t crc32);
void kk_vp_set_updateFlag(int flag); void kk_vp_set_updateFlag(int flag);
void kk_voice_ota_mtu_set(uint16_t mtu);
int kk_voice_exit_factory_mode(void);
#endif #endif
...@@ -28,6 +28,12 @@ ...@@ -28,6 +28,12 @@
#define ZIGBEE_DEV_HW_INFO_PUSH "ZIGBEE_DEV_HW_INFO_PUSH" #define ZIGBEE_DEV_HW_INFO_PUSH "ZIGBEE_DEV_HW_INFO_PUSH"
#define GET_HISTORY_ALARM_LOG "GET_HISTORY_ALARM_LOG" #define GET_HISTORY_ALARM_LOG "GET_HISTORY_ALARM_LOG"
#define DEL_HISTORY_ALARM_LOG "DEL_HISTORY_ALARM_LOG" #define DEL_HISTORY_ALARM_LOG "DEL_HISTORY_ALARM_LOG"
#define VOICE_VOLUME_CTRL "SOUND_VAL"
#define VOICE_SWITCH_CTRL "VOICE_SWITCH"
#define VOICE_VERSION_QUERY "VOICE_VERSION"
#define VOICE_OTA_FINISH "VOICE_OTA_FINISH"
#define VOICE_OTA "VOICE_OTA"
#define EXIT_VOICE_FACTORY "EXIT_VOICE_FACTORY"
#define SWITCH_OPCODE "SWITCH" #define SWITCH_OPCODE "SWITCH"
#define GET_HISTORY_MSG_TYPE "/thing/service/historyAlarm" #define GET_HISTORY_MSG_TYPE "/thing/service/historyAlarm"
#define DEL_HISTORY_MSG_TYPE "/thing/service/delAlarm" #define DEL_HISTORY_MSG_TYPE "/thing/service/delAlarm"
......
...@@ -3,7 +3,6 @@ ...@@ -3,7 +3,6 @@
#include <time.h> #include <time.h>
#include <unistd.h> #include <unistd.h>
#include <fcntl.h> #include <fcntl.h>
#include "kk_newccu_msg.h" #include "kk_newccu_msg.h"
#include "kk_voice_panel_cfg.h" #include "kk_voice_panel_cfg.h"
#include "kk_voice_panel_handle.h" #include "kk_voice_panel_handle.h"
...@@ -11,7 +10,7 @@ ...@@ -11,7 +10,7 @@
#include "kk_lan_vp_ctrl.h" #include "kk_lan_vp_ctrl.h"
#include "Serial.h" #include "Serial.h"
#include "kk_oldccu_msg.h" #include "kk_oldccu_msg.h"
#include <ctype.h>
#define MK_VERSION(x) ((*x<<24) | (*(x+1)<<16) | (*(x+2)<<8) | *(x+3)) #define MK_VERSION(x) ((*x<<24) | (*(x+1)<<16) | (*(x+2)<<8) | *(x+3))
#define MK_UINT32(x) ((*x<<24) | (*(x+1)<<16) | (*(x+2)<<8) | *(x+3)) #define MK_UINT32(x) ((*x<<24) | (*(x+1)<<16) | (*(x+2)<<8) | *(x+3))
...@@ -50,7 +49,8 @@ static void kk_vp_ota_file_update_start_handle(pro_data_t *pro_data); ...@@ -50,7 +49,8 @@ static void kk_vp_ota_file_update_start_handle(pro_data_t *pro_data);
static void kk_vp_ota_file_update_stop_handle(pro_data_t *pro_data); static void kk_vp_ota_file_update_stop_handle(pro_data_t *pro_data);
static void kk_vp_ota_info_query_handle(pro_data_t *pro_data); static void kk_vp_ota_info_query_handle(pro_data_t *pro_data);
static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data); static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data);
static void kk_voice_switch_handle(pro_data_t *pro_data);
static void kk_voice_volume_handle(pro_data_t *pro_data);
static VP_OPCODE_HANDLE vp_opcode_table[] = { static VP_OPCODE_HANDLE vp_opcode_table[] = {
...@@ -71,6 +71,8 @@ static VP_OPCODE_HANDLE vp_opcode_table[] = { ...@@ -71,6 +71,8 @@ static VP_OPCODE_HANDLE vp_opcode_table[] = {
{OPCODE_VOICE_OTA_REQUEST,kk_vp_ota_file_update_data_req_handle}, {OPCODE_VOICE_OTA_REQUEST,kk_vp_ota_file_update_data_req_handle},
{OPCODE_VOICE_OTA_UPGRADE_STOP,kk_vp_ota_file_update_stop_handle}, {OPCODE_VOICE_OTA_UPGRADE_STOP,kk_vp_ota_file_update_stop_handle},
{OPCODE_VOICE_OTA_STATUS_NOTIFY,kk_vp_ota_file_update_status_handle}, {OPCODE_VOICE_OTA_STATUS_NOTIFY,kk_vp_ota_file_update_status_handle},
{OPCODE_VOICE_SWITCH,kk_voice_switch_handle},
{OPCODE_VOICE_CONTROL,kk_voice_volume_handle}
}; };
...@@ -564,20 +566,6 @@ static void vp_close_fd() ...@@ -564,20 +566,6 @@ static void vp_close_fd()
} }
} }
static void open_ota_fd()
{
ota_fp = fopen (VP_OTA_FILE_BZIP,"rb");
if(ota_fp==NULL){
debug_log(LOG_WARNING_LEVEL,"[%s]fopen err!\n",VP_OTA_FILE_BZIP);
}
}
static void close_ota_fd()
{
if(ota_fp!=NULL){
fclose (ota_fp);
}
}
...@@ -605,6 +593,23 @@ static void close_ota_fd() ...@@ -605,6 +593,23 @@ static void close_ota_fd()
static char s_voice_sw[16] = {0};
int kk_vp_voice_version_get(char *ver,int len)
{
if(ver == NULL || len < strlen(s_voice_sw)){
return -1;
}
memcpy(ver,s_voice_sw,strlen(s_voice_sw));
return 0;
}
int kk_vp_voice_version_set(char *ver,int len)
{
if(ver == NULL || len >= strlen(s_voice_sw)){
return -1;
}
memcpy(s_voice_sw,ver,strlen(ver));
return 0;
}
static void kk_vp_get_8009_snapshoot_handle(pro_data_t *pro_data) static void kk_vp_get_8009_snapshoot_handle(pro_data_t *pro_data)
{ {
uint8_t err; uint8_t err;
...@@ -636,7 +641,9 @@ static void kk_vp_get_8009_snapshoot_handle(pro_data_t *pro_data) ...@@ -636,7 +641,9 @@ static void kk_vp_get_8009_snapshoot_handle(pro_data_t *pro_data)
kk_vp_set_state_machine(SET_8009_SYSTEM); kk_vp_set_state_machine(SET_8009_SYSTEM);
kk_vp_set_config_file_version(f_ver); kk_vp_set_config_file_version(f_ver);
memset(s_voice_sw,0x0,sizeof(s_voice_sw));
//string version=std::to_string(pro_data->arg[1])+"."+std::to_string(pro_data->arg[2])+"."+std::to_string(pro_data->arg[3]);
sprintf(s_voice_sw,"%d.%d.%d",pro_data->arg[1],pro_data->arg[2],pro_data->arg[3]);
debug_log(LOG_INFO_LEVEL,"\nsv=%06X,hv=%06X,%d-%d-%d %d:%d:%d,volume=%d,f_ver=%08X\n", debug_log(LOG_INFO_LEVEL,"\nsv=%06X,hv=%06X,%d-%d-%d %d:%d:%d,volume=%d,f_ver=%08X\n",
sv,hv,year,month,day,hour,minute,second,volume,f_ver); sv,hv,year,month,day,hour,minute,second,volume,f_ver);
} }
...@@ -1158,24 +1165,7 @@ void kk_vp_get_ota_file_info(void) ...@@ -1158,24 +1165,7 @@ void kk_vp_get_ota_file_info(void)
vp_send_data_build(OPCODE_VOICE_OTA_INFO_GET,sizeof(res),res); vp_send_data_build(OPCODE_VOICE_OTA_INFO_GET,sizeof(res),res);
} }
static int _vp_get_ota_file_size(void) static int _vp_get_ota_file_crc32(char* file)
{
int size = 0;
FILE *fp = NULL;
fp = fopen (VP_OTA_FILE_BZIP,"r");
if(fp==NULL){
debug_log(LOG_WARNING_LEVEL,"[%s]fopen err!\n",VP_OTA_FILE_BZIP);
return 0;
}
fseek (fp, 0, SEEK_END);
size=ftell(fp);
fclose(fp);
return size;
}
static int _vp_get_ota_file_crc32(void)
{ {
char *buff = NULL; char *buff = NULL;
char *pRead = NULL; char *pRead = NULL;
...@@ -1185,10 +1175,11 @@ static int _vp_get_ota_file_crc32(void) ...@@ -1185,10 +1175,11 @@ static int _vp_get_ota_file_crc32(void)
uint32_t crc32 = 0; uint32_t crc32 = 0;
FILE *fp = NULL; FILE *fp = NULL;
int size = 0; int size = 0;
char filePath[218] = {0};
fp = fopen (VP_OTA_FILE_BZIP,"r"); sprintf(filePath,"/data/OTA/%s",file);
fp = fopen (filePath,"r");
if(fp==NULL){ if(fp==NULL){
debug_log(LOG_WARNING_LEVEL,"[%s]fopen err!\n",VP_OTA_FILE_BZIP); debug_log(LOG_WARNING_LEVEL,"[%s]fopen err!\n",filePath);
printf("open err.\n"); printf("open err.\n");
return -1; return -1;
} }
...@@ -1207,7 +1198,7 @@ static int _vp_get_ota_file_crc32(void) ...@@ -1207,7 +1198,7 @@ static int _vp_get_ota_file_crc32(void)
while(remain>0){ while(remain>0){
r_len = fread(pRead, 1, size, fp); r_len = fread(pRead, 1, size, fp);
if(remain>=r_len){ if(remain>=r_len ){
remain -= r_len; remain -= r_len;
pRead+=r_len; pRead+=r_len;
printf("[remain]r_len=%d,remain=%d\n",r_len,remain); printf("[remain]r_len=%d,remain=%d\n",r_len,remain);
...@@ -1226,15 +1217,87 @@ static int _vp_get_ota_file_crc32(void) ...@@ -1226,15 +1217,87 @@ static int _vp_get_ota_file_crc32(void)
return crc32; return crc32;
} }
void kk_vp_ota_file_update_start(uint32_t ver) static int get_ota_file_version(char *file)
{
char s[128];
char *ota_file = NULL;
char *pstart = NULL;
if(file == NULL){
return -1;
}
pstart = strstr(file,"_");
if(pstart != NULL){
ota_file = pstart + 1;
}else{
ota_file = file;
}
snprintf(s,sizeof(s),"%s",ota_file);
debug_log(LOG_NOTICE_LEVEL,"ota file ver=%s\n",s);
char *d = ".";
char *p;
p = strtok(s, d);
int vBuff[3] = {0};
int off = 0;
while (p)
{
if (isdigit(*p)) {
vBuff[off++] = atoi(p);
if(off==3){
break;
}
}
p = strtok(NULL, d);
}
return ((vBuff[0]&0xff)<<16)|((vBuff[1]&0xff)<<8)|(vBuff[2]&0xff);
}
static int _vp_get_ota_file_size(char* file)
{ {
int size = 0;
FILE *fp = NULL;
char filePath[218] = {0};
sprintf(filePath,"/data/OTA/%s",file);
fp = fopen (filePath,"r");
if(fp==NULL){
debug_log(LOG_WARNING_LEVEL,"[%s]fopen err!\n",filePath);
return 0;
}
fseek (fp, 0, SEEK_END);
size=ftell(fp);
fclose(fp);
return size;
}
static void open_ota_fd(char* file)
{
char filePath[218] = {0};
sprintf(filePath,"/data/OTA/%s",file);
if(ota_fp!=NULL){
fclose (ota_fp);
}
ota_fp = fopen (filePath,"rb");
if(ota_fp==NULL){
debug_log(LOG_WARNING_LEVEL,"[%s]fopen err!\n",filePath);
}
debug_log(LOG_WARNING_LEVEL,"open %s\n",filePath);
}
void kk_vp_ota_file_update_start(char* file)
{
if(file == NULL){
return;
}
debug_log(LOG_WARNING_LEVEL,"file=%s\n",file);
uint8_t data[11] = {0}; uint8_t data[11] = {0};
uint32_t f_ver,f_size,crc32; uint32_t f_ver,f_size,crc32;
f_ver = ver; f_ver = get_ota_file_version(file);
f_size = _vp_get_ota_file_size(); f_size = _vp_get_ota_file_size(file);
crc32 = _vp_get_ota_file_crc32(); crc32 = _vp_get_ota_file_crc32(file);
data[0] = (f_ver>>16)&0xff; data[0] = (f_ver>>16)&0xff;
data[1] = (f_ver>>8)&0xff; data[1] = (f_ver>>8)&0xff;
...@@ -1256,10 +1319,16 @@ void kk_vp_ota_file_update_start(uint32_t ver) ...@@ -1256,10 +1319,16 @@ void kk_vp_ota_file_update_start(uint32_t ver)
debug_log(LOG_DEBUG_LEVEL,"File Version=%d.%d.%d,File Size=%d,CRC32 Value=%08X\n", debug_log(LOG_DEBUG_LEVEL,"File Version=%d.%d.%d,File Size=%d,CRC32 Value=%08X\n",
(f_ver>>16)&0xff,(f_ver>>8&0xff),f_ver&0xff,f_size,crc32); (f_ver>>16)&0xff,(f_ver>>8&0xff),f_ver&0xff,f_size,crc32);
char dateTime[64] = {0};
time_t curTime = time(NULL);
struct tm *ptm = localtime(&curTime);
snprintf(dateTime,sizeof(dateTime),"%d-%d-%d %d:%d:%d",(ptm->tm_year+1900),(ptm->tm_mon+1),ptm->tm_mday,ptm->tm_hour,ptm->tm_min,ptm->tm_sec);
debug_log(LOG_EMERG_LEVEL,"ota start time:%s\n",dateTime);
vp_send_data_build(OPCODE_VOICE_OTA_UPGRADE_STATR,sizeof(data),data); vp_send_data_build(OPCODE_VOICE_OTA_UPGRADE_STATR,sizeof(data),data);
open_ota_fd(); open_ota_fd(file);
} }
void kk_vp_ota_file_update_stop(uint32_t ver) void kk_vp_ota_file_update_stop(uint32_t ver)
{ {
...@@ -1442,14 +1511,14 @@ static void kk_vp_ota_file_update_start_handle(pro_data_t *pro_data) ...@@ -1442,14 +1511,14 @@ static void kk_vp_ota_file_update_start_handle(pro_data_t *pro_data)
static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data) static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data)
{ {
uint8_t err = 0; int err = 0;
uint32_t offset; uint32_t offset;
uint16_t req_size; uint16_t req_size;
uint8_t data[256] = {0}; uint8_t data[1024] = {0};
uint8_t len = 0; uint16_t len = 0;
uint8_t r_len = 0; uint16_t r_len = 0;
uint8_t t_len = 0; uint16_t t_len = 0;
uint8_t *pCrc = NULL; uint8_t *pCrc = NULL;
uint32_t crc; uint32_t crc;
...@@ -1472,7 +1541,6 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data) ...@@ -1472,7 +1541,6 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data)
err = 2; err = 2;
}*/ }*/
data[len++] = err; data[len++] = err;
data[len++] = (offset>>24)&0xff; data[len++] = (offset>>24)&0xff;
...@@ -1485,14 +1553,12 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data) ...@@ -1485,14 +1553,12 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data)
data[len++] = req_size&0xff; data[len++] = req_size&0xff;
pCrc = &data[len]; pCrc = &data[len];
if(err==0){ if(err==0){
int err = fseek(ota_fp, offset, SEEK_SET); int err = fseek(ota_fp, offset, SEEK_SET);
if(err==0){ if(err==0){
while(req_size>t_len){ while(req_size>t_len){
r_len = fread(&data[len], 1, req_size, ota_fp); r_len = fread(&data[len], 1, req_size, ota_fp);
if(r_len>0){
if(r_len>=0){
t_len+=r_len; t_len+=r_len;
len += r_len; len += r_len;
}else{ }else{
...@@ -1503,15 +1569,12 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data) ...@@ -1503,15 +1569,12 @@ static void kk_vp_ota_file_update_data_req_handle(pro_data_t *pro_data)
debug_log(LOG_ERROR_LEVEL,"[fseek fail]offset=%d\n",offset); debug_log(LOG_ERROR_LEVEL,"[fseek fail]offset=%d\n",offset);
} }
} }
crc = CreateCrc32(pCrc, req_size); crc = CreateCrc32(pCrc, req_size);
data[len++] = (crc>>24)&0xff; data[len++] = (crc>>24)&0xff;
data[len++] = (crc>>16)&0xff; data[len++] = (crc>>16)&0xff;
data[len++] = (crc>>8)&0xff; data[len++] = (crc>>8)&0xff;
data[len++] = crc&0xff; data[len++] = crc&0xff;
vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_VOICE_OTA_REQUEST,len,data); vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_VOICE_OTA_REQUEST,len,data);
usleep(100*1000);
} }
...@@ -1532,11 +1595,22 @@ static void kk_vp_ota_file_update_stop_handle(pro_data_t *pro_data) ...@@ -1532,11 +1595,22 @@ static void kk_vp_ota_file_update_stop_handle(pro_data_t *pro_data)
debug_log(LOG_DEBUG_LEVEL,"[VP OTA STOP] ver=%d.%d.%d\n",pro_data->arg[1],pro_data->arg[2],pro_data->arg[3]); debug_log(LOG_DEBUG_LEVEL,"[VP OTA STOP] ver=%d.%d.%d\n",pro_data->arg[1],pro_data->arg[2],pro_data->arg[3]);
} }
} }
static int kk_voice_ota_finish_notify(char *ver)
{
cJSON * root=cJSON_CreateObject();
cJSON_AddStringToObject(root, "nodeid", "*");
cJSON_AddStringToObject(root, "opcode", VOICE_OTA_FINISH);
cJSON_AddStringToObject(root, "status", "success");
cJSON_AddStringToObject(root, "arg", ver);
send_msg_to_module(root);
cJSON_Delete(root);
return 0;
}
static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data) static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data)
{ {
int err = 0; int err = 0;
int ver; int ver;
char verBuf[16] = {0};
unsigned char status; unsigned char status;
if(pro_data->args_len!=4){ if(pro_data->args_len!=4){
...@@ -1546,10 +1620,16 @@ static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data) ...@@ -1546,10 +1620,16 @@ static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data)
ver = MK_UINT24(&pro_data->arg[0]); ver = MK_UINT24(&pro_data->arg[0]);
status = pro_data->arg[3]; status = pro_data->arg[3];
if(status==0x00){
kk_vp_set_state_machine(GET_8009_SNAPSHOOT_STATE);
sprintf(verBuf,"%d.%d.%d",pro_data->arg[0],pro_data->arg[1],pro_data->arg[2]);
kk_vp_voice_version_set(verBuf,strlen(verBuf));
kk_voice_ota_finish_notify(verBuf);
debug_log(LOG_NOTICE_LEVEL,"\n*********************OTA SUCCESS******************\n");
}
debug_log(LOG_DEBUG_LEVEL,"\nver=%d.%d.%d,status=%d\n",pro_data->arg[0],pro_data->arg[1],pro_data->arg[2],status); debug_log(LOG_DEBUG_LEVEL,"\nver=%d.%d.%d,status=%d\n",pro_data->arg[0],pro_data->arg[1],pro_data->arg[2],status);
uint8_t data[5] = {0}; uint8_t data[5] = {0};
data[0] = err; data[0] = err;
data[1] = (ver>>16)&0xff; data[1] = (ver>>16)&0xff;
...@@ -1559,7 +1639,12 @@ static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data) ...@@ -1559,7 +1639,12 @@ static void kk_vp_ota_file_update_status_handle(pro_data_t *pro_data)
vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_VOICE_OTA_STATUS_NOTIFY,sizeof(data),data); vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_VOICE_OTA_STATUS_NOTIFY,sizeof(data),data);
//kk_vp_update_result_check(status,ver); char dateTime[64] = {0};
time_t curTime = time(NULL);
struct tm *ptm = localtime(&curTime);
snprintf(dateTime,sizeof(dateTime),"%d-%d-%d %d:%d:%d",(ptm->tm_year+1900),(ptm->tm_mon+1),ptm->tm_mday,ptm->tm_hour,ptm->tm_min,ptm->tm_sec);
debug_log(LOG_EMERG_LEVEL,"ota stop time:%s\n",dateTime);
} }
...@@ -1584,6 +1669,92 @@ static void kk_vp_ota_info_query_handle(pro_data_t *pro_data) ...@@ -1584,6 +1669,92 @@ static void kk_vp_ota_info_query_handle(pro_data_t *pro_data)
} }
static void kk_voice_switch_handle(pro_data_t *pro_data)
{
int err = 0;
int ver;
unsigned char status;
if((err = pro_data->arg[0])==0) {
debug_log(LOG_DEBUG_LEVEL,"switch=%d\n",pro_data->arg[1]);
}
}
static void kk_voice_volume_handle(pro_data_t *pro_data)
{
int err = 0;
int ver;
unsigned char status;
char vol[8] = {0};
if((err = pro_data->arg[0])==0) {
debug_log(LOG_DEBUG_LEVEL,"volume=%d\n",pro_data->arg[1]);
sprintf(vol,"%d",pro_data->arg[1]);
cJSON *root = cJSON_CreateObject();
cJSON_AddStringToObject(root,"node","*");
cJSON_AddStringToObject(root,"opcode","VOLUME_CTRL");
cJSON_AddStringToObject(root,"arg",vol);
cJSON_AddStringToObject(root,"status","success");
send_msg_to_module(root);
cJSON_Delete(root);
}
}
#define SOUND_SETE_VP_CH 9
void vp_send_data_build_ex(uint16_t opCode,int len,uint8_t *data)
{
uint8_t data_buf[1024] = {0};
int data_len = 0;
pro_data_t pro_data;
memset(&pro_data,0,sizeof(pro_data_t));
pro_data.seq = vp_get_seq();
pro_data.ch = SOUND_SETE_VP_CH;
pro_data.opcode = opCode;
pro_data.cf.ack = 0;
pro_data.cf.dir = 1;
pro_data.cf.sof_flag = 1;
pro_data.args_len = len;
memcpy(pro_data.arg,data,len);
data_len = proto_frame_to_uart(&pro_data,data_buf);
debug_log(LOG_INFO_LEVEL,"\n[LAN->VP]len=%d\n",data_len);
uint8_t dataStr[512] = {0};
for(int i=0;i<data_len;i++){
snprintf((char *)dataStr + strlen((char *)dataStr), sizeof(dataStr), "%02X ",data_buf[i]);
}
debug_log(LOG_INFO_LEVEL,"%s\n\n",dataStr);
eSerial_WriteBuffer(data_buf, data_len);
}
void kk_voice_control(int val)
{
uint8_t res[1] = {0};
if(val>100){
val = 100;
}else if(val<0){
val = 0;
}
res[0] = val;
debug_log(LOG_DEBUG_LEVEL,"sound control\n");
vp_send_data_build_ex(OPCODE_VOICE_CONTROL,sizeof(res),res);
}
void kk_voice_switch(int val)
{
uint8_t res[3] = {0};
if(val==0||val==1){
res[0] = val;
res[1] = 0xff;
res[2] = 0xff;
debug_log(LOG_DEBUG_LEVEL,"voice switch\n");
vp_send_data_build(OPCODE_VOICE_SWITCH,sizeof(res),res);
}
}
\ No newline at end of file
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#define OPCODE_8009_SNAPSHOOT 0x1000 #define OPCODE_8009_SNAPSHOOT 0x1000
#define OPCODE_SNAPSHOOT 0x1001 #define OPCODE_SNAPSHOOT 0x1001
#define OPCODE_SCENE_ID_NOTIFY 0x1003 #define OPCODE_SCENE_ID_NOTIFY 0x1003
#define OPCODE_VOICE_CONTROL 0x1008
#define OPCODE_SYSTEM_TIME_SET 0x1009 #define OPCODE_SYSTEM_TIME_SET 0x1009
#define OPCODE_SYSTEM_TIME_GET 0x100A #define OPCODE_SYSTEM_TIME_GET 0x100A
#define OPCODE_ACTION_NOTIFY 0x100B #define OPCODE_ACTION_NOTIFY 0x100B
...@@ -26,8 +27,8 @@ ...@@ -26,8 +27,8 @@
#define OPCODE_CONFIG_FILE_INFO_GET 0x100F #define OPCODE_CONFIG_FILE_INFO_GET 0x100F
#define OPCODE_CONFIG_FILE_UPDATE_STATUS 0x1010 #define OPCODE_CONFIG_FILE_UPDATE_STATUS 0x1010
#define OPCODE_VOICE_CONTROL_NOTIFY 0x1022 #define OPCODE_VOICE_CONTROL_NOTIFY 0x1022
#define OPCODE_VOICE_SWITCH 0x1023
#define OPCODE_COMPLETED_TEST_OP 0xEDB4
#define OPCODE_VOICE_OTA_UPGRADE_STATR 0x1016 #define OPCODE_VOICE_OTA_UPGRADE_STATR 0x1016
#define OPCODE_VOICE_OTA_REQUEST 0x1017 #define OPCODE_VOICE_OTA_REQUEST 0x1017
#define OPCODE_VOICE_OTA_UPGRADE_STOP 0x1018 #define OPCODE_VOICE_OTA_UPGRADE_STOP 0x1018
...@@ -64,7 +65,7 @@ void kk_vp_get_config_file_info(void); ...@@ -64,7 +65,7 @@ void kk_vp_get_config_file_info(void);
void kk_vp_get_ota_file_info(void); void kk_vp_get_ota_file_info(void);
void kk_vp_ota_file_update_start(uint32_t ver);
void kk_vp_ota_file_update_stop(uint32_t ver); void kk_vp_ota_file_update_stop(uint32_t ver);
...@@ -85,15 +86,14 @@ void vp_scene_id_map_deinit(void); ...@@ -85,15 +86,14 @@ void vp_scene_id_map_deinit(void);
int vp_scene_id_item_add(int scene_id); int vp_scene_id_item_add(int scene_id);
int vp_scene_id_item_load(int scene_id,uint16_t map_id); int vp_scene_id_item_load(int scene_id,uint16_t map_id);
int vp_scene_id_map_save(void); int vp_scene_id_map_save(void);
int _vp_get_cfg_file_crc32(void); int _vp_get_cfg_file_crc32(void);
int _vp_get_cfg_file_size(void); int _vp_get_cfg_file_size(void);
void kk_voice_control(int val);
int kk_vp_voice_version_get(char *ver,int len);
void kk_voice_switch(int val);
void kk_vp_ota_file_update_start(char* file);
void vp_send_data_build(uint16_t opCode,uint8_t len,uint8_t *data);
#endif #endif
...@@ -94,7 +94,7 @@ static void watcher_cb (struct ev_loop *loop ,struct ev_io *w, int revents) ...@@ -94,7 +94,7 @@ static void watcher_cb (struct ev_loop *loop ,struct ev_io *w, int revents)
loop_ctrl->isconnect = 1; loop_ctrl->isconnect = 1;
//if sub, need filter sbuscribe str //if sub, need filter sbuscribe str
if (IPC_PLAT2MID == loop_ctrl->type || IPC_MID2PLAT == loop_ctrl->type){ if (IPC_PLAT2MID == loop_ctrl->type || IPC_MID2PLAT == loop_ctrl->type){
validDat = _parse_data_by_subscribe((char*)dat, bytes, &validLen, &chlMark); validDat = _parse_data_by_subscribe((char*)dat, bytes, &validLen, (void**)&chlMark);
}else{ }else{
validDat = dat; validDat = dat;
validLen = bytes; validLen = bytes;
...@@ -293,7 +293,7 @@ int __nanomsg_init(Bloop_ctrl_t *loop_ctrl, ipc_type type,char* chlMark, char* i ...@@ -293,7 +293,7 @@ int __nanomsg_init(Bloop_ctrl_t *loop_ctrl, ipc_type type,char* chlMark, char* i
* *
* *
==================================*/ ==================================*/
void loop_thread(void *arg){ void* loop_thread(void *arg){
INFO_PRINT("loop_thread start!\r\n"); INFO_PRINT("loop_thread start!\r\n");
ev_run (gloop, 0); ev_run (gloop, 0);
......
...@@ -615,23 +615,24 @@ static void accept_cb(struct ev_loop *loop, struct ev_io *watcher, int revents) ...@@ -615,23 +615,24 @@ static void accept_cb(struct ev_loop *loop, struct ev_io *watcher, int revents)
return 0; return 0;
}*/ }*/
static void loop_tcp_thread(void *arg){ static void* loop_tcp_thread(void *arg){
INFO_PRINT("loop_tcp_thread start!\r\n"); INFO_PRINT("loop_tcp_thread start!\r\n");
int sd; int sd;
g_loop = ev_loop_new(EVBACKEND_EPOLL); g_loop = ev_loop_new(EVBACKEND_EPOLL);
if (NULL == g_loop) { if (NULL == g_loop) {
INFO_PRINT("loop create failed\r\n"); INFO_PRINT("loop create failed\r\n");
return; return NULL;
} }
if (server_socket_init(&sd, NULL, CCU_TCP_PORT) < 0) { if (server_socket_init(&sd, NULL, CCU_TCP_PORT) < 0) {
INFO_PRINT("server init failed\r\n"); INFO_PRINT("server init failed\r\n");
return; return NULL;
} }
ev_io_init(&w_accept, accept_cb, sd, EV_READ); ev_io_init(&w_accept, accept_cb, sd, EV_READ);
ev_io_start(g_loop, &w_accept); ev_io_start(g_loop, &w_accept);
ev_run (g_loop, 0); ev_run (g_loop, 0);
close(sd); close(sd);
return NULL;
INFO_PRINT("loop_tcp_thread================== end \n"); INFO_PRINT("loop_tcp_thread================== end \n");
} }
...@@ -828,7 +829,7 @@ err1: ...@@ -828,7 +829,7 @@ err1:
return -1; return -1;
} }
static void loop_tcp_client_thread(void *arg){ static void* loop_tcp_client_thread(void *arg){
INFO_PRINT("loop_tcp_client_thread start!\r\n"); INFO_PRINT("loop_tcp_client_thread start!\r\n");
char buf[1024]= {0}; char buf[1024]= {0};
int ret = 0; int ret = 0;
...@@ -904,6 +905,7 @@ static void loop_tcp_client_thread(void *arg){ ...@@ -904,6 +905,7 @@ static void loop_tcp_client_thread(void *arg){
INFO_PRINT("network error, try connect again! \n"); INFO_PRINT("network error, try connect again! \n");
close(g_client_ctrl.sd); close(g_client_ctrl.sd);
} }
return NULL;
INFO_PRINT("loop_tcp_client_thread================== end \n"); INFO_PRINT("loop_tcp_client_thread================== end \n");
} }
......
...@@ -10,7 +10,7 @@ ...@@ -10,7 +10,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdarg.h> #include <stdarg.h>
#include <memory.h> #include <memory.h>
#include <ctype.h>
#include <pthread.h> #include <pthread.h>
#include <unistd.h> #include <unistd.h>
#include <sys/prctl.h> #include <sys/prctl.h>
......
...@@ -46,6 +46,8 @@ ...@@ -46,6 +46,8 @@
#define OTA_IMG_PATH "/data/OTA/" #define OTA_IMG_PATH "/data/OTA/"
#define OTA_IMG_FILE "/data/OTA/app_squashfs.img" #define OTA_IMG_FILE "/data/OTA/app_squashfs.img"
#define OTA_IMG_FILE_MD5 "/data/OTA/app_squashfs.img.md5" #define OTA_IMG_FILE_MD5 "/data/OTA/app_squashfs.img.md5"
#define KK_DEVICESECRET_PATH "/data/kk/kk_deviceSecret.txt"
#define KK_TOKEN_PATH "/data/kk/kk_token.txt"
enum { enum {
DEVICE_OFFLINE = 0, DEVICE_OFFLINE = 0,
DEVICE_ONLINE, DEVICE_ONLINE,
......
...@@ -115,7 +115,7 @@ int kk_area_init(void) ...@@ -115,7 +115,7 @@ int kk_area_init(void)
if(res != SUCCESS_RETURN){ if(res != SUCCESS_RETURN){
ERROR_PRINT("[%s][%d]kk_area_init FAIL!!!\n",__FUNCTION__,__LINE__); ERROR_PRINT("[%s][%d]kk_area_init FAIL!!!\n",__FUNCTION__,__LINE__);
} }
kk_floor_add("默认","1");//创建默认楼层 //kk_floor_add("默认","1");//创建默认楼层
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
static int kk_check_room_exist(const char *roomId) static int kk_check_room_exist(const char *roomId)
...@@ -303,11 +303,13 @@ int kk_floor_add(const char *name,const char *floorId) ...@@ -303,11 +303,13 @@ int kk_floor_add(const char *name,const char *floorId)
kk_area_ctx_t *ctx = _kk_area_get_ctx(); kk_area_ctx_t *ctx = _kk_area_get_ctx();
char *sqlCmd = NULL; char *sqlCmd = NULL;
char *zErrMsg = 0; char *zErrMsg = 0;
const char *insertCmd = NULL;
if(kk_check_floor_exist(floorId)){ if(kk_check_floor_exist(floorId)){
return SUCCESS_RETURN; insertCmd = "UPDATE floorInfo SET name='%s' WHERE floorId= '%s'";
} }else{
const char *insertCmd = "insert into floorInfo (name, floorId) \ insertCmd = "insert into floorInfo (name, floorId) \
values ('%s','%s');"; values ('%s','%s');";
}
_kk_area_lock(); _kk_area_lock();
sqlCmd = sqlite3_mprintf(insertCmd,name,floorId); sqlCmd = sqlite3_mprintf(insertCmd,name,floorId);
...@@ -758,7 +760,7 @@ cJSON * kk_get_roomids_by_floorId(const char* floorId) ...@@ -758,7 +760,7 @@ cJSON * kk_get_roomids_by_floorId(const char* floorId)
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
cJSON *roomJson =cJSON_CreateObject(); cJSON *roomJson =cJSON_CreateObject();
pRoomId = sqlite3_column_text(stmt, DB_ROOM_ID); pRoomId = (char*)sqlite3_column_text(stmt, DB_ROOM_ID);
cJSON_AddStringToObject(roomJson, "roomId", pRoomId); cJSON_AddStringToObject(roomJson, "roomId", pRoomId);
cJSON_AddItemToArray(roomIdsAry,roomJson); cJSON_AddItemToArray(roomIdsAry,roomJson);
} }
...@@ -766,7 +768,7 @@ cJSON * kk_get_roomids_by_floorId(const char* floorId) ...@@ -766,7 +768,7 @@ cJSON * kk_get_roomids_by_floorId(const char* floorId)
sqlite3_free(sqlCmd); sqlite3_free(sqlCmd);
return roomIdsAry; return roomIdsAry;
} }
char *kk_get_floorIds_ary(void) kk_floor_list_t *kk_get_floorIds_ary(void)
{ {
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
char *pfloorId = NULL; char *pfloorId = NULL;
...@@ -880,7 +882,7 @@ static int kk_check_floorId(int nodeId) ...@@ -880,7 +882,7 @@ static int kk_check_floorId(int nodeId)
_kk_area_lock(); _kk_area_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL); sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
pnode = sqlite3_column_text(stmt, DB_FLOOR_ID); pnode = (char*)sqlite3_column_text(stmt, DB_FLOOR_ID);
if( atoi(pnode)==nodeId) if( atoi(pnode)==nodeId)
{ {
isExist = 1; isExist = 1;
...@@ -891,7 +893,7 @@ static int kk_check_floorId(int nodeId) ...@@ -891,7 +893,7 @@ static int kk_check_floorId(int nodeId)
_kk_area_unlock(); _kk_area_unlock();
return isExist; return isExist;
} }
int kk_creater_nodeid(char *floorId) int kk_creater_floorid(char *floorId)
{ {
static int next = 100; static int next = 100;
......
...@@ -53,5 +53,11 @@ int kk_room_set_floor_info(const char*floorId,const char* floorName,const char * ...@@ -53,5 +53,11 @@ int kk_room_set_floor_info(const char*floorId,const char* floorName,const char *
int kk_floor_delete_all(void); int kk_floor_delete_all(void);
int kk_floor_delete_by_id(char *floorId); int kk_floor_delete_by_id(char *floorId);
int kk_set_floor_to_default(const char*floorId); int kk_set_floor_to_default(const char*floorId);
kk_floor_list_t *kk_get_floorIds_ary(void);
int kk_floor_add(const char *name,const char *floorId);
cJSON * kk_get_roomids_by_floorId(const char* floorId);
int kk_creater_floorid(char *floorId);
void kk_free_floor_list(void);
cJSON *kk_get_roomIds_ary(void);
#endif #endif
...@@ -40,7 +40,7 @@ typedef struct { ...@@ -40,7 +40,7 @@ typedef struct {
#define DM_READ_ONLY #define DM_READ_ONLY
#endif #endif
#define DM_MSG_VERSION "1.0" #define DM_MSG_VERSION "1.0"
const char DM_MSG_INFO[] DM_READ_ONLY; //const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_REGISTER_TOPIC_REPLY "/thing/sub/register_reply" #define KK_REGISTER_TOPIC_REPLY "/thing/sub/register_reply"
#define KK_ADD_TOPIC_REPLY "/thing/topo/add_reply" #define KK_ADD_TOPIC_REPLY "/thing/topo/add_reply"
...@@ -118,6 +118,8 @@ const char DM_MSG_INFO[] DM_READ_ONLY; ...@@ -118,6 +118,8 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_DEL_HISTORYALARM_REPLY "/thing/service/delAlarm_reply" #define KK_THING_SERVICE_DEL_HISTORYALARM_REPLY "/thing/service/delAlarm_reply"
#define KK_THING_SERVICE_DELETEFLOORS "/thing/service/deleteFloors" #define KK_THING_SERVICE_DELETEFLOORS "/thing/service/deleteFloors"
#define KK_THING_SERVICE_DELETEFLOORS_REPLY "/thing/service/deleteFloors_reply" #define KK_THING_SERVICE_DELETEFLOORS_REPLY "/thing/service/deleteFloors_reply"
#define KK_THING_SERVICE_UPDATEFLOORS "/thing/service/updateFloors"
#define KK_THING_SERVICE_UPDATEFLOORS_REPLY "/thing/service/updateFloors_reply"
void kk_sendData2app(void *info, void *payload,int isAsync); void kk_sendData2app(void *info, void *payload,int isAsync);
int dm_msg_thing_sub_register(_IN_ char productCode[DEVICE_CODE_MAXLEN], _IN_ char deviceCode[DEVICE_CODE_MAXLEN], int dm_msg_thing_sub_register(_IN_ char productCode[DEVICE_CODE_MAXLEN], _IN_ char deviceCode[DEVICE_CODE_MAXLEN],
......
...@@ -706,19 +706,8 @@ static int kk_service_execute_action(cJSON *action,dm_mgr_dev_node_t *node) ...@@ -706,19 +706,8 @@ static int kk_service_execute_action(cJSON *action,dm_mgr_dev_node_t *node)
} }
void *param = cJSON_Print(action); void *param = cJSON_Print(action);
kk_msg_execute_property_set(node->productCode,node->deviceCode,param,node->fatherDeviceCode); kk_msg_execute_property_set(node->productCode,node->deviceCode,param,node->fatherDeviceCode);
#if 0
for(idx = 0; idx < shadow->property_number; idx++){
pCurrentItem = shadow->properties + idx;
if(pCurrentItem != NULL){
cJSON *pCurrentData = cJSON_GetObjectItem(action, pCurrentItem->identifier);
if(pCurrentData != NULL){
}
}
}
#endif
free(param); free(param);
param = NULL;
return SUCCESS_RETURN; return SUCCESS_RETURN;
...@@ -816,6 +805,25 @@ static int kk_service_setFloor_handle(cJSON *params) ...@@ -816,6 +805,25 @@ static int kk_service_setFloor_handle(cJSON *params)
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
/************************************************************ /************************************************************
*功能描述:更新楼层
*输入参数:params:云端下发数据,包含房间号等
*输出参数:无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
static int kk_service_updateFloor_handle(cJSON *params)
{
if(params == NULL){
return INVALID_PARAMETER;
}
cJSON * floorId = cJSON_GetObjectItem(params,MSG_AREA_ROOM_FLOOR_ID);
if(floorId == NULL) return INVALID_PARAMETER;
cJSON * name = cJSON_GetObjectItem(params,MSG_AREA_ADDROOM_DEVICENAME);
if(name == NULL) return INVALID_PARAMETER;
kk_floor_add(name->valuestring,floorId->valuestring);
return SUCCESS_RETURN;
}
/************************************************************
*功能描述:添加楼层REPLY *功能描述:添加楼层REPLY
*输入参数:params:云端下发数据,包含房间号等 *输入参数:params:云端下发数据,包含房间号等
*输出参数:无 *输出参数:无
...@@ -878,32 +886,12 @@ static int kk_service_addFloor_handle(cJSON *params,cJSON *msgId,cJSON *root) ...@@ -878,32 +886,12 @@ static int kk_service_addFloor_handle(cJSON *params,cJSON *msgId,cJSON *root)
if(params == NULL || msgId == NULL ||root == NULL){ if(params == NULL || msgId == NULL ||root == NULL){
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
cJSON *floorArray = cJSON_GetObjectItem(params, MSG_AREA_ROOM_FLOORS); cJSON * name = cJSON_GetObjectItem(params,MSG_AREA_ADDROOM_DEVICENAME);
if(floorArray == NULL){
ERROR_PRINT("DATA ERROR!!!\n");
return INVALID_PARAMETER;
}
//kk_floor_delete_all();
cJSON * item = floorArray->child;
while(item != NULL){
cJSON * name = cJSON_GetObjectItem(item,MSG_AREA_ADDROOM_DEVICENAME);
if(name == NULL) return INVALID_PARAMETER; if(name == NULL) return INVALID_PARAMETER;
kk_creater_nodeid(floorId); kk_creater_floorid(floorId);
kk_floor_add(name->valuestring,floorId); kk_floor_add(name->valuestring,floorId);
cJSON * rooms = cJSON_GetObjectItem(item,MSG_AREA_ROOM_FLOOR_ROOMS);
if(rooms == NULL) return INVALID_PARAMETER;
cJSON * itemroom = rooms->child;
while(itemroom != NULL){
cJSON * roomid = cJSON_GetObjectItem(itemroom,MSG_AREA_ROOM_ROOMID);
if(roomid == NULL){
return INVALID_PARAMETER;
}
kk_room_set_floor_info(floorId,name->valuestring,roomid->valuestring);
itemroom = itemroom->next;
}
kk_service_addFloor_reply(root,msgId,floorId,name->valuestring); kk_service_addFloor_reply(root,msgId,floorId,name->valuestring);
item = item->next;
}
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
...@@ -916,23 +904,12 @@ static int kk_service_addFloor_handle(cJSON *params,cJSON *msgId,cJSON *root) ...@@ -916,23 +904,12 @@ static int kk_service_addFloor_handle(cJSON *params,cJSON *msgId,cJSON *root)
*************************************************************/ *************************************************************/
static int kk_service_deleteFloor_handle(cJSON *params) static int kk_service_deleteFloor_handle(cJSON *params)
{ {
char floorId[16] = {0};
if(params == NULL){ if(params == NULL){
return INVALID_PARAMETER; return INVALID_PARAMETER;
} }
cJSON *floorArray = cJSON_GetObjectItem(params, MSG_AREA_ROOM_FLOORS); cJSON * floorId = cJSON_GetObjectItem(params,MSG_AREA_ROOM_FLOOR_ID);
if(floorArray == NULL){
ERROR_PRINT("DATA ERROR!!!\n");
return INVALID_PARAMETER;
}
cJSON * item = floorArray->child;
while(item != NULL){
cJSON * floorId = cJSON_GetObjectItem(item,MSG_AREA_ROOM_FLOOR_ID);
if(floorId == NULL) return INVALID_PARAMETER; if(floorId == NULL) return INVALID_PARAMETER;
kk_floor_delete_by_id(floorId->valuestring); kk_floor_delete_by_id(floorId->valuestring);
kk_set_floor_to_default(floorId->valuestring);
item = item->next;
}
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
/************************************************************ /************************************************************
...@@ -1766,6 +1743,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data) ...@@ -1766,6 +1743,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
kk_msg_execute_property_set(node->productCode,node->deviceCode,out_,node->fatherDeviceCode); kk_msg_execute_property_set(node->productCode,node->deviceCode,out_,node->fatherDeviceCode);
cJSON_Delete(root_); cJSON_Delete(root_);
free(out_); free(out_);
out_ = NULL;
} }
} }
} }
...@@ -1870,6 +1848,13 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data) ...@@ -1870,6 +1848,13 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
kk_service_getFloor_handle(info_root,msgId); kk_service_getFloor_handle(info_root,msgId);
//kk_service_common_reply(info_root,msgId,KK_THING_SERVICE_SETFLOOR_REPLY); //kk_service_common_reply(info_root,msgId,KK_THING_SERVICE_SETFLOOR_REPLY);
} }
else if(strcmp(typeJson->valuestring,KK_THING_SERVICE_UPDATEFLOORS) == 0){
INFO_PRINT("UPDATEFLOOR \n");
cJSON *msgId = cJSON_GetObjectItem(payload, MSG_COMMON_MSGID);
cJSON *paramStr = cJSON_GetObjectItem(payload,MSG_PARAMS_STR);
kk_service_updateFloor_handle(paramStr);
kk_service_common_reply(info_root,msgId,KK_THING_SERVICE_UPDATEFLOORS_REPLY);
}
else{ else{
INFO_PRINT("Error msgtype!!! \n"); INFO_PRINT("Error msgtype!!! \n");
} }
...@@ -1878,6 +1863,7 @@ directReturn: ...@@ -1878,6 +1863,7 @@ directReturn:
_iotx_linkkit_mutex_unlock(); _iotx_linkkit_mutex_unlock();
if(payload_Str != NULL){ if(payload_Str != NULL){
free(payload_Str); free(payload_Str);
payload_Str = NULL;
} }
cJSON_Delete(json); cJSON_Delete(json);
} }
......
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#include "sqlite3.h" #include "sqlite3.h"
#include "kk_log.h" #include "kk_log.h"
#include "kk_hal.h" #include "kk_hal.h"
#include "kk_area_handle.h"
extern sqlite3 *g_kk_pDb; extern sqlite3 *g_kk_pDb;
typedef struct { typedef struct {
...@@ -699,7 +700,7 @@ int kk_subDev_set_action_by_productType(const char *productType,const char *room ...@@ -699,7 +700,7 @@ int kk_subDev_set_action_by_productType(const char *productType,const char *room
continue; continue;
} }
if(strcmp(typeArray[k],"air conditioning gateway") == 0){ if(strcmp(typeArray[k],"air conditioning gateway") == 0){
_kk_indoor_air_handle(pDeviceCode,sceneId,propertyName,propertyValue,type,delay,node->fatherDeviceCode); _kk_indoor_air_handle(pDeviceCode,(char*)sceneId,(char*)propertyName,(char*)propertyValue,(char*)type,delay,node->fatherDeviceCode);
continue; continue;
} }
for(idx = 0; idx < node->dev_shadow->property_number; idx++){ for(idx = 0; idx < node->dev_shadow->property_number; idx++){
......
...@@ -1435,8 +1435,8 @@ int main(const int argc, const char **argv) ...@@ -1435,8 +1435,8 @@ int main(const int argc, const char **argv)
} }
kk_sqlite_init(); kk_sqlite_init();
kk_tsl_api_init(); kk_tsl_api_init();
kk_ipc_init(IPC_MID2APP, mid_cb, NULL, NULL); kk_ipc_init(IPC_MID2APP, (ipc_cb*)mid_cb, NULL, NULL);
kk_ipc_init(IPC_MID2PLAT, mid2p_cb, NULL, "*"); kk_ipc_init(IPC_MID2PLAT, (ipc_cb*)mid2p_cb, NULL, "*");
kk_init_dmproc(); kk_init_dmproc();
kk_heartbeat_init(); kk_heartbeat_init();
......
...@@ -510,7 +510,7 @@ do_exit: ...@@ -510,7 +510,7 @@ do_exit:
#undef MSG_REQUEST_LEN #undef MSG_REQUEST_LEN
} }
const char OTA_DM_MSG_INFO[] = "{\"msgtype\":\"%s\",\"productCode\":\"%s\",\"deviceCode\":\"%s\"}";
const char KK_URI_OTA_PROCESS[] = "/ota/device/progress/%s/%s"; const char KK_URI_OTA_PROCESS[] = "/ota/device/progress/%s/%s";
int OTA_publishProgress(void *handle, char* payload){ int OTA_publishProgress(void *handle, char* payload){
OTA_Struct_pt h_ota = (OTA_Struct_pt) handle; OTA_Struct_pt h_ota = (OTA_Struct_pt) handle;
...@@ -535,7 +535,7 @@ int OTA_publishProgress(void *handle, char* payload){ ...@@ -535,7 +535,7 @@ int OTA_publishProgress(void *handle, char* payload){
/* inform OTA to topic: "/ota/device/progress/$(product_key)/$(device_name)" */ /* inform OTA to topic: "/ota/device/progress/$(product_key)/$(device_name)" */
// int topicLen = strlen(DM_MSG_INFO) + strlen(h_ota->product_key) + strlen(h_ota->device_name) + 1; // int topicLen = strlen(DM_MSG_INFO) + strlen(h_ota->product_key) + strlen(h_ota->device_name) + 1;
int topicLen = strlen(DM_MSG_INFO)+10+msgTypeLen+strlen(h_ota->product_key)+strlen(h_ota->device_name)+1; int topicLen = strlen(OTA_DM_MSG_INFO)+10+msgTypeLen+strlen(h_ota->product_key)+strlen(h_ota->device_name)+1;
char *topicBuf = malloc(topicLen); char *topicBuf = malloc(topicLen);
if(topicBuf == NULL){ if(topicBuf == NULL){
OTA_LOG_ERROR("MALLOC is NULL\n"); OTA_LOG_ERROR("MALLOC is NULL\n");
...@@ -543,7 +543,7 @@ int OTA_publishProgress(void *handle, char* payload){ ...@@ -543,7 +543,7 @@ int OTA_publishProgress(void *handle, char* payload){
return IOT_OTAE_INVALID_PARAM; return IOT_OTAE_INVALID_PARAM;
} }
HAL_Snprintf(topicBuf, topicLen, DM_MSG_INFO,msgTypeStr,h_ota->product_key, h_ota->device_name,""); HAL_Snprintf(topicBuf, topicLen, OTA_DM_MSG_INFO,msgTypeStr,h_ota->product_key, h_ota->device_name,"");
cJSON *root=cJSON_CreateObject(); cJSON *root=cJSON_CreateObject();
cJSON_AddStringToObject(root, "info", topicBuf); cJSON_AddStringToObject(root, "info", topicBuf);
......
...@@ -46,6 +46,7 @@ static int kk_scene_embed_find(const char *sceneId); ...@@ -46,6 +46,7 @@ static int kk_scene_embed_find(const char *sceneId);
static int kk_scene_invokeService_find(const char *sceneId); static int kk_scene_invokeService_find(const char *sceneId);
int kk_scene_push_timer_info(time_t starttime,int repeatday,char *sceneId); int kk_scene_push_timer_info(time_t starttime,int repeatday,char *sceneId);
int bodySensor_load(void);
/************************************************************* /*************************************************************
函数实现 函数实现
*************************************************************/ *************************************************************/
......
...@@ -84,5 +84,6 @@ int kk_scene_parse_deletescene(char *sceneId); ...@@ -84,5 +84,6 @@ int kk_scene_parse_deletescene(char *sceneId);
int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdate); int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdate);
int kk_scene_execute_quickpanel(const char *buttonId,char *deviceCode); int kk_scene_execute_quickpanel(const char *buttonId,char *deviceCode);
int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_action_detail_t detail); int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_action_detail_t detail);
int BodySensorTrigger_check(void);
#endif #endif
...@@ -1388,7 +1388,7 @@ int kk_tsl_get_event_by_identifier(_IN_ kk_tsl_t *dev_shadow, _IN_ char *identif ...@@ -1388,7 +1388,7 @@ int kk_tsl_get_event_by_identifier(_IN_ kk_tsl_t *dev_shadow, _IN_ char *identif
static int _kk_tsl_get_service_by_identifier(_IN_ kk_tsl_t *shadow, _IN_ char *identifier, _OU_ void **service) static int _kk_tsl_get_service_by_identifier(_IN_ kk_tsl_t *shadow, _IN_ char *identifier, _OU_ void **service)
{ {
int index = 0; int index = 0;
kk_tsl_event_t *search_event = NULL; kk_tsl_service_t *search_service = NULL;
if (shadow == NULL || identifier == NULL || if (shadow == NULL || identifier == NULL ||
service == NULL || *service != NULL) { service == NULL || *service != NULL) {
...@@ -1396,10 +1396,10 @@ static int _kk_tsl_get_service_by_identifier(_IN_ kk_tsl_t *shadow, _IN_ char *i ...@@ -1396,10 +1396,10 @@ static int _kk_tsl_get_service_by_identifier(_IN_ kk_tsl_t *shadow, _IN_ char *i
} }
for (index = 0; index < shadow->service_number; index++) { for (index = 0; index < shadow->service_number; index++) {
search_event = shadow->services + index; search_service = shadow->services + index;
if ((strlen(search_event->identifier) == strlen(identifier)) && if ((strlen(search_service->identifier) == strlen(identifier)) &&
(memcmp(search_event->identifier, identifier, strlen(identifier)) == 0)) { (memcmp(search_service->identifier, identifier, strlen(identifier)) == 0)) {
*service = (void *)search_event; *service = (void *)search_service;
return SUCCESS_RETURN; return SUCCESS_RETURN;
} }
} }
......
...@@ -292,7 +292,7 @@ static int _kk_tsl_array_enum_parse(_IN_ kk_tsl_data_value_t *data_value, _IN_ l ...@@ -292,7 +292,7 @@ static int _kk_tsl_array_enum_parse(_IN_ kk_tsl_data_value_t *data_value, _IN_ l
} }
static int _kk_tsl_array_date_parse(_IN_ kk_tsl_data_value_t *data_value, _IN_ lite_cjson_t *root) static int _kk_tsl_array_date_parse(_IN_ kk_tsl_data_value_t *data_value, _IN_ lite_cjson_t *root)
{ {
kk_tsl_data_value_complex_t *complex_array = (kk_tsl_data_value_t *)data_value->value; kk_tsl_data_value_complex_t *complex_array = (kk_tsl_data_value_complex_t *)data_value->value;
complex_array->value = malloc((complex_array->size) * (sizeof(char *))); complex_array->value = malloc((complex_array->size) * (sizeof(char *)));
if (complex_array->value == NULL) { if (complex_array->value == NULL) {
......
CONFIG_ENV_CFLAGS += \ CONFIG_ENV_CFLAGS += \
-Os -Wall \ -Os -Werror \
-g3 --coverage \ -g3 --coverage \
-D_PLATFORM_IS_LINUX_ \ -D_PLATFORM_IS_LINUX_ \
......
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