Commit 6a2ebf0e authored by 陈伟灿's avatar 陈伟灿

Merge branch 'cwc' into 'master'

【修改内容】1,增加SOS取消报警的下发

See merge request chenweican/k-sdk!219
parents 11f453c2 e51f3ec5
......@@ -341,6 +341,69 @@ int kk_lan_ctrl_ack(cJSON * nodeId,cJSON * opcode,cJSON * arg)
return 0;
}
static int kk_get_node_args_handle(cJSON *arg)
{
cJSON *root,*argAck,*app_args,*item,*app_mode,*itemMode;
char deviceCode[33]={0};
int ret = 0;
kk_map_dev_node_t *dev;
if(arg == NULL){
return -1;
}
cJSON *nodeId = cJSON_GetObjectItem(arg,"node_id");
if(nodeId == NULL){
return -1;
}
cJSON *operateId = cJSON_GetObjectItem(arg,"operate_id");
if(operateId == NULL){
return -1;
}
ret = kk_lan_db_deviceCode_get(nodeId->valueint,deviceCode);
if(ret != 0){
return -1;
}
app_mode=cJSON_CreateArray();
itemMode = cJSON_CreateObject();
cJSON_AddStringToObject(itemMode, "name", "明亮模式");
cJSON_AddNumberToObject(itemMode, "brightness", 100);
cJSON_AddNumberToObject(itemMode, "color_temp", 100);
cJSON_AddItemToArray(app_mode,itemMode);
itemMode = cJSON_CreateObject();
cJSON_AddStringToObject(itemMode, "name", "黄昏模式");
cJSON_AddNumberToObject(itemMode, "brightness", 30);
cJSON_AddNumberToObject(itemMode, "color_temp", 10);
cJSON_AddItemToArray(app_mode,itemMode);
itemMode = cJSON_CreateObject();
cJSON_AddStringToObject(itemMode, "name", "月光模式");
cJSON_AddNumberToObject(itemMode, "brightness", 10);
cJSON_AddNumberToObject(itemMode, "color_temp", 80);
cJSON_AddItemToArray(app_mode,itemMode);
itemMode = cJSON_CreateObject();
cJSON_AddStringToObject(itemMode, "name", "清晨模式");
cJSON_AddNumberToObject(itemMode, "brightness", 80);
cJSON_AddNumberToObject(itemMode, "color_temp", 60);
cJSON_AddItemToArray(app_mode,itemMode);
app_args=cJSON_CreateArray();
item = cJSON_CreateObject();
cJSON_AddStringToObject(item, "arg_type", "shortcut_modes");
cJSON_AddItemToObject(item,"arg",app_mode);
cJSON_AddItemToArray(app_args,item);
argAck=cJSON_CreateObject();
cJSON_AddNumberToObject(argAck, "node_id", nodeId->valueint);
cJSON_AddNumberToObject(argAck, "operate_id", operateId->valueint);
cJSON_AddItemToObject(argAck, "app_args", app_args);
root=cJSON_CreateObject();
cJSON_AddStringToObject(root, "nodeid", "*");
cJSON_AddStringToObject(root, "opcode", "GET_NODE_APP_ARGS");
cJSON_AddStringToObject(root, "status", "success");
cJSON_AddItemToObject(root,"arg",argAck);
send_msg_to_module(root);
cJSON_Delete(root);
return 0;
}
int kk_ccu_opcode_handle(cJSON *root)
{
cJSON *msg;
......@@ -364,7 +427,7 @@ int kk_ccu_opcode_handle(cJSON *root)
return -1;
}
if(requester!=NULL){
WARNING_PRINT("[requester]%s\n",requester->valuestring);
WARNING_PRINT("[opcode]%s[requester]%s\n",opcode->valuestring,requester->valuestring);
if(strcmp(requester->valuestring,"HJ_CentralAC") == 0 &&
strcmp(opcode->valuestring,"CENTRAL_AC_INDOOR_UNIT_SETTING") == 0){
int channel = -1;
......@@ -391,6 +454,8 @@ int kk_ccu_opcode_handle(cJSON *root)
kk_get_client_info_handle(arg);
return 0;
}
}else if(strcmp(opcode->valuestring,"GET_NODE_APP_ARGS") == 0){
kk_get_node_args_handle(arg);
}
}
......
......@@ -353,7 +353,7 @@ int kk_lan_db_node_get(const char *deviceCode,int channel)
int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel)
{
char *sqlCmd = NULL;
int rc = 0;
int rc = -1;
char *zErrMsg = 0;
sqlite3_stmt *stmt;
kk_lan_node_db_ctx_t *ctx = _kk_lan_node_db_get_ctx();
......@@ -371,12 +371,13 @@ int kk_lan_db_get_item_by_node(int node,char *deviceCode,int *channel)
if(channel!=NULL){
*channel = sqlite3_column_int(stmt, LAN_DB_CHANNEL);
}
rc = 0;
}
sqlite3_free(sqlCmd);
_kk_lan_node_db_unlock();
sqlite3_finalize(stmt);
return 0;
return rc;
}
int kk_lan_db_channel_get(int node,int *channel)
......
......@@ -2082,7 +2082,18 @@ static int _kk_cancel_warning_handle(char *deviceCode){
kk_msg_execute_property_set(node->productCode,node->deviceCode,param,node->fatherDeviceCode);
return SUCCESS_RETURN;
}
static int _kk_cancel_SOS_handle(char *deviceCode){
int res = 0;
dm_mgr_dev_node_t *node = NULL;
res = dm_mgr_get_device_by_devicecode(deviceCode,&node);
if (res != SUCCESS_RETURN) {
ERROR_PRINT("ERROR [%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
return FAIL_RETURN;
}
const char *param = "{\"SosState\":0,\"epNum\":\"1\"}";
kk_msg_execute_property_set(node->productCode,node->deviceCode,param,node->fatherDeviceCode);
return SUCCESS_RETURN;
}
......@@ -2187,7 +2198,7 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
}
cJSON *cancelWarning = cJSON_GetObjectItem(paramStr, KK_TSL_CCU_CANCEL_WARNING);
if(cancelWarning != NULL && cancelWarning->valueint == 1){
int numberSiren = 0,kcount = 0;
int numberSiren = 0,kcount = 0,sosNum = 0;
DeviceCode_t * pList = (DeviceCode_t*)malloc(sizeof(DeviceCode_t)*24);
if(pList != NULL){
memset(pList,0x0, sizeof(DeviceCode_t)*24);
......@@ -2195,6 +2206,11 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
for(kcount = 0; kcount < numberSiren; kcount++){
_kk_cancel_warning_handle(pList[kcount].deviceCode);
}
memset(pList,0x0, sizeof(DeviceCode_t)*24);
sosNum = kk_subDev_getSOSDeviceCodes(pList);
for(kcount = 0; kcount < sosNum; kcount++){
_kk_cancel_SOS_handle(pList[kcount].deviceCode);
}
free(pList);
pList = NULL;
}
......
......@@ -155,81 +155,6 @@ static int kk_property_LightProperty_handle(char *deviceCode,int epNum,char *msg
kk_service_get_reply(deviceCode,node->productCode,msgid,ColorTempSwitch,-1,-1,epNum,"ColorTempSwitch");
return SUCCESS_RETURN;
}
static int kk_property_AirSwitchConfig_handle(char *deviceCode,int epNum,char *msgid)
{
int res = 0;
int mutiDev = 0;
int OverloadCurrent = 0;
int ExcessiveTemperature = 0;
int SwitchEnable = 0;
int BreakTime = 0;
int RatedVoltage = 0;
int RatedCurrent = 0;
char propertiesTmp[64] = {0};
dm_mgr_dev_node_t *node = NULL;
res = dm_mgr_get_device_by_devicecode((char*)deviceCode,&node);
if (res != SUCCESS_RETURN) {
ERROR_PRINT("ERROR [%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
return FAIL_RETURN;
}
mutiDev = kk_check_muti_device(node);
if(mutiDev){
memset(propertiesTmp,0x0,sizeof(propertiesTmp));
sprintf(propertiesTmp,"OverloadCurrent_%d",epNum);
kk_property_db_get_value(deviceCode,propertiesTmp,&OverloadCurrent);
memset(propertiesTmp,0x0,sizeof(propertiesTmp));
sprintf(propertiesTmp,"ExcessiveTemperature_%d",epNum);
kk_property_db_get_value(deviceCode,propertiesTmp,&ExcessiveTemperature);
memset(propertiesTmp,0x0,sizeof(propertiesTmp));
sprintf(propertiesTmp,"SwitchEnable_%d",epNum);
kk_property_db_get_value(deviceCode,propertiesTmp,&SwitchEnable);
memset(propertiesTmp,0x0,sizeof(propertiesTmp));
sprintf(propertiesTmp,"BreakTime_%d",epNum);
kk_property_db_get_value(deviceCode,propertiesTmp,&BreakTime);
memset(propertiesTmp,0x0,sizeof(propertiesTmp));
sprintf(propertiesTmp,"RatedVoltage_%d",epNum);
kk_property_db_get_value(deviceCode,propertiesTmp,&RatedVoltage);
memset(propertiesTmp,0x0,sizeof(propertiesTmp));
sprintf(propertiesTmp,"RatedCurrent_%d",epNum);
kk_property_db_get_value(deviceCode,propertiesTmp,&RatedCurrent);
}else{
kk_property_db_get_value(deviceCode,"OverloadCurrent",&OverloadCurrent);
kk_property_db_get_value(deviceCode,"ExcessiveTemperature",&ExcessiveTemperature);
kk_property_db_get_value(deviceCode,"SwitchEnable",&SwitchEnable);
kk_property_db_get_value(deviceCode,"BreakTime",&BreakTime);
kk_property_db_get_value(deviceCode,"RatedVoltage",&RatedVoltage);
kk_property_db_get_value(deviceCode,"RatedCurrent",&RatedCurrent);
}
cJSON *info = cJSON_CreateObject();
cJSON_AddStringToObject(info, MSG_TYPE_STR, KK_THING_SERVICE_PROPERTY_GET_REPLY);
cJSON_AddStringToObject(info, MSG_DEVICE_CODE_STR, deviceCode);
cJSON_AddStringToObject(info, MSG_PRODUCT_CODE_STR, node->productCode);
char *infff=cJSON_Print(info);
cJSON *payload = cJSON_CreateObject();
cJSON_AddStringToObject(payload, "desc", "success");
cJSON_AddStringToObject(payload, "version", "1.0");
cJSON_AddStringToObject(payload, "code", "0");
cJSON_AddStringToObject(payload, "msgId", msgid);
cJSON *paramInfo = cJSON_CreateObject();
cJSON_AddNumberToObject(paramInfo, "OverloadCurrent", OverloadCurrent);
cJSON_AddNumberToObject(paramInfo, "ExcessiveTemperature", ExcessiveTemperature);
cJSON_AddNumberToObject(paramInfo, "SwitchEnable", SwitchEnable);
cJSON_AddNumberToObject(paramInfo, "BreakTime", BreakTime);
cJSON_AddNumberToObject(paramInfo, "RatedVoltage", RatedVoltage);
cJSON_AddNumberToObject(paramInfo, "RatedCurrent", RatedCurrent);
cJSON_AddStringToObject(paramInfo, "DevModel", "UNKNOWN");
cJSON_AddStringToObject(paramInfo, "DevVersion", "1.0.0");
cJSON_AddNumberToObject(paramInfo, "epNum", epNum);
cJSON_AddItemToObject(payload, "params", paramInfo);
char *payload11=cJSON_Print(payload);
kk_sendData2app(infff,payload11,0);
free(payload11);
free(infff);
cJSON_Delete(payload);
cJSON_Delete(info);
return SUCCESS_RETURN;
}
static int kk_property_sendtogw_handle(cJSON *payload,cJSON *info_root,char *deviceCode)
{
......
......@@ -1206,7 +1206,56 @@ int kk_subDev_getDeviceCodes_byProductType(DeviceCode_t *list,char *type)
sqlite3_free(sqlCmd);
return count;
}
char * g_SOSDev[] =
{
(char *){"3015"},
(char *){"3016"},
(char *){"3054"},
(char *){"3124"},
};
static int _kk_check_SOSDev(const char* productCode)
{
int i = 0,num = 0;
num = sizeof(g_SOSDev)/sizeof(char *);
for(i =0; i < num; i++){
if(strcmp(productCode,g_SOSDev[i]) == 0){
return 1;
}
}
return 0;
}
int kk_subDev_getSOSDeviceCodes(DeviceCode_t *list)
{
char *sqlCmd = NULL;
const char *searchCmd = "select * from SubDeviceInfo WHERE productType= '%s'";
char *zErrMsg = 0;
sqlite3_stmt *stmt;
kk_subDb_ctx_t *ctx = _kk_subDb_get_ctx();
char *pDeviceCode = NULL;
char *pProductCode = NULL;
dm_mgr_dev_node_t *node = NULL;
int currentValue = 0;
int count = 0;
//printf("kk_subDev_getSensors_reply----------------------start\n");
_kk_subDb_lock();
sqlCmd = sqlite3_mprintf(searchCmd,"sensor");
sqlite3_prepare_v2(ctx->pDb, sqlCmd, strlen(sqlCmd), &stmt, NULL);
while(sqlite3_step(stmt) == SQLITE_ROW){
//printf("kk_subDev_getSensors_reply----------------------num\n");
pProductCode = (char*)sqlite3_column_text(stmt, DB_SUB_PRODUCTCODE);
if(_kk_check_SOSDev(pProductCode) == 1){
pDeviceCode = (char*)sqlite3_column_text(stmt, DB_SUB_DEVICECODE);
memcpy(list[count].deviceCode,pDeviceCode,strlen(pDeviceCode));
count++;
}
}
//printf("kk_subDev_getSensors_reply----------------------end\n");
sqlite3_finalize(stmt);
_kk_subDb_unlock();
sqlite3_free(sqlCmd);
return count;
}
/************************************************************
*功能描述:检查屏类设备是否有重复
*输入参数:deviceCode:设备deviceCode
......
......@@ -61,6 +61,7 @@ int kk_get_LockUser_list(LockKeyInfo_t *list,const char *deviceCode);
int kk_delete_LockUser_info(const char *deviceCode);
int kk_delete_LockUser_info_byId(const char *id);
int kk_get_product_type_table_size(void);
int kk_subDev_getSOSDeviceCodes(DeviceCode_t *list);
extern productype_map_s producTypeMap[];
enum{
DB_SUB_IDX = 0,
......
......@@ -111,9 +111,10 @@ typedef enum
DEVICE_NOT_RESPONSE = 10106,
DEVICE_PARAM_ERR = 10001,
DEVICE_TIMEOUR = 10003,
DEVICE_CTRL_OFTEN = 10712,
DEVICE_CTRL_OFTEN = 10711,
DEVICE_SCENE_TOO_MUSH = 13001,
}kk_to_cloud_code_t;
typedef enum {
DEVICE_HEARTBEAT_TIMEOUT = -15,
TSL_ALREADY_EXIST = -14,
......
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