"CLOCK"
。
nowait
モードはサポートしない。
デバイス固有パラメータはなし
以下の属性データをサポートする。
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
DN_CKDATETIME :
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 :
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 :
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 が設定される。
なし
typedef struct { DevEvtKind kind; /* 事象種別 */ ID devid; /* デバイス ID */ } ClockEvt;
DE_CKPWON
自動電源 ON 通知
DE_CKPWON :
DN_CKAUTOPWON
で設定した自動電源オン時刻になると事象が通知される。
デバイスドライバ共通仕様を参照。 時計ドライバ固有の特殊なエラーコードはない。
DN_CKDATETIME
のみサポート。