1
- ![ Image: CommsChampion Icon] ( comms_champion/app/cc_view/src/image/app_icon.png )
1
+ # IMPORTANT NOTICE
2
+ Since release v4.0 this project is deprecated. For convenience it has been split into
3
+ two separate ones:
4
+
5
+ - [ COMMS Library] ( https://github.com/commschamp/comms )
6
+ - [ CommsChampion Tools] ( https://github.com/commschamp/cc_tools_qt )
7
+
8
+ Please use them instead.
9
+
10
+ This project is now a simple wrapper arount the ones listed above. It
11
+ still can be used for backward compatibility, but it is not recommended.
12
+
13
+ ----
2
14
3
15
This project is a core (and a member) of
4
16
[ CommsChampion Ecosystem] ( https://commschamp.github.io ) ,
@@ -15,174 +27,14 @@ definitions. The tools can be used to visualise, analyse, and debug binary
15
27
communication protocols, which were developed using [ COMMS Library] ( #comms-library ) .
16
28
17
29
# COMMS Library
18
- ** COMMS** is the ** C++(11)** headers only, platform independent library,
19
- which makes the implementation of a communication
20
- protocol to be an easy and relatively quick process. It provides all the necessary
21
- types and classes to make the definition of the custom messages, as well as
22
- wrapping transport data fields, to be simple declarative statements of type and
23
- class definitions. These statements will specify ** WHAT** needs to be implemented.
24
- The ** COMMS** library internals handle the ** HOW** part.
25
-
26
- The internals of the ** COMMS** library is mostly template classes which use
27
- multiple meta-programming techniques. As the result, only the functionality,
28
- required by the protocol being developed, gets compiled in, providing the best code size and
29
- speed performance possible. The down side is that compilation process may
30
- take a significant amount of time and consume a lot of memory.
31
-
32
- The ** COMMS** library allows having ** single implementation** of the binary
33
- protocol messages, which can be re-compiled and used for any possible application:
34
- bare-metal with constrained resources, Linux based embedded systems, even
35
- independent GUI analysis tools.
36
-
37
- The ** COMMS** library was specifically developed to be used in ** embedded** systems
38
- including ** bare-metal** ones. It doesn't use exceptions and/or RTTI. It also
39
- minimises usage of dynamic memory allocation and provides an ability to exclude
40
- it altogether if required, which may be needed when developing ** bare-metal**
41
- embedded systems.
42
-
43
- Core ideas and architecture of the ** COMMS** library is described in
44
- [ Guide to Implementing Communication Protocols in C++] ( https://commschamp.github.io/comms_protocols_cpp/ ) free e-book.
45
- However, at this stage the library internals are much more advanced and sophisticated, than
46
- examples in the e-book, please don't treat the latter as a guide to library's internals.
47
-
48
- Full [ doxygen] ( www.doxygen.org ) generated documentation with the full tutorial inside can be
49
- read [ online] ( https://commschamp.github.io/comms_doc/ ) and/or
50
- downloaded as ** doc_comms_vX.zip** archive from
51
- [ release artefacts] ( https://github.com/commschamp/comms_champion/releases ) .
52
-
53
- For quick usage examples please refer to [ EXAMPLES.md] ( EXAMPLES.md ) .
30
+ ** IMPORTANT** : The COMMS library has been relocated to a
31
+ separate [ repository] ( https://github.com/commschamp/comms ) . Please open
32
+ it to read the description.
54
33
55
34
# CommsChampion Tools
56
- This project also contains a set of tool applications (in addition to the
57
- [ COMMS Library] ( #comms-library ) ), which can be used to
58
- develop, monitor and debug custom binary communication protocols, that where
59
- developed using the [ COMMS Library] ( #comms-library ) .
60
- All the applications are plug-in based, i.e. plug-ins are used to define
61
- I/O socket, data filters, and the custom protocol itself. The tools
62
- use [ Qt5] ( http://www.qt.io/ ) framework for GUI interfaces as well as loading
63
- and managing plug-ins.
64
-
65
- The current list of available applications is below. Please refer to the
66
- [ wiki page] ( https://github.com/commschamp/comms_champion/wiki/How-to-Use-CommsChampion-Tools )
67
- for tutorial on how to use them.
68
-
69
- - ** cc_view** is the main generic GUI application for visualisation and analysis of the
70
- communication protocols.
71
-
72
- - ** cc_dump** is a command line utility, that recognises all the received
73
- custom binary protocol messages and dumps them all in CSV format to standard output.
74
- It can also record the incoming message into the file, which can be opened
75
- later for visual analysis using ** cc_view** GUI application.
76
- The tool has an ability to receive a file with definition of outgoing messages,
77
- created using ** cc_view** GUI application, and send them one by one
78
- in parallel to dumping/recording the incoming messages.
79
-
80
- The [ CommsChampion Tools] ( #commschampion-tools ) package provides the following
81
- plugins that can be used with any application:
82
-
83
- - ** null_socket** - NULL socket, that doesn't produce any incoming data and
84
- discards any outgoing data.
85
- - ** echo_socket** - Echo socket, all the data being sent is immediately reported
86
- as an incoming data.
87
- - ** serial_socket** - Low level socket that sends and receives data over serial
88
- (RS-232) I/O link.
89
- - ** tcp_client_socket** - Client TCP/IP socket, that connects to remote
90
- server, sends and receives data over TCP/IP network link.
91
- - ** tcp_server_socket** - Server TCP/IP socket, waits for and accepts all
92
- connections from TCP/IP clients, sends and receives data to/from them.
93
- - ** tcp_proxy_socket** - Proxy server TCP/IP socket, combines Server and Client
94
- side of TCP/IP connection, can be used to monitor traffic of the messages between
95
- remote a client and a server.
96
- - ** udp_socket** - Generic (client/server) UDP/IP socket.
97
- - ** raw_data_protocol** - Protocol definition that defines only a single message
98
- type with one field of unlimited length data. It can be used to review the
99
- raw data being received from I/O socket.
100
-
101
- ### Developing Custom Socket/Filter/Protocol Plugin
102
- The full tutorial as well as API documentation can be downloaded as
103
- ** doc_commschampion_vX.zip** archive from
104
- from [ release artefacts] ( https://github.com/commschamp/comms_champion/releases ) .
105
-
106
- # Demos and Examples
107
- Over the years the
108
- [ COMMS Library] ( #comms-library ) grew with features and accumulated
109
- multiple nuances to be remembered when defining a new protocol. In order to
110
- simplify protocol definition work, a separate toolset, called
111
- [ commsdsl] ( https://github.com/commschamp/commsdsl ) (hosted as separate repository),
112
- has been developed. It allows much easier and simpler definition of the protocol,
113
- using schema files written in XML based domain specific language, called
114
- [ CommsDSL] ( https://github.com/commschamp/CommsDSL-Specification ) . The toolset
115
- will generate a C++11 code that defines the protocol using appropriate
116
- [ COMMS Library] ( #comms-library ) classes and functions, as well as generate extra code
117
- required to implement a protocol definition plugin for
118
- [ CommsChampion Tools] ( #commschampion-tools ) . Many binary protocols
119
- may have nuances that are difficult to express in existing schema language.
120
- In order to still allow usage of the schema files for the protocol definition, the
121
- toolset allows injection of extra custom code to modify or extend the generated
122
- one. The generated code itself is also highly compile time customisable. It
123
- allows selection of custom data structures for data storage as well as polymorphic
124
- interfaces relevant to the application being developed.
125
-
126
- As the result, manual implementation of binary communication protocols ** from
127
- scratch** using
128
- [ COMMS Library] ( #comms-library ) is not recommended and should be avoided. Please use
129
- ** commsdsl2comms** code generator from
130
- [ commsdsl] ( https://github.com/commschamp/commsdsl ) project, which also
131
- lists multiple available protocols (with usage examples) that can be used
132
- as reference.
133
-
134
- # Licence
135
- The [ COMMS Library] ( #comms-library ) is licensed under
136
- the [ MPL-2.0] ( http://mozilla.org/MPL/2.0/ ) license.
137
-
138
- The [ CommsChampion Tools] ( #commschampion-tools ) use open-source
139
- [ Qt5] ( http://www.qt.io/ ) libraries, hence licenced under the
140
- [ GPLv3] ( https://www.gnu.org/licenses/gpl-3.0.en.html ) .
141
-
142
-
143
- # Supported Compilers
144
- The [ COMMS Library] ( #comms-library ) requires proper C++11 support which
145
- is provided by the following compilers:
146
- - ** GCC** : >=4.8
147
- - ** Clang** : >=3.9
148
- - ** MSVC** : >= 2015
149
-
150
- # How to Build
151
- Detailed instructions on how to build and install all the components can be
152
- found in [ doc/BUILD.md] ( doc/BUILD.md ) file.
153
-
154
- # How to Use COMMS Library
155
- The COMMS library [ doxygen documentation] ( https://commschamp.github.io/comms_doc/ )
156
- contains detailed tutorial and examples how to use the provided
157
- classes and functions.
158
-
159
- The [ cc_tutorial] ( https://github.com/commschamp/cc_tutorial/ ) repository
160
- contains a full tutorial how to use the library in conjunction with
161
- [ commsdsl2comms] ( https://github.com/commschamp/commsdsl ) code generator.
162
-
163
- # Other documentation
164
- Please check the [ doc] ( doc ) folder for the available additional documentation.
165
-
166
- # How to Run CommsChampion Tools applications
167
- On Windows platforms try to run the * .exe binary (** cc_view.exe**
168
- or ** cc_dump.exe** ), which resides in
169
- ** ${CMAKE_ISNTALL_PREFIX}/bin** directory. If the execution fails due to missing ** Qt5** dlls,
170
- either set your ** %PATH%** variable accordingly or try to execute generated ** .bat**
171
- files (** cc_view.bat** or ** cc_dump.bat** ) residing in the same directory. Another
172
- option is to build ** deploy_qt** target to deploy Qt5 libraries into installation directory, which will allow execution of any ** .exe** file without any extra manipulations.
173
-
174
- On Linux platforms use the appropriate shell script
175
- (** cc_view.sh** or ** cc_dump.sh** ), which also resides in
176
- ** ${CMAKE_ISNTALL_PREFIX}/bin** directory.
177
-
178
- Please note that available plugins must reside in the ** ${CMAKE_ISNTALL_PREFIX}/lib/CommsChampion/plugin** directory.
179
-
180
- The tools support multiple command line options, please use "-h" or "--help" for
181
- the full list.
182
-
183
- > $> ./install/bin/cc_view.sh -h
184
-
185
- > $> ./install/bin/cc_dump.sh -h
35
+ ** IMPORTANT** : The tools have been relocated to a
36
+ separate [ repository] ( https://github.com/commschamp/cc_tools_qt ) . Please open
37
+ it to read the description.
186
38
187
39
# Branching Model
188
40
This repository will follow the
0 commit comments