- 20 Nov, 2023 2 commits
-
-
Laurens Valk authored
Nothing happens still, but at least you can run your program to test and debug other portions of the code that do not rely on Bluetooth. Also update the matching notes in the BLE module and remove City Hub limitations which have been fixed.
-
-
- 16 Nov, 2023 6 commits
-
-
Laurens Valk authored
MicroPython tests can run for only 10 seconds.
-
Laurens Valk authored
Make them work for current version of the drive base. Remove prints since values are nondeterministic. Use same ports as virtual hub.
-
JDwyer009 authored
-
Laurens Valk authored
The broadcast arg has been deprecated and is now the default.
-
Laurens Valk authored
Fix port to avoid conflict with Pybricks Code. Also fix image folder not existing.
-
Laurens Valk authored
-
- 12 Nov, 2023 2 commits
-
-
David Lechner authored
Add some const-correctness to observed_data_t in a few places.
-
David Lechner authored
In the `ble` module, we maintain a copy of observed advertisement data that is updated during servicing of PBIO (contiki) events. These events can be triggered any time the GC is invoked, e.g. during allocation of memory for MicroPython objects. In pb_module_ble_observe(), we were iterating over the observed data and allocating new MicroPython objects for each item which could trigger PBIO events to be run resulting in the observed data being modified while we are still iterating over it. This could result in a crash, the most likely of which is raising an exception for an invalid data type. We can avoid this by making a copy of the data before iterating over it. Fixes: https://github.com/pybricks/support/issues/1278
-
- 04 Nov, 2023 4 commits
-
-
David Lechner authored
This finishes up the REVISIT comment in start_broadcasting_task() to actually wait for the set advertising data command to complete before the task completes. This fixes issues with calling the task too fast while the commands from the previous call are still pending. The timer was used to work around the issue but is no longer needed. Fixes: https://github.com/pybricks/support/issues/1151
-
David Lechner authored
When broadcasting, the advertising parameters dont' change, so we only need to set them once when we start broadcasting. This is done by moving the code inside the if statement along with the enable function.
-
David Lechner authored
This changes the GAP discoverable parameters to limit connecting to devices in a whitelist. Normally, when broadcasting, the hub should not be connectable, but due to some quirks of the Bluetooth chip, ADV_NONCONN_IND doesn't work under all circumstances and we have to use ADV_IND which makes the device connectable. If another device connects while broadcasting, it currently causes things to lock up. However, we can prevent devices from connecting in the first place by enabling the whitelist (which is empty).
-
David Lechner authored
This changes the command to update advertising data on the Bluetooth chip in the broadcast task to use HCI_LE_setAdvertisingData() instead of GAP_updateAdvertisingData(). It appears there is some sort of memory leak or some such on the Bluetooth chip that causes it to lock up if we call the vendor-specific GAP_updateAdvertisingData() too many times. It appears that we can work around this by calling the standard Bluetooth command HCI_LE_setAdvertisingData() instead. GAP_updateAdvertisingData() would result in two events being sent back from the Bluetooth chip, a status event and a command complete event. With HCI_LE_setAdvertisingData() we only get a command complete event back - with the TI vendor-specific opcode as if we had called GAP_updateAdvertisingData(). Fixes: https://github.com/pybricks/support/issues/1095
-
- 29 Oct, 2023 3 commits
-
-
David Lechner authored
Since efda5d02 ("drv/bluetooth_stm32_bluenrg: strict ordering of BLE tasks"), it is no longer safe to call pbio_task_run_once() anywhere but in the main contiki process loop of Bluetooth drivers. This could break canceling some Bluetooth operations (causing them to hang), but this will need to be fixed in a different way. A FIXME comment with some suggestions is added to remind us to fix this.
-
David Lechner authored
This reverts commit a50ff187. The Bluetooth drivers have task queues that prevent more than 1 task from running concurrently. The reverted change broke this safety mechanism by pumping tasks from MicroPython causing multiple tasks to run at the same time, overwhelming the Bluetooth chip.
-
David Lechner authored
We were always reading/writing 3 extra bytes because we weren't taking into account the 3 extra bytes already sent for the header. Also, real_write_xfer_size is unsigned and can be zero, so we should not be subtracting from it. Also, also, add some comments to clarify where the FCS (checksum) byte comes into play.
-
- 28 Oct, 2023 1 commit
-
-
Laurens Valk authored
The Move Hub cannot have true vector axes, but we can still use this API to initialize the hub using numeric indices. This ensures we can use the custom orientation not just in tilt, but also in acceleration like we do on other hubs.
-
- 27 Oct, 2023 2 commits
-
-
Laurens Valk authored
-
Laurens Valk authored
This object does not have an attribute handler, causing any imu read operation to crash the hub. Fixes https://github.com/pybricks/support/issues/1269
-
- 26 Oct, 2023 7 commits
-
-
Laurens Valk authored
-
Laurens Valk authored
-
Laurens Valk authored
Fixes https://github.com/pybricks/support/issues/1162
-
Laurens Valk authored
Fixes https://github.com/pybricks/support/issues/881
-
Laurens Valk authored
Fixes https://github.com/pybricks/support/issues/1151
-
Laurens Valk authored
Previously, tasks were only driven by Bluetooth events so timers would not work correctly.
-
Laurens Valk authored
-
- 24 Oct, 2023 4 commits
-
-
Laurens Valk authored
This is more consistent with the rest of our API where collections are returned.
-
Laurens Valk authored
Since None is used to indicate no data, it is more intuitive avoid it as a data type. This will also allow us implement it such that broadcast(None) stops broadcasting, equivalent to reading None in observe. This is marked as a TODO for future implementation.
-
Laurens Valk authored
This makes it simple to send and receive single values. It is also necessary for an upcoming non-Python implementation.
-
Laurens Valk authored
This ensures the same object is sent and received.
-
- 23 Oct, 2023 7 commits
-
-
Laurens Valk authored
Fixes https://github.com/pybricks/support/issues/1213
-
Laurens Valk authored
This was putting the sensor in the wrong mode. Fixes https://github.com/pybricks/support/issues/1232
-
Laurens Valk authored
This was called before the drivebase could be used, and the error was not returned. Fixes 3ae1fb89 (which was unreleased).
-
Laurens Valk authored
Keep singular for backwards compatibility. Fixes https://github.com/pybricks/support/issues/1254
-
Laurens Valk authored
-
Laurens Valk authored
Also ensure we pick the proper sign for v in radial computations.
-
Laurens Valk authored
With the newly introduced color cost function, any measured value less than 50 results in Color.NONE, which makes it the predominant result. This reduces the distance range for the default colors. Instead of adjusting all colors (which are also used to emit colors), we can make the value of Color.NONE negative to achieve a similar result.
-
- 20 Oct, 2023 2 commits
-
-
Laurens Valk authored
The newly introduced color cost function intrinsically deals with low s and v, so we don't need to artificially suppress them here.
-
Johannes Ringler authored
This new distance function estimates the similarity of two hsv colors by calculating their euclidean distance when mapped into a Hue-Chroma-Lightness bicone. This is much more robust for realistic colors, especially when low saturation or low value is involved.
-