トップ «前の日記(2018-03-01) 最新 次の日記(2018-03-05)» 編集

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|

2018-03-01 [長年日記]

_ [SAD][EPICS]CaMonitorへstatus of valueの扱いを追加

従って、CaRead[{pvs...}]を以下の擬似コードでca_pend_ioを使わずに再実装できる

Module[{ca},
  ca = CaMonitor[{pvs...}, AutoStart->False,
    ConStatCommand:>With[{p = ca@PositionL[]},
      If[ca@ConnectedQ[p], ca@GetCB[p]]]];
  ca@WaitValue[EPICS$CaReadTimeout[]];
  MapThread[If[#1 === Undefined, $Failed, {##}]&,
    {ca@Value[], ca@Status[], ca@Severity, ca@Timestamp$[]}]];
  • 接続ハンドラで、接続成立時にca_get_callbackを発行させ、WaitValueで更新を待つ構造
  • CaMonitorインスタンスは、スコープ脱出時に破壊される
  • transfer modifier対応させる場合は、vtypeのリストサポートが必要
  • 接続済みchidを受けるConstructorが有ると良い

CaMonitorの改修作業

  • vtypeのリストサポート
    • Countサポートと同様に、動作時の更新・参照をサポートするので有れば、オプション処理を変更する必要がある
  • opened chidを受け取るConstructor
    • CaRead互換運用用途なので、Constructorサポートのみで足りるはず
    • ClearChannel時のca_clear_channelを制御するフラグを設ける
    • transfer modifer付きで受け取れると便利
      • modifierに基づき、vtype/countを自動的に初期化する
    • AutoStart/ConStatCommandの自動設定、GetCBの自動実行があっても良い?

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記