49 using namespace Linux;
51 #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO || \ 52 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 || \ 53 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_EDGE || \ 54 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBRAIN2 || \ 55 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH || \ 56 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DARK || \ 57 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI 73 #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO || \ 74 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 || \ 75 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH 81 #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO || \ 82 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBRAIN2 || \ 83 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH || \ 84 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI 86 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || \ 87 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBOARD || \ 88 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI || \ 89 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BLUE || \ 90 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_POCKET || \ 91 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_MINLURE 93 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 || \ 94 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_EDGE 105 #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || \ 106 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBOARD || \ 107 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI || \ 108 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BLUE || \ 109 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_POCKET 114 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBRAIN2 || \ 115 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH || \ 116 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DARK || \ 117 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI 119 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO || \ 120 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 || \ 121 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_EDGE 123 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_MINLURE || \ 124 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP || \ 125 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO || \ 126 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_AERO 135 #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBOARD 137 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI || \ 138 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_POCKET 140 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BLUE 142 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO || \ 143 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBRAIN2 || \ 144 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH || \ 145 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DARK || \ 146 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI 148 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ || \ 149 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ 151 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP 153 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_MINLURE 155 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO 157 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_AERO 159 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 || \ 160 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_EDGE 162 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_RST_ZYNQ 171 #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXF || CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBOARD 173 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BBBMINI || \ 174 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BLUE || \ 175 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_POCKET 180 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ERLEBRAIN2 || \ 181 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_PXFMINI 183 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO 185 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BH 187 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DARK 189 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_ZYNQ || \ 190 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_OCPOC_ZYNQ 192 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP 194 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_MINLURE 197 "platform/80860F41:05",
199 "pci0000:00/0000:00:18.6" },
201 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_DISCO 203 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_NAVIO2 205 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_AERO 207 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_EDGE 209 #elif CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_RST_ZYNQ 217 #if CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_BEBOP ||\ 218 CONFIG_HAL_BOARD_SUBTYPE == HAL_BOARD_SUBTYPE_LINUX_MINLURE 248 printf(
"Usage: -A uartAPath -B uartBPath -C uartCPath -D uartDPath -E uartEPath -F uartFPath\n");
251 printf(
" -A /dev/ttyO4\n");
252 printf(
"\t -B /dev/ttyS1\n");
253 printf(
"\tnetworking tcp:\n");
254 printf(
"\t -C tcp:192.168.2.15:1243:wait\n");
255 printf(
"\t -A tcp:11.0.0.2:5678\n");
256 printf(
"\t -A udp:11.0.0.2:14550\n");
257 printf(
"\tnetworking UDP:\n");
258 printf(
"\t -A udp:11.0.0.255:14550:bcast\n");
259 printf(
"\t -A udpin:0.0.0.0:14550\n");
260 printf(
"\tcustom log path:\n");
261 printf(
"\t --log-directory /var/APM/logs\n");
262 printf(
"\t -l /var/APM/logs\n");
263 printf(
"\tcustom terrain path:\n");
264 printf(
"\t --terrain-directory /var/APM/terrain\n");
265 printf(
"\t -t /var/APM/terrain\n");
266 #if AP_MODULE_SUPPORTED 267 printf(
"\tmodule support:\n");
268 printf(
"\t --module-directory %s\n", AP_MODULE_DEFAULT_DIRECTORY);
269 printf(
"\t -M %s\n", AP_MODULE_DEFAULT_DIRECTORY);
275 #if AP_MODULE_SUPPORTED 276 const char *module_path = AP_MODULE_DEFAULT_DIRECTORY;
283 {
"uartA",
true, 0,
'A'},
284 {
"uartB",
true, 0,
'B'},
285 {
"uartC",
true, 0,
'C'},
286 {
"uartD",
true, 0,
'D'},
287 {
"uartE",
true, 0,
'E'},
288 {
"uartF",
true, 0,
'F'},
289 {
"log-directory",
true, 0,
'l'},
290 {
"terrain-directory",
true, 0,
't'},
291 {
"storage-directory",
true, 0,
's'},
292 {
"module-directory",
true, 0,
'M'},
293 {
"help",
false, 0,
'h'},
297 GetOptLong gopt(argc, argv,
"A:B:C:D:E:F:l:t:s:he:SM:",
332 #if AP_MODULE_SUPPORTED 334 module_path = gopt.
optarg;
341 printf(
"Unknown option '%c'\n", (
char)opt);
364 #if AP_MODULE_SUPPORTED 365 if (module_path !=
nullptr) {
370 #if AP_MODULE_SUPPORTED 371 AP_Module::call_hook_setup_start();
374 #if AP_MODULE_SUPPORTED 375 AP_Module::call_hook_setup_complete();
383 I2CDeviceManager::from(
i2c_mgr)->teardown();
384 SPIDeviceManager::from(
spi)->teardown();
390 struct sigaction sa = { };
392 sa.sa_flags = SA_NOCLDSTOP;
394 sigaction(SIGTERM, &sa,
NULL);
395 sigaction(SIGINT, &sa,
NULL);
void setup_signal_handlers() const
static UtilRPI utilInstance
int printf(const char *fmt,...)
static void exit_signal_handler(int)
AP_HAL::UARTDriver * uartE
static SPIUARTDriver uartBDriver
static AnalogIn_ADS1115 analogIn
virtual void begin(uint32_t baud)=0
static UARTDriver uartDDriver(false)
#define PCA9685_PRIMARY_ADDRESS
static GPIO_BBB gpioDriver
static Storage storageDriver
static UARTDriver uartADriver(true)
static UARTDriver uartEDriver(false)
static Scheduler schedulerInstance
static UARTDriver uartCDriver(false)
#define PCA9685_QUATENARY_ADDRESS
AP_HAL::OwnPtr< AP_HAL::I2CDevice > get_device(std::vector< const char *> devpaths, uint8_t address) override
void set_custom_storage_directory(const char *_custom_storage_directory)
void set_device_path(const char *path)
static RCInput_PRU rcinDriver
AP_HAL::UARTDriver * uartF
static RCOutput_PRU rcoutDriver
void init(int argc, char *const *argv)
AP_HAL::SPIDeviceManager * spi
static SPIDeviceManager spi_mgr_instance
AP_HAL::I2CDeviceManager * i2c_mgr
static I2CDeviceManager i2c_mgr_instance
AP_HAL::UARTDriver * uartA
void init()
Generic board initialization function.
static HAL_Linux halInstance
void set_custom_log_directory(const char *_custom_log_directory)
void run(int argc, char *const *argv, Callbacks *callbacks) const override
#define PCA9685_QUINARY_ADDRESS
void set_custom_terrain_directory(const char *_custom_terrain_directory)
static UARTDriver uartFDriver(false)
static OpticalFlow_Onboard opticalFlow
AP_HAL::Scheduler * scheduler
AP_HAL::AnalogIn * analogin
virtual void system_initialized()=0