versadac  1
versadac - Scalable Recorder Firmware
am_historyhdr.h
1 /*****************************************************************************
2 FILE : am_historyhdr.h
3 VERSION : $Id: am_historyhdr.h 4938 2006-10-10 14:20:18Z martinto $
4 AUTHOR : Sandra Herring
5 SYSTEM : GNU C++ for Power PC
6 DESCRIPTION : Class to read in a UHH header record.
7 *****************************************************************************/
8 
9 #if !defined(__AM_HISTORYHDR_H)
10 #define __AM_HISTORYHDR_H
11 
12 #if !defined(__AM_HISTORYPVCONF_H)
13 #include "am_historypvconf.h"
14 #endif
15 
16 #if !defined __AM_TIMEZONE_H
17 #include "am_timezone.h"
18 #endif
19 
20 #if !defined(__LINKLIST_H)
21 #include "linklist.h"
22 #endif
23 
24 // ***************************************************************************
25 // Archive Header virtual base class
26 // ***************************************************************************
27 
29 {
30  public :
31 
32 /*------------------------------------------------------------------------------
33 FUNCTION : AM_HistoryHeader constructor
34 ARGUMENTS : Destination from generated PV configuration list.
35 ------------------------------------------------------------------------------*/
37 
38 /*------------------------------------------------------------------------------
39 FUNCTION : AM_HistoryHeader destructor
40 ------------------------------------------------------------------------------*/
41  virtual ~AM_HistoryHeader();
42 
43  // virtual services inherited from class AM_HistoryRecord
44 
45  virtual sint32 read( AM_HistoryStream & stream );
46  virtual uint16 recordID();
47 
48  // non-virtual services
49 
50 /*------------------------------------------------------------------------------
51 FUNCTION : AM_HistoryHeader::getMACAddress
52 DESCRIPTION : provides access MAC address as colon separated string
53  empty string for pkd files
54 ARGUMENTS : None.
55 RETURN : address
56 NOTES :
57 ------------------------------------------------------------------------------*/
58  const char * getMACAddress();
59 
60 /*------------------------------------------------------------------------------
61 FUNCTION : AM_HistoryHeader::getInstrName
62 DESCRIPTION : Returns instrument name
63 ARGUMENTS : None.
64 RETURN : name
65 NOTES :
66 ------------------------------------------------------------------------------*/
67  const char * getInstrName();
68 
69 /*------------------------------------------------------------------------------
70 FUNCTION : AM_HistoryHeader::getGroupName
71 DESCRIPTION : Returns group name in ASCII
72 ARGUMENTS : None.
73 RETURN : name
74 NOTES :
75 ------------------------------------------------------------------------------*/
76  const char * getGroupName();
77 
78 /*------------------------------------------------------------------------------
79 FUNCTION : AM_HistoryHeader::getLanguage
80 DESCRIPTION : Returns language string
81 ARGUMENTS : None.
82 RETURN : language mnemonic
83 NOTES :
84 ------------------------------------------------------------------------------*/
85  const char * getLanguage();
86 
87 /*------------------------------------------------------------------------------
88 FUNCTION : AM_HistoryHeader::getCountry
89 DESCRIPTION : Returns region abbreviation.
90 ARGUMENTS : None.
91 RETURN : Country string
92 NOTES :
93 ------------------------------------------------------------------------------*/
94  const char * getCountry();
95 
96 /*------------------------------------------------------------------------------
97 FUNCTION : AM_HistoryHeader::getSWVersion
98 DESCRIPTION : returns the software version as stored in the file
99 ARGUMENTS : None.
100 RETURN : s/w version string
101 NOTES :
102 ------------------------------------------------------------------------------*/
103  const char * getSWVersion();
104 
105 /*------------------------------------------------------------------------------
106 FUNCTION : AM_HistoryHeader::getTicksPerSec
107 DESCRIPTION : returns the base unit of sampling.
108 ARGUMENTS : none.
109 RETURN : ticks per second.
110 NOTES :
111 ------------------------------------------------------------------------------*/
112  uint8 getTicksPerSec();
113 
114 /*------------------------------------------------------------------------------
115 FUNCTION : AM_HistoryHeader::getStartTimeTicks
116 DESCRIPTION : returns the archive file base time in ticks
117 ARGUMENTS : none.
118 RETURN : start time
119 NOTES :
120 ------------------------------------------------------------------------------*/
121  double getStartTimeTicks();
122 
123 /*------------------------------------------------------------------------------
124 FUNCTION : AM_HistoryHeader::ticksToUtc
125 DESCRIPTION : Applies an offset in ticks from the file base year to give UTC seconds since 1970
126 ARGUMENTS : Ticks since start of file base year
127  Optional return argument for number of milliseconds
128 RETURN : UTC time + plus miliseconds over
129 NOTES :
130 ------------------------------------------------------------------------------*/
131  time_t ticksToUtc( double ticksSinceBaseYear,
132  uint16 * pRetMillisecs = NULL );
133 
134 /*------------------------------------------------------------------------------
135 FUNCTION : AM_HistoryHeader::getPointConfigs
136 DESCRIPTION : returns address of PV configuration list
137 ARGUMENTS : None.
138 RETURN : PV configuration objects
139 NOTES :
140 ------------------------------------------------------------------------------*/
141  LinkedList<AM_HistoryPVConfig> * getPointConfigs();
142 
143  private :
144  sint32 readPVTypes( AM_HistoryStream & stream );
145 
146  LinkedList<AM_HistoryPVConfig> * m_pPointConfigs;
147 
148  public :
149  AM_Timezone m_Timezone;
150 
151  protected :
152  char m_MACAddress[18]; // ethernet MAC address as colon separated string
153  char m_InstrName[21];
154  char m_GroupName[21];
155  char m_Language[6];
156  char m_Country[6];
157  char m_SWVersion[9];
158  time_t m_BaseSeconds; // BaseYear converted to seconds since 1900
159  double m_StartTimeTicks;
160  sint32 m_TimeSegment; // history file time segment number
161  uint16 m_BaseYear;
162  uint8 m_TicksPerSec;
163 
164 }; // class AM_HistoryHeader
165 
166 
167 // ****************************************
168 // inline services for class Archive Header
169 // ****************************************
170 
171 /*------------------------------------------------------------------------------
172 FUNCTION : AM_HistoryHeader constructor
173 DESCRIPTION :
174 ARGUMENTS : None.
175 RETURN : N/A
176 NOTES :
177 ------------------------------------------------------------------------------*/
178 inline AM_HistoryHeader::AM_HistoryHeader( LinkedList<AM_HistoryPVConfig> * pPointConfigs )
179  : m_pPointConfigs(pPointConfigs),
180  m_TimeSegment(0)
181 {}
182 
183 
184 /*------------------------------------------------------------------------------
185 FUNCTION : AM_HistoryHeader destructor
186 DESCRIPTION :
187 ARGUMENTS : None.
188 RETURN : N/A
189 NOTES :
190 ------------------------------------------------------------------------------*/
191 inline AM_HistoryHeader::~AM_HistoryHeader()
192 {}
193 
194 /*------------------------------------------------------------------------------
195 FUNCTION : AM_HistoryHeader::getMACAddress
196 DESCRIPTION : provides access MAC address as colon separated string
197  empty string for pkd files
198 ARGUMENTS : None.
199 RETURN : address
200 NOTES :
201 ------------------------------------------------------------------------------*/
202 inline const char * AM_HistoryHeader::getMACAddress()
203 {
204  return m_MACAddress;
205 }
206 
207 /*------------------------------------------------------------------------------
208 FUNCTION : AM_HistoryHeader::getLanguage
209 DESCRIPTION : Returns language string
210 ARGUMENTS : None.
211 RETURN : language mnemonic
212 NOTES :
213 ------------------------------------------------------------------------------*/
214 inline const char * AM_HistoryHeader::getLanguage()
215 {
216  return m_Language;
217 }
218 
219 /*------------------------------------------------------------------------------
220 FUNCTION : AM_HistoryHeader::getCountry
221 DESCRIPTION : Returns region abbreviation.
222 ARGUMENTS : None.
223 RETURN : Country string
224 NOTES :
225 ------------------------------------------------------------------------------*/
226 inline const char * AM_HistoryHeader::getCountry()
227 {
228  return m_Country;
229 }
230 
231 /*------------------------------------------------------------------------------
232 FUNCTION : AM_HistoryHeader::getInstrName
233 DESCRIPTION : Returns instrument name
234 ARGUMENTS : None.
235 RETURN : name
236 NOTES :
237 ------------------------------------------------------------------------------*/
238 inline const char * AM_HistoryHeader::getInstrName()
239 {
240  return m_InstrName;
241 }
242 
243 /*------------------------------------------------------------------------------
244 FUNCTION : AM_HistoryHeader::getGroupName
245 DESCRIPTION : Returns group name in ASCII
246 ARGUMENTS : None.
247 RETURN : name
248 NOTES :
249 ------------------------------------------------------------------------------*/
250 inline const char * AM_HistoryHeader::getGroupName()
251 {
252  return m_GroupName;
253 }
254 
255 /*------------------------------------------------------------------------------
256 FUNCTION : AM_HistoryHeader::getSWVersion
257 DESCRIPTION : returns the software version as stored in the file
258 ARGUMENTS : None.
259 RETURN : s/w version string
260 NOTES :
261 ------------------------------------------------------------------------------*/
262 inline const char * AM_HistoryHeader::getSWVersion()
263 {
264  return m_SWVersion;
265 }
266 
267 /*------------------------------------------------------------------------------
268 FUNCTION : AM_HistoryHeader::getTicksPerSec
269 DESCRIPTION : returns the base unit of sampling.
270 ARGUMENTS : none.
271 RETURN : ticks per second.
272 NOTES :
273 ------------------------------------------------------------------------------*/
274 inline uint8 AM_HistoryHeader::getTicksPerSec()
275 {
276  return m_TicksPerSec;
277 }
278 
279 /*------------------------------------------------------------------------------
280 FUNCTION : AM_HistoryHeader::getStartTimeTicks
281 DESCRIPTION : returns the archive file base time in ticks
282 ARGUMENTS : none.
283 RETURN : start time
284 NOTES :
285 ------------------------------------------------------------------------------*/
286 inline double AM_HistoryHeader::getStartTimeTicks()
287 {
288  return m_StartTimeTicks;
289 }
290 
291 /*------------------------------------------------------------------------------
292 FUNCTION : AM_HistoryHeader::getPointConfigs
293 DESCRIPTION : returns address of PV configuration list
294 ARGUMENTS : None.
295 RETURN : PV configuration objects
296 NOTES :
297 ------------------------------------------------------------------------------*/
298 inline LinkedList<AM_HistoryPVConfig> * AM_HistoryHeader::getPointConfigs()
299 {
300  return m_pPointConfigs;
301 }
302 
303 #endif // end of __AM_HISTORYHDR_H conditional include
304 
Definition: am_historystream.h:23
Definition: am_historyrecord.h:29
Definition: am_timezone.h:75
Definition: am_historyhdr.h:28