Commit Graph

28 Commits

Author SHA1 Message Date
Jim Mussared f4a6fc2c8e examples/bluetooth: Link to aioble in BLE examples.
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-09-01 14:05:32 +10:00
Alexander Wilde b94ab6a2ef examples/bluetooth: Raise ValueError when advertising data is too large.
Signed-off-by: Alexander Wilde <alexander.wilde87@gmail.com>
2023-09-01 14:02:51 +10:00
Angus Gratton 801910fc83 all: Add missing imports for micropython.const.
Found by Ruff checking F821.

Signed-off-by: Angus Gratton <angus@redyak.com.au>
2023-08-16 16:13:27 +10:00
Jim Mussared 201f5df91e examples/bluetooth/ble_temperature_central.py: Remove service tuple.
This is unused in the client, only needed in the server.

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-04-26 11:37:20 +10:00
Damien George e1f211c6b5 examples/bluetooth: Fix check for _conn_handle being None.
Fixes issue #10755.

Signed-off-by: Damien George <damien@micropython.org>
2023-02-15 14:14:49 +11:00
Jim Mussared 8b27482692 top: Update Python formatting to black "2023 stable style".
See https://black.readthedocs.io/en/stable/the_black_code_style/index.html

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2023-02-02 12:51:03 +11:00
Jim Mussared f6fd46c402 examples/bluetooth: Add bonding/passkey demo.
Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2020-12-02 14:44:00 +11:00
Andrew Leech 1697ff335d extmod/modbluetooth: Allow setting char/desc enc/auth options.
This widens the characteristic/descriptor flags to 16-bit, to allow setting
encryption/authentication requirements.

Sets the required flags for NimBLE and btstack implementations.

The BLE.FLAG_* constants will eventually be deprecated in favour of copy
and paste Python constants (like the IRQs).

Signed-off-by: Jim Mussared <jim.mussared@gmail.com>
2020-12-02 14:36:50 +11:00
Jim Mussared 0fd0eb00aa examples/bluetooth: Update to use positional-only args to irq().
To match 6a6a5f9e15.
2020-09-26 21:19:18 +10:00
Damien George 06659077a8 all: Update Python code to conform to latest black formatting.
Updating to Black v20.8b1 there are two changes that affect the code in
this repository:

- If there is a trailing comma in a list (eg [], () or function call) then
  that list is now written out with one line per element.  So remove such
  trailing commas where the list should stay on one line.

- Spaces at the start of """ doc strings are removed.

Signed-off-by: Damien George <damien@micropython.org>
2020-08-29 15:18:01 +10:00
Jim Mussared 9d823a5d9a extmod/modbluetooth: Add event for "indicate acknowledgement".
This commit adds the IRQ_GATTS_INDICATE_DONE BLE event which will be raised
with the status of gatts_indicate (unlike notify, indications require
acknowledgement).

An example of its use is added to ble_temperature.py, and to the multitests
in ble_characteristic.py.

Implemented for btstack and nimble bindings, tested in both directions
between unix/btstack and pybd/nimble.
2020-07-20 23:26:41 +10:00
Jim Mussared 89a95b7c85 examples/bluetooth: Add simple UART demo with central and peripheral. 2020-07-18 14:34:29 +10:00
Jim Mussared 07aec4681f examples/bluetooth: In ble_advertising.py, skip appearance if not set. 2020-07-18 14:23:20 +10:00
Jim Mussared c6fd6a0d72 examples/bluetooth: Fix event code in ble_temperature_central.py. 2020-06-10 22:39:54 +10:00
jxltom 834b482e67 examples/bluetooth: Fix incorrect value of BR/EDR flag in advertising.
According to Supplement to the Bluetooth Core Specification v8 Part A
1.3.1, to support BR/EDR the code should set the fifth bit (Simultaneous LE
and BR/EDR to Same Device Capable (Controller)) and fourth bit
(Simultaneous LE and BR/EDR to Same Device Capable (Host)) of the flag.
2020-06-05 14:24:09 +10:00
Jim Mussared 1cad63c0bc extmod/modbluetooth: Ensure status=0 always on success.
This commit makes sure that all discovery complete and read/write status
events set the status to zero on success.

The status value will be implementation-dependent on non-success cases.
2020-06-05 14:11:04 +10:00
Jim Mussared c07ea3e4c2 extmod/modbluetooth: Implement read done event.
On btstack there's no status associated with the read result, it comes
through as a separate event.  This allows you to detect read failures or
timeouts.
2020-06-05 14:08:15 +10:00
Jim Mussared 6a3c89d584 extmod/modbluetooth: Add discover complete events for svc/char/desc.
Without this it's difficult to implement a state machine correctly if the
desired services are not found.
2020-06-05 14:07:52 +10:00
Jim Mussared e6881f0829 extmod/modbluetooth: Make modbluetooth event not a bitfield.
There doesn't appear to be any use for only triggering on specific events,
so it's just easier to number them sequentially.  This makes them smaller
values so they take up only 1 byte in the ringbuf, only 1 byte for the
opcode in the bytecode, and makes room for more events.

Also add a couple of new event types that need to be implemented (to avoid
re-numbering later).

And rename _COMPLETE and _STATUS to _DONE for consistency.

In the future the "trigger" keyword argument can be reinstated by requiring
the user to compute the bitmask, eg:

    ble.irq(handler, 1 << _IRQ_SCAN_RESULT | 1 << _IRQ_SCAN_DONE)
2020-06-05 14:04:20 +10:00
Thomas Friebel baf8aa286a examples/bluetooth: Replace "connectable" parameter with "adv_type".
Follow up to dd0bc26e65 which changed the
parameter list of the IRQ_SCAN_RESULT event.  Adapt
ble_temperature_central.py accordingly.
2020-03-12 10:58:08 +11:00
Damien George 69661f3343 all: Reformat C and Python source code with tools/codeformat.py.
This is run with uncrustify 0.70.1, and black 19.10b0.
2020-02-28 10:33:03 +11:00
Damien George 3c58d9a1a5 examples/bluetooth/ble_temperature_central.py: Shorten comment.
So the line length is less than 100 characters.
2020-02-28 10:30:49 +11:00
Jim Mussared 0527baf7fa examples/bluetooth: Add example for reading temperature sensor. 2019-11-25 17:32:10 +11:00
Jim Mussared 3436223630 examples/bluetooth: Add helpers for decoding advertising payloads.
Extracts name and service UUID fields.
2019-11-25 17:32:10 +11:00
Jim Mussared 25946d1ef4 examples/bluetooth/ble_uart_peripheral: Use append mode for RX char. 2019-10-29 23:11:11 +11:00
Jim Mussared 9c5262f25e examples/bluetooth/ble_uart_peripheral.py: Add usage demo. 2019-10-22 14:30:23 +11:00
Jim Mussared 3e1af5b36f examples/bluetooth: Use UUIDs directly to add services to adv payload. 2019-10-22 13:54:09 +11:00
Jim Mussared 25a228af7e examples/bluetooth: Add basic BLE peripheral examples.
Consisting of:
- ble_advertising.py -- helper to generate advertising payload.
- ble_temperature.py -- simple temperature device.
- ble_uart_periperhal.py -- BLE UART wrapper.
- ble_uart_repl.py -- dupterm-compatible uart.
2019-10-18 13:36:51 +11:00