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

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

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