void gate_tripGate(uint8 local_gate_index) { // rti is software debounce to filter multiple triggers if (local_gate_index == 1) { if (gate_1_status == GATE_STATUS_OPEN) { gate_1_status = GATE_STATUS_CLOSED; rti_register(&gate_clearGate1, 100, 1, false); if (identifier == 0) { gate_respondToGate(section_1_index); } else { network_sendGatePacket(section_1_index); } } } else if (local_gate_index == 2) { if (gate_2_status == GATE_STATUS_OPEN) { gate_2_status = GATE_STATUS_CLOSED; rti_register(&gate_clearGate2, 100, 1, false); if (identifier == 0) { gate_respondToGate(section_2_index); } else { network_sendGatePacket(section_2_index); } } } }
void gate_lightSection(uint8 section_index) { if (section_index == section_1_index) { set_status(-1, 1, -1); pwm_fade(0, 10); rti_register(&gate_clearSection1, 1000, 1, false); } else if (section_index == section_2_index) { set_status(-1, -1, 1); pwm_fade(1, 10); rti_register(&gate_clearSection2, 1000, 1, false); } }
void disp_blinking_message (s8 *msg, rti_time dim_dur, rti_time blink_dur, rti_time dim_rate, rti_time blink_rate) { s16 i; rti_time orig_blink_rate; strncpy(disp_ram,msg,DISP_SIZE); data.done = 0; set_global_blink(DISP_NO_BLINK); data.idx = 0; data.func_id = rti_register(move_dim,NULL,dim_rate,RTI_NOW); rti_register(grapics_stop_stage,NULL,RTI_ONCE,dim_dur); while (!data.done) ; data.done = 0; for (i = 0; i < DISP_SIZE; i++) disp_att_ram[i].dim = DISP_FULL_DIM; orig_blink_rate = disp_get_blink_rate(); disp_set_blink_rate(blink_rate); set_global_blink(DISP_BLINK); data.func_id = RTI_INVALID_ID; rti_register(grapics_stop_stage,NULL,RTI_ONCE,blink_dur); while (!data.done) ; set_global_blink(DISP_NO_BLINK); disp_set_blink_rate(orig_blink_rate); return; }