Browse Source

much faster ble connection

Thomas Buck 11 months ago
parent
commit
6344033842
2 changed files with 82 additions and 37 deletions
  1. 77
    34
      python-test/poll.py
  2. 5
    3
      python-test/state_connect.py

+ 77
- 34
python-test/poll.py View File

27
     global characteristicf, characteristic10
27
     global characteristicf, characteristic10
28
     global characteristic13, characteristic14
28
     global characteristic13, characteristic14
29
 
29
 
30
-    service3 = await device.service(serviceUuidVolcano3)
30
+    service3 = None
31
+    service4 = None
32
+    characteristic1 = None
33
+    characteristic3 = None
34
+    characteristicd = None
35
+    characteristicc = None
36
+    characteristicf = None
37
+    characteristic10 = None
38
+    characteristic13 = None
39
+    characteristic14 = None
40
+
41
+    val = 0
42
+
43
+    service3 = await device.service(serviceUuidVolcano3, 100)
31
     if cb != None:
44
     if cb != None:
32
-        await cb(0.1)
45
+        val += 1
46
+        await cb(val)
33
 
47
 
34
-    service4 = await device.service(serviceUuidVolcano4)
35
-    if cb != None:
36
-        await cb(0.2)
37
-
38
-    uuid1 = bluetooth.UUID("10110001-5354-4f52-5a26-4249434b454c")
39
-    characteristic1 = await service4.characteristic(uuid1)
40
-    if cb != None:
41
-        await cb(0.3)
48
+    uuidc = bluetooth.UUID("1010000c-5354-4f52-5a26-4249434b454c")
49
+    uuidd = bluetooth.UUID("1010000d-5354-4f52-5a26-4249434b454c")
50
+    async for c in service3.characteristics(None, 100):
51
+        if c.uuid == uuidc:
52
+            characteristicc = c
53
+            if cb != None:
54
+                val += 1
55
+                #await cb(val)
56
+
57
+        if c.uuid == uuidd:
58
+            characteristicd = c
59
+            if cb != None:
60
+                val += 1
61
+                #await cb(val)
42
 
62
 
43
-    uuid3 = bluetooth.UUID("10110003-5354-4f52-5a26-4249434b454c")
44
-    characteristic3 = await service4.characteristic(uuid3)
45
     if cb != None:
63
     if cb != None:
46
-        await cb(0.4)
64
+        await cb(val)
47
 
65
 
48
-    uuidd = bluetooth.UUID("1010000d-5354-4f52-5a26-4249434b454c")
49
-    characteristicd = await service3.characteristic(uuidd)
50
-    if cb != None:
51
-        await cb(0.5)
66
+    # -------------------------------------------------------------------------
52
 
67
 
53
-    uuidc = bluetooth.UUID("1010000c-5354-4f52-5a26-4249434b454c")
54
-    characteristicc = await service3.characteristic(uuidc)
68
+    service4 = await device.service(serviceUuidVolcano4, 100)
55
     if cb != None:
69
     if cb != None:
56
-        await cb(0.6)
70
+        val += 1
71
+        await cb(val)
57
 
72
 
73
+    uuid1 = bluetooth.UUID("10110001-5354-4f52-5a26-4249434b454c")
74
+    uuid3 = bluetooth.UUID("10110003-5354-4f52-5a26-4249434b454c")
58
     uuidf = bluetooth.UUID("1011000f-5354-4f52-5a26-4249434b454c")
75
     uuidf = bluetooth.UUID("1011000f-5354-4f52-5a26-4249434b454c")
59
-    characteristicf = await service4.characteristic(uuidf)
60
-    if cb != None:
61
-        await cb(0.7)
62
-
63
     uuid10 = bluetooth.UUID("10110010-5354-4f52-5a26-4249434b454c")
76
     uuid10 = bluetooth.UUID("10110010-5354-4f52-5a26-4249434b454c")
64
-    characteristic10 = await service4.characteristic(uuid10)
65
-    if cb != None:
66
-        await cb(0.8)
67
-
68
     uuid13 = bluetooth.UUID("10110013-5354-4f52-5a26-4249434b454c")
77
     uuid13 = bluetooth.UUID("10110013-5354-4f52-5a26-4249434b454c")
69
-    characteristic13 = await service4.characteristic(uuid13)
70
-    if cb != None:
71
-        await cb(0.9)
72
-
73
     uuid14 = bluetooth.UUID("10110014-5354-4f52-5a26-4249434b454c")
78
     uuid14 = bluetooth.UUID("10110014-5354-4f52-5a26-4249434b454c")
74
-    characteristic14 = await service4.characteristic(uuid14)
79
+    async for c in service4.characteristics(None, 100):
80
+        if c.uuid == uuid1:
81
+            characteristic1 = c
82
+            if cb != None:
83
+                val += 1
84
+                #await cb(val)
85
+
86
+        if c.uuid == uuid3:
87
+            characteristic3 = c
88
+            if cb != None:
89
+                val += 1
90
+                #await cb(val)
91
+
92
+        if c.uuid == uuidf:
93
+            characteristicf = c
94
+            if cb != None:
95
+                val += 1
96
+                #await cb(val)
97
+
98
+        if c.uuid == uuid10:
99
+            characteristic10 = c
100
+            if cb != None:
101
+                val += 1
102
+                #await cb(val)
103
+
104
+        if c.uuid == uuid13:
105
+            characteristic13 = c
106
+            if cb != None:
107
+                val += 1
108
+                #await cb(val)
109
+
110
+        if c.uuid == uuid14:
111
+            characteristic14 = c
112
+            if cb != None:
113
+                val += 1
114
+                #await cb(val)
115
+
75
     if cb != None:
116
     if cb != None:
76
-        await cb(1.0)
117
+        await cb(val)
118
+
119
+    return (val >= 10)
77
 
120
 
78
 async def get_current_temp(device):
121
 async def get_current_temp(device):
79
     val = await characteristic1.read()
122
     val = await characteristic1.read()

+ 5
- 3
python-test/state_connect.py View File

14
 
14
 
15
     def enter(self, val = None):
15
     def enter(self, val = None):
16
         self.step = False
16
         self.step = False
17
-        self.iteration = 0.0
17
+        self.iteration = 0
18
         self.done = False
18
         self.done = False
19
         self.client = None
19
         self.client = None
20
         self.connector = asyncio.create_task(self.connect(val))
20
         self.connector = asyncio.create_task(self.connect(val))
43
             async with self.lock:
43
             async with self.lock:
44
                 self.step = True
44
                 self.step = True
45
 
45
 
46
-            await cache_services_characteristics(client, self.progress)
46
+            success = await cache_services_characteristics(client, self.progress)
47
+            if not success:
48
+                raise RuntimeError("Error fetching characteristics")
47
         else:
49
         else:
48
             await d[0].disconnect()
50
             await d[0].disconnect()
49
             client = None
51
             client = None
76
                     if self.step == False:
78
                     if self.step == False:
77
                         self.lcd.textC("Connecting...", int(self.lcd.width / 2), int(self.lcd.height / 2), self.lcd.white)
79
                         self.lcd.textC("Connecting...", int(self.lcd.width / 2), int(self.lcd.height / 2), self.lcd.white)
78
                     else:
80
                     else:
79
-                        draw_graph(self.lcd, 0, int(self.iteration * 10), 10)
81
+                        draw_graph(self.lcd, 0, self.iteration, 10)
80
                         self.lcd.textC("Fetching parameters...", int(self.lcd.width / 2), int(self.lcd.height / 2) - 10, self.lcd.white, self.lcd.black)
82
                         self.lcd.textC("Fetching parameters...", int(self.lcd.width / 2), int(self.lcd.height / 2) - 10, self.lcd.white, self.lcd.black)
81
 
83
 
82
         return -1
84
         return -1

Loading…
Cancel
Save