#include <p24FJ64GA002.h>
#include "types.h"
#include "libvideo.h"
#include "libuart.h"
#include "librtc.h"
#include "libadc.h"
#include "libdac.h"
#include "libeeprom.h"
#include "libps2.h"
#include "table.h"
#include "ssm.h"
#include "main.h"
#include "extmeter.h"
#include "screen.h"
#include "config.h"
マクロ定義 | |
#define | abs(a) (((a)>0) ? (a) : -(a)) |
関数 | |
void | SCREEN_init (void) |
BOOL | SCREEN_main (void) |
変数 | |
SCREEN_T | screen |
void SCREEN_init | ( | void | ) |
参照先 SCREEN::fps, SCREEN::screen, SCREEN::screen_flag, と SCREEN::track.
参照元 main().
{ screen.screen = 0x01; screen.screen_flag = SCREEN_INIT; screen.fps = 7; screen.track[0] = 2; screen.track[1] = 1; return; }
BOOL SCREEN_main | ( | void | ) |
参照先 CONFIG_save(), RTC::day, FALSE, SCREEN::fps, RTC::hour, KEY_DEL, KEY_END, KEY_F1, KEY_F10, KEY_F11, KEY_F12, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6, KEY_F7, KEY_F8, KEY_F9, KEY_HOME, KEY_PAGEDOWN, KEY_PAGEUP, RTC::min, RTC::msec, ps2, PS2_key_buf_clear(), PS2_key_check(), PS2_key_get(), rtc, RTC_get_ticks(), SCREEN::screen, SCREEN::screen_flag, RTC::sec, RTC::tick, TRUE, VIDEO_locate(), VIDEO_putch(), VIDEO_putstr(), VIDEO_putuint(), と PS2::wait.
参照元 main().
{ unsigned char key; static unsigned char watch = 0; static unsigned int tick = 0; if(RTC_get_ticks(tick, rtc.tick) < (10000 / screen.fps)) return(FALSE); tick = rtc.tick; /* 画面セレクト. F1 〜 F12の 12画面. うぉ、DOSっぽい */ key = PS2_key_check(); if(key >= KEY_F1 && key <= KEY_F12){ screen.screen_flag = SCREEN_INIT; switch(PS2_key_get()){ case KEY_F1: screen.screen = 0x01; break; /* 3min NG */ case KEY_F2: screen.screen = 0x02; break; /* 9min OK */ case KEY_F3: screen.screen = 0x03; break; /* 21sec NG */ case KEY_F4: screen.screen = 0x04; break; /* 10min OK */ case KEY_F5: screen.screen = 0x05; break; /* 11min OK */ case KEY_F6: screen.screen = 0x06; break; /* 10min OK */ case KEY_F7: screen.screen = 0x07; break; /* 7sec NG */ case KEY_F8: screen.screen = 0x08; break; case KEY_F9: screen.screen = 0x09; break; case KEY_F10: screen.screen = 0x0a; break; case KEY_F11: screen.screen = 0x0b; break; case KEY_F12: screen.screen = 0x0c; break; } /* テンキー・キーボード用 */ } else if(key == KEY_PAGEDOWN){ PS2_key_get(); screen.screen_flag = SCREEN_INIT; screen.screen--; if(screen.screen < 0x00) screen.screen = 0x00; } else if(key == KEY_PAGEUP){ PS2_key_get(); screen.screen_flag = SCREEN_INIT; screen.screen++; if(screen.screen > 0x0c) screen.screen = 0x0c; /* おまけ : キーリピートを切り替える */ } else if(key == KEY_DEL){ if(ps2.wait != 2000){ ps2.wait = 2000; VIDEO_locate(0,1); VIDEO_putstr("Slow"); } else { ps2.wait = 500; VIDEO_locate(0,1); VIDEO_putstr("Fast"); } PS2_key_buf_clear(); /* おまけ : クイックセーブ */ } else if(key == KEY_HOME){ PS2_key_get(); VIDEO_locate(0,1); VIDEO_putstr("Saving..."); VIDEO_locate(0,1); screen.screen_flag = SCREEN_INIT; if(CONFIG_save()){ VIDEO_putstr(" "); } else { VIDEO_putstr("Error... "); } screen.screen_flag = SCREEN_VIEW; /* おまけ : 内部時計 */ } else if(key == KEY_END){ PS2_key_get(); watch++; } /* 時計表示 */ if(watch % 2){ VIDEO_locate( 14,0); VIDEO_putuint(rtc.day, 5); VIDEO_putch(' '); VIDEO_putuint(rtc.hour, 2); VIDEO_putch(':'); VIDEO_putuint(rtc.min, 2); VIDEO_putch(':'); VIDEO_putuint(rtc.sec, 2); VIDEO_putch('.'); VIDEO_putuint(rtc.msec, 3); } /* 画面を表示する */ switch(screen.screen){ case 0x01: SCREEN_meter1(); break; case 0x02: SCREEN_meter2(); break; case 0x03: SCREEN_meter3(); break; case 0x04: SCREEN_meter4(); break; case 0x05: SCREEN_meter5(); break; case 0x06: SCREEN_meter6(); break; case 0x07: SCREEN_setup_ssm(); break; case 0x08: SCREEN_setup_video(); break; case 0x09: SCREEN_setup_extmeter(); break; case 0x0a: SCREEN_setup_config(); break; case 0x0b: SCREEN_debug(); break; case 0x0c: SCREEN_version(); break; default: screen.screen = 0x01; break; /* ここにきたらバグ */ } /* 起動時の表示画面保存用 */ if(screen.screen < 0x07) backup = screen.screen; return(TRUE); }