LRAUV  revA
NAL9602.h
Go to the documentation of this file.
1 
12 /****
13 
14 !!! The NAL9602-LP requires the following active profile to be set on the bench prior to use in the vehicle !!!
15 
16 Set +PNAV=4 for at sea operation
17 
18 Set ^GRS=3,30 for GPS safety reset
19 
20 Echo Off
21 
22 
23 
24 ACTIVE PROFILE:
25 
26 E0 Q0 V1 ^CAL1 ^ID0 ^RMF1 ^GAO0 ^TMD1 ^TBR5.0 ^TTKT255 ^UE0 ^START0
27 
28 +IPR6 +SBDMTA1 +SBDAREG0 +CIER0000 *R1 *S1 +PP1 +PNAV4 ^BIGR0 ^ERF0
29 
30 ^TBRT0.0 ^TTKTT255 ^TBRE0.0 ^TTKTE255 ^CALT1 ^CALE1
31 
32 ^TBRA3.0 ^TTKTA255 ^TBRTA1.0 ^TTKTTA255 ^TBREA1.0 ^TTKTEA255
33 
34 ^PR0 ^WFI0 ^ITE0 ^MSA000,0,0 ^MSW10 ^SPSR0,10,4,120 ^SSR0
35 
36 ^MSB3,10 ^MSE3 ^MSWT5 ^MSWE5 ^S0,0,0,0,0 ^SR3 ^STEW0
37 
38 ^SPSRT0,10,4,120 ^SPSRE0,10,4,120
39 
40 ^USAIG0 ^BASMR0,0,0 ^GRS3,30
41 
42 ***/
43 
44 #ifndef NAL9602_H
45 #define NAL9602_H
46 
48 #include "data/StrValue.h"
49 #include "io/UartStream.h"
50 #include "io/LoadControl.h"
51 #include "logger/Logger.h"
52 #include "utils/Timestamp.h"
53 #include "utils/FlexArray.h"
54 #include "NAL9602IF.h"
55 
56 #include <stdint.h>
57 
60 
61 #define READ_TIMEOUT_MSEC 6000
62 #define MAX_DOWNLINK_MSG_BYTES 340L
63 #define DOWNLINK_DATA_OFFSET ( sizeof(uint32_t) + 2 * sizeof(uint16_t) )
64 #define MAX_DOWNLINK_DATA_BYTES ( MAX_DOWNLINK_MSG_BYTES - DOWNLINK_DATA_OFFSET )
65 #define MAX_UPLINK_MSG_BYTES 270L
66 #define MAX_UPLINKS_PER_SESSION 10
67 
68 #define MAX_GPS_SATS_9602 NAL9602IF::MAX_GPS_SATS_9602
69 #define MAX_SATS_PER_LINE 4
70 
81 {
82 public:
83 
84  NAL9602( const Module* module );
85 
86  virtual ~NAL9602();
87 
88  virtual void run();
89 
92  virtual RunState start();
93 
95  virtual RunState starting();
96 
98  virtual RunState pause();
99 
101  virtual RunState paused();
102 
104  virtual RunState resume();
105 
107  virtual RunState resuming();
108 
110  virtual RunState runnable();
111 
113  virtual RunState resetting()
114  {
115  return stop();
116  }
117 
119  virtual RunState stop();
120 
121  virtual RunState stopping();
122 
124  virtual RunState stopped();
125 
126  void uninitialize();
127 
129  virtual ConfigURI getConfigURI( ConfigOption configOption ) const;
130 
132  virtual ConfigURI getConfigURI( ConfigOption configOption, ElementURI forElement ) const;
133 
134 private:
135 
136  // Note that the copy constructor below is private and not given a body.
137  // Any attempt to call it will return a compiler error.
138  NAL9602( const NAL9602& old ); // disallow copy constructor
139 
140  // Slate inputs
144 
145  // Slate outputs
151 
157 
161  ConfigReader* checkMTQueueCfgReader_; // Tells the component whether to explicitly check for messages queued for the NAL9602 even if an Iridium transaction isn't required.
163  ConfigReader* iridiumFailTimeoutCfgReader_; // How long to wait for an Iridium session to check for waiting MT SBD messages in the queue
165 
166 
167  // Used to save state since there are long potential waiting periods for this device to respond
169  {
185  };
186 
188  void waking();
189  void cmdMode();
190  void awake();
191  void needFix();
192  void needGSV(); // Gets the GPGSV data from the GPS.
193  void getSigQuality();
194  void sendingFillBuffer();
195  void sendingTransmit();
196  void sendingVerify();
197  void receiving1();
198  void receiving2();
199  void goToSleep();
200  void getMTQueueSignalStrength(); // Used only for session initiation for checking status of MT queue. Doesn't alter communicationsDone_
201  void sessionMTQueueVerify(); // Used only for session initiation verification for checking status of MT queue.
202 
203 
204  struct SNRWriters
205  {
206  // Constructor
207  SNRWriters();
208 
209  // And the writer
211  };
212 
213  // Array to store the battery packs and their associated writers
215 
216  // To hold our state
218 
220  char modemResponse_[512];
221 
223  char command_[512];
224 
230 
232 
233  bool gotFix_;
234  bool gotMTQueue_; // To prevent having to re-check queue status every time needGSV gets called. Just do it once per GPS fix.
235 
237 
238  // indicates whether things are ok to run
239  bool ok_;
240 
244  bool checkMTQueue_; // Tells the component whether to explicitly check for messages queued for the NAL9602 even if an Iridium transaction isn't required.
248 
249  // initialize vehicle config variables
250  bool loadParams( void );
251  bool readConfig();
252 
253  // Used for storing status of messages coming from GSS to NAL9602
256 
257  // Lets us know when we've got nothing left to send back to shore
259 
260  // True if a command has been received from shore since the last time power was applied
262 
263  // True if a fix request has been sent
265 
266  // We're counting down to throw a failure if we haven't gotten a fix in the required time.
268 
269  // How long we spend trying to check the Iridium MT queue
271 
272  // True if a GSV NMEA request has been sent
274 
275  // True if an Iridium signal quality request has been sent
277 
278 // // Send the current queue of outgoing messages and recieves anything
279 // // in the queue from the GSS.
281 
283  //bool sendMessage( const unsigned char *msg, size_t nMsgBytes );
284 
285  // Fills the buffer for next time a SBD session is initiated
286  bool fillBuffer( const unsigned char *msg, size_t nMsgBytes );
287 
288  // Checks the response from filling the buffer and looks for errors.
289  // Then initiates an SBD session
290  bool initiateSession();
291 
292  // Checks the response from session initiation
293  // And verifies that the data was indeed transmitted
294  bool verifySessionXmit();
295 
296  // Clears the mobile originated buffer via the +SBDD0 command
297  bool clearMOBuffer();
298 
299 // /// Get recieved (uplinked) message(s) through
300 // /// modem and add to uplink queue
301 // int getIncomingMessages();
302 
305  bool retrieveAndQueueIncoming( int nUplinkBytes );
306 
307  // returns true if data is requested from one of the readers
308  bool isDataRequested();
309 
310  // Debugging outputs
311  bool debug_;
312 
315 
316  // "Quality" as defined by NMEA standard.
317  // In the case of the NAL9602-LP:
318  // 0 = Invalid Fix, 1 or 2 = Valid Fix, 3 = Estimated Dead Reckoning
320  {
325  };
326 
328  {
334  };
335 
336  //
337  // Save Gps time in the following structure:
338  //
339  struct NmeaUTCTime
340  {
341  // Constructor
342  NmeaUTCTime();
343 
344  int hours_;
345  int minutes_;
346  int seconds_;
348  };
349 
350  //
351  // Save GPS date in the following structure:
352  //
353  struct NmeaUTCDate
354  {
355  // Constructor
356  NmeaUTCDate();
357 
358  int day_;
359  int month_;
360  int year_;
361  };
362 
365  struct Fix
366  {
367  // Constructor
368  Fix();
369 
372 
375 
376  // Latitude (degrees)
377  double latitude_;
378 
381 
382  // Longitude (degrees)
383  double longitude_;
384 
387 
389  bool status_; // RMC only. A==valid, V==invalid
390 
392  float sog_;
393 
395  float cog_;
396 
399 
402 
404  float hdop_;
405 
407  float altitude_;
408 
411 
414 
417  };
418 
420 
423 
425  short sigQuality_;
426 
427  bool belowSurfaceThreshold( void );
428 
430  bool getFix( void );
431 
433  bool requestFix( void );
434 
436  bool requestGSV( void );
437 
439  {
441  };
442 
444  static SentenceType GetNmeaSentenceType( const char *sentence );
445 
447  bool parseGGAFix( const char *ggaSentence );
448 
450  bool parseRMCFix( const char *rmcSentence );
451 
453  bool parseGSV( void );
454 
456  bool goodGGAFixIndicator( const char *ggaSentence );
457  bool goodRMCFixIndicator( const char *rmcSentence );
458 
460 
462  static double ParseLatitude( const char *nmeaString );
463 
464 // /// Print latitude in "dd mm.xx" format. (Input in radians)
465 // static char *PrintLatitude( double degrees );
466 
468  static double ParseLongitude( const char *nmeaString );
469 
470 // /// Print longitude in "ddd mm.xx" format. (Input in radians)
471 // static char *PrintLongitude( double degrees );
472 
474  Hemisphere char2Hemisphere( unsigned char hem );
475 
478 
479  struct SendPacket
480  {
485  uint32_t timeT_;
487  uint16_t index_;
489  uint16_t packetsLeft_;
496  size_t dataSize_;
497  int debug_;
502  } sendPacket_;
503 
505  unsigned int sentIndex_;
506 
507 };
508 
509 #endif /*NAL9602_H*/
virtual ~NAL9602()
Definition: NAL9602.cpp:175
DataWriter * sogWriter_
Definition: NAL9602.h:149
Definition: NAL9602.h:175
void getSigQuality()
bool status_
Status.
Definition: NAL9602.h:389
void sendingTransmit()
SENDING2.
Definition: NAL9602.cpp:656
Definition: NAL9602.h:440
short dgpsDataAge_
DGPS fix age in seconds.
Definition: NAL9602.h:413
void sessionMTQueueVerify()
Definition: NAL9602.cpp:1494
Definition: NAL9602.h:440
Contains the SyncComponent class definition.
Definition: NAL9602.h:204
Timespan iridiumMTQueueTimeout_
Definition: NAL9602.h:228
bool gotFix_
Definition: NAL9602.h:233
Contains the LoadControl class declaration.
UniversalDataReader * depthReader_
Definition: NAL9602.h:141
virtual RunState paused()
Should eventually follow a PAUSE request: should set continueTime.
Definition: NAL9602.cpp:2316
int minutes_
Definition: NAL9602.h:345
Hemisphere nsHemisphere_
North/South hemisphere.
Definition: NAL9602.h:380
bool requestGSV(void)
sends request to get GSV NMEA string and returns when data is ready or timeout has occured...
Definition: NAL9602.cpp:1314
int hours_
Definition: NAL9602.h:344
A DataAccessor that reads values from the Slate Contains a default dataValue that must not be NULL...
Definition: UniversalDataReader.h:26
Specifies the interface details for the NAL9602 component in the SensorModule.
double latitude_
Definition: NAL9602.h:377
DataWriter * numSatellitesWriter_
Definition: NAL9602.h:146
Timespan gpsFailTimeout_
Definition: NAL9602.h:227
void waking()
We define a method for each state of the device.
Definition: NAL9602.cpp:233
bool parseGSV(void)
Parses the GSV NMEA string(s)
Definition: NAL9602.cpp:2056
Abstract Base class for components that collect data for use later in the computation cycle...
Definition: SyncComponent.h:172
struct NAL9602::SendPacket sendPacket_
bool getFix(void)
Returns position from GPS or an empty string upon error.
Definition: NAL9602.cpp:1223
bool parseGGAFix(const char *ggaSentence)
Parse Gps fix from NMEA "GGA sentence".
Definition: NAL9602.cpp:1702
static double ParseLatitude(const char *nmeaString)
Parse latitude in radians from NMEA standard latitude string.
Definition: NAL9602.cpp:1158
Definition: NAL9602.h:177
Timestamp powerOffTimeStart_
Definition: NAL9602.h:231
Definition: NAL9602.h:173
Definition: NAL9602.h:182
UniversalDataReader * latitudeReader_
Definition: NAL9602.h:142
short dgpsStationId_
DGPS reference station id.
Definition: NAL9602.h:416
Timestamp startTime_
Definition: NAL9602.h:231
SentenceType
Definition: NAL9602.h:438
A DataAccessor that writes values to the Slate via its associated DataElement.
Definition: UniversalDataWriter.h:24
DataQuality
Definition: NAL9602.h:319
Definition: NAL9602.h:323
Definition: NAL9602.h:339
NmeaUTCDate utcdate_
Datestamp.
Definition: NAL9602.h:374
SNRWriters snrWriters_[MAX_GPS_SATS_9602]
Definition: NAL9602.h:214
Data structure contains items specified by the NMEA GPS data standard.
Definition: NAL9602.h:365
Hemisphere
Definition: NAL9602.h:327
RunState
Definition: Component.h:115
SNRWriters()
Definition: NAL9602.cpp:2196
DataWriter * goodFixWriter_
Definition: NAL9602.h:147
Contains the UartStream class declaration.
Definition: NAL9602.h:178
Fix()
Definition: NAL9602.cpp:2131
Timespan class, represents a delta of time.
Definition: Timestamp.h:248
Definition: NAL9602.h:180
ConfigReader * gpsFailTimeoutCfgReader_
Definition: NAL9602.h:162
virtual RunState stop()
Initial state – can be later followed by START.
Definition: NAL9602.cpp:2447
Definition: NAL9602.h:170
bool verifySessionXmit()
Definition: NAL9602.cpp:1035
void goToSleep()
GO_TO_SLEEP.
Definition: NAL9602.cpp:859
void needFix()
NEED_FIX.
Definition: NAL9602.cpp:307
UniversalDataWriter * communicationsWriter_
Definition: NAL9602.h:156
NmeaUTCTime utctime_
Timestamp, in NmeaUTCTime format.
Definition: NAL9602.h:371
size_t dataSize_
DATA THAT IS NOT SENT TO THE MODEM size of data
Definition: NAL9602.h:496
virtual RunState stopped()
Initial state – can be later followed by START.
Definition: NAL9602.cpp:2474
DataWriter * cogWriter_
Definition: NAL9602.h:150
Definition: NAL9602.h:184
Definition: NAL9602.h:321
Definition: NAL9602.h:179
bool retrieveAndQueueIncoming(int nUplinkBytes)
Retrieve (uplink) message from modem and queue it for clients.
Definition: NAL9602.cpp:1113
float sog_
Speed Over Ground.
Definition: NAL9602.h:392
Implements both InStream and OutStream for the LPC3XXX Standard UART.
Definition: UartStream.h:26
void awake()
AWAKE.
Definition: NAL9602.cpp:278
void receiving1()
RECEIVING1.
Definition: NAL9602.cpp:823
bool gpsTimeoutArmed_
Definition: NAL9602.h:267
DataQuality quality_
Data quality (see above)
Definition: NAL9602.h:398
CommsState commsState_
Definition: NAL9602.h:217
uint16_t index_
Current index of shore file from sendFilename_.
Definition: NAL9602.h:487
bool radioEnabled_
Definition: NAL9602.h:459
UniversalDataWriter * latitudeFixWriter_
Definition: NAL9602.h:153
A DataAccessor that writes values to the Slate via its associated DataElement.
Definition: DataWriter.h:27
Definition: NAL9602.h:353
bool debug_
Definition: NAL9602.h:311
Definition: ElementURI.h:166
Hemisphere ewHemisphere_
East/West hemisphere.
Definition: NAL9602.h:386
void uninitialize()
Provide a space for uninitialization.
Definition: NAL9602.cpp:884
Contains the FlexArrayBase and FlexArray class declarations.
Definition: NAL9602.h:479
bool initiateSession()
Definition: NAL9602.cpp:980
void receiving2()
RECEIVING2.
Definition: NAL9602.cpp:850
bool loadParams(void)
Definition: NAL9602.cpp:181
Contains the StrValue class definition.
void sendingFillBuffer()
SENDING1.
Definition: NAL9602.cpp:498
ConfigReader * iridiumFailTimeoutCfgReader_
Definition: NAL9602.h:163
int requestGGA_
Definition: NAL9602.h:246
Timestamp needMTQueueStartTime_
Definition: NAL9602.h:231
Definition: NAL9602.h:181
float hdop_
Horizontal dilution of precision.
Definition: NAL9602.h:404
Definition: NAL9602.h:333
bool gotMTQueue_
Definition: NAL9602.h:234
UniversalDataWriter * timeFixWriter_
Definition: NAL9602.h:152
virtual RunState start()
Do what needs to be done to run Similar to initialize, in old init/run/uninit sequence.
Definition: NAL9602.cpp:2205
Hemisphere char2Hemisphere(unsigned char hem)
Returns the hemisphere from the NMEA string.
Definition: NAL9602.cpp:1194
Definition: NAL9602.h:330
int month_
Definition: NAL9602.h:359
short nSatellites_
Number of satellites used in fix.
Definition: NAL9602.h:401
int seconds_
Definition: NAL9602.h:346
Timespan powerDownTimeout_
Definition: NAL9602.h:225
Module is the abstract base class for a collection of Component objects that can be contained in a lo...
Definition: Module.h:45
Definition: NAL9602.h:440
static double ParseLongitude(const char *nmeaString)
Parse longitude in radians from NMEA standard longitude string.
Definition: NAL9602.cpp:1176
Definition: NAL9602.h:183
bool ok_
Definition: NAL9602.h:239
bool gsvRequested_
Definition: NAL9602.h:273
float altitude_
Altitude above mean sealevel in meters.
Definition: NAL9602.h:407
Timespan requestTimeout_
Definition: NAL9602.h:226
Timestamp powerOnTimeStart_
Definition: NAL9602.h:231
bool cmdReceived_
Definition: NAL9602.h:261
Timespan bufferFillTimeout_
Definition: NAL9602.h:229
Timespan poResetTimeout_
Definition: NAL9602.h:225
Definition: NAL9602.h:174
NmeaUTCTime()
Definition: NAL9602.cpp:2117
void getMTQueueSignalStrength()
Definition: NAL9602.cpp:1410
Replacement for standard template class string.
Definition: Str.h:12
Timestamp utcTime_
Definition: NAL9602.h:231
FlexArray< int * > snrData_
Definition: NAL9602.h:236
float surfaceThreshold_
*----------------— vehicle parameters -----------------------—*/
Definition: NAL9602.h:242
#define MAX_GPS_SATS_9602
Definition: NAL9602.h:68
double longitude_
Definition: NAL9602.h:383
int debug_
Definition: NAL9602.h:497
unsigned int nUplinkBytes_
Definition: NAL9602.h:255
char * resendSBDFilename_
Name of SBD currently being re-sent to shore.
Definition: NAL9602.h:477
This class allows one to control loads on a load controller channel.
Definition: LoadControl.h:24
virtual RunState resuming()
Might follow a PAUSE...RESUME sequence.
Definition: NAL9602.cpp:2346
ConfigReader * checkMTQueueCfgReader_
Definition: NAL9602.h:161
DataWriter * sigQualityWriter_
Definition: NAL9602.h:148
void getReceivedSignalStrength()
Stores modem signal quality (0-5), -1 on error.
Definition: NAL9602.cpp:1343
virtual RunState resume()
Resume from PAUSE.
Definition: NAL9602.cpp:2339
Definition: NAL9602.h:322
Definition: UniversalDataWriter.h:55
Definition: ConfigReader.h:13
ConfigReader * surfaceThresholdCfgReader_
Configuration readers.
Definition: NAL9602.h:159
virtual RunState starting()
Might follow a STOP...START sequence.
Definition: NAL9602.cpp:2259
NmeaUTCDate()
Definition: NAL9602.cpp:2125
int day_
Definition: NAL9602.h:358
void cmdMode()
CMDMODE.
Definition: NAL9602.cpp:252
Contains the Logger class definition.
int year_
Definition: NAL9602.h:360
char command_[512]
Stores the decrypted command.
Definition: NAL9602.h:223
bool sendDataToShore_
Definition: NAL9602.h:243
NAL9602(const Module *module)
Definition: NAL9602.cpp:84
UniversalDataWriter * longitudeFixWriter_
Definition: NAL9602.h:154
bool clearMOBuffer()
Definition: NAL9602.cpp:1094
Fix fix_
Definition: NAL9602.h:419
bool iridiumTimeoutArmed_
Definition: NAL9602.h:270
void sendingVerify()
SENDING3.
Definition: NAL9602.cpp:690
char modemResponse_[512]
Stores the response from the modem.
Definition: NAL9602.h:220
float geoidHeight_
Geoid height above mean sealevel in meters.
Definition: NAL9602.h:410
Timestamp needFixStartTime_
Definition: NAL9602.h:231
void needGSV()
needGSV
Definition: NAL9602.cpp:451
Definition: NAL9602.h:171
Definition: NAL9602.h:176
Definition: NAL9602.h:440
int centiSeconds_
Definition: NAL9602.h:347
float cog_
Course Over Ground.
Definition: NAL9602.h:395
bool checkMTQueue_
Definition: NAL9602.h:244
bool fixRequested_
Definition: NAL9602.h:264
Definition: NAL9602.h:329
bool parseRMCFix(const char *rmcSentence)
Parse Gps fix from NMEA "RMC sentence".
Definition: NAL9602.cpp:1871
int uplinkStatus_
Definition: NAL9602.h:254
virtual ConfigURI getConfigURI(ConfigOption configOption) const
Should return [myNamespace]::SIMULATE_HARDWARE, or [myNamespace]::POWER, etc.
Definition: NAL9602.cpp:2162
bool isDataRequested()
Definition: NAL9602.cpp:2151
uint8_t data_[MAX_DOWNLINK_DATA_BYTES]
the payload
Definition: NAL9602.h:491
CommsState
Definition: NAL9602.h:168
Code unit that represents a unique name for a DataElement.
Definition: ElementURI.h:27
Definition: NAL9602.h:324
Contains the Timestamp and Timespan class declarations.
Str sendFilename_
Name of file currently being sent to shore.
Definition: NAL9602.h:499
DataWriter * snrWriter_
Definition: NAL9602.h:210
bool readConfig()
Definition: NAL9602.cpp:190
bool goodRMCFixIndicator(const char *rmcSentence)
Definition: NAL9602.cpp:1635
Provides software interface to the NAL Research NAL9602 Iridium modem and compass.
Definition: NAL9602.h:80
static SentenceType GetNmeaSentenceType(const char *sentence)
Returns type of NMEA sentence.
Definition: NAL9602.cpp:1547
bool communicationsDone_
Definition: NAL9602.h:258
ConfigOption
Definition: Component.h:456
bool qualityRequested_
Definition: NAL9602.h:276
#define MAX_DOWNLINK_DATA_BYTES
Definition: NAL9602.h:64
virtual RunState resetting()
Might occur in case of Error.
Definition: NAL9602.h:113
uint32_t timeT_
DATA THAT IS SENT TO THE MODEM Timestamp of log folder from sendFilename_
Definition: NAL9602.h:485
virtual RunState runnable()
Should eventually follow a START request or RESETTING.
Definition: NAL9602.cpp:2353
Wraps a string (see Str) as a DataValue, so strings can be written to and read from the slate...
Definition: StrValue.h:34
int uplinkSeqNo_
Definition: NAL9602.h:254
UniversalDataReader * longitudeReader_
Definition: NAL9602.h:143
Definition: NAL9602.h:331
ConfigReader * sendDataToShoreCfgReader_
Definition: NAL9602.h:160
virtual void run()
The actual "payload" of the component.
Definition: NAL9602.cpp:219
ConfigReader * requestGGACfgReader_
Definition: NAL9602.h:164
uint16_t packetsLeft_
of packets left to send
Definition: NAL9602.h:489
short sigQuality_
Holds most recent Iridium signal quality.
Definition: NAL9602.h:425
unsigned int nPendingUplinks_
Definition: NAL9602.h:255
virtual RunState stopping()
Might follow a STOP request.
Definition: NAL9602.cpp:2455
Represents absolute times.
Definition: Timestamp.h:31
LoadControl loadControl_
Definition: NAL9602.h:314
Definition: NAL9602.h:172
size_t sendFilesize_
Size of file currently being sent to shore.
Definition: NAL9602.h:501
bool requestFix(void)
sends request to get a fix and returns when data is ready or timeout has occured. ...
Definition: NAL9602.cpp:1276
bool goodGGAFixIndicator(const char *ggaSentence)
Check to see if a fix has been acquired.
Definition: NAL9602.cpp:1580
StrValue keyText_
Definition: NAL9602.h:245
virtual RunState pause()
Pause for a short period (indicated by pauseTime)
Definition: NAL9602.cpp:2278
Definition: NAL9602.h:332
UniversalBlobWriter * locationFixWriter_
Definition: NAL9602.h:155
UartStream uart_
Definition: NAL9602.h:313
bool belowSurfaceThreshold(void)
Definition: NAL9602.cpp:223
unsigned int sentIndex_
Keeps track of how many packets have been sent to shore.
Definition: NAL9602.h:505
bool fillBuffer(const unsigned char *msg, size_t nMsgBytes)
Send (downlink) a message.
Definition: NAL9602.cpp:906