--- nono/vm/rtc.h 2026/04/29 17:05:11 1.1.1.9 +++ nono/vm/rtc.h 2026/04/29 17:05:51 1.1.1.14 @@ -11,25 +11,22 @@ #pragma once #include "device.h" -#include "event.h" #include -// これ自体が IODevice である必要はないが派生側が IODevice を必要とするため。 +class Syncer; + class RTCDevice : public IODevice { using inherited = IODevice; public: - RTCDevice(const std::string& objname_); - virtual ~RTCDevice() override; + RTCDevice(); + ~RTCDevice() override; bool Init() override; virtual void StartTime(); - // clock-sync が実時間同期なら true を返す - bool GetSyncRealtime() const { return sync_rt; } - // 電源 OFF 時の実時間でのクロック入力。 // 次回のクロック発生までの時間間隔を返す。 uint64 ClockIn_PowerOff(); @@ -122,10 +119,10 @@ class RTCDevice : public IODevice bool ParseTime(const std::string& str, int *h, int *m, int *s); // 現在の月の最終日を返す (月の繰り上がり処理用) - int GetLastMday() const; + uint GetLastMday() const; // イベントコールバック - void Callback(Event& ev); + void Callback(Event *); // イベント間隔 const uint period = 31.25_msec; @@ -133,8 +130,12 @@ class RTCDevice : public IODevice // システムクロックが刻んでいる時刻 uint64 stime {}; + Syncer *syncer {}; + // RTC クロック入力 - Event event { this }; + Event *event {}; }; -extern RTCDevice *gRTC; +static inline RTCDevice *GetRTCDevice() { + return Object::GetObject(OBJ_RTC); +}