Whenever DigiView completes a new capture, the data is transferred to a buffer on the PC. Each signal (native or plug-in) then parses the raw data into its own state table for use by all search, snap, print, export and display routines,. The state table includes timestamp, data, and formatting instructions.
The built-in signal parsers are partitioned into two parts: the pre-processor and the post-processor. The pre-processor looks at the raw data and extracts the link-level protocol. It sends protocol-specific 'events' to the post-processor. The post-processor interprets the 'events' and generates the timestamp, data, and formatting information stored in the state table.
Conceptually, plug-ins replace the post-processor. They define which pre-processor to use and then assume responsibility for the post-processing.
For example, the pre-processor for an ASYNC signal, does bit timing analysis to find the character start, data, parity, and stop bits. It also detects parity errors, framing errors, and break conditions. It then forwards DATA, 9BITADDR, END, BREAK, PARITY ERROR and FRAME ERROR events to the post-processor. The post-processor adds display formatting to this information and stores it in the state table.
A mini-plug-in based on the ASYNC pre-processor would receive the same events and send back its own data and formatting information. It could simply change the way the data is displayed. It can also implement higher levels of protocol. For example, the plug-in could look for start-of-frame characters to indicate a new packet, translate specific field values to text ( 0x55 = STOP) or implement in-band escaping.
Full plug-ins operate the same way except they specify 'RAW' for the pre-processor. This is a special processor that does not extract any link level information for the plug-in. It simply filters out unrelated samples from the raw data. It forwards only data samples in which one or more of the channels used by the plug-in transition. The only event forwarded by the RAW pre-processor is 'DATA'.