Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
K
k-sdk
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
陈伟灿
k-sdk
Commits
ab8689d7
Commit
ab8689d7
authored
Jul 02, 2021
by
chen.weican
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】去warning处理
【提交人】陈伟灿
parent
f368c9f1
Changes
29
Show whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
394 additions
and
365 deletions
+394
-365
midware/midware/area/kk_area_handle.c
midware/midware/area/kk_area_handle.c
+7
-9
midware/midware/area/kk_area_handle.h
midware/midware/area/kk_area_handle.h
+11
-2
midware/midware/dm/dm_ota.c
midware/midware/dm/dm_ota.c
+4
-6
midware/midware/dm/kk_dm_api.c
midware/midware/dm/kk_dm_api.c
+5
-4
midware/midware/dm/kk_dm_heartbeat.c
midware/midware/dm/kk_dm_heartbeat.c
+1
-0
midware/midware/dm/kk_dm_heartbeat.h
midware/midware/dm/kk_dm_heartbeat.h
+1
-0
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+26
-26
midware/midware/dm/kk_dm_mng.h
midware/midware/dm/kk_dm_mng.h
+2
-1
midware/midware/dm/kk_dm_msg.c
midware/midware/dm/kk_dm_msg.c
+11
-32
midware/midware/dm/kk_dm_queue.c
midware/midware/dm/kk_dm_queue.c
+1
-1
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+27
-23
midware/midware/dm/kk_property_db.c
midware/midware/dm/kk_property_db.c
+23
-23
midware/midware/dm/kk_sub_db.c
midware/midware/dm/kk_sub_db.c
+17
-17
midware/midware/dm/kk_sub_db.h
midware/midware/dm/kk_sub_db.h
+1
-3
midware/midware/dm/kk_sync_data.c
midware/midware/dm/kk_sync_data.c
+50
-56
midware/midware/dm/kk_sync_data.h
midware/midware/dm/kk_sync_data.h
+4
-0
midware/midware/history/kk_history_db.c
midware/midware/history/kk_history_db.c
+2
-1
midware/midware/midware.c
midware/midware/midware.c
+4
-18
midware/midware/scene/kk_scene_db.c
midware/midware/scene/kk_scene_db.c
+6
-7
midware/midware/scene/kk_scene_db.h
midware/midware/scene/kk_scene_db.h
+19
-0
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+137
-105
midware/midware/scene/kk_scene_handle.h
midware/midware/scene/kk_scene_handle.h
+10
-0
midware/midware/timer/kk_timer_handle.c
midware/midware/timer/kk_timer_handle.c
+2
-5
midware/tsl/tsl_handle/kk_tsl_api.c
midware/tsl/tsl_handle/kk_tsl_api.c
+3
-14
midware/tsl/tsl_handle/kk_tsl_api.h
midware/tsl/tsl_handle/kk_tsl_api.h
+6
-1
midware/tsl/tsl_handle/kk_tsl_common.h
midware/tsl/tsl_handle/kk_tsl_common.h
+5
-1
midware/tsl/tsl_handle/kk_tsl_parse.c
midware/tsl/tsl_handle/kk_tsl_parse.c
+1
-5
midware/tsl/tsl_handle/kk_utils.c
midware/tsl/tsl_handle/kk_utils.c
+3
-2
midware/tsl/tsl_handle/kk_utils.h
midware/tsl/tsl_handle/kk_utils.h
+5
-3
No files found.
midware/midware/area/kk_area_handle.c
View file @
ab8689d7
...
...
@@ -4,6 +4,8 @@
#include "sqlite3.h"
#include "kk_log.h"
#include "kk_area_handle.h"
#include "kk_hal.h"
#include "id.h"
extern
sqlite3
*
g_kk_pDb
;
...
...
@@ -98,9 +100,7 @@ int kk_area_init(void)
res
=
_kk_area_db_init
();
if
(
res
!=
SUCCESS_RETURN
){
ERROR_PRINT
(
"[%s][%d]kk_area_init FAIL!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
}
return
SUCCESS_RETURN
;
}
...
...
@@ -116,7 +116,7 @@ int kk_room_add(const char *name,const char *roomId)
values ('%s','%s');"
;
_kk_area_lock
();
ctx
->
roomNum
++
;
HAL_GetTime_s
(
roomId
);
HAL_GetTime_s
(
(
char
*
)
roomId
);
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
name
,
roomId
);
res
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
...
...
@@ -163,7 +163,6 @@ 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
();
...
...
@@ -171,7 +170,7 @@ static int _kk_check_dev_exist(const char* deviceCode)
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
);
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
))
{
...
...
@@ -249,7 +248,7 @@ int kk_room_dev_remove(const char *deviceCode,const char *epNum)
int
kk_room_device_list_add
(
const
char
*
deviceCode
)
{
int
len
;
//
int len;
kk_dev_list_t
*
ptr
,
*
pre
;
ptr
=
pre
=
s_device_list
;
...
...
@@ -283,14 +282,13 @@ kk_dev_list_t* kk_get_room_deviceCode(const char* roomId)
char
*
sqlCmd
=
NULL
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
const
char
*
searchCmd
=
"select * from AreaDevInfo;"
;
printf
(
""
);
_kk_area_lock
();
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
roomId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
if
(
strcmp
(
sqlite3_column_text
(
stmt
,
DB_DEV_ROOM_ID
),
roomId
)
==
0
){
kk_room_device_list_add
(
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
));
if
(
strcmp
(
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_ROOM_ID
),
roomId
)
==
0
){
kk_room_device_list_add
(
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
));
}
}
sqlite3_finalize
(
stmt
);
...
...
midware/midware/area/kk_area_handle.h
View file @
ab8689d7
...
...
@@ -7,18 +7,27 @@ typedef struct kk_dev_list{
struct
kk_dev_list
*
next
;
}
kk_dev_list_t
;
typedef
enum
{
enum
{
DB_ROOM_IDX
=
0
,
DB_ROOM_NAME
,
DB_ROOM_ID
,
};
typedef
enum
{
enum
{
DB_DEV_IDX
=
0
,
DB_DEV_ROOM_ID
,
DB_DEV_DEVICECODE
,
DB_DEV_EPNUM
,
};
int
kk_room_delete
(
const
char
*
roomId
);
int
kk_room_add
(
const
char
*
name
,
const
char
*
roomId
);
int
kk_area_init
(
void
);
int
kk_room_dev_add
(
const
char
*
roomId
,
const
char
*
deviceCode
,
const
char
*
epNum
);
int
kk_room_dev_remove
(
const
char
*
deviceCode
,
const
char
*
epNum
);
int
kk_room_device_list_add
(
const
char
*
deviceCode
);
kk_dev_list_t
*
kk_get_room_deviceCode
(
const
char
*
roomId
);
void
kk_free_room_dev_list
(
void
);
#endif
midware/midware/dm/dm_ota.c
View file @
ab8689d7
...
...
@@ -46,7 +46,7 @@ int dm_ota_sub(void)
int
ota_uri_parse_pkdn
(
_IN_
char
*
uri
,
_IN_
int
uri_len
,
_IN_
int
start_deli
,
_IN_
int
end_deli
,
_OU_
char
productType
[
PRODUCT_TYPE_MAXLEN
],
_OU_
char
deviceCode
[
DEVICE_CODE_MAXLEN
])
{
int
res
=
0
,
start
=
0
,
end
=
0
,
slice
=
0
;
int
start
=
0
,
end
=
0
,
slice
=
0
;
int
item_index
=
0
;
int
count
=
0
;
...
...
@@ -86,7 +86,7 @@ int ota_uri_parse_pkdn(_IN_ char *uri, _IN_ int uri_len, _IN_ int start_deli, _I
int
dm_ota_setPKN
(
char
productType
[
PRODUCT_TYPE_MAXLEN
],
char
deviceCode
[
DEVICE_CODE_MAXLEN
])
{
dm_ota_ctx_t
*
ctx
=
_dm_ota_get_ctx
();
int
res
=
0
;
//
int res = 0;
memset
(
ctx
->
productType
,
0
,
PRODUCT_TYPE_MAXLEN
);
memset
(
ctx
->
deviceCode
,
0
,
DEVICE_CODE_MAXLEN
);
memcpy
(
ctx
->
productType
,
productType
,
PRODUCT_TYPE_MAXLEN
);
...
...
@@ -171,11 +171,9 @@ int dm_ota_get_ota_handle(void **handle)
void
dm_ota_handle
(
void
*
data
){
printf
(
"dm_ota_handle ================== [%s]
\n
"
,
data
);
char
*
out
;
int
res
=
0
;
printf
(
"dm_ota_handle ================== [%s]
\n
"
,(
char
*
)
data
);
cJSON
*
json
,
*
info_root
,
*
info
;
cJSON
*
t
opic
,
*
t
ypeJson
;
cJSON
*
typeJson
;
cJSON
*
payload
;
cJSON
*
product_type
,
*
device_code
;
json
=
cJSON_Parse
(
data
);
...
...
midware/midware/dm/kk_dm_api.c
View file @
ab8689d7
...
...
@@ -10,7 +10,8 @@
#include "com_api.h"
#include "dm_ota.h"
#include "kk_log.h"
#include "kk_hal.h"
#include "kk_dm_queue.h"
static
dm_api_ctx_t
g_dm_api_ctx
;
...
...
@@ -210,7 +211,7 @@ void iotx_dm_dispatch(void)
int
iotx_dm_connect
(
_IN_
iotx_dm_event_callback
cb
)
{
int
res
=
0
;
//
int res = 0;
dm_api_ctx_t
*
ctx
=
_dm_api_get_ctx
();
if
(
cb
==
NULL
)
{
...
...
@@ -311,7 +312,7 @@ ERROR:
int
iotx_dm_subscribe
(
_IN_
int
devid
)
{
int
res
=
0
,
dev_type
=
0
;
int
res
=
0
;
if
(
devid
<
0
)
{
return
INVALID_PARAMETER
;
...
...
@@ -345,7 +346,7 @@ int iotx_dm_subscribe(_IN_ int devid)
ERROR_PRINT
(
"
\n
[%d][%s] malloc faild kk_ipc_send
\n
"
,
__LINE__
,
__FUNCTION__
);
return
FAIL_RETURN
;
}
INFO_PRINT
(
"
\n
[%d][%s] [%
d
] send app to subscribe mqtt
\n
"
,
__LINE__
,
__FUNCTION__
,
HAL_UptimeMs
());
INFO_PRINT
(
"
\n
[%d][%s] [%
lu
] send app to subscribe mqtt
\n
"
,
__LINE__
,
__FUNCTION__
,
HAL_UptimeMs
());
...
...
midware/midware/dm/kk_dm_heartbeat.c
View file @
ab8689d7
...
...
@@ -18,6 +18,7 @@
#include "kk_log.h"
#include "kk_tsl_common.h"
#include "kk_dm_mng.h"
#include "kk_hal.h"
/*************************************************************
全局变量定义
...
...
midware/midware/dm/kk_dm_heartbeat.h
View file @
ab8689d7
...
...
@@ -3,4 +3,5 @@
#include "kk_tsl_common.h"
int
kk_heartbeat_init
(
void
);
int
kk_dm_gw_status_update_online
(
const
char
*
deviceCode
);
int
kk_dm_gw_status_check_push
(
const
char
*
deviceCode
);
#endif
midware/midware/dm/kk_dm_mng.c
View file @
ab8689d7
...
...
@@ -3,15 +3,19 @@
#include <string.h>
#include "kk_dm_mng.h"
#include "kk_dm_msg.h"
#include "kk_dm_api.h"
#include "kk_tsl_api.h"
#include "kk_tsl_load.h"
#include "iot_export_linkkit.h"
#include "kk_product.h"
#include "kk_log.h"
#include "kk_property_db.h"
#include "kk_sub_db.h"
#include "kk_hal.h"
#include "kk_utils.h"
#include "kk_scene_handle.h"
#include "kk_area_handle.h"
#include "kk_sync_data.h"
//const char DM_URI_SYS_PREFIX[] DM_READ_ONLY = "/sys/%s/%s/";
...
...
@@ -92,10 +96,10 @@ static int _dm_init_tsl_params(kk_tsl_t * dev_shadow)
{
int
res
=
0
;
char
version
[
VERSION_MAXLEN
]
=
{
0
};
char
s_IP
[
NETWORK_ADDR_LEN
]
=
{
0
};
//
char s_IP[NETWORK_ADDR_LEN] = {0};
char
s_mac
[
MAC_ADDR_LEN
]
=
{
0
};
char
s_SN
[
SN_ADDR_LEN
]
=
{
0
};
int
port
=
0
;
//
int port = 0;
/*******set version***********/
HAL_GetVersion
(
version
);
...
...
@@ -211,8 +215,7 @@ int dm_mgr_device_create(_IN_ int dev_type,_IN_ char productCode[PRODUCT_CODE_MA
dm_mgr_ctx
*
ctx
=
_dm_mgr_get_ctx
();
dm_mgr_dev_node_t
*
node
=
NULL
;
char
*
tsl_str
=
NULL
;
int
idx
=
0
;
//int idx = 0;
if
(
deviceCode
!=
NULL
&&
strlen
(
deviceCode
)
>=
DEVICE_CODE_MAXLEN
)
{
return
INVALID_PARAMETER
;
...
...
@@ -270,7 +273,6 @@ int dm_mgr_device_create(_IN_ int dev_type,_IN_ char productCode[PRODUCT_CODE_MA
if
(
res
!=
0
){
return
FAIL_RETURN
;
}
printf
(
"--------------------------------------------------------->heartbeat:%d
\n
"
,
heartbeat
);
node
->
hb_timeout
=
heartbeat
;
}
else
{
...
...
@@ -383,7 +385,7 @@ int dm_mgr_get_device_by_productType(_IN_ char *productType, _OU_ dm_mgr_dev_nod
list_for_each_entry
(
search_node
,
&
ctx
->
dev_list
,
linked_list
,
dm_mgr_dev_node_t
)
{
if
((
strlen
(
search_node
->
deviceCode
)
==
strlen
(
productType
))
&&
(
memcmp
(
search_node
->
deviceCode
,
productType
,
productType
)
==
0
))
{
(
memcmp
(
search_node
->
deviceCode
,
productType
,
strlen
(
productType
)
)
==
0
))
{
/* dm_log_debug("Device Found, Product Key: %s, Device Name: %s", product_key, device_name); */
if
(
node
)
{
*
node
=
search_node
;
...
...
@@ -514,8 +516,6 @@ int dm_mgr_init(void)
{
int
res
=
0
;
dm_mgr_ctx
*
ctx
=
_dm_mgr_get_ctx
();
char
productCode
[
PRODUCT_CODE_MAXLEN
]
=
{
0
};
char
deviceCode
[
DEVICE_CODE_MAXLEN
]
=
{
0
};
char
mac
[
DEVICE_MAC_MAXLEN
]
=
{
0
};
int
devId
=
0
,
heartbeat
=
0
;
memset
(
ctx
,
0
,
sizeof
(
dm_mgr_ctx
));
...
...
@@ -678,7 +678,7 @@ int dm_mgr_upstream_thing_property_post(_IN_ int devid, _IN_ char *payload, _IN_
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
sprintf
(
msgId
,
"%d"
,
iotx_report_id
());
res
=
_dm_mgr_upstream_request_assemble
(
msgId
,
devid
,
"property"
,
payload
,
payload_len
,
DM_URI_THING_EVENT_PROPERTY_POST_METHOD
,
&
request
);
payload
,
payload_len
,
(
char
*
)
DM_URI_THING_EVENT_PROPERTY_POST_METHOD
,
&
request
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
...
...
@@ -735,7 +735,7 @@ int dm_mgr_upstream_thing_event_post_ex(_IN_ int devid, _IN_ char *identifier, _
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
res
=
_dm_mgr_upstream_request_assemble
(
msgId
,
devid
,
identifier
,
res
=
_dm_mgr_upstream_request_assemble
(
(
char
*
)
msgId
,
devid
,
identifier
,
payload
,
payload_len
,
method
,
&
request
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
...
...
@@ -814,7 +814,7 @@ static int _kk_mgr_upstream_response_assemble(_IN_ int devid, _IN_ char *msgid,
int
dm_mgr_deprecated_upstream_thing_service_response
(
_IN_
int
devid
,
_IN_
int
msgid
,
_IN_
iotx_dm_error_code_t
code
,
_IN_
char
*
identifier
,
_IN_
int
identifier_len
,
_IN_
char
*
payload
,
_IN_
int
payload_len
)
{
int
res
=
0
,
service_name_len
=
0
;
int
res
=
0
;
char
*
msgid_str
=
NULL
;
kk_msg_request_payload_t
request
;
kk_msg_response_t
response
;
...
...
@@ -876,7 +876,7 @@ int dm_mgr_upstream_thing_sub_register(_IN_ int devid)
}
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
msgTypeStr
=
DM_URI_THING_SUB_REGISTER
;
request
.
msgTypeStr
=
(
char
*
)
DM_URI_THING_SUB_REGISTER
;
if
(
devid
==
KK_DM_DEVICE_CCU_DEVICEID
){
memcpy
(
request
.
productCode
,
node
->
productCode
,
strlen
(
node
->
productCode
));
memcpy
(
request
.
deviceCode
,
node
->
deviceCode
,
strlen
(
node
->
deviceCode
));
...
...
@@ -932,7 +932,7 @@ int dm_mgr_upstream_thing_sub_unregister(_IN_ int devid)
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
msgTypeStr
=
DM_URI_THING_SUB_UNREGISTER
;
request
.
msgTypeStr
=
(
char
*
)
DM_URI_THING_SUB_UNREGISTER
;
memcpy
(
request
.
productCode
,
gw_node
->
productCode
,
strlen
(
gw_node
->
productCode
));
memcpy
(
request
.
deviceCode
,
gw_node
->
deviceCode
,
strlen
(
gw_node
->
deviceCode
));
...
...
@@ -990,7 +990,7 @@ int dm_mgr_upstream_thing_topo_add(_IN_ int devid)
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
msgTypeStr
=
DM_URI_THING_TOPO_ADD
;
request
.
msgTypeStr
=
(
char
*
)
DM_URI_THING_TOPO_ADD
;
memcpy
(
request
.
productCode
,
gw_node
->
productCode
,
strlen
(
gw_node
->
productCode
));
memcpy
(
request
.
deviceCode
,
gw_node
->
deviceCode
,
strlen
(
gw_node
->
deviceCode
));
...
...
@@ -1046,7 +1046,7 @@ int dm_mgr_upstream_thing_topo_delete(_IN_ int devid)
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
msgTypeStr
=
DM_URI_THING_TOPO_DELETE
;
request
.
msgTypeStr
=
(
char
*
)
DM_URI_THING_TOPO_DELETE
;
memcpy
(
request
.
productCode
,
gw_node
->
productCode
,
strlen
(
gw_node
->
productCode
));
memcpy
(
request
.
deviceCode
,
gw_node
->
deviceCode
,
strlen
(
gw_node
->
deviceCode
));
...
...
@@ -1087,7 +1087,7 @@ int dm_mgr_upstream_thing_topo_get(void)
dm_msg_request_t
request
;
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
msgTypeStr
=
DM_URI_THING_TOPO_GET
;
request
.
msgTypeStr
=
(
char
*
)
DM_URI_THING_TOPO_GET
;
HAL_GetDevice_Code
(
request
.
deviceCode
);
...
...
@@ -1145,7 +1145,7 @@ int dm_mgr_upstream_thing_list_found(_IN_ int devid)
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
msgTypeStr
=
DM_URI_THING_LIST_FOUND
;
request
.
msgTypeStr
=
(
char
*
)
DM_URI_THING_LIST_FOUND
;
memcpy
(
request
.
productCode
,
gw_node
->
productCode
,
strlen
(
gw_node
->
productCode
));
memcpy
(
request
.
deviceCode
,
gw_node
->
deviceCode
,
strlen
(
gw_node
->
deviceCode
));
...
...
@@ -1180,7 +1180,7 @@ int dm_mgr_ccu_status_cloud(_IN_ int devid)
{
int
res
=
0
;
dm_mgr_dev_node_t
*
node
=
NULL
;
dm_mgr_dev_node_t
*
gw_node
=
NULL
;
//
dm_mgr_dev_node_t *gw_node = NULL;
dm_msg_request_t
request
;
char
msgId
[
MSG_MAX_LEN
]
=
{
0
};
...
...
@@ -1197,7 +1197,7 @@ int dm_mgr_ccu_status_cloud(_IN_ int devid)
memcpy
(
request
.
productCode
,
node
->
productCode
,
strlen
(
node
->
productCode
));
memcpy
(
request
.
deviceCode
,
node
->
deviceCode
,
strlen
(
node
->
deviceCode
));
request
.
msgTypeStr
=
DM_URI_STATUS_CLOUD
;
request
.
msgTypeStr
=
(
char
*
)
DM_URI_STATUS_CLOUD
;
/* Get Params And Method */
...
...
@@ -1261,7 +1261,7 @@ int dm_mgr_upstream_status_online(_IN_ int devid)
request
.
msgTypeStr
=
DM_URI_STATUS_ONLINE
;
request
.
msgTypeStr
=
(
char
*
)
DM_URI_STATUS_ONLINE
;
/* Get Params And Method */
...
...
@@ -1322,7 +1322,7 @@ int dm_mgr_upstream_status_offline(_IN_ int devid)
memcpy
(
request
.
deviceCode
,
node
->
deviceCode
,
strlen
(
node
->
deviceCode
));
}
request
.
msgTypeStr
=
DM_URI_STATUS_OFFLINE
;
request
.
msgTypeStr
=
(
char
*
)
DM_URI_STATUS_OFFLINE
;
/* Get Params And Method */
res
=
dm_msg_status_offline
(
node
->
productCode
,
node
->
deviceCode
,
&
request
);
...
...
@@ -1374,7 +1374,7 @@ int dm_mgr_upstream_combine_login(_IN_ int devid)
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
msgTypeStr
=
DM_URI_COMBINE_LOGIN
;
request
.
msgTypeStr
=
(
char
*
)
DM_URI_COMBINE_LOGIN
;
memcpy
(
request
.
productCode
,
gw_node
->
productCode
,
strlen
(
gw_node
->
productCode
));
memcpy
(
request
.
deviceCode
,
gw_node
->
deviceCode
,
strlen
(
gw_node
->
deviceCode
));
...
...
@@ -1428,7 +1428,7 @@ int dm_mgr_upstream_combine_logout(_IN_ int devid)
}
memset
(
&
request
,
0
,
sizeof
(
dm_msg_request_t
));
request
.
msgTypeStr
=
DM_URI_COMBINE_LOGOUT
;
request
.
msgTypeStr
=
(
char
*
)
DM_URI_COMBINE_LOGOUT
;
memcpy
(
request
.
productCode
,
gw_node
->
productCode
,
strlen
(
gw_node
->
productCode
));
memcpy
(
request
.
deviceCode
,
gw_node
->
deviceCode
,
strlen
(
gw_node
->
deviceCode
));
...
...
midware/midware/dm/kk_dm_mng.h
View file @
ab8689d7
...
...
@@ -103,4 +103,5 @@ int dm_mgr_ota_report_version(_IN_ int devid, char *version);
int
dm_mgr_subdev_create
(
int
devtype
,
_IN_
char
productCode
[
PRODUCT_CODE_MAXLEN
],
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
_IN_
char
mac
[
DEVICE_MAC_MAXLEN
],
_IN_
char
fatherDeviceCode
[
DEVICE_CODE_MAXLEN
],
_IN_
int
isOffline
,
_OU_
int
*
devid
,
_OU_
int
*
heartbeat
);
int
dm_mgr_subdev_delete
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
]);
int
dm_msg_thing_property_post_all
(
char
*
deviceCode
);
#endif
midware/midware/dm/kk_dm_msg.c
View file @
ab8689d7
...
...
@@ -5,7 +5,8 @@
#include "kk_hal.h"
#include "com_api.h"
#include "kk_log.h"
#include "kk_utils.h"
#include "kk_sync_data.h"
const
char
DM_MSG_REQUEST
[]
DM_READ_ONLY
=
"{
\"
msgId
\"
:
\"
%s
\"
,
\"
version
\"
:
\"
%s
\"
,
\"
params
\"
:%s,
\"
time
\"
:
\"
%lu
\"
,
\"
method
\"
:
\"
%s
\"
}"
;
const
char
DM_MSG_INFO
[]
DM_READ_ONLY
=
"{
\"
msgtype
\"
:
\"
%s
\"
,
\"
productCode
\"
:
\"
%s
\"
,
\"
deviceCode
\"
:
\"
%s
\"
}"
;
...
...
@@ -105,13 +106,7 @@ int dm_msg_thing_topo_add(_IN_ char productCode[PRODUCT_CODE_MAXLEN],
{
char
*
params
=
NULL
;
int
params_len
=
0
;
char
timestamp
[
DM_UTILS_UINT64_STRLEN
]
=
{
0
};
char
client_id
[
PRODUCT_TYPE_MAXLEN
+
DEVICE_CODE_MAXLEN
+
1
]
=
{
0
};
char
*
sign_source
=
NULL
;
int
sign_source_len
=
0
;
char
*
sign_method
=
DM_MSG_SIGN_METHOD_HMACSHA1
;
char
sign
[
65
]
=
{
0
};
if
(
request
==
NULL
||
deviceCode
==
NULL
||
...
...
@@ -307,10 +302,6 @@ const char DM_MSG_COMBINE_STATUS_ONLINE[] DM_READ_ONLY =
char
*
params
=
NULL
;
int
params_len
=
0
;
char
timestamp
[
DM_UTILS_UINT64_STRLEN
]
=
{
0
};
char
client_id
[
PRODUCT_TYPE_MAXLEN
+
DEVICE_CODE_MAXLEN
+
20
]
=
{
0
};
char
*
sign_method
=
DM_MSG_SIGN_METHOD_HMACSHA1
;
char
sign
[
64
]
=
{
0
};
if
(
request
==
NULL
||
deviceCode
==
NULL
||
productCode
==
NULL
||
...
...
@@ -351,10 +342,6 @@ int dm_msg_status_offline(_IN_ char productCode[PRODUCT_CODE_MAXLEN],
char
*
params
=
NULL
;
int
params_len
=
0
;
char
timestamp
[
DM_UTILS_UINT64_STRLEN
]
=
{
0
};
char
client_id
[
PRODUCT_TYPE_MAXLEN
+
DEVICE_CODE_MAXLEN
+
20
]
=
{
0
};
char
*
sign_method
=
DM_MSG_SIGN_METHOD_HMACSHA1
;
char
sign
[
64
]
=
{
0
};
if
(
request
==
NULL
||
deviceCode
==
NULL
||
productCode
==
NULL
||
...
...
@@ -570,7 +557,7 @@ int dm_msg_request (_IN_ dm_msg_request_t *request,_IN_ int isAsync)
memset
(
&
lite
,
0
,
sizeof
(
lite_cjson_t
));
res
=
lite_cjson_parse
(
req_info
,
req_info_len
,
&
lite
);
if
(
res
<
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"Wrong JSON Format, Payload: %
s
"
,
req_info_len
);
ERROR_PRINT
(
"Wrong JSON Format, Payload: %
d
"
,
req_info_len
);
free
(
req_info
);
free
(
payload
);
return
FAIL_RETURN
;
...
...
@@ -633,7 +620,7 @@ int dm_msg_response(_IN_ kk_msg_request_payload_t *request, _IN_ kk_msg_response
memset
(
&
lite
,
0
,
sizeof
(
lite_cjson_t
));
res
=
lite_cjson_parse
(
res_info
,
res_info_len
,
&
lite
);
if
(
res
<
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"Wrong JSON Format, Payload: %
s
"
,
res_info_len
);
ERROR_PRINT
(
"Wrong JSON Format, Payload: %
d
"
,
res_info_len
);
free
(
res_info
);
free
(
payload
);
return
FAIL_RETURN
;
...
...
@@ -712,7 +699,7 @@ int dm_msg_thing_syncinfo_reply(void){
kk_msg_response_t
response
;
dm_mgr_dev_node_t
*
node
=
NULL
;
char
*
info
=
NULL
;
int
res
=
0
,
devid
=
0
;
int
res
=
0
;
memset
(
&
request
,
0
,
sizeof
(
kk_msg_request_payload_t
));
memset
(
&
response
,
0
,
sizeof
(
kk_msg_response_t
));
...
...
@@ -749,7 +736,7 @@ int dm_msg_thing_property_set_reply(char deviceCode[DEVICE_CODE_MAXLEN],char *pa
kk_msg_response_t
response
;
dm_mgr_dev_node_t
*
node
=
NULL
;
int
res
=
0
,
devid
=
0
;
int
res
=
0
;
memset
(
&
request
,
0
,
sizeof
(
kk_msg_request_payload_t
));
memset
(
&
response
,
0
,
sizeof
(
kk_msg_response_t
));
...
...
@@ -765,7 +752,7 @@ int dm_msg_thing_property_set_reply(char deviceCode[DEVICE_CODE_MAXLEN],char *pa
return
res
;
}
response
.
msgTypeStr
=
DM_URI_THING_SERVICE_PROPERTY_SET_REPLY
;
response
.
msgTypeStr
=
(
char
*
)
DM_URI_THING_SERVICE_PROPERTY_SET_REPLY
;
memcpy
(
response
.
productCode
,
node
->
productCode
,
strlen
(
node
->
productCode
));
memcpy
(
response
.
deviceCode
,
node
->
deviceCode
,
strlen
(
node
->
deviceCode
));
response
.
code
=
(
res
==
SUCCESS_RETURN
)
?
(
IOTX_DM_ERR_CODE_SUCCESS
)
:
(
IOTX_DM_ERR_CODE_REQUEST_ERROR
);
...
...
@@ -775,8 +762,6 @@ int dm_msg_thing_property_set_reply(char deviceCode[DEVICE_CODE_MAXLEN],char *pa
int
dm_msg_thing_event_post
(
const
char
*
deviceCode
,
const
char
*
identifier
,
const
char
*
msgId
)
{
int
res
=
0
;
int
nums
=
0
;
int
idx
=
0
;
char
*
payload
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
void
*
event
=
NULL
;
...
...
@@ -788,12 +773,12 @@ int dm_msg_thing_event_post(const char *deviceCode, const char *identifier,const
return
FAIL_RETURN
;
}
res
=
dm_mgr_get_device_by_devicecode
(
deviceCode
,
&
node
);
res
=
dm_mgr_get_device_by_devicecode
(
(
char
*
)
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
));
payload
=
kk_tsl_get_post_event_str
(
node
->
dev_shadow
,
(
char
*
)
identifier
,
strlen
(
identifier
));
if
(
payload
!=
NULL
){
res
=
kk_tsl_get_event_by_identifier
(
node
->
dev_shadow
,
identifier
,
&
event
);
if
(
res
!=
SUCCESS_RETURN
)
{
...
...
@@ -809,7 +794,7 @@ int dm_msg_thing_event_post(const char *deviceCode, const char *identifier,const
return
FAIL_RETURN
;
}
if
(
msgId
!=
NULL
){
dm_mgr_upstream_thing_event_post_ex
(
node
->
devid
,
identifier
,
strlen
(
identifier
),
method
,
payload
,
strlen
(
payload
),
msgId
);
dm_mgr_upstream_thing_event_post_ex
(
node
->
devid
,
(
char
*
)
identifier
,
strlen
(
identifier
),
method
,
payload
,
strlen
(
payload
),
msgId
);
}
else
{
...
...
@@ -825,8 +810,6 @@ int dm_msg_thing_event_post(const char *deviceCode, const char *identifier,const
int
dm_msg_scene_event_post
(
const
char
*
identifier
,
kk_tsl_t
*
dev_shadow
,
const
char
*
msgId
)
{
int
res
=
0
;
int
nums
=
0
;
int
idx
=
0
;
char
*
payload
=
NULL
;
void
*
event
=
NULL
;
char
*
method
=
NULL
;
...
...
@@ -856,8 +839,6 @@ int dm_msg_scene_event_post(const char *identifier,kk_tsl_t *dev_shadow,const ch
int
dm_msg_thing_service_post
(
const
char
*
deviceCode
,
const
char
*
identifier
)
{
int
res
=
0
;
int
nums
=
0
;
int
idx
=
0
;
char
*
payload
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
char
*
method
=
NULL
;
...
...
@@ -898,8 +879,6 @@ int dm_msg_thing_service_post(const char *deviceCode, const char *identifier)
int
dm_msg_thing_property_post_all
(
char
*
deviceCode
)
{
int
res
=
0
;
int
nums
=
0
;
int
idx
=
0
;
char
*
payload
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
...
...
midware/midware/dm/kk_dm_queue.c
View file @
ab8689d7
...
...
@@ -6,7 +6,7 @@
#include "kk_dm_queue.h"
#include "kk_tsl_common.h"
#include "kk_hal.h"
dm_queue_t
g_dm_queue
;
...
...
midware/midware/dm/kk_linkkit.c
View file @
ab8689d7
...
...
@@ -17,11 +17,15 @@
#include "kk_dm_msg.h"
#include "kk_dm_mng.h"
#include "kk_dm_api.h"
#include "kk_sub_db.h"
#include "kk_tsl_api.h"
#include "com_api.h"
#include "kk_log.h"
#include "kk_area_handle.h"
#include "kk_scene_handle.h"
#include "kk_property_db.h"
#include "kk_product.h"
#include "kk_hal.h"
#define IOTX_LINKKIT_KEY_ID "id"
#define IOTX_LINKKIT_KEY_CODE "code"
...
...
@@ -345,15 +349,15 @@ static int kk_service_addRoom_handle(const char *deviceCode, cJSON *params)
dm_mgr_dev_node_t
*
node
=
NULL
;
char
roomId
[
32
]
=
{
0
};
int
res
=
0
;
int
idx
=
0
,
idxIpt
=
0
;
int
start
=
0
,
serverNum
=
0
;
kk_tsl_service_t
*
serviceItem
=
NULL
;
kk_tsl_data_t
*
pinputData
=
NULL
;
cJSON
*
currentItem
=
NULL
;
//
int idx = 0,idxIpt = 0;
//
int start = 0,serverNum = 0;
//
kk_tsl_service_t *serviceItem = NULL;
//
kk_tsl_data_t* pinputData = NULL;
//
cJSON *currentItem =NULL;
if
(
deviceCode
==
NULL
||
params
==
NULL
){
return
INVALID_PARAMETER
;
}
res
=
dm_mgr_get_device_by_devicecode
(
deviceCode
,
&
node
);
res
=
dm_mgr_get_device_by_devicecode
(
(
char
*
)
deviceCode
,
&
node
);
if
(
res
<
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"dm_mgr_get_device_by_devicecode failed
\n
"
);
return
res
;
...
...
@@ -458,9 +462,9 @@ static int kk_service_removeDeviceFromRoom_handle(cJSON *params)
*************************************************************/
static
int
kk_service_execute_action
(
cJSON
*
action
,
dm_mgr_dev_node_t
*
node
)
{
int
idx
=
0
;
kk_tsl_data_t
*
pCurrentItem
=
NULL
;
cJSON
*
pCurrentData
=
NULL
;
//
int idx = 0;
//
kk_tsl_data_t *pCurrentItem = NULL;
//
cJSON *pCurrentData = NULL;
if
(
node
==
NULL
){
return
INVALID_PARAMETER
;
}
...
...
@@ -756,7 +760,7 @@ static int kk_service_addScene_handle(cJSON *param,cJSON *msgId)
{
int
res
=
0
;
char
sceneId
[
32
]
=
{
0
};
kk_tsl_t
*
pSceneShadow
=
NULL
;
//
kk_tsl_t *pSceneShadow = NULL;
if
(
param
==
NULL
||
msgId
==
NULL
){
return
INVALID_PARAMETER
;
}
...
...
@@ -1116,10 +1120,10 @@ int kk_init_dmproc(void)
*************************************************************/
int
_iotx_linkkit_slave_connect
(
int
devid
)
{
int
res
=
0
,
msgid
=
0
,
code
=
0
;
iotx_linkkit_ctx_t
*
ctx
=
_iotx_linkkit_get_ctx
();
iotx_linkkit_upstream_sync_callback_node_t
*
node
=
NULL
;
void
*
semaphore
=
NULL
;
int
res
=
0
;
//
iotx_linkkit_ctx_t *ctx = _iotx_linkkit_get_ctx();
//
iotx_linkkit_upstream_sync_callback_node_t *node = NULL;
//
void *semaphore = NULL;
if
(
devid
<=
0
)
{
dm_log_err
(
"devid invalid"
);
...
...
@@ -1145,10 +1149,10 @@ int _iotx_linkkit_slave_connect(int devid)
*************************************************************/
int
_iotx_linkkit_slave_register
(
int
devid
)
{
int
res
=
0
,
msgid
=
0
,
code
=
0
;
iotx_linkkit_ctx_t
*
ctx
=
_iotx_linkkit_get_ctx
();
iotx_linkkit_upstream_sync_callback_node_t
*
node
=
NULL
;
void
*
semaphore
=
NULL
;
int
res
=
0
;
//
iotx_linkkit_ctx_t *ctx = _iotx_linkkit_get_ctx();
//
iotx_linkkit_upstream_sync_callback_node_t *node = NULL;
//
void *semaphore = NULL;
if
(
devid
<=
0
)
{
dm_log_err
(
"devid invalid"
);
return
FAIL_RETURN
;
...
...
@@ -1292,7 +1296,7 @@ static int _iotx_linkkit_slave_close(int devid)
void
IOT_Linkkit_Yield
(
int
timeout_ms
)
{
iotx_linkkit_ctx_t
*
ctx
=
_iotx_linkkit_get_ctx
();
//
iotx_linkkit_ctx_t *ctx = _iotx_linkkit_get_ctx();
if
(
timeout_ms
<=
0
)
{
dm_log_err
(
"Invalid Parameter"
);
...
...
@@ -1352,10 +1356,10 @@ int IOT_Linkkit_Close(int devid)
*************************************************************/
static
int
_iotx_linkkit_subdev_login
(
int
devid
)
{
int
res
=
0
,
msgid
=
0
,
code
=
0
;
iotx_linkkit_upstream_sync_callback_node_t
*
node
=
NULL
;
void
*
semaphore
=
NULL
;
void
*
callback
=
NULL
;
int
res
=
0
;
//
iotx_linkkit_upstream_sync_callback_node_t *node = NULL;
//
void *semaphore = NULL;
//
void *callback = NULL;
res
=
iotx_dm_dev_online
(
devid
);
//iotx_dm_subdev_login(devid);
if
(
res
<
SUCCESS_RETURN
)
{
...
...
midware/midware/dm/kk_property_db.c
View file @
ab8689d7
...
...
@@ -14,7 +14,7 @@
#include <stdio.h>
#include "kk_tsl_api.h"
#include "kk_hal.h"
#include "kk_log.h"
#include "kk_dm_mng.h"
#include "kk_property_db.h"
...
...
@@ -154,8 +154,8 @@ static int _kk_check_property_exist(const char* deviceCode,const char* identifie
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_DEVICECODE
);
pIdentifier
=
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEVICECODE
);
pIdentifier
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
)
&&!
strcmp
(
identifier
,
pIdentifier
))
{
...
...
@@ -251,8 +251,8 @@ int kk_property_db_update_value(const char *deviceCode,const char *identifier,co
int
kk_property_db_get_value_directly
(
const
char
*
deviceCode
,
const
char
*
identifier
,
char
*
value
)
{
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
//
int rc = 0;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
char
*
valueStr
=
NULL
;
kk_property_db_ctx_t
*
ctx
=
_kk_property_db_get_ctx
();
...
...
@@ -261,7 +261,7 @@ int kk_property_db_get_value_directly(const char *deviceCode,const char *identif
sqlCmd
=
sqlite3_mprintf
(
"select * from PropertiesInfo WHERE deviceCode= '%s' and identifier = '%s'"
,
deviceCode
,
identifier
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
valueStr
=
sqlite3_column_text
(
stmt
,
DB_VALUE
);
valueStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_VALUE
);
memcpy
(
value
,
valueStr
,
strlen
(
valueStr
));
}
sqlite3_free
(
sqlCmd
);
...
...
@@ -281,8 +281,8 @@ int kk_property_db_get_value_directly(const char *deviceCode,const char *identif
int
kk_property_db_get_value
(
const
char
*
deviceCode
,
const
char
*
identifier
,
void
*
value
)
{
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
//
int rc = 0;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
char
*
valueStr
=
NULL
;
int
valueType
=
0
;
...
...
@@ -296,7 +296,7 @@ int kk_property_db_get_value(const char *deviceCode,const char *identifier,void*
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
valueStr
=
sqlite3_column_text
(
stmt
,
DB_VALUE
);
valueStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_VALUE
);
valueType
=
sqlite3_column_int
(
stmt
,
DB_VALUETYPE
);
if
(
valueType
==
KK_TSL_DATA_TYPE_INT
||
valueType
==
KK_TSL_DATA_TYPE_ENUM
||
...
...
@@ -336,8 +336,8 @@ int kk_property_db_get_value(const char *deviceCode,const char *identifier,void*
int
kk_property_db_get_rawdata
(
const
char
*
identifier
,
const
int
dev_type
,
kk_prop_raw_struct_t
*
raw
,
int
count
)
{
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
//
int rc = 0;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
char
*
valueStr
=
NULL
;
char
*
devcode
=
NULL
;
...
...
@@ -354,8 +354,8 @@ int kk_property_db_get_rawdata(const char *identifier,const int dev_type, kk_pro
curData
=
raw
;
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
&&
idx
<
count
){
devcode
=
sqlite3_column_text
(
stmt
,
DB_DEVICECODE
);
valueStr
=
sqlite3_column_text
(
stmt
,
DB_VALUE
);
devcode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEVICECODE
);
valueStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_VALUE
);
valueType
=
sqlite3_column_int
(
stmt
,
DB_VALUETYPE
);
memcpy
(
curData
->
deviceCode
,
devcode
,
strlen
(
devcode
));
memcpy
(
curData
->
raw
,
valueStr
,
strlen
(
valueStr
));
...
...
@@ -387,7 +387,7 @@ int kk_property_db_update(const char *deviceCode)
dm_mgr_dev_node_t
*
node
=
NULL
;
kk_tsl_data_t
*
property
=
NULL
;
res
=
dm_mgr_get_device_by_devicecode
(
deviceCode
,
&
node
);
res
=
dm_mgr_get_device_by_devicecode
(
(
char
*
)
deviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
...
...
@@ -433,9 +433,9 @@ int kk_property_db_update(const char *deviceCode)
int
kk_property_sync_values
(
const
char
*
deviceCode
)
{
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
//
int rc = 0;
int
res
=
0
;
char
*
zErrMsg
=
0
;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
char
*
pIdentifier
=
NULL
;
char
*
valueStr
=
NULL
;
...
...
@@ -445,7 +445,7 @@ int kk_property_sync_values(const char *deviceCode)
char
*
searchCmd
=
"select * from PropertiesInfo;"
;
dm_mgr_dev_node_t
*
node
=
NULL
;
res
=
dm_mgr_get_device_by_devicecode
(
deviceCode
,
&
node
);
res
=
dm_mgr_get_device_by_devicecode
(
(
char
*
)
deviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
...
...
@@ -458,10 +458,10 @@ int kk_property_sync_values(const char *deviceCode)
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
if
(
!
strcmp
(
deviceCode
,
sqlite3_column_text
(
stmt
,
DB_DEVICECODE
)))
if
(
!
strcmp
(
deviceCode
,
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEVICECODE
)))
{
pIdentifier
=
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
valueStr
=
sqlite3_column_text
(
stmt
,
DB_VALUE
);
pIdentifier
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
valueStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_VALUE
);
valueType
=
sqlite3_column_int
(
stmt
,
DB_VALUETYPE
);
if
(
valueType
==
KK_TSL_DATA_TYPE_INT
||
valueType
==
KK_TSL_DATA_TYPE_ENUM
||
...
...
@@ -538,12 +538,12 @@ static int _kk_check_lockkey_exist(const char* deviceCode,const char* keyId)
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_LOCKKEY_DEVICECODE
);
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_LOCKKEY_DEVICECODE
);
pKeyId
=
sqlite3_column_text
(
stmt
,
DB_LOCKKEY_KEYID
);
pKeyId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_LOCKKEY_KEYID
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
)
&&!
strcmp
(
pKeyId
,
keyId
))
{
{
isExist
=
1
;
break
;
}
...
...
midware/midware/dm/kk_sub_db.c
View file @
ab8689d7
...
...
@@ -10,11 +10,15 @@
#include <stdio.h>
#include "kk_tsl_api.h"
#include "kk_sub_db.h"
#include "kk_property_db.h"
#include "kk_dm_mng.h"
#include "kk_dm_msg.h"
#include "kk_scene_handle.h"
#include "kk_dm_heartbeat.h"
#include "kk_dm_api.h"
#include "sqlite3.h"
#include "kk_log.h"
#include "kk_hal.h"
extern
sqlite3
*
g_kk_pDb
;
typedef
struct
{
...
...
@@ -117,10 +121,10 @@ static int _kk_load_subDevice(void)
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
deviceType
=
sqlite3_column_int
(
stmt
,
DB_SUB_DEVTYPE
);
res
=
dm_mgr_subdev_create
(
deviceType
,
sqlite3_column_text
(
stmt
,
DB_SUB_PRODUCTCODE
),
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
),
sqlite3_column_text
(
stmt
,
DB_SUB_MAC
),
sqlite3_column_text
(
stmt
,
DB_SUB_FATHERDEVICECODE
),
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_PRODUCTCODE
),
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
),
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_MAC
),
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_FATHERDEVICECODE
),
KK_DEV_UNKNOW
,
&
devId
,
&
heartbeat
);
if
(
res
!=
SUCCESS_RETURN
){
...
...
@@ -134,11 +138,11 @@ static int _kk_load_subDevice(void)
iotx_dm_subscribe
(
devId
);
//sync the data from property db
kk_property_sync_values
(
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
));
kk_property_sync_values
(
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
));
usleep
(
100000
);
if
(
deviceType
==
KK_DM_DEVICE_GATEWAY
){
kk_dm_gw_status_check_push
(
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
));
kk_dm_gw_status_check_push
(
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
));
}
//post the property to cloud
//dm_msg_thing_property_post_all(sqlite3_column_text(stmt, DB_DEVICECODE));
...
...
@@ -196,7 +200,7 @@ static int _kk_check_subDev_exist(const char* deviceCode)
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
){
pmac
=
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
pmac
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
if
(
!
strcmp
(
deviceCode
,
pmac
))
{
...
...
@@ -301,7 +305,6 @@ int kk_subDev_delete_by_dcode(char deviceCode[DEVICE_CODE_MAXLEN])
int
kk_subDev_update_offline
(
int
isOffline
,
const
char
*
deviceCode
)
{
char
*
sqlCmd
=
NULL
;
int
len
=
0
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
...
...
@@ -333,7 +336,6 @@ int kk_subDev_update_offline(int isOffline,const char *deviceCode)
int
kk_subDev_update_productType
(
char
*
productType
,
const
char
*
deviceCode
)
{
char
*
sqlCmd
=
NULL
;
int
len
=
0
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
...
...
@@ -364,7 +366,6 @@ int kk_subDev_update_productType(char *productType,const char *deviceCode)
int
kk_subDev_update_auth
(
int
isAuth
,
const
char
*
deviceCode
)
{
char
*
sqlCmd
=
NULL
;
int
len
=
0
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
...
...
@@ -395,7 +396,6 @@ int kk_subDev_update_auth(int isAuth,const char *deviceCode)
int
kk_subDev_update_sceneSupport
(
int
sceneSupport
,
const
char
*
deviceCode
)
{
char
*
sqlCmd
=
NULL
;
int
len
=
0
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
...
...
@@ -437,13 +437,13 @@ int kk_subDev_send_property_get_from_db(void)
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
isOffline
=
sqlite3_column_int
(
stmt
,
DB_SUB_DEVTYPE
);
if
(
isOffline
==
KK_DEV_ONLINE
){
res
=
dm_mgr_get_device_by_devicecode
(
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
),
&
node
);
res
=
dm_mgr_get_device_by_devicecode
(
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
),
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
continue
;
}
iotx_dm_dev_online
(
node
->
devid
);
dm_msg_thing_property_post_all
(
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
));
dm_msg_thing_property_post_all
(
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
));
}
}
sqlite3_finalize
(
stmt
);
...
...
@@ -478,7 +478,7 @@ int kk_subDev_send_property_get(const char *fatherDeviceCode)
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pDeviceCode
=
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
res
=
dm_mgr_get_device_by_devicecode
(
pDeviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
...
...
@@ -528,7 +528,7 @@ int kk_subDev_check_scene_support(const char *deviceCode)
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pDeviceCode
=
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
))
{
res
=
1
;
}
...
...
@@ -586,7 +586,7 @@ int kk_subDev_set_action_by_productType(const char *productType,const char *scen
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
//INFO_PRINT("total_column = %d\n", sqlite3_column_count(stmt));
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pDeviceCode
=
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
res
=
dm_mgr_get_device_by_devicecode
(
pDeviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
continue
;
...
...
midware/midware/dm/kk_sub_db.h
View file @
ab8689d7
...
...
@@ -7,8 +7,6 @@ int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
char
fatherMac
[
DEVICE_MAC_MAXLEN
],
char
mac
[
DEVICE_MAC_MAXLEN
],
char
version
[
DEVICE_VERSION_MAXLEN
],
int
heartbeat
);
int
kk_subDev_delete_byMac
(
char
device_mac
[
DEVICE_MAC_MAXLEN
]);
int
kk_subDev_update_offline
(
int
isOnline
,
const
char
*
device_mac
);
int
kk_subDev_update_auth
(
int
isAuth
,
const
char
*
deviceCode
);
int
kk_subDev_update_sceneSupport
(
int
sceneSupport
,
const
char
*
deviceCode
);
int
kk_subDev_delete_by_dcode
(
char
deviceCode
[
DEVICE_CODE_MAXLEN
]);
...
...
@@ -19,7 +17,7 @@ int kk_subDev_send_property_get(const char *fatherDeviceCode);
int
kk_subDev_check_scene_support
(
const
char
*
deviceCode
);
int
kk_subDev_set_action_by_productType
(
const
char
*
productType
,
const
char
*
sceneId
,
const
char
*
propertyName
,
const
char
*
propertyValue
,
const
char
*
type
);
int
kk_subDev_update_offline
(
int
isOffline
,
const
char
*
deviceCode
);
enum
{
DB_SUB_IDX
=
0
,
DB_SUB_ONLINE
,
...
...
midware/midware/dm/kk_sync_data.c
View file @
ab8689d7
...
...
@@ -20,6 +20,7 @@
#include "kk_tsl_api.h"
#include "kk_area_handle.h"
#include "kk_sub_db.h"
#include "kk_hal.h"
extern
sqlite3
*
g_kk_pDb
;
typedef
struct
{
...
...
@@ -57,7 +58,7 @@ static void _kk_sync_unlock(void)
*************************************************************/
int
kk_sync_init
(
void
)
{
int
res
=
0
;
//
int res = 0;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
/* Create Mutex */
ctx
->
mutex
=
HAL_MutexCreate
();
...
...
@@ -81,7 +82,7 @@ static int kk_get_rooms_devices(cJSON *roomDevicesArray,char *roomId)
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
deviceObj
=
cJSON_CreateObject
();
deviceCode
=
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
);
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
);
cJSON_AddStringToObject
(
deviceObj
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
}
sqlite3_free
(
sqlCmd
);
...
...
@@ -94,7 +95,7 @@ static int kk_get_rooms_info(cJSON *data)
sqlite3_stmt
*
stmt
;
char
*
roomId
=
NULL
;
char
*
roomName
=
NULL
;
int
valueType
=
0
;
//
int valueType = 0;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
data
==
NULL
){
return
FAIL_RETURN
;
...
...
@@ -106,8 +107,8 @@ static int kk_get_rooms_info(cJSON *data)
sqlCmd
=
sqlite3_mprintf
(
"select * from AreaInfo"
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
roomId
=
sqlite3_column_text
(
stmt
,
DB_ROOM_ID
);
roomName
=
sqlite3_column_text
(
stmt
,
DB_ROOM_NAME
);
roomId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_ROOM_ID
);
roomName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_ROOM_NAME
);
cJSON_AddStringToObject
(
roomItem
,
KK_SYNC_ROOMID_STR
,
roomId
);
cJSON_AddStringToObject
(
roomItem
,
KK_SYNC_NANE_STR
,
roomName
);
kk_get_rooms_devices
(
roomDevicesArray
,
roomId
);
...
...
@@ -130,7 +131,7 @@ static int kk_get_rooms_info(cJSON *data)
static
int
kk_get_properties_info
(
char
*
deviceCode
,
cJSON
*
obj
)
{
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
char
*
propertyStr
=
NULL
;
char
*
valueStr
=
NULL
;
...
...
@@ -143,9 +144,9 @@ static int kk_get_properties_info(char *deviceCode,cJSON *obj)
sqlCmd
=
sqlite3_mprintf
(
"select * from PropertiesInfo WHERE deviceCode = '%s' "
,
deviceCode
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
propertyStr
=
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
propertyStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
valueType
=
sqlite3_column_int
(
stmt
,
DB_VALUETYPE
);
valueStr
=
sqlite3_column_text
(
stmt
,
DB_VALUE
);
valueStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_VALUE
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
valueType
==
KK_TSL_DATA_TYPE_TEXT
){
cJSON_AddStringToObject
(
propertyItem
,
propertyStr
,
valueStr
);
...
...
@@ -164,7 +165,7 @@ static int kk_get_properties_info(char *deviceCode,cJSON *obj)
static
int
kk_get_sub_devices_info
(
cJSON
*
gwdevicesItem
,
char
*
deviceCode
)
{
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
char
*
subDeviceCode
=
NULL
;
...
...
@@ -180,10 +181,10 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
subdevicesItem
=
cJSON_CreateObject
();
subDeviceCode
=
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
subProductCode
=
sqlite3_column_text
(
stmt
,
DB_SUB_PRODUCTCODE
);
subVersion
=
sqlite3_column_text
(
stmt
,
DB_SUB_VERSION
);
subIsline
=
sqlite3_column_text
(
stmt
,
DB_SUB_ONLINE
);
subDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
subProductCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_PRODUCTCODE
);
subVersion
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_VERSION
);
subIsline
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_ONLINE
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_DEVICECODE_STR
,
subDeviceCode
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_VERSION_STR
,
subVersion
);
cJSON_AddStringToObject
(
subdevicesItem
,
KK_SYNC_MAC_STR
,
subDeviceCode
);
...
...
@@ -204,15 +205,15 @@ static int kk_get_sub_devices_info(cJSON *gwdevicesItem,char *deviceCode)
static
int
kk_get_gw_devices_info
(
cJSON
*
gwdevices
)
{
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
cJSON
*
gwdevicesItem
=
NULL
;
//
cJSON *gwdevicesItem = NULL;
char
*
gw_deviceCode
=
NULL
;
char
*
gw_productCode
=
NULL
;
char
*
gw_version
=
NULL
;
char
*
gw_isline
=
NULL
;
char
*
valueStr
=
NULL
;
int
valueType
=
0
;
//
char *valueStr = NULL;
//
int valueType = 0;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
gwdevices
==
NULL
){
return
FAIL_RETURN
;
...
...
@@ -223,10 +224,10 @@ static int kk_get_gw_devices_info(cJSON *gwdevices)
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
gwdevicesItem
=
cJSON_CreateObject
();
gw_deviceCode
=
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
gw_productCode
=
sqlite3_column_text
(
stmt
,
DB_SUB_PRODUCTCODE
);
gw_version
=
sqlite3_column_text
(
stmt
,
DB_SUB_VERSION
);
gw_isline
=
sqlite3_column_text
(
stmt
,
DB_SUB_ONLINE
);
gw_deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
gw_productCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_PRODUCTCODE
);
gw_version
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_VERSION
);
gw_isline
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_ONLINE
);
printf
(
"gw_deviceCode:%s
\n
"
,
gw_deviceCode
);
printf
(
"gw_productCode:%s
\n
"
,
gw_productCode
);
cJSON_AddStringToObject
(
gwdevicesItem
,
KK_SYNC_DEVICECODE_STR
,
gw_deviceCode
);
...
...
@@ -256,10 +257,10 @@ static int kk_get_devices_info(cJSON *data)
cJSON_AddItemToObject
(
data
,
KK_SYNC_DEVICES_STR
,
gwdevices
);
return
SUCCESS_RETURN
;
}
static
int
kk_get_scenes_actions_info
(
c
har
*
actionArray
)
static
int
kk_get_scenes_actions_info
(
c
JSON
*
actionArray
)
{
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
char
*
deviceCode
=
NULL
;
char
*
propertyName
=
NULL
;
...
...
@@ -274,12 +275,12 @@ static int kk_get_scenes_actions_info(char *actionArray )
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
actionItem
=
cJSON_CreateObject
();
deviceCode
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_DEVICECODE
);
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_DEVICECODE
);
delay
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_DELAY
);
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_EPNUM
);
propertyName
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYNAME
);
propertyValue
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYVALUE
);
type
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_TYPE
);
propertyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYNAME
);
propertyValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYVALUE
);
type
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_TYPE
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_DELAY_STR
,
delay
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
...
...
@@ -293,17 +294,17 @@ static int kk_get_scenes_actions_info(char *actionArray )
sqlite3_finalize
(
stmt
);
return
SUCCESS_RETURN
;
}
static
int
kk_get_scenes_trigger_info
(
c
har
*
triggerArray
,
char
*
sceneId
)
static
int
kk_get_scenes_trigger_info
(
c
JSON
*
triggerArray
,
char
*
sceneId
)
{
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
c
onst
unsigned
c
har
*
deviceCode
=
NULL
;
c
onst
unsigned
c
har
*
propertyName
=
NULL
;
c
onst
unsigned
c
har
*
compareType
=
NULL
;
c
onst
unsigned
c
har
*
compareValue
=
NULL
;
const
unsigned
char
*
type
=
NULL
;
int
delay
=
0
,
epNum
=
0
;
char
*
deviceCode
=
NULL
;
char
*
propertyName
=
NULL
;
char
*
compareType
=
NULL
;
char
*
compareValue
=
NULL
;
//
char *type = NULL;
int
epNum
=
0
;
kk_sync_ctx_t
*
ctx
=
_kk_sync_get_ctx
();
if
(
triggerArray
==
NULL
||
sceneId
==
NULL
){
return
FAIL_RETURN
;
...
...
@@ -312,12 +313,12 @@ static int kk_get_scenes_trigger_info(char *triggerArray,char *sceneId)
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
cJSON
*
triggerItem
=
cJSON_CreateObject
();
deviceCode
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_DEVICECODE
);
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_DEVICECODE
);
epNum
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_EPNUM
);
propertyName
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_PROPERTYNAME
);
compareType
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
compareValue
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
type
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_TYPE
);
propertyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_PROPERTYNAME
);
compareType
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
compareValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
//type = (char*)
sqlite3_column_text(stmt, DB_SCENETRIGGER_TYPE);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_DEVICECODE_STR
,
(
char
*
)
deviceCode
);
cJSON_AddNumberToObject
(
triggerItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
cJSON_AddStringToObject
(
triggerItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
(
char
*
)
propertyName
);
...
...
@@ -329,10 +330,10 @@ static int kk_get_scenes_trigger_info(char *triggerArray,char *sceneId)
sqlite3_finalize
(
stmt
);
return
SUCCESS_RETURN
;
}
static
int
kk_get_scenes_condition_info
(
c
har
*
conditionArray
,
char
*
sceneId
)
static
int
kk_get_scenes_condition_info
(
c
JSON
*
conditionArray
,
char
*
sceneId
)
{
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
int
starttime
=
0
;
int
endtime
=
0
;
...
...
@@ -364,7 +365,7 @@ static int kk_get_scenes_condition_info(char *conditionArray,char *sceneId)
static
int
kk_get_scenes_info
(
cJSON
*
data
)
{
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
int
enable
=
0
,
type
=
0
;
char
*
name
=
NULL
;
...
...
@@ -387,9 +388,9 @@ static int kk_get_scenes_info(cJSON *data)
}
type
=
sqlite3_column_int
(
stmt
,
DB_SCENEINFO_SCENETYPE
);
cJSON_AddNumberToObject
(
sceneArrayItem
,
KK_SYNC_SCENE_SCENETYPE_STR
,
type
);
name
=
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_NAME
);
name
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_NAME
);
cJSON_AddStringToObject
(
sceneArrayItem
,
KK_SYNC_NANE_STR
,
name
);
sceneId
=
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_SCENEID
);
sceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINFO_SCENEID
);
cJSON_AddStringToObject
(
sceneArrayItem
,
KK_SYNC_SCENEID_STR
,
sceneId
);
cJSON
*
actionArray
=
cJSON_CreateArray
();
kk_get_scenes_actions_info
(
actionArray
);
...
...
@@ -410,7 +411,7 @@ static int kk_get_scenes_info(cJSON *data)
static
int
kk_get_ccu_properties
(
cJSON
*
property
)
{
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
//
char *zErrMsg = 0;
sqlite3_stmt
*
stmt
;
char
*
propertyStr
=
NULL
;
char
*
valueStr
=
NULL
;
...
...
@@ -424,9 +425,9 @@ static int kk_get_ccu_properties(cJSON *property)
sqlCmd
=
sqlite3_mprintf
(
"select * from PropertiesInfo WHERE devType = '%d' "
,
KK_DM_DEVICE_CCU
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
propertyStr
=
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
propertyStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_IDENTIFITER
);
valueType
=
sqlite3_column_int
(
stmt
,
DB_VALUETYPE
);
valueStr
=
sqlite3_column_text
(
stmt
,
DB_VALUE
);
valueStr
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_VALUE
);
if
(
valueType
==
KK_TSL_DATA_TYPE_TEXT
){
cJSON_AddStringToObject
(
property
,
propertyStr
,
valueStr
);
}
else
if
(
valueType
==
KK_TSL_DATA_TYPE_INT
||
...
...
@@ -451,7 +452,6 @@ static int kk_get_ccu_properties(cJSON *property)
char
*
kk_sync_get_info
()
{
char
*
out
=
NULL
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
char
ccu_deviceCode
[
DEVICE_CODE_MAXLEN
]
=
{
0
};
char
ccu_productCode
[
PRODUCT_CODE_MAXLEN
]
=
{
0
};
char
version
[
32
]
=
{
0
};
...
...
@@ -460,17 +460,12 @@ char *kk_sync_get_info()
cJSON_AddStringToObject
(
root
,
KK_SYNC_CODE_STR
,
"0"
);
cJSON
*
data
=
cJSON_CreateObject
();
cJSON_AddItemToObject
(
root
,
KK_SYNC_DATA_STR
,
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_get_rooms_info
(
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_get_devices_info
(
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_get_scenes_info
(
data
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
HAL_GetDevice_Code
(
ccu_deviceCode
);
HAL_GetProduct_Code
(
ccu_productCode
);
HAL_GetVersion
(
version
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_DEVICECODE_STR
,
ccu_deviceCode
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_NANE_STR
,
"newccu"
);
sprintf
(
cloudstatus_str
,
"%d"
,
kk_get_cloudstatus
());
...
...
@@ -478,10 +473,9 @@ char *kk_sync_get_info()
cJSON_AddStringToObject
(
data
,
KK_SYNC_PRODUCTCODE_STR
,
ccu_productCode
);
cJSON_AddStringToObject
(
data
,
KK_SYNC_VERSION_STR
,
version
);
cJSON
*
property
=
cJSON_CreateObject
();
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_get_ccu_properties
(
property
);
cJSON_AddItemToObject
(
data
,
KK_SYNC_PROPERTY_STR
,
property
);
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
out
=
cJSON_Print
(
root
);
printf
(
"kk_sync_get_info:%s
\n
"
,
out
);
cJSON_Delete
(
root
);
...
...
midware/midware/dm/kk_sync_data.h
View file @
ab8689d7
...
...
@@ -34,4 +34,8 @@
#define KK_SYNC_SCENE_ENDTIME_STR "endTime"
#define KK_SYNC_SCENE_CROSSDAY_STR "crossDay"
#define KK_SYNC_SCENE_REPEATDAY_STR "repeat_days"
int
kk_sync_init
(
void
);
char
*
kk_sync_get_info
();
#endif
midware/midware/history/kk_history_db.c
View file @
ab8689d7
...
...
@@ -15,6 +15,7 @@
#include "kk_tsl_api.h"
#include "sqlite3.h"
#include "kk_log.h"
#include "kk_hal.h"
#include "kk_history_db.h"
...
...
@@ -213,7 +214,7 @@ int kk_history_insert_sensor_info(const char* deviceCode,const char* identifier,
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
rtime
=
sqlite3_column_int
(
stmt
,
DB_SENSOR_RECORDTIME
);
kk_history_delete_by_recordtime
(
"SensorHistoryInfo"
,
rtime
);
INFO_PRINT
(
"delete rtime:%d
\n
"
,
rtime
);
INFO_PRINT
(
"delete rtime:%
l
d
\n
"
,
rtime
);
break
;
}
sqlite3_finalize
(
stmt
);
...
...
midware/midware/midware.c
View file @
ab8689d7
...
...
@@ -13,7 +13,6 @@
#include"com_api.h"
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
...
...
@@ -415,12 +414,10 @@ void gw2mid_cb(void* data, int len, char* chalMark){
*************************************************************/
void
kk_platMsg_handle
(
void
*
data
,
char
*
chalMark
){
char
*
out
;
int
res
=
0
;
cJSON
*
json
;
cJSON
*
info
;
cJSON
*
info_dcode
;
cJSON
*
params
;
cJSON
*
jsonPay
;
cJSON
*
msgType
;
cJSON
*
proCode
;
...
...
@@ -829,22 +826,11 @@ void *udp_dispatch_yield(void *args){
}
socklen_t
len
=
sizeof
(
struct
sockaddr_in
);
cJSON
*
json
=
NULL
;
cJSON
*
info
=
NULL
;
cJSON
*
payload
=
NULL
;
cJSON
*
infoObj
=
NULL
;
cJSON
*
payloadObj
=
NULL
;
cJSON
*
msgtype
=
NULL
;
cJSON
*
proCode
=
NULL
;
cJSON
*
devCode
=
NULL
;
cJSON
*
params
=
NULL
;
cJSON
*
macstr
=
NULL
;
char
szOut
[
128
]
=
{
0
};
char
szDec
[
1024
]
=
{
0
};
char
host_ip
[
32
]
=
{
0
};
char
mac
[
32
]
=
{
0
};
char
device_code
[
DEVICE_CODE_LEN
]
=
{
0
};
int
devId
=
0
;
kk_prop_raw_struct_t
ipList
[
10
]
=
{
0
};
int
idx
=
0
;
...
...
@@ -1048,9 +1034,9 @@ int kk_sqlite_init(void)
int
main
(
const
int
argc
,
const
char
**
argv
)
{
int
res
=
0
;
char
*
tsl_str
;
int
i
;
kk_tsl_t
*
dev_shadow
[
30
]
=
{
NULL
};
//
char *tsl_str;
//
int i;
//
kk_tsl_t *dev_shadow[30] = {NULL};
mid_ctx_t
*
mid_ctx
=
kk_mid_get_ctx
();
open
(
"midware"
,
LOG_PID
,
LOG_USER
);
...
...
@@ -1098,7 +1084,7 @@ int main(const int argc, const char **argv)
return
-
1
;
}
int
ct
=
0
;
//
int ct = 0;
for
(;;)
{
usleep
(
200000
);
kk_platMsg_dispatch
();
...
...
midware/midware/scene/kk_scene_db.c
View file @
ab8689d7
...
...
@@ -176,7 +176,7 @@ int kk_scene_db_init(void)
int
kk_scene_update_scene_enable
(
int
enable
,
const
char
*
sceneId
)
{
char
*
sqlCmd
=
NULL
;
int
len
=
0
;
//
int len =0;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
...
...
@@ -207,7 +207,7 @@ int kk_scene_update_scene_enable(int enable,const char *sceneId)
*其他说明:
*************************************************************/
int
kk_scene_insert_scene_info
(
const
char
*
name
,
const
char
*
sceneType
,
const
char
*
enable
,
const
char
*
sceneId
)
int
kk_scene_insert_scene_info
(
const
char
*
name
,
int
sceneType
,
int
enable
,
const
char
*
sceneId
)
{
int
res
=
0
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
...
...
@@ -265,11 +265,11 @@ static int kk_scene_check_trigger_exist(const char* deviceCode,int epNum,const c
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
dbepNum
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_EPNUM
);
dbcompareType
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
dbcompareValue
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
dbsceneId
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_SCENEID
);
dbcompareType
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
dbcompareValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
dbsceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_SCENEID
);
if
((
epNum
==
dbepNum
)
&&
(
!
strcmp
(
dbcompareType
,
compareType
))
&&
\
(
!
strcmp
(
compareValue
,
compareValue
))
&&
(
!
strcmp
(
dbsceneId
,
sceneId
))){
(
!
strcmp
(
compareValue
,
db
compareValue
))
&&
(
!
strcmp
(
dbsceneId
,
sceneId
))){
res
=
1
;
INFO_PRINT
(
"kk_scene_check_trigger_exist!!!
\n
"
);
break
;
...
...
@@ -710,7 +710,6 @@ int kk_scene_delete_scene_action(const char *sceneId,int isforword)
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
sqlite3_stmt
*
stmt
;
if
(
isforword
){
kk_scene_delete_send_to_gw
(
sceneId
);
...
...
midware/midware/scene/kk_scene_db.h
View file @
ab8689d7
...
...
@@ -67,4 +67,23 @@ enum{
DB_SCENEINVOKESERVICE_SCENEID
,
DB_SCENEINVOKESERVICE_args
,
};
int
kk_scene_delete_scene_timing
(
const
char
*
sceneId
);
int
kk_scene_delete_scene_condition
(
const
char
*
sceneId
);
int
kk_scene_delete_scene_trigger
(
const
char
*
sceneId
);
int
kk_scene_delete_scene_embed
(
const
char
*
sceneId
);
int
kk_scene_delete_scene_info
(
const
char
*
sceneId
);
int
kk_scene_delete_scene_invokeservice
(
const
char
*
sceneId
);
int
kk_scene_delete_scene_action
(
const
char
*
sceneId
,
int
isforword
);
int
kk_scene_insert_scene_action
(
const
char
*
type
,
const
char
*
deviceCode
,
int
epNum
,
const
char
*
propertyName
,
const
char
*
propertyValue
,
int
delay
,
const
char
*
sceneId
,
const
char
*
gwdeviceCode
);
int
kk_scene_insert_scene_invokeService
(
const
char
*
type
,
const
char
*
identifier
,
const
char
*
args
,
const
char
*
sceneId
);
int
kk_scene_insert_scene_embed
(
int
delay
,
const
char
*
executeSceneId
,
const
char
*
sceneId
);
int
kk_scene_insert_scene_timer
(
time_t
startTime
,
char
weekflag
,
const
char
*
sceneId
);
int
kk_scene_insert_scene_condition
(
const
char
*
type
,
int
startTime
,
int
endTime
,
int
crossDay
,
char
repeat_days
,
const
char
*
sceneId
);
int
kk_scene_insert_scene_trigger
(
const
char
*
type
,
const
char
*
deviceCode
,
int
epNum
,
const
char
*
propertyName
,
const
char
*
compareType
,
const
char
*
compareValue
,
const
char
*
sceneId
,
int
isAnd
);
int
kk_scene_insert_scene_info
(
const
char
*
name
,
int
sceneType
,
int
enable
,
const
char
*
sceneId
);
int
kk_scene_update_scene_enable
(
int
enable
,
const
char
*
sceneId
);
int
kk_scene_db_init
(
void
);
#endif
midware/midware/scene/kk_scene_handle.c
View file @
ab8689d7
...
...
@@ -12,9 +12,16 @@
*************************************************************/
#include <stdio.h>
#include <pthread.h>
#include "kk_scene_handle.h"
#include "kk_scene_db.h"
#include "kk_sub_db.h"
#include "kk_tsl_load.h"
#include "kk_dm_api.h"
#include "kk_dm_msg.h"
#include "kk_property_db.h"
#include "kk_hal.h"
#include "kk_log.h"
#include <time.h>
...
...
@@ -33,9 +40,9 @@ static kk_scene_timer_list_t *p_scene_timer_list = NULL;
extern
time_t
s_start_time
;
static
kk_scene_action_t
*
p_kk_scene_action
=
NULL
;
static
kk_scene_ctx_t
s_kk_scene_ctx
=
{
NULL
};
int
kk_scene_check_trigger_condition
(
const
char
*
sceneId
);
static
int
kk_scene_embed_find
(
const
char
*
sceneId
);
static
int
kk_scene_invokeService_find
(
const
char
*
sceneId
);
int
kk_scene_push_timer_info
(
time_t
starttime
,
int
repeatday
,
char
*
sceneId
);
/*************************************************************
函数实现
...
...
@@ -44,11 +51,6 @@ static int kk_scene_invokeService_find(const char *sceneId);
static
int
kk_scene_check_value_ex
(
const
char
*
compareType
,
const
char
*
compareValue1
,
const
char
*
compareValue2
)
{
int
res
=
FAIL_RETURN
;
int
type
=
0
;
int
ivalue
=
0
;
int
itemValue
=
0
;
double
dvalue
=
0
;
double
ditemValue
=
0
;
if
(
compareType
==
NULL
||
compareValue1
==
NULL
||
compareValue2
==
NULL
){
ERROR_PRINT
(
"[%d]kk_scene_check_value fail!!!
\n
"
,
__LINE__
);
...
...
@@ -98,8 +100,6 @@ void _kk_scene_unlock(void)
}
}
#define KK_DEVICE_TSL_TYPE (0x08)
static
kk_tsl_t
*
s_scene_shadow
=
NULL
;
static
int
kk_scene_tsl_load
(
void
)
...
...
@@ -151,14 +151,16 @@ static int kk_scene_timer_load(void)
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
sqlite3_stmt
*
stmt
;
char
*
sceneId
=
NULL
;
int
starttime
;
int
repeatday
;
char
*
sqlCmd
=
"select * from SceneTimerInfo;"
;
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
sceneId
=
sqlite3_column_text
(
stmt
,
DB_SCENETIMER_SCENEID
);
sceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETIMER_SCENEID
);
if
(
kk_scene_timer_check_able
(
sceneId
)
==
SUCCESS_RETURN
){
int
starttime
=
sqlite3_column_int
(
stmt
,
DB_SCENETIMER_TIME
);
int
repeatday
=
sqlite3_column_int
(
stmt
,
DB_SCENETIMER_WEEK
);
starttime
=
sqlite3_column_int
(
stmt
,
DB_SCENETIMER_TIME
);
repeatday
=
sqlite3_column_int
(
stmt
,
DB_SCENETIMER_WEEK
);
kk_scene_push_timer_info
(
starttime
,
repeatday
,
sceneId
);
}
}
...
...
@@ -187,7 +189,7 @@ void *kk_scene_yield(void *args)
kk_scene_embed_delay_t
*
embedDelayInfo
=
NULL
;
kk_scene_embed_delay_t
*
pTempEmbed
=
NULL
;
kk_scene_timer_list_t
*
scene_timer_list
=
NULL
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
while
(
1
)
{
current_time
=
HAL_GetTime
();
/****系统起来15s后开始定时处理****/
...
...
@@ -201,8 +203,8 @@ void *kk_scene_yield(void *args)
/*处理action delay*/
actionDelayInfo
=
p_delay_action_list
;
while
(
actionDelayInfo
){
INFO_PRINT
(
"[%s][%d] current_time:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
current_time
);
INFO_PRINT
(
"[%s][%d] actionDelayInfo->starttime:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
actionDelayInfo
->
starttime
);
INFO_PRINT
(
"[%s][%d] current_time:%
l
d
\n
"
,
__FUNCTION__
,
__LINE__
,
current_time
);
INFO_PRINT
(
"[%s][%d] actionDelayInfo->starttime:%
l
d
\n
"
,
__FUNCTION__
,
__LINE__
,
actionDelayInfo
->
starttime
);
if
(
current_time
>=
actionDelayInfo
->
starttime
){
INFO_PRINT
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
kk_scene_send_action_msg
(
actionDelayInfo
->
action
);
...
...
@@ -230,8 +232,8 @@ void *kk_scene_yield(void *args)
/*处理场景嵌套delay*/
embedDelayInfo
=
p_delay_embed_list
;
while
(
embedDelayInfo
){
INFO_PRINT
(
"[%s][%d] current_time:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
current_time
);
INFO_PRINT
(
"[%s][%d] embedDelayInfo->starttime:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
embedDelayInfo
->
starttime
);
INFO_PRINT
(
"[%s][%d] current_time:%
l
d
\n
"
,
__FUNCTION__
,
__LINE__
,
current_time
);
INFO_PRINT
(
"[%s][%d] embedDelayInfo->starttime:%
l
d
\n
"
,
__FUNCTION__
,
__LINE__
,
embedDelayInfo
->
starttime
);
if
(
current_time
>=
embedDelayInfo
->
starttime
){
kk_scene_execute_action
(
embedDelayInfo
->
executeSceneId
,
NULL
);
if
(
embedDelayInfo
==
p_delay_embed_list
){
...
...
@@ -258,8 +260,8 @@ void *kk_scene_yield(void *args)
_kk_scene_lock
();
scene_timer_list
=
p_scene_timer_list
;
while
(
scene_timer_list
){
INFO_PRINT
(
"scene_timer_list->starttime:%d
\n
"
,
scene_timer_list
->
starttime
);
INFO_PRINT
(
"current_time %d
\n
"
,
current_time
);
INFO_PRINT
(
"scene_timer_list->starttime:%
l
d
\n
"
,
scene_timer_list
->
starttime
);
INFO_PRINT
(
"current_time %
l
d
\n
"
,
current_time
);
if
(
scene_timer_list
->
starttime
!=
0
&&
current_time
>=
scene_timer_list
->
starttime
){
if
(
kk_scene_check_trigger_condition
(
scene_timer_list
->
sceneId
)
==
0
){
kk_scene_execute_action
(
scene_timer_list
->
sceneId
,
NULL
);
...
...
@@ -305,7 +307,7 @@ int kk_scene_init(void)
}
kk_scene_timer_load
();
res
=
pthread_create
(
&
ctx
->
s_scene_thread
,
NULL
,
kk_scene_yield
,
NULL
);
res
=
pthread_create
(
(
pthread_t
*
)
&
ctx
->
s_scene_thread
,
NULL
,
kk_scene_yield
,
NULL
);
if
(
res
<
0
)
{
ERROR_PRINT
(
"HAL_ThreadCreate mid Failed
\n
"
);
//IOT_Linkkit_Close(mid_ctx->master_devid);
...
...
@@ -318,7 +320,6 @@ int kk_scene_init(void)
static
int
kk_scene_action_info_add
(
kk_scene_action_info_ex_t
**
head
,
kk_scene_action_detail_t
detail
)
{
int
len
;
kk_scene_action_info_ex_t
*
ptr
,
*
pre
;
ptr
=
pre
=
*
head
;
...
...
@@ -356,7 +357,6 @@ static int kk_scene_action_info_add(kk_scene_action_info_ex_t **head,kk_scene_ac
*************************************************************/
int
kk_scene_action_add
(
const
char
*
gwdeviceCode
,
const
char
*
sceneId
,
kk_scene_action_detail_t
detail
)
{
int
len
;
kk_scene_action_t
*
ptr
,
*
pre
;
ptr
=
pre
=
p_kk_scene_action
;
...
...
@@ -400,16 +400,16 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
*************************************************************/
static
int
kk_scene_action_free
(
void
)
{
int
len
;
kk_scene_action_t
*
ptr
,
*
pnext
;
kk_scene_action_info_ex_t
*
actionTemp
=
NULL
;
kk_scene_action_info_ex_t
*
ptemp
=
NULL
;
ptr
=
p_kk_scene_action
;
while
(
ptr
){
pnext
=
ptr
->
next
;
actionTemp
=
ptr
->
actionInfo
;
while
(
actionTemp
!=
NULL
){
kk_scene_action_info_ex_t
*
ptemp
=
actionTemp
->
next
;
ptemp
=
actionTemp
->
next
;
//printf("kk_scene_action_free free:%p\n",actionTemp);
free
(
actionTemp
);
actionTemp
=
NULL
;
...
...
@@ -457,18 +457,19 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
char
gwdevice
[][
DEVICE_CODE_MAXLEN
]
=
{
0
};
sqlite3_stmt
*
stmt
;
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
char
*
gwdeviceCode
=
NULL
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
int
idx
=
0
,
num
=
0
;
int
res
=
0
;
cJSON
*
root
;
char
*
out
=
NULL
;
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneActionInfo WHERE sceneId = '%s'"
,
sceneId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
next:
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
gwdeviceCode
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_GWDEVICECODE
);
gwdeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_GWDEVICECODE
);
if
(
kk_subDev_check_scene_support
(
gwdeviceCode
)
==
1
){
for
(
idx
=
0
;
idx
<
num
;
idx
++
){
/*此网关已经发送过*/
...
...
@@ -479,9 +480,9 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
}
memcpy
(
gwdevice
[
num
],
gwdeviceCode
,
strlen
(
gwdeviceCode
));
num
++
;
cJSON
*
root
=
cJSON_CreateObject
();
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
MSG_SCENE_SCENEID
,
sceneId
);
char
*
out
=
cJSON_Print
(
root
);
out
=
cJSON_Print
(
root
);
res
=
kk_msg_execute_scene_delete
(
out
,
gwdeviceCode
);
cJSON_Delete
(
root
);
free
(
out
);
...
...
@@ -502,18 +503,22 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
int
kk_scene_action_info_send
(
int
isUpdate
)
{
cJSON
*
root
;
cJSON
*
array
;
cJSON
*
info
;
char
*
out
;
kk_scene_action_t
*
ptr
=
p_kk_scene_action
;
kk_scene_action_info_ex_t
*
ptmp
=
NULL
;
if
(
ptr
==
NULL
){
return
FAIL_RETURN
;
}
while
(
ptr
){
cJSON
*
root
=
cJSON_CreateObject
();
cJSON
*
array
=
cJSON_CreateArray
();
root
=
cJSON_CreateObject
();
array
=
cJSON_CreateArray
();
cJSON_AddStringToObject
(
root
,
MSG_SCENE_SCENEID
,
ptr
->
sceneId
);
ptmp
=
ptr
->
actionInfo
;
while
(
ptr
->
actionInfo
){
cJSON
*
info
=
cJSON_CreateObject
();
info
=
cJSON_CreateObject
();
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_PROPERTYVALUE
,
ptr
->
actionInfo
->
info
.
propertyValue
);
...
...
@@ -524,7 +529,7 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
}
ptr
->
actionInfo
=
ptmp
;
cJSON_AddItemToObject
(
root
,
MSG_SCENE_ACTIONS
,
array
);
char
*
out
=
cJSON_Print
(
root
);
out
=
cJSON_Print
(
root
);
//printf("out:%s\n",out);
kk_msg_execute_scene_set
(
out
,
ptr
->
gwdeviceCode
,
isUpdate
);
cJSON_Delete
(
root
);
...
...
@@ -548,13 +553,14 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
int
kk_scene_muticontrol_info_send
(
cJSON
*
action
,
const
char
*
gwdeviceCode
,
const
char
*
sceneId
,
int
isUpdate
)
{
char
*
out
=
NULL
;
if
(
action
==
NULL
||
gwdeviceCode
==
NULL
||
sceneId
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
root
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
root
,
MSG_SCENE_SCENEID
,
sceneId
);
cJSON_AddItemToObject
(
root
,
MSG_SCENE_ACTIONS
,
action
);
char
*
out
=
cJSON_Print
(
root
);
out
=
cJSON_Print
(
root
);
printf
(
"kk_scene_muticontrol_info_send:%s
\n
"
,
out
);
kk_msg_execute_scene_set
(
out
,
gwdeviceCode
,
isUpdate
);
cJSON_Delete
(
root
);
...
...
@@ -574,18 +580,21 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
static
int
kk_scene_parse_trigger_detail
(
const
char
*
type
,
const
cJSON
*
item
,
const
char
*
sceneId
,
int
isAnd
)
{
int
res
=
FAIL_RETURN
;
cJSON
*
deviceCode
,
*
epNum
;
cJSON
*
propertyName
,
*
compareType
;
cJSON
*
compareValue
;
if
(
type
==
NULL
||
item
==
NULL
||
sceneId
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
item
,
MSG_DEVICE_CODE_STR
);
deviceCode
=
cJSON_GetObjectItem
(
item
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
epNum
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_EPNUM
);
epNum
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_EPNUM
);
if
(
epNum
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
propertyName
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYNAME
);
propertyName
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYNAME
);
if
(
propertyName
==
NULL
)
return
FAIL_RETURN
;
c
JSON
*
c
ompareType
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_COMPARETYPE
);
compareType
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_COMPARETYPE
);
if
(
compareType
==
NULL
)
return
FAIL_RETURN
;
c
JSON
*
c
ompareValue
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_COMPAREVALUE
);
compareValue
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_COMPAREVALUE
);
if
(
compareValue
==
NULL
)
return
FAIL_RETURN
;
res
=
kk_scene_insert_scene_trigger
(
type
,
deviceCode
->
valuestring
,
epNum
->
valueint
,
propertyName
->
valuestring
,
compareType
->
valuestring
,
compareValue
->
valuestring
,
sceneId
,
isAnd
);
...
...
@@ -605,19 +614,24 @@ static int kk_scene_parse_trigger_detail(const char *type,const cJSON *item,cons
*************************************************************/
int
kk_scene_parse_scene_trigger
(
const
cJSON
*
str
,
const
char
*
sceneId
)
{
cJSON
*
triggers
;
cJSON
*
items
,
*
item
;
cJSON
*
type
;
cJSON
*
week
;
cJSON
*
time
;
int
res
=
0
;
int
weekflag
=
0
;
if
(
str
==
NULL
||
sceneId
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
triggers
=
cJSON_GetObjectItem
(
str
,
MSG_SCENE_TRIGGERS
);
triggers
=
cJSON_GetObjectItem
(
str
,
MSG_SCENE_TRIGGERS
);
if
(
triggers
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
items
=
cJSON_GetObjectItem
(
triggers
,
MSG_SCENE_ITEMS
);
items
=
cJSON_GetObjectItem
(
triggers
,
MSG_SCENE_ITEMS
);
if
(
items
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
item
=
items
->
child
;
item
=
items
->
child
;
while
(
item
!=
NULL
){
cJSON
*
type
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_TYPE
);
type
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_TYPE
);
if
(
type
==
NULL
)
return
FAIL_RETURN
;
if
(
!
strcmp
(
"trigger/thing/property"
,
type
->
valuestring
)){
res
=
kk_scene_parse_trigger_detail
(
type
->
valuestring
,
item
,
sceneId
,
0
);
...
...
@@ -627,15 +641,15 @@ int kk_scene_parse_scene_trigger(const cJSON* str,const char *sceneId)
}
}
else
if
(
!
strcmp
(
"trigger/timing"
,
type
->
valuestring
)){
cJSON
*
week
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_WEEK
);
week
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_WEEK
);
if
(
week
==
NULL
)
return
FAIL_RETURN
;
weekflag
=
kk_scene_parse_repeatday
(
week
);
cJSON
*
time
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_TIME
);
time
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_TIME
);
if
(
time
==
NULL
)
return
FAIL_RETURN
;
time_t
current
=
HAL_GetTime
();
time_t
newStart
=
kk_scene_creat_timer_starttime
(
weekflag
,
atoi
(
time
->
valuestring
),
current
);
kk_scene_insert_scene_timer
(
newStart
,
weekflag
,
sceneId
);
kk_scene_push_timer_info
(
newStart
,
weekflag
,
sceneId
);
kk_scene_push_timer_info
(
newStart
,
weekflag
,
(
char
*
)
sceneId
);
}
item
=
item
->
next
;
}
...
...
@@ -796,31 +810,36 @@ int kk_scene_push_timer_info(time_t starttime,int repeatday,char *sceneId)
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
int
kk_scene_parse_scene_condition
(
const
cJSON
*
str
,
const
char
*
sceneId
)
{
char
weekflag
=
0
;
int
res
=
0
;
cJSON
*
conditon
,
*
items
,
*
item
;
cJSON
*
type
;
cJSON
*
startTime
;
cJSON
*
endTime
;
cJSON
*
repeatday
;
if
(
str
==
NULL
||
sceneId
==
NULL
){
ERROR_PRINT
(
"kk_scene_parse_scene_condition failed
\n
"
);
return
INVALID_PARAMETER
;
}
c
JSON
*
c
onditon
=
cJSON_GetObjectItem
(
str
,
MSG_SCENE_CONDITIONS
);
conditon
=
cJSON_GetObjectItem
(
str
,
MSG_SCENE_CONDITIONS
);
if
(
conditon
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
items
=
cJSON_GetObjectItem
(
conditon
,
MSG_SCENE_ITEMS
);
items
=
cJSON_GetObjectItem
(
conditon
,
MSG_SCENE_ITEMS
);
if
(
items
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
item
=
items
->
child
;
item
=
items
->
child
;
while
(
item
!=
NULL
){
cJSON
*
type
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_TYPE
);
type
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_TYPE
);
if
(
type
==
NULL
)
return
FAIL_RETURN
;
if
(
!
strcmp
(
"condition/timeRange"
,
type
->
valuestring
)){
cJSON
*
startTime
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_STARTTIME
);
startTime
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_STARTTIME
);
if
(
startTime
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
endTime
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_ENDTIME
);
endTime
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_ENDTIME
);
if
(
endTime
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
repeatday
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_REPEATDAYS
);
repeatday
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_REPEATDAYS
);
if
(
repeatday
==
NULL
)
return
FAIL_RETURN
;
weekflag
=
kk_scene_parse_repeatday
(
repeatday
);
//kk_scene_push_timer_info(startTime->valueint,endTime->valueint,weekflag,sceneId);
...
...
@@ -857,59 +876,74 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
{
int
res
=
0
;
int
propertySetType
=
0
;
cJSON
*
action
;
cJSON
*
item
;
cJSON
*
type
;
cJSON
*
delay
;
cJSON
*
exeucteSceneId
;
cJSON
*
identifier
;
cJSON
*
arg
;
char
*
argStr
;
cJSON
*
propertyName
;
cJSON
*
propertyValue
;
cJSON
*
productType
;
cJSON
*
deviceCode
;
cJSON
*
epNum
;
int
iepnum
;
dm_mgr_dev_node_t
*
node
=
NULL
;
if
(
str
==
NULL
||
sceneId
==
NULL
){
ERROR_PRINT
(
"kk_scene_parse_scene_action failed
\n
"
);
return
INVALID_PARAMETER
;
}
cJSON
*
action
=
cJSON_GetObjectItem
(
str
,
MSG_SCENE_ACTIONS
);
action
=
cJSON_GetObjectItem
(
str
,
MSG_SCENE_ACTIONS
);
if
(
action
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
item
=
action
->
child
;
item
=
action
->
child
;
while
(
item
!=
NULL
){
cJSON
*
type
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_TYPE
);
type
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_TYPE
);
if
(
type
==
NULL
)
return
FAIL_RETURN
;
/*内嵌场景设置*/
if
(
!
strcmp
(
type
->
valuestring
,
"action/scene"
)){
cJSON
*
delay
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_DELAY
);
delay
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_DELAY
);
if
(
delay
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
exeucteSceneId
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_SCENEID
);
exeucteSceneId
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_SCENEID
);
if
(
exeucteSceneId
==
NULL
)
return
FAIL_RETURN
;
kk_scene_insert_scene_embed
(
delay
->
valueint
,
exeucteSceneId
->
valuestring
,
sceneId
);
}
else
if
(
!
strcmp
(
type
->
valuestring
,
"action/thing/invokeService"
)){
//场景服务,包含场景使能等
cJSON
*
identifier
=
cJSON_GetObjectItem
(
item
,
MSG_INDENTIFIER_STR
);
identifier
=
cJSON_GetObjectItem
(
item
,
MSG_INDENTIFIER_STR
);
if
(
identifier
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
arg
=
cJSON_GetObjectItem
(
item
,
MSG_COMMON_ARGS
);
arg
=
cJSON_GetObjectItem
(
item
,
MSG_COMMON_ARGS
);
if
(
arg
==
NULL
)
return
FAIL_RETURN
;
char
*
argStr
=
cJSON_PrintUnformatted
(
arg
);
argStr
=
cJSON_PrintUnformatted
(
arg
);
kk_scene_insert_scene_invokeService
(
type
->
valuestring
,
identifier
->
valuestring
,
argStr
,
sceneId
);
free
(
argStr
);
}
else
{
propertySetType
=
1
;
cJSON
*
propertyName
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYNAME
);
propertyName
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYNAME
);
if
(
propertyName
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
propertyValue
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYVALUE
);
propertyValue
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYVALUE
);
if
(
propertyValue
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
productType
=
cJSON_GetObjectItem
(
item
,
MSG_PRODUCT_TYPE_STR
);
productType
=
cJSON_GetObjectItem
(
item
,
MSG_PRODUCT_TYPE_STR
);
if
(
productType
!=
NULL
){
kk_subDev_set_action_by_productType
(
productType
->
valuestring
,
sceneId
,
propertyName
->
valuestring
,
propertyValue
->
valuestring
,
type
->
valuestring
);
}
else
{
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
item
,
MSG_DEVICE_CODE_STR
);
deviceCode
=
cJSON_GetObjectItem
(
item
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
)
return
FAIL_RETURN
;
cJSON
*
epNum
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_EPNUM
);
epNum
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_EPNUM
);
if
(
epNum
==
NULL
){
epN
um
=
1
;
iepn
um
=
1
;
}
else
{
epN
um
=
epNum
->
valueint
;
iepn
um
=
epNum
->
valueint
;
}
cJSON
*
delay
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_DELAY
);
delay
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_DELAY
);
if
(
delay
==
NULL
)
return
FAIL_RETURN
;
delay
=
delay
->
valueint
;
int
i
delay
=
delay
->
valueint
;
res
=
dm_mgr_get_device_by_devicecode
(
deviceCode
->
valuestring
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
item
=
item
->
next
;
...
...
@@ -920,13 +954,13 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
memcpy
(
info
.
deviceCode
,
node
->
deviceCode
,
strlen
(
node
->
deviceCode
));
memcpy
(
info
.
propertyName
,
propertyName
->
valuestring
,
strlen
(
propertyName
->
valuestring
));
memcpy
(
info
.
propertyValue
,
propertyValue
->
valuestring
,
strlen
(
propertyValue
->
valuestring
));
info
.
epNum
=
epN
um
;
info
.
delay
=
delay
;
info
.
epNum
=
iepn
um
;
info
.
delay
=
i
delay
;
kk_scene_action_add
(
node
->
fatherDeviceCode
,
sceneId
,
info
);
}
res
=
kk_scene_insert_scene_action
(
type
->
valuestring
,
node
->
deviceCode
,
epN
um
,
propertyName
->
valuestring
,
propertyValue
->
valuestring
,
delay
,
sceneId
,
node
->
fatherDeviceCode
);
res
=
kk_scene_insert_scene_action
(
type
->
valuestring
,
node
->
deviceCode
,
iepn
um
,
propertyName
->
valuestring
,
propertyValue
->
valuestring
,
i
delay
,
sceneId
,
node
->
fatherDeviceCode
);
if
(
res
!=
SUCCESS_RETURN
){
INFO_PRINT
(
"kk_scene_insert_scene_action fail!!!
\n
"
);
return
res
;
...
...
@@ -955,7 +989,7 @@ int kk_scene_parse_scene_muticontrol(const cJSON* str,const char *sceneId,int is
cJSON
*
type
=
NULL
;
cJSON
*
deviceCode
=
NULL
;
cJSON
*
epNum
=
NULL
;
cJSON
*
arrayParam
=
NULL
;
//
cJSON *arrayParam = NULL;
dm_mgr_dev_node_t
*
node
=
NULL
;
if
(
str
==
NULL
){
ERROR_PRINT
(
"kk_scene_parse_scene_muticontrol failed
\n
"
);
...
...
@@ -1190,10 +1224,10 @@ static int kk_scene_update_starttime(kk_scene_timer_list_t *pInfo,time_t current
static
time_t
kk_scene_creat_new_starttime
(
time_t
starttime
,
time_t
current
)
{
int
hour
,
min
,
sec
;
int
hour
,
min
;
time_t
newTime
=
0
;
INFO_PRINT
(
"[%d]startTime :%d
\n
"
,
__LINE__
,
starttime
);
INFO_PRINT
(
"[%d]startTime :%
l
d
\n
"
,
__LINE__
,
starttime
);
hour
=
starttime
/
3600
;
min
=
starttime
%
3600
/
60
;
...
...
@@ -1219,7 +1253,6 @@ static time_t kk_scene_creat_new_starttime(time_t starttime,time_t current)
static
time_t
kk_scene_creat_timer_starttime
(
int
week
,
int
starttime
,
time_t
current
)
{
int
hour
,
min
,
sec
;
time_t
newTime
=
0
;
char
curWeek
=
0
;
int
startNew
=
0
;
...
...
@@ -1227,7 +1260,7 @@ static time_t kk_scene_creat_timer_starttime(int week,int starttime,time_t curre
curWeek
=
kk_scene_date_to_week
(
current
);
startNew
=
starttime
+
g_timezone
*
3600
;
startNew
=
(
startNew
-
86400
)
>=
0
?
(
startNew
-
86400
)
:
startNew
;
INFO_PRINT
(
"kk_scene_creat_timer_starttime:%
l
d
\n
"
,
startNew
);
INFO_PRINT
(
"kk_scene_creat_timer_starttime:%d
\n
"
,
startNew
);
/*today is not repeat day*/
if
((
week
>
0
)
&&
(
!
(
week
&
(
1
<<
(
curWeek
-
1
)))))
...
...
@@ -1242,6 +1275,8 @@ static time_t kk_scene_creat_timer_starttime(int week,int starttime,time_t curre
if
(
curWeek
&
week
){
newTime
=
current
+
86400
*
i
;
return
kk_scene_creat_new_starttime
(
startNew
,
newTime
);
}
else
{
return
kk_scene_creat_new_starttime
(
startNew
,
current
);
}
}
}
...
...
@@ -1249,6 +1284,7 @@ static time_t kk_scene_creat_timer_starttime(int week,int starttime,time_t curre
{
return
kk_scene_creat_new_starttime
(
startNew
,
current
);
}
}
/************************************************************
...
...
@@ -1266,12 +1302,10 @@ int kk_scene_check_trigger_condition(const char *sceneId)
char
*
identifier
=
NULL
;
char
*
compareType
=
NULL
;
char
*
compareValue
=
NULL
;
int
propertyValueType
=
0
;
int
conditionFlag
=
0
;
int
sceneType
=
0
,
isEnable
=
0
;
sqlite3_stmt
*
stmt
;
char
currentValue
[
64
]
=
{
0
};
dm_mgr_dev_node_t
*
node
=
NULL
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
res
=
kk_scene_get_scene_info
(
sceneId
,
&
sceneType
,
&
isEnable
);
if
(
res
!=
SUCCESS_RETURN
||
isEnable
!=
1
){
...
...
@@ -1283,10 +1317,10 @@ int kk_scene_check_trigger_condition(const char *sceneId)
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
conditionFlag
=
1
;
pdeviceCode
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_DEVICECODE
);
identifier
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_PROPERTYNAME
);
compareType
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
compareValue
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
pdeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_DEVICECODE
);
identifier
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_PROPERTYNAME
);
compareType
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
compareValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
kk_property_db_get_value_directly
(
pdeviceCode
,
identifier
,
currentValue
);
INFO_PRINT
(
"currentValue:%s
\n
"
,
currentValue
);
...
...
@@ -1321,7 +1355,7 @@ int kk_scene_check_condition(const char *sceneId)
char
curWeek
=
0
;
char
repeatday
=
0
;
time_t
startTime
=
0
,
startTime_m
=
0
;
time_t
endTime
=
0
,
endTime_m
=
0
;
time_t
endTime
=
0
;
int
duration
=
0
;
int
crossDay
=
0
;
int
conditionFlag
=
0
;
...
...
@@ -1342,7 +1376,7 @@ int kk_scene_check_condition(const char *sceneId)
startTime
=
(
startTime
-
86400
)
>=
0
?
(
startTime
-
86400
)
:
startTime
;
endTime
=
endTime
+
g_timezone
*
3600
;
endTime
=
(
endTime
-
86400
)
>=
0
?
(
endTime
-
86400
)
:
endTime
;
INFO_PRINT
(
"[endTime:%
d][startTime:%
d]
\n
"
,
endTime
,
startTime
);
INFO_PRINT
(
"[endTime:%
ld][startTime:%l
d]
\n
"
,
endTime
,
startTime
);
if
(
endTime
<
startTime
){
duration
=
86400
-
(
startTime
-
endTime
);
crossDay
=
1
;
...
...
@@ -1618,13 +1652,12 @@ static int kk_scene_start_action(const char *deviceCode,const char *propertyName
INFO_PRINT
(
"[%s][%d]kk_scene_start_action called
\n
"
,
__FUNCTION__
,
__LINE__
);
dm_mgr_dev_node_t
*
node
=
NULL
;
kk_scene_action_info_t
*
actionInfo
=
NULL
;
kk_scene_ctx_t
*
ctx
=
_kk_scene_get_ctx
();
if
(
deviceCode
==
NULL
||
propertyName
==
NULL
||
valueS
==
NULL
){
ERROR_PRINT
(
"[%d]kk_scene_send_action fail!!!
\n
"
,
__LINE__
);
return
INVALID_PARAMETER
;
}
res
=
dm_mgr_get_device_by_devicecode
(
deviceCode
,
&
node
);
res
=
dm_mgr_get_device_by_devicecode
(
(
char
*
)
deviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
...
...
@@ -1683,7 +1716,7 @@ int kk_scene_execute_action(const char* sceneId,char *msgId)
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
next:
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
gwdeviceCode
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_GWDEVICECODE
);
gwdeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_GWDEVICECODE
);
if
(
kk_subDev_check_scene_support
(
gwdeviceCode
)
==
1
){
for
(
idx
=
0
;
idx
<
num
;
idx
++
){
if
(
!
strcmp
(
gwdevice
[
idx
],
gwdeviceCode
)){
...
...
@@ -1700,9 +1733,9 @@ next:
free
(
out
);
}
else
{
deviceCode
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_DEVICECODE
);
propertyName
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYNAME
);
propertyValue
=
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYVALUE
);
deviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_DEVICECODE
);
propertyName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYNAME
);
propertyValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_PROPERTYVALUE
);
delay
=
sqlite3_column_int
(
stmt
,
DB_SCENEACTION_DELAY
);
res
=
kk_scene_start_action
(
deviceCode
,
propertyName
,
propertyValue
,
delay
);
}
...
...
@@ -1773,7 +1806,7 @@ static int kk_scene_embed_find(const char *sceneId)
INFO_PRINT
(
"kk_scene_embed_find:%s
\n
"
,
sceneId
);
find
=
1
;
delay
=
sqlite3_column_int
(
stmt
,
DB_SCENEEMBED_WEEK
);
executeSceneId
=
sqlite3_column_text
(
stmt
,
DB_SCENEEMBED_EXECUTESCENEID
);
executeSceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEEMBED_EXECUTESCENEID
);
/*如果有延时,加入到队列*/
if
(
delay
>
0
){
kk_scene_push_embed_list
(
delay
,
executeSceneId
);
...
...
@@ -1837,10 +1870,10 @@ static int kk_scene_invokeService_find(const char *sceneId)
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
find
=
1
;
INFO_PRINT
(
"kk_scene_invokeService_find:%s
\n
"
,
sceneId
);
identifier
=
sqlite3_column_text
(
stmt
,
DB_SCENEINVOKESERVICE_IDENTIFIER
);
identifier
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINVOKESERVICE_IDENTIFIER
);
//场景使能控制
if
(
!
strcmp
(
identifier
,
MSG_SCENE_ENABLESCENE
)){
args
=
sqlite3_column_text
(
stmt
,
DB_SCENEINVOKESERVICE_args
);
args
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEINVOKESERVICE_args
);
kk_scene_enableScene_handle
(
args
);
break
;
}
...
...
@@ -1861,7 +1894,6 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
{
int
res
=
FAIL_RETURN
;
char
*
sqlCmd
=
NULL
;
char
*
zErrMsg
=
0
;
char
*
sceneId
=
NULL
;
char
*
identifier
=
NULL
;
char
*
compareType
=
NULL
;
...
...
@@ -1875,10 +1907,10 @@ int kk_scene_query_trigger_info(const char *deviceCode,cJSON *param)
sqlCmd
=
sqlite3_mprintf
(
"select * from SceneTriggerInfo WHERE deviceCode= '%s'"
,
deviceCode
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
sceneId
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_SCENEID
);
identifier
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_PROPERTYNAME
);
compareType
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
compareValue
=
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
sceneId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_SCENEID
);
identifier
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_PROPERTYNAME
);
compareType
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPARETYPE
);
compareValue
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENETRIGGER_COMPAREVALUE
);
isAnd
=
sqlite3_column_int
(
stmt
,
DB_SCENETRIGGER_ISAND
);
res
=
kk_scene_get_scene_info
(
sceneId
,
&
sceneType
,
&
isEnable
);
if
(
res
==
SUCCESS_RETURN
&&
isEnable
&&
isAnd
==
0
){
...
...
@@ -1940,7 +1972,7 @@ int kk_scene_execute_scene(const char *sceneId,const char *msgId)
//res = kk_scene_check_condition(sceneId);
//if(res == SUCCESS_RETURN){
_kk_scene_lock
();
res
=
kk_scene_execute_action
(
sceneId
,
msgId
);
res
=
kk_scene_execute_action
(
sceneId
,
(
char
*
)
msgId
);
_kk_scene_unlock
();
//}
}
...
...
midware/midware/scene/kk_scene_handle.h
View file @
ab8689d7
...
...
@@ -72,5 +72,15 @@ int kk_scene_execute_action(const char* sceneId,char *msgId);
int
kk_scene_check_condition
(
const
char
*
sceneId
);
int
kk_scene_check_trigger_condition
(
const
char
*
sceneId
);
int
kk_scene_get_scene_info
(
const
char
*
sceneId
,
int
*
sceneType
,
int
*
enable
);
void
kk_scene_remove_timer_info
(
char
*
sceneId
,
int
lockflag
);
kk_scene_ctx_t
*
_kk_scene_get_ctx
(
void
);
void
_kk_scene_lock
(
void
);
void
_kk_scene_unlock
(
void
);
int
kk_scene_parse_addscene
(
const
cJSON
*
args
,
char
*
sceneId
,
int
isUpdate
,
const
char
*
msgId
);
kk_tsl_t
*
kk_scene_shadow
(
void
);
int
kk_scene_parse_updatescene
(
const
cJSON
*
arg
,
char
*
sceneId
);
int
kk_scene_parse_deletescene
(
char
*
sceneId
);
int
kk_scene_delete_send_to_gw
(
const
char
*
sceneId
);
#endif
midware/midware/timer/kk_timer_handle.c
View file @
ab8689d7
...
...
@@ -3,6 +3,7 @@
#include "kk_dm_mng.h"
#include "sqlite3.h"
#include "kk_log.h"
#include "kk_hal.h"
#include "kk_timer_handle.h"
//#define KK_AREA_DB_FILE "kk_area.db"
...
...
@@ -66,7 +67,7 @@ static void _kk_timer_unlock(void)
void
*
kk_timer_yield
(
void
*
args
)
{
uint64_t
current_time
=
0
;
kk_timer_info_t
*
ptr
=
NULL
,
*
ptemp
=
NULL
;
kk_timer_info_t
*
ptr
=
NULL
;
while
(
1
)
{
current_time
=
HAL_GetTime
();
_kk_timer_lock
();
...
...
@@ -135,8 +136,6 @@ int kk_service_get_array_size(kk_tsl_t *shadow)
int
kk_service_localtimer_set
(
kk_tsl_t
*
shadow
,
const
char
*
timer
,
int
isEnable
,
int
isValid
,
int
TimezoneOffset
,
const
char
*
Targets
,
int
size
)
{
kk_timer_ctx_t
*
ctx
=
_kk_timer_get_ctx
();
int
res
=
0
;
int
index
=
0
;
char
identifier_name
[
256
]
=
{
0
};
if
(
shadow
==
NULL
){
return
INVALID_PARAMETER
;
...
...
@@ -175,8 +174,6 @@ int kk_service_localtimer_set(kk_tsl_t *shadow,const char *timer,int isEnable,in
int
kk_service_setCountDown_set
(
kk_tsl_t
*
shadow
,
int
delaytime
,
int
CurrentTime
,
int
isEnable
,
int
isValid
,
const
char
*
Targets
,
int
size
)
{
kk_timer_ctx_t
*
ctx
=
_kk_timer_get_ctx
();
int
res
=
0
;
int
index
=
0
;
char
identifier_name
[
256
]
=
{
0
};
if
(
shadow
==
NULL
){
return
INVALID_PARAMETER
;
...
...
midware/tsl/tsl_handle/kk_tsl_api.c
View file @
ab8689d7
...
...
@@ -370,8 +370,7 @@ static int _kk_msg_set_object(kk_msg_set_type_t type, kk_tsl_t *dev_shadow, char
int
_kk_msg_property_set
(
kk_tsl_t
*
dev_shadow
,
kk_msg_request_payload_t
*
request
)
{
int
res
=
0
,
message_len
=
0
;
char
*
message
=
NULL
;
int
res
=
0
;
lite_cjson_t
lite
;
if
(
request
==
NULL
)
{
...
...
@@ -998,7 +997,6 @@ int kk_tsl_get_value(kk_tsl_get_t method_get, kk_tsl_t * dev_shadow, const char
char
**
value_str
)
{
int
res
=
0
;
kk_tsl_api_ctx_t
*
kk_tsl_api_ctx
=
_kk_tsl_api_get_ctx
();
if
(
identifier
==
NULL
||
(
value
==
NULL
&&
value_str
==
NULL
))
{
ERROR_PRINT
(
"Invalid Parameter"
);
...
...
@@ -1052,7 +1050,6 @@ int kk_tsl_set_value(kk_tsl_set_t set, kk_tsl_t * dev_shadow, const char *identi
int
index
=
0
;
kk_tsl_event_t
*
property
=
NULL
;
char
*
e_identifier
=
NULL
;
kk_tsl_api_ctx_t
*
kk_tsl_api_ctx
=
_kk_tsl_api_get_ctx
();
if
(
identifier
==
NULL
||
(
value
==
NULL
&&
value_str
==
NULL
))
{
ERROR_PRINT
(
"Invalid Parameter"
);
...
...
@@ -1142,7 +1139,7 @@ int kk_msg_uri_parse_pkdn(_IN_ char *uri, _IN_ int uri_len, _IN_ int start_deli,
int
kk_tsl_property_set_by_shadow
(
kk_tsl_t
*
dev_shadow
,
const
char
*
payload
,
unsigned
int
payload_len
)
{
kk_msg_request_payload_t
request
;
int
res
=
0
,
devid
=
0
;
int
res
=
0
;
memset
(
&
request
,
0
,
sizeof
(
kk_msg_request_payload_t
));
...
...
@@ -1227,7 +1224,6 @@ static int kk_tsl_post_property_start(_IN_ kk_tsl_t * dev_shadow, _OU_ void **ha
int
kk_tsl_get_property_number
(
_IN_
kk_tsl_t
*
shadow
,
_OU_
int
*
number
)
{
int
res
=
0
;
int
index
=
0
;
kk_tsl_event_t
*
property
=
NULL
;
if
(
shadow
==
NULL
||
number
==
NULL
)
{
...
...
@@ -1250,7 +1246,6 @@ static int _kk_tsl_post_property_add(_IN_ void *handle, _IN_ char *identifier, _
{
int
res
=
0
;
dm_api_property_t
*
dapi_property
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
if
(
handle
==
NULL
||
identifier
==
NULL
||
identifier_len
<=
0
)
{
return
INVALID_PARAMETER
;
...
...
@@ -1314,7 +1309,6 @@ int kk_tsl_post_property_add(_IN_ void *handle, _IN_ char *identifier, _IN_ int
}
static
char
*
kk_tsl_post_property_end
(
_IN_
void
*
handle
)
{
int
res
=
0
;
char
*
payload
=
NULL
;
dm_api_property_t
*
dapi_property
=
NULL
;
...
...
@@ -1339,9 +1333,8 @@ static char* kk_tsl_post_property_end(_IN_ void *handle)
char
*
kk_tsl_get_post_property_str
(
kk_tsl_t
*
dev_shadow
,
const
char
*
property_identifier
)
{
int
res
=
0
,
msgid
=
0
,
property_identifier_len
=
0
,
post_property_reply
=
0
;
int
res
=
0
,
property_identifier_len
=
0
;
void
*
property_handle
=
NULL
;
kk_tsl_api_ctx_t
*
kk_tsl_api_ctx
=
_kk_tsl_api_get_ctx
();
_kk_tsl_api_lock
();
res
=
kk_tsl_post_property_start
(
dev_shadow
,
&
property_handle
);
...
...
@@ -1396,8 +1389,6 @@ static int _kk_tsl_get_event_by_identifier(_IN_ kk_tsl_t *shadow, _IN_ char *ide
int
kk_tsl_get_event_by_identifier
(
_IN_
kk_tsl_t
*
dev_shadow
,
_IN_
char
*
identifier
,
_OU_
void
**
event
)
{
int
res
=
0
;
if
(
dev_shadow
==
NULL
||
identifier
==
NULL
||
event
==
NULL
||
*
event
!=
NULL
)
{
return
INVALID_PARAMETER
;
}
...
...
@@ -1429,8 +1420,6 @@ static int _kk_tsl_get_service_by_identifier(_IN_ kk_tsl_t *shadow, _IN_ char *i
int
kk_tsl_get_service_by_identifier
(
_IN_
kk_tsl_t
*
dev_shadow
,
_IN_
char
*
identifier
,
_OU_
void
**
service
)
{
int
res
=
0
;
if
(
dev_shadow
==
NULL
||
identifier
==
NULL
||
service
==
NULL
||
*
service
!=
NULL
)
{
return
INVALID_PARAMETER
;
}
...
...
midware/tsl/tsl_handle/kk_tsl_api.h
View file @
ab8689d7
...
...
@@ -95,4 +95,9 @@ int dm_tsl_set_service_input_output_value(_IN_ kk_tsl_data_target_e type, _IN_ k
int
dm_tsl_set_property_value
(
_IN_
kk_tsl_t
*
shadow
,
_IN_
char
*
key
,
_IN_
int
key_len
,
_IN_
void
*
value
,
_IN_
int
value_len
);
int
kk_tsl_get_data_type
(
_IN_
void
*
data
,
_OU_
kk_tsl_data_type_e
*
type
);
int
kk_tsl_get_property_type
(
_IN_
kk_tsl_t
*
dev_shadow
,
_IN_
char
*
key
);
int
kk_tsl_get_event_by_identifier
(
_IN_
kk_tsl_t
*
dev_shadow
,
_IN_
char
*
identifier
,
_OU_
void
**
event
);
int
kk_tsl_get_event_method
(
_IN_
void
*
event
,
_OU_
char
**
method
);
int
kk_tsl_get_service_by_identifier
(
_IN_
kk_tsl_t
*
dev_shadow
,
_IN_
char
*
identifier
,
_OU_
void
**
service
);
int
kk_tsl_get_service_method
(
_IN_
void
*
service
,
_OU_
char
**
method
);
#endif
midware/tsl/tsl_handle/kk_tsl_common.h
View file @
ab8689d7
...
...
@@ -180,5 +180,9 @@ typedef struct {
int
service_number
;
kk_tsl_service_t
*
services
;
//service array, type is dm_shw_service_t
}
kk_tsl_t
;
void
kk_tsl_datavalue_free
(
kk_tsl_data_value_t
*
data_value
);
int
kk_tsl_get_property_value_ex
(
_IN_
kk_tsl_t
*
shadow
,
_IN_
char
*
key
,
_IN_
int
key_len
,
_OU_
void
*
value
);
int
kk_tsl_get_event_oput_value
(
_IN_
kk_tsl_t
*
shadow
,
_IN_
char
*
key
,
_IN_
int
key_len
,
_IN_
void
*
value
);
int
kk_tsl_get_service_input_output_value
(
_IN_
kk_tsl_data_target_e
type
,
_IN_
kk_tsl_t
*
shadow
,
_IN_
char
*
key
,
_IN_
int
key_len
,
_IN_
void
*
value
);
#endif
midware/tsl/tsl_handle/kk_tsl_parse.c
View file @
ab8689d7
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "kk_utils.h"
#include "kk_log.h"
#include "kk_tsl_parse.h"
...
...
@@ -793,10 +793,6 @@ static int _kk_tsl_service_parse_get_input_identifier(char *str,int count,kk_tsl
static
int
_kk_tsl_service_inputdatas_get_parse
(
_IN_
kk_tsl_t
*
shadow
,
_IN_
kk_tsl_service_t
*
service
,
_IN_
lite_cjson_t
*
root
)
{
int
res
=
0
,
index
=
0
;
lite_cjson_t
lite_item
;
kk_tsl_data_t
*
input_data
=
NULL
;
//printf("input Number: %d\n", service->input_data_number);
if
(
service
->
input_data_number
==
0
)
{
return
SUCCESS_RETURN
;
...
...
midware/tsl/tsl_handle/kk_utils.c
View file @
ab8689d7
#include <pthread.h>
#include "kk_utils.h"
#include "lite-cjson.h"
int
kk_utils_copy
(
_IN_
void
*
input
,
_IN_
int
input_len
,
_OU_
void
**
output
,
_IN_
int
output_len
)
...
...
@@ -297,7 +298,7 @@ int kk_utils_json_parse(_IN_ const char *payload, _IN_ int payload_len, _IN_ int
}
if
(
lite
->
type
!=
cJSON_Object
)
{
dm_log_err
(
"lite->type != cJSON_Object, %d"
,
lite
->
type
);
printf
(
"lite->type != cJSON_Object, %d"
,
lite
->
type
);
}
memset
(
lite_item
,
0
,
sizeof
(
lite_cjson_t
));
...
...
midware/tsl/tsl_handle/kk_utils.h
View file @
ab8689d7
#ifndef __KK_UTILS_H__
#define __KK_UTILS_H__
#include "kk_tsl_common.h"
#include "lite-cjson.h"
int
kk_utils_copy
(
_IN_
void
*
input
,
_IN_
int
input_len
,
_OU_
void
**
output
,
_IN_
int
output_len
);
int
kk_utils_strarr_index
(
_IN_
char
*
input
,
_IN_
int
input_len
,
_OU_
int
*
partial_input_len
,
_OU_
int
*
array_input_len
,
_OU_
int
*
array_index
);
...
...
@@ -13,6 +13,8 @@ void kk_MutexLock(void *mutex);
void
kk_MutexUnLock
(
void
*
mutex
);
void
kk_MutexDestroy
(
void
*
mutex
);
int
kk_utils_itoa_direct
(
_IN_
int
input
,
_OU_
char
**
output
);
int
kk_utils_ftoa_direct
(
_IN_
double
input
,
_OU_
char
**
output
);
int
kk_utils_json_parse
(
_IN_
const
char
*
payload
,
_IN_
int
payload_len
,
_IN_
int
type
,
_OU_
lite_cjson_t
*
lite
);
int
kk_utils_json_object_item
(
_IN_
lite_cjson_t
*
lite
,
_IN_
const
char
*
key
,
_IN_
int
key_len
,
_IN_
int
type
,
_OU_
lite_cjson_t
*
lite_item
);
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment