@@ -70,7 +70,7 @@ Alternatively, install the `aioble` package, which will install everything.
7070Usage
7171-----
7272
73- Passive scan for nearby devices for 5 seconds: (Observer)
73+ #### Passive scan for nearby devices for 5 seconds: (Observer)
7474
7575``` py
7676async with aioble.scan(duration_ms = 5000 ) as scanner:
@@ -87,7 +87,7 @@ async with aioble.scan(duration_ms=5000, interval_us=30000, window_us=30000, act
8787 print (result, result.name(), result.rssi, result.services())
8888```
8989
90- Connect to a peripheral device: (Central)
90+ #### Connect to a peripheral device: (Central)
9191
9292``` py
9393# Either from scan result
@@ -101,7 +101,7 @@ except asyncio.TimeoutError:
101101 print (' Timeout' )
102102```
103103
104- Register services and wait for connection: (Peripheral, Server)
104+ #### Register services and wait for connection: (Peripheral, Server)
105105
106106``` py
107107_ENV_SENSE_UUID = bluetooth.UUID(0x 181A )
@@ -126,30 +126,95 @@ while True:
126126 print (" Connection from" , device)
127127```
128128
129- Update characteristic value: (Server)
129+ #### Update characteristic value: (Server)
130130
131131``` py
132+ # Write the local value.
132133temp_char.write(b ' data' )
134+ ```
135+
136+ ``` py
137+ # Write the local value and notify/indicate subscribers.
138+ temp_char.write(b ' data' , send_update = True )
139+ ```
140+
141+ #### Send notifications: (Server)
133142
134- temp_char.notify(b ' optional data' )
143+ ``` py
144+ # Notify with the current value.
145+ temp_char.notify(connection)
146+ ```
135147
136- await temp_char.indicate(timeout_ms = 2000 )
148+ ``` py
149+ # Notify with a custom value.
150+ temp_char.notify(connection, b ' optional data' )
137151```
138152
139- Query the value of a characteristic: (Client)
153+ #### Send indications: (Server)
154+
155+ ``` py
156+ # Indicate with current value.
157+ await temp_char.indicate(connection, timeout_ms = 2000 )
158+ ```
159+
160+ ``` py
161+ # Indicate with custom value.
162+ await temp_char.indicate(connection, b ' optional data' , timeout_ms = 2000 )
163+ ```
164+
165+ This will raise ` GattError ` if the indication is not acknowledged.
166+
167+ #### Wait for a write from the client: (Server)
168+
169+ ``` py
170+ # Normal characteristic, returns the connection that did the write.
171+ connection = await char.written(timeout_ms = 2000 )
172+ ```
173+
174+ ``` py
175+ # Characteristic with capture enabled, also returns the value.
176+ char = Characteristic(... , capture = True )
177+ connection, data = await char.written(timeout_ms = 2000 )
178+ ```
179+
180+ #### Query the value of a characteristic: (Client)
140181
141182``` py
142183temp_service = await connection.service(_ENV_SENSE_UUID )
143184temp_char = await temp_service.characteristic(_ENV_SENSE_TEMP_UUID )
144185
145186data = await temp_char.read(timeout_ms = 1000 )
187+ ```
188+
189+ #### Wait for a notification/indication: (Client)
190+
191+ ``` py
192+ # Notification
193+ data = await temp_char.notified(timeout_ms = 1000 )
194+ ```
146195
196+ ``` py
197+ # Indication
198+ data = await temp_char.indicated(timeout_ms = 1000 )
199+ ```
200+
201+ #### Subscribe to a characteristic: (Client)
202+
203+ ``` py
204+ # Subscribe for notification.
147205await temp_char.subscribe(notify = True )
148206while True :
149207 data = await temp_char.notified()
150208```
151209
152- Open L2CAP channels: (Listener)
210+ ``` py
211+ # Subscribe for indication.
212+ await temp_char.subscribe(indicate = True )
213+ while True :
214+ data = await temp_char.indicated()
215+ ```
216+
217+ #### Open L2CAP channels: (Listener)
153218
154219``` py
155220channel = await connection.l2cap_accept(_L2CAP_PSN , _L2CAP_MTU )
@@ -158,7 +223,7 @@ n = channel.recvinto(buf)
158223channel.send(b ' response' )
159224```
160225
161- Open L2CAP channels: (Initiator)
226+ #### Open L2CAP channels: (Initiator)
162227
163228``` py
164229channel = await connection.l2cap_connect(_L2CAP_PSN , _L2CAP_MTU )
0 commit comments