diff options
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 |
