APM:Libraries
HAL.h
Go to the documentation of this file.
1 #pragma once
2 
3 class AP_Param;
4 
5 #include "AP_HAL_Namespace.h"
6 
7 #include "AnalogIn.h"
8 #include "GPIO.h"
9 #include "RCInput.h"
10 #include "RCOutput.h"
11 #include "SPIDevice.h"
12 #include "Storage.h"
13 #include "UARTDriver.h"
14 #include "system.h"
15 #include "OpticalFlow.h"
16 #if HAL_WITH_UAVCAN
17 #include "CAN.h"
18 #endif
19 
20 
21 #if defined(HAL_NEEDS_PARAM_HELPER)
22 #include <AP_Param/AP_Param.h>
23 class AP_Param_Helper;
24 #endif
25 
26 class AP_HAL::HAL {
27 public:
28  HAL(AP_HAL::UARTDriver* _uartA, // console
29  AP_HAL::UARTDriver* _uartB, // 1st GPS
30  AP_HAL::UARTDriver* _uartC, // telem1
31  AP_HAL::UARTDriver* _uartD, // telem2
32  AP_HAL::UARTDriver* _uartE, // 2nd GPS
33  AP_HAL::UARTDriver* _uartF, // extra1
34  AP_HAL::I2CDeviceManager* _i2c_mgr,
36  AP_HAL::AnalogIn* _analogin,
37  AP_HAL::Storage* _storage,
38  AP_HAL::UARTDriver* _console,
39  AP_HAL::GPIO* _gpio,
40  AP_HAL::RCInput* _rcin,
41  AP_HAL::RCOutput* _rcout,
42  AP_HAL::Scheduler* _scheduler,
43  AP_HAL::Util* _util,
44  AP_HAL::OpticalFlow *_opticalflow,
46  AP_HAL::CANManager* _can_mgr[MAX_NUMBER_OF_CAN_DRIVERS])
47 #else
48  AP_HAL::CANManager** _can_mgr)
49 #endif
50  :
51  uartA(_uartA),
52  uartB(_uartB),
53  uartC(_uartC),
54  uartD(_uartD),
55  uartE(_uartE),
56  uartF(_uartF),
57  i2c_mgr(_i2c_mgr),
58  spi(_spi),
59  analogin(_analogin),
60  storage(_storage),
61  console(_console),
62  gpio(_gpio),
63  rcin(_rcin),
64  rcout(_rcout),
65  scheduler(_scheduler),
66  util(_util),
67  opticalflow(_opticalflow)
68  {
69 #if HAL_WITH_UAVCAN
70  if (_can_mgr == nullptr) {
71  for (uint8_t i = 0; i < MAX_NUMBER_OF_CAN_DRIVERS; i++)
72  can_mgr[i] = nullptr;
73  } else {
74  for (uint8_t i = 0; i < MAX_NUMBER_OF_CAN_DRIVERS; i++)
75  can_mgr[i] = _can_mgr[i];
76  }
77 #endif
78 
79  AP_HAL::init();
80  }
81 
82  struct Callbacks {
83  virtual void setup() = 0;
84  virtual void loop() = 0;
85  };
86 
87  struct FunCallbacks : public Callbacks {
88  FunCallbacks(void (*setup_fun)(void), void (*loop_fun)(void));
89 
90  void setup() override { _setup(); }
91  void loop() override { _loop(); }
92 
93  private:
94  void (*_setup)(void);
95  void (*_loop)(void);
96  };
97 
98  virtual void run(int argc, char * const argv[], Callbacks* callbacks) const = 0;
99 
117 #if HAL_WITH_UAVCAN
118  AP_HAL::CANManager* can_mgr[MAX_NUMBER_OF_CAN_DRIVERS];
119 #else
120  AP_HAL::CANManager** can_mgr;
121 #endif
122 };
virtual void setup()=0
AP_HAL::UARTDriver * uartE
Definition: HAL.h:104
virtual void loop()=0
AP_HAL::UARTDriver * console
Definition: HAL.h:110
HAL(AP_HAL::UARTDriver *_uartA, AP_HAL::UARTDriver *_uartB, AP_HAL::UARTDriver *_uartC, AP_HAL::UARTDriver *_uartD, AP_HAL::UARTDriver *_uartE, AP_HAL::UARTDriver *_uartF, AP_HAL::I2CDeviceManager *_i2c_mgr, AP_HAL::SPIDeviceManager *_spi, AP_HAL::AnalogIn *_analogin, AP_HAL::Storage *_storage, AP_HAL::UARTDriver *_console, AP_HAL::GPIO *_gpio, AP_HAL::RCInput *_rcin, AP_HAL::RCOutput *_rcout, AP_HAL::Scheduler *_scheduler, AP_HAL::Util *_util, AP_HAL::OpticalFlow *_opticalflow, AP_HAL::CANManager **_can_mgr)
Definition: HAL.h:28
AP_HAL::Util * util
Definition: HAL.h:115
AP_HAL::UARTDriver * uartB
Definition: HAL.h:101
#define HAL_WITH_UAVCAN
AP_HAL::CANManager ** can_mgr
Definition: HAL.h:120
A system for managing and storing variables that are of general interest to the system.
void setup() override
Definition: HAL.h:90
AP_HAL::UARTDriver * uartC
Definition: HAL.h:102
AP_HAL::OpticalFlow * opticalflow
Definition: HAL.h:116
AP_HAL::UARTDriver * uartF
Definition: HAL.h:105
AP_HAL::UARTDriver * uartD
Definition: HAL.h:103
AP_HAL::Storage * storage
Definition: HAL.h:109
AP_HAL::SPIDeviceManager * spi
Definition: HAL.h:107
AP_HAL::I2CDeviceManager * i2c_mgr
Definition: HAL.h:106
AP_HAL::UARTDriver * uartA
Definition: HAL.h:100
AP_HAL::GPIO * gpio
Definition: HAL.h:111
void init()
Generic board initialization function.
Definition: system.cpp:136
AP_HAL::RCOutput * rcout
Definition: HAL.h:113
virtual void run(int argc, char *const argv[], Callbacks *callbacks) const =0
void loop() override
Definition: HAL.h:91
AP_HAL::RCInput * rcin
Definition: HAL.h:112
AP_HAL::Scheduler * scheduler
Definition: HAL.h:114
AP_HAL::AnalogIn * analogin
Definition: HAL.h:108