summaryrefslogtreecommitdiff
path: root/supervisor
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2020-09-03 16:34:56 -0700
committerScott Shawcroft <scott@tannewt.org>2020-09-03 16:34:56 -0700
commit96cf60fbbdc26d5ed3274a43ebbaab7feca797e1 (patch)
tree855371ca80ea386e004387ddbd69f372670e9109 /supervisor
parent0b94638aeb667f2a417d859487083241a5749128 (diff)
parent5d17d6402d57a74e20ea332da6a31be65ec0e2ca (diff)
Merge remote-tracking branch 'adafruit/main' into native_wifi
Diffstat (limited to 'supervisor')
-rw-r--r--supervisor/shared/bluetooth.c81
-rw-r--r--supervisor/shared/bluetooth.h5
-rw-r--r--supervisor/shared/display.c8
-rw-r--r--supervisor/shared/tick.c4
-rw-r--r--supervisor/supervisor.mk2
5 files changed, 28 insertions, 72 deletions
diff --git a/supervisor/shared/bluetooth.c b/supervisor/shared/bluetooth.c
index 98d0fab38..56bf32117 100644
--- a/supervisor/shared/bluetooth.c
+++ b/supervisor/shared/bluetooth.c
@@ -24,6 +24,15 @@
* THE SOFTWARE.
*/
+#if !CIRCUITPY_BLE_FILE_SERVICE
+void supervisor_start_bluetooth(void) {
+}
+
+void supervisor_bluetooth_background(void) {
+}
+
+#else
+
#include <string.h>
#include "extmod/vfs.h"
@@ -41,6 +50,8 @@
#include "py/mpstate.h"
+
+
bleio_service_obj_t supervisor_ble_service;
bleio_uuid_obj_t supervisor_ble_service_uuid;
bleio_characteristic_obj_t supervisor_ble_version_characteristic;
@@ -63,10 +74,7 @@ mp_obj_t service_list_items[1];
mp_obj_list_t characteristic_list;
mp_obj_t characteristic_list_items[4];
-void supervisor_bluetooth_start_advertising(void) {
- #if !CIRCUITPY_BLE_FILE_SERVICE
- return;
- #endif
+STATIC void supervisor_bluetooth_start_advertising(void) {
bool is_connected = common_hal_bleio_adapter_get_connected(&common_hal_bleio_adapter_obj);
if (is_connected) {
return;
@@ -83,10 +91,6 @@ void supervisor_bluetooth_start_advertising(void) {
}
void supervisor_start_bluetooth(void) {
- #if !CIRCUITPY_BLE_FILE_SERVICE
- return;
- #endif
-
common_hal_bleio_adapter_set_enabled(&common_hal_bleio_adapter_obj, true);
supervisor_ble_service_uuid.base.type = &bleio_uuid_type;
@@ -177,7 +181,7 @@ volatile bool new_filename;
volatile bool run_ble_background;
bool was_connected;
-void update_file_length(void) {
+STATIC void update_file_length(void) {
int32_t file_length = -1;
mp_buffer_info_t bufinfo;
bufinfo.buf = &file_length;
@@ -188,7 +192,7 @@ void update_file_length(void) {
common_hal_bleio_characteristic_set_value(&supervisor_ble_length_characteristic, &bufinfo);
}
-void open_current_file(void) {
+STATIC void open_current_file(void) {
if (active_file.obj.fs != 0) {
return;
}
@@ -203,7 +207,7 @@ void open_current_file(void) {
update_file_length();
}
-void close_current_file(void) {
+STATIC void close_current_file(void) {
f_close(&active_file);
}
@@ -211,9 +215,6 @@ uint32_t current_command[1024 / sizeof(uint32_t)];
volatile size_t current_offset;
void supervisor_bluetooth_background(void) {
- #if !CIRCUITPY_BLE_FILE_SERVICE
- return;
- #endif
if (!run_ble_background) {
return;
}
@@ -305,54 +306,4 @@ void supervisor_bluetooth_background(void) {
}
}
-// This happens in an interrupt so we need to be quick.
-bool supervisor_bluetooth_hook(ble_evt_t *ble_evt) {
- #if !CIRCUITPY_BLE_FILE_SERVICE
- return false;
- #endif
- // Catch writes to filename or contents. Length is read-only.
-
- bool done = false;
- switch (ble_evt->header.evt_id) {
- case BLE_GAP_EVT_CONNECTED:
- // We run our background task even if it wasn't us connected to because we may want to
- // advertise if the user code stopped advertising.
- run_ble_background = true;
- break;
- case BLE_GAP_EVT_DISCONNECTED:
- run_ble_background = true;
- break;
- case BLE_GATTS_EVT_WRITE: {
- // A client wrote to a characteristic.
-
- ble_gatts_evt_write_t *evt_write = &ble_evt->evt.gatts_evt.params.write;
- // Event handle must match the handle for my characteristic.
- if (evt_write->handle == supervisor_ble_contents_characteristic.handle) {
- // Handle events
- //write_to_ringbuf(self, evt_write->data, evt_write->len);
- // First packet includes a uint16_t le for length at the start.
- uint16_t current_length = ((uint16_t*) current_command)[0];
- memcpy(((uint8_t*) current_command) + current_offset, evt_write->data, evt_write->len);
- current_offset += evt_write->len;
- current_length = ((uint16_t*) current_command)[0];
- if (current_offset == current_length) {
- run_ble_background = true;
- done = true;
- }
- } else if (evt_write->handle == supervisor_ble_filename_characteristic.handle) {
- new_filename = true;
- run_ble_background = true;
- done = true;
- } else {
- return done;
- }
- break;
- }
-
- default:
- // For debugging.
- // mp_printf(&mp_plat_print, "Unhandled peripheral event: 0x%04x\n", ble_evt->header.evt_id);
- break;
- }
- return done;
-}
+#endif // #else
diff --git a/supervisor/shared/bluetooth.h b/supervisor/shared/bluetooth.h
index 1fb6a879a..55f9c86fa 100644
--- a/supervisor/shared/bluetooth.h
+++ b/supervisor/shared/bluetooth.h
@@ -27,8 +27,7 @@
#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_H
#define MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_H
-void supervisor_start_bluetooth(void);
-bool supervisor_bluetooth_hook(ble_evt_t *ble_evt);
void supervisor_bluetooth_background(void);
+void supervisor_start_bluetooth(void);
-#endif
+#endif // MICROPY_INCLUDED_SUPERVISOR_SHARED_BLUETOOTH_H
diff --git a/supervisor/shared/display.c b/supervisor/shared/display.c
index 634720d0a..afb3f3a9a 100644
--- a/supervisor/shared/display.c
+++ b/supervisor/shared/display.c
@@ -65,10 +65,14 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) {
if (width_in_tiles < 80) {
scale = 1;
}
+
width_in_tiles = (width_px - blinka_bitmap.width * scale) / (grid->tile_width * scale);
+ if (width_in_tiles < 1) {
+ width_in_tiles = 1;
+ }
uint16_t height_in_tiles = height_px / (grid->tile_height * scale);
uint16_t remaining_pixels = height_px % (grid->tile_height * scale);
- if (remaining_pixels > 0) {
+ if (height_in_tiles < 1 || remaining_pixels > 0) {
height_in_tiles += 1;
}
@@ -94,6 +98,8 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) {
}
grid->width_in_tiles = width_in_tiles;
grid->height_in_tiles = height_in_tiles;
+ assert(width_in_tiles > 0);
+ assert(height_in_tiles > 0);
grid->pixel_width = width_in_tiles * grid->tile_width;
grid->pixel_height = height_in_tiles * grid->tile_height;
grid->tiles = tiles;
diff --git a/supervisor/shared/tick.c b/supervisor/shared/tick.c
index f26e1e79d..91ffa307d 100644
--- a/supervisor/shared/tick.c
+++ b/supervisor/shared/tick.c
@@ -37,7 +37,7 @@
#if CIRCUITPY_BLEIO
#include "supervisor/shared/bluetooth.h"
-#include "common-hal/_bleio/bonding.h"
+#include "common-hal/_bleio/__init__.h"
#endif
#if CIRCUITPY_DISPLAYIO
@@ -87,7 +87,7 @@ void supervisor_background_tasks(void *unused) {
#if CIRCUITPY_BLEIO
supervisor_bluetooth_background();
- bonding_background();
+ bleio_background();
#endif
port_background_task();
diff --git a/supervisor/supervisor.mk b/supervisor/supervisor.mk
index c876a11cc..e81c51a88 100644
--- a/supervisor/supervisor.mk
+++ b/supervisor/supervisor.mk
@@ -34,7 +34,7 @@ endif
CFLAGS += -DSPI_FLASH_FILESYSTEM=$(SPI_FLASH_FILESYSTEM)
ifeq ($(CIRCUITPY_BLEIO),1)
- SRC_SUPERVISOR += supervisor/shared/bluetooth.c
+ SRC_SUPERVISOR += supervisor/shared/bluetooth.c supervisor/bluetooth.c
endif
# Choose which flash filesystem impl to use.