summaryrefslogtreecommitdiff
path: root/maximus/sci/inc/SciMsg.h
blob: 7ed2608be5d61b3722259306cfef326b6bc58026 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
/************************************************************************
                        SciMsg.h - Copyright buret

Here you can write a license for your code, some comments or any other
information you want to have in your generated code. To to this simply
configure the "headings" directory in uml to point to a directory
where you have your heading files.

or you can just replace the contents of this file with your own.
If you want to do this, this file is located at

/usr/share/apps/umbrello/headings/heading.h

-->Code Generators searches for heading files based on the file extension
   i.e. it will look for a file name ending in ".h" to include in C++ header
   files, and for a file name ending in ".java" to include in all generated
   java code.
   If you name the file "heading.<extension>", Code Generator will always
   choose this file even if there are other files with the same extension in the
   directory. If you name the file something else, it must be the only one with that
   extension in the directory to guarantee that Code Generator will choose it.

you can use variables in your heading files which are replaced at generation
time. possible variables are : author, date, time, filename and filepath.
just write %variable_name%

This file was generated on %date% at %time%
The original location of this file is /home/buret/eclipse/maximus/sci/inc/SciMsg.h
**************************************************************************/

#ifndef SCIMSG_H
#define SCIMSG_H

#include "sci_types.h"


/**
  * class SciMsg
  */

class SciMsg
{

public:

  // public attributes
  //  

private:

  // private attributes
  //  

  Sci_Msg_Status mSciMsgStatus; // NOT USED YET
  
  // Values of SCI message header
  //
  Sci_Msg_Type mSciMsgType;
  Sci_Msg_Station_Id mSciMsgStationId;
  static Sci_Msg_Id mSciMsgId; // to send to station
  Sci_Msg_Flag mSciMsgFlag;
  
  // SCI message header, SCI message data length, and SCI message data
  //
  Sci_Msg_Header mSciMsgHeader;
  unsigned long mSciMsgDataLength;
  unsigned char * mpSciMsgData;
   
protected:

  // protected attributes
  //  

  // Specialized SCI message header size, specialized SCI message data length, and specialized SCI message data
  //
  unsigned long mSpecializedSciMsgHeaderSize;
  unsigned long mSpecializedSciMsgDataLength;
  unsigned char * mpSpecializedSciMsgData;
  
public:

  // Constructors/Destructors
  //  

  /**
   * Empty Constructor
   */
  SciMsg ( );

  /**
   * Copy Constructors
   */
  SciMsg ( const SciMsg & sci_msg );
  SciMsg ( const SciMsg * p_sci_msg );
  
  /**
   * Empty Destructor
   */
  virtual ~SciMsg ( );

  // public methods
  //  
  
  /**
   * @return SciMsg *
   */
  virtual SciMsg * create ( ) const = 0;
  
  /**
   * @return bool
   */
  virtual bool dispatchMsg ( ) = 0;
  
  /**
   * @return bool
   */
  virtual bool identifySpecializedSciMsgHeader ( ) = 0;
  
  /**
   * @return bool
   */
  virtual bool checkCompatibility ( ) const; 
  
  /**
   * @return bool
   */
  virtual bool checkValidity ( ) const; 
  
  /**
   * @return bool
   */
  bool identifySpecializedSciMsgData ( );
  
  void displaySciMsgHeader ( ) const;
  
  void displaySciMsgData ( ) const;

  virtual void displaySpecializedSciMsgHeader ( ) const = 0;

  /**
   * Display the specialized SCI message type.
   */
  virtual void displaySpecializedSciMsgType ( int log_level ) const = 0;

  void displaySpecializedSciMsgData ( ) const; 
  
  /**
   * @return SCI_MSG_MAGIC converted to uint32_t
   */
  uint32_t getDefinedSciMsgMagicId ( ) const;
  
  /**
   * @return SCI_MSG_VERSION
   */
  uint8_t getDefinedSciMsgVersion ( ) const;
  
  // public attribute accessor methods
  //  

  // private attribute accessor methods
  //  

  /**
   * @return mSciMsgStatus
   */
  Sci_Msg_Status getSciMsgStatus ( ) const;

  /**
   * @return bool
   * @param  status the new value of mSciMsgStatus
   */
  bool setSciMsgStatus ( const Sci_Msg_Status status );

  /**
   * @return the value of mSciMsgType
   */
  Sci_Msg_Type getSciMsgType ( ) const;

  /**
   * @return bool
   * @param  type the new value of mSciMsgType
   */
  bool setSciMsgType ( const Sci_Msg_Type type );

  /**
   * Get the value of mSciMsgStationId
   * @return the value of mSciMsgStationId
   */
  Sci_Msg_Station_Id getSciMsgStationId ( ) const;

  /**
   * Set the value of mSciMsgStationId
   * @return bool
   * @param  station_id the new value of mSciMsgStationId
   */
  bool setSciMsgStationId ( const Sci_Msg_Station_Id station_id );

  /**
   * Get the value of mSciMsgId
   * @return the value of mSciMsgId
   */
  Sci_Msg_Id getSciMsgId ( ) const;

  /**
   * Increment the value of mSciMsgId
   * @return bool
   */
  bool incrementSciMsgId ( );

  /**
   * @return the value of mSciMsgFlag
   */
  Sci_Msg_Flag getSciMsgFlag ( ) const;

  /**
   * @return bool
   * @param  flag the new value of mSciMsgFlag
   */
  bool setSciMsgFlag ( const Sci_Msg_Flag flag );

  /**
   * @return a pointer to mSciMsgHeader
   */
  Sci_Msg_Header * getSciMsgHeader ( ) const;

  /**
   * @return bool
   * @param  sci_msg_header the new value of mSciMsgHeader
   */
  bool setSciMsgHeader ( const Sci_Msg_Header & sci_msg_header );

  /**
   * Get the value of mSciMsgDataLength
   * @return the value of mSciMsgDataLength
   */
  unsigned long getSciMsgDataLength ( ) const;
  
  /**
   * Set the value of mSciMsgDataLength
   * @return bool
   * @param data_length the new value of mSciMsgDataLength
   */
  bool setSciMsgDataLength ( const unsigned long data_length );

  /**
   * Get the value of mpSciMsgData
   * @return the value of mpSciMsgData
   */
  unsigned char * getSciMsgData ( ) const;

  /**
   * Set the value of mpSciMsgData
   * @return bool
   * @param p_data the new value of mpSciMsgData
   */
  bool setSciMsgData ( const unsigned char * p_data );

  // protected attribute accessor methods
  //  

  /**
   * Get the value of mSpecializedSciMsgHeaderSize
   * @return the value of mSpecializedSciMsgHeaderSize
   */
  virtual unsigned long getSpecializedSciMsgHeaderSize ( ) const; 
    
  /**
   * Set the value of mSpecializedSciMsgHeaderSize
   * @return bool
   * @param  header_size the new value of mSpecializedSciMsgHeaderSize
   */
  virtual bool setSpecializedSciMsgHeaderSize ( const unsigned long header_size );
 
  /**
   * Get the value of mpSpecializedSciMsgHeader
   * @return the value of mpSpecializedSciMsgHeader into a void pointer
   */
  virtual void * returnSpecializedSciMsgHeader ( ) const = 0;
  
  /**
   * Get the value of mSpecializedSciMsgDataLength
   * @return the value of mSpecializedSciMsgDataLength
   */
  virtual unsigned long getSpecializedSciMsgDataLength ( ) const; 
  
  /**
   * Set the value of mSpecializedSciMsgDataLength
   * @return bool
   * @param  data_length the new value of mSpecializedSciMsgDataLength
   */
  virtual bool setSpecializedSciMsgDataLength ( const unsigned long data_length );

  /**
   * Get the value of mpSpecializedSciMsgData
   * @return the value of mpSpecializedSciMsgData
   */
  virtual unsigned char * getSpecializedSciMsgData ( ) const;

  /**
   * Set the value of mpSpecializedSciMsgData
   * @return bool
   * @param  p_data the new value of mpSpecializedSciMsgData
   */
  virtual bool setSpecializedSciMsgData ( const unsigned char * p_data );

  void displaySciMsgType ( ) const;

private:

  // private methods
  //  

  void initAttributes ( ) ;
  
  void displaySciMsgFlag ( ) const;
  
protected:

  // protected methods
  //
    
  /**
   * @return bool
   * @param  data_length_to_remove
   * @param  data_length
   * @param  pp_data
   */
  bool removeData ( const unsigned long data_length_to_remove, unsigned long & data_length, unsigned char ** pp_data );

};


#endif // SCIMSG_H