From: Keith Packard Date: Wed, 3 Jan 2024 20:41:51 +0000 (-0800) Subject: altos: Share same task struct for ublox and mosaic GPS drivers X-Git-Tag: 1.9.17.1~2 X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=9d6cbe079e623120473dbfc993d461c3c4da330d;p=fw%2Faltos altos: Share same task struct for ublox and mosaic GPS drivers No sense wasting memory for a driver which won't get used. Signed-off-by: Keith Packard --- diff --git a/src/drivers/ao_gps_mosaic.c b/src/drivers/ao_gps_mosaic.c index 0f0dc6fb..874acfda 100644 --- a/src/drivers/ao_gps_mosaic.c +++ b/src/drivers/ao_gps_mosaic.c @@ -183,17 +183,13 @@ clip_value(float value, float low, float high) return (int32_t) roundf(value); } -static void -mosaic(void) +void +ao_gps_mosaic(void) { AO_TICK_TYPE packet_start_tick; AO_TICK_TYPE solution_tick = 0; #ifndef AO_GPS_TEST - ao_config_get(); - if (!ao_config.gps_mosaic) - ao_exit(); - ao_cmd_register(&ao_mosaic_cmds[0]); #endif mosaic_setup(); @@ -361,14 +357,4 @@ mosaic(void) } } -#ifndef AO_GPS_TEST -static struct ao_task mosaic_task; - -void -ao_gps_mosaic_init(void) -{ - ao_add_task(&mosaic_task, mosaic, "mosaic"); -} -#endif - #endif diff --git a/src/drivers/ao_gps_mosaic.h b/src/drivers/ao_gps_mosaic.h index 1e881bb3..88ab03a2 100644 --- a/src/drivers/ao_gps_mosaic.h +++ b/src/drivers/ao_gps_mosaic.h @@ -20,7 +20,7 @@ #define _AO_GPS_MOSAIC_H_ void -ao_gps_mosaic_init(void); +ao_gps_mosaic(void); struct sbf_header { uint16_t crc; diff --git a/src/drivers/ao_gps_ublox.c b/src/drivers/ao_gps_ublox.c index a328f813..9afa5d38 100644 --- a/src/drivers/ao_gps_ublox.c +++ b/src/drivers/ao_gps_ublox.c @@ -20,6 +20,10 @@ #include "ao.h" #endif +#ifdef HAS_GPS_MOSAIC +#include "ao_gps_mosaic.h" +#endif + #include "ao_gps_ublox.h" #define AO_UBLOX_DEBUG 0 @@ -851,10 +855,14 @@ ao_gps(void) #ifdef HAS_GPS_MOSAIC ao_config_get(); - if (ao_config.gps_mosaic) - ao_exit(); + if (ao_config.gps_mosaic) { + ao_gps_mosaic(); + return; + } #endif +#ifndef AO_GPS_TEST ao_cmd_register(&ao_gps_cmds[0]); +#endif ao_gps_setup(); diff --git a/src/kernel/ao.h b/src/kernel/ao.h index b3f780f5..9b81fe5c 100644 --- a/src/kernel/ao.h +++ b/src/kernel/ao.h @@ -827,7 +827,13 @@ extern const char ao_product[]; * Fifos */ +#ifndef AO_FIFO_SIZE +#ifdef HAS_GPS_MOSAIC +#define AO_FIFO_SIZE 256 +#else #define AO_FIFO_SIZE 32 +#endif +#endif struct ao_fifo { uint8_t insert; diff --git a/src/telemega-v3.0/ao_telemega.c b/src/telemega-v3.0/ao_telemega.c index c21a57c1..d987c1ec 100644 --- a/src/telemega-v3.0/ao_telemega.c +++ b/src/telemega-v3.0/ao_telemega.c @@ -25,9 +25,6 @@ #include #include #include -#ifdef HAS_GPS_MOSAIC -#include -#endif #if HAS_SAMPLE_PROFILE #include #endif @@ -82,9 +79,6 @@ main(void) ao_usb_init(); ao_gps_init(); -#ifdef HAS_GPS_MOSAIC - ao_gps_mosaic_init(); -#endif ao_gps_report_mega_init(); ao_telemetry_init(); ao_radio_init(); diff --git a/src/telemega-v4.0/ao_telemega.c b/src/telemega-v4.0/ao_telemega.c index 6c02f42c..2c5ee615 100644 --- a/src/telemega-v4.0/ao_telemega.c +++ b/src/telemega-v4.0/ao_telemega.c @@ -25,9 +25,6 @@ #include #include #include -#ifdef HAS_GPS_MOSAIC -#include -#endif #if HAS_SAMPLE_PROFILE #include #endif @@ -75,9 +72,6 @@ main(void) ao_usb_init(); ao_gps_init(); -#ifdef HAS_GPS_MOSAIC - ao_gps_mosaic_init(); -#endif ao_gps_report_mega_init(); ao_telemetry_init(); ao_radio_init(); diff --git a/src/telemega-v5.0/ao_telemega.c b/src/telemega-v5.0/ao_telemega.c index 745d7472..4e85c390 100644 --- a/src/telemega-v5.0/ao_telemega.c +++ b/src/telemega-v5.0/ao_telemega.c @@ -27,9 +27,6 @@ #include #include #include -#ifdef HAS_GPS_MOSAIC -#include -#endif #if HAS_SAMPLE_PROFILE #include #endif @@ -81,9 +78,6 @@ main(void) ao_usb_init(); ao_gps_init(); -#ifdef HAS_GPS_MOSAIC - ao_gps_mosaic_init(); -#endif ao_gps_report_mega_init(); ao_telemetry_init(); ao_radio_init(); diff --git a/src/telemega-v6.0/ao_telemega.c b/src/telemega-v6.0/ao_telemega.c index b778e789..91526a86 100644 --- a/src/telemega-v6.0/ao_telemega.c +++ b/src/telemega-v6.0/ao_telemega.c @@ -27,9 +27,6 @@ #include #include #include -#ifdef HAS_GPS_MOSAIC -#include -#endif #if HAS_SAMPLE_PROFILE #include #endif @@ -81,9 +78,6 @@ main(void) ao_usb_init(); ao_gps_init(); -#ifdef HAS_GPS_MOSAIC - ao_gps_mosaic_init(); -#endif ao_gps_report_mega_init(); ao_telemetry_init(); ao_radio_init();