--- nono/vm/mpscc.h 2026/04/29 17:05:28 1.1.1.5 +++ nono/vm/mpscc.h 2026/04/29 17:05:50 1.1.1.8 @@ -11,9 +11,7 @@ #pragma once #include "device.h" -#include "event.h" #include "message.h" -#include "monitor.h" #include #if defined(MPSCC_SIO_LOG_HACK) @@ -32,11 +30,11 @@ class HostCOMDevice; class InterruptDevice; // 1チャンネル分の共通部分 -class MPSCCChan +class MPSCCChan final { public: MPSCCChan(); - virtual ~MPSCCChan(); + ~MPSCCChan(); void Init(int id_); @@ -570,15 +568,15 @@ class MPSCCDevice : public IODevice virtual void Tx(int ch, uint32 data) = 0; // シリアルから1バイト受信のメッセージとイベントコールバック - void HostRxCallback(); + void HostRxCallback(uint32); void RxMessage(MessageID, uint32); - void RxCallback(Event&); + void RxCallback(Event *); // 送受信関連 void TrySend(MPSCCChan&); void SetTxPeriod(MPSCCChan&); void SetRxPeriod(MPSCCChan&); - void TxCallback(Event&); + void TxCallback(Event *); // 割り込み void ChangeInterrupt(); @@ -602,8 +600,8 @@ class MPSCCDevice : public IODevice MPSCC mpscc {}; // 送受信用イベント - std::array txevent {}; - std::array rxevent {}; + std::array txevent {}; + std::array rxevent {}; // シリアルポート。 // 本当は共通層でやることではないがどう考えても同じコードになるので。 @@ -615,6 +613,6 @@ class MPSCCDevice : public IODevice InterruptDevice *interrupt {}; - // モニタ (更新関数は継承側で用意する) - Monitor monitor { this }; + // モニタ + Monitor *monitor {}; };