openMSX
LedStatus.hh
Go to the documentation of this file.
1 #ifndef LEDSTATUS_HH
2 #define LEDSTATUS_HH
3 
4 #include "RTSchedulable.hh"
5 #include <memory>
6 #include <cstdint>
7 
8 namespace openmsx {
9 
10 class CommandController;
11 class MSXCliComm;
12 class ReadOnlySetting;
13 class RTScheduler;
14 class Interpreter;
15 
16 class LedStatus final : public RTSchedulable
17 {
18 public:
19  enum Led {
22  KANA, // same as CODE LED
25  FDD,
26  NUM_LEDS // must be last
27  };
28 
29  LedStatus(RTScheduler& rtScheduler,
30  CommandController& commandController,
31  MSXCliComm& msxCliComm);
32  ~LedStatus();
33 
34  void setLed(Led led, bool status);
35 
36 private:
37  void handleEvent(Led led) noexcept;
38 
39  // RTSchedulable
40  void executeRT() override;
41 
42  MSXCliComm& msxCliComm;
43  Interpreter& interp;
44  std::unique_ptr<ReadOnlySetting> ledStatus[NUM_LEDS];
45  uint64_t lastTime;
46  bool ledValue[NUM_LEDS];
47 };
48 
49 } // namespace openmsx
50 
51 #endif
LedStatus(RTScheduler &rtScheduler, CommandController &commandController, MSXCliComm &msxCliComm)
Definition: LedStatus.cc:18
Thanks to enen for testing this on a real cartridge:
Definition: Autofire.cc:5
void setLed(Led led, bool status)
Definition: LedStatus.cc:39