altos: Share same task struct for ublox and mosaic GPS drivers
authorKeith Packard <keithp@keithp.com>
Wed, 3 Jan 2024 20:41:51 +0000 (12:41 -0800)
committerKeith Packard <keithp@keithp.com>
Wed, 3 Jan 2024 20:42:53 +0000 (12:42 -0800)
No sense wasting memory for a driver which won't get used.

Signed-off-by: Keith Packard <keithp@keithp.com>
src/drivers/ao_gps_mosaic.c
src/drivers/ao_gps_mosaic.h
src/drivers/ao_gps_ublox.c
src/kernel/ao.h
src/telemega-v3.0/ao_telemega.c
src/telemega-v4.0/ao_telemega.c
src/telemega-v5.0/ao_telemega.c
src/telemega-v6.0/ao_telemega.c

index 0f0dc6fbfa4dbcb175e72f5728226c0f36dee7ba..874acfda82983d3f0daa051a0f0401e51735b304 100644 (file)
@@ -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
index 1e881bb330f3695f37a90f8c675aff9b48c8e8f9..88ab03a2b7974a8a6b81a357a65b756b595ba86f 100644 (file)
@@ -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;
index a328f8136197f2933fe0d124bbd99e03dc482e0c..9afa5d386bf2c4ba86c78c3c4ed3031347491e4c 100644 (file)
 #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();
 
index b3f780f5c7609797c15c895e90b0fa965dcf1a44..9b81fe5cf973de53a93957c83b246d90e38d9806 100644 (file)
@@ -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;
index c21a57c1bd440c175bbf9873e6be04a53486066e..d987c1ec5cb8d4c1a01c8e28a6744feec42ed465 100644 (file)
@@ -25,9 +25,6 @@
 #include <ao_companion.h>
 #include <ao_profile.h>
 #include <ao_eeprom.h>
-#ifdef HAS_GPS_MOSAIC
-#include <ao_gps_mosaic.h>
-#endif
 #if HAS_SAMPLE_PROFILE
 #include <ao_sample_profile.h>
 #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();
index 6c02f42c1bbab9e1f2b2ee38887367c4163f0a91..2c5ee615fefdbf68ae33914215233d0d712b57b8 100644 (file)
@@ -25,9 +25,6 @@
 #include <ao_companion.h>
 #include <ao_profile.h>
 #include <ao_eeprom.h>
-#ifdef HAS_GPS_MOSAIC
-#include <ao_gps_mosaic.h>
-#endif
 #if HAS_SAMPLE_PROFILE
 #include <ao_sample_profile.h>
 #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();
index 745d74727fd50aadb4ba8993249563a89eb3610f..4e85c390f852b5d517105bd958ff5a7356f0f615 100644 (file)
@@ -27,9 +27,6 @@
 #include <ao_profile.h>
 #include <ao_eeprom.h>
 #include <ao_i2c_bit.h>
-#ifdef HAS_GPS_MOSAIC
-#include <ao_gps_mosaic.h>
-#endif
 #if HAS_SAMPLE_PROFILE
 #include <ao_sample_profile.h>
 #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();
index b778e7892f4a6db8eab9edbc47f3b473a578682c..91526a861255c6ce03bb49b7d1773ec86ec5b316 100644 (file)
@@ -27,9 +27,6 @@
 #include <ao_profile.h>
 #include <ao_eeprom.h>
 #include <ao_i2c_bit.h>
-#ifdef HAS_GPS_MOSAIC
-#include <ao_gps_mosaic.h>
-#endif
 #if HAS_SAMPLE_PROFILE
 #include <ao_sample_profile.h>
 #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();