author | korovkin <korovkin> | 2006-05-14 15:38:20 (UTC) |
---|---|---|
committer | korovkin <korovkin> | 2006-05-14 15:38:20 (UTC) |
commit | 782a34192c2c879a80fd319153a2b2f48ded1c99 (patch) (unidiff) | |
tree | 55f9d66e747876ffa2e87cf30eaafaf33864597a | |
parent | 273ffc42b3f0ce593e0d20874a7f224328416445 (diff) | |
download | opie-782a34192c2c879a80fd319153a2b2f48ded1c99.zip opie-782a34192c2c879a80fd319153a2b2f48ded1c99.tar.gz opie-782a34192c2c879a80fd319153a2b2f48ded1c99.tar.bz2 |
Script must be started after device is started up.
We should wait for 1 second after device is brought up.
Fixed an error in hcicongig hci0 up.
-rw-r--r-- | noncore/net/opietooth/applet/bluezapplet.cpp | 31 | ||||
-rw-r--r-- | noncore/net/opietooth/applet/bluezapplet.h | 8 | ||||
-rw-r--r-- | noncore/net/opietooth/lib/device.cc | 5 |
3 files changed, 36 insertions, 8 deletions
diff --git a/noncore/net/opietooth/applet/bluezapplet.cpp b/noncore/net/opietooth/applet/bluezapplet.cpp index f7774f0..127b0af 100644 --- a/noncore/net/opietooth/applet/bluezapplet.cpp +++ b/noncore/net/opietooth/applet/bluezapplet.cpp | |||
@@ -72,26 +72,28 @@ namespace OpieTooth { | |||
72 | startTimer(2000); | 72 | startTimer(2000); |
73 | btDevice = 0; | 73 | btDevice = 0; |
74 | btManager = 0; | 74 | btManager = 0; |
75 | bluezactive = false; | 75 | bluezactive = false; |
76 | bluezDiscoveryActive = false; | 76 | bluezDiscoveryActive = false; |
77 | doListDevice = false; | 77 | doListDevice = false; |
78 | isScanning = false; | 78 | isScanning = false; |
79 | m_wasOn = false; | 79 | m_wasOn = false; |
80 | m_sync = false; | ||
80 | 81 | ||
81 | // TODO: determine whether this channel has to be closed at destruction time. | 82 | // TODO: determine whether this channel has to be closed at destruction time. |
82 | QCopChannel* chan = new QCopChannel("QPE/Bluetooth", this ); | 83 | QCopChannel* chan = new QCopChannel("QPE/Bluetooth", this ); |
83 | connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ), | 84 | connect(chan, SIGNAL(received(const QCString&,const QByteArray&) ), |
84 | this, SLOT(slotMessage(const QCString&,const QByteArray&) ) ); | 85 | this, SLOT(slotMessage(const QCString&,const QByteArray&) ) ); |
85 | ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null"); | 86 | ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null"); |
86 | } | 87 | } |
87 | 88 | ||
88 | BluezApplet::~BluezApplet() { | 89 | BluezApplet::~BluezApplet() { |
89 | if ( btDevice ) { | 90 | if ( btDevice ) { |
91 | ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null"); | ||
90 | delete btDevice; | 92 | delete btDevice; |
91 | } | 93 | } |
92 | if ( btManager ) { | 94 | if ( btManager ) { |
93 | delete btManager; | 95 | delete btManager; |
94 | } | 96 | } |
95 | } | 97 | } |
96 | 98 | ||
97 | int BluezApplet::position() | 99 | int BluezApplet::position() |
@@ -122,32 +124,30 @@ namespace OpieTooth { | |||
122 | case Model_iPAQ_H39xx: | 124 | case Model_iPAQ_H39xx: |
123 | btDevice = new Device( "/dev/tts/1", "bcsp", "921600" ); | 125 | btDevice = new Device( "/dev/tts/1", "bcsp", "921600" ); |
124 | break; | 126 | break; |
125 | 127 | ||
126 | case Model_iPAQ_H5xxx: | 128 | case Model_iPAQ_H5xxx: |
127 | btDevice = new Device( "/dev/tts/1", "any", "921600" ); | 129 | btDevice = new Device( "/dev/tts/1", "any", "921600" ); |
128 | break; | 130 | break; |
129 | 131 | ||
130 | #ifndef OPIE120 | 132 | #if OPIE_VERSION >= 102010 |
131 | case Model_MyPal_716: | 133 | case Model_MyPal_716: |
132 | btDevice = new Device( "/dev/ttyS1", "bcsp", "921600" ); | 134 | btDevice = new Device( "/dev/ttyS1", "bcsp", "921600" ); |
133 | break; | 135 | break; |
134 | #endif | 136 | #endif |
135 | 137 | ||
136 | default: | 138 | default: |
137 | btDevice = new Device( "/dev/ttySB0", "bcsp", "230400" ); | 139 | btDevice = new Device( "/dev/ttySB0", "bcsp", "230400" ); |
138 | break; | 140 | break; |
139 | } | 141 | } |
140 | if (sync) { | 142 | m_sync = sync; |
141 | ::system("/etc/init.d/bluetooth start >/dev/null 2>/dev/null"); | 143 | connect(btDevice, SIGNAL(device(const QString&, bool)), |
142 | } else { | 144 | this, SLOT(slotDevice(const QString&, bool))); |
143 | QCopEnvelope e("QPE/System", "execute(QString)"); | 145 | |
144 | e << QString("/etc/init.d/bluetooth start"); | ||
145 | } | ||
146 | } else { | 146 | } else { |
147 | ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null"); | 147 | ::system("/etc/init.d/bluetooth stop >/dev/null 2>/dev/null"); |
148 | if ( btManager ) { | 148 | if ( btManager ) { |
149 | delete btManager; | 149 | delete btManager; |
150 | btManager = 0; | 150 | btManager = 0; |
151 | } | 151 | } |
152 | if ( btDevice ) { | 152 | if ( btDevice ) { |
153 | delete btDevice; | 153 | delete btDevice; |
@@ -331,13 +331,30 @@ namespace OpieTooth { | |||
331 | p.drawPixmap( 0, 0, bluezOffPixmap ); | 331 | p.drawPixmap( 0, 0, bluezOffPixmap ); |
332 | #endif | 332 | #endif |
333 | } | 333 | } |
334 | 334 | ||
335 | if (bluezDiscoveryActive) { | 335 | if (bluezDiscoveryActive) { |
336 | p.drawPixmap( 0, 0, bluezDiscoveryOnPixmap ); | 336 | p.drawPixmap( 0, 0, bluezDiscoveryOnPixmap ); |
337 | } | 337 | } |
338 | } | 338 | } |
339 | /** | ||
340 | * Reacts on device up | ||
341 | * @param name device name | ||
342 | * @param up if device was brought up | ||
343 | */ | ||
344 | void BluezApplet::slotDevice(const QString& name, bool up) | ||
345 | { | ||
346 | if (!up) | ||
347 | return; | ||
348 | odebug << name << " is up" << oendl; | ||
349 | if (m_sync) { | ||
350 | ::system("/etc/init.d/bluetooth start >/dev/null 2>/dev/null"); | ||
351 | } else { | ||
352 | QCopEnvelope e("QPE/System", "execute(QString)"); | ||
353 | e << QString("/etc/init.d/bluetooth start"); | ||
354 | } | ||
355 | } | ||
339 | }; | 356 | }; |
340 | 357 | ||
341 | 358 | ||
342 | EXPORT_OPIE_APPLET_v1( OpieTooth::BluezApplet ) | 359 | EXPORT_OPIE_APPLET_v1( OpieTooth::BluezApplet ) |
343 | 360 | ||
diff --git a/noncore/net/opietooth/applet/bluezapplet.h b/noncore/net/opietooth/applet/bluezapplet.h index 1937934..b79ed5b 100644 --- a/noncore/net/opietooth/applet/bluezapplet.h +++ b/noncore/net/opietooth/applet/bluezapplet.h | |||
@@ -65,17 +65,25 @@ public slots: | |||
65 | QPixmap bluezOnPixmap; | 65 | QPixmap bluezOnPixmap; |
66 | QPixmap bluezOffPixmap; | 66 | QPixmap bluezOffPixmap; |
67 | QPixmap bluezDiscoveryOnPixmap; | 67 | QPixmap bluezDiscoveryOnPixmap; |
68 | bool bluezactive; | 68 | bool bluezactive; |
69 | bool bluezDiscoveryActive; | 69 | bool bluezDiscoveryActive; |
70 | bool doListDevice; //If I have to list devices after bringing BT up? | 70 | bool doListDevice; //If I have to list devices after bringing BT up? |
71 | bool isScanning; //If I'm scanning devices | 71 | bool isScanning; //If I'm scanning devices |
72 | bool m_wasOn; //If BT was started by menu? | 72 | bool m_wasOn; //If BT was started by menu? |
73 | protected: | ||
74 | bool m_sync; //If we have to bring BT synchronously | ||
73 | 75 | ||
74 | private slots: | 76 | private slots: |
75 | void slotMessage( const QCString& , const QByteArray& ); | 77 | void slotMessage( const QCString& , const QByteArray& ); |
78 | /** | ||
79 | * Reacts on device up | ||
80 | * @param name device name | ||
81 | * @param up if device was brought up | ||
82 | */ | ||
83 | void slotDevice(const QString&, bool); | ||
76 | }; | 84 | }; |
77 | }; | 85 | }; |
78 | 86 | ||
79 | 87 | ||
80 | #endif | 88 | #endif |
81 | 89 | ||
diff --git a/noncore/net/opietooth/lib/device.cc b/noncore/net/opietooth/lib/device.cc index 2f04d46..88d4cf9 100644 --- a/noncore/net/opietooth/lib/device.cc +++ b/noncore/net/opietooth/lib/device.cc | |||
@@ -121,17 +121,18 @@ void Device::slotExited( OProcess* proc) | |||
121 | owarn << "Output: " << m_output.data() << oendl; | 121 | owarn << "Output: " << m_output.data() << oendl; |
122 | pid = parsePid( m_output ); | 122 | pid = parsePid( m_output ); |
123 | owarn << "Pid = " << pid << oendl; | 123 | owarn << "Pid = " << pid << oendl; |
124 | // now hciconfig hci0 up ( determine hciX FIXME) | 124 | // now hciconfig hci0 up ( determine hciX FIXME) |
125 | // and call hciconfig hci0 up | 125 | // and call hciconfig hci0 up |
126 | // FIXME hardcoded to hci0 now :( | 126 | // FIXME hardcoded to hci0 now :( |
127 | m_hci = new OProcess( ); | 127 | m_hci = new OProcess( ); |
128 | *m_hci << "hciconfig"; | 128 | *m_hci << "hciconfig"; |
129 | *m_hci << "hci0 up"; | 129 | *m_hci << "hci0"; |
130 | *m_hci << "up"; | ||
130 | connect(m_hci, SIGNAL( processExited(Opie::Core::OProcess*) ), | 131 | connect(m_hci, SIGNAL( processExited(Opie::Core::OProcess*) ), |
131 | this, SLOT( slotExited(Opie::Core::OProcess* ) ) ); | 132 | this, SLOT( slotExited(Opie::Core::OProcess* ) ) ); |
132 | if(!m_hci->start() ){ | 133 | if(!m_hci->start() ){ |
133 | owarn << "could not start" << oendl; | 134 | owarn << "could not start" << oendl; |
134 | m_attached = false; | 135 | m_attached = false; |
135 | emit device("hci0", false ); | 136 | emit device("hci0", false ); |
136 | } | 137 | } |
137 | }else{ | 138 | }else{ |
@@ -146,16 +147,18 @@ void Device::slotExited( OProcess* proc) | |||
146 | }else if(proc== m_hci ){ | 147 | }else if(proc== m_hci ){ |
147 | owarn << "M HCI exited" << oendl; | 148 | owarn << "M HCI exited" << oendl; |
148 | if( m_hci->normalExit() ){ | 149 | if( m_hci->normalExit() ){ |
149 | owarn << "normal exit" << oendl; | 150 | owarn << "normal exit" << oendl; |
150 | int ret = m_hci->exitStatus(); | 151 | int ret = m_hci->exitStatus(); |
151 | if( ret == 0 ){ | 152 | if( ret == 0 ){ |
152 | owarn << "attached really really attached" << oendl; | 153 | owarn << "attached really really attached" << oendl; |
153 | m_attached = true; | 154 | m_attached = true; |
155 | //Wait for a device to be brought up | ||
156 | ::sleep(1); | ||
154 | emit device("hci0", true ); | 157 | emit device("hci0", true ); |
155 | }else{ | 158 | }else{ |
156 | owarn << "failed" << oendl; | 159 | owarn << "failed" << oendl; |
157 | emit device("hci0", false ); | 160 | emit device("hci0", false ); |
158 | m_attached = false; | 161 | m_attached = false; |
159 | } | 162 | } |
160 | }// normal exit | 163 | }// normal exit |
161 | delete m_hci; | 164 | delete m_hci; |