LRAUV  revA
AcousticModem_Benthos_ATM900.h
Go to the documentation of this file.
1 
12 #ifndef ACOUSTICMODEM_BENTHOS_ATM900_H
13 #define ACOUSTICMODEM_BENTHOS_ATM900_H
14 
16 #include "io/LoadControl.h"
17 #include "io/UartStream.h"
18 #include "logger/Logger.h"
19 
22 
32 {
33 public:
34 
35  AcousticModem_Benthos_ATM900( const Module* module );
36 
38 
39  virtual void run();
40 
43  virtual RunState start();
44 
46  virtual RunState starting();
47 
49  virtual RunState pause();
50 
52  virtual RunState paused();
53 
55  virtual RunState resume();
56 
58  virtual RunState resuming();
59 
61  virtual RunState runnable();
62 
64  virtual RunState resetting()
65  {
66  return stop();
67  }
68 
70  virtual RunState stop();
71 
72  virtual RunState stopping();
73 
75  virtual RunState stopped();
76 
77  virtual void uninitialize();
78 
80  virtual ConfigURI getConfigURI( ConfigOption configOption ) const;
81 
82 private:
83 
84  // Note that the copy constructor below is private and not given a body.
85  // Any attempt to call it will return a compiler error.
86  AcousticModem_Benthos_ATM900( const AcousticModem_Benthos_ATM900& old ); // disallow copy constructor
87 
88  void readConfig();
89 
92 
93  // Slate inputs
96 
97  // Slate outputs
105 // DataWriter* onewayCmdWriter_;
106 
107  bool debug_;
109  char deviceResponse_[396]; // Stores the current response from the modem
110 
111  // Instance of load controller
116 
117  UartStream uart_; // Holds the communications device
118 
120  bool commandModeSent_, commandModeAcknowledged_, localAddressSettingSent_, localAddressSettingAcknowledged_; // TODO: These state flags are clunky -- it would be cleaner if we just made this component asynchronous and let the serial port wait for a reasonable time for a response.
122  int remoteAddressRequested_, numPingsRequested_; // The query from another component, consisting of the address of the modem from which the AcousticModem_Benthos_ATM900 is requesting data and the number of return pings it is requesting
126 
127  double range_;
133 
134  void logVoltageAndCurrent();
135 
136  // returns true if data is requested from one of the readers
137  bool isDataRequested();
138 
139  bool gotNewQuery( void );
140 
141  Timestamp requestRange( const int remoteAddress, const int numPings );
142 
143  int clearUserPrompt( void );
144 
145  void readAndParseResponses( void );
146 
147  void cleanResponse( void );
148 
149  bool parseDebugRxMessage( void );
150 
151  bool parseDebugTxMessage( void );
152 
153  bool parseRangeMessage( void );
154 
155  void publishData( void );
156 
157 };
158 
159 #endif /*ACOUSTICMODEM_BENTHOS_ATM900_H*/
DataWriter * remoteAddressWriter_
Definition: AcousticModem_Benthos_ATM900.h:102
bool isDataRequested()
Definition: AcousticModem_Benthos_ATM900.cpp:487
virtual RunState paused()
Should eventually follow a PAUSE request: should set continueTime.
Definition: AcousticModem_Benthos_ATM900.cpp:314
Contains the SyncComponent class definition.
bool gotAcousticWakeup_
Definition: AcousticModem_Benthos_ATM900.h:124
virtual RunState starting()
Might follow a STOP...START sequence.
Definition: AcousticModem_Benthos_ATM900.cpp:180
Contains the LoadControl class declaration.
virtual ~AcousticModem_Benthos_ATM900()
Definition: AcousticModem_Benthos_ATM900.cpp:88
Timestamp modemTransmitPingTime_
Definition: AcousticModem_Benthos_ATM900.h:130
A DataAccessor that reads values from the Slate Contains a default dataValue that must not be NULL...
Definition: UniversalDataReader.h:26
Timespan powerDownTimeout_
Definition: AcousticModem_Benthos_ATM900.h:115
virtual void uninitialize()
Provide a space for uninitialization.
Definition: AcousticModem_Benthos_ATM900.cpp:108
DataReader * queryAddressRequestedReader_
Definition: AcousticModem_Benthos_ATM900.h:94
bool gotResponseNotReceived_
Definition: AcousticModem_Benthos_ATM900.h:124
Abstract Base class for components that collect data for use later in the computation cycle...
Definition: SyncComponent.h:172
void readAndParseResponses(void)
Definition: AcousticModem_Benthos_ATM900.cpp:572
bool localAddressSettingSent_
Definition: AcousticModem_Benthos_ATM900.h:120
Timestamp requestRange(const int remoteAddress, const int numPings)
Definition: AcousticModem_Benthos_ATM900.cpp:528
bool gotNewQuery(void)
Definition: AcousticModem_Benthos_ATM900.cpp:500
DataWriter * rangeRequestReceivedWriter_
Definition: AcousticModem_Benthos_ATM900.h:101
A DataAccessor that reads values from the Slate Contains a default dataValue that must not be NULL...
Definition: DataReader.h:30
int numPingsRequested_
Definition: AcousticModem_Benthos_ATM900.h:122
int remoteAddressRequested_
Definition: AcousticModem_Benthos_ATM900.h:122
bool debug_
Definition: AcousticModem_Benthos_ATM900.h:107
A DataAccessor that writes values to the Slate via its associated DataElement.
Definition: UniversalDataWriter.h:24
double range_
Definition: AcousticModem_Benthos_ATM900.h:127
int remoteAddress_
Definition: AcousticModem_Benthos_ATM900.h:132
LoadControl loadControl_
Definition: AcousticModem_Benthos_ATM900.h:112
Timestamp modemReceivePingTime_
Definition: AcousticModem_Benthos_ATM900.h:130
virtual RunState stop()
Initial state – can be later followed by START.
Definition: AcousticModem_Benthos_ATM900.cpp:415
RunState
Definition: Component.h:115
Timestamp transmitPingTime_
Definition: AcousticModem_Benthos_ATM900.h:129
Contains the UartStream class declaration.
virtual RunState resume()
Resume from PAUSE.
Definition: AcousticModem_Benthos_ATM900.cpp:322
char deviceResponse_[396]
Definition: AcousticModem_Benthos_ATM900.h:109
int localAddress_
Definition: AcousticModem_Benthos_ATM900.h:132
UniversalDataWriter * rxTimeWriter_
Definition: AcousticModem_Benthos_ATM900.h:99
Timespan class, represents a delta of time.
Definition: Timestamp.h:248
bool gotDebugTxMessage_
Definition: AcousticModem_Benthos_ATM900.h:124
bool commandModeSent_
Definition: AcousticModem_Benthos_ATM900.h:120
DataReader * numberOfPingsRequestedReader_
Definition: AcousticModem_Benthos_ATM900.h:95
DataWriter * acousticWakeupWriter_
Definition: AcousticModem_Benthos_ATM900.h:98
ConfigReader * verbosityCfgReader_
Definition: AcousticModem_Benthos_ATM900.h:90
Implements both InStream and OutStream for the LPC3XXX Standard UART.
Definition: UartStream.h:26
double modemTransmitPingEpochSeconds_
Definition: AcousticModem_Benthos_ATM900.h:131
A DataAccessor that writes values to the Slate via its associated DataElement.
Definition: DataWriter.h:27
bool parseDebugRxMessage(void)
Definition: AcousticModem_Benthos_ATM900.cpp:646
double modemReceivePingEpochSeconds_
Definition: AcousticModem_Benthos_ATM900.h:131
Definition: ElementURI.h:166
DataWriter * rangeWriter_
Definition: AcousticModem_Benthos_ATM900.h:104
bool gotRangeMessage_
Definition: AcousticModem_Benthos_ATM900.h:124
Timestamp startTime_
Definition: AcousticModem_Benthos_ATM900.h:113
Timestamp powerOffTimeStart_
Definition: AcousticModem_Benthos_ATM900.h:114
void logVoltageAndCurrent()
Definition: AcousticModem_Benthos_ATM900.cpp:465
Timestamp dataTimestamp_
Definition: AcousticModem_Benthos_ATM900.h:128
Module is the abstract base class for a collection of Component objects that can be contained in a lo...
Definition: Module.h:45
UartStream uart_
Definition: AcousticModem_Benthos_ATM900.h:117
int verbosity_
Definition: AcousticModem_Benthos_ATM900.h:108
AcousticModem_Benthos_ATM900(const Module *module)
Definition: AcousticModem_Benthos_ATM900.cpp:25
DataWriter * localAddressWriter_
Definition: AcousticModem_Benthos_ATM900.h:103
int commRate_
Definition: AcousticModem_Benthos_ATM900.h:125
int clearUserPrompt(void)
Definition: AcousticModem_Benthos_ATM900.cpp:559
This class allows one to control loads on a load controller channel.
Definition: LoadControl.h:24
Definition: ConfigReader.h:13
virtual void run()
The actual "payload" of the component.
Definition: AcousticModem_Benthos_ATM900.cpp:93
Timestamp receivePingTime_
Definition: AcousticModem_Benthos_ATM900.h:129
int numPingsReceived_
Definition: AcousticModem_Benthos_ATM900.h:123
int localAddressCfgSetting_
Definition: AcousticModem_Benthos_ATM900.h:119
bool gotDebugRxMessage_
Definition: AcousticModem_Benthos_ATM900.h:124
Contains the Logger class definition.
bool parseRangeMessage(void)
Definition: AcousticModem_Benthos_ATM900.cpp:684
void readConfig()
Definition: AcousticModem_Benthos_ATM900.cpp:98
Timespan acousticResponseTimeout_
Definition: AcousticModem_Benthos_ATM900.h:121
virtual RunState runnable()
Should eventually follow a START request or RESETTING.
Definition: AcousticModem_Benthos_ATM900.cpp:347
ConfigReader * localAddressCfgReader_
Definition: AcousticModem_Benthos_ATM900.h:91
virtual RunState resetting()
Might occur in case of Error.
Definition: AcousticModem_Benthos_ATM900.h:64
void publishData(void)
Definition: AcousticModem_Benthos_ATM900.cpp:695
virtual ConfigURI getConfigURI(ConfigOption configOption) const
Should return [myNamespace]::SIMULATE_HARDWARE, or [myNamespace]::POWER, etc.
Definition: AcousticModem_Benthos_ATM900.cpp:554
bool gotRangeRequestMessage_
Definition: AcousticModem_Benthos_ATM900.h:124
virtual RunState stopped()
Initial state – can be later followed by START.
Definition: AcousticModem_Benthos_ATM900.cpp:441
UniversalDataWriter * txTimeWriter_
Definition: AcousticModem_Benthos_ATM900.h:100
bool localAddressSettingAcknowledged_
Definition: AcousticModem_Benthos_ATM900.h:120
virtual RunState start()
Do what needs to be done to run Similar to initialize, in old init/run/uninit sequence.
Definition: AcousticModem_Benthos_ATM900.cpp:127
Provides software interface to the Benthos ATM-900 Acoustic Modem.
Definition: AcousticModem_Benthos_ATM900.h:31
virtual RunState resuming()
Might follow a PAUSE...RESUME sequence.
Definition: AcousticModem_Benthos_ATM900.cpp:335
bool commandModeAcknowledged_
Definition: AcousticModem_Benthos_ATM900.h:120
ConfigOption
Definition: Component.h:456
bool parseDebugTxMessage(void)
Definition: AcousticModem_Benthos_ATM900.cpp:665
Represents absolute times.
Definition: Timestamp.h:31
virtual RunState stopping()
Might follow a STOP request.
Definition: AcousticModem_Benthos_ATM900.cpp:424
Timespan poTimeout_
Definition: AcousticModem_Benthos_ATM900.h:115
virtual RunState pause()
Pause for a short period (indicated by pauseTime)
Definition: AcousticModem_Benthos_ATM900.cpp:305