Sfoglia il codice sorgente

bluetooth code extended to connect method

git-svn-id: svn://svn.siningsoft.de/myCar@3 4258477e-9397-4ceb-bd8a-6305f6291781
devnull 7 anni fa
parent
commit
e25cedaf47
3 ha cambiato i file con 79 aggiunte e 2 eliminazioni
  1. 48 1
      myCar.py
  2. 11 0
      templates/bluetooth/controller.html
  3. 20 1
      templates/bluetooth/devices.html

+ 48 - 1
myCar.py

@@ -3,6 +3,7 @@
 from flask import Flask
 from flask import url_for
 from flask import render_template
+from flask import request
 app = Flask(__name__)
 
 
@@ -22,5 +23,51 @@ def myCar_bluetooth_devices():
     # this method will return available bluetooth devices as a list for the web template output
     import bluew
     #return len(bluew.controllers())
-    return render_template('bluetooth/devices.html', bt_dev=bluew.devices())
+    bt_ctrl_powered = False
 
+    for dev in bluew.controllers():
+        if dev.Powered == True:
+            bt_ctrl_powered = True
+    
+    if bt_ctrl_powered == False:
+        return render_template('bluetooth/controller.html', bt_ctrl=bluew.controllers(), bt_error="All Bluetooth Adapters are powered off")
+    else:
+        return render_template('bluetooth/devices.html', bt_dev=bluew.devices())
+
+@app.route('/bluetooth/connect', methods=['POST'])
+def myCar_bluetooth_connect():
+    # this method will connect to a bt device in the following order:
+    #   - pair
+    #   - trust
+    #   - connect
+    #try:
+    #    request
+    #except NameError:
+    #    request = None
+
+    try:
+        if request is not None:
+            
+            import bluew
+
+            #try:
+            bt_dst_mac = request.form['bt_dst_mac']
+            # pair
+            bluew.pair(bt_dst_mac)
+
+            # trust
+            bluew.trust(bt_dst_mac)
+
+            # connect
+            bluew.connect(bt_dst_mac)
+
+            retstr = 'connected to '.join(bt_dst_mac)
+
+        else:
+            ret = 'Mac Address not provided'
+    except NameError:
+        ret = render_template('bluetooth/devices.html', bt_dev=bluew.devices(),bt_error="No MAC provided to connect to")
+    except bluew.errors.DeviceNotAvailable:
+        ret = render_template('bluetooth/devices.html', bt_dev=bluew.devices(),bt_error='Bluetooth device ' + bt_dst_mac +' is not available')
+
+    return ret

+ 11 - 0
templates/bluetooth/controller.html

@@ -1,5 +1,16 @@
 {% extends 'base.html' %}
 {% block content %}
+
+{% if bt_error %}
+    <table bgcolor='#d98797'>
+        <tr>
+            <td>
+                {{ bt_error }}
+            </td>
+        </tr>
+    </table>
+{% endif %}
+<br>
     <table>
     <tr>
         <th>ID</th><th>powered</th><th>Alias</th><th>MAC Address</th>

+ 20 - 1
templates/bluetooth/devices.html

@@ -1,5 +1,19 @@
 {% extends 'base.html' %}
 {% block content %}
+
+{% if bt_error %}
+    <table bgcolor='#d98797'>
+        <tr>
+            <td>
+                {{ bt_error }}
+            </td>
+        </tr>
+    </table>
+{% endif %}
+<br>
+
+{% if bt_dev %}
+    <form action='{{url_for('myCar_bluetooth_connect')}}' method='post'>
     <table>
     <tr>
         <th>ID</th><th>Alias</th><th>MAC Address</th><th>RSSI</th>
@@ -9,9 +23,14 @@
             <td>{{ loop.index }}</td><td>{{ dev.Alias }}</td><td>{{ dev.Address }}</td><td>{{dev.RSSI}}</td><td>{% if dev.RSSI == None %}
                     <img src='{{ url_for('static', filename='nok.png') }}' width='30px' height='30px'>
                 {% else %}
-                    <img src='{{ url_for('static', filename='wireless.png') }}' width='30px' height='30px'>
+                    <button formmethod='post' name='bt_dst_mac' value='{{ dev.Address }}'><img src='{{ url_for('static', filename='wireless.png') }}' width='30px' height='30px'></button>
                 {% endif %}</td>
         </tr>
     {% endfor %}
     </table>
+    </form>
+{% else %}
+    Bluetooth seems to be off
+{% endif %}
+
 {% endblock %}