OpenRTM-aist
1.2.1
|
#include <PublisherPeriodic.h>
公開型 | |
typedef coil::Mutex | Mutex |
typedef coil::Condition< Mutex > | Condition |
typedef coil::Guard< coil::Mutex > | Guard |
![]() | |
enum | Enum { PORT_OK = 0, PORT_ERROR, BUFFER_ERROR, BUFFER_FULL, BUFFER_EMPTY, BUFFER_TIMEOUT, SEND_FULL, SEND_TIMEOUT, RECV_EMPTY, RECV_TIMEOUT, INVALID_ARGS, PRECONDITION_NOT_MET, CONNECTION_LOST, UNKNOWN_ERROR } |
公開メンバ関数 | |
DATAPORTSTATUS_ENUM | PublisherPeriodic (void) |
コンストラクタ [詳解] | |
virtual | ~PublisherPeriodic (void) |
デストラクタ [詳解] | |
virtual ReturnCode | init (coil::Properties &prop) |
初期化 [詳解] | |
virtual ReturnCode | setConsumer (InPortConsumer *consumer) |
InPortコンシューマのセット [詳解] | |
virtual ReturnCode | setBuffer (CdrBufferBase *buffer) |
バッファのセット [詳解] | |
virtual ReturnCode | setListener (ConnectorInfo &info, ConnectorListeners *listeners) |
リスナを設定する。 [詳解] | |
virtual ReturnCode | write (cdrMemoryStream &data, unsigned long sec, unsigned long usec) |
データを書き込む [詳解] | |
virtual bool | isActive () |
アクティブ化確認 [詳解] | |
virtual ReturnCode | activate () |
アクティブ化する [詳解] | |
virtual ReturnCode | deactivate () |
非アクティブ化する [詳解] | |
virtual int | svc (void) |
スレッド実行関数 [詳解] | |
![]() | |
virtual DATAPORTSTATUS_ENUM | ~PublisherBase (void) |
デストラクタ [詳解] | |
virtual void | release () |
Publisher を破棄する。 [詳解] | |
限定公開型 | |
enum | Policy { ALL, FIFO, SKIP, NEW } |
限定公開メンバ関数 | |
void | setPushPolicy (const coil::Properties &prop) |
PushPolicy の設定 [詳解] | |
bool | createTask (const coil::Properties &prop) |
Task の設定 [詳解] | |
ReturnCode | pushAll () |
push "all" policy [詳解] | |
ReturnCode | pushFifo () |
push "fifo" policy [詳解] | |
ReturnCode | pushSkip () |
push "skip" policy [詳解] | |
ReturnCode | pushNew () |
push "new" policy [詳解] | |
ReturnCode | convertReturn (BufferStatus::Enum status, cdrMemoryStream &data) |
BufferStatus から DataPortStatus への変換 [詳解] | |
ReturnCode | invokeListener (DataPortStatus::Enum status, cdrMemoryStream &data) |
DataPortStatusに従ってリスナへ通知する関数を呼び出す。 [詳解] | |
void | onBufferWrite (cdrMemoryStream &data) |
ON_BUFFER_WRITEのリスナへ通知する。 [詳解] | |
void | onBufferFull (cdrMemoryStream &data) |
ON_BUFFER_FULLリスナへイベントを通知する。 [詳解] | |
void | onBufferWriteTimeout (cdrMemoryStream &data) |
ON_BUFFER_WRITE_TIMEOUTのリスナへ通知する。 [詳解] | |
void | onBufferRead (cdrMemoryStream &data) |
ON_BUFFER_READのリスナへ通知する。 [詳解] | |
void | onSend (cdrMemoryStream &data) |
ON_SENDのリスナへ通知する。 [詳解] | |
void | onReceived (cdrMemoryStream &data) |
ON_RECEIVEDのリスナへ通知する。 [詳解] | |
void | onReceiverFull (cdrMemoryStream &data) |
ON_RECEIVER_FULLのリスナへ通知する。 [詳解] | |
void | onReceiverTimeout (cdrMemoryStream &data) |
ON_RECEIVER_TIMEOUTのリスナへ通知する。 [詳解] | |
void | onReceiverError (cdrMemoryStream &data) |
ON_RECEIVER_ERRORのリスナへ通知する。 [詳解] | |
void | onBufferEmpty () |
ON_BUFFER_EMPTYのリスナへ通知する。 [詳解] | |
void | onSenderEmpty () |
ON_SENDER_EMPTYのリスナへ通知する。 [詳解] | |
void | onSenderError () |
ON_SENDER_ERRORのリスナへ通知する。 [詳解] | |
その他の継承メンバ | |
![]() | |
static const char * | toString (DataPortStatus::Enum status) |
DataPortStatus リターンコードを文字列に変換 [詳解] | |
周期的にデータを送信するための Publisher クラス。このクラスは、通 常 Connector 内にあって、バッファおよびコンシューマに関連付けられ る。一定周期ごとにバッファからデータを取り出しコンシューマに対して データを送出する。
|
protected |
DATAPORTSTATUS_ENUM RTC::PublisherPeriodic::PublisherPeriodic | ( | void | ) |
コンストラクタ
|
virtual |
デストラクタ
デストラクタ
|
virtual |
アクティブ化する
Publisher をアクティブ化する。この関数を呼び出すことにより、 Publisherが持つ、データを送信するスレッドが動作を開始する。初期 化が行われていないなどにより、事前条件を満たさない場合、エラーコー ド PRECONDITION_NOT_MET を返す。
RTC::PublisherBaseを実装しています。
|
protected |
BufferStatus から DataPortStatus への変換
バッファからの戻り値を DataPortStatus::Enum 型へ変換する関数。そ れぞれ、以下のように変換される。変換時にコールバックを呼ぶ場合、 コールバク関数も付記する。
status | BufferStatus |
data | cdrMemoryStream |
|
protected |
Task の設定
|
virtual |
非アクティブ化する
Publisher を非アクティブ化する。この関数を呼び出すことにより、 Publisherが持つ、データを送信するスレッドが動作を停止する。初期 化が行われていないなどにより、事前条件を満たさない場合、エラーコー ド PRECONDITION_NOT_MET を返す。
RTC::PublisherBaseを実装しています。
|
virtual |
初期化
このクラスのオブジェクトを使用するのに先立ち、必ずこの関数を呼び 出す必要がある。引数には、このオブジェクトの各種設定情報を含む Properties を与える。少なくとも、送出処理の呼び出し周期を単位 Hz の数値として Propertyオブジェクトの publisher.push_rate をキー とする要素に設定する必要がある。周期 5ms すなわち、200Hzの場合、 200.0 を設定する。 dataport.publisher.push_rate が未設定の場合、 false が返される。データをプッシュする際のポリシーとして publisher.push_policy をキーとする値に、all, fifo, skip, new の いずれかを与えることができる。
以下のオプションを与えることができる。
property | 本Publisherの駆動制御情報を設定したPropertyオブジェクト |
RTC::PublisherBaseを実装しています。
|
protected |
|
virtual |
アクティブ化確認
Publisher はデータポートと同期して activate/deactivate される。 activate() / deactivate() 関数によって、アクティブ状態と非アクティ ブ状態が切り替わる。この関数により、現在アクティブ状態か、非アク ティブ状態かを確認することができる。
RTC::PublisherBaseを実装しています。
|
inlineprotected |
ON_BUFFER_EMPTYのリスナへ通知する。
参照先 RTC::ON_BUFFER_EMPTY.
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
ON_SENDER_EMPTYのリスナへ通知する。
参照先 RTC::ON_SENDER_EMPTY.
|
inlineprotected |
ON_SENDER_ERRORのリスナへ通知する。
参照先 DLL_EXPORT, RTC::ON_SENDER_ERROR, PublisherPeriodicInit(), RTC_DEBUG.
|
protected |
push "all" policy
|
protected |
push "fifo" policy
|
protected |
push "new" policy
|
protected |
push "skip" policy
|
virtual |
バッファのセット
この関数では、この Publisher に関連付けられるバッファをセットする。 バッファオブジェクトがヌルポインタの場合、INVALID_ARGSが返される。 それ以外の場合は、PORT_OK が返される。
buffer | CDR buffer へのポインタ |
RTC::PublisherBaseを実装しています。
|
virtual |
InPortコンシューマのセット
この関数では、この Publisher に関連付けられるコンシューマをセットする。 コンシューマオブジェクトがヌルポインタの場合、INVALID_ARGSが返される。 それ以外の場合は、PORT_OK が返される。
consumer | Consumer へのポインタ |
RTC::PublisherBaseを実装しています。
|
virtual |
リスナを設定する。
Publisher に対してリスナオブジェクト ConnectorListeners を設定する。 各種リスナオブジェクトを含む ConnectorListeners をセットすることで、 バッファの読み書き、データの送信時等にこれらのリスナをコールする。 ConnectorListeners オブジェクトの所有権はポートまたは RTObject が持ち Publisher 削除時に ConnectorListeners は削除されることはない。 ConnectorListeners がヌルポインタの場合 INVALID_ARGS を返す。
info | ConnectorProfile をローカル化したオブジェクト ConnectorInfo |
listeners | リスナを多数保持する ConnectorListeners オブジェクト |
RTC::PublisherBaseを実装しています。
|
protected |
PushPolicy の設定
|
virtual |
スレッド実行関数
coil::PeriodicTask により周期実行されるタスク実行関数。
|
virtual |
データを書き込む
Publisher が保持するバッファに対してデータを書き込む。コンシュー マ、バッファ、リスナ等が適切に設定されていない等、Publisher オブ ジェクトが正しく初期化されていない場合、この関数を呼び出すとエラー コード PRECONDITION_NOT_MET が返され、バッファへの書き込み等の操 作は一切行われない。
バッファへの書き込みと、InPortへのデータの送信は非同期的に行われ るため、この関数は、InPortへのデータ送信の結果を示す、 CONNECTION_LOST, BUFFER_FULL などのリターンコードを返すことがあ る。この場合、データのバッファへの書き込みは行われない。
バッファへの書き込みに対して、バッファがフル状態、バッファのエ ラー、バッファへの書き込みがタイムアウトした場合、バッファの事前 条件が満たされない場合にはそれぞれ、エラーコード BUFFER_FULL, BUFFER_ERROR, BUFFER_TIMEOUT, PRECONDITION_NOT_MET が返される。
これら以外のエラーの場合、PORT_ERROR が返される。
data | 書き込むデータ |
sec | タイムアウト時間 |
nsec | タイムアウト時間 |
RTC::PublisherBaseを実装しています。