Skip to content

Commit d01f5dc

Browse files
committed
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.
1 parent abfe718 commit d01f5dc

File tree

8 files changed

+75
-25
lines changed

8 files changed

+75
-25
lines changed

ports/atmel-samd/mpconfigport.mk

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,16 @@ USB_MSC_EP_NUM_OUT = 1
4747

4848
CIRCUITPY_ULAB = 0
4949

50+
ifeq ($(TRANSLATION), ja)
51+
RELEASE_NEEDS_CLEAN_BUILD = 1
52+
CIRCUITPY_TERMINALIO = 0
53+
endif
54+
55+
ifeq ($(TRANSLATION), ko)
56+
RELEASE_NEEDS_CLEAN_BUILD = 1
57+
CIRCUITPY_TERMINALIO = 0
58+
endif
59+
5060
endif # samd21
5161

5262
# Put samd51-only choices here.

py/circuitpy_defns.mk

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ ifeq ($(CIRCUITPY_DIGITALIO),1)
145145
SRC_PATTERNS += digitalio/%
146146
endif
147147
ifeq ($(CIRCUITPY_DISPLAYIO),1)
148-
SRC_PATTERNS += displayio/% terminalio/% fontio/%
148+
SRC_PATTERNS += displayio/%
149149
endif
150150
ifeq ($(CIRCUITPY_VECTORIO),1)
151151
SRC_PATTERNS += vectorio/%
@@ -237,6 +237,9 @@ endif
237237
ifeq ($(CIRCUITPY_SUPERVISOR),1)
238238
SRC_PATTERNS += supervisor/%
239239
endif
240+
ifeq ($(CIRCUITPY_TERMINALIO),1)
241+
SRC_PATTERNS += terminalio/% fontio/%
242+
endif
240243
ifeq ($(CIRCUITPY_TIME),1)
241244
SRC_PATTERNS += time/%
242245
endif

py/circuitpy_mpconfig.h

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -347,16 +347,20 @@ extern const struct _mp_obj_module_t displayio_module;
347347
extern const struct _mp_obj_module_t fontio_module;
348348
extern const struct _mp_obj_module_t terminalio_module;
349349
#define DISPLAYIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_displayio), (mp_obj_t)&displayio_module },
350-
#define FONTIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_fontio), (mp_obj_t)&fontio_module },
351-
#define TERMINALIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_terminalio), (mp_obj_t)&terminalio_module },
352350
#ifndef CIRCUITPY_DISPLAY_LIMIT
353351
#define CIRCUITPY_DISPLAY_LIMIT (1)
354352
#endif
355353
#else
356354
#define DISPLAYIO_MODULE
355+
#define CIRCUITPY_DISPLAY_LIMIT (0)
356+
#endif
357+
358+
#if CIRCUITPY_DISPLAYIO && CIRCUITPY_TERMINALIO
359+
#define FONTIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_fontio), (mp_obj_t)&fontio_module },
360+
#define TERMINALIO_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_terminalio), (mp_obj_t)&terminalio_module },
361+
#else
357362
#define FONTIO_MODULE
358363
#define TERMINALIO_MODULE
359-
#define CIRCUITPY_DISPLAY_LIMIT (0)
360364
#endif
361365

362366
#if CIRCUITPY_FRAMEBUFFERIO

py/circuitpy_mpconfig.mk

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,9 @@ CFLAGS += -DCIRCUITPY_STRUCT=$(CIRCUITPY_STRUCT)
195195
CIRCUITPY_SUPERVISOR ?= 1
196196
CFLAGS += -DCIRCUITPY_SUPERVISOR=$(CIRCUITPY_SUPERVISOR)
197197

198+
CIRCUITPY_TERMINALIO ?= $(CIRCUITPY_DISPLAYIO)
199+
CFLAGS += -DCIRCUITPY_TERMINALIO=$(CIRCUITPY_TERMINALIO)
200+
198201
CIRCUITPY_TIME ?= 1
199202
CFLAGS += -DCIRCUITPY_TIME=$(CIRCUITPY_TIME)
200203

supervisor/shared/display.c

Lines changed: 41 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
#include <string.h>
3030

3131
#include "py/mpstate.h"
32+
#include "shared-bindings/displayio/Bitmap.h"
3233
#include "shared-bindings/displayio/Group.h"
3334
#include "shared-bindings/displayio/Palette.h"
3435
#include "shared-bindings/displayio/TileGrid.h"
@@ -48,23 +49,28 @@ extern size_t blinka_bitmap_data[];
4849
extern displayio_bitmap_t blinka_bitmap;
4950
extern displayio_group_t circuitpython_splash;
5051

52+
#if CIRCUITPY_TERMINALIO
5153
static supervisor_allocation* tilegrid_tiles = NULL;
54+
#endif
5255

5356
void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) {
57+
// Default the scale to 2 because we may show blinka without the terminal for
58+
// languages that don't have font support.
59+
uint8_t scale = 2;
60+
61+
#if CIRCUITPY_TERMINALIO
5462
displayio_tilegrid_t* grid = &supervisor_terminal_text_grid;
5563
uint16_t width_in_tiles = (width_px - blinka_bitmap.width) / grid->tile_width;
5664
// determine scale based on h
57-
uint8_t scale = 1;
58-
if (width_in_tiles > 80) {
59-
scale = 2;
65+
if (width_in_tiles < 80) {
66+
scale = 1;
6067
}
6168
width_in_tiles = (width_px - blinka_bitmap.width * scale) / (grid->tile_width * scale);
6269
uint16_t height_in_tiles = height_px / (grid->tile_height * scale);
6370
uint16_t remaining_pixels = height_px % (grid->tile_height * scale);
6471
if (remaining_pixels > 0) {
6572
height_in_tiles += 1;
6673
}
67-
circuitpython_splash.scale = scale;
6874

6975
uint16_t total_tiles = width_in_tiles * height_in_tiles;
7076

@@ -94,34 +100,42 @@ void supervisor_start_terminal(uint16_t width_px, uint16_t height_px) {
94100
grid->full_change = true;
95101

96102
common_hal_terminalio_terminal_construct(&supervisor_terminal, grid, &supervisor_terminal_font);
103+
#endif
104+
105+
circuitpython_splash.scale = scale;
97106
}
98107

99108
void supervisor_stop_terminal(void) {
109+
#if CIRCUITPY_TERMINALIO
100110
if (tilegrid_tiles != NULL) {
101111
free_memory(tilegrid_tiles);
102112
tilegrid_tiles = NULL;
103113
supervisor_terminal_text_grid.inline_tiles = false;
104114
supervisor_terminal_text_grid.tiles = NULL;
105115
}
116+
#endif
106117
}
107118

108119
void supervisor_display_move_memory(void) {
109-
#if CIRCUITPY_DISPLAYIO
120+
#if CIRCUITPY_TERMINALIO
110121
displayio_tilegrid_t* grid = &supervisor_terminal_text_grid;
111-
if (MP_STATE_VM(terminal_tilegrid_tiles) == NULL || grid->tiles != MP_STATE_VM(terminal_tilegrid_tiles)) {
112-
return;
113-
}
114-
uint16_t total_tiles = grid->width_in_tiles * grid->height_in_tiles;
122+
if (MP_STATE_VM(terminal_tilegrid_tiles) != NULL &&
123+
grid->tiles == MP_STATE_VM(terminal_tilegrid_tiles)) {
124+
uint16_t total_tiles = grid->width_in_tiles * grid->height_in_tiles;
115125

116-
tilegrid_tiles = allocate_memory(align32_size(total_tiles), false);
117-
if (tilegrid_tiles != NULL) {
118-
memcpy(tilegrid_tiles->ptr, grid->tiles, total_tiles);
119-
grid->tiles = (uint8_t*) tilegrid_tiles->ptr;
120-
} else {
121-
grid->tiles = NULL;
122-
grid->inline_tiles = false;
126+
tilegrid_tiles = allocate_memory(align32_size(total_tiles), false);
127+
if (tilegrid_tiles != NULL) {
128+
memcpy(tilegrid_tiles->ptr, grid->tiles, total_tiles);
129+
grid->tiles = (uint8_t*) tilegrid_tiles->ptr;
130+
} else {
131+
grid->tiles = NULL;
132+
grid->inline_tiles = false;
133+
}
134+
MP_STATE_VM(terminal_tilegrid_tiles) = NULL;
123135
}
124-
MP_STATE_VM(terminal_tilegrid_tiles) = NULL;
136+
#endif
137+
138+
#if CIRCUITPY_DISPLAYIO
125139
for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) {
126140
#if CIRCUITPY_RGBMATRIX
127141
if (displays[i].rgbmatrix.base.type == &rgbmatrix_RGBMatrix_type) {
@@ -254,18 +268,26 @@ displayio_tilegrid_t blinka_sprite = {
254268
.in_group = true
255269
};
256270

271+
#if CIRCUITPY_TERMINALIO
272+
#define CHILD_COUNT 2
257273
displayio_group_child_t splash_children[2] = {
258274
{&blinka_sprite, &blinka_sprite},
259275
{&supervisor_terminal_text_grid, &supervisor_terminal_text_grid}
260276
};
277+
#else
278+
#define CHILD_COUNT 1
279+
displayio_group_child_t splash_children[1] = {
280+
{&blinka_sprite, &blinka_sprite},
281+
};
282+
#endif
261283

262284
displayio_group_t circuitpython_splash = {
263285
.base = {.type = &displayio_group_type },
264286
.x = 0,
265287
.y = 0,
266288
.scale = 2,
267-
.size = 2,
268-
.max_size = 2,
289+
.size = CHILD_COUNT,
290+
.max_size = CHILD_COUNT,
269291
.children = splash_children,
270292
.item_removed = false,
271293
.in_group = false,

supervisor/shared/display.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,10 @@
2727
#ifndef MICROPY_INCLUDED_SUPERVISOR_SHARED_DISPLAY_H
2828
#define MICROPY_INCLUDED_SUPERVISOR_SHARED_DISPLAY_H
2929

30+
#include <stdint.h>
31+
32+
#if CIRCUITPY_TERMINALIO
33+
3034
#include "shared-bindings/displayio/Bitmap.h"
3135
#include "shared-bindings/displayio/TileGrid.h"
3236
#include "shared-bindings/fontio/BuiltinFont.h"
@@ -42,6 +46,8 @@ extern displayio_bitmap_t supervisor_terminal_font_bitmap;
4246
extern displayio_tilegrid_t supervisor_terminal_text_grid;
4347
extern terminalio_terminal_obj_t supervisor_terminal;
4448

49+
#endif
50+
4551
void supervisor_start_terminal(uint16_t width_px, uint16_t height_px);
4652
void supervisor_stop_terminal(void);
4753

supervisor/shared/serial.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ void serial_write_substring(const char* text, uint32_t length) {
9999
if (length == 0) {
100100
return;
101101
}
102-
#if CIRCUITPY_DISPLAYIO
102+
#if CIRCUITPY_TERMINALIO
103103
int errcode;
104104
common_hal_terminalio_terminal_write(&supervisor_terminal, (const uint8_t*) text, length, &errcode);
105105
#endif

supervisor/supervisor.mk

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,9 @@ ifeq ($(CIRCUITPY_DISPLAYIO), 1)
110110
SRC_SUPERVISOR += \
111111
supervisor/shared/display.c
112112

113-
SUPERVISOR_O += $(BUILD)/autogen_display_resources.o
113+
ifeq ($(CIRCUITPY_TERMINALIO), 1)
114+
SUPERVISOR_O += $(BUILD)/autogen_display_resources.o
115+
endif
114116
endif
115117
ifndef USB_INTERFACE_NAME
116118
USB_INTERFACE_NAME = "CircuitPython"

0 commit comments

Comments
 (0)