# The main message type. # Must begins by the header. # Following a basic scheme, it could be a switch case depending on # the MSG_ID_FIELD_NAME field which is inside MSG_HEADER_TYPE. MSG_MAIN_TYPE T_msg_switch(Type) It is not mandatory to specify the MSG_MAIN_TYPE like this. E.g. add into your .fdesc file : struct T_msg_main_type { T_msg_switch(Type) ""; } Then, into your .wsgd file, the following line is strictly equivalent to the 1st declaration : MSG_MAIN_TYPE T_msg_main_type So you can do, for example : struct T_msg_main_type { T_msg_header_type header; T_data_switch(Type) ""; # switch for the data part (after header), not for the entire msg (including header) } If your message only contains an header : struct T_msg_main_type { T_msg_header_type ""; } Or more directly : MSG_MAIN_TYPE T_msg_header_type And whatever ...