Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #ifndef BluetoothSocketH
00033 #define BluetoothSocketH
00034
00035 #include <zeusbase/Net/AbstractSocket.h>
00036 #include <zeusbase/Net/Bluetooth/BTDefines.hpp>
00037 #include <zeusbase/System/Interfaces/IInputStream.hpp>
00038 #include <zeusbase/System/Interfaces/IOutputStream.hpp>
00039
00040 BEGIN_NAMESPACE_Zeus
00041
00042 class TBTAddress;
00043
00044
00047
00048 zeusbase_class TBluetoothSocket : public TAbstractSocket, public IInputStream, public IOutputStream
00049 {
00050 public:
00051 TBluetoothSocket();
00052 TBluetoothSocket(TBTAddress& rAddress);
00053 TBluetoothSocket(Int iFD, SOCKADDR_BTH& rSocketAddr);
00054
00055 bool hasAuthentication() const;
00056 bool hasEncryption() const;
00057 void setAuthentication(bool bMode);
00058 void setEncryption(bool bMode);
00059
00060
00061 virtual Retval connect();
00062
00063
00064 virtual bool MQUALIFIER available() const{ return m_bConnected; }
00065 virtual bool MQUALIFIER isEndReached() const { return !m_bConnected; }
00066 virtual Retval MQUALIFIER read(char* pBuffer, Int iBufferSize, Int& rValidSize) const;
00067 virtual Int MQUALIFIER readItem() const;
00068 virtual Int8 MQUALIFIER readInt8(BOOL_ERRORRETVAL(pError)) const;
00069 virtual Int16 MQUALIFIER readInt16(BOOL_ERRORRETVAL(pError)) const;
00070 virtual Int32 MQUALIFIER readInt32(BOOL_ERRORRETVAL(pError)) const;
00071 virtual Int64 MQUALIFIER readInt64(BOOL_ERRORRETVAL(pError)) const;
00072 virtual Uint8 MQUALIFIER readUint8(BOOL_ERRORRETVAL(pError)) const;
00073 virtual Uint16 MQUALIFIER readUint16(BOOL_ERRORRETVAL(pError)) const;
00074 virtual Uint32 MQUALIFIER readUint32(BOOL_ERRORRETVAL(pError)) const;
00075 virtual Uint64 MQUALIFIER readUint64(BOOL_ERRORRETVAL(pError)) const;
00076 virtual Float64 MQUALIFIER readFloat64(BOOL_ERRORRETVAL(pError)) const;
00077 virtual Float32 MQUALIFIER readFloat32(BOOL_ERRORRETVAL(pError)) const;
00078 virtual bool MQUALIFIER readBool(BOOL_ERRORRETVAL(pError)) const;
00079 virtual Retval MQUALIFIER readArray(IByteArray& rData) const;
00080 virtual Retval MQUALIFIER readString(IString& rstrData) const;
00081 virtual void MQUALIFIER close() { disconnect(); }
00082 virtual void MQUALIFIER reset() {}
00083 virtual bool MQUALIFIER skip(Int iBytes = 1);
00084
00085
00086 virtual Retval MQUALIFIER write(const char* pBuffer, Int iBufferSize);
00087 virtual Retval MQUALIFIER writeInt8(Int8 cData);
00088 virtual Retval MQUALIFIER writeInt16(Int16 sData);
00089 virtual Retval MQUALIFIER writeInt32(Int32 lData);
00090 virtual Retval MQUALIFIER writeInt64(const Int64& rldData);
00091 virtual Retval MQUALIFIER writeUint8(Uint8 ucData);
00092 virtual Retval MQUALIFIER writeUint16(Uint16 usData);
00093 virtual Retval MQUALIFIER writeUint32(Uint32 ulData);
00094 virtual Retval MQUALIFIER writeUint64(const Uint64& ruldData);
00095 virtual Retval MQUALIFIER writeFloat32(Float32 fData);
00096 virtual Retval MQUALIFIER writeFloat64(const Float64& rdData);
00097 virtual Retval MQUALIFIER writeBool(bool bData);
00098 virtual Retval MQUALIFIER writeArray(const IByteArray& rData);
00099 virtual Retval MQUALIFIER writeString(const IString& rData);
00100 virtual void MQUALIFIER flush() {}
00101
00102
00103 MEMORY_MANAGER_DECL
00104
00105 protected:
00106 virtual ~TBluetoothSocket();
00107 virtual void openSocket();
00108
00109 private:
00110 };
00111
00112
00113
00116
00117 inline bool TBluetoothSocket::hasAuthentication() const
00118 {
00119 #if defined(ENABLE_WIN32_BLUETOOTH)
00120 return TAbstractSocket::getBoolSocketOption(m_iSocketFD, SO_BTH_AUTHENTICATE, SOL_RFCOMM);
00121 #elif defined(ENABLE_BLUEZ_BLUETOOTH)
00122 return TAbstractSocket::getBoolSocketOption(m_iSocketFD, RFCOMM_LM_AUTH, SOL_RFCOMM);
00123 #else
00124 return false;
00125 #endif
00126 }
00127
00128
00131
00132 inline bool TBluetoothSocket::hasEncryption() const
00133 {
00134 #if defined(ENABLE_WIN32_BLUETOOTH)
00135 return TAbstractSocket::getBoolSocketOption(m_iSocketFD, SO_BTH_ENCRYPT, SOL_RFCOMM);
00136 #elif defined(ENABLE_BLUEZ_BLUETOOTH)
00137 return TAbstractSocket::getBoolSocketOption(m_iSocketFD, RFCOMM_LM_ENCRYPT, SOL_RFCOMM);
00138 #else
00139 return false;
00140 #endif
00141 }
00142
00143
00146
00147 inline void TBluetoothSocket::setAuthentication(bool bMode)
00148 {
00149 #if defined(ENABLE_WIN32_BLUETOOTH)
00150 TAbstractSocket::setBoolSocketOption(m_iSocketFD, SO_BTH_AUTHENTICATE, SOL_RFCOMM, bMode);
00151 #elif defined(ENABLE_BLUEZ_BLUETOOTH)
00152 TAbstractSocket::setBoolSocketOption(m_iSocketFD, RFCOMM_LM_AUTH, SOL_RFCOMM, bMode);
00153 #else
00154
00155 #endif
00156 }
00157
00158
00161
00162 inline void TBluetoothSocket::setEncryption(bool bMode)
00163 {
00164 #if defined(ENABLE_WIN32_BLUETOOTH)
00165 TAbstractSocket::setBoolSocketOption(m_iSocketFD, SO_BTH_ENCRYPT, SOL_RFCOMM, bMode);
00166 #elif defined(ENABLE_BLUEZ_BLUETOOTH)
00167 TAbstractSocket::setBoolSocketOption(m_iSocketFD, RFCOMM_LM_ENCRYPT, SOL_RFCOMM, bMode);
00168 #else
00169
00170 #endif
00171 }
00172
00173
00176
00177 inline Uint8 MQUALIFIER TBluetoothSocket::readUint8(bool* pError) const
00178 {
00179 return static_cast<Uint8>(readInt8(pError));
00180 }
00181
00182
00185
00186 inline Uint16 MQUALIFIER TBluetoothSocket::readUint16(bool* pError) const
00187 {
00188 return static_cast<Uint16>(readInt16(pError));
00189 }
00190
00191
00194
00195 inline Uint32 MQUALIFIER TBluetoothSocket::readUint32(bool* pError) const
00196 {
00197 return static_cast<Uint32>(readInt32(pError));
00198 }
00199
00200
00203
00204 inline Uint64 MQUALIFIER TBluetoothSocket::readUint64(bool* pError) const
00205 {
00206 return static_cast<Uint64>(readInt64(pError));
00207 }
00208
00209
00212
00213 inline bool MQUALIFIER TBluetoothSocket::readBool(bool* pError) const
00214 {
00215 return (readInt8(pError) != 0 );
00216 }
00217
00218
00221
00222 inline Retval MQUALIFIER TBluetoothSocket::writeUint8(Uint8 ucData)
00223 {
00224 return writeInt8(static_cast<Int8>(ucData));
00225 }
00226
00227
00230
00231 inline Retval MQUALIFIER TBluetoothSocket::writeUint16(Uint16 usData)
00232 {
00233 return writeInt16(static_cast<Int16>(usData));
00234 }
00235
00236
00239
00240 inline Retval MQUALIFIER TBluetoothSocket::writeUint32(Uint32 ulData)
00241 {
00242 return writeInt32(static_cast<Int32>(ulData));
00243 }
00244
00245
00248
00249 inline Retval MQUALIFIER TBluetoothSocket::writeUint64(const Uint64& ruldData)
00250 {
00251 return writeInt64(static_cast<Int64>(ruldData));
00252 }
00253
00254
00257
00258 inline Retval MQUALIFIER TBluetoothSocket::writeBool(bool bData)
00259 {
00260 return writeInt8(static_cast<Int8>(bData));
00261 }
00262
00263 END_NAMESPACE_Zeus
00264
00265 #endif