summaryrefslogtreecommitdiff
path: root/supervisor/shared
diff options
context:
space:
mode:
authorScott Shawcroft <scott@tannewt.org>2020-08-17 17:17:59 -0700
committerScott Shawcroft <scott@tannewt.org>2020-08-17 17:17:59 -0700
commitd01f5dc0bdb3ea98d4cf234b7c08c8cc36694c1a (patch)
treeec91082986c0b963dd7fb88bae1de4c8c5498862 /supervisor/shared
parentabfe718f46673323db6b175886d2be969cd973a7 (diff)
Turn off terminalio for ja and ko
The font is missing many characters and the build needs the space. We can optimize font storage when we get a good font. The serial output will work as usual.
Diffstat (limited to 'supervisor/shared')
-rw-r--r--supervisor/shared/display.c60
-rw-r--r--supervisor/shared/display.h6
-rw-r--r--supervisor/shared/serial.c2
3 files changed, 48 insertions, 20 deletions
diff --git a/supervisor/shared/display.c b/supervisor/shared/display.c
index 08dd71404..634720d0a 100644
--- a/supervisor/shared/display.c
+++ b/supervisor/shared/display.c
@@ -29,6 +29,7 @@
#include <string.h>
#include "py/mpstate.h"
+#include "shared-bindings/displayio/Bitmap.h"
#include "shared-bindings/displayio/Group.h"
#include "shared-bindings/displayio/Palette.h"
#include "shared-bindings/displayio/TileGrid.h"
@@ -48,15 +49,21 @@ extern size_t blinka_bitmap_data[];
extern displayio_bitmap_t blinka_bitmap;
extern displayio_group_t circuitpython_splash;
+#if CIRCUITPY_TERMINALIO
static supervisor_allocation* tilegrid_tiles = NULL;
+#endif
void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) {
+ // Default the scale to 2 because we may show blinka without the terminal for
+ // languages that don't have font support.
+ uint8_t scale = 2;
+
+ #if CIRCUITPY_TERMINALIO
displayio_tilegrid_t* grid = &supervisor_terminal_text_grid;
uint16_t width_in_tiles = (width_px - blinka_bitmap.width) / grid->tile_width;
// determine scale based on h
- uint8_t scale = 1;
- if (width_in_tiles > 80) {
- scale = 2;
+ if (width_in_tiles < 80) {
+ scale = 1;
}
width_in_tiles = (width_px - blinka_bitmap.width * scale) / (grid->tile_width * scale);
uint16_t height_in_tiles = height_px / (grid->tile_height * scale);
@@ -64,7 +71,6 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) {
if (remaining_pixels > 0) {
height_in_tiles += 1;
}
- circuitpython_splash.scale = scale;
uint16_t total_tiles = width_in_tiles * height_in_tiles;
@@ -94,34 +100,42 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) {
grid->full_change = true;
common_hal_terminalio_terminal_construct(&supervisor_terminal, grid, &supervisor_terminal_font);
+ #endif
+
+ circuitpython_splash.scale = scale;
}
void supervisor_stop_terminal(void) {
+ #if CIRCUITPY_TERMINALIO
if (tilegrid_tiles != NULL) {
free_memory(tilegrid_tiles);
tilegrid_tiles = NULL;
supervisor_terminal_text_grid.inline_tiles = false;
supervisor_terminal_text_grid.tiles = NULL;
}
+ #endif
}
void supervisor_display_move_memory(void) {
- #if CIRCUITPY_DISPLAYIO
+ #if CIRCUITPY_TERMINALIO
displayio_tilegrid_t* grid = &supervisor_terminal_text_grid;
- if (MP_STATE_VM(terminal_tilegrid_tiles) == NULL || grid->tiles != MP_STATE_VM(terminal_tilegrid_tiles)) {
- return;
- }
- uint16_t total_tiles = grid->width_in_tiles * grid->height_in_tiles;
+ if (MP_STATE_VM(terminal_tilegrid_tiles) != NULL &&
+ grid->tiles == MP_STATE_VM(terminal_tilegrid_tiles)) {
+ uint16_t total_tiles = grid->width_in_tiles * grid->height_in_tiles;
- tilegrid_tiles = allocate_memory(align32_size(total_tiles), false);
- if (tilegrid_tiles != NULL) {
- memcpy(tilegrid_tiles->ptr, grid->tiles, total_tiles);
- grid->tiles = (uint8_t*) tilegrid_tiles->ptr;
- } else {
- grid->tiles = NULL;
- grid->inline_tiles = false;
+ tilegrid_tiles = allocate_memory(align32_size(total_tiles), false);
+ if (tilegrid_tiles != NULL) {
+ memcpy(tilegrid_tiles->ptr, grid->tiles, total_tiles);
+ grid->tiles = (uint8_t*) tilegrid_tiles->ptr;
+ } else {
+ grid->tiles = NULL;
+ grid->inline_tiles = false;
+ }
+ MP_STATE_VM(terminal_tilegrid_tiles) = NULL;
}
- MP_STATE_VM(terminal_tilegrid_tiles) = NULL;
+ #endif
+
+ #if CIRCUITPY_DISPLAYIO
for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) {
#if CIRCUITPY_RGBMATRIX
if (displays[i].rgbmatrix.base.type == &rgbmatrix_RGBMatrix_type) {
@@ -254,18 +268,26 @@ displayio_tilegrid_t blinka_sprite = {
.in_group = true
};
+#if CIRCUITPY_TERMINALIO
+#define CHILD_COUNT 2
displayio_group_child_t splash_children[2] = {
{&blinka_sprite, &blinka_sprite},
{&supervisor_terminal_text_grid, &supervisor_terminal_text_grid}
};
+#else
+#define CHILD_COUNT 1
+displayio_group_child_t splash_children[1] = {
+ {&blinka_sprite, &blinka_sprite},
+};
+#endif
displayio_group_t circuitpython_splash = {
.base = {.type = &displayio_group_type },
.x = 0,
.y = 0,
.scale = 2,
- .size = 2,
- .max_size = 2,
+ .size = CHILD_COUNT,
+ .max_size = CHILD_COUNT,
.children = splash_children,
.item_removed = false,
.in_group = false,
diff --git a/supervisor/shared/display.h b/supervisor/shared/display.h
index 2a2ccf46d..4110cfe8e 100644
--- a/supervisor/shared/display.h
+++ b/supervisor/shared/display.h
@@ -27,6 +27,10 @@
#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_DISPLAY_H
#define MICROPY_INCLUDED_SUPERVISOR_SHARED_DISPLAY_H
+#include <stdint.h>
+
+#if CIRCUITPY_TERMINALIO
+
#include "shared-bindings/displayio/Bitmap.h"
#include "shared-bindings/displayio/TileGrid.h"
#include "shared-bindings/fontio/BuiltinFont.h"
@@ -42,6 +46,8 @@ extern displayio_bitmap_t supervisor_terminal_font_bitmap;
extern displayio_tilegrid_t supervisor_terminal_text_grid;
extern terminalio_terminal_obj_t supervisor_terminal;
+#endif
+
void supervisor_start_terminal(uint16_t width_px, uint16_t height_px);
void supervisor_stop_terminal(void);
diff --git a/supervisor/shared/serial.c b/supervisor/shared/serial.c
index 8eb78a90e..303f89e75 100644
--- a/supervisor/shared/serial.c
+++ b/supervisor/shared/serial.c
@@ -99,7 +99,7 @@ void serial_write_substring(const char* text, uint32_t length) {
if (length == 0) {
return;
}
-#if CIRCUITPY_DISPLAYIO
+#if CIRCUITPY_TERMINALIO
int errcode;
common_hal_terminalio_terminal_write(&supervisor_terminal, (const uint8_t*) text, length, &errcode);
#endif