Commit 561eed37 authored by chen.weican's avatar chen.weican

【修改内容】1,修改心跳检测采用系统时间;2,修改删除设备后房间信息内相关设备信息还存在的问题

【提交人】陈伟灿
parent b4057ab6
......@@ -114,6 +114,16 @@ uint64_t HAL_UptimeMs(void)
return time_ms;
}
time_t HAL_Uptimes(void)
{
time_t time_m;
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
time_m = ts.tv_sec ;
return time_m;
}
uint64_t HAL_GetTime(void)
{
......
......@@ -233,8 +233,14 @@ int kk_room_dev_remove(const char *deviceCode,const char *epNum)
kk_area_ctx_t *ctx = _kk_area_get_ctx();
char *sqlCmd = NULL;
char *zErrMsg = 0;
const char *insertCmd = NULL;
const char *insertCmd = "delete from AreaDevInfo where deviceCode = '%s' and epNum = '%s';";
if(epNum == NULL){
insertCmd = "delete from AreaDevInfo where deviceCode = '%s';";
}
else{
insertCmd = "delete from AreaDevInfo where deviceCode = '%s' and epNum = '%s';";
}
_kk_area_lock();
sqlCmd = sqlite3_mprintf(insertCmd,deviceCode,epNum);
......
......@@ -47,11 +47,13 @@ void *kk_heartbeat_yield(void *args)
{
kk_heartbeat_ctx_t *ctx = _kk_heartbeat_get_ctx();
time_t current_time = 0;
time_t sys_time = 0;
int res = 0;
dm_mgr_dev_node_t *node = NULL;
kk_gw_status_ctx_t *gw = NULL;
while (ctx->hearbeat_thread_running) {
current_time = HAL_GetTime();
sys_time = HAL_Uptimes();
_kk_heartbeat_lock();
if (!list_empty(&ctx->gw_status_list)) {
......@@ -88,7 +90,7 @@ void *kk_heartbeat_yield(void *args)
}
}
_kk_heartbeat_unlock();
dm_mgr_check_heartbeat_timeout(current_time);
dm_mgr_check_heartbeat_timeout(sys_time);
sleep(1);
}
return NULL;
......
......@@ -250,7 +250,7 @@ int dm_mgr_device_create(_IN_ int dev_type,_IN_ char productCode[PRODUCT_CODE_MA
if (dev_type != KK_DM_DEVICE_CCU && fatherDeviceCode != NULL) {
memcpy(node->fatherDeviceCode, fatherDeviceCode, strlen(fatherDeviceCode));
}
node->timestamp = HAL_GetTime();
node->timestamp = HAL_Uptimes();
//node->dev_status = IOTX_DM_DEV_STATUS_AUTHORIZED;
//if(strcmp(productCode,"1035") == 0){
//tsl_str = kk_load_json("130", dev_type);
......@@ -1473,6 +1473,10 @@ int dm_mgr_subdev_delete(_IN_ char deviceCode[DEVICE_CODE_MAXLEN])
return FAIL_RETURN;
}
INFO_PRINT("dm_mgr_subdev_delete deviceCode:%s\n",deviceCode);
/*房间信息中删除对应的设备*/
kk_room_dev_remove(deviceCode,NULL);
res = kk_subDev_delete_by_dcode(deviceCode);//delete sub db data
if (res != SUCCESS_RETURN) {
ERROR_PRINT("ERROR [%s][%d] res:%d\n",__FUNCTION__,__LINE__,res);
......
......@@ -747,13 +747,16 @@ int dm_msg_thing_event_post(const char *deviceCode, const char *identifier)
dm_mgr_dev_node_t *node = NULL;
void *event = NULL;
char *method = NULL;
INFO_PRINT("dm_msg_thing_event_post enter\n");
if(deviceCode == NULL){
ERROR_PRINT("dm_msg_thing_event_post failed\n");
return FAIL_RETURN;
}
res = dm_mgr_get_device_by_devicecode(deviceCode, &node);
if (res != SUCCESS_RETURN) {
ERROR_PRINT("dm_msg_thing_event_post failed\n");
return FAIL_RETURN;
}
payload = kk_tsl_get_post_event_str(node->dev_shadow,identifier,strlen(identifier));
......@@ -761,12 +764,14 @@ int dm_msg_thing_event_post(const char *deviceCode, const char *identifier)
res = kk_tsl_get_event_by_identifier(node->dev_shadow, identifier, &event);
if (res != SUCCESS_RETURN) {
free(payload);
ERROR_PRINT("dm_msg_thing_event_post failed\n");
return FAIL_RETURN;
}
res = kk_tsl_get_event_method(event, &method);
if (res != SUCCESS_RETURN) {
free(payload);
ERROR_PRINT("dm_msg_thing_event_post failed\n");
return FAIL_RETURN;
}
dm_mgr_upstream_thing_event_post(node->devid, identifier, strlen(identifier), method, payload, strlen(payload));
......
......@@ -322,11 +322,11 @@ void kk_platMsg_handle(void* data, char* chalMark){
}
if (chalMark != NULL){
dm_mgr_update_timestamp_by_devicecode(chalMark,HAL_GetTime());
dm_mgr_update_timestamp_by_devicecode(chalMark,HAL_Uptimes());
}
dm_mgr_update_timestamp_by_devicecode(info_dcode->valuestring,HAL_GetTime());
dm_mgr_update_timestamp_by_devicecode(info_dcode->valuestring,HAL_Uptimes());
if (strcmp(msgType->valuestring, KK_THING_TOPO_ADD_MSG)==0){
jsonPay = cJSON_GetObjectItem(payload, MSG_PARAMS_STR);
......@@ -346,7 +346,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
}else{
kk_mid_subdev_add(KK_DM_DEVICE_SUBDEV,proCode->valuestring,devCode->valuestring, mac->valuestring,info_dcode->valuestring);
}
dm_mgr_update_timestamp_by_devicecode(devCode->valuestring,HAL_GetTime());
dm_mgr_update_timestamp_by_devicecode(devCode->valuestring,HAL_Uptimes());
}
else if (strstr(msgType->valuestring, KK_THING_TOPO_BATCH_ADD_MSG) != NULL){
......@@ -400,6 +400,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
/*如果是离线状态,上报在线给云端*/
dm_mgr_set_dev_onoffline(node,0);
}
INFO_PRINT("kk_platMsg_handle event post enters \n");
for(idx = 0; idx < node->dev_shadow->event_number; idx++){
eventItem = node->dev_shadow->events + idx;
if(eventItem != NULL){
......@@ -415,23 +416,24 @@ void kk_platMsg_handle(void* data, char* chalMark){
memset(tmpStr,0x0,sizeof(tmpStr));
sprintf(tmpStr,"%s.%s",eventItem->identifier,itemData->identifier);
#if 0
if(strcmp(itemData->identifier,"Battery") == 0) {
double batteryValue = 0;
kk_tsl_get_value(kk_tsl_get_property_value,dev_shadow,itemData->identifier,&batteryValue,NULL);
kk_tsl_set_value(kk_tsl_set_event_output_value,dev_shadow,tmpStr,&batteryValue,NULL);
}
else{
kk_tsl_set_value(kk_tsl_set_event_output_value,dev_shadow,tmpStr,&itemStr->valueint,NULL);
}
#else
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemStr->valueint,NULL);
#endif
INFO_PRINT("kk_platMsg_handle data: event post\n");
dm_msg_thing_event_post(info_dcode->valuestring,eventItem->identifier);
kk_scene_iftt_check(info_dcode->valuestring,jsonPay);
}
}
else{
cJSON * itemDataIdentifier = cJSON_GetObjectItem(jsonPay, itemData->identifier);
if(itemDataIdentifier != NULL){
memset(tmpStr,0x0,sizeof(tmpStr));
sprintf(tmpStr,"%s.%s",eventItem->identifier,itemData->identifier);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&itemDataIdentifier->valueint,NULL);
INFO_PRINT("kk_platMsg_handle data: event post\n");
dm_msg_thing_event_post(info_dcode->valuestring,eventItem->identifier);
kk_scene_iftt_check(info_dcode->valuestring,jsonPay);
}
}
}
}
......@@ -753,7 +755,7 @@ void *ccu_property_monitor(void *args)
}
dm_mgr_search_dev_by_devid(KK_DM_DEVICE_CCU_DEVICEID,&node);
//dm_mgr_update_timestamp_by_devicecode(node->deviceCode,HAL_GetTime());
node->timestamp = HAL_GetTime();
node->timestamp = HAL_Uptimes();
HAL_Get_IP(s_IP,NULL);
res = kk_tsl_get_value(kk_tsl_get_property_value,node->dev_shadow,KK_TSL_CCU_WANIP_IDENTIFIER,s_IP_TSL,NULL);
if(res != SUCCESS_RETURN){
......
......@@ -81,7 +81,7 @@
#define KK_TSL_GATAWAY_SN_IDENTIFIER "SN"
#define KK_TSL_GATAWAY_WHITELIST_IDENTIFIER "WhiteListState"
#define DEFAULT_HEARTBEAT_TIMEOUT (60*4)// four minutes
#define DEFAULT_HEARTBEAT_TIMEOUT (60*10)// ten minutes
typedef enum {
KK_DEV_ONLINE = 0,
......
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