(*arms_get_status_cb_t)()

関数

typedef int (*arms_get_status_cb_t)(uint32_t id, const char *buff, size_t buff_len, char *result_buff, size_t result_len, int *next, void *udata)

呼び出し方向

libarms->アプリケーション

目的

SA の動作状態を取得する。コールバックテーブルへの登録は必須ではない。

説明

指定されたモジュール ID のステータス情報を取得する。

引数

uint32_t id
モジュールID。ID 自体は SA の機種ごとに定義される。
const char *buff
リクエストバッファ。状態取得時にRS にて指定された追加パラメータ情報が格納される バッファを示すポインタであり、NULL が渡される可能性はない。 バッファの内容は文字列あるいはバイナリデータ。buff_len で 示されるサイズ分のデータが文字列あるいはバイナリ形式で格納され、 その直後にNUL 文字が格納される。
size_t buff_len
リクエストバッファに格納されたパラメータ情報のバイト数。0 が渡される可能性がある。
char *result_buff
動作状態情報を格納すべきlibarms 内のバッファ。バッファとしてNULL が渡される可能性はない。
size_t result_len
バッファ長。バッファ長には0 が渡される可能性はない。
int *next

呼ばれたときには、ポインタが指す領域に下記の値が入っている。

ARMS_FRAG_FIRST
そのモジュールにおいて最初の呼び出し
ARMS_FRAG_CONTINUE
そのモジュールにおいて二度目以降の呼び出し

コールバック関数では、渡されたバッファ長が実際の内容を収めるには小さく、 分割取得を利用する場合、ブロックの情報(フラグ) を書き込む必要がある。

(ARMS_FRAG_FIRST | ARMS_FRAG_FINISHED)
最初のブロックで、続くブロックはない
(ARMS_FRAG_FIRST | ARMS_FRAG_CONTINUE)
最初のブロックで、続くブロックがある
ARMS_FRAG_CONTINUE
最初以外のブロックで、続くブロックがある
ARMS_FRAG_FINISHED
続くブロックはない
void *udata
arms_event_loop() で指定したポインタ

返り値

0
ステータス情報の取得が正常に終了(US-ASCII 文字列)
ARMS_RESULT_BYTES (バイト数)
ステータス情報の取得が正常に終了(格納データの有効なバイト数)
上記以外の値
異常終了(エラーコード)

ノート

バイト数を返すときに、result_len で指定されたバイト数よりも大きな値 あるいはマイナスの値を指定した場合の動作は未定義。

ヒストリ

このAPIはVer2.10で追加された。

目次

前のトピックへ

(*arms_read_config_cb_t)()

次のトピックへ

(*arms_command_cb_t)()

リンク