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
00033
00034
00035
00036
00037
00038
00039 #ifndef __BLUETOOTH_SDP_H
00040 #define __BLUETOOTH_SDP_H
00041
00042 #include "ariba/config.h"
00043
00044 #include <iostream>
00045 #include <string>
00046 #include <ctime>
00047 #include <cerrno>
00048 #include <boost/bind.hpp>
00049 #include <boost/asio.hpp>
00050 #include <boost/thread.hpp>
00051 #include <boost/thread/mutex.hpp>
00052 #include <boost/thread/thread.hpp>
00053 #include "ariba/utility/bootstrap/modules/BootstrapModule.h"
00054 #include "ariba/utility/logging/Logging.h"
00055
00056 #ifdef HAVE_BLUETOOTH_BLUETOOTH_H
00057 #include <bluetooth/bluetooth.h>
00058 #include <bluetooth/sdp.h>
00059 #include <bluetooth/sdp_lib.h>
00060 #include <bluetooth/hci.h>
00061 #include <bluetooth/hci_lib.h>
00062 #endif
00063
00064 using std::string;
00065
00066 namespace ariba {
00067 namespace overlay {
00068 class OverlayBootstrap;
00069 }
00070 }
00071
00072 using ariba::overlay::OverlayBootstrap;
00073
00074 namespace ariba {
00075 namespace utility {
00076
00077 class BluetoothSdp : public BootstrapModule {
00078 use_logging_h(BluetoothSdp);
00079 public:
00080 static OverlayBootstrap* CONNECTION_CHECKER;
00081
00082 BluetoothSdp(BootstrapInformationCallback* _callback);
00083 virtual ~BluetoothSdp();
00084
00085 virtual void start();
00086 virtual void stop();
00087
00088 virtual string getName();
00089 virtual string getInformation();
00090 virtual bool isFunctional();
00091 virtual void publishService(string name, string info1, string info2, string info3);
00092 virtual void revokeService(string name);
00093
00094 private:
00095
00096 #ifdef HAVE_BLUETOOTH_BLUETOOTH_H
00097 void bt_scan();
00098 void sdp_search(bdaddr_t target, string devicename);
00099 string ba2string(bdaddr_t* ba);
00100 string ba2name(bdaddr_t* ba, int sock);
00101
00102 sdp_session_t *sdp_session_;
00103 uint8_t channel_;
00104
00105 bool haveConnections();
00106 #endif // HAVE_BLUETOOTH_BLUETOOTH_H
00107
00108 boost::asio::io_service io_service_;
00109 boost::asio::deadline_timer scan_timer_;
00110 boost::thread t_;
00111 };
00112
00113 }}
00114
00115 #endif // __BLUETOOTH_SDP_H