void buttons_irq(uint8_t buttons) { if (gfxState == GFX_STATE_MEASURE) { if (buttons & BUTTON_A) { // record screen gfxState = GFX_STATE_RECORD; } else if (buttons & BUTTON_D) { // info gfxScroll = 0; gfxState = GFX_STATE_INFO; } } else if (gfxState == GFX_STATE_INFO) { if (buttons & BUTTON_D) { // exit gfxState = GFX_STATE_MEASURE; } } else if (gfxState == GFX_STATE_RECORD) { if (buttons & BUTTON_A) { // start/stop if (recorder_is_recording()) { recorder_stop(); } else { recorder_start(1000); } } else if (buttons & BUTTON_D) { // exit gfxState = GFX_STATE_MEASURE; } } #ifdef DISP6800_ENABLE process_poll(&gfx_update_process); #endif }
/* helper for recorder_record_* */ static void recorder_record_name (const_string prefix, const_string name) { if (recorder_enabled) { if (!recorder_file) recorder_start(); fprintf(recorder_file, "%s %s\n", prefix, name); fflush(recorder_file); } }