/*---------------------------------------------------------------------------*/ PROCESS_THREAD(hello_world_process, ev, data) { PROCESS_BEGIN(); frame_manager_init(); status_led_init(); status_led_rx_on(led_on); status_led_tx_on(led_on); etimer_set(&et_hello, 1 * CLOCK_SECOND); while( 1 ) { PROCESS_WAIT_EVENT(); if(ev == PROCESS_EVENT_TIMER) { if (led_on) led_on = FALSE; else led_on = TRUE; status_led_rx_on(led_on); status_led_tx_on(led_on); etimer_reset(&et_hello); } } PROCESS_END(); }
/*---------------------------------------------------------------------------*/ PROCESS_THREAD(rx_process, ev, data) { PROCESS_BEGIN(); arduino_spi_init(); status_led_init(); lora_radio_driver.init(); // Start infinite RX lora_radio_driver.on(); // Print CPU serial printf("CPU serial nb: %08x, %08x, %08x, %08x\n",(unsigned int) U_ID->UI_0,(unsigned int) U_ID->UI_1, (unsigned int) U_ID->UI_2,(unsigned int) U_ID->UI_3); etimer_set(&rx_timer, 10 * CLOCK_SECOND); while( 1 ) { PROCESS_WAIT_EVENT(); if(ev == PROCESS_EVENT_TIMER) { leds_toggle(LEDS_ALL); printf( "Alive %d\n\r", counter++); etimer_reset(&rx_timer); } } PROCESS_END(); }
static int initr_status_led(void) { #if defined(STATUS_LED_BOOT) status_led_set(STATUS_LED_BOOT, STATUS_LED_BLINKING); #else status_led_init(); #endif return 0; }
int main(void) { // Set the system clock to the full 120MHz uint32_t sysClkFreq = SysCtlClockFreqSet(SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480, 120000000); debug_init(sysClkFreq); status_led_init(); network_driver_init(sysClkFreq); networking_init(); telemetry_init(); transducer_init(); thermocouple_init(); solenoid_init(); debug_print("Initialization complete. starting main loop.\r\n"); // Set up the SysTick timer and its interrupts SysTickPeriodSet(6000); // 40 kHz SysTickIntRegister(sys_tick); SysTickIntEnable(); SysTickEnable(); uint32_t loopIterations = 0; uint32_t frame_start = systick_clock; while(1) { status_led_periodic(); network_driver_periodic(); telemetry_periodic(); solenoid_periodic(); // debug_print_u32(systick_clock); //count loop iterations per second loopIterations++; if(systick_clock - frame_start >= 1000) { loops_per_second = loopIterations; loopIterations = 0; frame_start = systick_clock; } } }
void status_led_set (int led, int state) { led_dev_t *ld; if (led < 0 || led >= MAX_LED_DEV) return; if (!status_led_init_done) status_led_init (); ld = &led_dev[led]; ld->state = state; if (state == STATUS_LED_BLINKING) { ld->cnt = 0; /* always start with full period */ state = STATUS_LED_ON; /* always start with LED _ON_ */ } __led_set (ld->mask, state); }
void status_led_tick (ulong timestamp) { led_dev_t *ld; int i; if (!status_led_init_done) status_led_init (); for (i = 0, ld = led_dev; i < MAX_LED_DEV; i++, ld++) { if (ld->state != STATUS_LED_BLINKING) continue; if (++ld->cnt >= ld->period) { __led_toggle (ld->mask); ld->cnt -= ld->period; } } }