"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 のみサポート。