__xdata void *wchan; /* current wait channel (NULL if running) */
uint16_t alarm; /* abort ao_sleep time */
uint8_t stack_count; /* amount of saved stack */
- uint8_t task_id; /* index in the task array */
+ uint8_t task_id; /* unique id */
__code char *name; /* task name */
uint8_t stack[AO_STACK_SIZE]; /* saved stack */
};
#define AO_PANIC_STDIO 7 /* Too many stdio handlers registered */
#define AO_PANIC_REBOOT 8 /* Reboot failed */
#define AO_PANIC_FLASH 9 /* Invalid flash part (or wrong blocksize) */
+#define AO_PANIC_USB 10 /* Trying to send USB packet while busy */
/* Stop the operating system, beeping and blinking the reason */
void
*/
#define AO_LED_NONE 0
-#define AO_LED_GREEN 1
-#define AO_LED_RED 2
/* Turn on the specified LEDs */
void
/* Write a record to the eeprom log */
void
-ao_log_data(struct ao_log_record *log);
+ao_log_data(__xdata struct ao_log_record *log) __reentrant;
/* Flush the log */
void
*/
#define AO_MAX_CALLSIGN 8
-#define AO_TELEMETRY_VERSION 2
+#define AO_TELEMETRY_VERSION 3
struct ao_telemetry {
uint8_t addr;
* Packet-based command interface
*/
-#define AO_PACKET_MAX 8
+#define AO_PACKET_MAX 64
#define AO_PACKET_SYN (uint8_t) 0xff
struct ao_packet {
uint8_t seq;
uint8_t ack;
uint8_t d[AO_PACKET_MAX];
+ uint8_t callsign[AO_MAX_CALLSIGN];
};
struct ao_packet_recv {