SSM
Defines | Typedefs | Enumerations | Functions

SSM_API

Defines

#define SSM_SNAME_MAX   32
#define createSSM_time(n, u, s, l, c)   createSSM(n,u,s,l,c)

Typedefs

typedef char * SSM_sid
typedef int SSM_tid

Enumerations

enum  SSM_open_mode { SSM_READ = 0x20, SSM_WRITE = 0x40, SSM_EXCLUSIVE = 0x80, SSM_MODE_MASK = 0xe0 }
 

オープンモードのフラグ

More...
enum  { SSM_ERROR_FUTURE = -1, SSM_ERROR_PAST = -2, SSM_ERROR_NO_DATA = -3 }
 

TIDのエラー値

More...

Functions

void errSSM (void)
 SSMでエラーが発生したときに詳細を表示する
int initSSM (void)
 SSMへの接続
int endSSM (void)
 SSMからの切断
SSM_sid createSSM (const char *stream_name, int stream_id, size_t stream_size, ssmTimeT life, ssmTimeT cycle) __attribute__((warn_unused_result))
 ストリームの作成
int releaseSSM (SSM_sid *sid)
 ストリームの破棄
SSM_sid openSSM (const char *stream_name, int stream_id, char open_mode) __attribute__((warn_unused_result))
 ストリームへの接続
int closeSSM (SSM_sid *sid)
 ストリームの破棄
SSM_tid getTID (SSM_sid sid, ssmTimeT ytime)
 TimeIDの探索
SSM_tid getTID_top (SSM_sid sid)
 SSM上に存在する最も新しいTimeIDを取得する
SSM_tid getTID_bottom (SSM_sid sid)
 SSM上に存在する最も古いTimeIDを取得する
int waitTID (SSM_sid sid, SSM_tid tid)
 指定したTimeIDになるまで待つ
SSM_tid readSSM (SSM_sid sid, void *data, ssmTimeT *ytime, SSM_tid tid) __attribute__((warn_unused_result))
 指定したTimeIDのデータを読み込む
SSM_tid readSSM_time (SSM_sid sid, void *data, ssmTimeT ytime, ssmTimeT *ret_time) __attribute__((warn_unused_result))
 指定した時刻より前で、指定した時刻に最も近いデータを読み込む
SSM_tid readSSMP (SSM_sid sid, void *adata, ssmTimeT *ytime, SSM_tid tid, void(*callback)(const void *ssmp, void *data, void *user_data), void *user_data) __attribute__((warn_unused_result))
SSM_tid readSSMP_time (SSM_sid sid, void *adata, ssmTimeT ytime, ssmTimeT *ret_time, void(*callback)(const void *ssmp, void *data, void *user_data), void *user_data) __attribute__((warn_unused_result))
SSM_tid writeSSM_time (SSM_sid sid, const void *data, ssmTimeT ytime)
 指定したタイムスタンプを付けてデータを書き込む
SSM_tid writeSSM (SSM_sid sid, const void *data, ssmTimeT ytime)
 writeSSM_time と一緒。互換性のため、残してある。
SSM_tid writeSSMP (SSM_sid sid, const void *adata, ssmTimeT ytime, void(*callback)(void *ssmp, const void *data, void *user_data), void *user_data)
SSM_tid writeSSMP_time (SSM_sid sid, const void *adata, ssmTimeT ytime, void(*callback)(void *ssmp, const void *data, void *user_data), void *user_data)
int set_propertySSM (const char *stream_name, int stream_id, const void *data, size_t size)
 SSMへのプロパティーの登録
int get_propertySSM (const char *stream_name, int stream_id, void *data)
 SSMからのプロパティーの取得
int getSSM_num (void)
int getSSM_name (int n, char *stream_name, int *stream_id, size_t *size)
int getSSM_info (const char *stream_name, int stream_id, size_t *size, int *num, double *cycle, size_t *property_size)
int damp (SSM_sid sid, int mode, int num)
 メモリダンプ

Define Documentation

#define SSM_SNAME_MAX   32

センサ名の最大長さ(8n)


Typedef Documentation

typedef char* SSM_sid

ストリーム記憶用の型

typedef int SSM_tid

SSMのデータの書き込み回数カウンタ型


Enumeration Type Documentation

anonymous enum

TIDのエラー値

Enumerator:
SSM_ERROR_FUTURE 

TIDエラー 新しすぎて存在しない

SSM_ERROR_PAST 

TIDエラー 古すぎて存在しない

SSM_ERROR_NO_DATA 

TIDエラー SSM上にデータがまだ存在しない

オープンモードのフラグ

まだフラグを設定しても、プログラムには影響を与えない

Enumerator:
SSM_READ 

読み込みフラグ

SSM_WRITE 

書き込みフラグ

SSM_EXCLUSIVE 

排他フラグ(未実装)

SSM_MODE_MASK 

フラグを取り出すためのマスク


Function Documentation

int closeSSM ( SSM_sid sid)

ストリームの破棄

Parameters:
[in,out]sidSSM管理ID
Return values:
1成功
0失敗

これからのアップデートを考えたとき、プログラム終了時にこの関数を呼び出すことが望ましい。

See also:
openSSM
SSM_sid createSSM ( const char *  stream_name,
int  stream_id,
size_t  stream_size,
ssmTimeT  life,
ssmTimeT  cycle 
)

ストリームの作成

Parameters:
[in]stream_nameストリームの名前
[in]stream_id同一ストリーム名を区別するための番号
[in]stream_sizeストリームのデータサイズ
[in]lifeストリームの保存時間
[in]cycleストリームの書き込み周期
Returns:
SSM管理ID
Return values:
0失敗

SSMはストリームの管理を"名前"と"番号"を使用して管理する。 同一の機能を持つストリームは、名前を同じにし、番号を変えて管理すると分かりやすい。

ストリームのデータサイズは、書き込む構造体(クラス)などのサイズを入れる。

SSMは時刻同期用にリングバッファを構成する。 リングバッファの個数は、life及びcycleに従って確保される。 また、cycleは高速な時刻同期にも利用されるため、できるだけ正確に書くことが望ましい。

終了時には destroySSM() しなければならない。

See also:
destroySSM, openSSM
int damp ( SSM_sid  sid,
int  mode,
int  num 
)

メモリダンプ

Warning:
廃止予定
int endSSM ( void  )

SSMからの切断

Return values:
1成功
0失敗

SSMの使用をやめる場合に必ず実行すること。

int get_propertySSM ( const char *  stream_name,
int  stream_id,
void *  data 
)

SSMからのプロパティーの取得

Parameters:
[in]*stream_nameストリームの名前
[in]stream_id同一ストリーム名を区別するための番号
[out]*data書き込むデータ
Return values:
1成功
0失敗
SSM_tid getTID ( SSM_sid  sid,
ssmTimeT  ytime 
)

TimeIDの探索

Parameters:
[in]sidSSM管理ID
[in]目標時間
Returns:
指定時刻より前のうち、最も近い時刻に書き込まれたデータのTID >= 0 を返す。
Return values:
SSM_ERROR_FUTURE新しすぎて存在しない
SSM_ERROR_PAST古すぎて存在しない
SSM_ERROR_NO_DATASSM上にデータがまだ存在しない
SSM_tid getTID_bottom ( SSM_sid  sid)

SSM上に存在する最も古いTimeIDを取得する

Parameters:
[in]sidSSM管理ID
Returns:
最も古いTimeID
SSM_tid getTID_top ( SSM_sid  sid)

SSM上に存在する最も新しいTimeIDを取得する

Parameters:
[in]sidSSM管理ID
Returns:
最も新しいTimeID
int initSSM ( void  )

SSMへの接続

Return values:
1成功
0失敗

すべてのSSMの関数を使用する前にかならず実行する。 これを実行しない場合、他の関数は失敗する。

SSM_sid openSSM ( const char *  stream_name,
int  stream_id,
char  open_mode 
)

ストリームへの接続

Parameters:
[in]stream_nameストリームの名前
[in]stream_id同一ストリーム名を区別するための番号
[in]open_modeストリームの書き込み方向を定義できるようにしたい。とりあえず0を書いておけば問題ない。
Returns:
SSM管理ID
Return values:
0失敗

すでに作成されたストリームへ接続する。

openSSM() した場合は、終了時に closeSSM() を実行する必要がある

See also:
closeSSM, createSSM
SSM_tid readSSM ( SSM_sid  sid,
void *  data,
ssmTimeT ytime,
SSM_tid  tid 
)

指定したTimeIDのデータを読み込む

Parameters:
[in]sidSSM管理ID
[out]*data読み込むデータ
[out]*ytimeデータの書き込み時間
[in]tid読み込みたいTimeID -1を指定すると最新のデータ
Returns:
読み込んだデータのTID >= 0 を返す。
Return values:
SSM_ERROR_FUTURE新しすぎて存在しない
SSM_ERROR_PAST古すぎて存在しない
SSM_ERROR_NO_DATASSM上にデータがまだ存在しない
SSM_tid readSSM_time ( SSM_sid  sid,
void *  data,
ssmTimeT  ytime,
ssmTimeT ret_time 
)

指定した時刻より前で、指定した時刻に最も近いデータを読み込む

Parameters:
[in]sidSSM管理ID
[out]*data読み込むデータ
[out]ytime指定時刻
Returns:
読み込んだデータのTID >= 0 を返す。
Return values:
SSM_ERROR_FUTURE新しすぎて存在しない
SSM_ERROR_PAST古すぎて存在しない
SSM_ERROR_NO_DATASSM上にデータがまだ存在しない
int releaseSSM ( SSM_sid sid)

ストリームの破棄

Parameters:
[in,out]sidSSM管理ID
Return values:
1成功
0失敗

現状として、実際にSSMからストリームを破棄できるわけではなく、ストリームから切断するだけである。 しかし、これからのことを考えると、プログラムの最後で必ず実行しておくことを推奨する。

int set_propertySSM ( const char *  stream_name,
int  stream_id,
const void *  data,
size_t  size 
)

SSMへのプロパティーの登録

Parameters:
[in]*stream_nameストリームの名前
[in]stream_id同一ストリーム名を区別するための番号
[in]*data書き込むデータ
[in]sizeデータサイズ
Return values:
1成功
0失敗

create済みのストリームしか登録できないので注意。

int waitTID ( SSM_sid  sid,
SSM_tid  tid 
)

指定したTimeIDになるまで待つ

Parameters:
[in]sidSSM管理ID
[in]tid読み込みたいTimeID
Return values:
1成功
0失敗
-1エラー
Warning:
実装・戻り値などを変更する可能性があるので注意!

現状の実装として、waitできるのは1秒のみである。

SSM_tid writeSSM ( SSM_sid  sid,
const void *  data,
ssmTimeT  ytime 
)

writeSSM_time と一緒。互換性のため、残してある。

See also:
writeSSM_time
SSM_tid writeSSM_time ( SSM_sid  sid,
const void *  data,
ssmTimeT  ytime 
)

指定したタイムスタンプを付けてデータを書き込む

Parameters:
[in]sidSSM管理ID
[in]*data書き込むデータ
[in]ytimeデータの書き込み時間
Returns:
書き込んだときのTimeIDを返す
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Defines