aboutsummaryrefslogtreecommitdiff
path: root/SrcUnix/EmTransportSerialUnix.h
diff options
context:
space:
mode:
Diffstat (limited to 'SrcUnix/EmTransportSerialUnix.h')
-rw-r--r--SrcUnix/EmTransportSerialUnix.h68
1 files changed, 68 insertions, 0 deletions
diff --git a/SrcUnix/EmTransportSerialUnix.h b/SrcUnix/EmTransportSerialUnix.h
new file mode 100644
index 0000000..5b0fcc6
--- /dev/null
+++ b/SrcUnix/EmTransportSerialUnix.h
@@ -0,0 +1,68 @@
+/* -*- mode: C++; tab-width: 4 -*- */
+/* ===================================================================== *\
+ Copyright (c) 2000-2001 Palm, Inc. or its subsidiaries.
+ All rights reserved.
+
+ This file is part of the Palm OS Emulator.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+\* ===================================================================== */
+
+#ifndef EmTransportSerialUnix_h
+#define EmTransportSerialUnix_h
+
+#include "EmTransportSerial.h"
+
+#include "omnithread.h" // omni_mutex
+#include <deque> // deque
+
+
+class EmHostTransportSerial
+{
+ public:
+ EmHostTransportSerial (void);
+ ~EmHostTransportSerial (void);
+
+ ErrCode OpenCommPort (const EmTransportSerial::ConfigSerial&);
+ ErrCode CreateCommThreads (const EmTransportSerial::ConfigSerial&);
+ ErrCode DestroyCommThreads (void);
+ ErrCode CloseCommPort (void);
+
+ // Manage data coming in the host serial port.
+ void PutIncomingData (const void*, long&);
+ void GetIncomingData (void*, long&);
+ long IncomingDataSize (void);
+
+ // Manage data going out the host serial port.
+ void PutOutgoingData (const void*, long&);
+ void GetOutgoingData (void*, long&);
+ long OutgoingDataSize (void);
+
+ static void* CommRead (void*);
+ static void* CommWrite (void*);
+
+ int GetBaud (EmTransportSerial::Baud);
+ int GetDataBits (EmTransportSerial::DataBits);
+
+ public:
+ omni_thread* fReadThread;
+ omni_thread* fWriteThread;
+
+ int fCommHandle;
+ int fCommSignalPipeA;
+ int fCommSignalPipeB;
+ int fTimeToQuit;
+ omni_mutex fDataMutex;
+ omni_condition fDataCondition;
+
+ omni_mutex fReadMutex;
+ deque<char> fReadBuffer;
+
+ omni_mutex fWriteMutex;
+ deque<char> fWriteBuffer;
+};
+
+#endif /* EmTransportSerialUnix_h */