Commit ba357ff4 authored by 陈伟灿's avatar 陈伟灿

Merge branch 'cwc' into 'master'

【修改内容】增加场景addscene,updatescene以及deletescene的service调用,以及相关的event事件上报

See merge request chenweican/k-sdk!45
parents 845cdbd6 46b000c3
......@@ -92,6 +92,38 @@ typedef enum {
#define MSG_KEYDELETE_NOTIFICATION "KeyDeletedNotification"
#define MSG_KEYMODIFY_NOTIFICATION "KeyModifyNotification"
/************************SCENE RELATION*************************/
#define MSG_SCENE_ARGS "args"
#define MSG_SCENE_NAME "name"
#define MSG_SCENE_SCENCTYPE "sceneType"
#define MSG_SCENE_ENABLE "enable"
#define MSG_SCENE_TRIGGERS "triggers"
#define MSG_SCENE_ITEMS "items"
#define MSG_SCENE_TYPE "type"
#define MSG_SCENE_EPNUM "epNum"
#define MSG_SCENE_PROPERTYNAME "propertyName"
#define MSG_SCENE_COMPARETYPE "compareType"
#define MSG_SCENE_COMPAREVALUE "compareValue"
#define MSG_SCENE_CONDITIONS "conditions"
#define MSG_SCENE_STARTTIME "startTime"
#define MSG_SCENE_ENDTIME "endTime"
#define MSG_SCENE_CROSSDAY "crossDay"
#define MSG_SCENE_REPEATDAYS "repeat_days"
#define MSG_SCENE_ACTIONS "actions"
#define MSG_SCENE_PROPERTYVALUE "propertyValue"
#define MSG_SCENE_DELAY "delay"
#define MSG_SCENE_SCENEID "sceneId"
#define MSG_SCENE_ADDNOTIFICATION_SCENEID "addSceneNotification.sceneId"
#define MSG_SCENE_ADDNOTIFICATION "addSceneNotification"
#define MSG_SCENE_UPDATENOTIFICATION_SCENEID "updateSceneNotification.sceneId"
#define MSG_SCENE_UPDATENOTIFICATION "updateSceneNotification"
#define MSG_SCENE_DELETENOTIFICATION_SCENEID "deleteSceneNotification.sceneId"
#define MSG_SCENE_DELETENOTIFICATION "deleteSceneNotification"
typedef void ipc_cb(void* data, int len, char* chalMark);
......
......@@ -123,14 +123,15 @@ uint64_t HAL_GetTime(void)
}
uint64_t HAL_GetTimeMs(void)
uint64_t HAL_GetTimeMs(char *outStr)
{
uint64_t time_ms;
struct timespec ts;
clock_gettime(CLOCK_REALTIME, &ts);
time_ms = ((uint64_t)ts.tv_sec * (uint64_t)1000) + (ts.tv_nsec / 1000 / 1000);
struct timeval tv;
gettimeofday(&tv, NULL);
time_ms = ((uint64_t)tv.tv_sec * (uint64_t)1000) + (tv.tv_usec / 1000 );
sprintf(outStr,"%lld",time_ms);
return time_ms;
}
......
......@@ -173,6 +173,32 @@ int kk_room_delete(const char *roomId)
return SUCCESS_RETURN;
}
static int _kk_check_dev_exist(const char* deviceCode)
{
int isExist = 0;
sqlite3_stmt *stmt;
char *pDeviceCode = NULL;
char *pKeyId = NULL;
kk_area_ctx_t *ctx = _kk_area_get_ctx();
const char *searchCmd = "select * from AreaDevInfo;";
_kk_area_lock();
sqlite3_prepare_v2(ctx->pDb, searchCmd, strlen(searchCmd), &stmt, NULL);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while(sqlite3_step(stmt) == SQLITE_ROW){
pDeviceCode = sqlite3_column_text(stmt, DB_DEV_DEVICECODE);
if(!strcmp(deviceCode,pDeviceCode))
{
isExist = 1;
break;
}
}
//INFO_PRINT("\n");
sqlite3_finalize(stmt);
_kk_area_unlock();
return isExist;
}
int kk_room_dev_add(const char *roomId,const char *deviceCode,const char *epNum)
{
int res = 0;
......@@ -180,11 +206,18 @@ int kk_room_dev_add(const char *roomId,const char *deviceCode,const char *epNum)
char *sqlCmd = NULL;
char *zErrMsg = 0;
const char *insertCmd = "insert into AreaDevInfo (roomId, deviceCode, epNum) \
values ('%s','%s','%s');";
if(_kk_check_dev_exist(deviceCode)){
sqlCmd = sqlite3_mprintf("UPDATE AreaDevInfo SET roomId='%s', epNum='%s' \
WHERE deviceCode= '%s'",deviceCode);
}
else{
const char *insertCmd = "insert into AreaDevInfo (roomId, deviceCode, epNum) \
values ('%s','%s','%s');";
sqlCmd = sqlite3_mprintf(insertCmd,roomId,deviceCode,epNum);
}
_kk_area_lock();
sqlCmd = sqlite3_mprintf(insertCmd,roomId,deviceCode,epNum);
res = sqlite3_exec(ctx->pDb, sqlCmd, NULL, NULL, &zErrMsg);
if( res != SQLITE_OK ){
ERROR_PRINT("SQL error: %s\n", zErrMsg);
......
......@@ -777,6 +777,46 @@ int dm_msg_thing_event_post(const char *deviceCode, const char *identifier)
}
return SUCCESS_RETURN;
}
int dm_msg_scene_event_post(const char *deviceCode, const char *identifier,kk_tsl_t *dev_shadow)
{
int res = 0;
int nums = 0;
int idx = 0;
char *payload = NULL;
dm_mgr_dev_node_t *node = NULL;
void *event = NULL;
char *method = NULL;
if(deviceCode == NULL){
return FAIL_RETURN;
}
res = dm_mgr_get_device_by_devicecode(deviceCode, &node);
if (res != SUCCESS_RETURN) {
return FAIL_RETURN;
}
payload = kk_tsl_get_post_event_str(dev_shadow,identifier,strlen(identifier));
if(payload != NULL){
res = kk_tsl_get_event_by_identifier(dev_shadow, identifier, &event);
if (res != SUCCESS_RETURN) {
free(payload);
return FAIL_RETURN;
}
res = kk_tsl_get_event_method(event, &method);
if (res != SUCCESS_RETURN) {
free(payload);
return FAIL_RETURN;
}
dm_mgr_upstream_thing_event_post(node->devid, identifier, strlen(identifier), method, payload, strlen(payload));
free(method);
method = NULL;
free(payload);
payload = NULL;
}
return SUCCESS_RETURN;
}
int dm_msg_thing_service_post(const char *deviceCode, const char *identifier)
{
int res = 0;
......
......@@ -69,6 +69,9 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_ADDKEY "/thing/service/AddKey"
#define KK_THING_SERVICE_DELETEKEY "/thing/service/DeleteKey"
#define KK_THING_SERVICE_MODIFYKEY "/thing/service/ModifyKey"
#define KK_THING_SERVICE_ADDSCENC "/thing/service/addScene"
#define KK_THING_SERVICE_DELETESCENC "/thing/service/deleteScene"
#define KK_THING_SERVICE_UPDATESCENC "/thing/service/updateScene"
#define KK_THING_EVENT_MESSAGE "/thing/event/"
#define KK_THING_EVENT_POST "/post"
......
This diff is collapsed.
......@@ -36,7 +36,10 @@ char * g_filerToPlatTable[] =
{KK_THING_SERVICE_GETCOUNTDOWN},
{KK_THING_SERVICE_ADDKEY},
{KK_THING_SERVICE_DELETEKEY},
{KK_THING_SERVICE_MODIFYKEY}
{KK_THING_SERVICE_MODIFYKEY},
{KK_THING_SERVICE_ADDSCENC},
{KK_THING_SERVICE_UPDATESCENC},
{KK_THING_SERVICE_DELETESCENC},
};
static int _kk_filter_to_plat(const char* msgtype)
{
......@@ -774,6 +777,7 @@ int main(const int argc, const char **argv)
kk_subDb_init();
kk_heartbeat_init();
kk_area_init();
kk_scene_init();
mid_ctx->g_mid_dispatch_thread_running = 1;
res = pthread_create(&mid_ctx->g_mid_dispatch_thread, NULL, mid_dispatch_yield, NULL);
if (res < 0) {
......
This diff is collapsed.
#ifndef __KK_SCENE_H__
#define __KK_SCENE_H__
#include "kk_tsl_common.h"
int kk_scene_init(void);
#endif
......@@ -7,6 +7,7 @@
#define TSL_SUBDEVICE_PATH_FILE "/usr/kk/tsl/product_%s.json"
#define TSL_GATEWAY_PATH_FILE "/usr/kk/tsl/gateway-%s.json"
#define TSL_CCU_PATH_FILE "/usr/kk/tsl/ccu-%s.json"
#define TSL_SCENE_PATH_FILE "/usr/kk/tsl/ccu_%s_scene.json"
char* kk_load_json(const char *productCode,int type)
{
......@@ -22,10 +23,12 @@ char* kk_load_json(const char *productCode,int type)
else if(type == KK_DM_DEVICE_GATEWAY){
path_len = strlen(TSL_GATEWAY_PATH_FILE)+strlen(productCode)+1;
}
else{
else if(type == KK_DM_DEVICE_SUBDEV){
path_len = strlen(TSL_SUBDEVICE_PATH_FILE)+strlen(productCode)+1;
}
else{
path_len = strlen(TSL_SCENE_PATH_FILE)+strlen(productCode)+1;
}
tslPath = malloc(path_len);
if(tslPath == NULL){
return NULL;
......@@ -38,9 +41,12 @@ char* kk_load_json(const char *productCode,int type)
else if(type == KK_DM_DEVICE_GATEWAY){
snprintf(tslPath,path_len,TSL_GATEWAY_PATH_FILE,productCode);
}
else{
else if(type == KK_DM_DEVICE_SUBDEV){
snprintf(tslPath,path_len,TSL_SUBDEVICE_PATH_FILE,productCode);
}
else{
snprintf(tslPath,path_len,TSL_SCENE_PATH_FILE,productCode);
}
INFO_PRINT("\n[%s][%d]tslPath:%s!!!\n",__FUNCTION__,__LINE__,tslPath);
......
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