Commit a8ec59b6 authored by 尹佳钦's avatar 尹佳钦

去除编译警告,离线语音面板接入空调,新风,线控器,窗帘

parent 23221610
...@@ -464,6 +464,7 @@ int kk_lan_get_msg_id_str(char *msgId,int size) ...@@ -464,6 +464,7 @@ int kk_lan_get_msg_id_str(char *msgId,int size)
{ {
memset(msgId,0,size); memset(msgId,0,size);
snprintf(msgId,size,"%d",kk_lan_get_msg_id()); snprintf(msgId,size,"%d",kk_lan_get_msg_id());
return 0;
} }
...@@ -495,7 +496,7 @@ int kk_lan_add_val_to_obj(cJSON *obj,cJSON *val,const char *id) ...@@ -495,7 +496,7 @@ int kk_lan_add_val_to_obj(cJSON *obj,cJSON *val,const char *id)
}else if(val->type==cJSON_String){ }else if(val->type==cJSON_String){
cJSON_AddStringToObject(obj,id,val->valuestring); cJSON_AddStringToObject(obj,id,val->valuestring);
}else{ }else{
debug_log(LOG_DEBUG_LEVEL,"[err] nonsupport type(%s).\n",val->type); debug_log(LOG_DEBUG_LEVEL,"[err] nonsupport type(%d).\n",val->type);
return -1; return -1;
} }
return 0; return 0;
...@@ -525,7 +526,7 @@ int kk_lan_replace_val_to_obj(cJSON *obj,cJSON *val,const char *id) ...@@ -525,7 +526,7 @@ int kk_lan_replace_val_to_obj(cJSON *obj,cJSON *val,const char *id)
}else if(val->type==cJSON_String){ }else if(val->type==cJSON_String){
cJSON_ReplaceItemInObject(obj, id, cJSON_CreateString(val->valuestring)); cJSON_ReplaceItemInObject(obj, id, cJSON_CreateString(val->valuestring));
}else{ }else{
debug_log(LOG_DEBUG_LEVEL,"[err] nonsupport type(%s).\n",val->type); debug_log(LOG_DEBUG_LEVEL,"[err] nonsupport type(%d).\n",val->type);
return -1; return -1;
} }
return 0; return 0;
......
...@@ -18,8 +18,10 @@ ...@@ -18,8 +18,10 @@
#include "kk_lan_ctrl.h" #include "kk_lan_ctrl.h"
#include "kk_lan_sync.h" #include "kk_lan_sync.h"
#include "kk_lan_debug.h" #include "kk_lan_debug.h"
#include "kk_findccu_handle.h"
#include "kk_voice_panel_handle.h" #include "kk_voice_panel_handle.h"
#include "kk_lan_node_db.h"
#include "kk_oldccu_msg.h"
const char DM_MSG_TO_MIDDWARE[] = "{\"msgtype\":\"%s\",\"productCode\":\"%s\",\"deviceCode\":\"%s\"}"; const char DM_MSG_TO_MIDDWARE[] = "{\"msgtype\":\"%s\",\"productCode\":\"%s\",\"deviceCode\":\"%s\"}";
...@@ -219,7 +221,7 @@ static int kk_loginccu_ack(cJSON *arg,int sockfd) ...@@ -219,7 +221,7 @@ static int kk_loginccu_ack(cJSON *arg,int sockfd)
} }
//构建hw信息 //构建hw信息
static cJSON *kk_zb_dev_hw_info_build(const char *deviceCode,cJSON * productCode,int online,const char *hw_ver,const char *sw_ver) static cJSON *kk_zb_dev_hw_info_build(const char *deviceCode,const char *productCode,int online,const char *hw_ver,const char *sw_ver)
{ {
cJSON *item; cJSON *item;
char mac[32] = {0}; char mac[32] = {0};
......
...@@ -7,4 +7,10 @@ ...@@ -7,4 +7,10 @@
int kk_data_handle(cJSON *json,int sockfd); int kk_data_handle(cJSON *json,int sockfd);
void kk_handle_sync_info(void); void kk_handle_sync_info(void);
void KK_Data_FromMid(void* str,int len); void KK_Data_FromMid(void* str,int len);
int kk_lan_property_syn_deal(const char *deviceCode,cJSON *properties);
int send_msg_to_module(cJSON *root);
void device_add_sync(cJSON *payload);
void kk_handle_sync_push_info(void);
#endif #endif
\ No newline at end of file
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
#include "kk_data_mng.h" #include "kk_data_mng.h"
#include "kk_lan_node_db.h" #include "kk_lan_node_db.h"
#include "kk_oldccu_msg.h" #include "kk_oldccu_msg.h"
#include "kk_utils.h"
static kk_map_dev_ctx g_map_dev_mgr = {0}; static kk_map_dev_ctx g_map_dev_mgr = {0};
...@@ -192,7 +192,7 @@ static kk_map_dev_node_t *kk_map_dev_node_create_ex(const char *deviceCode,const ...@@ -192,7 +192,7 @@ static kk_map_dev_node_t *kk_map_dev_node_create_ex(const char *deviceCode,const
} }
static char *kk_open_lan_cfg_file(char *deviceCode) static char *kk_open_lan_cfg_file(const char *deviceCode)
{ {
char path[128] = {0}; char path[128] = {0};
unsigned int filesize; unsigned int filesize;
...@@ -226,7 +226,7 @@ static char *kk_open_lan_cfg_file(char *deviceCode) ...@@ -226,7 +226,7 @@ static char *kk_open_lan_cfg_file(char *deviceCode)
return buf; return buf;
} }
//todo: //todo:
int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId,int operate_type) int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId)
{ {
static int next = 1; static int next = 1;
int node=-1; int node=-1;
...@@ -245,7 +245,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId,int operate_type ...@@ -245,7 +245,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId,int operate_type
while(kk_check_lan_node(next)){ while(kk_check_lan_node(next)){
++next; ++next;
} }
if(0==kk_lan_db_node_insert(deviceCode,channel,next,operate_type)){ if(0==kk_lan_db_node_insert(deviceCode,channel,next)){
node=next; node=next;
} }
} }
...@@ -264,7 +264,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId,int operate_type ...@@ -264,7 +264,7 @@ int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId,int operate_type
static char* kk_value_int_map_string(char *opcodemap,kk_map_dev_node_t *node,int idx) static char* kk_value_int_map_string(char *opcodemap,kk_map_dev_node_t *node,int idx)
{ {
if(opcodemap == NULL || node == NULL){ if(opcodemap == NULL || node == NULL){
return -1; return "";
} }
cJSON * oldccuItem = node->oldccu->child; cJSON * oldccuItem = node->oldccu->child;
while(oldccuItem != NULL){ while(oldccuItem != NULL){
...@@ -321,7 +321,7 @@ int mac_switchto_deviceCode(char *mac,char * deviceCode) ...@@ -321,7 +321,7 @@ int mac_switchto_deviceCode(char *mac,char * deviceCode)
deviceCode[j]='\0'; /*在串s结尾加结束标志*/ deviceCode[j]='\0'; /*在串s结尾加结束标志*/
return 0; return 0;
} }
int _deviceCode_switchto_mac(char * deviceCode,char *mac) int _deviceCode_switchto_mac(const char * deviceCode,char *mac)
{ {
char deviceCode_bak[33] = {0}; char deviceCode_bak[33] = {0};
int i, j; int i, j;
...@@ -435,7 +435,7 @@ int kk_map_dev_update_int_value_by_devicecode(char *deviceCode,char *identifier, ...@@ -435,7 +435,7 @@ int kk_map_dev_update_int_value_by_devicecode(char *deviceCode,char *identifier,
} }
int kk_map_dev_search_by_deviceCode(char *deviceCode, kk_map_dev_node_t **node) int kk_map_dev_search_by_deviceCode(const char *deviceCode, kk_map_dev_node_t **node)
{ {
kk_map_dev_ctx *ctx = _kk_map_dev_ctx(); kk_map_dev_ctx *ctx = _kk_map_dev_ctx();
kk_map_dev_node_t *search_node = NULL; kk_map_dev_node_t *search_node = NULL;
......
...@@ -31,11 +31,18 @@ typedef struct { ...@@ -31,11 +31,18 @@ typedef struct {
kk_map_dev_node_t *kk_map_dev_node_add(const char *deviceCode,const char *productCode,const char *gwdeviceCode,const char *onlineStatus); kk_map_dev_node_t *kk_map_dev_node_add(const char *deviceCode,const char *productCode,const char *gwdeviceCode,const char *onlineStatus);
int kk_create_devicestatus_to_sdk(cJSON *root); int kk_create_devicestatus_to_sdk(cJSON *root);
int kk_create_devices_to_sdk(cJSON *root); int kk_create_devices_to_sdk(cJSON *root);
int _deviceCode_switchto_mac(char * deviceCode,char *mac); int _deviceCode_switchto_mac(const char * deviceCode,char *mac);
int mac_switchto_deviceCode(char *mac,char * deviceCode); int mac_switchto_deviceCode(char *mac,char * deviceCode);
int kk_map_dev_search_by_deviceCode(char *deviceCode, kk_map_dev_node_t **node); int kk_map_dev_search_by_deviceCode(const char *deviceCode, kk_map_dev_node_t **node);
kk_map_dev_ctx *_kk_map_dev_ctx(void); kk_map_dev_ctx *_kk_map_dev_ctx(void);
int kk_map_dev_init(void); int kk_map_dev_init(void);
int kk_map_dev_search_by_productCode(char *productCode, kk_map_dev_node_t **node); int kk_map_dev_search_by_productCode(char *productCode, kk_map_dev_node_t **node);
void _kk_map_dev_mutex_lock(void);
void _kk_map_dev_mutex_unlock(void);
void kk_map_dev_deinit(void);
int kk_creater_nodeid(char *deviceCode,int channel,char *nodeId);
#endif #endif
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include "kk_hal.h" #include "kk_hal.h"
#include "cJSON.h" #include "cJSON.h"
static int kk_findccu_ack(int sockfd,struct sockaddr_in *addr){ static int kk_findccu_ack(int sockfd,struct sockaddr_in *addr){
cJSON *json = NULL,*args = NULL; cJSON *json = NULL,*args = NULL;
cJSON *ccu = NULL; cJSON *ccu = NULL;
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#define FINDCCU_LOCAL_PORT 8989 #define FINDCCU_LOCAL_PORT 8989
int kk_lan_get_ccuid(_OU_ char *device_code);
int kk_findccu_handle_init(void); int kk_findccu_handle_init(void);
#endif #endif
\ No newline at end of file
...@@ -10,8 +10,9 @@ ...@@ -10,8 +10,9 @@
#include "kk_ccu_msg.h" #include "kk_ccu_msg.h"
#include "kk_oldccu_msg.h" #include "kk_oldccu_msg.h"
#include "kk_newccu_msg.h" #include "kk_newccu_msg.h"
#include "kk_lan_node_db.h"
extern int kk_lan_get_ccuid(_OU_ char *device_code);
int match_opcode_pos(cJSON *array,const char *opcode,int ch) int match_opcode_pos(cJSON *array,const char *opcode,int ch)
...@@ -320,8 +321,12 @@ int kk_ccu_opcode_handle(cJSON *root) ...@@ -320,8 +321,12 @@ int kk_ccu_opcode_handle(cJSON *root)
WARNING_PRINT("[requester]%s\n",requester->valuestring); WARNING_PRINT("[requester]%s\n",requester->valuestring);
if(strcmp(requester->valuestring,"HJ_CentralAC") == 0 && if(strcmp(requester->valuestring,"HJ_CentralAC") == 0 &&
strcmp(opcode->valuestring,"CENTRAL_AC_INDOOR_UNIT_SETTING") == 0){ strcmp(opcode->valuestring,"CENTRAL_AC_INDOOR_UNIT_SETTING") == 0){
int channel = -1;
char epNum[8] = {0};
kk_indoorAir_ctrl_handle(nodeId->valuestring,arg); kk_lan_db_channel_get(atoi(nodeId->valuestring),&channel);
snprintf(epNum,sizeof(epNum),"%d",channel);
kk_indoorAir_ctrl_handle(epNum,arg);
return 0; return 0;
}else if(strcmp(requester->valuestring,"HJ_Server") == 0){ }else if(strcmp(requester->valuestring,"HJ_Server") == 0){
if(strcmp(opcode->valuestring,"ARMING_IN_HOME") == 0){ if(strcmp(opcode->valuestring,"ARMING_IN_HOME") == 0){
......
...@@ -49,8 +49,15 @@ ...@@ -49,8 +49,15 @@
printf("%s%s [%s:%d(%s)] "format"\033[m", LOG_LEVEL_(level),buff,__FILE__,__LINE__,__func__,##__VA_ARGS__); \ printf("%s%s [%s:%d(%s)] "format"\033[m", LOG_LEVEL_(level),buff,__FILE__,__LINE__,__func__,##__VA_ARGS__); \
} \ } \
}while(0) }while(0)
#define _debug_log(level,format,...) do { \
if( level >= LOG_LEVEL && level <= LOG_CRITICAL_LEVEL) { \
printf("%s"format"\033[m", LOG_LEVEL_(level),##__VA_ARGS__); \
} \
}while(0)
#else #else
#define debug_log(level,format,...) #define debug_log(level,format,...)
#define _debug_log(level,format,...)
#endif #endif
......
...@@ -59,8 +59,8 @@ static void kk_lan_ccuid_init(void) ...@@ -59,8 +59,8 @@ static void kk_lan_ccuid_init(void)
HAL_Execel_cmd(GET_CCUID_CMD,(char *)ccuid,sizeof(ccuid),&ccuid_len); HAL_Execel_cmd(GET_CCUID_CMD,(char *)ccuid,sizeof(ccuid),&ccuid_len);
printf("GET_CCUID_CMD:%s\n",ccuid); printf("GET_CCUID_CMD:%s\n",ccuid);
if(ccuid_len > 0 && ccuid_len <= DEVICE_CODE_LEN){ if(ccuid_len > 0 && ccuid_len <= DEVICE_CODE_LEN){
sprintf(ccuidTmp,"CCU_%s",ccuid); sprintf((char *)ccuidTmp,"CCU_%s",ccuid);
_setDevice_Code(ccuidTmp,strlen(ccuidTmp)-1); _setDevice_Code((char *)ccuidTmp,strlen((char *)ccuidTmp)-1);
}else{ }else{
_setDevice_Code(KK_CCU_ID,strlen(KK_CCU_ID)); _setDevice_Code(KK_CCU_ID,strlen(KK_CCU_ID));
} }
...@@ -132,10 +132,10 @@ int main(int argc, char* argv[]) ...@@ -132,10 +132,10 @@ int main(int argc, char* argv[])
open("kk_lan",LOG_PID,LOG_USER); open("kk_lan",LOG_PID,LOG_USER);
//if(prg_run_singleton(argv[0])<0){ if(prg_run_singleton(argv[0])<0){
//debug_log(LOG_CRITICAL_LEVEL,"[%s]run singleton fail!\n",argv[0]); debug_log(LOG_CRITICAL_LEVEL,"[%s]run singleton fail!\n",argv[0]);
//return -1; return -1;
//} }
kk_lan_ccuid_init(); kk_lan_ccuid_init();
...@@ -144,7 +144,9 @@ int main(int argc, char* argv[]) ...@@ -144,7 +144,9 @@ int main(int argc, char* argv[])
kk_findccu_handle_init(); kk_findccu_handle_init();
kk_map_dev_init(); kk_map_dev_init();
kk_login_init(); kk_login_init();
//kk_voice_panel_init(argc,argv);
kk_voice_panel_init(argc,argv);
//lan_queue_init(); //lan_queue_init();
kk_lan_db_node_init(); kk_lan_db_node_init();
......
...@@ -33,8 +33,8 @@ static cJSON * _new_central_ac_gw_indoor_build(void* arg); ...@@ -33,8 +33,8 @@ static cJSON * _new_central_ac_gw_indoor_build(void* arg);
static cJSON * _new_youzhuan_music_controllers_build(void* arg); static cJSON * _new_youzhuan_music_controllers_build(void* arg);
typedef cJSON *(*build_func)(void** items); typedef cJSON *(*build_func)(void* arg);
typedef struct { typedef struct BUILD_FUNC{
#define NEW_DEVICES_BUILD_TYPE 0 #define NEW_DEVICES_BUILD_TYPE 0
#define NEW_HUE_LIGHTS_BUILD_TYPE 1 #define NEW_HUE_LIGHTS_BUILD_TYPE 1
...@@ -74,13 +74,13 @@ static BUILD_FUNC new_dev_build_table[]={ ...@@ -74,13 +74,13 @@ static BUILD_FUNC new_dev_build_table[]={
{NEW_YOUZHUAN_MUSIC_CONTROLLERS_BUILD_TYPE,_new_youzhuan_music_controllers_build}, {NEW_YOUZHUAN_MUSIC_CONTROLLERS_BUILD_TYPE,_new_youzhuan_music_controllers_build},
}; };
build_func* find_build_func(int type) build_func find_build_func(int type)
{ {
int i,size; int i,size;
BUILD_FUNC*func = NULL; BUILD_FUNC*func = NULL;
size = sizeof(new_dev_build_table)/sizeof(BUILD_FUNC); size = sizeof(new_dev_build_table)/sizeof(BUILD_FUNC);
func = &new_dev_build_table; func = (BUILD_FUNC *)&new_dev_build_table;
for(i=0;i<size;i++,func++){ for(i=0;i<size;i++,func++){
if(func->type==type){ if(func->type==type){
...@@ -353,7 +353,7 @@ static cJSON *new_devices_build_gw(int count) ...@@ -353,7 +353,7 @@ static cJSON *new_devices_build_gw(int count)
} }
return ary; return ary;
} }
static cJSON *new_devices_build_indoor(int count) cJSON *new_devices_build_indoor(int count)
{ {
int i = 0; int i = 0;
cJSON *ary = cJSON_CreateArray(); cJSON *ary = cJSON_CreateArray();
......
#ifndef __KK_LAN_NEW_DEV_NOTIFY_H #ifndef __KK_LAN_NEW_DEV_NOTIFY_H
#define __KK_LAN_NEW_DEV_NOTIFY_H #define __KK_LAN_NEW_DEV_NOTIFY_H
#include "kk_ccu_msg.h" #include "kk_ccu_msg.h"
#include "kk_lan_sync.h"
#include <stdbool.h> #include <stdbool.h>
typedef struct { typedef struct {
cJSON *new_device_count; cJSON *new_device_count;
...@@ -135,9 +136,11 @@ typedef struct{ ...@@ -135,9 +136,11 @@ typedef struct{
}CENTRAL_AC_INDOOR_STATUS; }CENTRAL_AC_INDOOR_STATUS;
typedef struct{ typedef struct{
char id[4]; char id[AIR_AC_INDOOR_ID_SIZE];
char indooruint_addr[4]; char indooruint_addr[AIR_AC_INDOOR_ADDR_SIZE];
char nodeid[8]; char nodeid[AIR_AC_INDOOR_ID_SIZE];
char dev_name[AIR_AC_INDOOR_NAME_SIZE];
char room_id[AIR_AC_INDOOR_ROOM_ID_SIZE];
CENTRAL_AC_INDOOR_STATUS ac_gw_status; CENTRAL_AC_INDOOR_STATUS ac_gw_status;
}CENTRAL_AC_INDOOR_ITEM; }CENTRAL_AC_INDOOR_ITEM;
...@@ -150,6 +153,10 @@ typedef struct{ ...@@ -150,6 +153,10 @@ typedef struct{
char *music_controller_status; char *music_controller_status;
}YOUZHUAN_MC_CTRL_ITEM; }YOUZHUAN_MC_CTRL_ITEM;
void kk_clear_indoor_data();
void kk_new_device_send();
#endif #endif
......
...@@ -7,6 +7,9 @@ ...@@ -7,6 +7,9 @@
extern void HAL_MutexLock(_IN_ void *mutex);
extern void HAL_MutexUnlock(_IN_ void *mutex);
extern void *HAL_MutexCreate(void);
static sqlite3 *g_lan_pDb; static sqlite3 *g_lan_pDb;
...@@ -46,8 +49,7 @@ static int _kk_lan_node_db_Init(void) ...@@ -46,8 +49,7 @@ static int _kk_lan_node_db_Init(void)
idx INTEGER PRIMARY KEY, \ idx INTEGER PRIMARY KEY, \
deviceCode varchar(33), \ deviceCode varchar(33), \
channel INTEGER, \ channel INTEGER, \
nodeId INTEGER, \ nodeId INTEGER)";
operate_type INTEGER)";
char *pcErr; char *pcErr;
...@@ -105,7 +107,7 @@ int kk_check_lan_node(int nodeId) ...@@ -105,7 +107,7 @@ int kk_check_lan_node(int nodeId)
{ {
int isExist = 0; int isExist = 0;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
char *pDeviceCode = NULL; unsigned char *pDeviceCode = NULL;
int node = 0; int node = 0;
kk_lan_node_db_ctx_t *ctx = _kk_lan_node_db_get_ctx(); kk_lan_node_db_ctx_t *ctx = _kk_lan_node_db_get_ctx();
const char *searchCmd = "select * from Map2Node;"; const char *searchCmd = "select * from Map2Node;";
...@@ -140,7 +142,7 @@ int kk_check_lan_node_exist(const char* deviceCode,int channel) ...@@ -140,7 +142,7 @@ int kk_check_lan_node_exist(const char* deviceCode,int channel)
{ {
int isExist = 0; int isExist = 0;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
char *pDeviceCode = NULL; const unsigned char *pDeviceCode = NULL;
int ch = 0; int ch = 0;
int node = 0; int node = 0;
kk_lan_node_db_ctx_t *ctx = _kk_lan_node_db_get_ctx(); kk_lan_node_db_ctx_t *ctx = _kk_lan_node_db_get_ctx();
...@@ -151,7 +153,7 @@ int kk_check_lan_node_exist(const char* deviceCode,int channel) ...@@ -151,7 +153,7 @@ int kk_check_lan_node_exist(const char* deviceCode,int channel)
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
pDeviceCode = sqlite3_column_text(stmt, LAN_DB_DEVICECODE); pDeviceCode = sqlite3_column_text(stmt, LAN_DB_DEVICECODE);
ch = sqlite3_column_int(stmt, LAN_DB_CHANNEL); ch = sqlite3_column_int(stmt, LAN_DB_CHANNEL);
if(!strcmp(deviceCode,pDeviceCode) && ch==channel) if(!strcmp(deviceCode,(const char *)pDeviceCode) && ch==channel)
{ {
isExist = 1; isExist = 1;
break; break;
...@@ -166,7 +168,7 @@ static int _kk_check_lan_node_same(const char* deviceCode,int channel,int nodeId ...@@ -166,7 +168,7 @@ static int _kk_check_lan_node_same(const char* deviceCode,int channel,int nodeId
{ {
int same = 0; int same = 0;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
char *pDeviceCode = NULL; const unsigned char *pDeviceCode = NULL;
int ch = 0; int ch = 0;
int node = 0; int node = 0;
kk_lan_node_db_ctx_t *ctx = _kk_lan_node_db_get_ctx(); kk_lan_node_db_ctx_t *ctx = _kk_lan_node_db_get_ctx();
...@@ -178,7 +180,7 @@ static int _kk_check_lan_node_same(const char* deviceCode,int channel,int nodeId ...@@ -178,7 +180,7 @@ static int _kk_check_lan_node_same(const char* deviceCode,int channel,int nodeId
pDeviceCode = sqlite3_column_text(stmt, LAN_DB_DEVICECODE); pDeviceCode = sqlite3_column_text(stmt, LAN_DB_DEVICECODE);
ch = sqlite3_column_int(stmt, LAN_DB_CHANNEL); ch = sqlite3_column_int(stmt, LAN_DB_CHANNEL);
node = sqlite3_column_int(stmt, LAN_DB_NODE); node = sqlite3_column_int(stmt, LAN_DB_NODE);
if(!strcmp(deviceCode,pDeviceCode) && ch==channel &&node==nodeId) if(!strcmp(deviceCode,(const char *)pDeviceCode) && ch==channel &&node==nodeId)
{ {
same = 1; same = 1;
break; break;
...@@ -234,10 +236,10 @@ static int kk_lan_db_node_update(const char *deviceCode,int channel,int node) ...@@ -234,10 +236,10 @@ static int kk_lan_db_node_update(const char *deviceCode,int channel,int node)
*返 回 值: 0:成功;其他:失败 *返 回 值: 0:成功;其他:失败
*其他说明:属性的值插入的时候先置空,后续再update *其他说明:属性的值插入的时候先置空,后续再update
*************************************************************/ *************************************************************/
int kk_lan_db_node_insert(const char *deviceCode,int channel,int node,int operate_type) int kk_lan_db_node_insert(const char *deviceCode,int channel,int node)
{ {
const char *insertCmd = "insert into Map2Node (deviceCode,channel,nodeId,operate_type) \ const char *insertCmd = "insert into Map2Node (deviceCode,channel,nodeId) \
values ('%s','%d','%d','%d');"; values ('%s','%d','%d');";
char *sqlCmd = NULL; char *sqlCmd = NULL;
int rc = 0; int rc = 0;
char *zErrMsg = 0; char *zErrMsg = 0;
...@@ -251,7 +253,7 @@ int kk_lan_db_node_insert(const char *deviceCode,int channel,int node,int operat ...@@ -251,7 +253,7 @@ int kk_lan_db_node_insert(const char *deviceCode,int channel,int node,int operat
} }
_kk_lan_node_db_lock(); _kk_lan_node_db_lock();
sqlCmd = sqlite3_mprintf(insertCmd,deviceCode,channel,node,operate_type); sqlCmd = sqlite3_mprintf(insertCmd,deviceCode,channel,node);
rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg); rc = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( rc != SQLITE_OK ){ if( rc != SQLITE_OK ){
...@@ -355,7 +357,7 @@ int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel) ...@@ -355,7 +357,7 @@ int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel)
char *zErrMsg = 0; char *zErrMsg = 0;
sqlite3_stmt *stmt; sqlite3_stmt *stmt;
kk_lan_node_db_ctx_t *ctx = _kk_lan_node_db_get_ctx(); kk_lan_node_db_ctx_t *ctx = _kk_lan_node_db_get_ctx();
char *dCode = 0; const unsigned char *dCode = 0;
_kk_lan_node_db_lock(); _kk_lan_node_db_lock();
sqlCmd = sqlite3_mprintf("select * from Map2Node WHERE nodeId= '%d' ",node); sqlCmd = sqlite3_mprintf("select * from Map2Node WHERE nodeId= '%d' ",node);
...@@ -363,7 +365,7 @@ int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel) ...@@ -363,7 +365,7 @@ int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel)
while(sqlite3_step(stmt) == SQLITE_ROW){ while(sqlite3_step(stmt) == SQLITE_ROW){
if(deviceCode!=NULL){ if(deviceCode!=NULL){
dCode = sqlite3_column_text(stmt, LAN_DB_DEVICECODE); dCode = sqlite3_column_text(stmt, LAN_DB_DEVICECODE);
memcpy(deviceCode,dCode,strlen(dCode)); memcpy(deviceCode,(char *)dCode,strlen((char *)dCode));
} }
if(channel!=NULL){ if(channel!=NULL){
...@@ -379,12 +381,12 @@ int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel) ...@@ -379,12 +381,12 @@ int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel)
} }
int kk_lan_db_channel_get(int node,int *channel) int kk_lan_db_channel_get(int node,int *channel)
{ {
kk_lan_db_get_item_by_node(node,NULL,channel); return kk_lan_db_get_item_by_node(node,NULL,channel);
} }
int kk_lan_db_deviceCode_get(int node,char *deviceCode) int kk_lan_db_deviceCode_get(int node,char *deviceCode)
{ {
kk_lan_db_get_item_by_node(node,deviceCode,NULL); return kk_lan_db_get_item_by_node(node,deviceCode,NULL);
} }
...@@ -396,7 +398,7 @@ int kk_lan_db_deviceCode_get(int node,char *deviceCode) ...@@ -396,7 +398,7 @@ int kk_lan_db_deviceCode_get(int node,char *deviceCode)
*返 回 值: 0:成功;其他:失败 *返 回 值: 0:成功;其他:失败
*其他说明: *其他说明:
*************************************************************/ *************************************************************/
int kk_lan_db_node_delete(char *deviceCode) int kk_lan_db_node_delete(const char *deviceCode)
{ {
const char *deleteCmd = "delete from Map2Node where deviceCode = '%s';"; const char *deleteCmd = "delete from Map2Node where deviceCode = '%s';";
char *sqlCmd = NULL; char *sqlCmd = NULL;
......
...@@ -18,7 +18,7 @@ enum{ ...@@ -18,7 +18,7 @@ enum{
}; };
int kk_lan_db_node_init(void); int kk_lan_db_node_init(void);
int kk_lan_db_node_insert(const char *deviceCode,int channel,int node,int operate_type); int kk_lan_db_node_insert(const char *deviceCode,int channel,int node);
int kk_lan_db_node_get(const char *deviceCode,int channel); int kk_lan_db_node_get(const char *deviceCode,int channel);
int kk_lan_db_node_get_all(const char *deviceCode,int *nodes); int kk_lan_db_node_get_all(const char *deviceCode,int *nodes);
...@@ -26,7 +26,7 @@ int kk_lan_db_deviceCode_get(int node,char *deviceCode); ...@@ -26,7 +26,7 @@ int kk_lan_db_deviceCode_get(int node,char *deviceCode);
int kk_lan_db_channel_get(int node,int *channel); int kk_lan_db_channel_get(int node,int *channel);
int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel); int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel);
int kk_lan_db_node_delete(char *deviceCode); int kk_lan_db_node_delete(const char *deviceCode);
int kk_check_lan_node_exist(const char* deviceCode,int channel); int kk_check_lan_node_exist(const char* deviceCode,int channel);
int kk_check_lan_node(int nodeId); int kk_check_lan_node(int nodeId);
......
...@@ -38,7 +38,6 @@ static int _lan_queue_init(LAN_QUEUE_ENUM ix,int max_size) ...@@ -38,7 +38,6 @@ static int _lan_queue_init(LAN_QUEUE_ENUM ix,int max_size)
ctx->mutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t)); ctx->mutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t));
if (ctx->mutex == NULL) { if (ctx->mutex == NULL) {
WARNING_PRINT("\nmalloc queue mutex[%d] failed: - '%s' (%d)\n",ix, strerror(err_num), err_num);
return -1; return -1;
} }
...@@ -59,7 +58,7 @@ static int _lan_queue_init(LAN_QUEUE_ENUM ix,int max_size) ...@@ -59,7 +58,7 @@ static int _lan_queue_init(LAN_QUEUE_ENUM ix,int max_size)
int lan_queue_init(void) int lan_queue_init(void)
{ {
_lan_queue_init(NODE_MAP,LAN_QUEUE_SIZE(1)); return _lan_queue_init(NODE_MAP,LAN_QUEUE_SIZE(1));
} }
void lan_queue_deinit(void) void lan_queue_deinit(void)
{ {
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
#include "kk_lan_debug.h" #include "kk_lan_debug.h"
#include "kk_lan_node_db.h" #include "kk_lan_node_db.h"
#include "kk_lan_new_dev_notify.h" #include "kk_lan_new_dev_notify.h"
#include "kk_oldccu_msg.h"
/*******获取同步数据json*******/ /*******获取同步数据json*******/
static cJSON *kk_get_sync_data(cJSON *payload) static cJSON *kk_get_sync_data(cJSON *payload)
...@@ -553,7 +553,7 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta ...@@ -553,7 +553,7 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if((val = val_conver_new2old(newccuItem,oldccuItem,0))!=NULL){ if((val = val_conver_new2old(newccuItem,oldccuItem,0))!=NULL){
printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
char indexId[4] = {0}; char indexId[16] = {0};
char nodeid[32] = {0}; char nodeid[32] = {0};
cJSON *epNum = cJSON_GetObjectItem(newccuItem,CHANNEL_STRING); cJSON *epNum = cJSON_GetObjectItem(newccuItem,CHANNEL_STRING);
cJSON *opcode = cJSON_GetObjectItem(newccuItem,OPCODEMAP_STRING); cJSON *opcode = cJSON_GetObjectItem(newccuItem,OPCODEMAP_STRING);
...@@ -587,7 +587,7 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta ...@@ -587,7 +587,7 @@ static int _kk_sync_devices_status_arg_str(kk_map_dev_node_t *node,cJSON *devSta
static int _kk_sync_devices_status_arg_obj(kk_map_dev_node_t *node,cJSON *devStatusAry,int *aryIx) static int _kk_sync_devices_status_arg_obj(kk_map_dev_node_t *node,cJSON *devStatusAry,int *aryIx)
{ {
char indexId[4] = {0}; char indexId[16] = {0};
char nodeid[32] = {0}; char nodeid[32] = {0};
cJSON *arg = NULL; cJSON *arg = NULL;
cJSON *dev_status = NULL; cJSON *dev_status = NULL;
...@@ -805,16 +805,12 @@ int kk_sync_guard_to_sdk(cJSON *root,cJSON *data) ...@@ -805,16 +805,12 @@ int kk_sync_guard_to_sdk(cJSON *root,cJSON *data)
//同步空调网关 //同步空调网关
typedef struct{ /*
char *node;
char *dev_name;
char *id;
char *room_id;
cJSON * status;
}SYN_CENTRAL_AC_GW;
cJSON *_kk_sync_central_ac_gw(SYN_CENTRAL_AC_GW *gw) cJSON *_kk_sync_central_ac_gw(SYN_CENTRAL_AC_GW *gw)
{ {
cJSON *item = cJSON_CreateObject(); cJSON *item = cJSON_CreateObject();
cJSON *status; cJSON *status;
cJSON_AddStringToObject(item, "bind_central_ac_gw_node_id",(gw->node)?gw->node:""); cJSON_AddStringToObject(item, "bind_central_ac_gw_node_id",(gw->node)?gw->node:"");
...@@ -823,31 +819,81 @@ cJSON *_kk_sync_central_ac_gw(SYN_CENTRAL_AC_GW *gw) ...@@ -823,31 +819,81 @@ cJSON *_kk_sync_central_ac_gw(SYN_CENTRAL_AC_GW *gw)
cJSON_AddStringToObject(item, "room_id", (gw->room_id)?gw->room_id:""); cJSON_AddStringToObject(item, "room_id", (gw->room_id)?gw->room_id:"");
cJSON_AddItemToObject(item, "status",gw->status?gw->status:cJSON_CreateNull()); cJSON_AddItemToObject(item, "status",gw->status?gw->status:cJSON_CreateNull());
return item; return item;
} }
*/
static int kk_get_roomInfo_by_deviceCode(cJSON *data,char *pdeviceCode,char*roomId)
static int kk_get_ac_indoor_info_by_deviceCode(cJSON *data,char *pdeviceCode,char*roomId,char*name,int epNum)
{ {
cJSON *rooms = cJSON_GetObjectItem(data,"rooms"); cJSON *rooms = cJSON_GetObjectItem(data,"rooms");
cJSON * item = rooms->child; cJSON * item = rooms->child;
while(item != NULL){ while(item != NULL){
cJSON *devices = cJSON_GetObjectItem(item,"devices"); cJSON *devices = cJSON_GetObjectItem(item,"devices");
if(devices == NULL){ if(devices == NULL){
return -1; return -1;
} }
cJSON * subitem = devices->child; cJSON * subitem = devices->child;
while(subitem != NULL){ while(subitem != NULL){
cJSON *deviceCode = cJSON_GetObjectItem(subitem,"deviceCode"); cJSON *deviceCode = cJSON_GetObjectItem(subitem,"deviceCode");
cJSON *epObj = cJSON_GetObjectItem(subitem,"epNum");
if(deviceCode != NULL && !strcmp(deviceCode->valuestring,pdeviceCode)) if(deviceCode != NULL && !strcmp(deviceCode->valuestring,pdeviceCode))
{ {
if(epObj!=NULL&&epObj->type==cJSON_String){
if(atoi(epObj->valuestring)==epNum){
cJSON *roomIdJ = cJSON_GetObjectItem(item,"roomId"); cJSON *roomIdJ = cJSON_GetObjectItem(item,"roomId");
cJSON *nameObj = cJSON_GetObjectItem(subitem,"name");
if(roomId!=NULL){
memcpy(roomId,roomIdJ->valuestring,strlen(roomIdJ->valuestring)); memcpy(roomId,roomIdJ->valuestring,strlen(roomIdJ->valuestring));
debug_log(LOG_CRITICAL_LEVEL,"roomId=%s\n",roomId);
} }
if(name!=NULL){
memcpy(name,nameObj->valuestring,strlen(nameObj->valuestring));
}
debug_log(LOG_CRITICAL_LEVEL,"name=%s\n",name);
return 0; return 0;
} }
}else{
cJSON *roomIdJ = cJSON_GetObjectItem(item,"roomId");
cJSON *nameObj = cJSON_GetObjectItem(item,"name");
if(roomId!=NULL){
memcpy(roomId,roomIdJ->valuestring,strlen(roomIdJ->valuestring));
debug_log(LOG_CRITICAL_LEVEL,"roomId=%s\n",roomId);
}
if(name!=NULL){
memcpy(name,nameObj->valuestring,strlen(nameObj->valuestring));
}
debug_log(LOG_CRITICAL_LEVEL,"name=%s\n",name);
return 0;
} }
}
subitem = subitem->next;
}
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
item = item->next;
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
}
debug_log(LOG_CRITICAL_LEVEL,"[err]\n");
return -1; return -1;
} }
new_dev_item g_new_item[16] = {0}; new_dev_item g_new_item[16] = {0};
CENTRAL_AC_INDOOR_ITEM *g_indoor_item = NULL; CENTRAL_AC_INDOOR_ITEM *g_indoor_item = NULL;
int g_newgw_count = 0; int g_newgw_count = 0;
...@@ -866,7 +912,7 @@ void kk_create_new_central_ac(char *gwDeviceCode,char *deviceCode,char *nodeId) ...@@ -866,7 +912,7 @@ void kk_create_new_central_ac(char *gwDeviceCode,char *deviceCode,char *nodeId)
{ {
char gwmac[32] = {0}; char gwmac[32] = {0};
char submac[32] = {0}; char submac[32] = {0};
if(g_newgw_count > 16){ if(g_newgw_count > 64){
return; return;
} }
//printf("------------------CWC------------------------>[%s][%d]\n",__FUNCTION__,__LINE__); //printf("------------------CWC------------------------>[%s][%d]\n",__FUNCTION__,__LINE__);
...@@ -881,9 +927,7 @@ void kk_create_new_central_ac(char *gwDeviceCode,char *deviceCode,char *nodeId) ...@@ -881,9 +927,7 @@ void kk_create_new_central_ac(char *gwDeviceCode,char *deviceCode,char *nodeId)
//printf("------------------CWC------------------------>[%s][%d]\n",__FUNCTION__,__LINE__); //printf("------------------CWC------------------------>[%s][%d]\n",__FUNCTION__,__LINE__);
return; return;
} }
int kk_sync_indoor_status(cJSON* eps){
}
char *modeMap[] = { char *modeMap[] = {
"AUTO", "AUTO",
"COLD", "COLD",
...@@ -901,30 +945,53 @@ char *speedMap[] = { ...@@ -901,30 +945,53 @@ char *speedMap[] = {
"UNKONWN", "UNKONWN",
"UNKONWN", "UNKONWN",
}; };
int kk_send_indoorAir_status(cJSON *info) int kk_send_indoorAir_status(cJSON *info,const char *deviceCode)
{ {
char epStr[4] = {0}; char epStr[4] = {0};
char nodeStr[12] = {0};
int node;
if(info == NULL){ if(info == NULL){
return -1; return -1;
} }
cJSON *root = cJSON_CreateObject(); cJSON *root = cJSON_CreateObject();
cJSON *epNum = cJSON_GetObjectItem(info,"epNum"); cJSON *epNum = cJSON_GetObjectItem(info,"epNum");
cJSON_AddStringToObject(root, "nodeid", epNum->valuestring);
node = kk_lan_db_node_get(deviceCode,atoi(epNum->valuestring));
snprintf(nodeStr,sizeof(nodeStr),"%d",node);
cJSON_AddStringToObject(root, "nodeid", nodeStr);
cJSON_AddStringToObject(root, "opcode", "CENTRAL_AC_INDOOR_UNIT_STATUS"); cJSON_AddStringToObject(root, "opcode", "CENTRAL_AC_INDOOR_UNIT_STATUS");
cJSON_AddStringToObject(root, "status", "success"); cJSON_AddStringToObject(root, "status", "success");
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON *arg = cJSON_CreateObject(); cJSON *arg = cJSON_CreateObject();
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON_AddBoolToObject(arg, "online", 1); cJSON_AddBoolToObject(arg, "online", 1);
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON *PowerSwitch = cJSON_GetObjectItem(info,"PowerSwitch"); cJSON *PowerSwitch = cJSON_GetObjectItem(info,"PowerSwitch");
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON_AddBoolToObject(arg, "on", PowerSwitch->valueint); cJSON_AddBoolToObject(arg, "on", PowerSwitch->valueint);
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON *Temperature = cJSON_GetObjectItem(info,"Temperature"); cJSON *Temperature = cJSON_GetObjectItem(info,"Temperature");
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON_AddNumberToObject(arg,"settingTemperature",Temperature->valuedouble); cJSON_AddNumberToObject(arg,"settingTemperature",Temperature->valuedouble);
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON *CurrentTemperature = cJSON_GetObjectItem(info,"CurrentTemperature"); cJSON *CurrentTemperature = cJSON_GetObjectItem(info,"CurrentTemperature");
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON_AddNumberToObject(arg,"roomTemperature",CurrentTemperature->valuedouble); cJSON_AddNumberToObject(arg,"roomTemperature",CurrentTemperature->valuedouble);
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON *WindSpeed = cJSON_GetObjectItem(info,"WindSpeed"); cJSON *WindSpeed = cJSON_GetObjectItem(info,"WindSpeed");
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON_AddStringToObject(arg, "fanSpeed", speedMap[WindSpeed->valueint]); cJSON_AddStringToObject(arg, "fanSpeed", speedMap[WindSpeed->valueint]);
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON *WorkMode = cJSON_GetObjectItem(info,"WorkMode"); cJSON *WorkMode = cJSON_GetObjectItem(info,"WorkMode");
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON_AddStringToObject(arg, "runModel", modeMap[WorkMode->valueint]); cJSON_AddStringToObject(arg, "runModel", modeMap[WorkMode->valueint]);
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
cJSON_AddItemToObject(root, "arg", arg); cJSON_AddItemToObject(root, "arg", arg);
_debug_log(LOG_CRITICAL_LEVEL,"mark\n");
send_msg_to_module(root); send_msg_to_module(root);
cJSON_Delete(root); cJSON_Delete(root);
return 0; return 0;
...@@ -936,11 +1003,12 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data) ...@@ -936,11 +1003,12 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
int sub_num = 0,j = 0; int sub_num = 0,j = 0;
int k = 0; int k = 0;
char nodeid[8] = {0}; char nodeid[8] = {0};
char ac_gw_nodeid[8] = {0};
char roomId[32] = {0}; char roomId[32] = {0};
char deviceName[256] = {0}; char deviceName[256] = {0};
char epStr[4] = {0};
cJSON *central_ac_gws = cJSON_CreateArray(); cJSON *central_ac_gws = cJSON_CreateArray();
SYN_CENTRAL_AC_GW ac; // SYN_CENTRAL_AC_GW ac;
if(data == NULL){ if(data == NULL){
return NULL; return NULL;
} }
...@@ -961,13 +1029,19 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data) ...@@ -961,13 +1029,19 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
cJSON *productCode = cJSON_GetObjectItem(subitem,"productCode"); cJSON *productCode = cJSON_GetObjectItem(subitem,"productCode");
if(productCode != NULL && strcmp(productCode->valuestring,"3062") == 0){//空调网关设备 if(productCode != NULL && strcmp(productCode->valuestring,"3062") == 0){//空调网关设备
cJSON *deviceCode = cJSON_GetObjectItem(subitem,"deviceCode"); cJSON *deviceCode = cJSON_GetObjectItem(subitem,"deviceCode");
kk_creater_nodeid(deviceCode->valuestring,1,nodeid);
kk_creater_nodeid(deviceCode->valuestring,1,ac_gw_nodeid);
cJSON *properties = cJSON_GetObjectItem(subitem,"properties"); cJSON *properties = cJSON_GetObjectItem(subitem,"properties");
cJSON *indoorItem = cJSON_CreateObject(); cJSON *indoorItem = cJSON_CreateObject();
kk_get_roomInfo_by_deviceCode(data,deviceCode->valuestring,roomId);
cJSON_AddStringToObject(indoorItem, "bind_central_ac_gw_node_id",nodeid); debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
kk_get_ac_indoor_info_by_deviceCode(data,deviceCode->valuestring,roomId,NULL,1);
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
debug_log(LOG_CRITICAL_LEVEL,"deviceCode->valuestring=%s",deviceCode->valuestring);
cJSON_AddStringToObject(indoorItem, "bind_central_ac_gw_node_id",ac_gw_nodeid);
cJSON_AddStringToObject(indoorItem, "dev_name", "空调网关"); cJSON_AddStringToObject(indoorItem, "dev_name", "空调网关");
cJSON_AddStringToObject(indoorItem, "id", nodeid); cJSON_AddStringToObject(indoorItem, "id", ac_gw_nodeid);
cJSON_AddStringToObject(indoorItem, "room_id", roomId); cJSON_AddStringToObject(indoorItem, "room_id", roomId);
cJSON_AddItemToArray(central_ac_gws,indoorItem); cJSON_AddItemToArray(central_ac_gws,indoorItem);
...@@ -981,43 +1055,57 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data) ...@@ -981,43 +1055,57 @@ cJSON *kk_sync_central_ac_to_sdk(cJSON *root,cJSON *data)
memset(g_indoor_item,0x0,sizeof(CENTRAL_AC_INDOOR_ITEM)*epsize); memset(g_indoor_item,0x0,sizeof(CENTRAL_AC_INDOOR_ITEM)*epsize);
g_indoor_count = epsize; g_indoor_count = epsize;
for(k = 0; k < epsize; k++){ for(k = 0; k < epsize; k++){
char tmpIdx[4] = {0}; char tmpIdx[16] = {0};
cJSON *infoItem = cJSON_GetArrayItem(epsAry,k); cJSON *infoItem = cJSON_GetArrayItem(epsAry,k);
if(infoItem == NULL) continue; if(infoItem == NULL) continue;
cJSON *epNum = cJSON_GetObjectItem(infoItem,"epNum");
memset(epStr,0x0,sizeof(epStr)); debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
sprintf(epStr,"%d",epNum->valueint); kk_creater_nodeid(deviceCode->valuestring,k+2,nodeid);
memcpy(g_indoor_item[k].id,epStr,strlen(epStr)); kk_get_ac_indoor_info_by_deviceCode(data,deviceCode->valuestring,g_indoor_item[k].room_id,g_indoor_item[k].dev_name,k+2);
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
memcpy(g_indoor_item[k].id,nodeid,strlen(nodeid));
sprintf(tmpIdx,"%d",k); sprintf(tmpIdx,"%d",k);
memcpy(g_indoor_item[k].indooruint_addr,tmpIdx,strlen(tmpIdx)); memcpy(g_indoor_item[k].indooruint_addr,tmpIdx,strlen(tmpIdx));
memcpy(g_indoor_item[k].nodeid,nodeid,strlen(nodeid)); memcpy(g_indoor_item[k].nodeid,ac_gw_nodeid,strlen(ac_gw_nodeid));
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
cJSON *PowerSwitch = cJSON_GetObjectItem(infoItem,"PowerSwitch"); cJSON *PowerSwitch = cJSON_GetObjectItem(infoItem,"PowerSwitch");
g_indoor_item[k].ac_gw_status.on = PowerSwitch->valueint == 1?true:false; g_indoor_item[k].ac_gw_status.on = PowerSwitch->valueint == 1?true:false;
g_indoor_item[k].ac_gw_status.online = 1; g_indoor_item[k].ac_gw_status.online = 1;
cJSON *Temperature = cJSON_GetObjectItem(infoItem,"Temperature"); cJSON *Temperature = cJSON_GetObjectItem(infoItem,"Temperature");
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
cJSON *CurrentTemperature = cJSON_GetObjectItem(infoItem,"CurrentTemperature"); cJSON *CurrentTemperature = cJSON_GetObjectItem(infoItem,"CurrentTemperature");
g_indoor_item[k].ac_gw_status.settingTemperature = Temperature->valuedouble; g_indoor_item[k].ac_gw_status.settingTemperature = Temperature->valuedouble;
g_indoor_item[k].ac_gw_status.roomTemperature = CurrentTemperature->valuedouble; g_indoor_item[k].ac_gw_status.roomTemperature = CurrentTemperature->valuedouble;
cJSON *WindSpeed = cJSON_GetObjectItem(infoItem,"WindSpeed"); cJSON *WindSpeed = cJSON_GetObjectItem(infoItem,"WindSpeed");
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
memcpy(g_indoor_item[k].ac_gw_status.speed,speedMap[WindSpeed->valueint],strlen(speedMap[WindSpeed->valueint])); memcpy(g_indoor_item[k].ac_gw_status.speed,speedMap[WindSpeed->valueint],strlen(speedMap[WindSpeed->valueint]));
cJSON *WorkMode = cJSON_GetObjectItem(infoItem,"WorkMode"); cJSON *WorkMode = cJSON_GetObjectItem(infoItem,"WorkMode");
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
memcpy(g_indoor_item[k].ac_gw_status.mode,modeMap[WorkMode->valueint],strlen(modeMap[WorkMode->valueint])); memcpy(g_indoor_item[k].ac_gw_status.mode,modeMap[WorkMode->valueint],strlen(modeMap[WorkMode->valueint]));
} }
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
kk_create_new_central_ac(gwDeviceCode->valuestring,deviceCode->valuestring,nodeid); kk_create_new_central_ac(gwDeviceCode->valuestring,deviceCode->valuestring,nodeid);
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
} }
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
} }
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
} }
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
cJSON_AddItemToObject(root, "central_ac_gws", central_ac_gws); cJSON_AddItemToObject(root, "central_ac_gws", central_ac_gws);
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
return root; return root;
} }
//同步空调网关内机 //同步空调网关内机
typedef struct{ typedef struct{
char *id; char id[AIR_AC_INDOOR_ID_SIZE];
char *room_id; char room_id[AIR_AC_INDOOR_ROOM_ID_SIZE];
char *indoorunit_name; char indoorunit_name[AIR_AC_INDOOR_NAME_SIZE];
char *indooruint_addr; char indooruint_addr[AIR_AC_INDOOR_ADDR_SIZE];
char *central_ac_gw_devid; char central_ac_gw_devid[AIR_AC_INDOOR_ID_SIZE];
cJSON * indoorunit_state; cJSON * indoorunit_state;
}SYN_CENTRAL_AC_INDOOR; }SYN_CENTRAL_AC_INDOOR;
cJSON *_kk_sync_central_ac_indoorunit_to_sdk(SYN_CENTRAL_AC_INDOOR* indoorunit) cJSON *_kk_sync_central_ac_indoorunit_to_sdk(SYN_CENTRAL_AC_INDOOR* indoorunit)
...@@ -1038,47 +1126,56 @@ cJSON *_kk_sync_central_ac_indoorunits(int num,SYN_CENTRAL_AC_INDOOR *indoorunit ...@@ -1038,47 +1126,56 @@ cJSON *_kk_sync_central_ac_indoorunits(int num,SYN_CENTRAL_AC_INDOOR *indoorunit
{ {
int i; int i;
cJSON *central_ac_indoorunits = cJSON_CreateArray(); cJSON *central_ac_indoorunits = cJSON_CreateArray();
SYN_CENTRAL_AC_GW *indoorunit = indoorunits; SYN_CENTRAL_AC_INDOOR *pIndoorunit = indoorunits;
for(i=0;i<num;i++,indoorunit++) { for(i=0;i<num;i++,pIndoorunit++) {
cJSON *item =_kk_sync_central_ac_indoorunit_to_sdk(indoorunit); debug_log(LOG_CRITICAL_LEVEL,"mark[%d]...\n",i);
cJSON *item =_kk_sync_central_ac_indoorunit_to_sdk(pIndoorunit);
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
cJSON_AddItemToArray(central_ac_indoorunits,item); cJSON_AddItemToArray(central_ac_indoorunits,item);
} }
return central_ac_indoorunits; return central_ac_indoorunits;
} }
cJSON *kk_sync_central_ac_indoorunits_to_sdk(cJSON *root,cJSON *data) cJSON *kk_sync_central_ac_indoorunits_to_sdk(cJSON *root,cJSON *data)
{ {
int i = 0;
cJSON *central_ac_indoorunits; cJSON *central_ac_indoorunits;
central_ac_indoorunits = cJSON_CreateArray(); central_ac_indoorunits = cJSON_CreateArray();
SYN_CENTRAL_AC_INDOOR *indoorunitAry = NULL;
SYN_CENTRAL_AC_INDOOR *pIndoorunit = NULL;
SYN_CENTRAL_AC_INDOOR indoorunit; indoorunitAry = (SYN_CENTRAL_AC_INDOOR *)malloc(g_indoor_count*sizeof(SYN_CENTRAL_AC_INDOOR));
indoorunit.id = malloc(20); memset(indoorunitAry,0,g_indoor_count*sizeof(SYN_CENTRAL_AC_INDOOR));
memset(indoorunit.id,0,20); pIndoorunit = indoorunitAry;
memcpy(indoorunit.id,"4",sizeof("4"));
indoorunit.room_id = malloc(20);
memset(indoorunit.room_id,0,20);
memcpy(indoorunit.room_id,"44",sizeof("44"));
indoorunit.indoorunit_name = malloc(20); for(i=0;i<g_indoor_count;i++,pIndoorunit++){
memset(indoorunit.indoorunit_name,0,20);
memcpy(indoorunit.indoorunit_name,"444",sizeof("444"));
indoorunit.indooruint_addr = malloc(20); snprintf(pIndoorunit->id,AIR_AC_INDOOR_ID_SIZE,"%s",g_indoor_item[i].id);
memset(indoorunit.indooruint_addr,0,20); snprintf(pIndoorunit->room_id,AIR_AC_INDOOR_ROOM_ID_SIZE,"%s",g_indoor_item[i].room_id);
memcpy(indoorunit.indooruint_addr,"4444",sizeof("4444")); snprintf(pIndoorunit->indoorunit_name,AIR_AC_INDOOR_NAME_SIZE,"%s",g_indoor_item[i].dev_name);
snprintf(pIndoorunit->central_ac_gw_devid,AIR_AC_INDOOR_ID_SIZE,"%s",g_indoor_item[i].nodeid);
snprintf(pIndoorunit->indooruint_addr,AIR_AC_INDOOR_ADDR_SIZE,"%s",g_indoor_item[i].indooruint_addr);
indoorunit.central_ac_gw_devid = malloc(20); cJSON *status = cJSON_CreateObject();
memset(indoorunit.central_ac_gw_devid,0,20); cJSON_AddBoolToObject(status,"online",g_indoor_item[i].ac_gw_status.online);
memcpy(indoorunit.central_ac_gw_devid,"44444",sizeof("44444")); cJSON_AddBoolToObject(status,"on",g_indoor_item[i].ac_gw_status.on);
cJSON_AddStringToObject(status,"runModel",g_indoor_item[i].ac_gw_status.mode);
cJSON_AddStringToObject(status,"fanSpeed",g_indoor_item[i].ac_gw_status.speed);
cJSON_AddNumberToObject(status,"settingTemperature",g_indoor_item[i].ac_gw_status.settingTemperature);
cJSON_AddNumberToObject(status,"roomTemperature",g_indoor_item[i].ac_gw_status.roomTemperature);
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
pIndoorunit->indoorunit_state = status;
}
indoorunit.indoorunit_state = NULL; central_ac_indoorunits = _kk_sync_central_ac_indoorunits(g_indoor_count,indoorunitAry);
debug_log(LOG_CRITICAL_LEVEL,"mark...\n");
central_ac_indoorunits = _kk_sync_central_ac_indoorunits(1,&indoorunit);
cJSON_AddItemToObject(root, "central_ac_indoorunits", central_ac_indoorunits); cJSON_AddItemToObject(root, "central_ac_indoorunits", central_ac_indoorunits);
return root; return root;
...@@ -1182,7 +1279,7 @@ static cJSON * kk_create_floor_obj(SYN_FLOOR *floor) ...@@ -1182,7 +1279,7 @@ static cJSON * kk_create_floor_obj(SYN_FLOOR *floor)
} }
static int kk_create_floors(int num ,SYN_FLOOR *floor) static cJSON * kk_create_floors(int num ,SYN_FLOOR *floor)
{ {
int i; int i;
cJSON *floors = cJSON_CreateArray(); cJSON *floors = cJSON_CreateArray();
...@@ -1300,6 +1397,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload,int push) ...@@ -1300,6 +1397,7 @@ int kk_create_syncinfo_to_sdk(cJSON *payload,int push)
kk_sync_central_ac_to_sdk(root,data); kk_sync_central_ac_to_sdk(root,data);
kk_sync_central_ac_indoorunits_to_sdk(root,data); kk_sync_central_ac_indoorunits_to_sdk(root,data);
......
...@@ -4,6 +4,16 @@ ...@@ -4,6 +4,16 @@
#include "cJSON.h" #include "cJSON.h"
#define AIR_AC_INDOOR_ID_SIZE 8
#define AIR_AC_INDOOR_ROOM_ID_SIZE 24
#define AIR_AC_INDOOR_NAME_SIZE 32
#define AIR_AC_INDOOR_ADDR_SIZE 8
typedef struct{ typedef struct{
char *floor_id; char *floor_id;
char *room_id; char *room_id;
...@@ -48,7 +58,8 @@ int kk_sync_devices_status_to_sdk(cJSON *root); ...@@ -48,7 +58,8 @@ int kk_sync_devices_status_to_sdk(cJSON *root);
int kk_create_syncinfo_to_sdk(cJSON *payload,int push); int kk_create_syncinfo_to_sdk(cJSON *payload,int push);
int kk_send_indoorAir_status(cJSON *info); int kk_send_indoorAir_status(cJSON *info,const char *deviceCode);
cJSON * val_conver_new2old(cJSON *newccuItem,cJSON *oldccuItem,int syn_type);
......
...@@ -83,6 +83,7 @@ static void *kk_vp_uart_thread(void *arg) ...@@ -83,6 +83,7 @@ static void *kk_vp_uart_thread(void *arg)
} }
ERROR_PRINT("[%s]thread end...\n",__FUNCTION__); ERROR_PRINT("[%s]thread end...\n",__FUNCTION__);
return 0;
} }
...@@ -118,7 +119,7 @@ char *vp_file_load(const char *path) ...@@ -118,7 +119,7 @@ char *vp_file_load(const char *path)
fp = fopen (path,"r"); fp = fopen (path,"r");
if(fp==NULL){ if(fp==NULL){
printf("open err.\n"); debug_log(LOG_WARNING_LEVEL,"[%s]fopen err!\n",path);
return NULL; return NULL;
} }
...@@ -175,6 +176,7 @@ static int _vp_config_file_version_load(void) ...@@ -175,6 +176,7 @@ static int _vp_config_file_version_load(void)
cJSON_Delete(json); cJSON_Delete(json);
free(pFile); free(pFile);
return 1;
} }
void kk_vp_set_updateFlag(int flag) void kk_vp_set_updateFlag(int flag)
...@@ -208,7 +210,7 @@ void kk_vp_set_state_machine(int state) ...@@ -208,7 +210,7 @@ void kk_vp_set_state_machine(int state)
} }
} }
void kk_vp_get_config_file_version(int ver) int kk_vp_get_config_file_version(void)
{ {
return vp_mag.cfg_info.next_ver; return vp_mag.cfg_info.next_ver;
} }
...@@ -341,6 +343,7 @@ void *kk_vp_manage_thread(void *arg) ...@@ -341,6 +343,7 @@ void *kk_vp_manage_thread(void *arg)
usleep(50*1000); usleep(50*1000);
} }
ERROR_PRINT("[%s]thread end...\n",__FUNCTION__); ERROR_PRINT("[%s]thread end...\n",__FUNCTION__);
return 0;
} }
...@@ -375,6 +378,15 @@ void kk_voice_panel_uart_dev_chose(int argc, char* argv[]) ...@@ -375,6 +378,15 @@ void kk_voice_panel_uart_dev_chose(int argc, char* argv[])
debug_log(LOG_FOCUS_LEVEL,"serialDev=%s\n",serialDev); debug_log(LOG_FOCUS_LEVEL,"serialDev=%s\n",serialDev);
} }
static int kk_vp_cfg_file_dir_create(void){
char cmd[128] = {0};
snprintf(cmd,sizeof(cmd),"mkdir -p %s",VP_VP_CONFIG_FILE_DIR);
return system(cmd);
}
int kk_voice_panel_init(int argc, char* argv[]) int kk_voice_panel_init(int argc, char* argv[])
{ {
size_t s = 1500; size_t s = 1500;
...@@ -387,9 +399,13 @@ int kk_voice_panel_init(int argc, char* argv[]) ...@@ -387,9 +399,13 @@ int kk_voice_panel_init(int argc, char* argv[])
kk_voice_panel_uart_dev_chose(argc,argv); kk_voice_panel_uart_dev_chose(argc,argv);
kk_vp_cfg_file_dir_create();
pthread_attr_setstacksize(&attr, s); pthread_attr_setstacksize(&attr, s);
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
kk_vp_ac_mutex_init();
if (pthread_mutex_init(&v_mux, NULL) != 0) { if (pthread_mutex_init(&v_mux, NULL) != 0) {
pthread_attr_destroy(&attr); pthread_attr_destroy(&attr);
ERROR_PRINT("pthread_mutex_init v_mux fail.\n"); ERROR_PRINT("pthread_mutex_init v_mux fail.\n");
...@@ -407,12 +423,6 @@ int kk_voice_panel_init(int argc, char* argv[]) ...@@ -407,12 +423,6 @@ int kk_voice_panel_init(int argc, char* argv[])
return -3; return -3;
} }
/*if((pthread_create(&tid3, NULL, kk_voice_panel_333, NULL))!= 0 ) {
ERROR_PRINT("pthread_create kk_voice_panel fail\n");
return -4;
}*/
return 0; return 0;
} }
......
...@@ -2,109 +2,213 @@ ...@@ -2,109 +2,213 @@
#include "kk_lan_vp_ctrl.h" #include "kk_lan_vp_ctrl.h"
#include "kk_lan_debug.h" #include "kk_lan_debug.h"
#include "cJSON.h" #include "cJSON.h"
#include "kk_voice_panel_cfg.h"
typedef cJSON *(*dev_handle_func)(int ep,uint8_t *arg,uint8_t arg_len);
typedef struct {
const int *pidAry;
int num;
dev_handle_func func;
}DEV_PID_S;
static cJSON *air_conditioner_dev_handle(int ep,uint8_t *arg,uint8_t arg_len);
static cJSON *light_dev_handle(int ep,uint8_t *arg,uint8_t arg_len);
static cJSON *curtain_dev_handle(int ep,uint8_t *arg,uint8_t arg_len);
static cJSON *outlet_dev_handle(int ep,uint8_t *arg,uint8_t arg_len);
static cJSON *freshAir_dev_handle(int ep,uint8_t *arg,uint8_t arg_len);
static cJSON *fanCoilSwitch_dev_handle(int ep,uint8_t *arg,uint8_t arg_len);
static const int air_conditioner_dev_pid[] = AIR_CONDITIONER_DEV_PID;
static const int light_dev_pid[] = LIGHT_DEV_PID;
static const int curtain_dev_pid[] = CURTAIN_DEV_PID;
static const int outlet_dev_pid[] = OUTLET_DEV_PID;
static const int freshAir_dev_pid[] = FRESHAIR_DEV_PID;
static const int fanCoilSwitch_dev_pid[] = FANCOILSWITCH_DEV_PID;
static DEV_PID_S g_dev_pid[] = {
{ light_dev_pid,sizeof(light_dev_pid)/ sizeof(int),light_dev_handle},
{ curtain_dev_pid,sizeof(curtain_dev_pid) / sizeof(int),curtain_dev_handle},
{ outlet_dev_pid,sizeof(outlet_dev_pid) / sizeof(int),outlet_dev_handle},
{ freshAir_dev_pid,sizeof(freshAir_dev_pid) / sizeof(int),freshAir_dev_handle},
{ fanCoilSwitch_dev_pid,sizeof(fanCoilSwitch_dev_pid) / sizeof(int),fanCoilSwitch_dev_handle}
};
static dev_handle_func dev_pid_dispatch(int pid)
{
int i,j;
int num = sizeof(g_dev_pid) / sizeof(DEV_PID_S);
DEV_PID_S *pDevPid = g_dev_pid;
for (i = 0; i<num ; i++,pDevPid++) {
for (j = 0; j < pDevPid->num;j++) {
if(pid==pDevPid->pidAry[j]){
return pDevPid->func;
}
}
}
return NULL;
}
//****************************************************************************
cJSON *PowerSwitch_msg_build(int ep,int onoff) cJSON *PowerSwitch_msg_build(int ep,int onoff)
{ {
char epNum[12] = {0}; char epNum[12] = {0};
cJSON *params = cJSON_CreateObject(); cJSON *params = cJSON_CreateObject();
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
memset(epNum,0,sizeof(epNum)); memset(epNum,0,sizeof(epNum));
snprintf(epNum,sizeof(epNum),"%d",ep); snprintf(epNum,sizeof(epNum),"%d",ep);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddStringToObject(params,"epNum",epNum); cJSON_AddStringToObject(params,"epNum",epNum);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
cJSON_AddNumberToObject(params,"PowerSwitch",onoff); cJSON_AddNumberToObject(params,"PowerSwitch",onoff);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); return params;
}
static cJSON *windSpeed_msg_build(int ep,int level)
{
char epNum[12] = {0};
cJSON *params = cJSON_CreateObject();
memset(epNum,0,sizeof(epNum));
snprintf(epNum,sizeof(epNum),"%d",ep);
cJSON_AddStringToObject(params,"epNum",epNum);
cJSON_AddNumberToObject(params,"WindSpeed",level);
return params;
}
static cJSON *workMode_msg_build(int ep,int mode)
{
char epNum[12] = {0};
cJSON *params = cJSON_CreateObject();
memset(epNum,0,sizeof(epNum));
snprintf(epNum,sizeof(epNum),"%d",ep);
cJSON_AddStringToObject(params,"epNum",epNum);
cJSON_AddNumberToObject(params,"WorkMode",mode);
return params;
}
static cJSON *temperature_msg_build(int ep,int tmp)
{
char epNum[12] = {0};
cJSON *params = cJSON_CreateObject();
memset(epNum,0,sizeof(epNum));
snprintf(epNum,sizeof(epNum),"%d",ep);
cJSON_AddStringToObject(params,"epNum",epNum);
cJSON_AddNumberToObject(params,"Temperature",tmp);
return params; return params;
} }
static int is_light_dev(int pid);
static cJSON *light_dev(int ep,int onoff);
static cJSON *light_dev_handle(int ep,uint8_t *arg);
static int is_curtain_dev(int pid);
static cJSON *curtain_dev_msg_build(int ep,int OperationMode);
static cJSON *curtain_dev_handle(int ep,uint8_t *arg);
static int is_outlet_dev(int pid);
static cJSON *outlet_msg_build(int ep,int onoff);
static cJSON *outlet_dev_handle(int ep,uint8_t *arg);
typedef int (*pid_mth_func)(int pid);
typedef cJSON *(*dev_handle)(int ep,uint8_t *arg);
typedef struct{
pid_mth_func mth;
dev_handle handle;
}KK_VP_CTRL;
static KK_VP_CTRL vp_ctrl_table[]={
{is_light_dev,light_dev_handle},
{is_curtain_dev,curtain_dev_handle},
{is_outlet_dev,outlet_dev_handle}
};
static int light_dev_pid[]={
3001,3002,3003,3022,3023,3024
};
static int curtain_dev_pid[]={
3005,3006,3007,3008,3009,3010,3011,3026,3027,3067
};
static int outlet_dev_pid[]={
3019,3020,3037,3038
};
static int is_light_dev(int pid)
//****************************************************************************
static cJSON *light_msg_build(int ep,int onoff)
{ {
int i; return PowerSwitch_msg_build(ep,onoff);
for(i=0;i<sizeof(light_dev_pid)/sizeof(int);i++){
if(pid==light_dev_pid[i]){
return 1;
}
}
return 0;
} }
static int is_curtain_dev(int pid)
static cJSON *freshAir_msg_build(int ep,int onoff)
{ {
int i; return PowerSwitch_msg_build(ep,onoff);
for(i=0;i<sizeof(curtain_dev_pid)/sizeof(int);i++){
if(pid==curtain_dev_pid[i]){
return 1;
}
}
return 0;
} }
static int is_outlet_dev(int pid)
//****************************************************************************
static cJSON *air_conditioner_dev_handle(int ep,uint8_t *arg,uint8_t arg_len)
{ {
int i; uint8_t skill_type = arg[0];
for(i=0;i<sizeof(outlet_dev_pid)/sizeof(int);i++){
if(pid==outlet_dev_pid[i]){ switch(skill_type){
return 1; case VP_CTRL_OPEN://
return PowerSwitch_msg_build(ep,1);
case VP_CTRL_CLOSE:
return PowerSwitch_msg_build(ep,0);
case VP_CTRL_WINDSPEE_SET:{
if(arg[1]!=0x20){
return NULL;
} }
uint8_t windspeed = arg[2];
debug_log(LOG_FOCUS_LEVEL,"[VP] set windspeed=%d\n",windspeed);
if(windspeed==VP_SKILLTYPE_12_WINDSPEED_LOW){
return windSpeed_msg_build(ep,2);
}else if(windspeed==VP_SKILLTYPE_12_WINDSPEED_MID){
return windSpeed_msg_build(ep,3);
}else if(windspeed==VP_SKILLTYPE_12_WINDSPEED_HIGH){
return windSpeed_msg_build(ep,4);
}
break;
}
case VP_CTRL_MODE:{
if(arg[1]!=0x20){
return NULL;
}
uint8_t mode = arg[2];
_debug_log(LOG_FOCUS_LEVEL,"[VP] set mode=%d\n",mode);
if(mode==VP_SKILLTYPE_1C_WORKMODE_COLD){
return workMode_msg_build(ep,1);
}else if(mode==VP_SKILLTYPE_1C_WORKMODE_HEATING){
return workMode_msg_build(ep,2);
}else if(mode==VP_SKILLTYPE_1C_WORKMODE_FAN){
return workMode_msg_build(ep,3);
}else if(mode==VP_SKILLTYPE_1C_WORKMODE_DEHUM){
return workMode_msg_build(ep,4);
}else if(mode==VP_SKILLTYPE_1C_WORKMODE_AUTO){
return workMode_msg_build(ep,0);
}
break;
} }
return 0;
}
case VP_CTRL_TMP_SET:
if(arg[1]!=0x20){
return NULL;
}
uint8_t tmp = arg[2];
_debug_log(LOG_FOCUS_LEVEL,"[VP] set tmp=%d\n",tmp);
return temperature_msg_build(ep,tmp);
static cJSON *light_msg_build(int ep,int onoff) default:break;
{ }
return PowerSwitch_msg_build(ep,onoff); return NULL;
} }
static cJSON *light_dev_handle(int ep,uint8_t *arg) static cJSON *light_dev_handle(int ep,uint8_t *arg,uint8_t arg_len)
{ {
uint8_t skill_type = arg[0]; uint8_t skill_type = arg[0];
printf("[%s][%d]skill_type=%d,ep=%d\n",__FUNCTION__,__LINE__,skill_type,ep);
switch(skill_type){ switch(skill_type){
case VP_CTRL_OPEN:// case VP_CTRL_OPEN://
return light_msg_build(ep,1); return light_msg_build(ep,1);
...@@ -134,10 +238,10 @@ static cJSON *curtain_dev_msg_build(int ep,int OperationMode) ...@@ -134,10 +238,10 @@ static cJSON *curtain_dev_msg_build(int ep,int OperationMode)
return params; return params;
} }
static cJSON *curtain_dev_handle(int ep,uint8_t *arg) static cJSON *curtain_dev_handle(int ep,uint8_t *arg,uint8_t arg_len)
{ {
uint8_t skill_type = arg[0]; uint8_t skill_type = arg[0];
printf("[%s][%d]skill_type=%d,ep=%d\n",__FUNCTION__,__LINE__,skill_type,ep); debug_log(LOG_FOCUS_LEVEL,"skill_type=%d,ep=%d\n",skill_type,ep);
switch(skill_type){ switch(skill_type){
case VP_CTRL_OPEN:// case VP_CTRL_OPEN://
return curtain_dev_msg_build(ep,1); return curtain_dev_msg_build(ep,1);
...@@ -157,10 +261,10 @@ static cJSON *outlet_msg_build(int ep,int onoff) ...@@ -157,10 +261,10 @@ static cJSON *outlet_msg_build(int ep,int onoff)
} }
static cJSON *outlet_dev_handle(int ep,uint8_t *arg) static cJSON *outlet_dev_handle(int ep,uint8_t *arg,uint8_t arg_len)
{ {
uint8_t skill_type = arg[0]; uint8_t skill_type = arg[0];
printf("[%s][%d]skill_type=%d,ep=%d\n",__FUNCTION__,__LINE__,skill_type,ep); debug_log(LOG_FOCUS_LEVEL,"skill_type=%d,ep=%d\n",skill_type,ep);
switch(skill_type){ switch(skill_type){
case VP_CTRL_OPEN:// case VP_CTRL_OPEN://
return outlet_msg_build(ep,1); return outlet_msg_build(ep,1);
...@@ -172,20 +276,217 @@ static cJSON *outlet_dev_handle(int ep,uint8_t *arg) ...@@ -172,20 +276,217 @@ static cJSON *outlet_dev_handle(int ep,uint8_t *arg)
} }
void kk_lan_vp_control(uint8_t num,uint32_t nodeIdAry[],uint8_t *arg)
static cJSON *freshAir_windspeed_msg_build(int ep,int level)
{
char epNum[12] = {0};
cJSON *params = cJSON_CreateObject();
memset(epNum,0,sizeof(epNum));
snprintf(epNum,sizeof(epNum),"%d",ep);
cJSON_AddStringToObject(params,"epNum",epNum);
cJSON_AddNumberToObject(params,"WindSpeed",level);
return params;
}
static cJSON *freshAir_workMode_msg_build(int ep,int mode)
{
char epNum[12] = {0};
cJSON *params = cJSON_CreateObject();
memset(epNum,0,sizeof(epNum));
snprintf(epNum,sizeof(epNum),"%d",ep);
cJSON_AddStringToObject(params,"epNum",epNum);
cJSON_AddNumberToObject(params,"WorkMode",mode);
return params;
}
static cJSON *freshAir_dev_handle(int ep,uint8_t *arg,uint8_t arg_len)
{
uint8_t skill_type = arg[0];
if(arg_len!=3){
debug_log(LOG_ERROR_LEVEL,"[err] arg_len=%d\n",arg_len);
return NULL;
}
switch(skill_type){
case VP_CTRL_OPEN://
return PowerSwitch_msg_build(ep,1);
case VP_CTRL_CLOSE:
return PowerSwitch_msg_build(ep,0);
case VP_CTRL_WINDSPEE_SET:{
if(arg[1]!=0x20){
return NULL;
}
uint8_t windspeed = arg[2];
_debug_log(LOG_FOCUS_LEVEL,"[VP] set windspeed=%d\n",windspeed);
if(windspeed==VP_SKILLTYPE_12_WINDSPEED_LOW){
return freshAir_windspeed_msg_build(ep,1);
}else if(windspeed==VP_SKILLTYPE_12_WINDSPEED_MID){
return freshAir_windspeed_msg_build(ep,2);
}else if(windspeed==VP_SKILLTYPE_12_WINDSPEED_HIGH){
return freshAir_windspeed_msg_build(ep,3);
}
break;
}
case VP_CTRL_MODE:{
if(arg[1]!=0x20){
return NULL;
}
uint8_t mode = arg[2];
_debug_log(LOG_FOCUS_LEVEL,"[VP] set mode=%d\n",mode);
if(mode==VP_SKILLTYPE_1C_WORKMODE_AUTO){
return freshAir_workMode_msg_build(ep,0);
}else if(mode==VP_SKILLTYPE_1C_WORKMODE_MANUAL){
return freshAir_workMode_msg_build(ep,1);
}
break;
}
default:break;
}
return NULL;
}
static cJSON *fanCoilSwitch_windspeed_msg_build(int ep,int level)
{
char epNum[12] = {0};
cJSON *params = cJSON_CreateObject();
memset(epNum,0,sizeof(epNum));
snprintf(epNum,sizeof(epNum),"%d",ep);
cJSON_AddStringToObject(params,"epNum",epNum);
cJSON_AddNumberToObject(params,"WindSpeed",level);
return params;
}
static cJSON *fanCoilSwitch_workMode_msg_build(int ep,int mode)
{
char epNum[12] = {0};
cJSON *params = cJSON_CreateObject();
memset(epNum,0,sizeof(epNum));
snprintf(epNum,sizeof(epNum),"%d",ep);
cJSON_AddStringToObject(params,"epNum",epNum);
cJSON_AddNumberToObject(params,"WorkMode",mode);
return params;
}
static cJSON *fanCoilSwitch_Temperature_msg_build(int ep,int tmp)
{
char epNum[12] = {0};
cJSON *params = cJSON_CreateObject();
memset(epNum,0,sizeof(epNum));
snprintf(epNum,sizeof(epNum),"%d",ep);
cJSON_AddStringToObject(params,"epNum",epNum);
cJSON_AddNumberToObject(params,"Temperature",tmp);
return params;
}
static cJSON *fanCoilSwitch_dev_handle(int ep,uint8_t *arg,uint8_t arg_len)
{
uint8_t skill_type = arg[0];
switch(skill_type){
case VP_CTRL_OPEN://
return PowerSwitch_msg_build(ep,1);
case VP_CTRL_CLOSE:
return PowerSwitch_msg_build(ep,0);
case VP_CTRL_WINDSPEE_SET:{
if(arg[1]!=0x20){
return NULL;
}
uint8_t windspeed = arg[2];
debug_log(LOG_FOCUS_LEVEL,"[VP] set windspeed=%d\n",windspeed);
if(windspeed==VP_SKILLTYPE_12_WINDSPEED_LOW){
return fanCoilSwitch_windspeed_msg_build(ep,2);
}else if(windspeed==VP_SKILLTYPE_12_WINDSPEED_MID){
return fanCoilSwitch_windspeed_msg_build(ep,3);
}else if(windspeed==VP_SKILLTYPE_12_WINDSPEED_HIGH){
return fanCoilSwitch_windspeed_msg_build(ep,4);
}else if(windspeed==VP_SKILLTYPE_12_WINDSPEED_AUTO){
return fanCoilSwitch_windspeed_msg_build(ep,0);
}
break;
}
case VP_CTRL_MODE:{
if(arg[1]!=0x20){
return NULL;
}
uint8_t mode = arg[2];
_debug_log(LOG_FOCUS_LEVEL,"[VP] set mode=%d\n",mode);
if(mode==VP_SKILLTYPE_1C_WORKMODE_COLD){
return freshAir_workMode_msg_build(ep,1);
}else if(mode==VP_SKILLTYPE_1C_WORKMODE_HEATING){
return freshAir_workMode_msg_build(ep,2);
}else if(mode==VP_SKILLTYPE_1C_WORKMODE_FAN){
return freshAir_workMode_msg_build(ep,3);
}else if(mode==VP_SKILLTYPE_1C_WORKMODE_DEHUM){
return freshAir_workMode_msg_build(ep,4);
}
break;
}
case VP_CTRL_TMP_SET:
if(arg[1]!=0x20){
return NULL;
}
uint8_t tmp = arg[2];
_debug_log(LOG_FOCUS_LEVEL,"[VP] set tmp=%d\n",tmp);
return fanCoilSwitch_Temperature_msg_build(ep,tmp);
default:break;
}
return NULL;
}
int kk_lan_vp_control(uint8_t num,uint32_t nodeIdAry[],uint8_t *arg,uint8_t arg_len)
{ {
uint8_t i,j; uint8_t i,j;
uint8_t err = 0;
uint8_t skill_type;
int ep; int ep;
int pid = 0; int pid = 0;
dev_handle_func func;
char productCode[PRODUCT_CODE_LEN] = {0};
char deviceCode[DEVICE_CODE_LEN] = {0};
char productCode[32] = {0};
char deviceCode[32] = {0};
cJSON *msg = NULL; cJSON *msg = NULL;
cJSON *params = NULL; cJSON *params = NULL;
kk_map_dev_node_t *node = NULL; kk_map_dev_node_t *node = NULL;
KK_VP_CTRL *pVpCtr = vp_ctrl_table;
if(arg_len<=1){
debug_log(LOG_ERROR_LEVEL,"[err].\n");
return 1;
}
skill_type = arg[0];
for(i=0;i<num;i++){ for(i=0;i<num;i++){
memset(deviceCode,0,sizeof(deviceCode)); memset(deviceCode,0,sizeof(deviceCode));
...@@ -197,30 +498,33 @@ void kk_lan_vp_control(uint8_t num,uint32_t nodeIdAry[],uint8_t *arg) ...@@ -197,30 +498,33 @@ void kk_lan_vp_control(uint8_t num,uint32_t nodeIdAry[],uint8_t *arg)
continue ; continue ;
} }
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
snprintf(productCode,sizeof(productCode),"%s",node->productCode); snprintf(productCode,sizeof(productCode),"%s",node->productCode);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
pid = atoi(productCode); pid = atoi(productCode);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
params = NULL; params = NULL;
for(j=0;j<sizeof(vp_ctrl_table)/sizeof(KK_VP_CTRL);j++,pVpCtr++){
if(pVpCtr->mth!=NULL && pVpCtr->handle!=NULL){ if(is_ac_gw_pid(pid)!=0){
if(pVpCtr->mth(pid)){ debug_log(LOG_FOCUS_LEVEL,"air conditioner,pid=%d\n",pid);
printf("[%s][%d]\n",__FUNCTION__,__LINE__); params = air_conditioner_dev_handle(ep,arg,arg_len);
params = pVpCtr->handle(ep,arg); }else{
break; if((func = dev_pid_dispatch(pid))!=NULL){
} debug_log(LOG_FOCUS_LEVEL,"skill_type=%02x,ep=%d\n",skill_type,ep);
params = func(ep,arg,arg_len);
} }
} }
if(params!=NULL){ if(params!=NULL){
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
msg=property_set(productCode,deviceCode,"*","*",params); msg=property_set(productCode,deviceCode,"*","*",params);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
kk_ipc_send_json(msg); kk_ipc_send_json(msg);
}else{
err = 1;
break;
} }
} }
return err;
} }
......
...@@ -44,7 +44,60 @@ ...@@ -44,7 +44,60 @@
void kk_lan_vp_control(uint8_t num,uint32_t nodeIdAry[],uint8_t *arg);
//SKILL TYPE(0x12)----------------------------------------->WINDSPEED
#define VP_SKILLTYPE_12_WINDSPEED_LOW 0x01
#define VP_SKILLTYPE_12_WINDSPEED_MID 0x02
#define VP_SKILLTYPE_12_WINDSPEED_HIGH 0x03
#define VP_SKILLTYPE_12_WINDSPEED_AUTO 0x04
//SKILL TYPE(0X1C)----------------------------------------->WORKMODE
#define VP_SKILLTYPE_1C_WORKMODE_AUTO 0x01
#define VP_SKILLTYPE_1C_WORKMODE_MANUAL 0x02
#define VP_SKILLTYPE_1C_WORKMODE_COLD 0x03
#define VP_SKILLTYPE_1C_WORKMODE_HEATING 0x04
#define VP_SKILLTYPE_1C_WORKMODE_ENERGY 0x05
#define VP_SKILLTYPE_1C_WORKMODE_COMFORT 0x06
#define VP_SKILLTYPE_1C_WORKMODE_FAN 0x07
#define VP_SKILLTYPE_1C_WORKMODE_DEHUM 0x08
#define AIR_CONDITIONER_DEV_PID {\
3062\
}
//DEVICE PID DEFINE
//3001,3002,3003,3022,3023,3024
#define LIGHT_DEV_PID {\
3024\
}
//3005,3006,3007,3008,3009,3010,3011,3026,3027,3067
#define CURTAIN_DEV_PID {\
3027\
}
//3019,3020,3037,3038
#define OUTLET_DEV_PID {\
3019,3020,3037,3038\
}
#define FRESHAIR_DEV_PID {\
3032\
}
#define FANCOILSWITCH_DEV_PID {\
3034\
}
int kk_lan_vp_control(uint8_t num,uint32_t nodeIdAry[],uint8_t *arg,uint8_t arg_len);
......
...@@ -52,15 +52,18 @@ int kk_send_data_to_sdk(char *buf) ...@@ -52,15 +52,18 @@ int kk_send_data_to_sdk(char *buf)
INFO_PRINT("tmpBuf:%s\n",tmpBuf); INFO_PRINT("tmpBuf:%s\n",tmpBuf);
for(i = 0; i < LISTEN_MAX; i++){ for(i = 0; i < LISTEN_MAX; i++){
tcp_data_mutex_lock(); tcp_data_mutex_lock();
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if(s_ConnInfo[i].socketfd != -1){ if(s_ConnInfo[i].socketfd != -1){
send(s_ConnInfo[i].socketfd, tmpBuf, strlen(tmpBuf), 0); send(s_ConnInfo[i].socketfd, tmpBuf, strlen(tmpBuf), 0);
} }
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
tcp_data_mutex_unlock(); tcp_data_mutex_unlock();
} }
free(tmpBuf); free(tmpBuf);
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
return 0; return 0;
} }
static int _kk_handle_data(char *buf,int sockfd){ static int _kk_handle_data(char *buf,int sockfd){
...@@ -83,6 +86,7 @@ static int _kk_handle_data(char *buf,int sockfd){ ...@@ -83,6 +86,7 @@ static int _kk_handle_data(char *buf,int sockfd){
kk_data_handle(json,sockfd); kk_data_handle(json,sockfd);
cJSON_Delete(json); cJSON_Delete(json);
} }
return 0;
} }
static void PrintMesg(int i , char buf[]) static void PrintMesg(int i , char buf[])
......
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "kk_newccu_msg.h" #include "kk_newccu_msg.h"
#include "kk_product.h" #include "kk_product.h"
#include "kk_lan_node_db.h"
static pthread_mutex_t *mutex = NULL; static pthread_mutex_t *mutex = NULL;
...@@ -83,6 +84,8 @@ cJSON * property_report(const char *productCode,const char *deviceCode,const cha ...@@ -83,6 +84,8 @@ cJSON * property_report(const char *productCode,const char *deviceCode,const cha
} }
extern int kk_lan_get_ccuid(_OU_ char *device_code);
cJSON *scene_payload_build(const char*method,const char *msgId,cJSON *params) cJSON *scene_payload_build(const char*method,const char *msgId,cJSON *params)
{ {
char ccuid[33] = {0}; char ccuid[33] = {0};
...@@ -141,7 +144,7 @@ int kk_ipc_send_json(cJSON *root) ...@@ -141,7 +144,7 @@ int kk_ipc_send_json(cJSON *root)
} }
msg=cJSON_Print(root); msg=cJSON_Print(root);
printf("[lan->midware]json:\n%s\n",msg); debug_log(LOG_NORMAL_LEVEL,"[lan->midware]json:\n%s\n",msg);
cJSON_Minify(msg); cJSON_Minify(msg);
pthread_mutex_lock(mutex); pthread_mutex_lock(mutex);
......
...@@ -13,10 +13,9 @@ ...@@ -13,10 +13,9 @@
#include "kk_lan_ctrl.h" #include "kk_lan_ctrl.h"
#include "kk_data_mng.h" #include "kk_data_mng.h"
#include "kk_oldccu_msg.h" #include "kk_oldccu_msg.h"
#include "kk_lan_sync.h"
#include "kk_data_mng.h"
#include "kk_data_handle.h"
cJSON *old_ccu_msg_build_json(const char* nodeid,const char* opcode,const char* status,cJSON * arg) cJSON *old_ccu_msg_build_json(const char* nodeid,const char* opcode,const char* status,cJSON * arg)
{ {
...@@ -382,7 +381,7 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev ...@@ -382,7 +381,7 @@ static int kk_lan_property_convert(const char *deviceCode,kk_map_dev_node_t *dev
static int attr_indoorAir_report(cJSON *params) static int attr_indoorAir_report(cJSON *params,const char *deviceCode)
{ {
int k = 0; int k = 0;
if(params == NULL){ if(params == NULL){
...@@ -390,14 +389,18 @@ static int attr_indoorAir_report(cJSON *params) ...@@ -390,14 +389,18 @@ static int attr_indoorAir_report(cJSON *params)
} }
cJSON *epsAry = cJSON_GetObjectItem(params,"eps"); cJSON *epsAry = cJSON_GetObjectItem(params,"eps");
if(epsAry == NULL){ if(epsAry == NULL){
kk_send_indoorAir_status(params,deviceCode);
return -1; return -1;
} }else{
int epsize = cJSON_GetArraySize(epsAry); int epsize = cJSON_GetArraySize(epsAry);
for(k = 0; k < epsize; k++){ for(k = 0; k < epsize; k++){
char tmpIdx[4] = {0}; char tmpIdx[4] = {0};
cJSON *infoItem = cJSON_GetArrayItem(epsAry,k); cJSON *infoItem = cJSON_GetArrayItem(epsAry,k);
if(infoItem == NULL) continue; if(infoItem == NULL) continue;
kk_send_indoorAir_status(infoItem);
kk_send_indoorAir_status(infoItem,deviceCode);
}
} }
return 0; return 0;
} }
...@@ -413,8 +416,11 @@ int kk_lan_property_post_deal(const char *deviceCode,cJSON *payload) ...@@ -413,8 +416,11 @@ int kk_lan_property_post_deal(const char *deviceCode,cJSON *payload)
params = cJSON_GetObjectItem(payload,"params"); params = cJSON_GetObjectItem(payload,"params");
if(strcmp(dev->productCode,"3062") == 0){ if(strcmp(dev->productCode,"3062") == 0){
attr_indoorAir_report(params); debug_log(LOG_CRITICAL_LEVEL,"mark\n");
attr_indoorAir_report(params,deviceCode);
debug_log(LOG_CRITICAL_LEVEL,"mark\n");
}else{ }else{
debug_log(LOG_CRITICAL_LEVEL,"mark\n");
return kk_lan_property_convert(deviceCode,dev,params); return kk_lan_property_convert(deviceCode,dev,params);
} }
}else{ }else{
......
...@@ -25,6 +25,10 @@ int kk_lan_device_delete_notify(cJSON *payload); ...@@ -25,6 +25,10 @@ int kk_lan_device_delete_notify(cJSON *payload);
cJSON *_kk_sync_devicestatus_arg_build(kk_map_dev_node_t *node);
int kk_send_indoorAir_status(cJSON *info,const char *deviceCode);
#endif #endif
......
...@@ -9,6 +9,10 @@ ...@@ -9,6 +9,10 @@
#include "kk_voice_panel_cfg.h" #include "kk_voice_panel_cfg.h"
#include "kk_ccu_msg.h" #include "kk_ccu_msg.h"
#include "kk_lan_node_db.h"
#include "kk_voice_panel_handle.h"
static _OUT int node_id_check(_IN cJSON *zbDevsAry,_IN const char *id);
...@@ -20,18 +24,12 @@ _OUT cJSON *gws_ary_build(_IN int num,_IN VP_GW_ITEM list[]); ...@@ -20,18 +24,12 @@ _OUT cJSON *gws_ary_build(_IN int num,_IN VP_GW_ITEM list[]);
static pthread_mutex_t *mutex; static pthread_mutex_t *mutex;
void kk_vp_ac_mutex_init(void)
int kk_vp_cfg_init(void)
{ {
int err = 0;
mutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t)); mutex = (pthread_mutex_t *)malloc(sizeof(pthread_mutex_t));
if (0 != (err = pthread_mutex_init(mutex, NULL))) { if (0 != pthread_mutex_init(mutex, NULL)) {
free(mutex); free(mutex);
} }
pthread_mutex_init(&mutex, NULL);
return err;
} }
static _OUT cJSON *zigbee_devices_item_build(_IN VP_ZB_DEV_ITEM *item); static _OUT cJSON *zigbee_devices_item_build(_IN VP_ZB_DEV_ITEM *item);
...@@ -224,18 +222,19 @@ static _OUT cJSON *kk_vp_sync_scences(_IN cJSON *data) ...@@ -224,18 +222,19 @@ static _OUT cJSON *kk_vp_sync_scences(_IN cJSON *data)
static int kk_vp_get_device_name(_IN cJSON *devices,_IN const char*epNum,_IN const char*deviceCode,_IN int size,_OUT char *buf) static int kk_vp_get_device_name(_IN cJSON *devices,_IN const char*epNum,_IN const char*deviceCode,_IN int multi,_IN int size,_OUT char *buf)
{ {
int i = 0,devNum = 0; int i = 0,devNum = 0;
cJSON *name = NULL; cJSON *name = NULL;
cJSON *epNumObj = NULL;
cJSON *deviceItem = NULL,*devCodeObj = NULL; cJSON *deviceItem = NULL,*devCodeObj = NULL;
devNum = cJSON_GetArraySize(devices); devNum = cJSON_GetArraySize(devices);
//printf("[%s][%d]devNum=%d\n",__FUNCTION__,__LINE__,devNum); printf("[%s][%d]devNum=%d\n",__FUNCTION__,__LINE__,devNum);
for(i=0;i<devNum;i++){ for(i=0;i<devNum;i++){
deviceItem = cJSON_GetArrayItem(devices,i); deviceItem = cJSON_GetArrayItem(devices,i);
if(deviceItem->type!=cJSON_Object){ if(deviceItem->type!=cJSON_Object){
//printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
continue ; continue ;
} }
...@@ -243,31 +242,45 @@ static int kk_vp_get_device_name(_IN cJSON *devices,_IN const char*epNum,_IN con ...@@ -243,31 +242,45 @@ static int kk_vp_get_device_name(_IN cJSON *devices,_IN const char*epNum,_IN con
devCodeObj = cJSON_GetObjectItem(deviceItem,"deviceCode"); devCodeObj = cJSON_GetObjectItem(deviceItem,"deviceCode");
if(devCodeObj==NULL||devCodeObj->type!=cJSON_String){ if(devCodeObj==NULL||devCodeObj->type!=cJSON_String){
//printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
continue ; continue ;
} }
//printf("[%s][%d]%d,%d,%s,%s\n",__FUNCTION__,__LINE__,strlen(devCodeObj->valuestring),strlen(deviceCode),devCodeObj->valuestring,deviceCode); printf("[%s][%d]%d,%d,%s,%s\n",__FUNCTION__,__LINE__,strlen(devCodeObj->valuestring),strlen(deviceCode),devCodeObj->valuestring,deviceCode);
if((strlen(devCodeObj->valuestring)==strlen(deviceCode)) && if((strlen(devCodeObj->valuestring)==strlen(deviceCode)) &&
!strcmp(devCodeObj->valuestring,deviceCode)){ !strcmp(devCodeObj->valuestring,deviceCode)){
//printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if((name = cJSON_GetObjectItem(deviceItem,"name"))!=NULL && if((name = cJSON_GetObjectItem(deviceItem,"name"))!=NULL &&
name->type==cJSON_String){ name->type==cJSON_String){
//printf("[%s][%d]name=%s\n",__FUNCTION__,__LINE__,name->valuestring); printf("[%s][%d]name=%s\n",__FUNCTION__,__LINE__,name->valuestring);
if(multi!=0){
if((epNumObj = cJSON_GetObjectItem(deviceItem,"epNum"))!=NULL &&
epNumObj->type==cJSON_String &&
!strcmp(epNumObj->valuestring,epNum)){
snprintf(buf,size,"%s",name->valuestring); snprintf(buf,size,"%s",name->valuestring);
return 1; return 1;
} }
}else{
if((epNumObj = cJSON_GetObjectItem(deviceItem,"epNum"))!=NULL &&
epNumObj->type==cJSON_String &&
!strcmp(epNumObj->valuestring,"1")){
snprintf(buf,size,"%s",name->valuestring);
return 1;
} }
return 1;
} }
//printf("[%s][%d]\n",__FUNCTION__,__LINE__); }
}
}
printf("[%s][%d]\n",__FUNCTION__,__LINE__);
return 0; return 0;
} }
static int kk_vp_get_device_info(_IN cJSON *rooms,_IN VP_ZB_DEV_ITEM *pDevs) static int kk_vp_get_device_info(_IN cJSON *rooms,_IN VP_ZB_DEV_ITEM *pDevs,_IN int multi)
{ {
cJSON *roomItem = NULL; cJSON *roomItem = NULL;
cJSON *roomId = NULL,*devices = NULL; cJSON *roomId = NULL,*devices = NULL;
...@@ -292,9 +305,10 @@ static int kk_vp_get_device_info(_IN cJSON *rooms,_IN VP_ZB_DEV_ITEM *pDevs) ...@@ -292,9 +305,10 @@ static int kk_vp_get_device_info(_IN cJSON *rooms,_IN VP_ZB_DEV_ITEM *pDevs)
continue ; continue ;
} }
isFind = kk_vp_get_device_name(devices,pDevs->ch,pDevs->mac,sizeof(pDevs->name),pDevs->name); isFind = kk_vp_get_device_name(devices,pDevs->ch,pDevs->mac,multi,sizeof(pDevs->name),pDevs->name);
if(isFind!=0){ if(isFind!=0){
debug_log(LOG_CRITICAL_LEVEL,"roomId->valuestring=%s\n",roomId->valuestring);
snprintf(pDevs->room,sizeof(pDevs->room),"%s",roomId->valuestring); snprintf(pDevs->room,sizeof(pDevs->room),"%s",roomId->valuestring);
//printf("[%s][%d]\n",__FUNCTION__,__LINE__); //printf("[%s][%d]\n",__FUNCTION__,__LINE__);
return isFind; return isFind;
...@@ -370,22 +384,31 @@ static int kk_vp_sync_device_multi_eps(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c ...@@ -370,22 +384,31 @@ static int kk_vp_sync_device_multi_eps(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c
snprintf(pDevs->nodeId,sizeof(pDevs->nodeId)-1,"%d",nodeId); snprintf(pDevs->nodeId,sizeof(pDevs->nodeId)-1,"%d",nodeId);
if(kk_map_dev_search_by_deviceCode(pDevs->mac,&node) != 0){
if(kk_map_dev_search_by_deviceCode(pDevs->mac,&node) == 0){
snprintf(pDevs->operateType,sizeof(pDevs->operateType)-1,"%s",node->opearteType); snprintf(pDevs->operateType,sizeof(pDevs->operateType)-1,"%s",node->opearteType);
}else{ }else{
if(is_ac_gw_pid(atoi(pDevs->pid))!=0){
snprintf(pDevs->operateType,sizeof(pDevs->operateType)-1,"%s","12008");
}else{
snprintf(pDevs->operateType,sizeof(pDevs->operateType)-1,"%s","1"); snprintf(pDevs->operateType,sizeof(pDevs->operateType)-1,"%s","1");
} }
}
printf("pDevs->mac=%s,pDevs->ch=%s,pDevs->nodeId=%s\n",pDevs->mac,pDevs->ch,pDevs->nodeId); printf("pDevs->mac=%s,pDevs->ch=%s,pDevs->nodeId=%s\n",pDevs->mac,pDevs->ch,pDevs->nodeId);
if(kk_vp_get_device_info(rooms,pDevs)!=0){ if(kk_vp_get_device_info(rooms,pDevs,1)!=0){
if((zbDevObj = zigbee_devices_item_build(pDevs))!=NULL){
if(node_id_check(zbDevsAry,pDevs->nodeId)==0){
if((zbDevObj = zigbee_devices_item_build(pDevs))!=NULL){
cJSON_AddItemToArray(zbDevsAry,zbDevObj); cJSON_AddItemToArray(zbDevsAry,zbDevObj);
isFind = 1; isFind = 1;
} }
} }
} }
}
free(pDevs); free(pDevs);
//printf("[%s][%d]\n",__FUNCTION__,__LINE__); //printf("[%s][%d]\n",__FUNCTION__,__LINE__);
...@@ -438,12 +461,16 @@ static int kk_vp_sync_device_single_ep(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c ...@@ -438,12 +461,16 @@ static int kk_vp_sync_device_single_ep(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c
if(kk_map_dev_search_by_deviceCode(pDevs->mac,&node) != 0){ if(kk_map_dev_search_by_deviceCode(pDevs->mac,&node) != 0){
snprintf(pDevs->operateType,sizeof(pDevs->operateType)-1,"%s",node->opearteType); snprintf(pDevs->operateType,sizeof(pDevs->operateType)-1,"%s",node->opearteType);
}else{
if(is_ac_gw_pid(atoi(pDevs->pid))!=0){
snprintf(pDevs->operateType,sizeof(pDevs->operateType)-1,"%s","12008");
}else{ }else{
snprintf(pDevs->operateType,sizeof(pDevs->operateType)-1,"%s","1"); snprintf(pDevs->operateType,sizeof(pDevs->operateType)-1,"%s","1");
} }
}
if(kk_vp_get_device_info(rooms,pDevs)!=0){ if(kk_vp_get_device_info(rooms,pDevs,0)!=0){
//printf("[%s][%d]\n",__FUNCTION__,__LINE__); //printf("[%s][%d]\n",__FUNCTION__,__LINE__);
if((zbDevObj = zigbee_devices_item_build(pDevs))!=NULL){ if((zbDevObj = zigbee_devices_item_build(pDevs))!=NULL){
cJSON_AddItemToArray(zbDevsAry,zbDevObj); cJSON_AddItemToArray(zbDevsAry,zbDevObj);
...@@ -459,9 +486,92 @@ static int kk_vp_sync_device_single_ep(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c ...@@ -459,9 +486,92 @@ static int kk_vp_sync_device_single_ep(_IN cJSON *zbDevsAry,_IN cJSON *dev,_IN c
} }
#define VP_AC_GW_MAX_DEVICE_NUMBER 5
#define VP_AC_GW_INDOOR_MAX_DEVICE_NUMBER 16
static const int ac_gw_pid[]={3062};
typedef struct{
int insert;
char mac[17];
}AC_GW_TABLE_S;
static AC_GW_TABLE_S ac_gw_mac[VP_AC_GW_MAX_DEVICE_NUMBER];
static void ac_gw_table_init(void)
{
memset(ac_gw_mac,0,sizeof(ac_gw_mac));
}
static int ac_gw_table_insert(const char* mac)
{
int i;
for(i=0;i<VP_AC_GW_MAX_DEVICE_NUMBER;i++){
if(ac_gw_mac[i].insert==0){
snprintf(ac_gw_mac[i].mac,17,"%s",mac);
ac_gw_mac[i].insert = 1;
debug_log(LOG_DEBUG_LEVEL,"[insert suc] index=%d,mac=%s\n",i,ac_gw_mac[i].mac);
return 0;
}
}
debug_log(LOG_DEBUG_LEVEL,"[insert fail] no space!mac=%s\n",ac_gw_mac[i].mac);
return -1;
}
static int ac_gw_table_find(const char* mac)
{
int i;
if(mac==NULL){
return 0;
}
for(i=0;i<VP_AC_GW_MAX_DEVICE_NUMBER;i++){
if(ac_gw_mac[i].insert!=0){
if(!strcmp(mac,ac_gw_mac[i].mac)){
return 1;
}
}
}
return 0;
}
static int ac_gw_table_handle(cJSON *productCode,cJSON *mac)
{
int i;
int pid = 0;
if(productCode==NULL||mac==NULL||
productCode->type!=cJSON_String||mac->type!=cJSON_String){
return 0;
}
pid = atoi(productCode->valuestring);
for(i=0;i<sizeof(ac_gw_pid)/sizeof(int);i++){
if(pid==ac_gw_pid[i]){
ac_gw_table_insert(mac->valuestring);
return 1;
}
}
return 0;
}
int is_ac_gw_pid(int pid)
{
int i;
for(i=0;i<sizeof(ac_gw_pid)/sizeof(int);i++){
if(pid==ac_gw_pid[i]){
return 1;
}
}
return 0;
}
static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data) static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data)
{ {
int i,j; int i,j;
int isAcGw = 0;
cJSON *zbDevsAry = NULL; cJSON *zbDevsAry = NULL;
...@@ -477,6 +587,9 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data) ...@@ -477,6 +587,9 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data)
cJSON *properties = NULL; cJSON *properties = NULL;
cJSON *eps = NULL; cJSON *eps = NULL;
cJSON *productCode = NULL;
cJSON *mac = NULL;
if((zbDevsAry = cJSON_CreateArray())==NULL){ if((zbDevsAry = cJSON_CreateArray())==NULL){
printf("[cJSON_CreateArray err]zbDevsAry...\n"); printf("[cJSON_CreateArray err]zbDevsAry...\n");
...@@ -511,12 +624,31 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data) ...@@ -511,12 +624,31 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data)
for(j=0;j<subDevAryNum;j++){ for(j=0;j<subDevAryNum;j++){
if((dev = cJSON_GetArrayItem(subDevAry,j))==NULL|| if((dev = cJSON_GetArrayItem(subDevAry,j))==NULL||
dev->type!=cJSON_Object){ dev->type!=cJSON_Object){
printf("[prase fail]dev...\n"); printf("[prase fail]dev...\n");
continue ; continue ;
} }
productCode= cJSON_GetObjectItem(dev,"productCode");
mac= cJSON_GetObjectItem(dev,"mac");
pthread_mutex_lock(mutex);
isAcGw = ac_gw_table_handle(productCode,mac);
pthread_mutex_unlock(mutex);
if(isAcGw!=0){
roomsAry = cJSON_GetObjectItem(data,ROOMS_STR);
if(roomsAry==NULL||roomsAry->type!=cJSON_Array){
printf("[prase fail]roomsAry...\n");
continue ;
}
debug_log(LOG_CRITICAL_LEVEL,"~~~~~~~~~~~~~~~~~~~\n");
kk_vp_sync_device_single_ep(zbDevsAry,dev,roomsAry);
}else{
if((properties = cJSON_GetObjectItem(dev,"properties"))==NULL|| if((properties = cJSON_GetObjectItem(dev,"properties"))==NULL||
properties->type!=cJSON_Object){ properties->type!=cJSON_Object){
printf("[prase fail]properties...\n"); printf("[prase fail]properties...\n");
...@@ -525,6 +657,8 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data) ...@@ -525,6 +657,8 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data)
eps = cJSON_GetObjectItem(properties,"eps"); eps = cJSON_GetObjectItem(properties,"eps");
roomsAry = cJSON_GetObjectItem(data,ROOMS_STR); roomsAry = cJSON_GetObjectItem(data,ROOMS_STR);
if(roomsAry==NULL||roomsAry->type!=cJSON_Array){ if(roomsAry==NULL||roomsAry->type!=cJSON_Array){
printf("[prase fail]roomsAry...\n"); printf("[prase fail]roomsAry...\n");
...@@ -532,12 +666,15 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data) ...@@ -532,12 +666,15 @@ static _OUT cJSON *kk_vp_sync_device(_IN cJSON *data)
} }
if(eps==NULL){ if(eps==NULL){
//printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]---------------->\n",__FUNCTION__,__LINE__);
kk_vp_sync_device_single_ep(zbDevsAry,dev,roomsAry); kk_vp_sync_device_single_ep(zbDevsAry,dev,roomsAry);
}else if(eps->type==cJSON_Array){ }else if(eps->type==cJSON_Array){
//printf("[%s][%d]\n",__FUNCTION__,__LINE__); printf("[%s][%d]---------------->\n",__FUNCTION__,__LINE__);
kk_vp_sync_device_multi_eps(zbDevsAry,dev,roomsAry,eps); kk_vp_sync_device_multi_eps(zbDevsAry,dev,roomsAry,eps);
} }
}
} }
} }
//printf("[%s][%d]\n",__FUNCTION__,__LINE__); //printf("[%s][%d]\n",__FUNCTION__,__LINE__);
...@@ -598,9 +735,110 @@ static _OUT cJSON *kk_vp_sync_gws(_IN cJSON *data) ...@@ -598,9 +735,110 @@ static _OUT cJSON *kk_vp_sync_gws(_IN cJSON *data)
static _OUT cJSON *kk_vp_sync_ac_indoors(_IN cJSON *data) static _OUT cJSON *kk_vp_sync_ac_indoors(_IN cJSON *data)
{ {
//todo: cJSON *roomsAry = NULL;
cJSON *roomObj = NULL;
cJSON *roomId = NULL,*room_name = NULL;
cJSON *devsAry = NULL,*devObj = NULL;
cJSON *dev_name = NULL,*epNum = NULL,*deviceCode = NULL;
VP_AC_INDOOR_ITEM *indoorList = NULL;
VP_AC_INDOOR_ITEM* pIndoorItem = NULL;
int i,j,roomNum = 0,devNum = 0;
int node;
int max_indoor_size = VP_AC_GW_MAX_DEVICE_NUMBER*VP_AC_GW_INDOOR_MAX_DEVICE_NUMBER;
int indoor_num = 0;
if((roomsAry = cJSON_GetObjectItem(data,ROOMS_STR))==NULL||
roomsAry->type!=cJSON_Array){
return ac_indoors_ary_build(0,NULL);
}
if((roomNum = cJSON_GetArraySize(roomsAry))==0){
return ac_indoors_ary_build(0,NULL); return ac_indoors_ary_build(0,NULL);
}
indoorList = (VP_AC_INDOOR_ITEM*)malloc(sizeof(VP_AC_INDOOR_ITEM)*VP_AC_GW_MAX_DEVICE_NUMBER*VP_AC_GW_INDOOR_MAX_DEVICE_NUMBER);
memset(indoorList,0,sizeof(VP_AC_INDOOR_ITEM)*VP_AC_GW_MAX_DEVICE_NUMBER*VP_AC_GW_INDOOR_MAX_DEVICE_NUMBER);
pIndoorItem = indoorList;
for(i=0;i<roomNum;i++){
if((roomObj = cJSON_GetArrayItem(roomsAry,i))==NULL||
roomObj->type!=cJSON_Object){
continue ;
}
roomId = cJSON_GetObjectItem(roomObj,ROOMS_ID_STR);
room_name = cJSON_GetObjectItem(roomObj,NAME_STR);
if(roomId==NULL||roomId->type!=cJSON_String||
room_name==NULL||room_name->type!=cJSON_String){
continue ;
}
if((devsAry = cJSON_GetObjectItem(roomObj,DEVICES_STR))==NULL&&
devsAry->type!=cJSON_Array){
continue ;
}
if((devNum = cJSON_GetArraySize(devsAry))==0){
continue ;
}
for(j=0;j<devNum;j++){
devObj = cJSON_GetArrayItem(devsAry,j);
if((deviceCode = cJSON_GetObjectItem(devObj,"deviceCode"))==NULL||
deviceCode->type!=cJSON_String){
continue;
}
pthread_mutex_lock(mutex);
if(ac_gw_table_find(deviceCode->valuestring)!=0){
pthread_mutex_unlock(mutex);
dev_name = cJSON_GetObjectItem(devObj,NAME_STR);
epNum = cJSON_GetObjectItem(devObj,"epNum");
if(dev_name->type!=cJSON_String ||
epNum->type!=cJSON_String||
!strcmp(epNum->valuestring,"1")){
continue ;
}
debug_log(LOG_DEBUG_LEVEL,"deviceCode=%s,epNum=%s,dev_name=%s",deviceCode->valuestring,epNum->valuestring,dev_name->valuestring);
pIndoorItem->online = 1;
node = kk_lan_db_node_get(deviceCode->valuestring,1);
snprintf(pIndoorItem->ac_gw_nodeId,sizeof(pIndoorItem->ac_gw_nodeId),"%d",node);
node = kk_lan_db_node_get(deviceCode->valuestring,atoi(epNum->valuestring));
snprintf(pIndoorItem->nodeId,sizeof(pIndoorItem->nodeId),"%d",node);
snprintf(pIndoorItem->addr,sizeof(pIndoorItem->addr),"%s",epNum->valuestring);
snprintf(pIndoorItem->operateType,sizeof(pIndoorItem->operateType),"%s","-5");
snprintf(pIndoorItem->name,sizeof(pIndoorItem->name),"%s",dev_name->valuestring);
snprintf(pIndoorItem->room,sizeof(pIndoorItem->room),"%s",roomId->valuestring);
indoor_num+=1;
++pIndoorItem;
}
pthread_mutex_unlock(mutex);
}
}
roomsAry = ac_indoors_ary_build(indoor_num,indoorList);
free(indoorList);
return roomsAry;
} }
//保留 //保留
static _OUT cJSON *infrared_codelib_info_ary_build(_IN cJSON *data) static _OUT cJSON *infrared_codelib_info_ary_build(_IN cJSON *data)
{ {
...@@ -661,6 +899,54 @@ _OUT cJSON * kk_voice_panel_cfg_build(_IN VP_CFG_JSON *arg,int ver) ...@@ -661,6 +899,54 @@ _OUT cJSON * kk_voice_panel_cfg_build(_IN VP_CFG_JSON *arg,int ver)
static _OUT int node_id_check(_IN cJSON *zbDevsAry,_IN const char *id)
{
int itemNum;
int chansItemNum;
int i,j;
cJSON *itemObj = NULL;
cJSON *chans = NULL;
cJSON *chansItem = NULL;
cJSON *idObj = NULL;
if(zbDevsAry==NULL||zbDevsAry->type!=cJSON_Array){
return 0;
}
itemNum = cJSON_GetArraySize(zbDevsAry);
for(i=0;i<itemNum;i++){
if((itemObj = cJSON_GetArrayItem(zbDevsAry, i))==NULL||
itemObj->type!=cJSON_Object){
continue;
}
if((chans = cJSON_GetObjectItem(itemObj,"chans"))==NULL||
chans->type!=cJSON_Array){
continue;
}
chansItemNum = cJSON_GetArraySize(chans);
for(j=0;j<chansItemNum;j++){
if((chansItem = cJSON_GetArrayItem(chans, j))==NULL||
chansItem->type!=cJSON_Object){
continue;
}
if((idObj = cJSON_GetObjectItem(chansItem,"id"))==NULL||
idObj->type!=cJSON_String){
continue;
}
if(!strcmp(id,idObj->valuestring)){
return 1;
}
}
}
return 0;
}
...@@ -924,6 +1210,14 @@ _OUT int kk_vp_syncinfo(_IN cJSON *payload,_IN int ver,_OUT cJSON **root) ...@@ -924,6 +1210,14 @@ _OUT int kk_vp_syncinfo(_IN cJSON *payload,_IN int ver,_OUT cJSON **root)
return -1; return -1;
} }
debug_log(LOG_CRITICAL_LEVEL,"mark\n");
pthread_mutex_lock(mutex);
ac_gw_table_init();
pthread_mutex_unlock(mutex);
debug_log(LOG_CRITICAL_LEVEL,"mark\n");
json.controller_buttons_config = infrared_codelib_info_ary_build(data); json.controller_buttons_config = infrared_codelib_info_ary_build(data);
json.infrared_codelib_info = infrared_codelib_info_ary_build(data); json.infrared_codelib_info = infrared_codelib_info_ary_build(data);
......
...@@ -34,12 +34,12 @@ typedef struct{ ...@@ -34,12 +34,12 @@ typedef struct{
typedef struct{ typedef struct{
char *ac_gw_nodeId; char ac_gw_nodeId[8];
char *addr; char addr[8];
char *nodeId; char nodeId[8];
char *name; char name[32];
char *operateType; char operateType[8];
char *room; char room[32];
int online; int online;
}VP_AC_INDOOR_ITEM; }VP_AC_INDOOR_ITEM;
...@@ -64,7 +64,9 @@ typedef struct{ ...@@ -64,7 +64,9 @@ typedef struct{
int kk_vp_cfg_init(void); void kk_vp_ac_mutex_init(void);
int is_ac_gw_pid(int pid);
_OUT int kk_vp_syncinfo(_IN cJSON *payload,_IN int ver,_OUT cJSON **root); _OUT int kk_vp_syncinfo(_IN cJSON *payload,_IN int ver,_OUT cJSON **root);
......
...@@ -9,6 +9,8 @@ ...@@ -9,6 +9,8 @@
#include "kk_voice_panel_handle.h" #include "kk_voice_panel_handle.h"
#include "uart_proto.h" #include "uart_proto.h"
#include "kk_lan_vp_ctrl.h" #include "kk_lan_vp_ctrl.h"
#include "Serial.h"
#include "kk_oldccu_msg.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))
...@@ -40,6 +42,8 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data); ...@@ -40,6 +42,8 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data);
static void kk_vp_config_file_update_stop_handle(pro_data_t *pro_data); static void kk_vp_config_file_update_stop_handle(pro_data_t *pro_data);
static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data); static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data);
static void kk_vp_config_file_update_status_handle(pro_data_t *pro_data); static void kk_vp_config_file_update_status_handle(pro_data_t *pro_data);
static void kk_vp_voice_control_handle(pro_data_t *pro_data);
static VP_OPCODE_HANDLE vp_opcode_table[] = { static VP_OPCODE_HANDLE vp_opcode_table[] = {
...@@ -53,7 +57,8 @@ static VP_OPCODE_HANDLE vp_opcode_table[] = { ...@@ -53,7 +57,8 @@ static VP_OPCODE_HANDLE vp_opcode_table[] = {
{OPCODE_CONFIG_DATA_REQUEST,kk_vp_config_file_update_data_req_handle}, {OPCODE_CONFIG_DATA_REQUEST,kk_vp_config_file_update_data_req_handle},
{OPCODE_CONFIG_FILE_UPDATE_STOP,kk_vp_config_file_update_stop_handle}, {OPCODE_CONFIG_FILE_UPDATE_STOP,kk_vp_config_file_update_stop_handle},
{OPCODE_CONFIG_FILE_INFO_GET,kk_vp_config_file_info_query_handle}, {OPCODE_CONFIG_FILE_INFO_GET,kk_vp_config_file_info_query_handle},
{OPCODE_CONFIG_FILE_UPDATE_STATUS,kk_vp_config_file_update_status_handle} {OPCODE_CONFIG_FILE_UPDATE_STATUS,kk_vp_config_file_update_status_handle},
{OPCODE_VOICE_CONTROL_NOTIFY,kk_vp_voice_control_handle}
}; };
...@@ -118,7 +123,7 @@ uint32_t CreateCrc32(const uint8_t* s, uint32_t len) { ...@@ -118,7 +123,7 @@ uint32_t CreateCrc32(const uint8_t* s, uint32_t len) {
typedef struct typedef struct VP_SCENE_MAP
{ {
int raw_id; int raw_id;
uint16_t map_id; uint16_t map_id;
...@@ -172,8 +177,7 @@ int vp_scene_id_item_add(int scene_id) ...@@ -172,8 +177,7 @@ int vp_scene_id_item_add(int scene_id)
pScene->raw_id = scene_id; pScene->raw_id = scene_id;
pScene->map_id = vp_map_id++; pScene->map_id = vp_map_id++;
printf("[vp scene map]%d->%d\n",pScene->raw_id,pScene->map_id); _debug_log(LOG_NORMAL_LEVEL,"[vp scene map]%d->%d\n",pScene->raw_id,pScene->map_id);
if(vp_scene_map == NULL){ if(vp_scene_map == NULL){
vp_scene_map = pScene; vp_scene_map = pScene;
...@@ -195,7 +199,8 @@ int vp_scene_id_item_load(int scene_id,uint16_t map_id) ...@@ -195,7 +199,8 @@ int vp_scene_id_item_load(int scene_id,uint16_t map_id)
pScene->raw_id = scene_id; pScene->raw_id = scene_id;
pScene->map_id = map_id; pScene->map_id = map_id;
printf("[vp scene map load]%d->%d\n",pScene->raw_id,pScene->map_id); _debug_log(LOG_NORMAL_LEVEL,"[vp scene map load]%d->%d\n",pScene->raw_id,pScene->map_id);
if(vp_scene_map == NULL){ if(vp_scene_map == NULL){
...@@ -272,7 +277,8 @@ int vp_scene_id_map_save(void) ...@@ -272,7 +277,8 @@ int vp_scene_id_map_save(void)
cJSON *json = vp_scene_id_map_file_build(); cJSON *json = vp_scene_id_map_file_build();
pStr = cJSON_Print(json); pStr = cJSON_Print(json);
printf("[%s][%d][vp scene id file]%s\n",__FUNCTION__,__LINE__,pStr);
debug_log(LOG_NORMAL_LEVEL,"[vp scene id file]%s\n",pStr);
cJSON_Minify(pStr); cJSON_Minify(pStr);
length = strlen(pStr); length = strlen(pStr);
...@@ -310,15 +316,14 @@ int vp_scene_id_map_load(void) ...@@ -310,15 +316,14 @@ int vp_scene_id_map_load(void)
fp = fopen (VP_SCENE_ID_FILE,"r"); fp = fopen (VP_SCENE_ID_FILE,"r");
if(fp==NULL){ if(fp==NULL){
printf("open err.\n"); debug_log(LOG_WARNING_LEVEL,"[%s]fopen err!\n",VP_SCENE_ID_FILE);
return ; return -1;
} }
printf("vp_scene_id_map_load\n");
fseek (fp, 0, SEEK_END); fseek (fp, 0, SEEK_END);
size=ftell(fp); size=ftell(fp);
printf("size=%d\n",size);
fseek (fp, 0, SEEK_SET); fseek (fp, 0, SEEK_SET);
...@@ -378,12 +383,12 @@ void vp_send_data_build(uint16_t opCode,uint8_t len,uint8_t *data) ...@@ -378,12 +383,12 @@ void vp_send_data_build(uint16_t opCode,uint8_t len,uint8_t *data)
data_len = proto_frame_to_uart(&pro_data,data_buf); data_len = proto_frame_to_uart(&pro_data,data_buf);
printf("\n*********************************\n");
printf("[send] len=%d\n",data_len); _debug_log(LOG_INFO_LEVEL,"\n[LAN->VP]len=%d\n",data_len);
for(int i=0;i<data_len;i++){ for(int i=0;i<data_len;i++){
printf("%02X ",data_buf[i]); _debug_log(LOG_INFO_LEVEL,"%02X ",data_buf[i]);
} }
printf("\n"); _debug_log(LOG_INFO_LEVEL,"\n\n");
eSerial_WriteBuffer(data_buf, data_len); eSerial_WriteBuffer(data_buf, data_len);
} }
...@@ -408,12 +413,12 @@ void vp_reply_data_build(uint16_t seq,uint8_t ch,uint16_t opCode,uint8_t len,uin ...@@ -408,12 +413,12 @@ void vp_reply_data_build(uint16_t seq,uint8_t ch,uint16_t opCode,uint8_t len,uin
data_len = proto_frame_to_uart(&pro_data,data_buf); data_len = proto_frame_to_uart(&pro_data,data_buf);
printf("\n*********************************\n");
printf("[reply] len=%d\n",data_len); _debug_log(LOG_INFO_LEVEL,"\n[LAN->VP]len=%d\n",data_len);
for(int i=0;i<data_len;i++){ for(int i=0;i<data_len;i++){
printf("%02X ",data_buf[i]); _debug_log(LOG_INFO_LEVEL,"%02X ",data_buf[i]);
} }
printf("\n\n"); _debug_log(LOG_INFO_LEVEL,"\n\n");
eSerial_WriteBuffer(data_buf, data_len); eSerial_WriteBuffer(data_buf, data_len);
} }
...@@ -451,7 +456,7 @@ int _vp_get_cfg_file_size(void) ...@@ -451,7 +456,7 @@ int _vp_get_cfg_file_size(void)
fp = fopen (VP_CONFIG_FILE_TAR_GZ,"r"); fp = fopen (VP_CONFIG_FILE_TAR_GZ,"r");
if(fp==NULL){ if(fp==NULL){
perror ("open err"); debug_log(LOG_WARNING_LEVEL,"[%s]fopen err!\n",VP_CONFIG_FILE_TAR_GZ);
return 0; return 0;
} }
fseek (fp, 0, SEEK_END); fseek (fp, 0, SEEK_END);
...@@ -475,13 +480,13 @@ int _vp_get_cfg_file_crc32(void) ...@@ -475,13 +480,13 @@ int _vp_get_cfg_file_crc32(void)
fp = fopen (VP_CONFIG_FILE,"r"); fp = fopen (VP_CONFIG_FILE,"r");
if(fp==NULL){ if(fp==NULL){
debug_log(LOG_WARNING_LEVEL,"[%s]fopen err!\n",VP_CONFIG_FILE);
printf("open err.\n"); printf("open err.\n");
return ; return -1;
} }
fseek (fp, 0, SEEK_END); fseek (fp, 0, SEEK_END);
size=ftell(fp); size=ftell(fp);
printf("size=%d\n",size);
fseek (fp, 0, SEEK_SET); fseek (fp, 0, SEEK_SET);
...@@ -500,11 +505,11 @@ int _vp_get_cfg_file_crc32(void) ...@@ -500,11 +505,11 @@ int _vp_get_cfg_file_crc32(void)
printf("[remain]r_len=%d,remain=%d\n",r_len,remain); printf("[remain]r_len=%d,remain=%d\n",r_len,remain);
}else{ }else{
remain = 0; remain = 0;
printf("[remain] 0 \n",remain);
pRead[size] = '\0'; pRead[size] = '\0';
} }
} }
crc32 = CreateCrc32(buff, size); crc32 = CreateCrc32((uint8_t *)buff, size);
printf("crc32=%x\n",crc32); printf("crc32=%x\n",crc32);
free(buff); free(buff);
...@@ -517,7 +522,7 @@ static void vp_open_fd() ...@@ -517,7 +522,7 @@ static void vp_open_fd()
{ {
update_fp = fopen (VP_CONFIG_FILE_TAR_GZ,"rb"); update_fp = fopen (VP_CONFIG_FILE_TAR_GZ,"rb");
if(update_fp==NULL){ if(update_fp==NULL){
printf("update_fp open err.\n"); debug_log(LOG_WARNING_LEVEL,"[%s]fopen err!\n",VP_CONFIG_FILE_TAR_GZ);
} }
} }
static void vp_close_fd() static void vp_close_fd()
...@@ -586,7 +591,7 @@ static void kk_vp_get_8009_snapshoot_handle(pro_data_t *pro_data) ...@@ -586,7 +591,7 @@ 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);
VP_RECV_PRINT("\n[VP->LAN]sv=%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);
} }
} }
...@@ -613,7 +618,7 @@ static void kk_vp_get_snapshoot_handle(pro_data_t *pro_data) ...@@ -613,7 +618,7 @@ static void kk_vp_get_snapshoot_handle(pro_data_t *pro_data)
data[9] = (nodeId>>8)&0xff; data[9] = (nodeId>>8)&0xff;
data[10] = nodeId&0xff; data[10] = nodeId&0xff;
data[11] = netStatus; data[11] = netStatus;
VP_RECV_PRINT("\n[vp snapshoot get]\n");
vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_SNAPSHOOT,sizeof(data),data); vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_SNAPSHOOT,sizeof(data),data);
} }
...@@ -637,18 +642,17 @@ static void kk_vp_scene_trigger_handle(pro_data_t *pro_data) ...@@ -637,18 +642,17 @@ static void kk_vp_scene_trigger_handle(pro_data_t *pro_data)
sceneNum = pro_data->arg[0]; sceneNum = pro_data->arg[0];
sceneAry = malloc(sizeof(uint16_t)*sceneNum); sceneAry = malloc(sizeof(uint16_t)*sceneNum);
VP_RECV_PRINT("[VP]execute scene!",sceneNum); debug_log(LOG_FOCUS_LEVEL,"execute scene\n");
printf("sceneNum=%d\n",sceneNum); _debug_log(LOG_FOCUS_LEVEL,"sceneNum=%d\n",sceneNum);
for(i=0;i<sceneNum;i++){ for(i=0;i<sceneNum;i++){
sceneAry[i] = MK_UINT16(&pro_data->arg[1+2*i]); sceneAry[i] = MK_UINT16(&pro_data->arg[1+2*i]);
printf("scene %d:%d\n",i,sceneAry[i]); _debug_log(LOG_INFO_LEVEL,"scene-%d:%d\n",i,sceneAry[i]);
} }
VP_RECV_PRINT("\n[vp call scene]\n");
for(i=0;i<sceneNum;i++){ for(i=0;i<sceneNum;i++){
if((sceneId = vp_scene_id_get_scene_id(sceneAry[i]))!=-1){ if((sceneId = vp_scene_id_get_scene_id(sceneAry[i]))!=-1){
printf("1...\n");
char buff[32] = {0}; char buff[32] = {0};
memset(buff,0,32); memset(buff,0,32);
snprintf(buff,32,"%d",sceneId); snprintf(buff,32,"%d",sceneId);
...@@ -659,13 +663,13 @@ static void kk_vp_scene_trigger_handle(pro_data_t *pro_data) ...@@ -659,13 +663,13 @@ static void kk_vp_scene_trigger_handle(pro_data_t *pro_data)
off+=1; off+=1;
} }
} }
printf("2...\n");
if(off!=0){ if(off!=0){
data[0] = 0x00; data[0] = 0x00;
}else{ }else{
data[0] = 1; data[0] = 1;
} }
printf("3...\n");
vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_SCENE_ID_NOTIFY,1+2*off+1,data); vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_SCENE_ID_NOTIFY,1+2*off+1,data);
free(sceneAry); free(sceneAry);
} }
...@@ -694,7 +698,7 @@ static void kk_vp_set_8009_system_time_handle(pro_data_t *pro_data) ...@@ -694,7 +698,7 @@ static void kk_vp_set_8009_system_time_handle(pro_data_t *pro_data)
sec = pro_data->arg[7]; sec = pro_data->arg[7];
kk_vp_set_state_machine(GET_8009_CONFIG_FILE_INFO); kk_vp_set_state_machine(GET_8009_CONFIG_FILE_INFO);
VP_RECV_PRINT("\n[VP->LAN]%d-%d-%d %d:%d:%d\n",year,month,day,hour,minute,sec); _debug_log(LOG_INFO_LEVEL,"\n%d-%d-%d %d:%d:%d\n",year,month,day,hour,minute,sec);
} }
static void kk_vp_get_system_time_handle(pro_data_t *pro_data) static void kk_vp_get_system_time_handle(pro_data_t *pro_data)
...@@ -720,42 +724,43 @@ static void kk_vp_get_system_time_handle(pro_data_t *pro_data) ...@@ -720,42 +724,43 @@ static void kk_vp_get_system_time_handle(pro_data_t *pro_data)
data[6] = c->tm_min; data[6] = c->tm_min;
data[7] = c->tm_sec; data[7] = c->tm_sec;
VP_RECV_PRINT("\n[vp system time get reply]%d-%d-%d %d:%d:%d\n",(c->tm_year+1900),(c->tm_mon+1),c->tm_mday,c->tm_hour,c->tm_min,c->tm_sec); _debug_log(LOG_INFO_LEVEL,"\n%d-%d-%d %d:%d:%d\n",(c->tm_year+1900),(c->tm_mon+1),c->tm_mday,c->tm_hour,c->tm_min,c->tm_sec);
vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_SYSTEM_TIME_GET,sizeof(data),data); vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_SYSTEM_TIME_GET,sizeof(data),data);
} }
static void kk_vp_action_handle(pro_data_t *pro_data) static void kk_vp_action_handle(pro_data_t *pro_data)
{ {
uint8_t err = 0;
uint8_t i=0; uint8_t i=0;
uint8_t devNum = 0; uint8_t devNum = 0;
uint32_t *nodeIdAry = NULL; uint32_t *nodeIdAry = NULL;
uint32_t *OperatorIdAry = NULL; uint32_t *OperatorIdAry = NULL;
uint8_t skillType; uint8_t skillType;
VP_RECV_PRINT("\n\n******************0x010B***********************\n\n");
_debug_log(LOG_FOCUS_LEVEL,"\n\n*****************VP CTRL*****************\n");
if((devNum = pro_data->arg[0])!=0){ if((devNum = pro_data->arg[0])!=0){
nodeIdAry = malloc(sizeof(uint32_t)*devNum); nodeIdAry = malloc(sizeof(uint32_t)*devNum);
OperatorIdAry = malloc(sizeof(uint32_t)*devNum); OperatorIdAry = malloc(sizeof(uint32_t)*devNum);
printf("devNum=%d",devNum); _debug_log(LOG_DEBUG_LEVEL,"devNum=%d",devNum);
for(i=0;i<devNum;i++){ for(i=0;i<devNum;i++){
nodeIdAry[i] =(pro_data->arg[1+8*i]<<24) | (pro_data->arg[2+8*i]<<16) | (pro_data->arg[3+8*i]<<8) | pro_data->arg[4+8*i]; nodeIdAry[i] =(pro_data->arg[1+8*i]<<24) | (pro_data->arg[2+8*i]<<16) | (pro_data->arg[3+8*i]<<8) | pro_data->arg[4+8*i];
OperatorIdAry[i] = (pro_data->arg[5+8*i]<<24) | (pro_data->arg[6+8*i]<<16) | (pro_data->arg[7+8*i]<<8) | pro_data->arg[8+8*i]; OperatorIdAry[i] = (pro_data->arg[5+8*i]<<24) | (pro_data->arg[6+8*i]<<16) | (pro_data->arg[7+8*i]<<8) | pro_data->arg[8+8*i];
VP_RECV_PRINT("[Node Id %d] %08x",i,nodeIdAry[i]); _debug_log(LOG_DEBUG_LEVEL,"[Node Id %d] %08x\n",i,nodeIdAry[i]);
VP_RECV_PRINT("[Operator Id %d] %08x",i,OperatorIdAry[i]); _debug_log(LOG_DEBUG_LEVEL,"[Operator Id %d] %08x\n",i,OperatorIdAry[i]);
} }
skillType = pro_data->arg[1+8*i]; skillType = pro_data->arg[1+8*i];
VP_RECV_PRINT("[skillType] %02x",skillType); _debug_log(LOG_DEBUG_LEVEL,"[skillType] %02x\n",skillType);
_debug_log(LOG_DEBUG_LEVEL,"arg len=%d\n",pro_data->args_len-1-8*devNum);
kk_lan_vp_control(devNum,nodeIdAry,&pro_data->arg[1+8*i]);
err = kk_lan_vp_control(devNum,nodeIdAry,&pro_data->arg[1+8*i],pro_data->args_len-1-8*devNum);
if(err==0){
uint8_t data[256]={0}; uint8_t data[256]={0};
memset(data,0,sizeof(data)); memset(data,0,sizeof(data));
data[0] = 0x00; data[0] = err;
data[1] = devNum; data[1] = devNum;
//todo:根据实际的执行 //todo:根据实际的执行
for(i=0;i<devNum;i++){ for(i=0;i<devNum;i++){
...@@ -778,12 +783,11 @@ static void kk_vp_action_handle(pro_data_t *pro_data) ...@@ -778,12 +783,11 @@ static void kk_vp_action_handle(pro_data_t *pro_data)
} }
vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_ACTION_NOTIFY,off+i,data); vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_ACTION_NOTIFY,off+i,data);
}
free(nodeIdAry); free(nodeIdAry);
free(OperatorIdAry); free(OperatorIdAry);
} }
//OPCODE_ACTION_NOTIFY
} }
static void kk_vp_config_file_update_notify_handle(pro_data_t *pro_data) static void kk_vp_config_file_update_notify_handle(pro_data_t *pro_data)
...@@ -804,7 +808,7 @@ static void kk_vp_config_file_update_notify_handle(pro_data_t *pro_data) ...@@ -804,7 +808,7 @@ static void kk_vp_config_file_update_notify_handle(pro_data_t *pro_data)
kk_vp_config_file_info_check(f_ver,f_size,crc32); kk_vp_config_file_info_check(f_ver,f_size,crc32);
VP_RECV_PRINT("\n[cfg file update notify ack]File Version=%08x,File Size=%d,CRC32 Value=%08X\n", _debug_log(LOG_DEBUG_LEVEL,"File Version=%08x,File Size=%d,CRC32 Value=%08X\n",
f_ver,f_size,crc32); f_ver,f_size,crc32);
}else { }else {
printf("\n"); printf("\n");
...@@ -832,9 +836,9 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data) ...@@ -832,9 +836,9 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data)
offset = MK_UINT32(&pro_data->arg[4]); offset = MK_UINT32(&pro_data->arg[4]);
req_size = MK_UINT16(&pro_data->arg[8]); req_size = MK_UINT16(&pro_data->arg[8]);
VP_RECV_PRINT("\n[vp config file req]f_ver=%d,offset=%d,req_size=%d\n",f_ver,offset,req_size); _debug_log(LOG_DEBUG_LEVEL,"\nf_ver=%d,offset=%d,req_size=%d\n",f_ver,offset,req_size);
if(update_fp==NULL){ if(update_fp==NULL){
printf("[update_fp] NULL!\n"); _debug_log(LOG_ERROR_LEVEL,"[update_fp] NULL!\n");
err = 1; err = 1;
} }
/* /*
...@@ -855,13 +859,13 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data) ...@@ -855,13 +859,13 @@ static void kk_vp_config_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];
printf("-------->=%d\n",len);
if(err==0){ if(err==0){
int err = fseek(update_fp, offset, SEEK_SET); int err = fseek(update_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, update_fp); r_len = fread(&data[len], 1, req_size, update_fp);
printf("r_len=%d\n",r_len);
if(r_len>=0){ if(r_len>=0){
t_len+=r_len; t_len+=r_len;
len += r_len; len += r_len;
...@@ -870,7 +874,7 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data) ...@@ -870,7 +874,7 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data)
} }
} }
}else{ }else{
printf("[fseek fail]offset=%d\n",offset); debug_log(LOG_ERROR_LEVEL,"[fseek fail]offset=%d\n",offset);
} }
} }
...@@ -879,7 +883,7 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data) ...@@ -879,7 +883,7 @@ static void kk_vp_config_file_update_data_req_handle(pro_data_t *pro_data)
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;
printf("crc32=%x\n",crc); _debug_log(LOG_DEBUG_LEVEL,"crc32=%x\n",crc);
vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_CONFIG_DATA_REQUEST,len,data); vp_reply_data_build(pro_data->seq,pro_data->ch,OPCODE_CONFIG_DATA_REQUEST,len,data);
usleep(100*1000); usleep(100*1000);
...@@ -901,9 +905,9 @@ static void kk_vp_config_file_update_stop_handle(pro_data_t *pro_data) ...@@ -901,9 +905,9 @@ static void kk_vp_config_file_update_stop_handle(pro_data_t *pro_data)
return ; return ;
} }
ver = MK_VERSION(&pro_data->arg[1]); ver = MK_VERSION(&pro_data->arg[1]);
VP_RECV_PRINT("\n[vp config file update stop ack] version=%d\n",ver); _debug_log(LOG_DEBUG_LEVEL,"\n version=%d\n",ver);
}else{ }else{
printf("err=%d\n",ver); printf("err=%d\n",err);
} }
ver = (pro_data->arg[0]<<24) | (pro_data->arg[1]<<16) | (pro_data->arg[2]<<8) | pro_data->arg[3]; ver = (pro_data->arg[0]<<24) | (pro_data->arg[1]<<16) | (pro_data->arg[2]<<8) | pro_data->arg[3];
...@@ -927,7 +931,7 @@ static void kk_vp_config_file_update_status_handle(pro_data_t *pro_data) ...@@ -927,7 +931,7 @@ static void kk_vp_config_file_update_status_handle(pro_data_t *pro_data)
VP_RECV_PRINT("\n[config file update status]ver=%d,status=%d\n",ver,status); _debug_log(LOG_DEBUG_LEVEL,"\nver=%d,status=%d\n",ver,status);
uint8_t data[6] = {0}; uint8_t data[6] = {0};
...@@ -947,6 +951,42 @@ static void kk_vp_config_file_update_status_handle(pro_data_t *pro_data) ...@@ -947,6 +951,42 @@ static void kk_vp_config_file_update_status_handle(pro_data_t *pro_data)
} }
static void kk_vp_voice_control_notify(uint8_t status)
{
if(status!=1&&status!=2){
return ;
}
cJSON *root = cJSON_CreateObject();
cJSON_AddStringToObject(root,"node","*");
cJSON_AddStringToObject(root,"opcode","VOICE_CTRL");
if(status==1){
_debug_log(LOG_DEBUG_LEVEL,"[VP]wake up.\n\n");
cJSON_AddStringToObject(root,"arg","ON");
}else if(status==2){
_debug_log(LOG_DEBUG_LEVEL,"[VP]sleep.\n\n");
cJSON_AddStringToObject(root,"arg","OFF");
}
cJSON_AddStringToObject(root,"status","success");
send_msg_to_module(root);
cJSON_Delete(root);
}
static void kk_vp_voice_control_handle(pro_data_t *pro_data)
{
if(pro_data->args_len!=1) {
return ;
}
debug_log(LOG_FOCUS_LEVEL,"[VP] voice contrl status =%d.\n\n",pro_data->arg[0]);
kk_vp_voice_control_notify(pro_data->arg[0]);
}
static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data) static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data)
{ {
uint8_t err; uint8_t err;
...@@ -965,11 +1005,9 @@ static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data) ...@@ -965,11 +1005,9 @@ static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data)
f_size = MK_UINT32(&pro_data->arg[5]); f_size = MK_UINT32(&pro_data->arg[5]);
crc32 = MK_UINT32(&pro_data->arg[9]); crc32 = MK_UINT32(&pro_data->arg[9]);
VP_RECV_PRINT("[VP->LAN]File Version=%08x,File Size=%08x,CRC32=%08x\n",f_ver,f_size,crc32); _debug_log(LOG_DEBUG_LEVEL,"File Version=%08x,File Size=%08x,CRC32=%08x\n",f_ver,f_size,crc32);
kk_vp_cfg_info_check(f_ver,f_size,crc32); kk_vp_cfg_info_check(f_ver,f_size,crc32);
}else{
printf("");
} }
} }
...@@ -979,7 +1017,7 @@ static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data) ...@@ -979,7 +1017,7 @@ static void kk_vp_config_file_info_query_handle(pro_data_t *pro_data)
void kk_vp_get_8009_snapshoot(void) void kk_vp_get_8009_snapshoot(void)
{ {
uint8_t res[1] = {0}; uint8_t res[1] = {0};
VP_SEND_PRINT("[LAN->VP]get snapshoot\n"); debug_log(LOG_DEBUG_LEVEL,"get snapshoot\n");
vp_send_data_build(OPCODE_8009_SNAPSHOOT,sizeof(res),res); vp_send_data_build(OPCODE_8009_SNAPSHOOT,sizeof(res),res);
} }
...@@ -998,7 +1036,7 @@ void kk_vp_set_8009_system_time(void) ...@@ -998,7 +1036,7 @@ void kk_vp_set_8009_system_time(void)
data[5] = c->tm_min; data[5] = c->tm_min;
data[6] = c->tm_sec; data[6] = c->tm_sec;
VP_SEND_PRINT("[LAN->VP]set system (%d-%d-%d %d:%d:%d)\n",(c->tm_year+1900),(c->tm_mon+1),c->tm_mday,c->tm_hour,c->tm_min,c->tm_sec); debug_log(LOG_DEBUG_LEVEL,"set system (%d-%d-%d %d:%d:%d)\n",(c->tm_year+1900),(c->tm_mon+1),c->tm_mday,c->tm_hour,c->tm_min,c->tm_sec);
vp_send_data_build(OPCODE_SYSTEM_TIME_SET,sizeof(data),data); vp_send_data_build(OPCODE_SYSTEM_TIME_SET,sizeof(data),data);
} }
...@@ -1033,7 +1071,8 @@ void kk_vp_config_file_update_start(uint32_t ver) ...@@ -1033,7 +1071,8 @@ void kk_vp_config_file_update_start(uint32_t ver)
kk_vp_cfg_info_set(f_ver,f_size,crc32); kk_vp_cfg_info_set(f_ver,f_size,crc32);
VP_SEND_PRINT("[cfg file update notify]File Version=%08x,File Size=%d,CRC32 Value=%08X\n", debug_log(LOG_DEBUG_LEVEL,"[LAN->VP]config file update start,OPCODE=%04X\n",OPCODE_CONFIG_FILE_UPDATE_NOTIFY);
_debug_log(LOG_DEBUG_LEVEL,"File Version=%08x,File Size=%d,CRC32 Value=%08X\n",
f_ver,f_size,crc32); f_ver,f_size,crc32);
vp_send_data_build(OPCODE_CONFIG_FILE_UPDATE_NOTIFY,sizeof(data),data); vp_send_data_build(OPCODE_CONFIG_FILE_UPDATE_NOTIFY,sizeof(data),data);
...@@ -1052,19 +1091,19 @@ void kk_vp_config_file_update_stop(uint32_t ver) ...@@ -1052,19 +1091,19 @@ void kk_vp_config_file_update_stop(uint32_t ver)
f_ver[2] = (ver>>8)&0xff; f_ver[2] = (ver>>8)&0xff;
f_ver[3] = ver&0xff; f_ver[3] = ver&0xff;
VP_SEND_PRINT("[vp config file update stop] version=%d\n",ver); debug_log(LOG_DEBUG_LEVEL,"[LAN->VP]config file update stop,OPCODE=%04X\n",OPCODE_CONFIG_FILE_UPDATE_STOP);
vp_send_data_build(OPCODE_CONFIG_FILE_UPDATE_STOP,sizeof(f_ver),f_ver); vp_send_data_build(OPCODE_CONFIG_FILE_UPDATE_STOP,sizeof(f_ver),f_ver);
} }
void kk_vp_get_config_file_info(void) void kk_vp_get_config_file_info(void)
{ {
uint8_t res[1] = {0}; uint8_t res[1] = {0};
VP_SEND_PRINT("[config file info get]\n"); debug_log(LOG_DEBUG_LEVEL,"[LAN->VP]config file info get,OPCODE=%04X\n",OPCODE_CONFIG_FILE_INFO_GET);
vp_send_data_build(OPCODE_CONFIG_FILE_INFO_GET,sizeof(res),res); vp_send_data_build(OPCODE_CONFIG_FILE_INFO_GET,sizeof(res),res);
} }
///////////////////////////////////////////////////// /////////////////////////////////////////////////////
int kk_vp_opcode_handle(_IN pro_data_t *pro_data) int kk_vp_opcode_handle(_IN pro_data_t *pro_data)
{ {
...@@ -1079,13 +1118,13 @@ int kk_vp_opcode_handle(_IN pro_data_t *pro_data) ...@@ -1079,13 +1118,13 @@ int kk_vp_opcode_handle(_IN pro_data_t *pro_data)
for(i=0;i<sizeof(vp_opcode_table)/sizeof(VP_OPCODE_HANDLE);i++,pFunc++){ for(i=0;i<sizeof(vp_opcode_table)/sizeof(VP_OPCODE_HANDLE);i++,pFunc++){
if(pFunc->opcode==pro_data->opcode){ if(pFunc->opcode==pro_data->opcode){
if(pFunc->func!=NULL){ if(pFunc->func!=NULL){
printf("[%s][%d][vp handle opcode]%04X\n",__FUNCTION__,__LINE__,pro_data->opcode); debug_log(LOG_NORMAL_LEVEL,"[handle Opcode]%04X\n",pro_data->opcode);
pFunc->func(pro_data); pFunc->func(pro_data);
return 1; return 1;
} }
} }
} }
printf("[%s][%d][vp unknow opcode]%04X\n",__FUNCTION__,__LINE__,pro_data->opcode); debug_log(LOG_WARNING_LEVEL,"[unknow Opcode]%04X\n",pro_data->opcode);
return 0; return 0;
} }
...@@ -1110,6 +1149,7 @@ static int kk_vp_config_file_save(_IN cJSON *json) ...@@ -1110,6 +1149,7 @@ static int kk_vp_config_file_save(_IN cJSON *json)
pWrite = pStr; pWrite = pStr;
if((fp= fopen(VP_CONFIG_FILE, "w"))==NULL) { if((fp= fopen(VP_CONFIG_FILE, "w"))==NULL) {
debug_log(LOG_WARNING_LEVEL,"[%s] fopen fail\n",VP_CONFIG_FILE);
return 0; return 0;
} }
...@@ -1147,14 +1187,14 @@ static _OUT int kk_vp_config_file_update_check(void) ...@@ -1147,14 +1187,14 @@ static _OUT int kk_vp_config_file_update_check(void)
if(access(VP_CONFIG_FILE_MD5,F_OK)!=0){ if(access(VP_CONFIG_FILE_MD5,F_OK)!=0){
memset(cmd,0,sizeof(cmd)); memset(cmd,0,sizeof(cmd));
snprintf(cmd,sizeof(cmd),md5_create,VP_CONFIG_FILE,VP_CONFIG_FILE_MD5); snprintf(cmd,sizeof(cmd),md5_create,VP_CONFIG_FILE,VP_CONFIG_FILE_MD5);
EXECUTE_CMD(cmd); debug_log(LOG_FOCUS_LEVEL,"%s\n",cmd);
system(cmd); system(cmd);
updateFlag = 1; updateFlag = 1;
}else{ }else{
memset(cmd,0,sizeof(cmd)); memset(cmd,0,sizeof(cmd));
snprintf(cmd,sizeof(cmd),md5_check,VP_CONFIG_FILE_MD5); snprintf(cmd,sizeof(cmd),md5_check,VP_CONFIG_FILE_MD5);
EXECUTE_CMD(cmd); debug_log(LOG_FOCUS_LEVEL,"%s\n",cmd);
fp = popen(cmd, "r"); fp = popen(cmd, "r");
fread(buf, 1, sizeof(buf), fp); fread(buf, 1, sizeof(buf), fp);
...@@ -1166,7 +1206,7 @@ static _OUT int kk_vp_config_file_update_check(void) ...@@ -1166,7 +1206,7 @@ static _OUT int kk_vp_config_file_update_check(void)
updateFlag = 1; updateFlag = 1;
memset(cmd,0,sizeof(cmd)); memset(cmd,0,sizeof(cmd));
snprintf(cmd,sizeof(cmd),md5_create,VP_CONFIG_FILE,VP_CONFIG_FILE_MD5); snprintf(cmd,sizeof(cmd),md5_create,VP_CONFIG_FILE,VP_CONFIG_FILE_MD5);
EXECUTE_CMD(cmd); debug_log(LOG_FOCUS_LEVEL,"%s\n",cmd);
system(cmd); system(cmd);
} }
} }
...@@ -1174,7 +1214,7 @@ static _OUT int kk_vp_config_file_update_check(void) ...@@ -1174,7 +1214,7 @@ static _OUT int kk_vp_config_file_update_check(void)
if(updateFlag!=0){ if(updateFlag!=0){
memset(cmd,0,sizeof(cmd)); memset(cmd,0,sizeof(cmd));
snprintf(cmd,sizeof(cmd),tar_cmd,VP_CONFIG_FILE_TAR_GZ,VP_CONFIG_FILE); snprintf(cmd,sizeof(cmd),tar_cmd,VP_CONFIG_FILE_TAR_GZ,VP_CONFIG_FILE);
EXECUTE_CMD(cmd); debug_log(LOG_FOCUS_LEVEL,"%s\n",cmd);
system(cmd); system(cmd);
} }
...@@ -1186,14 +1226,17 @@ void kk_vp_syncinfo_handle(_IN cJSON *payload) ...@@ -1186,14 +1226,17 @@ void kk_vp_syncinfo_handle(_IN cJSON *payload)
{ {
cJSON *root = NULL; cJSON *root = NULL;
int err = 0; int err = 0;
debug_log(LOG_CRITICAL_LEVEL,"mark\n");
if((err = kk_vp_syncinfo(payload,kk_vp_get_config_file_version(),&root))!=0){ if((err = kk_vp_syncinfo(payload,kk_vp_get_config_file_version(),&root))!=0){
printf("[%s][%d]SYNC fail,err=%d\n",__FUNCTION__,__LINE__,err); printf("[%s][%d]SYNC fail,err=%d\n",__FUNCTION__,__LINE__,err);
} }
debug_log(LOG_CRITICAL_LEVEL,"mark\n");
if(kk_vp_config_file_save(root)!=0){ if(kk_vp_config_file_save(root)!=0){
printf("[%s][%d][vp config file] save.\n",__FUNCTION__,__LINE__); printf("[%s][%d][vp config file] save.\n",__FUNCTION__,__LINE__);
} }
debug_log(LOG_CRITICAL_LEVEL,"mark\n");
if(kk_vp_config_file_update_check()!=0){ if(kk_vp_config_file_update_check()!=0){
printf("[%s][%d][vp config file] update.\n",__FUNCTION__,__LINE__); printf("[%s][%d][vp config file] update.\n",__FUNCTION__,__LINE__);
......
...@@ -5,12 +5,11 @@ ...@@ -5,12 +5,11 @@
#include "kk_lan_voice_panel.h" #include "kk_lan_voice_panel.h"
#include "kk_voice_panel_cfg.h" #include "kk_voice_panel_cfg.h"
#define VP_VP_CONFIG_FILE_DIR "/etc/smarthome"
#define VP_CONFIG_FILE "/etc/smarthome/voice_data.json" #define VP_CONFIG_FILE "/etc/smarthome/voice_data.json"
#define VP_CONFIG_FILE_MD5 "/data/kk/voice_data.MD5" #define VP_CONFIG_FILE_MD5 "/data/kk/voice_data.MD5"
#define VP_CONFIG_FILE_TAR_GZ "/data/kk/voice_data.tar.gz" #define VP_CONFIG_FILE_TAR_GZ "/data/kk/voice_data.tar.gz"
#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
...@@ -22,16 +21,7 @@ ...@@ -22,16 +21,7 @@
#define OPCODE_CONFIG_FILE_UPDATE_STOP 0x100E #define OPCODE_CONFIG_FILE_UPDATE_STOP 0x100E
#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 EXECUTE_CMD(cmd) do {\
printf("\n[%s][%d]------------------execte cmd------------------\n",__FUNCTION__,__LINE__);\
printf("%s\n",cmd);\
}while(0)
#define VP_SEND_PRINT(format,...) printf("\n\033[33;32m"format"\033[0m\n",##__VA_ARGS__)
#define VP_RECV_PRINT(format,...) printf("\n\033[33;34m"format"\033[0m\n",##__VA_ARGS__)
typedef void (*vp_handle_func)(pro_data_t *pro_data); typedef void (*vp_handle_func)(pro_data_t *pro_data);
typedef struct typedef struct
...@@ -68,8 +58,13 @@ void kk_vp_get_8009_snapshoot(void); ...@@ -68,8 +58,13 @@ void kk_vp_get_8009_snapshoot(void);
void kk_vp_syncinfo_handle(_IN cJSON *payload); void kk_vp_syncinfo_handle(_IN cJSON *payload);
int kk_vp_opcode_handle(_IN pro_data_t *pro_data); int kk_vp_opcode_handle(_IN pro_data_t *pro_data);
int kk_vp_get_config_file_version(void);
void vp_scene_id_map_deinit(void);
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_map_save(void);
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
#include <unistd.h> #include <unistd.h>
#include "Serial.h" #include "Serial.h"
#include "main.h"
//#include "common.h" //#include "common.h"
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
//#include "net_handle.h" //#include "net_handle.h"
#include "uart_proto.h" #include "uart_proto.h"
#include "kk_lan_debug.h"
uart_data_t g_uart_data; uart_data_t g_uart_data;
...@@ -464,23 +464,23 @@ void dev_send_uart(uint8_t *data, uint16_t data_len) ...@@ -464,23 +464,23 @@ void dev_send_uart(uint8_t *data, uint16_t data_len)
static void uart_protocol_print(pro_data_t *pro_data) static void uart_protocol_print(pro_data_t *pro_data)
{ {
_debug_log(LOG_DEBUG_LEVEL,"\n[VP->LAN]\n");
printf("seq %02X\n", pro_data->seq); _debug_log(LOG_DEBUG_LEVEL,"seq:\t\t%02X\n", pro_data->seq);
printf("channel %02X\n", pro_data->ch); _debug_log(LOG_DEBUG_LEVEL,"channel:\t%02X\n", pro_data->ch);
printf("opcode %04X\n", pro_data->opcode); _debug_log(LOG_DEBUG_LEVEL,"opcode:\t\t%04X\n", pro_data->opcode);
printf("args_len: %d\n", pro_data->args_len); _debug_log(LOG_DEBUG_LEVEL,"args_len:\t%d\n", pro_data->args_len);
char print_buf[512] = {0}; char print_buf[512] = {0};
int i = 0; int i = 0;
snprintf(print_buf, sizeof(print_buf), "args: "); snprintf(print_buf, sizeof(print_buf), "args:\t\t");
for (i = 0; i < pro_data->args_len; i ++) for (i = 0; i < pro_data->args_len; i ++)
{ {
snprintf(print_buf + strlen(print_buf), sizeof(print_buf), "%02X ", pro_data->arg[i]); snprintf(print_buf + strlen(print_buf), sizeof(print_buf), "%02X ", pro_data->arg[i]);
} }
printf("%s\n", print_buf); _debug_log(LOG_DEBUG_LEVEL,"%s\n\n", print_buf);
} }
...@@ -875,7 +875,6 @@ extern void kk_vp_opcode_handle(pro_data_t *pro_data); ...@@ -875,7 +875,6 @@ extern void kk_vp_opcode_handle(pro_data_t *pro_data);
void uart_frame_handle() void uart_frame_handle()
{ {
GW_LOG_DBG("uart_frame_handle\n");
uint8_t *data = g_uart_data.data; uint8_t *data = g_uart_data.data;
uint8_t data_len = g_uart_data.data_len; uint8_t data_len = g_uart_data.data_len;
pro_data_t pro_data; pro_data_t pro_data;
......
...@@ -105,11 +105,11 @@ static cJSON * kk_get_room_devices(const char *roomId) ...@@ -105,11 +105,11 @@ static cJSON * kk_get_room_devices(const char *roomId)
if(kk_check_multi_ep_num(deviceCode)){ if(kk_check_multi_ep_num(deviceCode)){
cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum); cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
}else if(strcmp(node->productType,KK_DM_AIR_GATEWAY_TYPE) == 0){ }else if(strcmp(node->productType,KK_DM_AIR_GATEWAY_TYPE) == 0){
if(atoi(epNum) == 1){//epNum为1的是空调网关 //if(atoi(epNum) == 1){//epNum为1的是空调网关
continue; // continue;
}else{ //}else{
cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum); cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
} //}
} }
cJSON_AddStringToObject(dev,KK_SYNC_DEVICECODE_STR,deviceCode); cJSON_AddStringToObject(dev,KK_SYNC_DEVICECODE_STR,deviceCode);
//cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum); //cJSON_AddStringToObject(dev,KK_SYNC_SCENE_EPNUM_STR,epNum);
...@@ -761,6 +761,7 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id) ...@@ -761,6 +761,7 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
char *propertyName = NULL; char *propertyName = NULL;
char *propertyValue = NULL; char *propertyValue = NULL;
char room_name[64] = {0}; char room_name[64] = {0};
cJSON *prtyObj = NULL;
char *type = NULL; char *type = NULL;
int delay = 0,epNum = 0,scene_id=0; int delay = 0,epNum = 0,scene_id=0;
...@@ -807,7 +808,13 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id) ...@@ -807,7 +808,13 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,int id)
//cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum); //cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_TYPE_STR, type); cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_TYPE_STR, type);
if((prtyObj=cJSON_Parse(propertyValue))==NULL){
cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, propertyValue); cJSON_AddStringToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, propertyValue);
}else{
cJSON_AddItemToObject(actionItem, KK_SYNC_SCENE_PROPERTYVALUE_STR, prtyObj);
}
cJSON_AddStringToObject(actionItem, KK_SYNC_ROOMID_STR, room_name); cJSON_AddStringToObject(actionItem, KK_SYNC_ROOMID_STR, room_name);
cJSON_AddItemToArray(actionArray, actionItem); cJSON_AddItemToArray(actionArray, actionItem);
} }
......
...@@ -640,6 +640,9 @@ int kk_scene_insert_scene_action(const char* type,const char* deviceCode,int epN ...@@ -640,6 +640,9 @@ int kk_scene_insert_scene_action(const char* type,const char* deviceCode,int epN
char *sqlCmd = NULL; char *sqlCmd = NULL;
char *zErrMsg = 0; char *zErrMsg = 0;
printf("----->kk_scene_insert_scene_action\n"); printf("----->kk_scene_insert_scene_action\n");
printf("propertyValue----->%s\n",propertyValue);
const char *insertCmd = "insert into SceneActionInfo (type, deviceCode,epNum,propertyName,propertyValue,delay,sceneId,gwdeviceCode) \ const char *insertCmd = "insert into SceneActionInfo (type, deviceCode,epNum,propertyName,propertyValue,delay,sceneId,gwdeviceCode) \
values ('%s','%s','%d','%s','%s','%d','%s','%s');"; values ('%s','%s','%d','%s','%s','%d','%s','%s');";
......
...@@ -510,6 +510,7 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac ...@@ -510,6 +510,7 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
cJSON *array; cJSON *array;
cJSON *info; cJSON *info;
char *out; char *out;
cJSON *prtyObj = NULL;
kk_scene_action_t *ptr = p_kk_scene_action; kk_scene_action_t *ptr = p_kk_scene_action;
kk_scene_action_info_ex_t *ptmp = NULL; kk_scene_action_info_ex_t *ptmp = NULL;
if(ptr == NULL){ if(ptr == NULL){
...@@ -524,7 +525,13 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac ...@@ -524,7 +525,13 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
info=cJSON_CreateObject(); info=cJSON_CreateObject();
cJSON_AddStringToObject(info,MSG_DEVICE_CODE_STR,ptr->actionInfo->info.deviceCode); cJSON_AddStringToObject(info,MSG_DEVICE_CODE_STR,ptr->actionInfo->info.deviceCode);
cJSON_AddStringToObject(info,MSG_SCENE_PROPERTYNAME,ptr->actionInfo->info.propertyName); cJSON_AddStringToObject(info,MSG_SCENE_PROPERTYNAME,ptr->actionInfo->info.propertyName);
if((prtyObj = cJSON_Parse(ptr->actionInfo->info.propertyValue))==NULL){
cJSON_AddStringToObject(info,MSG_SCENE_PROPERTYVALUE,ptr->actionInfo->info.propertyValue); cJSON_AddStringToObject(info,MSG_SCENE_PROPERTYVALUE,ptr->actionInfo->info.propertyValue);
}else{
cJSON_AddItemToObject(info, MSG_SCENE_PROPERTYVALUE, prtyObj);
}
cJSON_AddNumberToObject(info,MSG_SCENE_DELAY,ptr->actionInfo->info.delay); cJSON_AddNumberToObject(info,MSG_SCENE_DELAY,ptr->actionInfo->info.delay);
cJSON_AddNumberToObject(info,MSG_SCENE_EPNUM,ptr->actionInfo->info.epNum); cJSON_AddNumberToObject(info,MSG_SCENE_EPNUM,ptr->actionInfo->info.epNum);
cJSON_AddItemToArray(array,info); cJSON_AddItemToArray(array,info);
...@@ -949,8 +956,20 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat ...@@ -949,8 +956,20 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
delay = cJSON_GetObjectItem(item,MSG_SCENE_DELAY); delay = cJSON_GetObjectItem(item,MSG_SCENE_DELAY);
if(delay == NULL) return FAIL_RETURN; if(delay == NULL) return FAIL_RETURN;
int idelay = delay->valueint; int idelay = delay->valueint;
if(propertyValue->type==cJSON_String){
kk_subDev_set_action_by_productType(productType->valuestring,sceneId,propertyName->valuestring, kk_subDev_set_action_by_productType(productType->valuestring,sceneId,propertyName->valuestring,
propertyValue->valuestring,type->valuestring,idelay); propertyValue->valuestring,type->valuestring,idelay);
}else{
printf("1111\r\n");
char *str = cJSON_PrintUnformatted(propertyValue);
printf("222\r\n");
kk_subDev_set_action_by_productType(productType->valuestring,sceneId,propertyName->valuestring,
str,type->valuestring,idelay);
printf("333\r\n");
free(str);
printf("4444\r\n");
}
} }
else{ else{
memset(propertyValueStr,0x0,sizeof(propertyValueStr)); memset(propertyValueStr,0x0,sizeof(propertyValueStr));
...@@ -989,8 +1008,20 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat ...@@ -989,8 +1008,20 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
kk_scene_action_detail_t info = {0}; kk_scene_action_detail_t info = {0};
memcpy(info.deviceCode,node->deviceCode,strlen(node->deviceCode)); memcpy(info.deviceCode,node->deviceCode,strlen(node->deviceCode));
memcpy(info.propertyValue,propertyValueStr,strlen(propertyValueStr));
memcpy(info.propertyName,propertyName->valuestring,strlen(propertyName->valuestring)); memcpy(info.propertyName,propertyName->valuestring,strlen(propertyName->valuestring));
if(propertyValue->type==cJSON_Number){
memset(propertyValueStr,0,sizeof(propertyValueStr));
snprintf(propertyValueStr,sizeof(propertyValueStr),"%d",propertyValue->valueint);
}else if(propertyValue->type==cJSON_String){
snprintf(propertyValueStr,sizeof(propertyValueStr),"%s",propertyValue->valuestring);
}else{
char *str = cJSON_PrintUnformatted(propertyValue);
snprintf(propertyValueStr,sizeof(propertyValueStr),"%s",str);
free(str);
}
memcpy(info.propertyValue,propertyValueStr,strlen(propertyValueStr));
info.epNum = iepnum; info.epNum = iepnum;
info.delay = idelay; info.delay = idelay;
...@@ -2135,3 +2166,4 @@ int kk_scene_execute_quickpanel(const char *buttonId,char *deviceCode) ...@@ -2135,3 +2166,4 @@ int kk_scene_execute_quickpanel(const char *buttonId,char *deviceCode)
INFO_PRINT("[%d]kk_scene_execute_quickpanel called!!!\n",__LINE__); INFO_PRINT("[%d]kk_scene_execute_quickpanel called!!!\n",__LINE__);
return res; return res;
} }
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
#define DM_UTILS_UINT32_STRLEN (10) #define DM_UTILS_UINT32_STRLEN (10)
#define DM_UTILS_UINT64_STRLEN (20) #define DM_UTILS_UINT64_STRLEN (20)
#define DEVICE_PROPERTY_NAME_MAX (64+1) #define DEVICE_PROPERTY_NAME_MAX (64+1)
#define DEVICE_PROPERTY_VALUE_MAX (64+1) #define DEVICE_PROPERTY_VALUE_MAX (255+1)
#define DEVICE_PROPERTY_NUM_MAX (16) #define DEVICE_PROPERTY_NUM_MAX (16)
#define KK_TSL_KEY_SCHEMA "schema" #define KK_TSL_KEY_SCHEMA "schema"
......
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