#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);
}


1.7.1