OSDN Git Service

4063f0e0f6b8e2704a4a8130fa2371b119b259a4
[dennco/dennco.git] / Source / platform / qt / qtdnserialportimpl.h
1 //  Copyright (c) 2012 Dennco Project
2 //
3 // This program is free software: you can redistribute it and/or modify
4 // it under the terms of the GNU General Public License as published by
5 // the Free Software Foundation, either version 3 of the License, or
6 // (at your option) any later version.
7 //
8 // This program is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11 // GNU General Public License for more details.
12 //
13 // You should have received a copy of the GNU General Public License
14 // along with this program.  If not, see <http://www.gnu.org/licenses/>.
15
16 //
17 //  Created by tkawata on Apr/15/2012.
18 //
19 #ifndef QTDNSERIALPORTIMPL_H
20 #define QTDNSERIALPORTIMPL_H
21
22 #include "DNSerialPortImpl.h"
23
24 #include "TKLock.h"
25
26 #include <serialport.h>
27 #include <QString>
28 #include <QQueue>
29 #include <QSemaphore>
30
31 class DNServerSerialPort;
32 class DNThread;
33
34 class QtDNSerialPortImpl : public DNSerialPortImpl
35 {
36 public:
37     QtDNSerialPortImpl(DNServerSerialPort *server);
38     virtual ~QtDNSerialPortImpl();
39
40     virtual bool    setup();
41
42     virtual bool    isRunning();
43     virtual void    start();
44     virtual void    stop();
45
46     static void requestListenerThreadBody(void *impl);
47     static void requestHandelrThreadBody(void *impl);
48
49 private:
50     DNThread *mListnerThread;
51     DNThread *mHandlerThread;
52     SerialPort *mPort;
53     bool    mStopping;
54
55     QQueue<QString> mRequestQueue;
56     TKLock          mLock;
57     QSemaphore      mQueueSemaphore;
58 };
59
60 #endif // QTDNSERIALPORTIMPL_H