この章の目次にもどる
前頁:第3章 ハードウェアリソースマネージャにもどる
次頁:第5章 システムディスクにすすむ

第4章 時計

4.1 対象デバイス

4.2 固有機能

4.3 ドライバ起動パラメータ

デバイス固有パラメータはなし

4.4 属性データ

以下の属性データをサポートする。

R 読み込みのみ可
W 書き込みのみ可
RW読み込み / 書き込み可
    /* CLOCK・データ番号 */
    typedef enum {
        /* 共通属性 */
        DN_CKEVENT  = DN_EVENT,
        /* 個別属性 */
        DN_CKDATETIME   = -100,
        DN_CKAUTOPWON   = -101,
        /* 機種依存機能 */
        DN_CKREGISTER   = -200
    } ClockDataNo;

DN_CKDATETIME は必須である。

-101 〜 -199 は、 基本的にハードウェアに依存しないように標準化される機能である。 しかし、サポートの可否はハードウェアに依存する。

-200 番以降は、ハードウェアに大きく依存する機能で、 特に時計とはあまり関連のない、標準化されない機能である。

サポートしていないデータ番号の要求があれば、ER_NOSPT を返す。

DN_CKEVENT :
事象通知用メッセージバッファID (RW)
data :
ID
DN_CKDATETIME :
現在時刻の設定 / 取得 (RW)
data :
DATE_TIM
typedef struct {
    W   d_year;     /* 1900年からのオフセット (85〜) */
    W   d_month;    /* 月 (1〜12) */
    W   d_day;      /* 日 (1〜31) */
    W   d_hour;     /* 時 (0〜23) */
    W   d_min;      /* 分 (0〜59) */
    W   d_sec;      /* 秒 (0〜59) */
    W   d_week;     /* 週 (使用しない) */
    W   d_wday;     /* 曜日 (0:日曜〜6:土曜) */
    W   d_days;     /* 日 (使用しない) */
} DATE_TIM;
現在時刻(ローカル時間)を リアルタイムクロックへ設定または取得する。
d_wday は、設定する時に誤った曜日を設定してもチェックされない。 したがって、取得した曜日も必ずしも正しいことは保証されない。 また、曜日をサポートしないハードウェアでは、不定となる。
d_week, d_days は使用しない。これらの値は不定となる。
DN_CKAUTOPWON :
自動電源オン時刻の設定 / 取得 (RW)
data:
DATE_TIM
自動電源オンの時刻 ( ローカル時間 ) をリアルタイムクロックへ設定または取得する。
d_year = 0 ( この場合他の値は無視 ) を設定すると、 自動電源オンの解除となる。また、過去の時刻を設定した場合にも、 実質的に解除となる。
d_week, d_wday, d_days は原則として使用しない。 ただし、設定時には d_wday は正しく設定するべきである。
標準外機能:インプリメント依存
ハードウェアによっては、 次の例のような設定をサポートすることも考えられる。
(例) 毎週月曜の 10:00 に電源オン
    d_year = d_month = d_day = -1;  /* 無視 */
    d_hour = 10; d_min = d_sec = 0; /* 10:00:00 */
    d_wday = 1;                     /* 月曜 */
DN_CKREGISTER :
不揮発レジスターの書き込み / 読み出し (RW)
data:
CK_REGS
typedef struct {
    W   nreg;       /* アクセスするレジスターの数 */
    struct {
    W   regno;  /* 対象レジスタ番号 */
    UW  data;   /* 対象データ */
    } c[nreg];
} CK_REGS;
リアルタイムクロックに用意されている 不揮発レジスターへの書き込み / 読み出しを行う。
書き込みは、regno のレジスタへ data を書き込む。
読み出しは、regno のレジスタから読み出し、data へ設定する。
これを、nreg 個分行う (読み出しの場合にも、nreg, regno が入力パラメータとなる点が、一般的な作法と異なる)。
data は、レジスターのビット幅分だけ有効となる。 例えば、レジスターが 8 ビットの場合には、 data の下位 8 ビットがレジスタに書き込まれる。 読み出し時には、data の上位ビットには 0 が設定される。

4.5 固有データ

なし

4.6 事象通知

    typedef struct {
        DevEvtKind  kind;   /* 事象種別 */
        ID      devid;  /* デバイス ID */
    } ClockEvt;
kind :
DE_CKPWON 自動電源 ON 通知
DE_CKPWON :
DN_CKAUTOPWON で設定した自動電源オン時刻になると事象が通知される。

4.7 エラーコード

デバイスドライバ共通仕様を参照。 時計ドライバ固有の特殊なエラーコードはない。

4.8 サポート機能

B-right/V

この章の目次にもどる
前頁:第3章 ハードウェアリソースマネージャにもどる
次頁:第5章 システムディスクにすすむ