SDK の初期化
tio インスタンスの初期化
まず tio インスタンスを初期化します。tio には tio_updater_t と tio_handler_t の2つが存在します。 それぞれの初期化のコードは以下のとおりです。
tio_updater_t インスタンスの初期化
tio_updater_t
はステート更新を行う際に使用するインスタンスです。
使用する前に以下のような初期化処理が必要となります。
#define UPDATER_HTTP_BUFF_SIZE 1024
#define UPDATE_PERIOD_SEC 60
tio_updater_t updater;
char updater_buff[UPDATER_HTTP_BUFF_SIZE];
jkii_token_t updater_tokens[256];
jkii_resource_t updater_resource = {updater_tokens, 256};
tio_updater_init(&updater);
tio_updater_set_app(&updater, KII_APP_ID, KII_APP_HOST);
tio_updater_set_buff(&updater, updater_buff, UPDATER_HTTP_BUFF_SIZE);
tio_updater_set_interval(&updater, UPDATE_PERIOD_SEC);
tio_updater_set_json_parser_resource(&updater, updater_resource);
tio_updater_set_cb_sock_connect(&updater, sock_cb_connect, sock_ssl_ctx);
tio_updater_set_cb_sock_send(&updater, sock_cb_send, sock_ssl_ctx);
tio_updater_set_cb_sock_recv(&updater, sock_cb_recv, sock_ssl_ctx);
tio_updater_set_cb_sock_close(&updater, sock_cb_close, sock_ssl_ctx);
tio_updater_set_cb_task_create(&updater, task_create_cb_impl, NULL);
tio_updater_set_cb_delay_ms(&updater, delay_ms_cb_impl, NULL);
tio_updater_t
SDK がステート更新に利用する情報を格納するための
tio_updater_t
インスタンスです。後続の関数では、初期化後の
tio_updater_t
インスタンスのポインターを渡します。Thing のプログラムが動作している間、初期化したtio_updater_t
インスタンスを保持し続ける必要があります。tio_updater_set_app
KII_APP_ID
の項目は、開発者ポータルにて取得した AppID を設定してください(アプリケーションの作成 を参照してください)。また
KII_APP_HOST
は、https://api-jp.kii.com/
か"JP"
を指定してください。tio_updater_set_buff
ステート更新で行うHTTP通信に利用するバッファを設定します。
tio_updater_set_interval
ステート更新を行うインターバル間隔を秒単位で設定します。
tio_updater_set_json_parser_resource
ステート更新で行うJSON処理の際に利用するリソースを設定します。サンプルでは固定長でリソースを設定していますが、リソースを動的に確保する設定もあります。詳しくは
tio_updater_set_cb_json_parser_resource
メソッドを確認してください。tio_updater_set_cb_sock_*
ステート更新で利用するソケット通信用のコールバック関数を設定します。各コールバック関数には任意のユーザデータ(サンプルでは
sock_ssl_xtc
を渡しています。)を指定できます。ユーザデータはコールバック関数内で受け取ることが可能です。tio_updater_set_cb_task_create
タスク処理を行うためのコールバック関数を設定します。
tio_updater_set_cb_delay_ms
スリープ処理を行うためのコールバック関数を設定します。
tio_handler_t インスタンスの初期化
tio_handler_t
はコマンド受信を行う際に使用するインスタンスです。
使用する前に以下のような初期化処理が必要となります。
#define HANDLER_HTTP_BUFF_SIZE 1024
#define HANDLER_MQTT_BUFF_SIZE 1024
#define HANDLER_KEEP_ALIVE_SEC 300
tio_handler_t handler;
char handler_buff[HANDLER_HTTP_BUFF_SIZE];
jkii_token_t handler_tokens[256];
jkii_resource_t handler_resource = {handler_tokens, 256};
tio_handler_init(&handler);
tio_handler_set_app(&handler, KII_APP_ID, KII_APP_HOST);
tio_handler_set_http_buff(&handler, handler_http_buff, HANDLER_HTTP_BUFF_SIZE);
tio_handler_set_mqtt_buff(&handler, handler_mqtt_buff, HANDLER_MQTT_BUFF_SIZE);
tio_handler_set_keep_alive_interval(&handler, HANDLER_KEEP_ALIVE_SEC);
tio_handler_set_json_parser_resource(&handler, handler_resource);
tio_handler_set_cb_sock_connect_http(&handler, http_cb_connect, http_ssl_ctx);
tio_handler_set_cb_sock_send_http(&handler, http_cb_send, http_ssl_ctx);
tio_handler_set_cb_sock_recv_http(&handler, http_cb_recv, http_ssl_ctx);
tio_handler_set_cb_sock_close_http(&handler, http_cb_close, http_ssl_ctx);
tio_handler_set_cb_sock_connect_mqtt(&handler, mqtt_cb_connect, mqtt_ssl_ctx);
tio_handler_set_cb_sock_send_mqtt(&handler, mqtt_cb_send, mqtt_ssl_ctx);
tio_handler_set_cb_sock_recv_mqtt(&handler, mqtt_cb_recv, mqtt_ssl_ctx);
tio_handler_set_cb_sock_close_mqtt(&handler, mqtt_cb_close, mqtt_ssl_ctx);
tio_handler_set_cb_task_create(&handler, task_create_cb_impl, NULL);
tio_handler_set_cb_delay_ms(&handler, delay_ms_cb_impl, NULL);
tio_handler_t
SDK がコマンド受信に利用する情報を格納するための
tio_handler_t
インスタンスです。後続の関数では、初期化後の
tio_handler_t
インスタンスのポインターを渡します。Thing のプログラムが動作している間、初期化したtio_handler_t
インスタンスを保持し続ける必要があります。tio_handler_set_app
KII_APP_ID
の項目は、開発者ポータルにて取得した AppID を設定してください(アプリケーションの作成 を参照してください)。また
KII_APP_HOST
は、https://api-jp.kii.com/
か"JP"
を指定してください。tio_handler_set_http_buff
コマンド受信で行うHTTP通信に利用するバッファを設定します。
tio_handler_set_mqtt_buff
コマンド受信で行うMQTT通信に利用するバッファを設定します。
tio_handler_set_keep_alive_interval
コマンド受信で行うMQTT通信の
Keep-Alive
間隔を秒単位で設定します。tio_handler_set_json_parser_resource
コマンド受信で行うJSON処理の際に利用するリソースを設定します。サンプルでは固定長でリソースを設定していますが、リソースを動的に確保する設定もあります。詳しくは
tio_handler_set_cb_json_parser_resource
メソッドを確認してください。tio_handler_set_cb_sock_*
コマンド受信で利用するソケット通信用のコールバック関数を設定します。各コールバック関数には任意のユーザデータを指定できます。ユーザデータはコールバック関数内で受け取ることが可能です。ソケット通信用コールバック関数はHTTP用とMQTT用の2種類が存在します。両方使用するのでどちらも設定してください。
tio_handler_set_cb_sock_recv_mqtt
に設定するコールバック関数はブロッキングモードで実装してください。非ブロッキングモードで実装した場合、コマンドの受信漏れなどが発生する原因となります。tio_handler_set_cb_task_create
タスク処理を行うためのコールバック関数を設定します。
tio_handler_set_cb_delay_ms
スリープ処理を行うためのコールバック関数を設定します。
これらの設定を行うことで初期化処理は完了となります。ただしターゲット環境によってはさらに設定が必要になる可能性があります。その場合は tio.h
内にある他のセッターメソッドを使用して環境に合わせた設定を行ってください。