Thing SDK for Kii Thing Interaction Framework (kii thing-if) .
When you build this SDK for the first time, you need to execute following commands:
# git submodule init
# git submodule update
# cd kii
# git submodule init
# git submodule update
# cd ../
These commands retrieve required modules for this SDK.
$ mkdir build
$ cd build
$ cmake ../
$ make
After the build, you can install SDK libraries by following commands. (Assume current directory is build you've created on build.)
$ make install
Or if you want to change install location:
$ make DESTDIR={path to install} install
By specifying DESTDIR
, libraries and headers are installed in {path to install}/usr/local/lib and {path to install}/usr/local/include respectively.
If you need to enable -g option and debug log output, following command will generate the debug build.
$ mkdir build
$ cd build
$ cmake -DCMAKE_BUILD_TYPE=DEBUG ../
$ make
Edit CMakeLists.txt and change following line.
SET(CMAKE_C_FLAGS "-DKII_PUSH_KEEP_ALIVE_INTERVAL_SECONDS=300")
Unit is seconds and by default it is set to 300 seconds. If 0 is specified, turn off the keep alive mechanism defined in MQTT. Setting short period will increase the load of MQTT broker when there is a lot of connected devices. For details, please refer to the MQTT spec.
Edit CMakeLists.txt and change following line.
SET(CMAKE_C_FLAGS "-DKII_JSON_FIXED_TOKEN_NUM=128")
The number indicates amounts of memory used to parse JSON when received it from server. Memory is allocated on stack. By default it is set to 128. Size of memory allocated by this can be calculated as following.
sizeof(kii_json_token_t) * KII_JSON_FIXED_TOKEN_NUM
If you prefer to dynamic allocation than fixed memory allocation,
Edit CMakeLists.txt and remove the line specifies KII_JSON_FIXED_TOKEN_NUM
.
In this case, you need to implement KII_JSON_RESOURCE_CB
function and set the
pointer in kii_t
struct.
By default SDK connect to a MQTT broker using secure connection(tls). If you need to use non-secure connection(tcp), Edit CMakeLists.txt and enable following line. (By removing # in the head.)
SET(CMAKE_C_FLAGS "-DKII_MQTT_USE_PORT_TCP=1")
linux-sample shows how to implement the client application works in the Thing.
SDK requires application to implement callback functions.
To communucate with server, socket API implmementation is required. Please refer to linux-sample/sys_cb_impl.h and linux-sample/sys_cb_linux.c
Actual implementations are in linux-env directory.
To handle tasks asynchronusly, task implementation is required.
pthread
live up to expectation in linux environment and task
does in RTOS environments.
List of task name symbols.
-
KII_THING_IF_TASK_NAME_UPDATE_STATUS
The task of sending onboarded status.
-
KII_TASK_NAME_RECV_MSG
The task of receiving push messages.
-
KII_TASK_NAME_PING_REQ
The task of sending ping request.
In RTOS, You'll specify stack size, depth and priority, etc depending on the environment.
# cd tests/small_tests
# make test