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
49d392c3
Commit
49d392c3
authored
Aug 03, 2021
by
chen.weican
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】增加布防撤防功能
【提交人】陈伟灿
parent
042c495e
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
380 additions
and
101 deletions
+380
-101
midware/midware/area/kk_area_handle.c
midware/midware/area/kk_area_handle.c
+116
-35
midware/midware/area/kk_area_handle.h
midware/midware/area/kk_area_handle.h
+6
-1
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+6
-11
midware/midware/dm/kk_dm_mng.h
midware/midware/dm/kk_dm_mng.h
+1
-1
midware/midware/dm/kk_dm_msg.h
midware/midware/dm/kk_dm_msg.h
+1
-0
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+80
-0
midware/midware/dm/kk_sub_db.c
midware/midware/dm/kk_sub_db.c
+45
-0
midware/midware/dm/kk_sub_db.h
midware/midware/dm/kk_sub_db.h
+5
-0
midware/midware/midware.c
midware/midware/midware.c
+99
-47
tools/build-rules/_rules-top.mk
tools/build-rules/_rules-top.mk
+1
-1
tools/build-rules/scripts/gen_one_makefile.sh
tools/build-rules/scripts/gen_one_makefile.sh
+4
-4
tools/default_settings.mk
tools/default_settings.mk
+1
-1
tsl/product_3049.json
tsl/product_3049.json
+15
-0
No files found.
midware/midware/area/kk_area_handle.c
View file @
49d392c3
...
...
@@ -55,7 +55,8 @@ static int _kk_area_db_init(void)
const
char
*
pAreaTable
=
"CREATE TABLE IF NOT EXISTS AreaInfo( \
idx INTEGER PRIMARY KEY, \
name varchar(256), \
roomId varchar(256))"
;
roomId varchar(256), \
armingstate INTEGER)"
;
if
(
sqlite3_exec
(
ctx
->
pDb
,
pAreaTable
,
NULL
,
NULL
,
&
pcErr
)
!=
SQLITE_OK
)
{
...
...
@@ -103,7 +104,6 @@ int kk_area_init(void)
}
return
SUCCESS_RETURN
;
}
static
int
kk_check_room_exist
(
const
char
*
roomId
)
{
int
isExist
=
0
;
...
...
@@ -200,7 +200,6 @@ static int _kk_room_dev_update(const char *name,const char *roomId)
_kk_area_unlock
();
return
SUCCESS_RETURN
;
}
int
kk_room_add
(
const
char
*
name
,
const
char
*
roomId
)
{
if
(
kk_check_room_exist
(
roomId
)){
...
...
@@ -211,9 +210,28 @@ int kk_room_add(const char *name,const char *roomId)
}
else
{
return
_kk_room_add
(
name
,
roomId
);
}
}
}
int
kk_room_update_armingstate
(
int
state
,
const
char
*
roomid
)
{
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
_kk_area_lock
();
sqlCmd
=
sqlite3_mprintf
(
"UPDATE AreaInfo SET armingstate=%d WHERE roomId= '%s'"
,
state
,
roomid
);
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_area_unlock
();
return
SUCCESS_RETURN
;
}
int
kk_room_delete
(
const
char
*
roomId
)
{
int
res
=
0
;
...
...
@@ -240,37 +258,6 @@ int kk_room_delete(const char *roomId)
return
SUCCESS_RETURN
;
}
int
kk_get_device_name
(
const
char
*
deviceCode
,
const
char
*
epNum
,
char
*
devName
,
int
size
)
{
int
isGet
=
0
;
sqlite3_stmt
*
stmt
;
char
*
pDeviceCode
=
NULL
;
char
*
pEpNum
=
NULL
;
char
*
pDevName
=
NULL
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
const
char
*
searchCmd
=
"select * from AreaDevInfo;"
;
_kk_area_lock
();
sqlite3_prepare_v2
(
ctx
->
pDb
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
);
pEpNum
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_EPNUM
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
)
&&
!
strcmp
(
pEpNum
,
epNum
))
{
pDevName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEV_NAME
);
memset
(
devName
,
0
,
size
);
snprintf
(
devName
,
size
,
"%s"
,
pDevName
);
isGet
=
1
;
}
}
//INFO_PRINT("\n");
sqlite3_finalize
(
stmt
);
_kk_area_unlock
();
return
isGet
;
}
static
int
_kk_check_dev_exist
(
const
char
*
deviceCode
,
const
char
*
epNum
)
{
int
isExist
=
0
;
...
...
@@ -328,7 +315,101 @@ int kk_room_dev_add(const char *roomId,const char *roomName,const char *deviceCo
_kk_area_unlock
();
return
SUCCESS_RETURN
;
}
int
kk_room_reset_armingstate
(
void
)
{
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
_kk_area_lock
();
sqlCmd
=
sqlite3_mprintf
(
"UPDATE AreaInfo SET armingstate=%d "
,
0
);
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_area_unlock
();
return
SUCCESS_RETURN
;
}
int
kk_get_room_armingstate
(
const
char
*
roomId
)
{
sqlite3_stmt
*
stmt
;
int
state
=
0
;
char
*
sqlCmd
=
NULL
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
const
char
*
searchCmd
=
"select * from AreaInfo where roomId = '%s';"
;
_kk_area_lock
();
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
roomId
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
state
=
sqlite3_column_int
(
stmt
,
DB_ROOM_ARMING
);
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
_kk_area_unlock
();
return
state
;
}
int
kk_get_roomId_by_deviceCode
(
const
char
*
deviceCode
,
const
char
*
epNum
,
char
*
roomId
,
int
size
)
{
int
isGet
=
0
;
sqlite3_stmt
*
stmt
;
char
*
pDeviceCode
=
NULL
;
char
*
pEpNum
=
NULL
;
char
*
pRoomId
=
NULL
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
const
char
*
searchCmd
=
"select * from AreaDevInfo;"
;
_kk_area_lock
();
sqlite3_prepare_v2
(
ctx
->
pDb
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
);
pEpNum
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_EPNUM
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
)
&&
!
strcmp
(
pEpNum
,
epNum
))
{
pRoomId
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_ROOM_ID
);
memset
(
roomId
,
0
,
size
);
snprintf
(
roomId
,
size
,
"%s"
,
pRoomId
);
isGet
=
1
;
}
}
//INFO_PRINT("\n");
sqlite3_finalize
(
stmt
);
_kk_area_unlock
();
return
isGet
;
}
int
kk_get_device_name
(
const
char
*
deviceCode
,
const
char
*
epNum
,
char
*
devName
,
int
size
)
{
int
isGet
=
0
;
sqlite3_stmt
*
stmt
;
char
*
pDeviceCode
=
NULL
;
char
*
pEpNum
=
NULL
;
char
*
pDevName
=
NULL
;
kk_area_ctx_t
*
ctx
=
_kk_area_get_ctx
();
const
char
*
searchCmd
=
"select * from AreaDevInfo;"
;
_kk_area_lock
();
sqlite3_prepare_v2
(
ctx
->
pDb
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEVICECODE
);
pEpNum
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_EPNUM
);
if
(
!
strcmp
(
deviceCode
,
pDeviceCode
)
&&
!
strcmp
(
pEpNum
,
epNum
))
{
pDevName
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_DEV_DEV_NAME
);
memset
(
devName
,
0
,
size
);
snprintf
(
devName
,
size
,
"%s"
,
pDevName
);
isGet
=
1
;
}
}
//INFO_PRINT("\n");
sqlite3_finalize
(
stmt
);
_kk_area_unlock
();
return
isGet
;
}
int
kk_room_dev_remove
(
const
char
*
deviceCode
,
const
char
*
epNum
)
{
int
res
=
0
;
...
...
midware/midware/area/kk_area_handle.h
View file @
49d392c3
...
...
@@ -10,7 +10,8 @@ typedef struct kk_dev_list{
enum
{
DB_ROOM_IDX
=
0
,
DB_ROOM_NAME
,
DB_ROOM_ID
,
DB_ROOM_ID
,
DB_ROOM_ARMING
,
};
enum
{
...
...
@@ -30,6 +31,10 @@ 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
);
int
kk_get_device_name
(
const
char
*
deviceCode
,
const
char
*
epNum
,
char
*
devName
,
int
size
);
int
kk_room_update_armingstate
(
int
state
,
const
char
*
roomid
);
int
kk_get_room_armingstate
(
const
char
*
roomId
);
int
kk_get_roomId_by_deviceCode
(
const
char
*
deviceCode
,
const
char
*
epNum
,
char
*
roomId
,
int
size
);
#endif
midware/midware/dm/kk_dm_mng.c
View file @
49d392c3
...
...
@@ -392,24 +392,19 @@ int dm_mgr_get_device_by_devicecode(_IN_ char deviceCode[DEVICE_CODE_MAXLEN], _O
return
FAIL_RETURN
;
}
int
dm_mgr_get_device
_by_productType
(
_IN_
char
*
productType
,
_OU_
dm_mgr_dev_node_t
**
nod
e
)
int
dm_mgr_get_device
Num_by_productType
(
_IN_
char
*
productTyp
e
)
{
dm_mgr_ctx
*
ctx
=
_dm_mgr_get_ctx
();
dm_mgr_dev_node_t
*
search_node
=
NULL
;
int
num
=
0
;
list_for_each_entry
(
search_node
,
&
ctx
->
dev_list
,
linked_list
,
dm_mgr_dev_node_t
)
{
if
((
strlen
(
search_node
->
deviceCod
e
)
==
strlen
(
productType
))
&&
(
memcmp
(
search_node
->
deviceCod
e
,
productType
,
strlen
(
productType
))
==
0
))
{
if
((
strlen
(
search_node
->
productTyp
e
)
==
strlen
(
productType
))
&&
(
memcmp
(
search_node
->
productTyp
e
,
productType
,
strlen
(
productType
))
==
0
))
{
/* dm_log_debug("Device Found, Product Key: %s, Device Name: %s", product_key, device_name); */
if
(
node
)
{
*
node
=
search_node
;
}
return
SUCCESS_RETURN
;
num
++
;
}
}
ERROR_PRINT
(
"Device Not Found, productType: %s
\n
"
,
productType
);
return
FAIL_RETURN
;
return
num
;
}
int
dm_mgr_update_timestamp_by_devicecode
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
time_t
timestamp
)
...
...
midware/midware/dm/kk_dm_mng.h
View file @
49d392c3
...
...
@@ -88,7 +88,7 @@ int dm_mgr_search_device_by_pkdn( _IN_ char deviceCode[DEVICE_CODE_MAXLEN],_OU_
int
dm_mgr_get_devicetype_by_devicecode
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
_OU_
int
*
deviceType
);
int
dm_mgr_get_device_shadow_by_devicecode
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
_OU_
kk_tsl_t
**
shadow
);
int
dm_mgr_get_device_by_devicecode
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
_OU_
dm_mgr_dev_node_t
**
node
);
int
dm_mgr_get_device
_by_productType
(
_IN_
char
*
productType
,
_OU_
dm_mgr_dev_node_t
**
nod
e
);
int
dm_mgr_get_device
Num_by_productType
(
_IN_
char
*
productTyp
e
);
int
dm_mgr_update_timestamp_by_devicecode
(
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
time_t
timestamp
);
int
dm_mgr_set_dev_onoffline
(
dm_mgr_dev_node_t
*
node
,
int
isOffline
);
int
dm_mgr_check_heartbeat_timeout
(
time_t
timestamp
);
...
...
midware/midware/dm/kk_dm_msg.h
View file @
49d392c3
...
...
@@ -83,6 +83,7 @@ const char DM_MSG_INFO[] DM_READ_ONLY;
#define KK_THING_SERVICE_SYNCINFO "/thing/service/syncinfo"
#define KK_THING_SERVICE_SYNCINFO_REPLY "/thing/service/syncinfo_reply"
#define KK_THING_EVENT_MESSAGE "/thing/event/"
#define KK_THING_SERVICE_GETGUARDSENSORS "/thing/service/getGuardSensors"
#define KK_THING_EVENT_POST "/post"
void
kk_sendData2app
(
void
*
info
,
void
*
payload
,
int
isAsync
);
...
...
midware/midware/dm/kk_linkkit.c
View file @
49d392c3
...
...
@@ -861,6 +861,67 @@ static int kk_service_executeScene_handle(cJSON *param,cJSON *msgId)
return
res
;
}
/************************************************************
*功能描述:获取主机下安防设备及对应等级
*输入参数:params:云端下发数据,包含场景Id等
msgId:消息Id
*输出参数:无
*返 回 值: 0:成功;其他:失败
*其他说明:
*************************************************************/
static
int
kk_service_getGuardSensors_handle
(
cJSON
*
param
,
cJSON
*
msgId
)
{
int
res
=
0
;
int
i
=
0
,
num
=
0
;
SensorType_t
*
pList
=
NULL
;
if
(
param
==
NULL
||
msgId
==
NULL
){
return
INVALID_PARAMETER
;
}
cJSON
*
deviceCode
=
cJSON_GetObjectItem
(
param
,
MSG_DEVICE_CODE_STR
);
if
(
deviceCode
==
NULL
){
return
FAIL_RETURN
;
}
cJSON
*
productCode
=
cJSON_GetObjectItem
(
param
,
MSG_PRODUCT_CODE_STR
);
if
(
productCode
==
NULL
){
return
FAIL_RETURN
;
}
cJSON
*
info
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
info
,
MSG_TYPE_STR
,
"/thing/service/getGuardSensors_reply"
);
cJSON_AddStringToObject
(
info
,
MSG_DEVICE_CODE_STR
,
deviceCode
->
valuestring
);
cJSON_AddStringToObject
(
info
,
MSG_PRODUCT_CODE_STR
,
productCode
->
valuestring
);
char
*
infff
=
cJSON_Print
(
info
);
cJSON
*
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"desc"
,
"success"
);
cJSON_AddStringToObject
(
payload
,
"version"
,
"1.0"
);
cJSON_AddStringToObject
(
payload
,
"code"
,
"0"
);
cJSON_AddStringToObject
(
payload
,
"msgId"
,
msgId
->
valuestring
);
cJSON
*
paramArray
=
cJSON_CreateArray
();
num
=
dm_mgr_get_deviceNum_by_productType
(
"sensor"
);
pList
=
(
SensorType_t
*
)
malloc
(
sizeof
(
SensorType_t
)
*
num
);
if
(
pList
==
NULL
){
ERROR_PRINT
(
"MALLOC ERROR!!!"
);
return
-
1
;
}
memset
(
pList
,
0x0
,
sizeof
(
SensorType_t
)
*
num
);
kk_subDev_getSensors_reply
(
pList
);
for
(
i
=
0
;
i
<
num
;
i
++
){
cJSON
*
Item
=
cJSON_CreateObject
();
cJSON_AddNumberToObject
(
Item
,
"SensorType"
,
pList
[
i
].
SensorType
);
cJSON_AddStringToObject
(
Item
,
"DeviceCode"
,
pList
[
i
].
deviceCode
);
cJSON_AddItemToArray
(
paramArray
,
Item
);
}
char
*
paramArray22
=
cJSON_Print
(
paramArray
);
cJSON_AddItemToObject
(
payload
,
"params"
,
paramArray
);
char
*
payload11
=
cJSON_Print
(
payload
);
kk_sendData2app
(
infff
,
payload11
,
0
);
free
(
payload11
);
free
(
infff
);
free
(
pList
);
cJSON_Delete
(
payload
);
cJSON_Delete
(
info
);
return
res
;
}
/************************************************************
*功能描述:收到云端数据后的回调处理
*输入参数:type:数据类型
data:具体数据
...
...
@@ -935,6 +996,20 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
cJSON
*
state
=
cJSON_GetObjectItem
(
paramStr
,
KK_TSL_CCU_ARMINGSTATE_IDENTIFIER
);
if
(
state
!=
NULL
){
cJSON
*
RoomIds
=
cJSON_GetObjectItem
(
paramStr
,
"RoomIds"
);
if
(
RoomIds
!=
NULL
){
kk_room_reset_armingstate
();
int
array_size
=
cJSON_GetArraySize
(
RoomIds
);
for
(
int
iCnt
=
0
;
iCnt
<
array_size
;
iCnt
++
){
cJSON
*
pSub
=
cJSON_GetArrayItem
(
RoomIds
,
iCnt
);
if
(
NULL
==
pSub
){
continue
;
}
char
roomId
[
16
]
=
{
0
};
sprintf
(
roomId
,
"%d"
,
pSub
->
valueint
);
INFO_PRINT
(
"id [%d] : %s
\n
"
,
iCnt
,
roomId
);
kk_room_update_armingstate
(
1
,
roomId
);
}
}
dm_mgr_search_dev_by_devid
(
KK_DM_DEVICE_CCU_DEVICEID
,
&
node
);
res
=
kk_tsl_set_value
(
kk_tsl_set_property_value
,
node
->
dev_shadow
,
KK_TSL_CCU_ARMINGSTATE_IDENTIFIER
,
NULL
,
state
->
valuestring
);
if
(
res
!=
SUCCESS_RETURN
)
...
...
@@ -1038,6 +1113,11 @@ static void _iotx_linkkit_event_callback(iotx_dm_event_types_t type, char *data)
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_executeScene_handle
(
paramStr
,
msgId
);
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_GETGUARDSENSORS
)
==
0
){
INFO_PRINT
(
"get guardgensors
\n
"
);
cJSON
*
msgId
=
cJSON_GetObjectItem
(
payload
,
MSG_COMMON_MSGID
);
kk_service_getGuardSensors_handle
(
info_root
,
msgId
);
}
else
if
(
strcmp
(
typeJson
->
valuestring
,
KK_THING_SERVICE_NEGATIVE
)
==
0
){
INFO_PRINT
(
"negative service
\n
"
);
cJSON
*
paramStr
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
...
...
midware/midware/dm/kk_sub_db.c
View file @
49d392c3
...
...
@@ -648,6 +648,51 @@ int kk_subDev_set_action_by_productType(const char *productType,const char *scen
return
SUCCESS_RETURN
;
}
/************************************************************
*功能描述:更新设备注册标记
*输入参数:deviceCode:设备deviceCode
isAuth:1,已注册;0,未注册
*输出参数:无
*返 回 值:0:成功;其他:失败
*其他说明:
*************************************************************/
int
kk_subDev_getSensors_reply
(
SensorType_t
*
list
)
{
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
const
char
*
searchCmd
=
"select * from SubDeviceInfo WHERE productType= '%s'"
;
char
*
zErrMsg
=
0
;
sqlite3_stmt
*
stmt
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
char
*
pDeviceCode
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
int
currentValue
=
0
;
int
count
=
0
;
//printf("kk_subDev_getSensors_reply----------------------start\n");
_kk_subDb_lock
();
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
"sensor"
);
sqlite3_prepare_v2
(
ctx
->
pDb
,
sqlCmd
,
strlen
(
sqlCmd
),
&
stmt
,
NULL
);
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
//printf("kk_subDev_getSensors_reply----------------------num\n");
pDeviceCode
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_DEVICECODE
);
rc
=
dm_mgr_get_device_by_devicecode
(
pDeviceCode
,
&
node
);
if
(
rc
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"ERROR res:%d
\n
"
,
rc
);
continue
;
}
//printf("pDeviceCode:%s\n",pDeviceCode);
kk_property_db_get_value
(
pDeviceCode
,
"SensorType"
,
&
currentValue
);
//printf("currentValue:%d\n",currentValue);
memcpy
(
list
[
count
].
deviceCode
,
pDeviceCode
,
strlen
(
pDeviceCode
));
list
[
count
].
SensorType
=
currentValue
;
count
++
;
}
//printf("kk_subDev_getSensors_reply----------------------end\n");
sqlite3_finalize
(
stmt
);
_kk_subDb_unlock
();
sqlite3_free
(
sqlCmd
);
return
SUCCESS_RETURN
;
}
midware/midware/dm/kk_sub_db.h
View file @
49d392c3
...
...
@@ -2,6 +2,10 @@
#define _KK_SUBDEV_DB_H_
#include "kk_tsl_common.h"
typedef
struct
{
char
deviceCode
[
DEVICE_CODE_MAXLEN
];
int
SensorType
;
}
SensorType_t
;
int
kk_subDb_init
(
void
);
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
);
...
...
@@ -18,6 +22,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
);
int
kk_subDev_getSensors_reply
(
SensorType_t
*
list
);
enum
{
DB_SUB_IDX
=
0
,
DB_SUB_ONLINE
,
...
...
midware/midware/midware.c
View file @
49d392c3
...
...
@@ -200,6 +200,7 @@ static int kk_property_set_data_check(cJSON * payload,const char *deviceCode){
int
value
=
0
;
char
*
propertiesbuf
[
64
]
=
{
0
};
char
propertiesTmp
[
64
]
=
{
0
};
res
=
dm_mgr_get_device_by_devicecode
((
char
*
)
deviceCode
,
&
node
);
if
(
res
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
"ERROR [%s][%d] res:%d
\n
"
,
__FUNCTION__
,
__LINE__
,
res
);
...
...
@@ -207,6 +208,22 @@ static int kk_property_set_data_check(cJSON * payload,const char *deviceCode){
}
params
=
cJSON_GetObjectItem
(
payload
,
MSG_PARAMS_STR
);
if
(
params
!=
NULL
){
//传感器安防等级设置
if
(
strcmp
(
node
->
productType
,
"sensor"
)
==
0
){
cJSON
*
sensorType
=
cJSON_GetObjectItem
(
params
,
"SensorType"
);
if
(
sensorType
!=
NULL
){
int
level
=
sensorType
->
valueint
;
res
=
kk_tsl_set_value
(
kk_tsl_set_property_value
,
node
->
dev_shadow
,
"SensorType"
,
&
level
,
NULL
);
if
(
res
!=
SUCCESS_RETURN
)
{
ERROR_PRINT
(
" error res:%d
\n
"
,
res
);
}
char
tmpValue
[
16
]
=
{
0
};
sprintf
(
tmpValue
,
"%d"
,
level
);
kk_property_db_update_value
(
deviceCode
,
"SensorType"
,
tmpValue
);
return
SUCCESS_RETURN
;
}
}
epNum
=
cJSON_GetObjectItem
(
params
,
"epNum"
);
if
(
epNum
!=
NULL
){
epNumInt
=
atoi
(
epNum
->
valuestring
);
...
...
@@ -497,6 +514,73 @@ void gw2mid_cb(void* data, int len, char* chalMark){
*返 回 值: 无
*其他说明:
*************************************************************/
static
int
kk_alarm_notify_handle
(
dm_mgr_dev_node_t
*
node
,
char
*
identifier
)
{
int
currentValue
=
0
;
char
armingstate
[
16
]
=
{
0
};
int
ret
=
0
;
if
(
node
==
NULL
||
identifier
==
NULL
){
return
-
1
;
}
kk_property_db_get_value
(
node
->
deviceCode
,
"SensorType"
,
&
currentValue
);
kk_property_db_get_value
(
s_ccuid
,
KK_TSL_CCU_ARMINGSTATE_IDENTIFIER
,
armingstate
);
cJSON
*
info
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
info
,
MSG_TYPE_STR
,
"/thing/event/alarmNotify"
);
cJSON_AddStringToObject
(
info
,
MSG_DEVICE_CODE_STR
,
node
->
deviceCode
);
cJSON_AddStringToObject
(
info
,
MSG_PRODUCT_CODE_STR
,
node
->
productCode
);
char
*
infff
=
cJSON_Print
(
info
);
cJSON
*
payload
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
payload
,
"method"
,
"thing.event.alarmNotify"
);
cJSON_AddStringToObject
(
payload
,
"version"
,
"1.0"
);
cJSON_AddStringToObject
(
payload
,
"identifier"
,
"alarmNotify"
);
cJSON_AddStringToObject
(
payload
,
"msgId"
,
"1"
);
//char timerStr[16] = {0};
//HAL_GetTime_s(timerStr);
cJSON_AddNumberToObject
(
payload
,
"time"
,
time
(
NULL
));
cJSON
*
param
=
cJSON_CreateObject
();
if
(
strcmp
(
identifier
,
"BatteryAlarm"
)
==
0
){
cJSON_AddStringToObject
(
param
,
"LowBatteryState"
,
"1"
);
}
else
{
cJSON_AddStringToObject
(
param
,
"CommonAlarmState"
,
"1"
);
}
cJSON_AddItemToObject
(
payload
,
"params"
,
param
);
char
*
payload11
=
cJSON_Print
(
payload
);
if
(
currentValue
==
2
)
//24小时警戒
{
kk_sendData2app
(
infff
,
payload11
,
0
);
}
else
if
(
currentValue
==
1
&&
atoi
(
armingstate
)
==
0
)
//离家布防
{
kk_sendData2app
(
infff
,
payload11
,
0
);
}
else
if
(
currentValue
==
0
&&
atoi
(
armingstate
)
==
2
)
//在家布防
{
kk_sendData2app
(
infff
,
payload11
,
0
);
}
else
if
(
atoi
(
armingstate
)
==
3
&&
currentValue
==
0
)
{
char
roomId
[
16
]
=
{
0
};
ret
=
kk_get_roomId_by_deviceCode
(
node
->
deviceCode
,
"1"
,
roomId
,
sizeof
(
roomId
));
INFO_PRINT
(
"roomId: [%s]
\n
"
,
roomId
);
if
(
ret
==
1
){
int
state
=
kk_get_room_armingstate
(
roomId
);
INFO_PRINT
(
"state: [%d]
\n
"
,
state
);
if
(
state
){
kk_sendData2app
(
infff
,
payload11
,
0
);
}
}
}
free
(
payload11
);
free
(
infff
);
cJSON_Delete
(
payload
);
cJSON_Delete
(
info
);
return
0
;
}
void
kk_platMsg_handle
(
void
*
data
,
char
*
chalMark
){
int
res
=
0
;
cJSON
*
json
;
...
...
@@ -640,70 +724,38 @@ void kk_platMsg_handle(void* data, char* chalMark){
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
;
#if 0
if(itemStr != NULL){
itemData
=
eventItem
->
output_datas
+
index
;
cJSON
*
itemDataIdentifier
=
cJSON_GetObjectItem
(
jsonPay
,
itemData
->
identifier
);
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
){
sprintf(valueBuf,"%d",item
St
r->valueint);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&item
St
r->valueint,NULL);
sprintf
(
valueBuf
,
"%d"
,
item
DataIdentifie
r
->
valueint
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
item
DataIdentifie
r
->
valueint
,
NULL
);
}
else
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_FLOAT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DOUBLE
){
sprintf(valueBuf,"%f",item
St
r->valuedouble);
kk_tsl_set_value(kk_tsl_set_event_output_value,node->dev_shadow,tmpStr,&item
St
r->valuedouble,NULL);
sprintf
(
valueBuf
,
"%f"
,
item
DataIdentifie
r
->
valuedouble
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
item
DataIdentifie
r
->
valuedouble
,
NULL
);
}
else
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DATE
){
sprintf(valueBuf,"%s",itemStr->valuestring);
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");
sprintf
(
valueBuf
,
"%s"
,
itemDataIdentifier
->
valuestring
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
NULL
,
itemDataIdentifier
->
valuestring
);
}
if
(
sensorDev
){
kk_history_insert_sensor_info
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
valueBuf
,
HAL_GetTime
());
}
dm_msg_thing_event_post(info_dcode->valuestring,eventItem->identifier);
kk_alarm_notify_handle
(
node
,
eventItem
->
identifier
);
//告警信息处理
}
INFO_PRINT
(
"kk_platMsg_handle data: event post
\n
"
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
NULL
);
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
}
else
#endif
cJSON
*
itemDataIdentifier
=
cJSON_GetObjectItem
(
jsonPay
,
itemData
->
identifier
);
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
){
sprintf
(
valueBuf
,
"%d"
,
itemDataIdentifier
->
valueint
);
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
){
sprintf
(
valueBuf
,
"%f"
,
itemDataIdentifier
->
valuedouble
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
&
itemDataIdentifier
->
valuedouble
,
NULL
);
}
else
if
(
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_TEXT
||
itemData
->
data_value
.
type
==
KK_TSL_DATA_TYPE_DATE
){
sprintf
(
valueBuf
,
"%s"
,
itemDataIdentifier
->
valuestring
);
kk_tsl_set_value
(
kk_tsl_set_event_output_value
,
node
->
dev_shadow
,
tmpStr
,
NULL
,
itemDataIdentifier
->
valuestring
);
}
if
(
sensorDev
){
kk_history_insert_sensor_info
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
valueBuf
,
HAL_GetTime
());
}
INFO_PRINT
(
"kk_platMsg_handle data: event post
\n
"
);
dm_msg_thing_event_post
(
info_dcode
->
valuestring
,
eventItem
->
identifier
,
NULL
);
kk_scene_iftt_check
(
info_dcode
->
valuestring
,
jsonPay
);
}
}
}
}
else
if
(
strcmp
(
eventItem
->
identifier
,
MSG_PROPERTY_STR
)
!=
0
&&
eventItem
->
output_data_number
==
0
){
...
...
tools/build-rules/_rules-top.mk
View file @
49d392c3
...
...
@@ -222,7 +222,7 @@ else
cp
-rf
$(TOP_DIR)/common/ev/libev.so
$(TOP_DIR)/$(releaseDir)/lib
cp
-rf
$(TOP_DIR)/common/sqlite/libsqlite3.so
$(TOP_DIR)/$(releaseDir)/lib
endif
cp
-rf
$(TOP_DIR)/platform/zigbee/app/builder/Z3GatewayHost/build/exe/Z3GatewayHost
$(TOP_DIR)/$(releaseDir)/
#
cp -rf $(TOP_DIR)/platform/zigbee/app/builder/Z3GatewayHost/build/exe/Z3GatewayHost $(TOP_DIR)/$(releaseDir)/
fromdos
$(releaseDir)/*.sh
echo
$(PWD)
...
...
tools/build-rules/scripts/gen_one_makefile.sh
View file @
49d392c3
...
...
@@ -104,13 +104,13 @@ done
\$
(Q)mkdir -p
\$\$
(dirname
\$
@)
\$
(Q)S=
\$\$
(echo
\$
@|sed 's,
${
OUTPUT_DIR
}
,
${
TOP_DIR
}
,1');
\\
if echo
\$\$
{S//.o/.c} | grep -q 'mbedtls
\|
HAL_
\|
hal-impl'; then
\\
${
CC
}
-c -fPIC
\\
${
CC
}
-
std=c99 -
c -fPIC
\\
-o
\$
@
\\
\$
(filter-out -ansi,
\$
(CFLAGS))
\\
\$
(IFLAGS)
\\
\$\$
{S//.o/.c};
\\
else
\\
${
CC
}
-c -fPIC
\\
${
CC
}
-
std=c99 -
c -fPIC
\\
-o
\$
@
\\
\$
(CFLAGS)
\\
\$
(IFLAGS)
\\
...
...
@@ -181,8 +181,8 @@ done)
\$
(Q)mkdir -p
\$\$
(dirname
\$
@)
\$
(Q)
\$
(call Brief_Log,"SO",
\$\$
(basename
\$
@),"...")
\$
(Q)
${
CC
}
-fPIC -shared
\$
^ -o
\$
@
\$
(Q)
${
CC
}
-
std=c99 -
fPIC -shared
\$
^ -o
\$
@
EOB
done
...
...
tools/default_settings.mk
View file @
49d392c3
...
...
@@ -11,7 +11,7 @@ CONFIG_LIB_EXPORT ?= static
# Default CFLAGS setting
#
CFLAGS
+=
-ansi
CFLAGS
+=
-W
declaration-after-statemen
t
CFLAGS
+=
-W
no-unused-resul
t
CFLAGS
+=
-DFORCE_SSL_VERIFY
# Default INCLUDE list
...
...
tsl/product_3049.json
View file @
49d392c3
...
...
@@ -63,6 +63,21 @@
}
}
},
{
"identifier"
:
"SensorType"
,
"name"
:
"安防等级"
,
"accessMode"
:
"rw"
,
"required"
:
true
,
"dataType"
:
{
"type"
:
"enum"
,
"specs"
:
{
"0"
:
"在家安防"
,
"1"
:
"室外安防"
,
"2"
:
"24小时警戒"
,
"3"
:
"无警戒"
}
}
},
{
"identifier"
:
"Battery"
,
"name"
:
"电池电量"
,
...
...
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