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
95aad7e2
Commit
95aad7e2
authored
Aug 11, 2020
by
whmaizmy
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
【修改内容】增加子设备数据库管理模块
【提交人】陈伟灿
parent
3c4fdd06
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
262 additions
and
31 deletions
+262
-31
midware/midware/dm/kk_dm_mng.c
midware/midware/dm/kk_dm_mng.c
+7
-4
midware/midware/dm/kk_linkkit.c
midware/midware/dm/kk_linkkit.c
+7
-2
midware/midware/dm/kk_sub_db.c
midware/midware/dm/kk_sub_db.c
+222
-0
midware/midware/dm/kk_sub_db.h
midware/midware/dm/kk_sub_db.h
+20
-0
midware/midware/dm/kk_wlist_mng.c
midware/midware/dm/kk_wlist_mng.c
+6
-25
No files found.
midware/midware/dm/kk_dm_mng.c
View file @
95aad7e2
...
@@ -221,10 +221,13 @@ int dm_mgr_device_create(_IN_ int dev_type, _IN_ char product_key[PRODUCT_KEY_MA
...
@@ -221,10 +221,13 @@ int dm_mgr_device_create(_IN_ int dev_type, _IN_ char product_key[PRODUCT_KEY_MA
memset
(
name
,
0x0
,
sizeof
(
name
));
memset
(
name
,
0x0
,
sizeof
(
name
));
kk_get_tsl_by_productKey
(
product_key
,
name
);
kk_get_tsl_by_productKey
(
product_key
,
name
);
tsl_str
=
kk_load_json
(
name
);
tsl_str
=
kk_load_json
(
name
);
res
=
kk_tsl_create
(
tsl_str
,
strlen
(
tsl_str
),
&
node
->
dev_shadow
);
if
(
tsl_str
!=
NULL
)
free
(
tsl_str
);
{
if
(
res
!=
0
){
res
=
kk_tsl_create
(
tsl_str
,
strlen
(
tsl_str
),
&
node
->
dev_shadow
);
return
FAIL_RETURN
;
free
(
tsl_str
);
if
(
res
!=
0
){
return
FAIL_RETURN
;
}
}
}
INIT_LIST_HEAD
(
&
node
->
linked_list
);
INIT_LIST_HEAD
(
&
node
->
linked_list
);
...
...
midware/midware/dm/kk_linkkit.c
View file @
95aad7e2
...
@@ -1743,6 +1743,7 @@ int iot_linkkit_subdev_query_id(char product_key[IOTX_PRODUCT_KEY_LEN + 1], char
...
@@ -1743,6 +1743,7 @@ int iot_linkkit_subdev_query_id(char product_key[IOTX_PRODUCT_KEY_LEN + 1], char
int
kk_mid_subdev_add
(
char
product_key
[
PRODUCT_KEY_MAXLEN
],
char
device_name
[
DEVICE_NAME_MAXLEN
],
char
device_secret
[
DEVICE_SECRET_MAXLEN
],
char
device_mac
[
DEVICE_MAC_MAXLEN
]){
int
kk_mid_subdev_add
(
char
product_key
[
PRODUCT_KEY_MAXLEN
],
char
device_name
[
DEVICE_NAME_MAXLEN
],
char
device_secret
[
DEVICE_SECRET_MAXLEN
],
char
device_mac
[
DEVICE_MAC_MAXLEN
]){
int
res
=
0
;
int
res
=
0
;
int
devid
=
0
;
int
devid
=
0
;
res
=
dm_mgr_subdev_create
(
product_key
,
device_name
,
device_secret
,
device_mac
,
&
devid
);
res
=
dm_mgr_subdev_create
(
product_key
,
device_name
,
device_secret
,
device_mac
,
&
devid
);
if
(
res
!=
SUCCESS_RETURN
)
{
if
(
res
!=
SUCCESS_RETURN
)
{
printf
(
"subdev create Failed
\n
"
);
printf
(
"subdev create Failed
\n
"
);
...
@@ -1750,7 +1751,11 @@ int kk_mid_subdev_add(char product_key[PRODUCT_KEY_MAXLEN], char device_name[DEV
...
@@ -1750,7 +1751,11 @@ int kk_mid_subdev_add(char product_key[PRODUCT_KEY_MAXLEN], char device_name[DEV
}
}
printf
(
"subdev open susseed, devid = %d
\n
"
,
devid
);
printf
(
"subdev open susseed, devid = %d
\n
"
,
devid
);
res
=
kk_subDev_insert_db
(
0
,
device_mac
,
product_key
,
device_secret
,
device_name
);
if
(
res
!=
SUCCESS_RETURN
)
{
return
FAIL_RETURN
;
}
_iotx_linkkit_mutex_lock
();
res
=
_iotx_linkkit_slave_connect
(
devid
);
res
=
_iotx_linkkit_slave_connect
(
devid
);
if
(
res
!=
SUCCESS_RETURN
)
{
if
(
res
!=
SUCCESS_RETURN
)
{
_iotx_linkkit_mutex_unlock
();
_iotx_linkkit_mutex_unlock
();
...
@@ -1762,7 +1767,7 @@ int kk_mid_subdev_add(char product_key[PRODUCT_KEY_MAXLEN], char device_name[DEV
...
@@ -1762,7 +1767,7 @@ int kk_mid_subdev_add(char product_key[PRODUCT_KEY_MAXLEN], char device_name[DEV
_iotx_linkkit_mutex_unlock
();
_iotx_linkkit_mutex_unlock
();
return
FAIL_RETURN
;
return
FAIL_RETURN
;
}
}
_iotx_linkkit_mutex_unlock
();
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
...
...
midware/midware/dm/kk_sub_db.c
0 → 100644
View file @
95aad7e2
#include <stdio.h>
#include "kk_tsl_api.h"
#include "kk_sub_db.h"
#include "sqlite3.h"
#define KK_SUB_DB_FILE "subDevice.db"
typedef
struct
{
void
*
mutex
;
int
subDevNum
;
sqlite3
*
pDb
;
}
kk_subDb_ctx_t
;
static
kk_subDb_ctx_t
s_kk_subDb_ctx
=
{
NULL
,
0
,
NULL
};
static
kk_subDb_ctx_t
*
_kk_subDb_get_ctx
(
void
)
{
return
&
s_kk_subDb_ctx
;
}
static
void
_kk_subDb_lock
(
void
)
{
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
if
(
ctx
->
mutex
)
{
HAL_MutexLock
(
ctx
->
mutex
);
}
}
static
void
_kk_subDb_unlock
(
void
)
{
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
if
(
ctx
->
mutex
)
{
HAL_MutexUnlock
(
ctx
->
mutex
);
}
}
static
int
kk_subDev_db_Init
(
void
)
{
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
//eUtils_LockLock(&sLock);
_kk_subDb_lock
();
if
(
sqlite3_open_v2
(
KK_SUB_DB_FILE
,
&
ctx
->
pDb
,
SQLITE_OPEN_READWRITE
|
SQLITE_OPEN_CREATE
|
SQLITE_OPEN_FULLMUTEX
,
NULL
)
!=
SQLITE_OK
)
{
printf
(
"Error initialising linkage database (%s)"
,
sqlite3_errmsg
(
ctx
->
pDb
));
_kk_subDb_unlock
();
return
FAIL_RETURN
;
}
printf
(
"sub db Database opened
\n
"
);
{
const
char
*
pSubDevTable
=
"CREATE TABLE IF NOT EXISTS SubDeviceInfo(idx INTEGER,isOnline INTEGER,deviceMac varchar(17),productId varchar(33), deviceSN varchar(33), deviceId varchar(33))"
;
char
*
pcErr
;
// DBG_vPrintf(DBG_SQL, "Execute SQL: '%s'\n", pConditionTableDef);
if
(
sqlite3_exec
(
ctx
->
pDb
,
pSubDevTable
,
NULL
,
NULL
,
&
pcErr
)
!=
SQLITE_OK
)
{
printf
(
"Error creating table (%s)
\n
"
,
pcErr
);
sqlite3_free
(
pcErr
);
//eUtils_LockUnlock(&sLock);
_kk_subDb_unlock
();
return
FAIL_RETURN
;
}
}
//eUtils_LockUnlock(&sLock);
_kk_subDb_unlock
();
return
SUCCESS_RETURN
;
}
static
int
_kk_load_subDevice
(
void
)
{
const
char
*
searchCmd
=
"select * from SubDeviceInfo;"
;
sqlite3_stmt
*
stmt
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
int
devId
;
int
res
=
0
;
_kk_subDb_lock
();
sqlite3_prepare_v2
(
ctx
->
pDb
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
printf
(
"_kk_load_subDevice total_column = %d
\n
"
,
sqlite3_column_count
(
stmt
));
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
res
=
dm_mgr_subdev_create
(
sqlite3_column_text
(
stmt
,
2
),
sqlite3_column_text
(
stmt
,
3
),
sqlite3_column_text
(
stmt
,
4
),
sqlite3_column_text
(
stmt
,
5
),
&
devId
);
if
(
res
!=
SUCCESS_RETURN
){
printf
(
"[%s][%d]dm_mgr_subdev_create FAIL!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
}
else
{
ctx
->
subDevNum
++
;
}
iotx_dm_subscribe
(
devId
);
usleep
(
100000
);
}
sqlite3_finalize
(
stmt
);
_kk_subDb_unlock
();
return
SUCCESS_RETURN
;
}
int
kk_subDb_init
(
void
)
{
int
res
=
0
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
/* Create Mutex */
ctx
->
mutex
=
HAL_MutexCreate
();
if
(
ctx
->
mutex
==
NULL
)
{
return
FAIL_RETURN
;
}
res
=
kk_subDev_db_Init
();
if
(
res
!=
SUCCESS_RETURN
){
printf
(
"[%s][%d]kk_wlist_db_Init FAIL!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
}
_kk_load_subDevice
();
return
SUCCESS_RETURN
;
}
static
int
_kk_check_subDev_exist
(
const
char
*
device_mac
)
{
int
isExist
=
0
;
sqlite3_stmt
*
stmt
;
char
*
pmac
=
NULL
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
const
char
*
searchCmd
=
"select * from SubDeviceInfo;"
;
_kk_subDb_lock
();
sqlite3_prepare_v2
(
ctx
->
pDb
,
searchCmd
,
strlen
(
searchCmd
),
&
stmt
,
NULL
);
printf
(
"total_column = %d
\n
"
,
sqlite3_column_count
(
stmt
));
while
(
sqlite3_step
(
stmt
)
==
SQLITE_ROW
){
pmac
=
sqlite3_column_text
(
stmt
,
1
);
if
(
!
strcmp
(
device_mac
,
pmac
))
{
isExist
=
1
;
break
;
}
}
printf
(
"
\n
"
);
sqlite3_finalize
(
stmt
);
_kk_subDb_unlock
();
return
isExist
;
}
int
kk_subDev_insert_db
(
int
isOnline
,
char
device_mac
[
DEVICE_MAC_MAXLEN
],
char
product_Id
[
PRODUCT_KEY_MAXLEN
],
\
char
device_SN
[
DEVICE_SN_MAXLEN
],
char
device_Id
[
DEVICE_NAME_MAXLEN
])
{
const
char
*
insertCmd
=
"insert into SubDeviceInfo (idx,isOnline, deviceMac, productId,deviceSN,deviceId) values ('%d','%d', '%s', '%s','%s','%s');"
;
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
if
(
_kk_check_subDev_exist
((
const
char
*
)
device_mac
)
==
1
)
{
printf
(
"[%s][%d] DATA ALREADY EXIST!!!
\n
"
,
__FUNCTION__
,
__LINE__
);
return
SUCCESS_RETURN
;
}
_kk_subDb_lock
();
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
ctx
->
subDevNum
,
isOnline
,
device_mac
,
product_Id
,
device_SN
,
device_Id
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
printf
(
"SQL error: %s
\n
"
,
zErrMsg
);
sqlite3_free
(
zErrMsg
);
}
else
{
printf
(
"Table insert data successfully
\n
"
);
}
sqlite3_free
(
sqlCmd
);
ctx
->
subDevNum
++
;
_kk_subDb_unlock
();
return
SUCCESS_RETURN
;
}
int
kk_subDev_delete_byMac
(
char
device_mac
[
DEVICE_MAC_MAXLEN
])
{
const
char
*
deleteCmd
=
"delete from SubDeviceInfo where deviceMac = %s;"
;
char
*
sqlCmd
=
NULL
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
kk_subDb_ctx_t
*
ctx
=
_kk_subDb_get_ctx
();
_kk_subDb_lock
();
sqlCmd
=
sqlite3_mprintf
(
deleteCmd
,
device_mac
);
printf
(
"Table delete data sqlCmd:%s
\n
"
,
sqlCmd
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
printf
(
"SQL error: %s
\n
"
,
zErrMsg
);
sqlite3_free
(
zErrMsg
);
}
else
{
printf
(
"Table delete data successfully
\n
"
);
}
sqlite3_free
(
sqlCmd
);
_kk_subDb_unlock
();
return
SUCCESS_RETURN
;
}
int
kk_subDev_update_online
(
int
isOnline
,
const
char
*
device_mac
)
{
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 isOnline=%d WHERE device_mac=%s"
,
isOnline
,
device_mac
);
printf
(
"kk_subDev_update_online sqlCmd:%s
\n
"
,
sqlCmd
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
printf
(
"SQL error: %s
\n
"
,
zErrMsg
);
sqlite3_free
(
zErrMsg
);
}
else
{
printf
(
"Table updata data successfully
\n
"
);
}
sqlite3_free
(
sqlCmd
);
_kk_subDb_unlock
();
return
SUCCESS_RETURN
;
}
midware/midware/dm/kk_sub_db.h
0 → 100644
View file @
95aad7e2
#ifndef _KK_SUBDEV_DB_H_
#define _KK_SUBDEV_DB_H_
#include "kk_tsl_common.h"
typedef
struct
{
int
isOnline
;
int
index
;
char
device_mac
[
DEVICE_MAC_MAXLEN
];
char
product_id
[
PRODUCT_KEY_MAXLEN
];
char
device_sn
[
DEVICE_SN_MAXLEN
];
char
device_id
[
DEVICE_NAME_MAXLEN
];
}
kk_dm_subdev_t
;
int
kk_subDb_init
(
void
);
int
kk_subDev_insert_db
(
int
isOnline
,
char
device_mac
[
DEVICE_MAC_MAXLEN
],
char
product_Id
[
PRODUCT_KEY_MAXLEN
],
\
char
device_SN
[
DEVICE_SN_MAXLEN
],
char
device_Id
[
DEVICE_NAME_MAXLEN
]);
int
kk_subDev_delete_byMac
(
char
device_mac
[
DEVICE_MAC_MAXLEN
]);
int
kk_subDev_update_online
(
int
isOnline
,
const
char
*
device_mac
);
#endif
midware/midware/dm/kk_wlist_mng.c
View file @
95aad7e2
...
@@ -71,7 +71,6 @@ static int kk_wlist_db_Init(void)
...
@@ -71,7 +71,6 @@ static int kk_wlist_db_Init(void)
}
}
}
}
printf
(
"linkag Database initialised
\n
"
);
//eUtils_LockUnlock(&sLock);
//eUtils_LockUnlock(&sLock);
_kk_wlist_unlock
();
_kk_wlist_unlock
();
...
@@ -106,21 +105,13 @@ static int kk_wlist_insert_db(int index,char device_mac[DEVICE_MAC_MAXLEN],char
...
@@ -106,21 +105,13 @@ static int kk_wlist_insert_db(int index,char device_mac[DEVICE_MAC_MAXLEN],char
{
{
const
char
*
insertCmd
=
"insert into WhiteList (idx, deviceMac, productId,deviceSN,deviceId) values ('%d', '%s', '%s','%s','%s');"
;
const
char
*
insertCmd
=
"insert into WhiteList (idx, deviceMac, productId,deviceSN,deviceId) values ('%d', '%s', '%s','%s','%s');"
;
char
*
sqlCmd
=
NULL
;
char
*
sqlCmd
=
NULL
;
int
len
=
0
;
int
rc
=
0
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
char
*
zErrMsg
=
0
;
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
_kk_wlist_lock
();
_kk_wlist_lock
();
len
=
strlen
(
insertCmd
)
+
DEVICE_MAC_MAXLEN
+
DEVICE_SN_MAXLEN
+
PRODUCT_KEY_MAXLEN
+
DEVICE_NAME_MAXLEN
;
sqlCmd
=
(
char
*
)
malloc
(
len
);
sqlCmd
=
sqlite3_mprintf
(
insertCmd
,
index
,
device_mac
,
product_Id
,
device_SN
,
device_Id
);
if
(
sqlCmd
==
NULL
)
{
_kk_wlist_unlock
();
return
MEMORY_NOT_ENOUGH
;
}
memset
(
sqlCmd
,
0x0
,
len
);
sprintf
(
sqlCmd
,
insertCmd
,
index
,
device_mac
,
product_Id
,
device_SN
,
device_Id
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
if
(
rc
!=
SQLITE_OK
){
...
@@ -129,8 +120,7 @@ static int kk_wlist_insert_db(int index,char device_mac[DEVICE_MAC_MAXLEN],char
...
@@ -129,8 +120,7 @@ static int kk_wlist_insert_db(int index,char device_mac[DEVICE_MAC_MAXLEN],char
}
else
{
}
else
{
printf
(
"Table insert data successfully
\n
"
);
printf
(
"Table insert data successfully
\n
"
);
}
}
free
(
sqlCmd
);
sqlite3_free
(
sqlCmd
);
sqlCmd
=
NULL
;
_kk_wlist_unlock
();
_kk_wlist_unlock
();
return
SUCCESS_RETURN
;
return
SUCCESS_RETURN
;
}
}
...
@@ -139,21 +129,12 @@ static int _kk_wlist_delete_db_byMac(char device_mac[DEVICE_MAC_MAXLEN])
...
@@ -139,21 +129,12 @@ static int _kk_wlist_delete_db_byMac(char device_mac[DEVICE_MAC_MAXLEN])
{
{
const
char
*
deleteCmd
=
"delete from WhiteList where deviceMac = %s;"
;
const
char
*
deleteCmd
=
"delete from WhiteList where deviceMac = %s;"
;
char
*
sqlCmd
=
NULL
;
char
*
sqlCmd
=
NULL
;
int
len
=
0
;
int
rc
=
0
;
int
rc
=
0
;
char
*
zErrMsg
=
0
;
char
*
zErrMsg
=
0
;
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
kk_wlist_ctx_t
*
ctx
=
_kk_wlist_get_ctx
();
_kk_wlist_lock
();
_kk_wlist_lock
();
len
=
strlen
(
deleteCmd
)
+
DEVICE_MAC_MAXLEN
;
sqlCmd
=
sqlite3_mprintf
(
deleteCmd
,
device_mac
);
sqlCmd
=
(
char
*
)
malloc
(
len
);
if
(
sqlCmd
==
NULL
)
{
_kk_wlist_unlock
();
return
MEMORY_NOT_ENOUGH
;
}
memset
(
sqlCmd
,
0x0
,
len
);
sprintf
(
sqlCmd
,
deleteCmd
,
device_mac
);
printf
(
"Table delete data sqlCmd:%s
\n
"
,
sqlCmd
);
printf
(
"Table delete data sqlCmd:%s
\n
"
,
sqlCmd
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
rc
=
sqlite3_exec
(
ctx
->
pDb
,
sqlCmd
,
NULL
,
NULL
,
&
zErrMsg
);
if
(
rc
!=
SQLITE_OK
){
if
(
rc
!=
SQLITE_OK
){
...
@@ -162,8 +143,8 @@ static int _kk_wlist_delete_db_byMac(char device_mac[DEVICE_MAC_MAXLEN])
...
@@ -162,8 +143,8 @@ static int _kk_wlist_delete_db_byMac(char device_mac[DEVICE_MAC_MAXLEN])
}
else
{
}
else
{
printf
(
"Table delete data successfully
\n
"
);
printf
(
"Table delete data successfully
\n
"
);
}
}
free
(
sqlCmd
);
sqlite3_
free
(
sqlCmd
);
sqlCmd
=
NULL
;
_kk_wlist_unlock
();
_kk_wlist_unlock
();
return
SUCCESS_RETURN
;
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