// $Id: RS232Tester.hh 5597 2006-09-02 10:15:03Z m9710797 $ #ifndef RS232TESTER_HH #define RS232TESTER_HH #include "RS232Device.hh" #include "Thread.hh" #include "EventListener.hh" #include "Semaphore.hh" #include "openmsx.hh" #include #include #include #include namespace openmsx { class EventDistributor; class Scheduler; class CommandController; class FilenameSetting; class RS232Tester : public RS232Device, private Runnable, private EventListener { public: RS232Tester(EventDistributor& eventDistributor, Scheduler& scheduler, CommandController& commandController); virtual ~RS232Tester(); // Pluggable virtual void plugHelper(Connector& connector, const EmuTime& time); virtual void unplugHelper(const EmuTime& time); virtual const std::string& getName() const; virtual const std::string& getDescription() const; // input virtual void signal(const EmuTime& time); // output virtual void recvByte(byte value, const EmuTime& time); private: // Runnable virtual void run(); // EventListener virtual bool signalEvent(shared_ptr event); EventDistributor& eventDistributor; Scheduler& scheduler; Thread thread; FILE* inFile; std::deque queue; Semaphore lock; // to protect queue std::ofstream outFile; const std::auto_ptr rs232InputFilenameSetting; const std::auto_ptr rs232OutputFilenameSetting; }; } // namespace openmsx #endif