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 内にある他のセッターメソッドを使用して環境に合わせた設定を行ってください。