Common Environment for Protocol Analysis.
cc_tools_qt Library

The CommsChampion Tools are there to provide consistent and generic environment for binary protocols visualisation, traffic monitor and analysis. They are all plugin based. Plugins are used to select I/O socket, protocol definition itself as well as zero or more data filters in between. The cc_tools_qt library can be used to develop such plugins as well as new custom tool applications.

The overall picture looks like this:

The cc_tools_qt shared library contains common code that is used by both the application and the plugin to it. The plugin itself is also a shared library, which is loaded by the application at run-time. It allows the application to be completely generic and used with any protocol.

Plugin Types

The plugin can be one of the following types:

  • socket - I/O socket, that is responsible for low level input / output operations.
  • filter - responsible to perform intermediate data processing.
  • protocol - responsible to process and present actual protocol messages.

The socket and protocol plugins are "must have" ones, without them the tools won't be able to operate properly. The filters, on the other hand, are optional. They need to be used when there are any additional transport layers and/or encryption between the raw data received by the I/O socket and the data delivered to the analysed communication protocol for processing.

The cc_tools_qt shared library is implemented using Qt framework using its signals/slots functionality and expects the main application to drive the event loop using QApplication object.

int main(int argc, char* argv[])
QApplication app(argc, argv);
... // Some other relevant objects
return app->exec();

Header Files

The documentation page of every mentioned in the tutorial class specifies the relevant include statement. The cc_tools_qt library also provides single "include all" file which can be used.

Single "include all" file.


Please choose the tutorial subject below, relevant for your development. They are completely independent and can be read separately.