projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Switch to newlib-nano for libc on arm
[fw/altos]
/
src
/
kernel
/
ao.h
diff --git
a/src/kernel/ao.h
b/src/kernel/ao.h
index 6c6abd36271463a33b44594c0c457e8a197ae740..204eaae75a3baead7637c772370bf632ad22a963 100644
(file)
--- a/
src/kernel/ao.h
+++ b/
src/kernel/ao.h
@@
-3,7
+3,8
@@
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-25,6
+26,15
@@
#include <ao_pins.h>
#include <ao_arch.h>
#include <ao_pins.h>
#include <ao_arch.h>
+/* replace stdio macros with direct calls to our functions */
+#undef putchar
+#undef getchar
+#define putchar(c) ao_putchar(c)
+#define getchar ao_getchar
+
+extern int ao_putchar(char c);
+extern char ao_getchar(void);
+
#define TRUE 1
#define FALSE 0
#define TRUE 1
#define FALSE 0
@@
-43,10
+53,6
@@
#define HAS_TASK 1
#endif
#define HAS_TASK 1
#endif
-#ifndef AO_PORT_TYPE
-#define AO_PORT_TYPE uint8_t
-#endif
-
typedef AO_PORT_TYPE ao_port_t;
#if HAS_TASK
typedef AO_PORT_TYPE ao_port_t;
#if HAS_TASK
@@
-76,9
+82,12
@@
typedef AO_PORT_TYPE ao_port_t;
#define AO_PANIC_BUFIO 15 /* Mis-using bufio API */
#define AO_PANIC_EXTI 16 /* Mis-using exti API */
#define AO_PANIC_FAST_TIMER 17 /* Mis-using fast timer API */
#define AO_PANIC_BUFIO 15 /* Mis-using bufio API */
#define AO_PANIC_EXTI 16 /* Mis-using exti API */
#define AO_PANIC_FAST_TIMER 17 /* Mis-using fast timer API */
+#define AO_PANIC_ADC 18 /* Mis-using ADC interface */
+#define AO_PANIC_IRQ 19 /* interrupts not blocked */
#define AO_PANIC_SELF_TEST_CC1120 0x40 | 1 /* Self test failure */
#define AO_PANIC_SELF_TEST_HMC5883 0x40 | 2 /* Self test failure */
#define AO_PANIC_SELF_TEST_MPU6000 0x40 | 3 /* Self test failure */
#define AO_PANIC_SELF_TEST_CC1120 0x40 | 1 /* Self test failure */
#define AO_PANIC_SELF_TEST_HMC5883 0x40 | 2 /* Self test failure */
#define AO_PANIC_SELF_TEST_MPU6000 0x40 | 3 /* Self test failure */
+#define AO_PANIC_SELF_TEST_MPU9250 0x40 | 3 /* Self test failure */
#define AO_PANIC_SELF_TEST_MS5607 0x40 | 4 /* Self test failure */
/* Stop the operating system, beeping and blinking the reason */
#define AO_PANIC_SELF_TEST_MS5607 0x40 | 4 /* Self test failure */
/* Stop the operating system, beeping and blinking the reason */
@@
-127,11
+136,24
@@
ao_timer_init(void);
void
ao_clock_init(void);
void
ao_clock_init(void);
+#if AO_POWER_MANAGEMENT
+/* Go to low power clock */
+void
+ao_clock_suspend(void);
+
+/* Restart full-speed clock */
+void
+ao_clock_resume(void);
+#endif
+
/*
* ao_mutex.c
*/
#ifndef ao_mutex_get
/*
* ao_mutex.c
*/
#ifndef ao_mutex_get
+uint8_t
+ao_mutex_try(__xdata uint8_t *ao_mutex, uint8_t task_id) __reentrant;
+
void
ao_mutex_get(__xdata uint8_t *ao_mutex) __reentrant;
void
ao_mutex_get(__xdata uint8_t *ao_mutex) __reentrant;
@@
-158,6
+180,9
@@
void
ao_put_string(__code char *s);
void
ao_put_string(__code char *s);
void
+ao_cmd_readline(void);
+
+char
ao_cmd_lex(void);
void
ao_cmd_lex(void);
void
@@
-202,6
+227,9
@@
ao_cmd_register(const __code struct ao_cmds *cmds);
void
ao_cmd_init(void);
void
ao_cmd_init(void);
+void
+ao_cmd(void);
+
#if HAS_CMD_FILTER
/*
* Provided by an external module to filter raw command lines
#if HAS_CMD_FILTER
/*
* Provided by an external module to filter raw command lines
@@
-275,15
+303,17
@@
ao_report_init(void);
* Given raw data, convert to SI units
*/
* Given raw data, convert to SI units
*/
+#if HAS_BARO
/* pressure from the sensor to altitude in meters */
/* pressure from the sensor to altitude in meters */
-
int16
_t
-ao_pres_to_altitude(
int16
_t pres) __reentrant;
+
alt
_t
+ao_pres_to_altitude(
pres
_t pres) __reentrant;
-
int16
_t
-ao_altitude_to_pres(
int16
_t alt) __reentrant;
+
pres
_t
+ao_altitude_to_pres(
alt
_t alt) __reentrant;
int16_t
ao_temp_to_dC(int16_t temp) __reentrant;
int16_t
ao_temp_to_dC(int16_t temp) __reentrant;
+#endif
/*
* ao_convert_pa.c
/*
* ao_convert_pa.c
@@
-293,11
+323,13
@@
ao_temp_to_dC(int16_t temp) __reentrant;
#include <ao_data.h>
#include <ao_data.h>
+#if HAS_BARO
alt_t
alt_t
-ao_pa_to_altitude(
int32
_t pa);
+ao_pa_to_altitude(
pres
_t pa);
int32_t
ao_altitude_to_pa(alt_t alt);
int32_t
ao_altitude_to_pa(alt_t alt);
+#endif
#if HAS_DBG
#include <ao_dbg.h>
#if HAS_DBG
#include <ao_dbg.h>
@@
-511,19
+543,12
@@
struct ao_telemetry_raw_recv {
/* Set delay between telemetry reports (0 to disable) */
/* Set delay between telemetry reports (0 to disable) */
-#ifdef AO_SEND_ALL_BARO
-#define AO_TELEMETRY_INTERVAL_PAD AO_MS_TO_TICKS(100)
-#define AO_TELEMETRY_INTERVAL_FLIGHT AO_MS_TO_TICKS(100)
-#define AO_TELEMETRY_INTERVAL_RECOVER AO_MS_TO_TICKS(100)
-#else
#define AO_TELEMETRY_INTERVAL_PAD AO_MS_TO_TICKS(1000)
#define AO_TELEMETRY_INTERVAL_FLIGHT AO_MS_TO_TICKS(100)
#define AO_TELEMETRY_INTERVAL_RECOVER AO_MS_TO_TICKS(1000)
#define AO_TELEMETRY_INTERVAL_PAD AO_MS_TO_TICKS(1000)
#define AO_TELEMETRY_INTERVAL_FLIGHT AO_MS_TO_TICKS(100)
#define AO_TELEMETRY_INTERVAL_RECOVER AO_MS_TO_TICKS(1000)
-#endif
-#define AO_RADIO_RATE_38400 0
-#define AO_RADIO_RATE_9600 1
-#define AO_RADIO_RATE_2400 2
+void
+ao_telemetry_reset_interval(void);
void
ao_telemetry_set_interval(uint16_t interval);
void
ao_telemetry_set_interval(uint16_t interval);
@@
-631,6
+656,12
@@
ao_radio_continuity(uint8_t c);
void
ao_radio_rdf_abort(void);
void
ao_radio_rdf_abort(void);
+void
+ao_radio_test_on(void);
+
+void
+ao_radio_test_off(void);
+
void
ao_radio_init(void);
void
ao_radio_init(void);
@@
-640,7
+671,7
@@
ao_radio_init(void);
#if HAS_MONITOR
#if HAS_MONITOR
-extern const char
const
* const ao_state_names[];
+extern const char * const ao_state_names[];
#define AO_MONITOR_RING 8
#define AO_MONITOR_RING 8
@@
-656,7
+687,9
@@
union ao_monitor {
extern __xdata union ao_monitor ao_monitor_ring[AO_MONITOR_RING];
#define ao_monitor_ring_next(n) (((n) + 1) & (AO_MONITOR_RING - 1))
extern __xdata union ao_monitor ao_monitor_ring[AO_MONITOR_RING];
#define ao_monitor_ring_next(n) (((n) + 1) & (AO_MONITOR_RING - 1))
+#define ao_monitor_ring_prev(n) (((n) - 1) & (AO_MONITOR_RING - 1))
+extern __xdata uint8_t ao_monitoring_mutex;
extern __data uint8_t ao_monitoring;
extern __data uint8_t ao_monitor_head;
extern __data uint8_t ao_monitoring;
extern __data uint8_t ao_monitor_head;
@@
-812,6
+845,8
@@
struct ao_fifo {
} while(0)
#define ao_fifo_full(f) ((((f).insert + 1) & (AO_FIFO_SIZE-1)) == (f).remove)
} while(0)
#define ao_fifo_full(f) ((((f).insert + 1) & (AO_FIFO_SIZE-1)) == (f).remove)
+#define ao_fifo_mostly(f) ((((f).insert - (f).remove) & (AO_FIFO_SIZE-1)) >= (AO_FIFO_SIZE * 3 / 4))
+#define ao_fifo_barely(f) ((((f).insert - (f).remove) & (AO_FIFO_SIZE-1)) >= (AO_FIFO_SIZE * 1 / 4))
#define ao_fifo_empty(f) ((f).insert == (f).remove)
#if PACKET_HAS_MASTER || PACKET_HAS_SLAVE
#define ao_fifo_empty(f) ((f).insert == (f).remove)
#if PACKET_HAS_MASTER || PACKET_HAS_SLAVE
@@
-834,33
+869,6
@@
struct ao_fifo {
#include <ao_aes.h>
#endif
#include <ao_aes.h>
#endif
-/* ao_launch.c */
-
-struct ao_launch_command {
- uint16_t tick;
- uint16_t serial;
- uint8_t cmd;
- uint8_t channel;
- uint16_t unused;
-};
-
-#define AO_LAUNCH_QUERY 1
-
-struct ao_launch_query {
- uint16_t tick;
- uint16_t serial;
- uint8_t channel;
- uint8_t valid;
- uint8_t arm_status;
- uint8_t igniter_status;
-};
-
-#define AO_LAUNCH_ARM 2
-#define AO_LAUNCH_FIRE 3
-
-void
-ao_launch_init(void);
-
/*
* ao_log_single.c
*/
/*
* ao_log_single.c
*/