Beispiel #1
0
void view_game_start(void)
{
		// cameras and globals
		
    camera_initialize();
	game_file_initialize();
	
		// load images for hud bitmaps, radar, particles,
		// rings, halos, marks, crosshairs and remote icons
	
	view_images_load();

		// precalculate particles

	particle_precalculate_all();
	
		// clear chat messages
		
	chat_clear_messages();
}
Beispiel #2
0
int main(void)
{
    // Enable pin change interrupt for pulse input
    PCMSK3 |= _BV(PCINT28);
    PCICR |= _BV(PCIE3);

    // Enable pullup resistor on unused pins
    PORTA = 0xFF;

    // Set millisecond-timer period to 1ms
    OCR1A = 9999;
    STOP_MILLISECOND_TIMER;
    TIMSK1 |= _BV(OCIE1A);

    // Set other init
    usb_initialize();
    camera_initialize();
    display_initialize();

	// Enable relay mode until reboot
	if (eeprom_read_byte(RELAY_EEPROM_OFFSET) == RELAY_ENABLED)
	{
        set_timer_status(TIMER_RELAY);
		eeprom_update_byte(RELAY_EEPROM_OFFSET, RELAY_DISABLED);
	}

    // Enable interrupts
    sei();
    gps_initialize();

    // Main program loop
    for (;;)
    {
        // Handle message flags set via interrupt
        if (message_flags && timer_status != TIMER_RELAY)
        {
            uint8_t temp_int_flags = 0;
            ATOMIC_BLOCK(ATOMIC_FORCEON)
            {
                temp_int_flags = message_flags;
                message_flags = 0;
            }

            if (temp_int_flags & FLAG_SEND_TRIGGER)
                usb_send_trigger();

            if (temp_int_flags & FLAG_SEND_TIMESTAMP)
                usb_send_timestamp();

            if (temp_int_flags & FLAG_SEND_STATUS)
                usb_send_status(timer_status, gps_status);

            if (temp_int_flags & FLAG_STOP_EXPOSURE)
                usb_stop_exposure();

            if (temp_int_flags & FLAG_DUPLICATE_PULSE)
                usb_send_message_P(msg_duplicate_pulse);

            if (temp_int_flags & FLAG_MISSING_PULSE)
                usb_send_message_P(msg_missing_pulse);

            if (temp_int_flags & FLAG_TIME_DRIFT)
                usb_send_message_fmt_P(fmt_time_drift, millisecond_drift);
        }

        camera_tick();
        usb_tick();
        gps_tick();
        display_update();
    }