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
96769efb
Commit
96769efb
authored
Oct 31, 2020
by
chen.weican
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】增加内场景的设置
【提交人】陈伟灿
parent
6d57df34
Changes
18
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
940 additions
and
303 deletions
+940
-303
common/api/com_api.h
common/api/com_api.h
+2
-4
common/hal/HAL_OS_linux.c
common/hal/HAL_OS_linux.c
+5
-7
midware/midware/area/kk_area_handle.c
midware/midware/area/kk_area_handle.c
+1
-1
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+119
-62
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
+172
-10
midware/midware/dm/kk_dm_msg.h
midware/midware/dm/kk_dm_msg.h
+6
-0
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+45
-106
midware/midware/dm/kk_property_db.c
midware/midware/dm/kk_property_db.c
+1
-1
midware/midware/dm/kk_sub_db.c
midware/midware/dm/kk_sub_db.c
+109
-6
midware/midware/midware.c
midware/midware/midware.c
+48
-23
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+389
-66
midware/midware/scene/kk_scene_handle.h
midware/midware/scene/kk_scene_handle.h
+19
-0
midware/midware/utils/infra_sha256.c
midware/midware/utils/infra_sha256.c
+2
-2
midware/midware/utils/infra_timer.c
midware/midware/utils/infra_timer.c
+1
-2
midware/tsl/tsl_handle/kk_tsl_common.h
midware/tsl/tsl_handle/kk_tsl_common.h
+3
-0
midware/tsl/tsl_handle/kk_tsl_func.c
midware/tsl/tsl_handle/kk_tsl_func.c
+1
-1
midware/tsl/tsl_handle/kk_tsl_parse.c
midware/tsl/tsl_handle/kk_tsl_parse.c
+15
-11
No files found.
common/api/com_api.h
View file @
96769efb
...
...
@@ -93,7 +93,8 @@ typedef enum {
#define MSG_KEYMODIFY_NOTIFICATION "KeyModifyNotification"
/************************SCENE RELATION*************************/
#define MSG_SCENE_ARGS "args"
#define MSG_SCENE_SUPPORT "sceneSupport"
#define MSG_SCENE_MSGID "msgId"
#define MSG_SCENE_NAME "name"
#define MSG_SCENE_SCENCTYPE "sceneType"
#define MSG_SCENE_ENABLE "enable"
...
...
@@ -123,9 +124,6 @@ typedef enum {
typedef
void
ipc_cb
(
void
*
data
,
int
len
,
char
*
chalMark
);
int
kk_ipc_init
(
ipc_type
type
,
ipc_cb
cb
,
char
*
chalMark
,
char
*
ip
);
int
kk_ipc_deinit
(
ipc_type
type
);
...
...
common/hal/HAL_OS_linux.c
View file @
96769efb
...
...
@@ -133,16 +133,14 @@ uint64_t HAL_GetTime(void)
}
uint64_t
HAL_GetTimeM
s
(
char
*
outStr
)
time_t
HAL_GetTime_
s
(
char
*
outStr
)
{
uint64_t
time_ms
;
struct
timeval
tv
;
time_t
t
;
t
=
time
(
NULL
);
gettimeofday
(
&
tv
,
NULL
);
time_ms
=
((
uint64_t
)
tv
.
tv_sec
*
(
uint64_t
)
1000
)
+
(
tv
.
tv_usec
/
1000
);
sprintf
(
outStr
,
"%lld"
,
time_ms
);
sprintf
(
outStr
,
"%d"
,
t
);
return
t
ime_ms
;
return
t
;
}
...
...
midware/midware/area/kk_area_handle.c
View file @
96769efb
...
...
@@ -128,7 +128,7 @@ int kk_room_add(const char *name,const char *roomId)
values ('%s','%s');"
;
_kk_area_lock
();
ctx
->
roomNum
++
;
HAL_GetTime
M
s
(
roomId
);
HAL_GetTime
_
s
(
roomId
);
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
name
,
roomId
);
res
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
...
...
midware/midware/dm/kk_dm_mng.c
View file @
96769efb
This diff is collapsed.
Click to expand it.
midware/midware/dm/kk_dm_mng.h
View file @
96769efb
...
...
@@ -17,6 +17,7 @@
#define KK_DM_GW_DEVICE_PRODUCT_CODE "2"
#define KK_DM_DEVICE_CCU_DEVICEID (0x00)
#define MSG_MAX_LEN (64)
typedef
struct
{
int
devid
;
...
...
@@ -40,7 +41,7 @@ typedef struct {
}
dm_mgr_ctx
;
typedef
struct
{
int
msgid
;
char
msgid
[
MSG_MAX_LEN
]
;
int
devid
;
//const char *service_prefix;
//const char *service_name;
...
...
midware/midware/dm/kk_dm_msg.c
View file @
96769efb
This diff is collapsed.
Click to expand it.
midware/midware/dm/kk_dm_msg.h
View file @
96769efb
...
...
@@ -73,6 +73,12 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_DELETESCENC "/thing/service/deleteScene"
#define KK_THING_SERVICE_UPDATESCENC "/thing/service/updateScene"
#define KK_THING_SERVICE_PROPERTY_GET_REPLY "/thing/service/property/get_reply"
#define KK_THING_SERVICE_EXECUTESCENE "/thing/service/executeScene"
#define KK_THING_METHOD_DELETESCENC "thing.service.deleteScene"
#define KK_THING_METHOD_UPDATESCENC "thing.service.updateScene"
#define KK_THING_METHOD_EXECUTESCENE "thing.service.executeScene"
#define KK_THING_METHOD_ADDSCENC "thing.service.addScene"
#define KK_THING_EVENT_MESSAGE "/thing/event/"
#define KK_THING_EVENT_POST "/post"
...
...
midware/midware/dm/kk_linkkit.c
View file @
96769efb
This diff is collapsed.
Click to expand it.
midware/midware/dm/kk_property_db.c
View file @
96769efb
...
...
@@ -163,7 +163,7 @@ int kk_property_db_insert(const char *deviceCode,const char *identifier,kk_tsl_d
if
(
_kk_check_property_exist
(
deviceCode
,
identifier
)
==
1
)
{
WARNING_PRINT
(
"[%s][%d] DATA ALREADY EXIST!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
//
WARNING_PRINT("[%s][%d] DATA ALREADY EXIST!!!\n",__FUNCTION__,__LINE__);
return
SUCCESS_RETURN
;
}
_kk_property_db_lock
();
...
...
midware/midware/dm/kk_sub_db.c
View file @
96769efb
...
...
@@ -3,7 +3,7 @@
#include "kk_tsl_api.h"
#include "kk_sub_db.h"
#include "kk_dm_mng.h"
#include "kk_scene_handle.h"
#include "sqlite3.h"
#include "kk_log.h"
...
...
@@ -25,7 +25,8 @@ typedef enum{
DB_AUTH
,
DB_DEVTYPE
,
DB_HEARTBEAT
,
DB_PRODUCTTYPE
DB_PRODUCTTYPE
,
DB_SCENESUPPORT
};
static
kk_subDb_ctx_t
s_kk_subDb_ctx
=
{
NULL
,
0
,
NULL
};
...
...
@@ -71,7 +72,8 @@ static int kk_subDev_db_Init(void)
isAuth INTEGER, \
devType INTEGER, \
heartbeat INTEGER,\
productType varchar(33))"
;
productType varchar(33),\
sceneSupport INTEGER)"
;
char
*
pcErr
;
...
...
@@ -187,8 +189,8 @@ static int _kk_check_subDev_exist(const char* deviceCode)
int
kk_subDev_insert_db
(
int
devType
,
char
productCode
[
PRODUCT_CODE_MAXLEN
],
\
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
char
fatherDeviceCode
[
DEVICE_CODE_MAXLEN
],
char
mac
[
DEVICE_MAC_MAXLEN
],
char
version
[
DEVICE_VERSION_MAXLEN
],
int
heartbeat
)
{
const
char
*
insertCmd
=
"insert into SubDeviceInfo (idx,isOffline,productCode,deviceCode,mac,fatherDeviceCode,version,isAuth,devType,heartbeat) \
values ('%d','%d', '%s','%s','%s','%s','%s','%d','%d','%d');"
;
const
char
*
insertCmd
=
"insert into SubDeviceInfo (idx,isOffline,productCode,deviceCode,mac,fatherDeviceCode,version,isAuth,devType,heartbeat
,sceneSupport
) \
values ('%d','%d', '%s','%s','%s','%s','%s','%d','%d','%d'
,'%d'
);"
;
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
...
...
@@ -201,7 +203,7 @@ int kk_subDev_insert_db(int devType,char productCode[PRODUCT_CODE_MAXLEN], \
return
SUCCESS_RETURN
;
}
_kk_subDb_lock
();
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
ctx
->
subDevNum
,
0
,
productCode
,
deviceCode
,
mac
,
fatherDeviceCode
,
version
,
0
,
devType
,
heartbeat
);
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
ctx
->
subDevNum
,
0
,
productCode
,
deviceCode
,
mac
,
fatherDeviceCode
,
version
,
0
,
devType
,
heartbeat
,
0
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
...
...
@@ -307,6 +309,29 @@ int kk_subDev_update_auth(int isAuth,const char *deviceCode)
return
SUCCESS_RETURN
;
}
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
();
_kk_subDb_lock
();
sqlCmd
=
sqlite3_mprintf
(
"UPDATE SubDeviceInfo SET sceneSupport=%d WHERE deviceCode= '%s'"
,
sceneSupport
,
deviceCode
);
INFO_PRINT
(
"kk_subDev_update_sceneSupport sqlCmd:%s
\n
"
,
sqlCmd
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
ERROR_PRINT
(
"SQL error: %s
\n
"
,
zErrMsg
);
sqlite3_free
(
zErrMsg
);
}
else
{
INFO_PRINT
(
"Table updata data successfully
\n
"
);
}
sqlite3_free
(
sqlCmd
);
_kk_subDb_unlock
();
return
SUCCESS_RETURN
;
}
int
kk_subDev_send_property_get_from_db
(
void
)
{
const
char
*
searchCmd
=
"select * from SubDeviceInfo;"
;
...
...
@@ -376,6 +401,84 @@ int kk_subDev_send_property_get(const char *fatherDeviceCode)
}
int
kk_subDev_check_scene_support
(
const
char
*
deviceCode
)
{
int
res
=
0
;
sqlite3_stmt
*
stmt
;
char
*
sqlCmd
=
NULL
;
char
*
pDeviceCode
=
NULL
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
const
char
*
searchCmd
=
"select * from SubDeviceInfo WHERE devType= '%d' and sceneSupport = '%d'"
;
if
(
deviceCode
==
NULL
){
ERROR_PRINT
(
"ERROR [%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
INVALID_PARAMETER
;
}
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
KK_DM_DEVICE_GATEWAY
,
1
);
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_DEVICECODE
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
))
{
return
1
;
}
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
return
0
;
}
int
kk_subDev_set_action_by_productType
(
const
char
*
productType
,
const
char
*
sceneId
,
const
char
*
propertyName
,
const
char
*
propertyValue
,
const
char
*
type
)
{
int
res
=
0
;
sqlite3_stmt
*
stmt
;
char
*
sqlCmd
=
NULL
;
char
*
pDeviceCode
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
const
char
*
searchCmd
=
"select * from SubDeviceInfo WHERE productType= '%s'"
;
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
productType
==
NULL
){
ERROR_PRINT
(
"ERROR [%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
INVALID_PARAMETER
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
productType
);
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_DEVICECODE
);
res
=
dm_mgr_get_device_by_devicecode
(
pDeviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
continue
;
}
printf
(
"[%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
if
(
kk_subDev_check_scene_support
(
node
->
fatherDeviceCode
)
==
1
){
kk_scene_action_detail_t
info
=
{
0
};
memcpy
(
info
.
deviceCode
,
node
->
deviceCode
,
strlen
(
node
->
deviceCode
));
memcpy
(
info
.
propertyName
,
propertyName
,
strlen
(
propertyName
));
memcpy
(
info
.
propertyValue
,
propertyValue
,
strlen
(
propertyValue
));
info
.
epNum
=
1
;
info
.
delay
=
0
;
kk_scene_action_add
(
node
->
fatherDeviceCode
,
sceneId
,
info
);
res
=
kk_scene_insert_scene_action
(
type
,
node
->
deviceCode
,
info
.
epNum
,
propertyName
,
propertyValue
,
info
.
delay
,
sceneId
,
node
->
fatherDeviceCode
);
if
(
res
!=
SUCCESS_RETURN
){
INFO_PRINT
(
"kk_subDev_set_action_by_productType fail!!!
\n
"
);
//return res;
continue
;
}
}
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
return
SUCCESS_RETURN
;
}
...
...
midware/midware/midware.c
View file @
96769efb
...
...
@@ -49,6 +49,7 @@ static int _kk_filter_to_plat(const char* msgtype)
for
(
i
=
0
;
i
<
num
;
i
++
){
if
(
strstr
(
msgtype
,
g_filerToPlatTable
[
i
]))
{
INFO_PRINT
(
"this msg do not send to platform!!!
\n
"
);
return
1
;
}
}
...
...
@@ -153,12 +154,13 @@ static int kk_property_set_data_check(cJSON * payload,const char *deviceCode){
}
}
}
else
if
(
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
){
value
=
propertyItem
->
valueint
;
if
(
value
<
property
->
data_value
.
mix
||
value
>
property
->
data_value
.
max
){
ERROR_PRINT
(
"ERROR ------------>value:%d,mix:%d,max:%d
\n
"
,
value
,
property
->
data_value
.
mix
,
property
->
data_value
.
max
);
return
INVALID_PARAMETER
;
}
}
else
if
(
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
){
value
=
propertyItem
->
valueint
;
if
(
value
<
property
->
data_value
.
mix
||
value
>
property
->
data_value
.
max
){
ERROR_PRINT
(
"ERROR ------------>value:%d,mix:%d,max:%d
\n
"
,
value
,
property
->
data_value
.
mix
,
property
->
data_value
.
max
);
return
INVALID_PARAMETER
;
}
}
else
if
(
property
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
){
if
(
strlen
(
propertyItem
->
valuestring
)
>
property
->
data_value
.
length
){
...
...
@@ -313,23 +315,19 @@ void kk_platMsg_handle(void* data, char* chalMark){
msgType
=
cJSON_GetObjectItem
(
info
,
MSG_TYPE_STR
);
info_dcode
=
cJSON_GetObjectItem
(
info
,
MSG_DEVICE_CODE_STR
);
if
(
msgType
==
NULL
||
info_dcode
==
NULL
){
ERROR_PRINT
(
"msgType info_dcode or jsonPay params are error
\n
"
);
goto
error
;
}
if
(
chalMark
!=
NULL
){
dm_mgr_update_timestamp_by_devicecode
(
chalMark
,
HAL_Uptimes
());
}
dm_mgr_update_timestamp_by_devicecode
(
info_dcode
->
valuestring
,
HAL_Uptimes
());
if
(
strcmp
(
msgType
->
valuestring
,
KK_THING_TOPO_ADD_MSG
)
==
0
){
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
proCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_PRODUCT_CODE_STR
);
devCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_DEVICE_CODE_STR
);
mac
=
cJSON_GetObjectItem
(
jsonPay
,
"mac"
);
...
...
@@ -343,6 +341,10 @@ void kk_platMsg_handle(void* data, char* chalMark){
char
ccu_deviceCode
[
DEVICE_CODE_MAXLEN
]
=
{
0
};
HAL_GetDevice_Code
(
ccu_deviceCode
);
kk_mid_subdev_add
(
KK_DM_DEVICE_GATEWAY
,
proCode
->
valuestring
,
devCode
->
valuestring
,
mac
->
valuestring
,
ccu_deviceCode
);
cJSON
*
sceneSupportStr
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_SCENE_SUPPORT
);
if
(
sceneSupportStr
!=
NULL
&&
sceneSupportStr
->
valueint
==
1
){
kk_subDev_update_sceneSupport
(
1
,
devCode
->
valuestring
);
}
}
else
{
kk_mid_subdev_add
(
KK_DM_DEVICE_SUBDEV
,
proCode
->
valuestring
,
devCode
->
valuestring
,
mac
->
valuestring
,
info_dcode
->
valuestring
);
}
...
...
@@ -352,7 +354,9 @@ void kk_platMsg_handle(void* data, char* chalMark){
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_BATCH_ADD_MSG
)
!=
NULL
){
kk_ipc_send
(
IPC_MID2APP
,
data
,
strlen
(
data
));
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
cJSON
*
devices
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_TOPO_CHANGE_DEVICES_STR
);
if
(
devices
==
NULL
)
goto
error
;
cJSON
*
item
=
devices
->
child
;
while
(
item
!=
NULL
){
char
*
deviceCode
=
cJSON_GetObjectItem
(
item
,
MSG_DEVICE_CODE_STR
)
->
valuestring
;
...
...
@@ -366,6 +370,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
}
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_PROPERTY_POST
)
!=
NULL
){
INFO_PRINT
(
"save property and send to cloud
\n
"
);
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
char
*
outstr
=
cJSON_Print
(
payload
);
dm_mgr_dev_node_t
*
search_node
=
NULL
;
dm_mgr_get_device_by_devicecode
(
info_dcode
->
valuestring
,
&
search_node
);
...
...
@@ -380,6 +385,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
}
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_DELETE_MSG
)
!=
NULL
){
INFO_PRINT
(
"kk_platMsg_handle data: handle delete
\n
"
);
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
devCode
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_DEVICE_CODE_STR
);
kk_ipc_send
(
IPC_MID2APP
,
data
,
strlen
(
data
)
+
1
);
dm_mgr_subdev_delete
(
devCode
->
valuestring
);
...
...
@@ -392,6 +398,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
char
tmpStr
[
128
]
=
{
0
};
cJSON
*
itemStr
=
NULL
;
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
res
=
dm_mgr_get_device_by_devicecode
(
info_dcode
->
valuestring
,
&
node
);
if
(
res
<
SUCCESS_RETURN
)
{
goto
error
;
...
...
@@ -408,7 +415,6 @@ void kk_platMsg_handle(void* data, char* chalMark){
eventItem
->
output_data_number
>
0
){
int
index
=
0
;
kk_tsl_data_t
*
itemData
=
NULL
;
for
(
index
=
0
;
index
<
eventItem
->
output_data_number
;
index
++
){
itemStr
=
cJSON_GetObjectItem
(
jsonPay
,
eventItem
->
identifier
);
itemData
=
eventItem
->
output_datas
+
index
;
...
...
@@ -416,7 +422,20 @@ void kk_platMsg_handle(void* data, char* chalMark){
memset
(
tmpStr
,
0x0
,
sizeof
(
tmpStr
));
sprintf
(
tmpStr
,
"%s.%s"
,
eventItem
->
identifier
,
itemData
->
identifier
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
itemStr
->
valueint
,
NULL
);
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_ENUM
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_BOOL
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
itemStr
->
valueint
,
NULL
);
}
else
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_FLOAT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DOUBLE
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
itemStr
->
valuedouble
,
NULL
);
}
else
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DATE
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
NULL
,
itemStr
->
valuestring
);
}
INFO_PRINT
(
"kk_platMsg_handle data: event post
\n
"
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
);
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
...
...
@@ -426,8 +445,20 @@ void kk_platMsg_handle(void* data, char* chalMark){
if
(
itemDataIdentifier
!=
NULL
){
memset
(
tmpStr
,
0x0
,
sizeof
(
tmpStr
));
sprintf
(
tmpStr
,
"%s.%s"
,
eventItem
->
identifier
,
itemData
->
identifier
);
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_INT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_ENUM
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_BOOL
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
itemDataIdentifier
->
valueint
,
NULL
);
}
else
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_FLOAT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DOUBLE
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
itemDataIdentifier
->
valuedouble
,
NULL
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
itemDataIdentifier
->
valueint
,
NULL
);
}
else
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DATE
){
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
NULL
,
itemDataIdentifier
->
valuestring
);
}
INFO_PRINT
(
"kk_platMsg_handle data: event post
\n
"
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
);
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
...
...
@@ -452,6 +483,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
else
if
(
strstr
(
msgType
->
valuestring
,
KK_THING_TOPO_BATCH_DELETE_MSG
)
!=
NULL
){
kk_ipc_send
(
IPC_MID2APP
,
data
,
strlen
(
data
));
jsonPay
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
jsonPay
==
NULL
)
goto
error
;
cJSON
*
devices
=
cJSON_GetObjectItem
(
jsonPay
,
MSG_TOPO_CHANGE_DEVICES_STR
);
cJSON
*
item
=
devices
->
child
;
while
(
item
!=
NULL
){
...
...
@@ -468,7 +500,7 @@ void kk_platMsg_handle(void* data, char* chalMark){
res
=
dm_mgr_get_device_by_devicecode
(
info_dcode
->
valuestring
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
return
;
goto
error
;
}
/*开机先获取网关属性,网关返回relay,置网关状态在线*/
if
(
node
->
dev_type
==
KK_DM_DEVICE_GATEWAY
){
...
...
@@ -514,13 +546,6 @@ void kk_platMsg_dispatch(void)
}
time_t
getSysTime
(){
time_t
t
;
t
=
time
(
NULL
);
return
t
;
}
typedef
struct
{
int
auto_add_subdev
;
int
master_devid
;
...
...
midware/midware/scene/kk_scene_handle.c
View file @
96769efb
This diff is collapsed.
Click to expand it.
midware/midware/scene/kk_scene_handle.h
View file @
96769efb
...
...
@@ -3,6 +3,25 @@
#include "kk_tsl_common.h"
typedef
struct
kk_scene_action_detail
{
char
deviceCode
[
DEVICE_CODE_MAXLEN
];
char
propertyName
[
DEVICE_PROPERTY_NAME_MAX
];
char
propertyValue
[
DEVICE_PROPERTY_VALUE_MAX
];
int
epNum
;
int
delay
;
}
kk_scene_action_detail_t
;
typedef
struct
kk_scene_action_info_ex
{
kk_scene_action_detail_t
info
;
struct
kk_scene_action_info_ex
*
next
;
}
kk_scene_action_info_ex_t
;
typedef
struct
kk_scene_action
{
char
gwdeviceCode
[
DEVICE_CODE_MAXLEN
];
char
sceneId
[
16
];
kk_scene_action_info_ex_t
*
actionInfo
;
struct
kk_scene_action
*
next
;
}
kk_scene_action_t
;
typedef
struct
{
...
...
midware/midware/utils/infra_sha256.c
View file @
96769efb
...
...
@@ -3,7 +3,7 @@
*/
#include "infra_config.h"
#ifdef INFRA_SHA256
#define INFRA_SHA256_SMALLER
...
...
@@ -317,5 +317,5 @@ void utils_hmac_sha256(const uint8_t *msg, uint32_t msg_len, const uint8_t *key,
utils_sha256_finish
(
&
context
,
output
);
/* finish up 2nd pass */
}
#endif
midware/midware/utils/infra_timer.c
View file @
96769efb
#include "infra_config.h"
#ifdef INFRA_TIMER
/*
*
*/
...
...
@@ -91,5 +90,5 @@ uint32_t utils_time_get_ms(void)
{
return
HAL_UptimeMs
();
}
#endif
midware/tsl/tsl_handle/kk_tsl_common.h
View file @
96769efb
...
...
@@ -25,6 +25,9 @@
#define DM_UTILS_UINT16_STRLEN (5)
#define DM_UTILS_UINT32_STRLEN (10)
#define DM_UTILS_UINT64_STRLEN (20)
#define DEVICE_PROPERTY_NAME_MAX (64+1)
#define DEVICE_PROPERTY_VALUE_MAX (64+1)
#define KK_TSL_KEY_SCHEMA "schema"
#define KK_TSL_KEY_LINK "link"
...
...
midware/tsl/tsl_handle/kk_tsl_func.c
View file @
96769efb
...
...
@@ -793,7 +793,7 @@ int dm_tls_set_event_output_value(_IN_ kk_tsl_t *shadow, _IN_ char *key, _IN_ in
return
FAIL_RETURN
;
}
printf
(
"Key: %.*s"
,
key_len
,
key
);
//
printf("Key: %.*s", key_len, key);
res
=
_kk_tsl_event_search
(
shadow
,
key
,
offset
,
&
event
);
if
(
res
!=
SUCCESS_RETURN
)
{
...
...
midware/tsl/tsl_handle/kk_tsl_parse.c
View file @
96769efb
...
...
@@ -3,6 +3,7 @@
#include <string.h>
#include "lite-cjson.h"
#include "kk_tsl_common.h"
#include "kk_log.h"
typedef
int
(
*
kk_tsl_data_parse
)(
_IN_
kk_tsl_data_value_t
*
data_value
,
_IN_
lite_cjson_t
*
root
);
...
...
@@ -470,7 +471,7 @@ static int _kk_tsl_properties_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *ro
return
SUCCESS_RETURN
;
}
printf
(
"Number: %d
"
,
lite_properties
.
size
);
INFO_PRINT
(
"property number: %d
\n
"
,
lite_properties
.
size
);
if
(
lite_properties
.
size
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -490,7 +491,7 @@ static int _kk_tsl_properties_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *ro
return
FAIL_RETURN
;
}
printf
(
"Index: %d
\n
"
,
index
);
//
printf("Index: %d\n", index);
_kk_tsl_property_parse
(
shadow
->
properties
+
index
,
&
lite_property
);
}
...
...
@@ -537,7 +538,7 @@ static int _kk_tsl_event_outputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_ev
lite_cjson_t
lite_item
;
kk_tsl_data_t
*
output_data
=
NULL
;
printf
(
"event outputdata Number: %d
\n
"
,
event
->
output_data_number
);
//
printf("event outputdata Number: %d\n", event->output_data_number);
if
(
event
->
output_data_number
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -558,7 +559,7 @@ static int _kk_tsl_event_outputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_ev
return
FAIL_RETURN
;
}
printf
(
"Index: %d
\n
"
,
index
);
//
printf("Index: %d\n", index);
_kk_tsl_event_outputdata_parse
(
shadow
,
output_data
,
&
lite_item
);
}
...
...
@@ -595,6 +596,7 @@ static int _dm_shw_event_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_event_t *event
if
(
res
!=
SUCCESS_RETURN
||
!
lite_cjson_is_array
(
&
lite_item
))
{
return
JSON_PARSE_FAILED
;
}
//INFO_PRINT("event output number: %d\n", lite_item.size);
event
->
output_data_number
=
lite_item
.
size
;
res
=
_kk_tsl_event_outputdatas_parse
(
shadow
,
event
,
&
lite_item
);
if
(
res
!=
SUCCESS_RETURN
)
{
...
...
@@ -618,8 +620,7 @@ static int _kk_tsl_events_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root)
}
else
{
return
SUCCESS_RETURN
;
}
printf
(
"
\n
event Number: %d
\n
"
,
lite_events
.
size
);
INFO_PRINT
(
"event Number: %d
\n
"
);
if
(
lite_events
.
size
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -788,7 +789,7 @@ static int _kk_tsl_service_inputdatas_get_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_t
lite_cjson_t
lite_item
;
kk_tsl_data_t
*
input_data
=
NULL
;
printf
(
"input Number: %d
\n
"
,
service
->
input_data_number
);
//
printf("input Number: %d\n", service->input_data_number);
if
(
service
->
input_data_number
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -810,7 +811,7 @@ static int _kk_tsl_service_inputdatas_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_s
lite_cjson_t
lite_item
;
kk_tsl_data_t
*
input_data
=
NULL
;
printf
(
"input Number: %d
\n
"
,
service
->
input_data_number
);
//
printf("input Number: %d\n", service->input_data_number);
if
(
service
->
input_data_number
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -874,6 +875,7 @@ static int _kk_tsl_service_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_service_t *s
memset
(
&
lite_item
,
0
,
sizeof
(
lite_cjson_t
));
res
=
lite_cjson_object_item
(
root
,
KK_TSL_KEY_OUTPUTDATA
,
strlen
(
KK_TSL_KEY_OUTPUTDATA
),
&
lite_item
);
if
(
res
==
SUCCESS_RETURN
&&
lite_cjson_is_array
(
&
lite_item
))
{
//INFO_PRINT("services output Number: %d\n", lite_item.size);
service
->
output_data_number
=
lite_item
.
size
;
res
=
_kk_tsl_service_outputdatas_parse
(
shadow
,
service
,
&
lite_item
);
if
(
res
!=
SUCCESS_RETURN
)
{
...
...
@@ -886,7 +888,7 @@ static int _kk_tsl_service_parse(_IN_ kk_tsl_t *shadow, _IN_ kk_tsl_service_t *s
res
=
lite_cjson_object_item
(
root
,
KK_TSL_KEY_INPUTDATA
,
strlen
(
KK_TSL_KEY_INPUTDATA
),
&
lite_item
);
if
(
res
==
SUCCESS_RETURN
&&
lite_cjson_is_array
(
&
lite_item
))
{
service
->
input_data_number
=
lite_item
.
size
;
//INFO_PRINT("services input Number: %d\n", lite_item.size);
if
(
isGetService
&&
service
->
input_data_number
>
0
){
res
=
_kk_tsl_service_inputdatas_get_parse
(
shadow
,
service
,
&
lite_item
);
}
else
...
...
@@ -914,7 +916,7 @@ static int _kk_tsl_services_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root
return
SUCCESS_RETURN
;
}
printf
(
"_kk_tsl_services_parse
Number: %d
\n
"
,
lite_services
.
size
);
INFO_PRINT
(
"services
Number: %d
\n
"
,
lite_services
.
size
);
if
(
lite_services
.
size
==
0
)
{
return
SUCCESS_RETURN
;
}
...
...
@@ -936,7 +938,7 @@ static int _kk_tsl_services_parse(_IN_ kk_tsl_t *shadow, _IN_ lite_cjson_t *root
return
FAIL_RETURN
;
}
printf
(
" Index: %d
\n
"
,
index
);
//
printf(" Index: %d\n", index);
_kk_tsl_service_parse
(
shadow
,
service
,
&
lite_service
);
}
...
...
@@ -1669,6 +1671,7 @@ int kk_tsl_create(_IN_ const char *tsl, _IN_ int tsl_len, _OU_ kk_tsl_t **shadow
int
res
=
0
;
lite_cjson_t
lite_root
;
INFO_PRINT
(
"kk_tsl_create start!!
\n
"
);
if
(
shadow
==
NULL
||
*
shadow
!=
NULL
||
tsl
==
NULL
||
tsl_len
<=
0
)
{
return
INVALID_PARAMETER
;
}
...
...
@@ -1707,6 +1710,7 @@ int kk_tsl_create(_IN_ const char *tsl, _IN_ int tsl_len, _OU_ kk_tsl_t **shadow
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
INFO_PRINT
(
"kk_tsl_create successful!!
\n
"
);
return
SUCCESS_RETURN
;
}
...
...
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