# Shinobi Library

English

### Ver 1.00

1998/10/4

# リアルタイムクロック(時計)関数

目次

## 0. 概要

> 本関数は日付・時刻情報を提供するものです。

> DreamcastにはRTC(Real Time Clock)がSH4のものとAICA(Advanced Integrated Custom Audio)のものと2種類ありますが、バッテリーバックアップされているのはAICAの方で、本関数はAICAに付属のRTCを利用しています。
> 本関数は、G2バス上にあるAICAのRTCから日付・時刻に関する情報を、取得および設定します。
> AICAのRTCは32ビットのカウンタで、1秒に1カウントしていきます。そこで、現時刻やファイルのタイムスタンプに関する、日付・時刻を取得する目的で使われます。このカウンタは設定が可能ですが、ゲームプレイヤによる時刻設定以外に「設定」を行う事はアプリケーション開発者は避けるべきです。
> 作成基準にも依存しますが、アプリケーション開発者は主に日付・時刻の参照のみを利用するのがよいでしょう。

## 1.データ型

### 1.1 定数一覧

関数の処理ステータスに関する定数定義

SYD_RTC_ERR_OK | 正常終了
SYD_RTC_ERR_FATAL | 異常終了

サーバ関数の振る舞いに関する定数定義

SYD_RTC_STAT_ACTIVE | RTCにアクセスする
SYD_RTC_STAT_PASSIVE | RTCにアクセスしない

### 1.2 データ型一覧

SYS_RTC_DATE構造体

定義

      typedef struct {
        Uint16 year;
        Uint8  month;
        Uint8  day;
        Uint8  hour;
        Uint8  minute;
        Uint8  second;
        Uint8  dayofweek;
        Uint8  ageofmoon;
      } SYS_RTC_DATE

説明
  日付情報を管理する構造体です。

メンバ

  year | 西暦: 1950〜2085
  month | 月
  day | 日
  hour | 時
  minute | 分
  second | 秒
  dayofweek | 週：0(日曜)...6(土曜)
  ageofmoon | 月齢：(0...29,0：新月, 15：満月)

参照
  syRtcGetDate()

## 2. 関数リファレンス

### 2.1 関数一覧

関数 | 機能
--- | ---
syRtcInit＜新規＞ | RTC関数の初期化
syRtcFinish＜新規＞ | RTC関数の終了
syRtcExecServer＜新規＞ | サーバ関数
syRtcGetDate＜新規＞ | 現日付時刻の取得
syRtcSetDate＜新規＞ | 日付時刻の設定
syRtcSetServerMode＜新規＞ | サーバ関数の動作の設定
syRtcGetStat＜新規＞ | サーバ関数の状態の取得
syRtcCompareDate＜新規＞ | 日付時刻の比較
syRtcDateToCount＜新規＞ | 日付時刻からカウント数への変換
syRtcCountToDate＜新規＞ | カウント数から日付時刻への変換

### 2.2 関数API

## syRtcInit

［関数］
  Sint32 syRtcInit( void )
［入力］
  なし
［出力］
  なし
［戻値］
  SYD_RTC_ERR_***
［機能］
  ワークエリアの確保及びRTC関数の初期化
［備考］
  sbInitSystem関数内で呼ばれています。

## syRtcFinish

［関数］
  void syRtcFinish( void )
［入力］
  なし
［出力］
  なし
［戻値］
  なし
［機能］
  ワークエリアの開放及びRTC関数の終了
［備考］
  なし

## syRtcExecServer

［関数］
  void syRtcExecServer( void )
［入力］
  なし
［出力］
  なし
［戻値］
  なし
［機能］
  日付時刻に関する内部情報の更新を行う
［備考］
  V-BlankIn時に自動的に呼ばれるため、アプリケーションが明示的にこの関数を呼ことはありません。
  サーバ関数停止時はsyRtcGetDate()で取得される値は更新されません。
  syRtcSetDate()はサーバ関数停止時も実行されますが、その後syRtcGetDate()関数を実行しても、新しい時刻は返ってきません。

## syRtcGetDate

［関数］
  Sint32 syRtcGetDate( SYS_RTC_DATE *date )
［入力］
  なし
［出力］
  date
    現在の日付時刻
［戻値］
  サーバ関数の状態(SYD_RTC_STAT_***)
［機能］
  日付時刻を取得します。
［用例］

        void main( void )
        {
          SYS_RTC_DATE date, startdate;
          char *dayofweek[] = {
            "SUNDAY",
            "MONDAY",
            "TUESDAY",
            "WEDNESDAY",
            "THURSDAY",
            "FRIDAY",
            "SATURDAY"
          };

        while( 1 ){
          syRtcGetDate( &date );
          printf( "yyyy/mm/dd hh:mm:ss = %4d/%2d/%2d %2d:%2d:%2d\n",
            date.year, date.month, date.day,
            date.hour, date.minute, date.second );
          printf( "Today is %s\n", dayofweek[day.dayofweek] );
          switch( date.ageofmoon ) {
          case 0:
            printf( "new moon\n" );
            break;
          case 15:
            printf( "full moon\n" );
            break;
          }
        }

［備考］
  なし

## syRtcSetDate

［関数］
  Sint32 syRtcSetDate( const SYS_RTC_DATE *date )
［入力］
  date
    設定する日付時刻のポインタ
［出力］
  なし
［戻値］
  Error code(SYD_RTC_ERR_***)
［機能］
  日付時刻を設定します。
［備考］
  入力の構造体のdayofweekメンバとageofmoonメンバは参照されません。
  サーバ関数停止時もAICA内レジスタを更新します。

## syRtcSetServerMode

［関数］
  void syRtcSetServerMode( const Sint32 mode )
［入力］
  mode
    サーバ関数の動作(SYD_RTC_STAT_***)
［出力］
  なし
［戻値］
  なし
［機能］
  サーバ関数の活動状態を設定します。
［備考］
  初期状態ではRTCサーバ関数は動作中(SYD_RTC_STAT_ACTIVE)になっています。

## syRtcGetStat

［関数］
  Sint32 syRtcGetStat( void )
［入力］
  なし
［出力］
  なし
［戻値］
  サーバ関数の状態(SYD_RTC_STAT_***)
［機能］
  サーバ関数の活動状態(SYD_RTC_STAT_***)を取得します。
［備考］
  初期状態ではRTCサーバ関数は動作中(SYD_RTC_STAT_ACTIVE)になっています。

## syRtcCompareDate

［関数］
  Sint32 syRtcCompareDate( const SYS_RTC_DATE *date1, const SYS_RTC_DATE *date2 )
［入力］
  date1
    比較する日付時刻１のポインタ
  date2
    比較する日付時刻２のポインタ
［出力］
  なし
［戻値］
  -1
    date1の方が小さい
  0
    等しい
  +1
    date1の方が大きい
［機能］
  二つの日付時刻を比較し大小を判定します。大きい方が新しい。
［備考］
  なし

## syRtcDateToCount

［関数］
  void syRtcDateToCount( const SYS_RTC_DATE *date, Uint32 *count )
［入力］
  date
    変換しようとする日付時刻のポインタ
［出力］
  count
    変換されたカウント値
［戻値］
  なし
［機能］
  日付時刻からカウントへの変換をします。カウントはUint32で、1カウントは1秒に相当します
［備考］
  入力の構造体のdayofweekメンバとageofmoonメンバは参照されません。

## syRtcCountToDate

［関数］
  void syRtcSetDate( const Uint32 count, SYS_RTC_DATE *date )
［入力］
  count
    変換しようとするカウント
［出力］
  date
    変換された日付時刻のポインタ
［戻値］
  なし
［機能］
  1カウントを1秒としてカウントから日付時刻への変換を行います。
［備考］
  なし

オーバービューに戻る