diff options
| author | Hannes Schulze <hannes.hs.schulze@fau.de> | 2025-05-02 12:50:57 +0200 |
|---|---|---|
| committer | Hannes Schulze <hannes.hs.schulze@fau.de> | 2025-05-02 12:50:57 +0200 |
| commit | 24c521f5a4b9f2e1a98668e9d9f7b19b4c9a9bd7 (patch) | |
| tree | a48ca9a718c719b30dae19a78b709874ca9b2bc5 /app/controller/serial-controller.hh | |
| parent | def315971fccfe6a1a1743b3de62addd5f0527dc (diff) | |
add controller test program
Diffstat (limited to 'app/controller/serial-controller.hh')
| -rw-r--r-- | app/controller/serial-controller.hh | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/app/controller/serial-controller.hh b/app/controller/serial-controller.hh new file mode 100644 index 0000000..bc217b0 --- /dev/null +++ b/app/controller/serial-controller.hh @@ -0,0 +1,29 @@ +#pragma once + +#include "nes/app/input/input-device-controller.hh" + +namespace nes::app::test +{ + /// Input device for an NES controller plugged in via serial port. + class serial_controller final : public input_device_controller + { + char const* path_; + int fd_{ -1 }; + sys::button_mask current_{}; + index index_{ index::unused }; + + public: + explicit serial_controller(char const* path); + ~serial_controller() override; + + auto is_reliable() const -> bool override; + auto get_name() const -> string_view override { return path_; } + auto get_index() const -> index override { return index_; } + auto set_index(index const v) -> void override { index_ = v; } + auto read_buttons() -> sys::button_mask override; + + private: + auto set_up() -> bool; + auto close() -> void; + }; +} // namespace nes::app:mac |
