blob: 2022ed2b71df4e8b5269349f93cfce9800761b59 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
#pragma once
#include "nes/app/input/input-device-controller.hh"
namespace nes::app::mac
{
/// Input device for an NES controller plugged in via serial port.
class input_device_serial_controller final : public input_device_controller
{
char const* path_;
int fd_{ -1 };
sys::button_mask current_{};
index index_{ index::unused };
public:
explicit input_device_serial_controller(char const* path);
~input_device_serial_controller() override;
auto is_reliable() const -> bool override;
auto get_name() const -> std::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
|