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


Ignore:
Timestamp:
05/30/17 10:06:35 (7 years ago)
Author:
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とかやっても良いです(後で適切なマスクにした方が幸せになれます)。