Changes between Initial Version and Version 1 of epics/streamdevice/tracemask


Ignore:
Timestamp:
05/30/17 10:06:35 (8 years ago)
Author:
Takashi Obina
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • epics/streamdevice/tracemask

    v1 v1  
     1= asynSetTracemask の指定について =
     2
     3PDF文書にも記載していますが、ioc shell 上でデバッグする際に
     4どのようなメッセージが行き来しているかをみることは重要です。
     5
     6正式なドキュメントは本家のサイト
     7http://www.aps.anl.gov/epics/modules/soft/asyn/
     8からasynDriverへのリンクを参照してください。
     9
     10== 書式 ==
     11{{{
     12asynSetTraceMask(portName,addr,mask)
     13asynSetTraceIOMask(portName,addr,mask)
     14}}}
     15asynGetTraceMask などで現在の値を取得することもできます。
     16
     17定義は公式ドキュメントのTrace Interfaceの項か、ソース{{{ ${EPICS_BASE}/../modules/soft/asyn/[ver]/asyn/asynDriver/asynDriver.h }}} を参照。
     18(バージョンによって違いがあり、下の例はR4-31)
     19{{{
     20Trace Interface
     21
     22/*asynTrace is implemented by asynManager*/
     23/*All asynTrace methods can be called from any thread*/
     24/* traceMask definitions*/
     25#define ASYN_TRACE_ERROR     0x0001
     26#define ASYN_TRACEIO_DEVICE  0x0002
     27#define ASYN_TRACEIO_FILTER  0x0004
     28#define ASYN_TRACEIO_DRIVER  0x0008
     29#define ASYN_TRACE_FLOW      0x0010
     30#define ASYN_TRACE_WARNING   0x0020
     31
     32/* traceIO mask definitions*/
     33#define ASYN_TRACEIO_NODATA 0x0000
     34#define ASYN_TRACEIO_ASCII  0x0001
     35#define ASYN_TRACEIO_ESCAPE 0x0002
     36#define ASYN_TRACEIO_HEX    0x0004
     37
     38}}}
     39
     40
     41デフォルトでは !TraceMask が 0x1, TraceIOMask が 0x0 になっているので、
     42エラーが出たときのみログが表示されるようになっている。
     43
     44== 使用例 ==
     45お勧めは
     46 * 通常時はデフォルトのまま
     47{{{
     48asynSetTraceMask(PS1, 0, 0x1)
     49asynSetTraceIOMask(PS1, 0, 0x0)
     50}}}
     51* デバッグ時には traceError と traceIODriver を有効にして
     52{{{
     53asynSetTraceMask(PS1, 0, 0x9)
     54asynSetTraceIOMask(PS1, 0, 0x4)
     55}}}
     56としておけば、バイナリ列がどのように行き来しているか分かる。(ASCIIで読みたいときにはIOMaskを0x1に)
     57
     58
     59とにかく全部見たい場合、まずは
     60{{{
     61asynSetTraceMask(PS1, 0, -1)
     62asynSetTraceIOMask(PS1, 0, -1)
     63}}}
     64とかやっても良いです(後で適切なマスクにした方が幸せになれます)。