lib: Fixing checking for incorrect return value in while loop.
[barry.git] / src / m_serial.h
blob21df4a9cd9952c55d1ed75ab7ceb3f30af1b4b4e
1 ///
2 /// \file m_serial.h
3 /// Mode class for serial / GPRS modem mode
4 ///
6 /*
7 Copyright (C) 2008-2012, Net Direct Inc. (http://www.netdirect.ca/)
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
11 the Free Software Foundation; either version 2 of the License, or
12 (at your option) any later version.
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
18 See the GNU General Public License in the COPYING file at the
19 root directory of this project for more details.
22 #ifndef __BARRY_M_SERIAL_H__
23 #define __BARRY_M_SERIAL_H__
25 #include "dll.h"
26 #include "modem.h"
27 #include "socket.h"
28 #include "data.h"
29 #include "pppfilter.h"
31 namespace Barry {
33 // forward declarations
34 class Controller;
36 namespace Mode {
38 class BXEXPORT Serial : public Modem
40 public:
41 typedef void (*DeviceDataCallback)(void *context, const unsigned char *data, int len);
43 private:
44 Controller &m_con;
46 SocketHandle m_data;
47 SocketHandle m_ctrl;
49 uint16_t m_ModeSocket; // socket recommended by device
50 // when mode was selected
51 uint16_t m_CtrlSocket;
53 // PPP filtering
54 PppFilter m_filter;
56 // UsbSerData cache
57 // Data m_readCache;
59 // external callbacks
60 DeviceDataCallback m_callback;
61 void *m_callback_context;
63 protected:
64 static void DataCallback(Serial &context, Data *data);
65 static void CtrlCallback(Serial &context, Data *data);
67 public:
68 Serial(Controller &con, DeviceDataCallback callback, void *callback_context);
69 ~Serial();
71 //////////////////////////////////
72 // general operations
73 void Open(const char *password = 0); // FIXME password needed? if not,
74 // then we can remove it from
75 // the Modem base class
76 void Close();
77 void RetryPassword(const char *password);
79 //////////////////////////////////
80 // UsbSerData mode - modem specific
82 // void Read(Data &data, int timeout); // can be called from separate thread
83 void Write(const Data &data, int timeout = -1);
86 }} // namespace Barry::Mode
88 #endif