Tezzeret  1
Tezzeret
/home/kddev/dev/TivaWorkspace/TezzeretApps/TezzeretApp.hpp
1 #ifndef TEZZERETAPP_HPP_
2 #define TEZZERETAPP_HPP_
3 
4 #include <GpsStrings.hpp>
5 
6 #if (EMULATE_MFAM_SENSOR == GEO_TRUE) || (MFAM_MODULE == GEO_TRUE)
7 #include <GmMFAMDataSource.hpp>
8 #endif
9 #include <GmPpsEvent.hpp>
10 #include <GmAppEvent.hpp>
11 #include "GmTcpip.hpp"
12 
13 #include "Analogs.hpp"
14 #include <GmLoggingApp.hpp>
15 #include <GmMQTT.hpp>
16 #if GEO_LEGACY_MAG_SERIAL_OUT == GEO_TRUE
17 #include "GmUartOut.hpp"
18 #endif
19 #include <GmRingBuffer.hpp>
20 #include <GmManagedRingBuffer.hpp>
21 #include <GmCm221.hpp>
22 
23 #if (EMULATE_MFAM_SENSOR == GEO_TRUE) || (MFAM_MODULE == GEO_TRUE)
24 #include <MfamMonitor.hpp>
25 #endif
26 
27 #if EMULATE_862_SENSOR == GEO_TRUE
28 #include <Gm862Emulator.hpp>
29 #endif
30 
31 #if GEO_MFAM_FILTER == GEO_TRUE || GEO_MFAM_FULL_FILTER == GEO_TRUE || GEO_MFAM_FREQUENCY_MEASURE == GEO_TRUE
32 #include <GmMfamFilter.hpp>
33 #endif
34 
35 #if UNMIRRORED_STORAGE == GEO_TRUE
36 #include <GmCharRingBufferStorage.hpp>
37 #else
38 #if GEO_SDCARD == GEO_TRUE
39 #include <GmTivaSDStorage.hpp>
40 #endif
41 #endif
42 
43 #if GEO_OFFBOARD_I2C == GEO_TRUE
44 #include <ti/drivers/I2C.h>
45 #endif
46 
47 
48 
49 #define GM_TZC_NEW_SURVEY ((UInt32)(GM_TZCC_VALID_WHILE_NOT_LOGGING | GM_TZCC_DB_CHANGE | (GM_TZ_MINIMUM_APPLICATION_COMMAND+1)))
50 #define GM_TZC_SET_MAG_SAMPLE_RATE ((UInt32)(GM_TZCC_VALID_WHILE_NOT_LOGGING | GM_TZCC_DB_CHANGE | (GM_TZ_MINIMUM_APPLICATION_COMMAND+2)))
51 
52 /* These "topics", which are set up in the logging modes, are used when the program, or a sensor, write to
53  * a storage. The requirement for "topics" originated in MQTT, and the use of topics in MQTT messages.
54  */
55 #define THIS_APP_SERVICE_TOPIC 0
56 #define THIS_APP_MAG_TEXT_DATA_TOPIC 1
57 #define THIS_APP_MAG_BINARY_DATA_TOPIC 2
58 #define THIS_APP_PPS_TEXT_DATA_TOPIC 3
59 #define THIS_APP_PPS_BINARY_DATA_TOPIC 4
60 #define THIS_APP_APPEVENT_TEXT_DATA_TOPIC 5
61 #define THIS_APP_APPEVENT_BINARY_DATA_TOPIC 6
62 #define THIS_APP_MAG_FRAME_TOPIC 7
63 #define THIS_APP_GPS_TEXT_DATA_TOPIC 8
64 #define THIS_APP_GPS_BINARY_DATA_TOPIC 9
65 #define THIS_APP_PPS_SYNCH_TEXT_DATA_TOPIC 10
66 #define THIS_APP_PPS_SYNCH_BINARY_DATA_TOPIC 11
67 #define MAGARROW_ARRAY_DATA_TOPIC (12)
68 #define THIS_APP_864_BINARY_MAG_01_TOPIC 13
69 #define THIS_APP_864_BINARY_MAG_01_WITH_SENTENCE_TOPIC 14
70 #define THIS_APP_APPEVENT_TYPED_BINARY_DATA_TOPIC 15
71 #define THIS_APP_LOKI_FILTERED_TOPIC 16
72 #define THIS_APP_864_MAG_TIMESTAMPED_TOPIC 17
73 #define THIS_APP_GPS_TIMESTAMPED_DATA_TOPIC 18
74 
75 
76 #if USE_MAG_ARROW_HARDWARE == GEO_TRUE
77 typedef enum MagArrowAppState {
78  MAG_ARROW_STATE_STARTUP,
79  MAG_ARROW_STATE_NORMAL,
80  MAG_ARROW_STATE_FAULT
81 } MagArrowAppState;
82 
83 typedef enum MagArrowStartupState {
84  MAG_ARROW_STARTUP_STATE_UNKNOWN,
85  MAG_ARROW_STARTUP_STATE_MFAM,
86  MAG_ARROW_STARTUP_STATE_GPS,
87  MAG_ARROW_STARTUP_STATE_PPS_LOCKING,
88  MAG_ARROW_STARTUP_STATE_STARTUP_COMPLETE
89 } MagArrowStartupState;
90 
91 typedef enum MagArrowFaultType {
92  MAG_ARROW_FAULT_NOTHING,
93  MAG_ARROW_FAULT_MFAM_FAILURE,
94  MAG_ARROW_FAULT_PPS_MISSING,
95  MAG_ARROW_FAULT_GPS_DILUTION_OF_PRECISION_TOO_HIGH,
96  MAG_ARROW_FAULT_PRIMARY_STORAGE_ERROR,
97  MAG_ARROW_FAULT_PRIMARY_STORAGE_TOO_SLOW,
98  MAG_ARROW_FAULT_FLASH_ERROR,
99  MAG_ARROW_FAULT_BATTERY_LOW,
100  MAG_ARROW_FAULT_BATTERY_TOO_LOW_WIFI_ONLY,
101 } MagArrowFaultType;
102 
104  bool MagArrowGPSOnOffStatus;
105  bool MagArrowMFAMOnOffStatus;
106  bool MagArrowWifiOnOffStatus;
107  bool MagArrowUSBOnOffStatus;
109 #endif
110 
111 namespace Geometrics
112 {
113  // Simple config files - string key/value
114  class CMfamConfig : public CGmAppConfig
115  {
116  public:
117  CMfamConfig ();
118  ~CMfamConfig ();
119  int LoadConfigs ();
120  virtual int LoadConfigsFromFile (const char *szConfigFileName);
121  int LoadAppConfigsFromFile (const char *fileName);
122 
123  public:
124  #if GEO_WIFI_STATION_MODE == GEO_TRUE
125  char m_wifiAccessPointPassKey[50];
126  char m_wifiAccessPointSsid[50];
127  #endif
128  #if GEO_MQTT_CONNECT_TO_BROKER == GEO_TRUE
129  char m_brokerIP[20];
130  #endif
131 
132  #if GEO_LOAD_MFAM_SAMPLE_RATE_FROM_CONFIGS == GEO_TRUE
133  int m_mfamSampleRate;
134  #endif
135 
136  #if GEO_DYNAMIC_CFG_RECORDS_PER_FILE == GEO_TRUE
137  int mRecordsPerFile;
138  #endif
139 
140  #if GEO_ACCESS_POINT_PASSWORD == GEO_TRUE
141  static char s_wifiStationPassword[11];
142  #endif
143  #if GEO_ACCESS_POINT_CHANNEL == GEO_TRUE
144  static int s_wifiStationChannel;
145  static Bool s_wifiRotateChannels;
146  #endif
147 
148  #if LOKI_TWEETER == GEO_TRUE
149  uint32_t m_audioVolume;
150  #endif
151  #if GEO_DYNAMIC_WIFI_SSID == GEO_TRUE
152  static char s_wifiSsid[11];
153  #endif
154 
155  #if GEO_CONFIG_STATIC_IP == GEO_TRUE
156  static char s_staticIpAddress[20];
157  #endif
158  #if GEO_DEVICE_NICKNAME == GEO_TRUE
159  static char s_staticDeviceNickname[20];
160  #endif
161 
162 };
163 
164  // CMfamApplicationState is for states that can have external visibilty, or
165  // can be reported to the user. Some of them also have internal logical roles, of course.
167  {
168  public:
170  };
171 
172 #if USE_MAG_ARROW_HARDWARE == GEO_TRUE
173  // CMfamApplicationState is for states that can have external visibilty, or
174  // can be reported to the user. Some of them also have internal logical roles, of course.
176  {
177  public:
179  static void GetApplicationState();
180  static MagArrowAppState m_AppState;
181  static bool m_WifiConnected;
182  static MagArrowStartupState m_StartupState;
183  static MagArrowFaultType m_FaultSource;
184  static MagArrowPeripheralOnOffStatus m_PeripheralOnOffStatus;
185  };
186 #endif
187 
195  class TezzeretApp: public GmLoggingApp
196  {
199  friend class GmWebServer;
200  public:
202  TezzeretApp ();
206  void Start ();
207 
208  public:
209  #if (EMULATE_MFAM_SENSOR == GEO_TRUE) || (MFAM_MODULE == GEO_TRUE)
210  UInt16 MfamSystemStatus ();
211  #endif
212 
213  public:
214  // ===================================================================
215  // Statics
216  // ===================================================================
219 
222  static void SystemStartup ();
223 
224  #if GEO_CONFIGPROVISION_EEPROM == GEO_TRUE
225  static int Provision(struct _GeoMachineProvisioning *pBasicProvisioning);
226  #endif
227  // ===================================================================
228  // Instance variables and their getters.
229  // ===================================================================
230  CMfamApplicationState m_masApplicationState;
231  #if (EMULATE_MFAM_SENSOR == GEO_TRUE) || (MFAM_MODULE == GEO_TRUE)
232  GmMfamDataSource *m_pmsMfamDataSource;
233 
234  #if GEO_MFAM_FREQUENCY_MEASURE == GEO_TRUE
235  GmMfamFrequencyDetector *mfamFrequencyDetector;
236  #endif
237 
238  #endif
239  CMfamApplicationState *GetState () { return &m_masApplicationState; };
240 
241  #if GEO_NET_NDK == GEO_TRUE
247  void NetworkSetupCountdown (bool starting);
248  #endif
249 
250  private:
251  #if GEO_DATA_STORAGE == GEO_TRUE
252  UInt32 CreateNewSurvey (char *szName,
253  char *pcAnswerBuffer);
254  UInt32 CreateNewAcquisition (char *szInfo);
255  UInt32 SetActiveAcquisition (char *pcAcquisitionName);
256  #if GEO_WATCHDOG == GEO_TRUE
257  static void WatchdogReset ();
258  static void WatchdogInit();
259  static void watchdogCallback(uintptr_t );
260  #endif
261  #endif
262 
263  #if GEO_NET_NDK == GEO_TRUE
264  int mNetworkReadyCountdown;
265  #endif
266  #if GEO_MFAM_FULL_FILTER == GEO_TRUE
267  static ti_sysbios_knl_Semaphore_Handle sDecimationSemaphore;
268 
269  int SetDecimation (int newTargetSampleRate);
270  #endif
271 
272 
273  protected:
278 
279  int MainStartup ();
283  void EarlyStartupRequirements ();
284 
288  void StartSensors ();
289 
292  void StartMonitors ();
293 
298  void StartStorages ();
300 
305  #if GEO_NET_NDK == GEO_TRUE
310  void EthernetSetups ();
311  void EthernetShutdown ();
312  #endif
314 
320  #if (GEO_WRITE_MFAM_BLOCKS == GEO_TRUE)
321  int CacheMagData ();
322  void EmptyMfamCache ();
323  Bool MfamCacheIsFull ();
324  int WriteMfamCache ();
325  #endif
327 
328  private:
332  void MainLoop ();
338 
339  #if GEO_MFAM_FULL_FILTER == GEO_TRUE
340  GmMfamFullFilter *mMfamStageOneFilter,
341  *mMfamStageTwoFilter;
342  MfamLokiInterpolator *mLokiInterpolator;
343  int mDecimatedSampleRate;
344  #endif
346  void MainShutdown ();
347  void StartLights ();
348 
349 
350  #if GEO_864_PPS_LOCK == GEO_TRUE
351  static void InitPPSLock();
352  int SetSamplePeriod (int newSampleRateMilliseconds);
353  #endif
354 
355  int StartGps (),
356  #if (EMULATE_MFAM_SENSOR == GEO_TRUE) || (MFAM_MODULE == GEO_TRUE)
357  StartMfamSensor (),
358  #endif
359  StartPps (),
360  #if GEO_TCP_STREAMING == GEO_TRUE
361  StartTcpipOut (),
362  #endif
363  StartAppEvents ();
364  void LoadAutoStart ();
365  #if ((GEO_APP_G864 == GEO_TRUE)||(GEO_APP_SERENITY == GEO_TRUE)) && (BOARD_UNIFIED_03 == GEO_TRUE)
366  void InitG864ResetButton ();
367  #endif
368 
369  public:
370 
371  /*****************************************************************/
375  /*****************************************************************/
376  virtual UInt32 ProcessCommand (UInt32 iCommand,
377  UInt8 commandSource,
378  UInt8 *pui8AddedInfo,
379  UInt32 uiAddedInfoSize);
380 
387  int AddEvent (UInt32 uiEventCode,
388  UInt32 uiEventInfo,
389  UInt32 uiDataLength,
390  char *caData);
391 
395  virtual GmLoggingAppState *GetLoggingAppState () { return GetState (); };
396 
397  //==============================================================
398  // Event and processing virtuals functions.
399  // =============================================================
404  virtual UInt32 FlushInputQueue ();
405 
408  static double OnMfamPps (unsigned int index);
409 
410  private:
411  #if GEO_SERIAL_CESIUM_MAG == GEO_TRUE
412  #if GEO_CM221_MAG_DATA == GEO_TRUE
413  int LogCm221Data (struct s_timestamped860 *g8rMagData);
414  #else
415  int LogCm221Data (Gm864Record *g8rData,
416  char *strTextData,
417  #if GEO_MQTT == GEO_TRUE
418  GmMqttPublisher *pgmpQueue,
419  CGmMqttConfig *pmmcMqttParams,
420  #endif
421  #if GEO_TCP_STREAMING == GEO_TRUE
422  GmTcpipOut *ptoTcpipOut,
423  #endif
424  CGmAppConfig *cfgParams,
425  Bool bTextMode);
426  #endif
427  int StartCm221 ();
428  #endif
429 
430  #if EMULATE_862_SENSOR == GEO_TRUE
431  void Start862Emulator ();
432  #if GEO_CM221_MAG_DATA == GEO_TRUE
433  int Log862EmulatorData (struct s_timestamped860 *g8rMagData,
434  char *strTextData,
435  #if GEO_MQTT == GEO_TRUE
436  GmMqttPublisher *pgmpQueue,
437  CGmMqttConfig *pmmcMqttParams,
438  #endif
439  #if GEO_TCP_STREAMING == GEO_TRUE
440  GmTcpipOut *ptoTcpipOut,
441  #endif
442  CGmAppConfig *cfgParams,
443  Bool bTextMode);
444  #endif
445  #endif
446  #if GEO_PPS_EVENTS == GEO_TRUE
447  int LogPpsData ( IndexedDoubleTime *pidtDoubleTime,
448  char *strTextData,
449  #if GEO_MQTT == GEO_TRUE
450  GmMqttPublisher *pgmpQueue,
451  CGmMqttConfig *pmmcMqttParams,
452  #endif
453  CGmAppConfig *cfgParams);
454  #endif
455 
456  #if (EMULATE_MFAM_SENSOR == GEO_TRUE) || (MFAM_MODULE == GEO_TRUE)
457  #if GEO_TCP_STREAMING == GEO_FALSE
458  int LogMfamData (IndexedMfamSpiPacketWithHeader *pimsphData,
459  #if GEO_MQTT == GEO_TRUE
460  GmMqttPublisher *pgmpQueue,
461  CGmMqttConfig *pmmcMqttParams,
462  #endif
463  #if GEO_TCP_STREAMING == GEO_TRUE
464  GmTcpipOut *pgtoTcpipOut,
465  #endif
466  CGmAppConfig *cfgParams);
467  #endif
468 
469  //#if GEO_TCP_STREAMING == GEO_TRUE
470 public:
471  volatile bool mStartedCache;
472  volatile int mPacketsInCache;
473  uint64_t mFirstIndexInCache;
474 private:
475 
476  #if GEO_STREAMING_BLOCK == GEO_TRUE
477  int LogMfamStreamingBlock (IndexedMfamSpiPacketWithHeader *pimsphData,
478  GmTcpipOut *pgtoTcpipOut);
479  #endif
480  #if (GEO_TCP_STREAMING == GEO_TRUE) && (GEO_MFAM_FULL_FILTER == GEO_TRUE)
481  int LogMfamStreamingFiltered (IndexedMfamSpiPacketWithHeader *pimsphData,
482  GmTcpipOut *pgtoTcpipOut);
483  #endif
484  #endif
485 
486  int LogAppEvent (IndexedAppEvent *piaeEvent,
487  char *strTextData,
488  CGmAppConfig *cfgParams);
489 
490  #if GPS_ENABLED == GEO_TRUE
491  int LogGpsData (struct _GpsTimestamped *pRecord);
492  #endif
493  #ifdef GEO_ADC
494  int LogAdcData (IndexedAnalog32Quad *piaAnalogs,
495  #if GEO_SDCARD == GEO_TRUE
496  CTivaSDStorage *psdStorage,
497  #endif
498  #if GEO_MQTT == GEO_TRUE
499  GmMqttPublisher *pgmpQueue,
500  #endif
501  CTivaUartOut *puoSerialOut,
502  char *strTextData,
503  #if GEO_MQTT == GEO_TRUE
504  CGmMqttConfig *pmmcMqttParams,
505  #endif
506  CGmAppConfig *cfgParams);
507  #endif
508  #if GEO_MQTT == GEO_TRUE
509  int SendMqttServicesMessage (GmMqttPublisher *pgmpQueue,
510  CGmMqttConfig *pmmcMqttParams);
511  #endif
512 
513 
514  /******************************************************************************/
515  /* Relating to logging modes. */
516  /******************************************************************************/
517  UInt32 NotifyAllNewLoggingMode (UInt32 iNewLoggingMode);
518  UInt32 ChangeLoggingMode (UInt32 iNewLoggingMode);
519 
520 
521  /* This is unfortunate - making an application-specific function for each application, but SetupLoggingModes
522  * has gotten enormous, and this is my solution. They are even all off in their own source file,
523  * LoggingModes.cpp */
524 #if GEO_APP_MAG_ARROW == GEO_TRUE
525  UInt32 SetupMagArrowLoggingModes ();
526 #elif GEO_APP_PACTRON_DEV_KIT == GEO_TRUE
527  UInt32 SetupDevKitLoggingModes ();
528 #elif GEO_APP_G864 == GEO_TRUE
529  UInt32 SetupG864LoggingModes ();
530 #elif GEO_APP_MAGEX == GEO_TRUE
531  UInt32 SetupLokiLoggingModes ();
532 #elif GEO_APP_TRANQUILITY == GEO_TRUE
533  UInt32 SetupTranquilityLoggingModes ();
534 #elif GEO_APP_SERENITY == GEO_TRUE
535  UInt32 SetupSerenityLoggingModes ();
536 #elif GEO_APP_INTREPID == GEO_TRUE
537  UInt32 SetupIntrepidLoggingModes ();
538 #elif GEO_APP_EAGLE == GEO_TRUE
539  UInt32 SetupEagleLoggingModes ();
540 #elif GEO_APP_AQUARIUS == GEO_TRUE
541  UInt32 SetupAquariusLoggingModes ();
542 #elif GEO_APP_KLOKI == GEO_TRUE
543  UInt32 SetupKlokiLoggingModes ();
544 #elif GEO_APP_G864_MFAM_FILTERED == GEO_TRUE
545  UInt32 SetupG864MfamFilteredLoggingModes ();
546 #elif GEO_APP_TCP_STREAMER == GEO_TRUE
547  Uint32 SetupTCPStreamerLoggingModes ();
548 #elif GEO_APP_PACTRON_DEV_KIT_STREAMER == GEO_TRUE
549  Uint32 SetupPactronDevKitStreamerLoggingModes ();
550 #elif GEO_APP_DOLPHIN == GEO_TRUE
551  Uint32 SetupDolphinLoggingModes ();
552 #elif GEO_APP_EXAMPLE == GEO_TRUE
553  Uint32 SetupExampleLoggingModes ();
554 #endif
555  UInt32 SetupLoggingModes ();
556 
557  private:
558  #if MFAM_FRAMES == GEO_TRUE
559  Int32 m_iMachineIndex,
560  m_iMachineDataSize,
561  m_iFramesPerPage,
562  m_iFrameOffset;
563  char *m_pu8DataPage;
564  #endif
565 
566  #if (EMULATE_MFAM_SENSOR == GEO_TRUE) || (MFAM_MODULE == GEO_TRUE)
567  MfamMonitor *m_pmmMfamMonitor;
568  #endif
569 
570  #if GEO_SERIAL_CESIUM_MAG == GEO_TRUE
571  GmCm221 *mCesiumMag;
572  #endif
573 
574  #if EMULATE_862_SENSOR == GEO_TRUE
575  Gm862Emulator *m_p862Emulator;
576  #endif
577 
578 
579  #if GEO_TCP_STREAMING == GEO_TRUE
580  GmTcpipOut *m_gtoTcpipOut;
581  #endif
582 
583  public:
584  static char acWebInfoStr[200];
585 
586  #if LOKI_PICKLE_SWITCH == GEO_TRUE
587  bool mHasDestination;
588  double mDestinationLatitude;
589  double mDestinationLongitude;
590  int mDestinationIndex;
591  #endif
592 
593  #if GEO_OFFBOARD_I2C == GEO_TRUE
594  I2C_Handle mOffboardI2cHandle;
595  I2C_Params mOffboardI2cParams;
596  #endif
597 
598 
599  };
600 }
601 
602 
603 #endif /* TEZZERETAPP_HPP_ */
Definition: GmAppCfg.hpp:29
Definition: GmMqttCfg.hpp:17
Definition: TezzeretApp.hpp:176
Definition: TezzeretApp.hpp:167
Definition: TezzeretApp.hpp:115
Definition: GmTivaSDStorage.hpp:40
Definition: GmUartOut.hpp:24
Definition: Gm862Emulator.hpp:23
Definition: GmCm221.hpp:63
The sensor class for the traditional cesium mags used by the G-864.
Definition: GmCm221.hpp:116
Definition: GmLoggingApp.hpp:89
Direct base class for Tezzeret applications. Includes the main event queue, general command logic,...
Definition: GmLoggingApp.hpp:122
Abstract class - the interface - to the MFAM sensor. This abstract layer was created in order to acco...
Definition: GmMFAMDataSource.hpp:36
Definition: GmMfamFilter.hpp:161
Definition: GmMfamFilter.hpp:72
Definition: GmMQTT.hpp:36
Definition: GmTcpip.hpp:40
An HTTP server is an integral part of the framework, both to display UI in a browser and to provide a...
Definition: GmWebServer.hpp:83
Definition: GmMfamFilter.hpp:142
Definition: MfamMonitor.hpp:19
The top-level application object. It is a singleton, and a Tezzeret application runs in this object's...
Definition: TezzeretApp.hpp:196
virtual GmLoggingAppState * GetLoggingAppState()
Get the object that describes the state of the immediate base class for this object.
Definition: TezzeretApp.hpp:395
void StartStorages()
Storage startups. Add startup and verification logic for storage - network, SD/USB,...
Definition: AppStartup.cpp:450
static double OnMfamPps(unsigned int index)
Definition: TezzeretApp.cpp:1476
void EthernetSetups()
Set up ethernet - daemons, file descriptors, etc. -, after having gotten notice of link,...
Definition: TezzeretApp.cpp:3702
virtual UInt32 ProcessCommand(UInt32 iCommand, UInt8 commandSource, UInt8 *pui8AddedInfo, UInt32 uiAddedInfoSize)
ProcessCommand implements command processing specialized to this application. "Core" commands are imp...
Definition: TezzeretApp.cpp:1622
static TezzeretApp * m_static_paTheSingleApp
TezzeretApp is a singleton.
Definition: TezzeretApp.hpp:218
void StartSensors()
Sensor startups. Add a new function for the specific sensor or event source, and then call it from th...
Definition: AppStartup.cpp:824
void NetworkSetupCountdown(bool starting)
Called during various network startup hooks - link and ipAddress - and at the end of general applicat...
Definition: TezzeretApp.cpp:3650
int AddEvent(UInt32 uiEventCode, UInt32 uiEventInfo, UInt32 uiDataLength, char *caData)
Utility function for adding an event to the main event queue. This is a very broadly useful facility ...
Definition: TezzeretApp.cpp:1651
static void SystemStartup()
Most startup logic belongs here; called once during system startup.
Definition: TezzeretApp.cpp:3313
void EarlyStartupRequirements()
A few components need to be started before anything else.
Definition: AppStartup.cpp:792
int MainStartup()
Calls all the other startup functions.
Definition: TezzeretApp.cpp:2468
TezzeretApp()
Constructor.
Definition: TezzeretApp.cpp:837
void Start()
Start the application. This function simply calls TezzeretApp::MainStartup and then starts reading th...
Definition: TezzeretApp.cpp:2450
virtual UInt32 FlushInputQueue()
Event handlers and storage are called from this function, which is called from the main loop when the...
Definition: TezzeretApp.cpp:1833
void StartMonitors()
Start monitors. Add startup logic here for new monitors.
Definition: AppStartup.cpp:816
GmApp/GmLoggingApp.hpp>
Definition: Analogs.hpp:47
Definition: GmMfamData.hpp:267
Definition: GmProvision.hpp:55
Definition: GmPpsEvent.hpp:28
Definition: GmMfamData.hpp:332
Definition: TezzeretApp.hpp:103
Definition: GmLocation.hpp:100
Definition: magstructs.h:72