mirror of
https://github.com/ArduPilot/ardupilot.git
synced 2026-02-09 05:32:35 +08:00
AP_Module: added external module hook library
this allows for external modules to be called at defined hook locations in ArduPilot. The initial example is a module that consumes the AHRS state, but this can be generalised to a wide variety of hooks
This commit is contained in:
13
libraries/AP_Module/examples/ModuleTest/module/Makefile
Normal file
13
libraries/AP_Module/examples/ModuleTest/module/Makefile
Normal file
@@ -0,0 +1,13 @@
|
||||
|
||||
# minimal makefile setup for ARM linux targets
|
||||
|
||||
CC=arm-linux-gnueabihf-gcc
|
||||
CFLAGS=-Wall -fPIC -g -shared
|
||||
|
||||
all: moduletest.so
|
||||
|
||||
moduletest.so: moduletest.c
|
||||
$(CC) $(CFLAGS) -o moduletest.so moduletest.c -ldl
|
||||
|
||||
clean:
|
||||
rm -f moduletest.so
|
||||
37
libraries/AP_Module/examples/ModuleTest/module/moduletest.c
Normal file
37
libraries/AP_Module/examples/ModuleTest/module/moduletest.c
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
very simple example module
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <math.h>
|
||||
|
||||
#include "../../../AP_Module_Structures.h"
|
||||
|
||||
void hook_setup_start(uint64_t time_us)
|
||||
{
|
||||
printf("setup_start called\n");
|
||||
}
|
||||
|
||||
void hook_setup_complete(uint64_t time_us)
|
||||
{
|
||||
printf("setup_complete called\n");
|
||||
}
|
||||
|
||||
|
||||
#define degrees(x) (x * 180.0 / M_PI)
|
||||
|
||||
void hook_AHRS_update(const struct AHRS_state *state)
|
||||
{
|
||||
static uint64_t last_print_us;
|
||||
if (state->time_us - last_print_us < 1000000UL) {
|
||||
return;
|
||||
}
|
||||
last_print_us = state->time_us;
|
||||
// print euler angles once per second
|
||||
printf("AHRS_update (%.1f,%.1f,%.1f)\n",
|
||||
degrees(state->eulers[0]),
|
||||
degrees(state->eulers[1]),
|
||||
degrees(state->eulers[2]));
|
||||
}
|
||||
Reference in New Issue
Block a user