From 24c521f5a4b9f2e1a98668e9d9f7b19b4c9a9bd7 Mon Sep 17 00:00:00 2001 From: Hannes Schulze Date: Fri, 2 May 2025 12:50:57 +0200 Subject: add controller test program --- app/controller/serial-controller.hh | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 app/controller/serial-controller.hh (limited to 'app/controller/serial-controller.hh') 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 -- cgit v1.3.1