データ構造 | マクロ定義 | 型定義 | 関数 | 変数

C:/PIC/OpenSSM/screen.h

このグラフは、どのファイルから直接、間接的にインクルードされているかを示しています。

ソースコードを見る。

データ構造

struct  SCREEN

マクロ定義

#define SCREEN_VIEW   0
#define SCREEN_INIT   1

型定義

typedef struct SCREEN SCREEN_T
typedef SCREEN_TpSCREEN_T

関数

void SCREEN_init (void)
BOOL SCREEN_main (void)

変数

SCREEN_T screen

マクロ定義

#define SCREEN_INIT   1

screen.h23 行で定義されています。

#define SCREEN_VIEW   0

screen.h22 行で定義されています。


型定義

typedef SCREEN_T* pSCREEN_T

screen.h37 行で定義されています。

typedef struct SCREEN SCREEN_T

関数

void SCREEN_init ( void   ) 

screen.c92 行で定義されています。

参照先 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   ) 

screen.c110 行で定義されています。

参照先 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);
}

関数の呼び出しグラフ:

呼出しグラフ:


変数

screen.c60 行で定義されています。