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
09e12432
Commit
09e12432
authored
Feb 18, 2022
by
尹佳钦
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
新增群组功能(与网关侧待对接)
parent
e5013c9e
Changes
9
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
542 additions
and
42 deletions
+542
-42
midware/midware/dm/kk_dm_msg.h
midware/midware/dm/kk_dm_msg.h
+13
-0
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+411
-0
midware/midware/dm/kk_sub_db.c
midware/midware/dm/kk_sub_db.c
+33
-1
midware/midware/dm/kk_sub_db.h
midware/midware/dm/kk_sub_db.h
+1
-0
midware/midware/dm/kk_sync_data.c
midware/midware/dm/kk_sync_data.c
+53
-34
midware/midware/midware.c
midware/midware/midware.c
+2
-0
midware/midware/scene/kk_scene_db.h
midware/midware/scene/kk_scene_db.h
+4
-5
midware/midware/scene/kk_scene_handle.c
midware/midware/scene/kk_scene_handle.c
+24
-2
midware/midware/scene/kk_scene_handle.h
midware/midware/scene/kk_scene_handle.h
+1
-0
No files found.
midware/midware/dm/kk_dm_msg.h
View file @
09e12432
...
...
@@ -151,6 +151,19 @@ typedef struct {
#define KK_THING_SERVICE_GET_CCU_INFO "/thing/service/getCCUInfo"
#define KK_THING_SERVICE_GET_CCU_INFO_REPLY "/thing/service/getCCUInfo_reply"
#define KK_THING_SERVICE_ADDGROUP "/thing/service/addGroup"
#define KK_THING_SERVICE_ADDGROUP_REPLY "/thing/service/addGroup_reply"
#define KK_THING_SERVICE_UPDATEGROUP "/thing/service/updateGroup"
#define KK_THING_SERVICE_UPDATEGROUP_REPLY "/thing/service/updateGroup_reply"
#define KK_THING_SERVICE_DELETEGROUP "/thing/service/deleteGroup"
#define KK_THING_SERVICE_DELETEGROUP_REPLY "/thing/service/deleteGroup_reply"
#define KK_THING_SERVICE_QUERYGROUP "/thing/service/queryGroup"
#define KK_THING_SERVICE_QUERYGROUP_REPLY "/thing/service/queryGroup_reply"
#define KK_THING_SERVICE_EXCUTEGROUP "/thing/service/excuteGroup"
#define KK_THING_SERVICE_EXCUTEGROUP_REPLY "/thing/service/excuteGroup_reply"
void
kk_sendData2app
(
void
*
info
,
void
*
payload
,
int
isAsync
);
int
dm_msg_thing_sub_register
(
_IN_
char
productCode
[
DEVICE_CODE_MAXLEN
],
_IN_
char
deviceCode
[
DEVICE_CODE_MAXLEN
],
_OU_
dm_msg_request_t
*
request
);
...
...
midware/midware/dm/kk_linkkit.c
View file @
09e12432
This diff is collapsed.
Click to expand it.
midware/midware/dm/kk_sub_db.c
View file @
09e12432
...
...
@@ -1282,4 +1282,36 @@ int kk_get_screenDev_info(ScreenDevInfo_t *devInfo,char*serialId)
_kk_subDb_unlock
();
sqlite3_free
(
sqlCmd
);
return
0
;
}
\ No newline at end of file
}
int
kk_subDev_find_fatherDeviceCode
(
const
char
*
deviceCode
,
char
*
fatherDeviceCode
)
{
int
res
=
0
;
sqlite3_stmt
*
stmt
;
char
*
sqlCmd
=
NULL
;
dm_mgr_dev_node_t
*
node
=
NULL
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
const
char
*
searchCmd
=
"select * from SubDeviceInfo WHERE deviceCode = '%s'"
;
if
(
deviceCode
==
NULL
){
ERROR_PRINT
(
"ERROR [%s][%d]
\n
"
,
__FUNCTION__
,
__LINE__
);
return
INVALID_PARAMETER
;
}
sqlCmd
=
sqlite3_mprintf
(
searchCmd
,
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
){
char
*
parent
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SUB_FATHERDEVICECODE
);
sprintf
(
fatherDeviceCode
,
"%s"
,
parent
);
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
return
SUCCESS_RETURN
;
}
sqlite3_finalize
(
stmt
);
sqlite3_free
(
sqlCmd
);
return
FAIL_RETURN
;
}
midware/midware/dm/kk_sub_db.h
View file @
09e12432
...
...
@@ -45,6 +45,7 @@ int kk_get_screenDev_info(ScreenDevInfo_t *devInfo,char*serialId);
int
kk_subDev_getDeviceCodes_byProductType
(
DeviceCode_t
*
list
,
char
*
type
);
int
kk_indoor_air_action_add
(
char
*
propertyValue
,
char
*
deviceCode
,
int
delay
,
char
*
gwDeviceCode
,
char
*
sceneId
,
char
*
type
,
int
epnum
);
int
kk_subDev_update_fatherDeviceCode
(
char
*
fatherDeviceCode
,
const
char
*
deviceCode
);
enum
{
DB_SUB_IDX
=
0
,
DB_SUB_ONLINE
,
...
...
midware/midware/dm/kk_sync_data.c
View file @
09e12432
...
...
@@ -25,6 +25,8 @@
#include "kk_hal.h"
#include "kk_dm_msg.h"
#include "kk_linkkit.h"
#include "kk_group_db.h"
extern
sqlite3
*
g_kk_pDb
;
static
int
kk_check_multi_ep_num
(
char
*
deviceCode
);
...
...
@@ -1045,46 +1047,54 @@ static int kk_get_scenes_actions_info(cJSON *actionArray,char* id,char *productT
type
=
(
char
*
)
sqlite3_column_text
(
stmt
,
DB_SCENEACTION_TYPE
);
actionItem
=
cJSON_CreateObject
();
if
(
strcmp
(
type
,
"action/thing/cluster"
)
==
0
){
actionItem
=
cJSON_Parse
(
propertyName
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_TYPE_STR
,
type
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYVALUE_STR
,
atoi
(
propertyValue
));
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_DELAY_STR
,
delay
);
cJSON_AddItemToArray
(
actionArray
,
actionItem
);
}
else
{
actionItem
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_DELAY_STR
,
delay
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_DEVICECODE_STR
,
deviceCode
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_DELAY_STR
,
delay
);
char
*
propertiesbuf
[
64
]
=
{
0
};
int
num
=
0
;
kk_split
(
propertyName
,
"_"
,
propertiesbuf
,
&
num
);
if
(
num
==
2
){
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
propertiesbuf
[
0
]);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_EPNUM_STR
,
atoi
(
propertiesbuf
[
1
]));
}
else
{
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
propertyName
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
}
//cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_TYPE_STR
,
type
);
if
(
strstr
(
propertyValue
,
"{"
)
!=
NULL
&&
strstr
(
propertyValue
,
"}"
)
!=
NULL
){
prtyObj
=
cJSON_Parse
(
propertyValue
);
if
(
prtyObj
!=
NULL
){
cJSON_AddItemToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYVALUE_STR
,
prtyObj
);
char
*
propertiesbuf
[
64
]
=
{
0
};
int
num
=
0
;
kk_split
(
propertyName
,
"_"
,
propertiesbuf
,
&
num
);
if
(
num
==
2
){
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
propertiesbuf
[
0
]);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_EPNUM_STR
,
atoi
(
propertiesbuf
[
1
]));
}
else
{
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYNAME_STR
,
propertyName
);
cJSON_AddNumberToObject
(
actionItem
,
KK_SYNC_SCENE_EPNUM_STR
,
epNum
);
}
//cJSON_AddNumberToObject(actionItem, KK_SYNC_SCENE_EPNUM_STR, epNum);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_TYPE_STR
,
type
);
if
(
strstr
(
propertyValue
,
"{"
)
!=
NULL
&&
strstr
(
propertyValue
,
"}"
)
!=
NULL
){
prtyObj
=
cJSON_Parse
(
propertyValue
);
if
(
prtyObj
!=
NULL
){
cJSON_AddItemToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYVALUE_STR
,
prtyObj
);
}
else
{
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYVALUE_STR
,
propertyValue
);
}
}
else
{
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYVALUE_STR
,
propertyValue
);
}
}
else
{
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PROPERTYVALUE_STR
,
propertyValue
);
if
(
strcmp
(
productType
,
""
)
!=
0
){
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PRODUCTTYPE
,
productType
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_ROOMID_STR
,
actionRoomId
);
cJSON_AddItemToArray
(
actionArray
,
actionItem
);
break
;
}
else
{
kk_get_roomId_by_scene_id
(
scene_id
,
room_id
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_ROOMID_STR
,
room_id
);
cJSON_AddItemToArray
(
actionArray
,
actionItem
);
}
}
if
(
strcmp
(
productType
,
""
)
!=
0
){
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_SCENE_PRODUCTTYPE
,
productType
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_ROOMID_STR
,
actionRoomId
);
cJSON_AddItemToArray
(
actionArray
,
actionItem
);
break
;
}
else
{
kk_get_roomId_by_scene_id
(
scene_id
,
room_id
);
cJSON_AddStringToObject
(
actionItem
,
KK_SYNC_ROOMID_STR
,
room_id
);
cJSON_AddItemToArray
(
actionArray
,
actionItem
);
}
}
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
...
...
@@ -1370,6 +1380,14 @@ static int kk_get_scenes_info(cJSON *data)
return
SUCCESS_RETURN
;
}
static
int
kk_get_group_info
(
cJSON
*
data
)
{
cJSON
*
group
=
kk_group_db_query
(
1
);
cJSON_AddItemToObject
(
data
,
"group"
,
group
);
return
SUCCESS_RETURN
;
}
/*
static int kk_get_ccu_properties(cJSON *property)
{
...
...
@@ -1425,6 +1443,7 @@ char *kk_sync_get_info()
kk_get_rooms_info
(
data
);
kk_get_devices_info
(
data
);
kk_get_scenes_info
(
data
);
kk_get_group_info
(
data
);
HAL_Get_ccuid
(
ccu_deviceCode
);
kk_get_pid
(
ccu_productCode
);
HAL_GetVersion
(
version
);
...
...
midware/midware/midware.c
View file @
09e12432
...
...
@@ -42,6 +42,7 @@
#include "kk_area_handle.h"
#include "kk_property_get_handle.h"
#include "kk_motor_bind_db.h"
#include "kk_group_db.h"
int
g_timezone
=
8
;
char
*
g_filerToPlatTable
[]
=
...
...
@@ -2086,6 +2087,7 @@ int main(const int argc, const char **argv)
kk_subDb_init
();
kk_area_init
();
kk_history_db_init
();
kk_group_db_init
();
kk_motor_bind_db_init
();
kk_scene_init
();
g_timezone
=
HAL_Get_TimeZone
();
...
...
midware/midware/scene/kk_scene_db.h
View file @
09e12432
...
...
@@ -18,7 +18,7 @@ enum{
DB_SCENEINFO_PRODUCTTYPE
,
DB_SCENEINFO_ACTIONROOMID
,
};
enum
{
DB_SCENETRIGGER_TYPE
=
0
,
DB_SCENETRIGGER_DEVICECODE
,
...
...
@@ -42,7 +42,7 @@ enum{
enum
{
DB_SCENEACTION_TYPE
=
0
,
DB_SCENEACTION_DEVICECODE
,
DB_SCENEACTION_EPNUM
,
DB_SCENEACTION_EPNUM
,
DB_SCENEACTION_PROPERTYNAME
,
DB_SCENEACTION_PROPERTYVALUE
,
DB_SCENEACTION_DELAY
,
...
...
@@ -90,14 +90,14 @@ int kk_scene_insert_scene_action(const char* type,const char* deviceCode,int epN
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_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
*
roomId
,
const
char
*
sceneName
,
int
sceneType
,
int
enable
,
const
char
*
sceneId
,
char
*
productType
,
char
*
actionRoomId
);
int
kk_scene_update_scene_enable
(
int
enable
,
const
char
*
sceneId
);
int
kk_scene_db_init
(
void
);
int
kk_scene_db_init
(
void
);
int
kk_scene_insert_panel_scene_info
(
int
bindType
,
char
*
buttonId
,
char
*
deviceCode
,
const
char
*
sceneId
,
const
char
*
roomId
,
const
char
*
productType
);
int
kk_scene_delete_quickpanel_info
(
char
*
buttonId
,
char
*
deviceCode
);
int
kk_scene_delete_panel_scene_info
(
char
*
buttonId
,
char
*
deviceCode
);
...
...
@@ -106,5 +106,4 @@ int kk_scene_update_productType(const char *sceneId,char *productType);
int
kk_scene_update_actionRoomId
(
const
char
*
sceneId
,
char
*
roomId
);
int
kk_scene_update_device_active
(
char
*
deviceCode
,
int
epNum
,
int
value
);
int
kk_scene_rebuild_device_active
(
char
*
deviceCode
,
int
epNum
);
#endif
midware/midware/scene/kk_scene_handle.c
View file @
09e12432
...
...
@@ -1393,6 +1393,27 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
argStr
=
cJSON_PrintUnformatted
(
arg
);
kk_scene_insert_scene_invokeService
(
typeStr
,
identifier
->
valuestring
,
argStr
,
sceneId
);
free
(
argStr
);
}
else
if
(
!
strcmp
(
typeStr
,
"action/thing/cluster"
)){
propertyValue
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_PROPERTYVALUE
);
if
(
propertyValue
==
NULL
)
return
FAIL_RETURN
;
delay
=
cJSON_GetObjectItem
(
item
,
MSG_SCENE_DELAY
);
memset
(
propertyValueStr
,
0x0
,
sizeof
(
propertyValueStr
));
snprintf
(
propertyValueStr
,
sizeof
(
propertyValueStr
),
"%d"
,
propertyValue
->
valueint
);
cJSON
*
groupId
=
cJSON_GetObjectItem
(
item
,
"groupId"
);
cJSON
*
controlType
=
cJSON_GetObjectItem
(
item
,
"controlType"
);
cJSON
*
temp
=
cJSON_CreateObject
();
cJSON_AddStringToObject
(
temp
,
"groupId"
,
groupId
->
valuestring
);
cJSON_AddStringToObject
(
temp
,
"controlType"
,
controlType
->
valuestring
);
char
*
propertyNameStr
=
cJSON_PrintUnformatted
(
temp
);
res
=
kk_scene_insert_scene_action
(
typeStr
,
""
,
0
,
propertyNameStr
,
propertyValueStr
,
delay
->
valueint
,
sceneId
,
""
);
free
(
propertyNameStr
);
}
else
{
...
...
@@ -1493,7 +1514,7 @@ int kk_scene_parse_scene_action(const cJSON* str,const char *sceneId,int isUpdat
}
else
{
res
=
kk_scene_insert_scene_action
(
typeStr
,
node
->
deviceCode
,
iepnum
,
propertyName
->
valuestring
,
propertyValueStr
,
idelay
,
sceneId
,
node
->
fatherDeviceCode
);
propertyName
->
valuestring
,
propertyValueStr
,
idelay
,
sceneId
,
node
->
fatherDeviceCode
);
}
if
(
res
!=
SUCCESS_RETURN
){
...
...
@@ -2751,4 +2772,5 @@ int kk_scene_rebuild_device_active(char *deviceCode,int epNum)
sqlite3_free
(
sqlCmd
);
sqlite3_finalize
(
stmt
);
return
SUCCESS_RETURN
;
}
\ No newline at end of file
}
midware/midware/scene/kk_scene_handle.h
View file @
09e12432
...
...
@@ -87,6 +87,7 @@ int kk_scene_action_add(const char *gwdeviceCode,const char *sceneId,kk_scene_ac
int
BodySensorTrigger_check
(
void
);
int
bodySensor_find
(
const
char
*
deviceCode
,
int
ep
);
int
is_BodySensor_dev
(
const
char
*
productCode
);
int
kk_scene_rebuild_device_active
(
char
*
deviceCode
,
int
epNum
);
#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