void timer_intr(softvec_type_t type, unsigned long sp) { if( timer_is_expired(0)) { puts("timer expired 0. \n"); timer_expire(0); } if( timer_is_expired(1)) { puts("timer expired 1. \n"); timer_cancel(1); } }
int main (void) { U8 msg[32] = "Hi ArduSub\n\r"; pmic_init(); sysclk_init(); adc_init(); thruster_init(); ioport_init(); timer_init(10000); timer_set_counts(TIMER_HEARTBEAT,timer_ms_to_counts(250)); timer_start(TIMER_HEARTBEAT); cpu_irq_enable(); volatile U8 count = 0; ioport_set_pin_dir(LED1,IOPORT_DIR_OUTPUT); ioport_set_pin_dir(LED2,IOPORT_DIR_OUTPUT); ioport_set_pin_dir(UARTD_TX,IOPORT_DIR_OUTPUT); ioport_set_pin_dir(UARTD_RX,IOPORT_DIR_INPUT); ioport_set_pin_dir(TXEN,IOPORT_DIR_OUTPUT); board_init(); uart_init(19200); do { message_tasks(); count++; if (count > 52) { count = 0; } if(timer_is_expired(TIMER_HEARTBEAT)) { timer_reset(TIMER_HEARTBEAT); board_pres_read(); ext_temp_read(); //ioport_set_pin_level(TXEN,1); //uart_write(&msg[0],12); //while(uart_tx_count() != 0); //blink heart beat LED ioport_set_pin_level(LED2,!ioport_get_pin_level(LED2)); } } while (1); // Insert application code here, after the board has been initialized. }
//Check that the sent values did not time-out // The timed-out values are re-sent void values_timeout_check(void* arg) { client * cl = arg; gettimeofday(&cl->current_time, NULL); client_proposal * c; unsigned i; for(i = 0; i < CONCURRENT_VALUES; i++) { c = &cl->pending_values[i]; if(timer_is_expired(&c->timeout, &cl->current_time)) { cl->timeout_count += 1; // printf("Value %u timed-out\n", i); submit_value(cl->us, c->submit_msg); save_submit_time(c, &cl->current_time); timer_set_timeout(&cl->current_time, &c->timeout, &cl->value_timeout_interval); } } }