openMSX
RS232Tester.hh
Go to the documentation of this file.
1#ifndef RS232TESTER_HH
2#define RS232TESTER_HH
3
4#include "RS232Device.hh"
5#include "EventListener.hh"
6#include "FilenameSetting.hh"
7#include "FileOperations.hh"
8#include "circular_buffer.hh"
9#include "Poller.hh"
10#include <fstream>
11#include <mutex>
12#include <thread>
13#include <cstdint>
14#include <cstdio>
15
16namespace openmsx {
17
18class EventDistributor;
19class Scheduler;
20class CommandController;
21
22class RS232Tester final : public RS232Device, private EventListener
23{
24public:
25 RS232Tester(EventDistributor& eventDistributor, Scheduler& scheduler,
26 CommandController& commandController);
27 ~RS232Tester() override;
28
29 // Pluggable
30 void plugHelper(Connector& connector, EmuTime::param time) override;
31 void unplugHelper(EmuTime::param time) override;
32 [[nodiscard]] std::string_view getName() const override;
33 [[nodiscard]] std::string_view getDescription() const override;
34
35 // input
36 void signal(EmuTime::param time) override;
37
38 // output
39 void recvByte(uint8_t value, EmuTime::param time) override;
40
41 template<typename Archive>
42 void serialize(Archive& ar, unsigned version);
43
44private:
45 void run();
46
47 // EventListener
48 int signalEvent(const Event& event) override;
49
50private:
51 EventDistributor& eventDistributor;
52 Scheduler& scheduler;
53 std::thread thread;
56 std::mutex mutex; // to protect queue
57 Poller poller;
58
59 std::ofstream outFile;
60
61 FilenameSetting rs232InputFilenameSetting;
62 FilenameSetting rs232OutputFilenameSetting;
63};
64
65} // namespace openmsx
66
67#endif
Represents something you can plug devices into.
Definition: Connector.hh:21
Polls for events on a given file descriptor.
Definition: Poller.hh:15
RS232Tester(EventDistributor &eventDistributor, Scheduler &scheduler, CommandController &commandController)
Definition: RS232Tester.cc:14
void plugHelper(Connector &connector, EmuTime::param time) override
Definition: RS232Tester.cc:36
std::string_view getName() const override
Name used to identify this pluggable.
Definition: RS232Tester.cc:75
void signal(EmuTime::param time) override
Definition: RS232Tester.cc:114
~RS232Tester() override
Definition: RS232Tester.cc:30
void serialize(Archive &ar, unsigned version)
Definition: RS232Tester.cc:153
void unplugHelper(EmuTime::param time) override
Definition: RS232Tester.cc:64
void recvByte(uint8_t value, EmuTime::param time) override
Definition: RS232Tester.cc:143
std::string_view getDescription() const override
Description for this pluggable.
Definition: RS232Tester.cc:80
std::unique_ptr< FILE, FClose > FILE_t
This file implemented 3 utility functions:
Definition: Autofire.cc:9