LRAUV  revA
LPC3Reg.h
Go to the documentation of this file.
1 
10 #ifndef LPC3REG_H_
11 #define LPC3REG_H_
12 
19 class LPC3Reg
20 {
21 public:
22 
23 // Constructor
24  LPC3Reg( unsigned long baseAddress, int bytesMapped );
25 
26 // Destructor
27  virtual ~LPC3Reg();
28 
29  // Clock Control - 0x40004000 base
30  static volatile int& AdcClkCtrl1_;
31  static volatile int& AdcClkCtrl_;
32  static volatile int& TimClkCtrl_;
33  static volatile int& U3ClkPhys_;
34  static volatile int& U4ClkPhys_;
35  static volatile int& U6ClkPhys_;
36  static volatile int& UartClkCtrl_;
37 
38  // Main Interrupt Controller - 0x40008000 base
39 
40  // Sub Interrupt Controller 1 - 0x4000C000 base
41  static volatile int& Sic1Er_;
42  static volatile int& Sic1Rsr_;
43  static volatile int& Sic1Sr_;
44  static volatile int& Sic1Apr_;
45  static volatile int& Sic1Atr_;
46  static volatile int& Sic1Itr_;
47 
48  // Sub Interrupt Controller 2 - 0x40010000 base
49 
50  // High Speed Uart 1 - 40014000 base
51  static volatile int& Hsu1Ctrl_;
52  static volatile int& Hsu1RX_;
53 
54  // High Speed Uart 2 - 40018000 base
55  static volatile int& Hsu2Level_;
56  static volatile int& Hsu2RX_;
57 
58  // High Speed Uart 7 - 0x4001C000 base
59  static volatile int& Hsu7RX_;
60 
61  // GPIO Registers
62  static volatile int& P3InpStatePhys_;
63  static volatile int& PioOutpSetPhys_;
64  static volatile int& PioOutpClrPhys_;
65  static volatile int& PioMuxSetPhys_;
66  static volatile int& PioMuxClrPhys_;
67  static volatile int& P0InpStatePhys_;
68  static volatile int& P0OutpSetPhys_;
69  static volatile int& P0OutpClrPhys_;
70  static volatile int& P3MuxSetPhys_;
71  static volatile int& P3MuxClrPhys_;
72 
73  // ADC Control - 0x40048000 base
74  static volatile int& AdcSelect_;
75  static volatile int& AdcCtrl_;
76  static volatile int& AdcValue_;
77 
78  // UART Control - 0x40054000 base
79  static volatile int& UartCtrlPhys_;
80  static volatile int& UartClkModePhys_;
81 
82  // Regular Uart 3 - 0x40080000 base
83  static volatile int& U3LsrPhys_;
84  static volatile int& U3DllPhys_;
85 
86  // Regular Uart 4 - 0x40088000 base
87  static volatile int& U4DllPhys_;
88  static volatile int& U4LsrPhys_;
89 
90  // Regular Uart 5 - 0x40090000 base
91  static volatile int& U5LsrPhys_;
92 
93  // Regular Uart 6 - 0x40098000 base
94  static volatile int& U6LsrPhys_;
95  static volatile int& U6DllPhys_;
96  static volatile int& U6IERPhys_;
97 
98  // Watchdog Timer - 0x4003C000 base
99  static volatile int& WDTimCtrl_;
100  static volatile int& WDTimCounter_;
101  static volatile int& WDTimMCtrl_;
102  static volatile int& WDTimMatch0_;
103  static volatile int& WDTimEMR_;
104  static volatile int& WDTimPulse_;
105  static volatile int& WDTimRes_;
106 
108  static bool IsDropweightOK( void );
109 
111  static bool IsBurnwireActive()
112  {
113  return BurnwireActive_;
114  }
115 
116 private:
117  // Note that the copy constructor below is private and not given a body.
118  // Any attempt to call it will return a compiler error.
119  LPC3Reg( const LPC3Reg& old ); // disallow copy constructor
120 
121  int devFD_;
122  int* map_;
123  unsigned long baseAddress_;
125 
126  static bool BurnwireActive_;
127 
128  // Clock Control - 0x40004000 base
130 
131  // Main Interrupt Controller - 0x40008000 base
132 
133  // Sub Interrupt Controller 1 - 0x4000C000 base
134  static LPC3Reg Sic1_;
135 
136  // Sub Interrupt Controller 2 - 0x40010000 base
137 
138  // High Speed Uart 1 - 40014000 base
140 
141  // High Speed Uart 2 - 0x40018000 base
143 
144  // High Speed Uart 7 - 0x4001C000 base
146 
147  // GPIO Registers - 0x40028000 base
149 
150  // ADC Control - 0x40048000 base
151  static LPC3Reg Adc_;
152 
153  // UART Control - 0x40054000 base
155 
156  // Regular Uart 3 - 0x40080000 base
158 
159  // Regular Uart 4 - 0x40088000 base
161 
162  // Regular Uart 5 - 0x40090000 base
164 
165  // Regular Uart 6 - 0x40098000 base
167 
168  // Watchdog Timer - 0x4003C000 base
170 
171 
172 private:
173 
174  friend class CBIT;
175  friend class SBIT;
176  friend class IBIT;
177  friend class Supervisor;
178  friend class CommandLine;
179  friend class LoadControl;
180  friend class VerticalControl;
181 
183  static void SoftwareReset( void );
184 
186  static void InitializeHBC( void );
187 
189  static void CheckBatt( void );
190 
192  static bool InitializeWDT( void );
193 
195  static void StrobeWDT( void );
196 
198  static void StrobeHBC( void );
199 
201  static bool PowerOffLoads( void );
202 
204  static bool PowerOnLoads( void );
205 
207  static bool QueryShorepower( void );
208 
210  static bool QueryBattPower( void );
211 
213  static bool QueryBackplanePower( void );
214 
216  static bool WaterDetected( void );
217 
219  static bool CFMissing( void );
220 
222  static void ActivateBurnwire( void );
223 
225  static void DeactivateBurnwire( void );
226 
228  static void DeactivateRadio( void );
229 
230  // Asserts reset signal
231  static void SWReset( void );
232 
234  static void UninitializeWDT( void );
235 
237  static bool HeartbeatHi_;
238 
240  static bool BackplanePowerOn_;
241 
243  typedef enum { CHAN_0 = 0x4, // GPO_02 - bit 2 -- changed on mobo w/ blue wire since GPO_1 is buffered and current limited
244  CHAN_1 = 0x20000, // GPO_17 - bit 17
245  CHAN_2 = 0x40000, // GPO_18 - bit 18
246  // Channel 3 is not actually made. Channel unused
247  CHAN_4 = 0x800, // GPO_11 - bit 11
248  CHAN_5 = 0x1000, // GPO_12 - bit 12
249  } GFChan;
250 
251 
253  static void ActivateGF( GFChan channel );
254 
255  static void DeactivateGF( GFChan channel );
256 
257 };
258 
259 #endif /*LPC3REG_H_*/
260 
static volatile int & U6DllPhys_
Definition: LPC3Reg.h:95
GFChan
Ground fault channel definitions.
Definition: LPC3Reg.h:243
static void SWReset(void)
Definition: LPC3Reg.cpp:305
static volatile int & U6IERPhys_
Definition: LPC3Reg.h:96
static volatile int & TimClkCtrl_
Definition: LPC3Reg.h:32
static void UninitializeWDT(void)
Shut down the watchdog timer.
Definition: LPC3Reg.cpp:471
static volatile int & AdcClkCtrl_
Definition: LPC3Reg.h:31
static volatile int & U4DllPhys_
Definition: LPC3Reg.h:87
LPC3Reg(unsigned long baseAddress, int bytesMapped)
Definition: LPC3Reg.cpp:51
virtual ~LPC3Reg()
Definition: LPC3Reg.cpp:77
static volatile int & UartCtrlPhys_
Definition: LPC3Reg.h:79
int * map_
Definition: LPC3Reg.h:122
static volatile int & P0OutpClrPhys_
Definition: LPC3Reg.h:69
static volatile int & WDTimPulse_
Definition: LPC3Reg.h:104
static volatile int & PioMuxSetPhys_
Definition: LPC3Reg.h:65
static volatile int & U3LsrPhys_
Definition: LPC3Reg.h:83
static volatile int & Sic1Apr_
Definition: LPC3Reg.h:44
static bool HeartbeatHi_
Keeps track of flipping the state of the heartbeat signal.
Definition: LPC3Reg.h:237
static volatile int & UartClkModePhys_
Definition: LPC3Reg.h:80
static LPC3Reg Uart5Phys_
Definition: LPC3Reg.h:163
static volatile int & Hsu1RX_
Definition: LPC3Reg.h:52
int devFD_
Definition: LPC3Reg.h:121
static bool WaterDetected(void)
Returns true if water is detected in the pressure hull.
Definition: LPC3Reg.cpp:448
static volatile int & WDTimMatch0_
Definition: LPC3Reg.h:102
static void ActivateBurnwire(void)
Activate the burnwire to drop the weight.
Definition: LPC3Reg.cpp:275
static bool BurnwireActive_
Definition: LPC3Reg.h:126
static volatile int & U4ClkPhys_
Definition: LPC3Reg.h:34
static void DeactivateGF(GFChan channel)
Definition: LPC3Reg.cpp:495
Definition: LPC3Reg.h:243
static volatile int & U3ClkPhys_
Definition: LPC3Reg.h:33
static void DeactivateBurnwire(void)
Deactivate the burnwire to NOT drop the weight.
Definition: LPC3Reg.cpp:287
static volatile int & WDTimRes_
Definition: LPC3Reg.h:105
static bool IsBurnwireActive()
Returns true if the burn wire is burning, false if not.
Definition: LPC3Reg.h:111
static LPC3Reg Uart3Phys_
Definition: LPC3Reg.h:157
static volatile int & AdcSelect_
Definition: LPC3Reg.h:74
static bool QueryShorepower(void)
Returns true if shore power is on, false if not.
Definition: LPC3Reg.cpp:410
static volatile int & Sic1Er_
Definition: LPC3Reg.h:41
Provides a simple command line interface to the LRAUV.
Definition: CommandLine.h:38
static volatile int & PioOutpClrPhys_
Definition: LPC3Reg.h:64
static volatile int & U4LsrPhys_
Definition: LPC3Reg.h:88
static volatile int & AdcCtrl_
Definition: LPC3Reg.h:75
static volatile int & P3InpStatePhys_
Definition: LPC3Reg.h:62
static LPC3Reg Hsu7RxPhys_
Definition: LPC3Reg.h:145
static bool CFMissing(void)
Returns true if CF card is missing (NOT detected)
Definition: LPC3Reg.cpp:459
Definition: LPC3Reg.h:245
static LPC3Reg PioPhys_
Definition: LPC3Reg.h:148
static volatile int & WDTimEMR_
Definition: LPC3Reg.h:103
static volatile int & U6LsrPhys_
Definition: LPC3Reg.h:94
static LPC3Reg Hsu2RxPhys_
Definition: LPC3Reg.h:142
static volatile int & U6ClkPhys_
Definition: LPC3Reg.h:35
static volatile int & Sic1Atr_
Definition: LPC3Reg.h:45
static volatile int & Hsu1Ctrl_
Definition: LPC3Reg.h:51
static bool QueryBackplanePower(void)
Returns true if LOAD_CONT_STATE is asserted (note signal is active low)
Definition: LPC3Reg.cpp:433
static volatile int & Hsu2Level_
Definition: LPC3Reg.h:55
static LPC3Reg Uart6Phys_
Definition: LPC3Reg.h:166
The SBIT built-in-test component provides monitoring of vehicle health at startup.
Definition: SBIT.h:31
static volatile int & U5LsrPhys_
Definition: LPC3Reg.h:91
static void CheckBatt(void)
Monitors the batteries.
This class allows one to control loads on a load controller channel.
Definition: LoadControl.h:24
static volatile int & AdcValue_
Definition: LPC3Reg.h:76
static bool QueryBattPower(void)
Returns true if battery power is on, false if not.
Definition: LPC3Reg.cpp:422
static LPC3Reg SysCtrlPhys_
Definition: LPC3Reg.h:129
static LPC3Reg UartGenCtrlPhys_
Definition: LPC3Reg.h:154
static volatile int & UartClkCtrl_
Definition: LPC3Reg.h:36
static volatile int & U3DllPhys_
Definition: LPC3Reg.h:84
static volatile int & AdcClkCtrl1_
Definition: LPC3Reg.h:30
static void DeactivateRadio(void)
Deactivate the radio(s) so they are not powered in emergency mode.
Definition: LPC3Reg.cpp:297
static volatile int & P3MuxSetPhys_
Definition: LPC3Reg.h:70
static LPC3Reg Uart4Phys_
Definition: LPC3Reg.h:160
static void SoftwareReset(void)
Force an immediate reset.
Definition: LPC3Reg.cpp:269
static bool IsDropweightOK(void)
Returns true if the drop weight is present, false if not.
Definition: LPC3Reg.cpp:398
static volatile int & Hsu2RX_
Definition: LPC3Reg.h:56
static volatile int & P3MuxClrPhys_
Definition: LPC3Reg.h:71
static volatile int & P0OutpSetPhys_
Definition: LPC3Reg.h:68
static void StrobeWDT(void)
Kick the dog.
Definition: LPC3Reg.cpp:232
static LPC3Reg WDTPhys_
Definition: LPC3Reg.h:169
Definition: LPC3Reg.h:244
The IBIT built-in-test component provides monitoring of vehicle health on demand. ...
Definition: IBIT.h:31
static void StrobeHBC(void)
Strobe the heartbeat counter.
Definition: LPC3Reg.cpp:254
static volatile int & WDTimCtrl_
Definition: LPC3Reg.h:99
static bool BackplanePowerOn_
True == backplane power applied.
Definition: LPC3Reg.h:240
static bool PowerOnLoads(void)
Applies power to the load control backplane.
Definition: LPC3Reg.cpp:342
static volatile int & Hsu7RX_
Definition: LPC3Reg.h:59
static void InitializeHBC(void)
Get ready to heartbeat.
Definition: LPC3Reg.cpp:220
static volatile int & Sic1Sr_
Definition: LPC3Reg.h:43
The supervisor is the "main" component in the vehicle software.
Definition: Supervisor.h:65
int bytesMapped_
Definition: LPC3Reg.h:124
Definition: LPC3Reg.h:247
static void ActivateGF(GFChan channel)
Ground fault circuit handling.
Definition: LPC3Reg.cpp:489
static volatile int & PioMuxClrPhys_
Definition: LPC3Reg.h:66
static bool InitializeWDT(void)
Fire up the watchdog timer.
Definition: LPC3Reg.cpp:188
static LPC3Reg Sic1_
Definition: LPC3Reg.h:134
static LPC3Reg Adc_
Definition: LPC3Reg.h:151
This is the primary "control" for the vehicle's depth.
Definition: VerticalControl.h:35
static volatile int & WDTimMCtrl_
Definition: LPC3Reg.h:101
Definition: LPC3Reg.h:248
Provides pointers for poking and peeking at LPC3XXX registers.
Definition: LPC3Reg.h:19
static bool PowerOffLoads(void)
Removes power from the load control backplane.
Definition: LPC3Reg.cpp:315
static volatile int & Sic1Rsr_
Definition: LPC3Reg.h:42
static volatile int & P0InpStatePhys_
Definition: LPC3Reg.h:67
static LPC3Reg Hsu1RxPhys_
Definition: LPC3Reg.h:139
unsigned long baseAddress_
Definition: LPC3Reg.h:123
static volatile int & PioOutpSetPhys_
Definition: LPC3Reg.h:63
static volatile int & WDTimCounter_
Definition: LPC3Reg.h:100
The CBIT built-in-test (CBIT) component provides monitoring of vehicle health during a mission...
Definition: CBIT.h:38
static volatile int & Sic1Itr_
Definition: LPC3Reg.h:46