void logic_state_run(uint32_t msg) { switch (HIGH_WORD(msg)) { case MSG_SWITCH_BRAKE: logic_brake(LOW_BYTE(LOW_WORD(msg))); break; case MSG_SWITCH_LTURN: logic_lturn(LOW_BYTE(LOW_WORD(msg))); break; case MSG_SWITCH_RTURN: logic_rturn(LOW_BYTE(LOW_WORD(msg))); break; case MSG_SWITCH_HEADLAMP: logic_headlamp(LOW_BYTE(LOW_WORD(msg))); break; case MSG_SWITCH_HIGHBEAM: logic_highbeam(LOW_BYTE(LOW_WORD(msg))); break; case MSG_SWITCH_REVERSE: logic_reverse(LOW_BYTE(LOW_WORD(msg))); break; case MSG_BLINKER_BLINK: if (blinker_is_on(LAMP_LTURN)) { lamp_toggle(LAMP_LTURN); usart_send(PACK_WORDS(MSG_LAMP_LTURN, lamp_is_on(LAMP_LTURN))); } if (blinker_is_on(LAMP_RTURN)) { lamp_toggle(LAMP_RTURN); usart_send(PACK_WORDS(MSG_LAMP_RTURN, lamp_is_on(LAMP_RTURN))); } break; case MSG_SWITCH_START: if (!LOW_WORD(msg)) { blinker_disable(); lamp_disable(); usart_send(PACK_WORDS(MSG_STANDBY, 0)); state_set(LOGIC_STANDBY); /* TODO: control display module power */ /* display_power_set(OFF); */ } break; case MSG_DISPLAY_READY: logic_sync_lamps(); break; default: console_log("event ignored"); } }
CALLSET_ENTRY (trivial, sw_left_slingshot, sw_right_slingshot) { rudy_look_straight (); score (SC_110); sample_start (SND_SLING, SL_100MS * 3); if (flag_test (FLAG_OUTLANES_LIT)) lamp_toggle (LM_SPECIALS); }
void main(void){ lamp_t t; color_t c; lamp_init(&t ,&PORTD, 5 ,&PORTD, 6,&PORTD,7); while (1){ c=Green; _delay_ms(1000); lamp_toggle(t,c); c=Yellow; _delay_ms(1000); lamp_toggle(t,c); c=Red; _delay_ms(1000); lamp_toggle(t,c); } }