// switch relay to selected output, turn correct LED on as a side effect static void ao_relay_control(uint8_t output) { switch (output) { case 1: lpc_gpio.pin[RELAY_PORT] |= RELAY_BIT; ao_led_on(AO_LED_RED); ao_led_off(AO_LED_GREEN); break; default: lpc_gpio.pin[RELAY_PORT] &= ~RELAY_BIT; ao_led_off(AO_LED_RED); ao_led_on(AO_LED_GREEN); } }
void main(void) { ao_clock_init(); /* Turn on the red LED until the system is stable */ ao_led_init(LEDS_AVAILABLE); ao_led_on(AO_LED_RED); ao_task_init(); ao_timer_init(); ao_adc_init(); ao_beep_init(); ao_cmd_init(); ao_spi_init(); ao_storage_init(); ao_usb_init(); ao_radio_init(); #if HAS_DBG ao_dbg_init(); #endif ao_aes_init(); ao_launch_init(); ao_config_init(); ao_start_scheduler(); }
void ao_panic(uint8_t reason) { uint8_t n; #if LOW_LEVEL_DEBUG ao_cur_task = NULL; printf ("panic %d\n", reason); #endif ao_arch_block_interrupts(); for (;;) { ao_panic_delay(20); for (n = 0; n < 5; n++) { ao_led_on(AO_LED_PANIC); ao_beep(AO_BEEP_HIGH); ao_panic_delay(1); ao_led_off(AO_LED_PANIC); ao_beep(AO_BEEP_LOW); ao_panic_delay(1); } ao_beep(AO_BEEP_OFF); ao_panic_delay(2); #ifdef SDCC #pragma disable_warning 126 #endif if (reason & 0x40) { ao_led_on(AO_LED_PANIC); ao_beep(AO_BEEP_HIGH); ao_panic_delay(40); ao_led_off(AO_LED_PANIC); ao_beep(AO_BEEP_OFF); ao_panic_delay(10); } for (n = 0; n < (reason & 0x3f); n++) { ao_led_on(AO_LED_PANIC); ao_beep(AO_BEEP_MID); ao_panic_delay(10); ao_led_off(AO_LED_PANIC); ao_beep(AO_BEEP_OFF); ao_panic_delay(10); } } }
void blink_0(void) { uint8_t b = 0; for (;;) { b = 1 - b; if (b) ao_led_on(AO_LED_GREEN); else ao_led_off(AO_LED_GREEN); ao_sleep(&blink_chan); } }
void blink_1(void) { static __xdata struct ao_adc adc; for (;;) { ao_sleep(&ao_adc_head); ao_adc_get(&adc); if (adc.accel < 15900) ao_led_on(AO_LED_RED); else ao_led_off(AO_LED_RED); } }
void main(void) { ao_clock_init(); /* Turn on the LED until the system is stable */ ao_led_init(LEDS_AVAILABLE); ao_led_on(AO_LED_RED); ao_timer_init(); ao_cmd_init(); ao_usb_init(); ao_monitor_init(AO_LED_GREEN, TRUE); ao_rssi_init(AO_LED_RED); ao_radio_init(); ao_packet_master_init(); #if HAS_DBG ao_dbg_init(); #endif ao_config_init(); ao_start_scheduler(); }
int main(void) { ao_clock_init(); ao_led_init(LEDS_AVAILABLE); ao_led_on(AO_LED_GREEN); ao_task_init(); ao_timer_init(); ao_spi_init(); ao_dma_init(); ao_exti_init(); ao_beep_init(); ao_cmd_init(); ao_lcd_stm_init(); ao_seven_segment_init(); ao_quadrature_init(); ao_button_init(); ao_storage_init(); ao_radio_init(); ao_usb_init(); ao_config_init(); ao_quadrature_init(); ao_button_init(); ao_lco_init(); ao_lco_cmd_init(); // ao_radio_cmac_cmd_init(); ao_start_scheduler(); return 0; }
void main(void) { ao_clock_init(); ao_task_init(); ao_timer_init(); ao_spi_init(); ao_usb_init(); ao_serial_init(); ao_led_init(LEDS_AVAILABLE); ao_led_on(AO_LED_GREEN); ao_cmd_init(); ao_cmd_register(ao_trng_cmds); ao_start_scheduler(); }
static void ao_fake_flight(void) { int16_t calib_size, data_size; struct ao_fake_calib save_calib; uint16_t my_pyro_fired = 0; enum ao_flight_state my_state = ao_flight_invalid; int i; ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; calib_size = ao_cmd_lex_i; ao_cmd_hex(); if (ao_cmd_status != ao_cmd_success) return; data_size = ao_cmd_lex_i; if ((unsigned) calib_size != sizeof (struct ao_fake_calib)) { printf ("calib size %d larger than actual size %d\n", calib_size, sizeof (struct ao_fake_calib)); ao_cmd_status = ao_cmd_syntax_error; return; } if (data_size != sizeof (struct ao_data)) { printf ("data size %d doesn't match actual size %d\n", data_size, sizeof (struct ao_data)); ao_cmd_status = ao_cmd_syntax_error; return; } ao_fake_calib_get(&save_calib); if (!ao_fake_calib_read()) return; ao_fake_has_next = 0; ao_fake_has_cur = 0; ao_fake_flight_active = 1; ao_sample_init(); #if PACKET_HAS_SLAVE ao_packet_slave_stop(); #endif #if AO_LED_RED /* Turn on the LED to indicate startup */ ao_led_on(AO_LED_RED); #endif ao_flight_state = ao_flight_startup; for (;;) { if (my_state != ao_flight_state) { printf("state %d\n", ao_flight_state); my_state = ao_flight_state; flush(); } if (my_pyro_fired != ao_pyro_fired) { int pyro; for (pyro = 0; pyro < AO_PYRO_NUM; pyro++) { uint16_t bit = (1 << pyro); if (!(my_pyro_fired & bit) && (ao_pyro_fired & bit)) printf ("fire %d\n", pyro); } my_pyro_fired = ao_pyro_fired; } while (ao_fake_has_next) ao_sleep((void *) &ao_fake_has_next); if (!ao_fake_data_read()) break; } /* Wait 20 seconds to see if we enter landed state */ for (i = 0; i < 200; i++) { if (ao_flight_state == ao_flight_landed) break; ao_delay(AO_MS_TO_TICKS(100)); } #if AO_LED_RED /* Turn on the LED to indicate startup */ ao_led_on(AO_LED_RED); #endif ao_fake_flight_active = 0; ao_flight_state = ao_flight_startup; ao_sample_init(); ao_fake_calib_set(&save_calib); }
int main(void) { ao_clock_init(); #if HAS_STACK_GUARD ao_mpu_init(); #endif ao_task_init(); ao_serial_init(); ao_led_init(LEDS_AVAILABLE); ao_led_on(AO_LED_GREEN); ao_timer_init(); ao_i2c_init(); ao_spi_init(); ao_dma_init(); ao_exti_init(); ao_adc_init(); #if HAS_BEEP ao_beep_init(); #endif ao_cmd_init(); #if HAS_MS5607 ao_ms5607_init(); #endif #if HAS_HMC5883 ao_hmc5883_init(); #endif #if HAS_MPU6000 ao_mpu6000_init(); #endif #if HAS_MMA655X ao_mma655x_init(); #endif ao_eeprom_init(); ao_storage_init(); ao_flight_init(); ao_log_init(); ao_report_init(); ao_usb_init(); ao_gps_init(); ao_gps_report_mega_init(); ao_telemetry_init(); ao_radio_init(); ao_packet_slave_init(FALSE); ao_igniter_init(); ao_companion_init(); ao_pyro_init(); ao_config_init(); #if AO_PROFILE ao_profile_init(); #endif #if HAS_SAMPLE_PROFILE ao_sample_profile_init(); #endif ao_start_scheduler(); return 0; }