このトピックでは、C 用 Link SDK を使用して Message Queuing Telemetry Transport (MQTT) 経由でデバイスを IoT Platform に接続するときに呼び出す必要がある API 操作について説明します。
IOT_MQTT_Construct
プロトタイプ
void *IOT_MQTT_Construct(iotx_mqtt_param_t *pInitParams)説明
MQTT 経由で IoT Platform に接続する操作を呼び出すときに、
pInitParamsパラメーターをNULLに設定すると、他のパラメーターにはデフォルト値が使用されます。パラメーター
パラメーター
型
カテゴリ
説明
pInitParams
iotx_mqtt_param_t *
リクエスト
MQTT 初期化パラメーター。リクエストパラメーターに NULL を指定すると、構造体内のパラメーターにはデフォルト値が使用されます。
構造体内のパラメーター
typedef struct { uint16_t port; // ポート番号 const char *host; // ホスト名 const char *client_id; // クライアントID const char *username; // ユーザー名 const char *password; // パスワード const char *pub_key; // 公開鍵 const char *customize_info; // カスタム情報 uint8_t clean_session; // クリーンセッション uint32_t request_timeout_ms; // リクエストタイムアウト uint32_t keepalive_interval_ms; // キープアライブ間隔 uint32_t write_buf_size; // 書き込みバッファサイズ uint32_t read_buf_size; // 読み取りバッファサイズ iotx_mqtt_event_handle_t handle_event; // イベントハンドラ } iotx_mqtt_param_t, *iotx_mqtt_param_pt;パラメーター
説明
port
MQTT サーバーのポート番号。
host
MQTT サーバーのエンドポイント。
client_id
MQTT クライアントの ID。
username
MQTT サーバーにログインするために使用されるユーザー名。
password
MQTT サーバーにログインするために使用されるパスワード。
pub_key
MQTT 接続の暗号化方式とキー。
clean_session
MQTT のクリーンセッション機能を使用するかどうかを指定します。
request_timeout_ms
MQTT メッセージのタイムアウト期間。
keepalive_interval_ms
MQTT ハートビートのタイムアウト期間。
write_buf_size
送信される MQTT メッセージを格納するために使用されるバッファの最大サイズ。
read_buf_size
受信した MQTT メッセージを格納するために使用されるバッファの最大サイズ。
handle_event
MQTT モジュールからイベントデータを受信するために使用するカスタムコールバック関数。
customize_info
レポートされるカスタムデータ。文字列内のキーと値のペアをコンマ (,) で区切ります。たとえば、
"pid=123456,mid=abcd";は、製造元とモジュールに関する情報を記述するために使用されます。説明pInitParams 構造体の要素を 0 に設定するか、pInitParams パラメーターを NULL に設定すると、デフォルトの事前定義パラメーターが使用されます。
戻り値
値
説明
NULL
失敗
NULL以外
MQTT ハンドル
IOT_MQTT_Destroy
プロトタイプ
int IOT_MQTT_Destroy(void **phandle);説明
この操作を呼び出して、MQTT 接続を閉じ、関連するリソースを解放できます。
パラメーター
パラメーター
型
カテゴリ
説明
phandle
void **
リクエスト
MQTT ハンドル。パラメーターを NULL に設定できます。
戻り値
値
説明
0
成功
< 0
失敗
IOT_MQTT_Yield
プロトタイプ
int IOT_MQTT_Yield(void *handle, int timeout_ms);説明
この操作を呼び出して、ネットワークパケットを受信し、ネットワークパケット内のメッセージをカスタムコールバック関数に転送できます。
パラメーター
パラメーター
型
カテゴリ
説明
handle
void *
リクエスト
MQTT ハンドル。パラメーターを NULL に設定できます。
timeout_ms
int
リクエスト
パケットを受信するリクエストのタイムアウト期間。
戻り値の説明
値
説明
0
成功
IOT_MQTT_CheckStateNormal
プロトタイプ
int IOT_MQTT_CheckStateNormal(void *handle);説明
この操作を呼び出して、MQTT 接続の状態をクエリできます。
パラメーター
パラメーター
型
カテゴリ
説明
handle
void *
リクエスト
MQTT ハンドル。パラメーターを NULL に設定できます。
戻り値の説明
値
説明
0
切断
1
接続
IOT_MQTT_Subscribe
プロトタイプ
int IOT_MQTT_Subscribe(void *handle, const char *topic_filter, iotx_mqtt_qos_t qos, iotx_mqtt_event_handle_func_fpt topic_handle_func, void *pcontext);説明
この操作を呼び出して、IoT Platform の MQTT Topic をサブスクライブできます。
パラメーター
パラメーター
型
カテゴリ
説明
handle
void *
リクエスト
MQTT ハンドル。パラメーターを NULL に設定できます。
topic_filter
const char *
リクエスト
サブスクライブする Topic。
qos
iotx_mqtt_qos_t
リクエスト
サービス品質 (QoS) ポリシー。
topic_handle_func
iotx_mqtt_event_handle_func_fpt
リクエスト
MQTT メッセージを受信するために使用するコールバック関数。
pcontext
void *
リクエスト
カスタムコンテキスト。コンテキストはコールバック関数から返されます。
戻り値の説明
値
説明
0
成功
< 0
失敗
IOT_MQTT_Subscribe_Sync
プロトタイプ
int IOT_MQTT_Subscribe_Sync(void *handle, const char *topic_filter, iotx_mqtt_qos_t qos, iotx_mqtt_event_handle_func_fpt topic_handle_func, void *pcontext, int timeout_ms);説明
この操作を呼び出して、IoT Platform の MQTT Topic をサブスクライブできます。この操作は同期的に機能します。
パラメーター
パラメーター
型
カテゴリ
説明
handle
void *
リクエスト
MQTT ハンドル。パラメーターを NULL に設定できます。
topic_filter
const char *
リクエスト
サブスクライブする Topic。
qos
iotx_mqtt_qos_t
リクエスト
QoS ポリシー。
topic_handle_func
iotx_mqtt_event_handle_func_fpt
リクエスト
MQTT メッセージを受信するために使用するコールバック関数。
pcontext
void *
リクエスト
カスタムコンテキスト。コンテキストはコールバック関数から返されます。
timeout_ms
int
リクエスト
同期呼び出しのタイムアウト期間。
戻り値の説明
値
説明
0
成功
< 0
失敗
IOT_MQTT_Unsubscribe
プロトタイプ
int IOT_MQTT_Unsubscribe(void *handle, const char *topic_filter);説明
この操作を呼び出して、IoT Platform の Topic のサブスクリプションを解除できます。
パラメーター
パラメーター
型
カテゴリ
説明
handle
void *
リクエスト
MQTT ハンドル。パラメーターを NULL に設定できます。
topic_filter
const char *
リクエスト
サブスクリプションを解除する Topic。
戻り値の説明
値
説明
0
成功
< 0
失敗
IOT_MQTT_Publish
プロトタイプ
int IOT_MQTT_Publish(void *handle, const char *topic_name, iotx_mqtt_topic_info_pt topic_msg);説明
この操作を呼び出して、Topic にメッセージをプッシュできます。
パラメーター
パラメーター
型
カテゴリ
説明
handle
void *
リクエスト
MQTT ハンドル。パラメーターを NULL に設定できます。
topic_name
const char *
リクエスト
メッセージをプッシュする Topic。
topic_msg
iotx_mqtt_topic_info_pt
リクエスト
プッシュするメッセージ。
戻り値の説明
値
説明
> 0
成功。この値は、QoS 1 メッセージが受信されたときに返されます。この値は、レポートされたパケットに含まれる MQTT メッセージの ID です。この値は、MQTT プロトコルの
messageIdフィールドの値に対応します。0
成功。この値は、QoS 0 メッセージが受信されたときに返されます。
< 0
失敗
IOT_MQTT_Publish_Simple
プロトタイプ
int IOT_MQTT_Publish_Simple(void *handle, const char *topic_name, int qos, void *data, int len)説明
この操作を呼び出して、Topic にメッセージをプッシュできます。
説明IOT_MQTT_Publish: 共通メッセージを送信します。
IOT_MQTT_Publish_Simple: より多くの構成オプションを使用してメッセージを送信します。
IOT_MQTT_Publish 操作を呼び出して、共通メッセージを送信できます。 IOT_MQTT_Publish_Simple 操作を呼び出して、より多くの構成オプションを使用してメッセージを送信できます。
パラメーター
パラメーター
型
カテゴリ
説明
handle
void *
リクエスト
MQTT ハンドル。パラメーターを NULL に設定できます。
topic_name
const char *
リクエスト
メッセージをプッシュする Topic。
qos
int
リクエスト
QoS ポリシー。
data
void *
リクエスト
プッシュするメッセージ。
len
int
リクエスト
メッセージの長さ。
戻り値の説明
値
説明
> 0
成功。この値は、QoS 1 メッセージが受信されたときに返されます。この値は、レポートされたパケットに含まれる MQTT メッセージの ID です。この値は、MQTT プロトコルの
messageIdフィールドの値に対応します。0
成功。この値は、QoS 0 メッセージが受信されたときに返されます。
< 0
失敗