RGBMatrix: finish renaming from Protomatter
This gets all the purely internal references. Some uses of protomatter/Protomatter/PROTOMATTER remain, as they are references to symbols in the Protomatter C library itself.
This commit is contained in:
parent
1b478bbae6
commit
5fcc6d6286
@ -14,7 +14,7 @@ CIRCUITPY_AUDIOBUSIO = 0
|
||||
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||
CIRCUITPY_DISPLAYIO = 0
|
||||
CIRCUITPY_NETWORK = 0
|
||||
CIRCUITPY_PROTOMATTER = 0
|
||||
CIRCUITPY_RGBMATRIX = 0
|
||||
CIRCUITPY_PS2IO = 0
|
||||
CIRCUITPY_AUDIOMP3 = 0
|
||||
|
||||
|
@ -17,7 +17,7 @@ CIRCUITPY_AUDIOBUSIO = 0
|
||||
CIRCUITPY_DISPLAYIO = 0
|
||||
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||
CIRCUITPY_GAMEPAD = 0
|
||||
CIRCUITPY_PROTOMATTER = 0
|
||||
CIRCUITPY_RGBMATRIX = 0
|
||||
CIRCUITPY_PS2IO = 0
|
||||
|
||||
FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
||||
|
@ -19,7 +19,7 @@ CIRCUITPY_AUDIOBUSIO = 0
|
||||
CIRCUITPY_DISPLAYIO = 0
|
||||
CIRCUITPY_FRAMEBUFFERIO = 0
|
||||
CIRCUITPY_FREQUENCYIO = 0
|
||||
CIRCUITPY_PROTOMATTER = 0
|
||||
CIRCUITPY_RGBMATRIX = 0
|
||||
|
||||
# Include these Python libraries in firmware.
|
||||
#FROZEN_MPY_DIRS += $(TOP)/frozen/Adafruit_CircuitPython_BusDevice
|
||||
|
@ -28,7 +28,7 @@ CIRCUITPY_GAMEPAD = 0
|
||||
CIRCUITPY_I2CSLAVE = 0
|
||||
CIRCUITPY_NETWORK = 0
|
||||
CIRCUITPY_TOUCHIO = 0
|
||||
CIRCUITPY_PROTOMATTER = 0
|
||||
CIRCUITPY_RGBMATRIX = 0
|
||||
CIRCUITPY_PS2IO = 0
|
||||
CIRCUITPY_USB_HID = 0
|
||||
CIRCUITPY_RTC = 0
|
||||
|
@ -26,7 +26,7 @@ CIRCUITPY_GAMEPAD = 0
|
||||
CIRCUITPY_I2CSLAVE = 0
|
||||
CIRCUITPY_NETWORK = 0
|
||||
CIRCUITPY_TOUCHIO = 0
|
||||
CIRCUITPY_PROTOMATTER = 0
|
||||
CIRCUITPY_RGBMATRIX = 0
|
||||
CIRCUITPY_PS2IO = 0
|
||||
CIRCUITPY_USB_HID = 0
|
||||
|
||||
|
@ -31,7 +31,7 @@
|
||||
#include "samd/timers.h"
|
||||
#include "timer_handler.h"
|
||||
|
||||
void *common_hal_protomatter_timer_allocate() {
|
||||
void *common_hal_rgbmatrix_timer_allocate() {
|
||||
uint8_t timer_index = find_free_timer();
|
||||
if (timer_index == 0xff) {
|
||||
return NULL;
|
||||
@ -49,16 +49,16 @@ static uint8_t tc_index_from_ptr(void* ptr) {
|
||||
return 0xff;
|
||||
}
|
||||
|
||||
void common_hal_protomatter_timer_enable(void* ptr) {
|
||||
void common_hal_rgbmatrix_timer_enable(void* ptr) {
|
||||
uint8_t timer_index = tc_index_from_ptr(ptr);
|
||||
if (timer_index == 0xff) {
|
||||
return;
|
||||
}
|
||||
set_timer_handler(true, timer_index, TC_HANDLER_PROTOMATTER);
|
||||
set_timer_handler(true, timer_index, TC_HANDLER_RGBMATRIX);
|
||||
turn_on_clocks(true, timer_index, 1);
|
||||
}
|
||||
|
||||
void common_hal_protomatter_timer_disable(void* ptr) {
|
||||
void common_hal_rgbmatrix_timer_disable(void* ptr) {
|
||||
uint8_t timer_index = tc_index_from_ptr(ptr);
|
||||
if (timer_index == 0xff) {
|
||||
return;
|
||||
@ -67,7 +67,7 @@ void common_hal_protomatter_timer_disable(void* ptr) {
|
||||
tc_set_enable(ptr, false);
|
||||
}
|
||||
|
||||
void common_hal_protomatter_timer_free(void* ptr) {
|
||||
void common_hal_rgbmatrix_timer_free(void* ptr) {
|
||||
uint8_t timer_index = tc_index_from_ptr(ptr);
|
||||
if (timer_index == 0xff) {
|
||||
return;
|
||||
|
@ -24,12 +24,12 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PROTOMATTER_PROTOMATTER_H
|
||||
#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PROTOMATTER_PROTOMATTER_H
|
||||
#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H
|
||||
#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H
|
||||
|
||||
void *common_hal_protomatter_timer_allocate(void);
|
||||
void common_hal_protomatter_timer_enable(void*);
|
||||
void common_hal_protomatter_timer_disable(void*);
|
||||
void common_hal_protomatter_timer_free(void*);
|
||||
void *common_hal_rgbmatrix_timer_allocate(void);
|
||||
void common_hal_rgbmatrix_timer_enable(void*);
|
||||
void common_hal_rgbmatrix_timer_disable(void*);
|
||||
void common_hal_rgbmatrix_timer_free(void*);
|
||||
|
||||
#endif
|
||||
|
@ -70,9 +70,9 @@ CIRCUITPY_ULAB = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef CIRCUITPY_PROTOMATTER
|
||||
ifndef CIRCUITPY_RGBMATRIX
|
||||
ifneq ($(CIRCUITPY_SMALL_BUILD),1)
|
||||
CIRCUITPY_PROTOMATTER = 1
|
||||
CIRCUITPY_RGBMATRIX = 1
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -64,8 +64,8 @@ void shared_timer_handler(bool is_tc, uint8_t index) {
|
||||
frequencyin_interrupt_handler(index);
|
||||
#endif
|
||||
break;
|
||||
case TC_HANDLER_PROTOMATTER:
|
||||
#if CIRCUITPY_PROTOMATTER
|
||||
case TC_HANDLER_RGBMATRIX:
|
||||
#if CIRCUITPY_RGBMATRIX
|
||||
_PM_IRQ_HANDLER();
|
||||
#endif
|
||||
break;
|
||||
|
@ -30,7 +30,7 @@
|
||||
#define TC_HANDLER_PULSEOUT 0x1
|
||||
#define TC_HANDLER_PEW 0x2
|
||||
#define TC_HANDLER_FREQUENCYIN 0x3
|
||||
#define TC_HANDLER_PROTOMATTER 0x4
|
||||
#define TC_HANDLER_RGBMATRIX 0x4
|
||||
|
||||
void set_timer_handler(bool is_tc, uint8_t index, uint8_t timer_handler);
|
||||
void shared_timer_handler(bool is_tc, uint8_t index);
|
||||
|
@ -32,18 +32,18 @@
|
||||
|
||||
extern void _PM_IRQ_HANDLER(void);
|
||||
|
||||
void *common_hal_protomatter_timer_allocate() {
|
||||
void *common_hal_rgbmatrix_timer_allocate() {
|
||||
nrfx_timer_t *timer = nrf_peripherals_allocate_timer_or_throw();
|
||||
nrf_peripherals_timer_never_reset(timer);
|
||||
return timer->p_reg;
|
||||
}
|
||||
|
||||
|
||||
static void protomatter_event_handler(nrf_timer_event_t event_type, void *p_context) {
|
||||
static void rgbmatrix_event_handler(nrf_timer_event_t event_type, void *p_context) {
|
||||
_PM_IRQ_HANDLER();
|
||||
}
|
||||
|
||||
void common_hal_protomatter_timer_enable(void* ptr) {
|
||||
void common_hal_rgbmatrix_timer_enable(void* ptr) {
|
||||
nrfx_timer_t *timer = nrf_peripherals_timer_from_reg(ptr);
|
||||
static const nrfx_timer_config_t timer_config = {
|
||||
.frequency = NRF_TIMER_FREQ_16MHz,
|
||||
@ -52,15 +52,15 @@ void common_hal_protomatter_timer_enable(void* ptr) {
|
||||
.interrupt_priority = NRFX_TIMER_DEFAULT_CONFIG_IRQ_PRIORITY,
|
||||
.p_context = NULL,
|
||||
};
|
||||
nrfx_timer_init(timer, &timer_config, &protomatter_event_handler);
|
||||
nrfx_timer_init(timer, &timer_config, &rgbmatrix_event_handler);
|
||||
}
|
||||
|
||||
void common_hal_protomatter_timer_disable(void* ptr) {
|
||||
void common_hal_rgbmatrix_timer_disable(void* ptr) {
|
||||
nrfx_timer_t *timer = nrf_peripherals_timer_from_reg(ptr);
|
||||
nrfx_timer_uninit(timer);
|
||||
}
|
||||
|
||||
void common_hal_protomatter_timer_free(void* ptr) {
|
||||
void common_hal_rgbmatrix_timer_free(void* ptr) {
|
||||
nrfx_timer_t *timer = nrf_peripherals_timer_from_reg(ptr);
|
||||
nrf_peripherals_free_timer(timer);
|
||||
}
|
||||
|
@ -24,12 +24,12 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PROTOMATTER_PROTOMATTER_H
|
||||
#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_PROTOMATTER_PROTOMATTER_H
|
||||
#ifndef MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H
|
||||
#define MICROPY_INCLUDED_ATMEL_SAMD_COMMON_HAL_RGBMATRIX_RGBMATRIX_H
|
||||
|
||||
void *common_hal_protomatter_timer_allocate(void);
|
||||
void common_hal_protomatter_timer_enable(void*);
|
||||
void common_hal_protomatter_timer_disable(void*);
|
||||
void common_hal_protomatter_timer_free(void*);
|
||||
void *common_hal_rgbmatrix_timer_allocate(void);
|
||||
void common_hal_rgbmatrix_timer_enable(void*);
|
||||
void common_hal_rgbmatrix_timer_disable(void*);
|
||||
void common_hal_rgbmatrix_timer_free(void*);
|
||||
|
||||
#endif
|
||||
|
@ -51,7 +51,7 @@ endif
|
||||
# frequencyio not yet implemented
|
||||
CIRCUITPY_FREQUENCYIO = 0
|
||||
|
||||
CIRCUITPY_PROTOMATTER = 1
|
||||
CIRCUITPY_RGBMATRIX = 1
|
||||
CIRCUITPY_FRAMEBUFFERIO = 1
|
||||
|
||||
# nRF52840-specific
|
||||
|
@ -181,7 +181,7 @@ endif
|
||||
ifeq ($(CIRCUITPY_PIXELBUF),1)
|
||||
SRC_PATTERNS += _pixelbuf/%
|
||||
endif
|
||||
ifeq ($(CIRCUITPY_PROTOMATTER),1)
|
||||
ifeq ($(CIRCUITPY_RGBMATRIX),1)
|
||||
SRC_PATTERNS += rgbmatrix/%
|
||||
endif
|
||||
ifeq ($(CIRCUITPY_PULSEIO),1)
|
||||
@ -413,7 +413,7 @@ SRC_MOD += $(addprefix lib/mp3/src/, \
|
||||
)
|
||||
$(BUILD)/lib/mp3/src/buffers.o: CFLAGS += -include "py/misc.h" -D'MPDEC_ALLOCATOR(x)=m_malloc(x,0)' -D'MPDEC_FREE(x)=m_free(x)'
|
||||
endif
|
||||
ifeq ($(CIRCUITPY_PROTOMATTER),1)
|
||||
ifeq ($(CIRCUITPY_RGBMATRIX),1)
|
||||
SRC_MOD += $(addprefix lib/protomatter/, \
|
||||
core.c \
|
||||
)
|
||||
|
@ -461,11 +461,11 @@ extern const struct _mp_obj_module_t pixelbuf_module;
|
||||
#define PIXELBUF_MODULE
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_PROTOMATTER
|
||||
extern const struct _mp_obj_module_t protomatter_module;
|
||||
#define PROTOMATTER_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_rgbmatrix),(mp_obj_t)&protomatter_module },
|
||||
#if CIRCUITPY_RGBMATRIX
|
||||
extern const struct _mp_obj_module_t rgbmatrix_module;
|
||||
#define RGBMATRIX_MODULE { MP_OBJ_NEW_QSTR(MP_QSTR_rgbmatrix),(mp_obj_t)&rgbmatrix_module },
|
||||
#else
|
||||
#define PROTOMATTER_MODULE
|
||||
#define RGBMATRIX_MODULE
|
||||
#endif
|
||||
|
||||
#if CIRCUITPY_PULSEIO
|
||||
@ -658,10 +658,10 @@ extern const struct _mp_obj_module_t ustack_module;
|
||||
PEW_MODULE \
|
||||
PIXELBUF_MODULE \
|
||||
PS2IO_MODULE \
|
||||
PROTOMATTER_MODULE \
|
||||
PULSEIO_MODULE \
|
||||
RANDOM_MODULE \
|
||||
RE_MODULE \
|
||||
RGBMATRIX_MODULE \
|
||||
ROTARYIO_MODULE \
|
||||
RTC_MODULE \
|
||||
SAMD_MODULE \
|
||||
|
@ -216,10 +216,10 @@ endif
|
||||
CFLAGS += -DCIRCUITPY_PIXELBUF=$(CIRCUITPY_PIXELBUF)
|
||||
|
||||
# Only for SAMD boards for the moment
|
||||
ifndef CIRCUITPY_PROTOMATTER
|
||||
CIRCUITPY_PROTOMATTER = 0
|
||||
ifndef CIRCUITPY_RGBMATRIX
|
||||
CIRCUITPY_RGBMATRIX = 0
|
||||
endif
|
||||
CFLAGS += -DCIRCUITPY_PROTOMATTER=$(CIRCUITPY_PROTOMATTER)
|
||||
CFLAGS += -DCIRCUITPY_RGBMATRIX=$(CIRCUITPY_RGBMATRIX)
|
||||
|
||||
ifndef CIRCUITPY_PULSEIO
|
||||
CIRCUITPY_PULSEIO = $(CIRCUITPY_DEFAULT_BUILD)
|
||||
|
@ -163,19 +163,16 @@ STATIC void preflight_pins_or_throw(uint8_t clock_pin, uint8_t *rgb_pins, uint8_
|
||||
//|
|
||||
//| If a framebuffer is not passed in, one is allocated and initialized
|
||||
//| to all black. In any case, the framebuffer can be retrieved
|
||||
//| by passing the protomatter object to memoryview().
|
||||
//| by passing the RGBMatrix object to memoryview().
|
||||
//|
|
||||
//| If doublebuffer is False, some memory is saved, but the display may
|
||||
//| flicker during updates.
|
||||
//|
|
||||
//| If a framebuffer is not passed in, one is allocated internally. To
|
||||
//| retrieve it, pass the protomatter object to memoryview().
|
||||
//|
|
||||
//| A RGBMatrix is often used in conjunction with a
|
||||
//| `framebufferio.FramebufferDisplay`.
|
||||
//|
|
||||
|
||||
STATIC mp_obj_t protomatter_protomatter_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
STATIC mp_obj_t rgbmatrix_rgbmatrix_make_new(const mp_obj_type_t *type, size_t n_args, const mp_obj_t *pos_args, mp_map_t *kw_args) {
|
||||
enum { ARG_width, ARG_bit_depth, ARG_rgb_list, ARG_addr_list,
|
||||
ARG_clock_pin, ARG_latch_pin, ARG_output_enable_pin, ARG_doublebuffer, ARG_framebuffer, ARG_height };
|
||||
static const mp_arg_t allowed_args[] = {
|
||||
@ -193,11 +190,11 @@ STATIC mp_obj_t protomatter_protomatter_make_new(const mp_obj_type_t *type, size
|
||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
||||
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||
|
||||
// Because interrupt handlers point directly at protomatter objects,
|
||||
// Because interrupt handlers point directly at rgbmatrix objects,
|
||||
// it is NOT okay to move them to the long-lived pool later. Allocate
|
||||
// them there to begin with, since generally they'll be long-lived anyway.
|
||||
protomatter_protomatter_obj_t *self = &allocate_display_bus_or_raise()->protomatter;
|
||||
self->base.type = &protomatter_Protomatter_type;
|
||||
rgbmatrix_rgbmatrix_obj_t *self = &allocate_display_bus_or_raise()->rgbmatrix;
|
||||
self->base.type = &rgbmatrix_RGBMatrix_type;
|
||||
|
||||
uint8_t rgb_count, addr_count;
|
||||
uint8_t rgb_pins[MP_ARRAY_SIZE(self->rgb_pins)];
|
||||
@ -231,7 +228,7 @@ STATIC mp_obj_t protomatter_protomatter_make_new(const mp_obj_type_t *type, size
|
||||
framebuffer = mp_obj_new_bytearray_of_zeros(bufsize);
|
||||
}
|
||||
|
||||
common_hal_protomatter_protomatter_construct(self,
|
||||
common_hal_rgbmatrix_rgbmatrix_construct(self,
|
||||
args[ARG_width].u_int,
|
||||
args[ARG_bit_depth].u_int,
|
||||
rgb_count, rgb_pins,
|
||||
@ -252,18 +249,18 @@ STATIC mp_obj_t protomatter_protomatter_make_new(const mp_obj_type_t *type, size
|
||||
//| .. method:: deinit
|
||||
//|
|
||||
//| Free the resources (pins, timers, etc.) associated with this
|
||||
//| protomatter instance. After deinitialization, no further operations
|
||||
//| rgbmatrix instance. After deinitialization, no further operations
|
||||
//| may be performed.
|
||||
//|
|
||||
STATIC mp_obj_t protomatter_protomatter_deinit(mp_obj_t self_in) {
|
||||
protomatter_protomatter_obj_t *self = (protomatter_protomatter_obj_t*)self_in;
|
||||
common_hal_protomatter_protomatter_deinit(self);
|
||||
STATIC mp_obj_t rgbmatrix_rgbmatrix_deinit(mp_obj_t self_in) {
|
||||
rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t*)self_in;
|
||||
common_hal_rgbmatrix_rgbmatrix_deinit(self);
|
||||
return mp_const_none;
|
||||
}
|
||||
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(protomatter_protomatter_deinit_obj, protomatter_protomatter_deinit);
|
||||
STATIC MP_DEFINE_CONST_FUN_OBJ_1(rgbmatrix_rgbmatrix_deinit_obj, rgbmatrix_rgbmatrix_deinit);
|
||||
|
||||
static void check_for_deinit(protomatter_protomatter_obj_t *self) {
|
||||
static void check_for_deinit(rgbmatrix_rgbmatrix_obj_t *self) {
|
||||
if (!self->core.rgbPins) {
|
||||
raise_deinited_error();
|
||||
}
|
||||
@ -274,30 +271,30 @@ static void check_for_deinit(protomatter_protomatter_obj_t *self) {
|
||||
//| In the current implementation, 0.0 turns the display off entirely
|
||||
//| and any other value up to 1.0 turns the display on fully.
|
||||
//|
|
||||
STATIC mp_obj_t protomatter_protomatter_get_brightness(mp_obj_t self_in) {
|
||||
protomatter_protomatter_obj_t *self = (protomatter_protomatter_obj_t*)self_in;
|
||||
STATIC mp_obj_t rgbmatrix_rgbmatrix_get_brightness(mp_obj_t self_in) {
|
||||
rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t*)self_in;
|
||||
check_for_deinit(self);
|
||||
return mp_obj_new_float(common_hal_protomatter_protomatter_get_paused(self)? 0.0f : 1.0f);
|
||||
return mp_obj_new_float(common_hal_rgbmatrix_rgbmatrix_get_paused(self)? 0.0f : 1.0f);
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(protomatter_protomatter_get_brightness_obj, protomatter_protomatter_get_brightness);
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(rgbmatrix_rgbmatrix_get_brightness_obj, rgbmatrix_rgbmatrix_get_brightness);
|
||||
|
||||
STATIC mp_obj_t protomatter_protomatter_set_brightness(mp_obj_t self_in, mp_obj_t value_in) {
|
||||
protomatter_protomatter_obj_t *self = (protomatter_protomatter_obj_t*)self_in;
|
||||
STATIC mp_obj_t rgbmatrix_rgbmatrix_set_brightness(mp_obj_t self_in, mp_obj_t value_in) {
|
||||
rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t*)self_in;
|
||||
check_for_deinit(self);
|
||||
mp_float_t brightness = mp_obj_get_float(value_in);
|
||||
if (brightness < 0.0f || brightness > 1.0f) {
|
||||
mp_raise_ValueError(translate("Brightness must be 0-1.0"));
|
||||
}
|
||||
common_hal_protomatter_protomatter_set_paused(self_in, brightness <= 0);
|
||||
common_hal_rgbmatrix_rgbmatrix_set_paused(self_in, brightness <= 0);
|
||||
|
||||
return mp_const_none;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_2(protomatter_protomatter_set_brightness_obj, protomatter_protomatter_set_brightness);
|
||||
MP_DEFINE_CONST_FUN_OBJ_2(rgbmatrix_rgbmatrix_set_brightness_obj, rgbmatrix_rgbmatrix_set_brightness);
|
||||
|
||||
const mp_obj_property_t protomatter_protomatter_brightness_obj = {
|
||||
const mp_obj_property_t rgbmatrix_rgbmatrix_brightness_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&protomatter_protomatter_get_brightness_obj,
|
||||
(mp_obj_t)&protomatter_protomatter_set_brightness_obj,
|
||||
.proxy = {(mp_obj_t)&rgbmatrix_rgbmatrix_get_brightness_obj,
|
||||
(mp_obj_t)&rgbmatrix_rgbmatrix_set_brightness_obj,
|
||||
(mp_obj_t)&mp_const_none_obj},
|
||||
};
|
||||
|
||||
@ -306,27 +303,27 @@ const mp_obj_property_t protomatter_protomatter_brightness_obj = {
|
||||
//| Transmits the color data in the buffer to the pixels so that
|
||||
//| they are shown.
|
||||
//|
|
||||
STATIC mp_obj_t protomatter_protomatter_refresh(mp_obj_t self_in) {
|
||||
protomatter_protomatter_obj_t *self = (protomatter_protomatter_obj_t*)self_in;
|
||||
STATIC mp_obj_t rgbmatrix_rgbmatrix_refresh(mp_obj_t self_in) {
|
||||
rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t*)self_in;
|
||||
check_for_deinit(self);
|
||||
common_hal_protomatter_protomatter_refresh(self);
|
||||
common_hal_rgbmatrix_rgbmatrix_refresh(self);
|
||||
return mp_const_none;
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(protomatter_protomatter_refresh_obj, protomatter_protomatter_refresh);
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(rgbmatrix_rgbmatrix_refresh_obj, rgbmatrix_rgbmatrix_refresh);
|
||||
|
||||
//| .. attribute:: width
|
||||
//|
|
||||
//| The width of the display, in pixels
|
||||
//|
|
||||
STATIC mp_obj_t protomatter_protomatter_get_width(mp_obj_t self_in) {
|
||||
protomatter_protomatter_obj_t *self = (protomatter_protomatter_obj_t*)self_in;
|
||||
STATIC mp_obj_t rgbmatrix_rgbmatrix_get_width(mp_obj_t self_in) {
|
||||
rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t*)self_in;
|
||||
check_for_deinit(self);
|
||||
return MP_OBJ_NEW_SMALL_INT(common_hal_protomatter_protomatter_get_width(self));
|
||||
return MP_OBJ_NEW_SMALL_INT(common_hal_rgbmatrix_rgbmatrix_get_width(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(protomatter_protomatter_get_width_obj, protomatter_protomatter_get_width);
|
||||
const mp_obj_property_t protomatter_protomatter_width_obj = {
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(rgbmatrix_rgbmatrix_get_width_obj, rgbmatrix_rgbmatrix_get_width);
|
||||
const mp_obj_property_t rgbmatrix_rgbmatrix_width_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&protomatter_protomatter_get_width_obj,
|
||||
.proxy = {(mp_obj_t)&rgbmatrix_rgbmatrix_get_width_obj,
|
||||
(mp_obj_t)&mp_const_none_obj,
|
||||
(mp_obj_t)&mp_const_none_obj},
|
||||
};
|
||||
@ -335,31 +332,31 @@ const mp_obj_property_t protomatter_protomatter_width_obj = {
|
||||
//|
|
||||
//| The height of the display, in pixels
|
||||
//|
|
||||
STATIC mp_obj_t protomatter_protomatter_get_height(mp_obj_t self_in) {
|
||||
protomatter_protomatter_obj_t *self = (protomatter_protomatter_obj_t*)self_in;
|
||||
STATIC mp_obj_t rgbmatrix_rgbmatrix_get_height(mp_obj_t self_in) {
|
||||
rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t*)self_in;
|
||||
check_for_deinit(self);
|
||||
return MP_OBJ_NEW_SMALL_INT(common_hal_protomatter_protomatter_get_height(self));
|
||||
return MP_OBJ_NEW_SMALL_INT(common_hal_rgbmatrix_rgbmatrix_get_height(self));
|
||||
}
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(protomatter_protomatter_get_height_obj, protomatter_protomatter_get_height);
|
||||
MP_DEFINE_CONST_FUN_OBJ_1(rgbmatrix_rgbmatrix_get_height_obj, rgbmatrix_rgbmatrix_get_height);
|
||||
|
||||
const mp_obj_property_t protomatter_protomatter_height_obj = {
|
||||
const mp_obj_property_t rgbmatrix_rgbmatrix_height_obj = {
|
||||
.base.type = &mp_type_property,
|
||||
.proxy = {(mp_obj_t)&protomatter_protomatter_get_height_obj,
|
||||
.proxy = {(mp_obj_t)&rgbmatrix_rgbmatrix_get_height_obj,
|
||||
(mp_obj_t)&mp_const_none_obj,
|
||||
(mp_obj_t)&mp_const_none_obj},
|
||||
};
|
||||
|
||||
STATIC const mp_rom_map_elem_t protomatter_protomatter_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&protomatter_protomatter_deinit_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_brightness), MP_ROM_PTR(&protomatter_protomatter_brightness_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_refresh), MP_ROM_PTR(&protomatter_protomatter_refresh_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&protomatter_protomatter_width_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&protomatter_protomatter_height_obj) },
|
||||
STATIC const mp_rom_map_elem_t rgbmatrix_rgbmatrix_locals_dict_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR_deinit), MP_ROM_PTR(&rgbmatrix_rgbmatrix_deinit_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_brightness), MP_ROM_PTR(&rgbmatrix_rgbmatrix_brightness_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_refresh), MP_ROM_PTR(&rgbmatrix_rgbmatrix_refresh_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_width), MP_ROM_PTR(&rgbmatrix_rgbmatrix_width_obj) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_height), MP_ROM_PTR(&rgbmatrix_rgbmatrix_height_obj) },
|
||||
};
|
||||
STATIC MP_DEFINE_CONST_DICT(protomatter_protomatter_locals_dict, protomatter_protomatter_locals_dict_table);
|
||||
STATIC MP_DEFINE_CONST_DICT(rgbmatrix_rgbmatrix_locals_dict, rgbmatrix_rgbmatrix_locals_dict_table);
|
||||
|
||||
STATIC void protomatter_protomatter_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) {
|
||||
protomatter_protomatter_obj_t *self = (protomatter_protomatter_obj_t*)self_in;
|
||||
STATIC void rgbmatrix_rgbmatrix_get_bufinfo(mp_obj_t self_in, mp_buffer_info_t *bufinfo) {
|
||||
rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t*)self_in;
|
||||
check_for_deinit(self);
|
||||
|
||||
*bufinfo = self->bufinfo;
|
||||
@ -367,60 +364,60 @@ STATIC void protomatter_protomatter_get_bufinfo(mp_obj_t self_in, mp_buffer_info
|
||||
|
||||
// These version exists so that the prototype matches the protocol,
|
||||
// avoiding a type cast that can hide errors
|
||||
STATIC void protomatter_protomatter_swapbuffers(mp_obj_t self_in) {
|
||||
common_hal_protomatter_protomatter_refresh(self_in);
|
||||
STATIC void rgbmatrix_rgbmatrix_swapbuffers(mp_obj_t self_in) {
|
||||
common_hal_rgbmatrix_rgbmatrix_refresh(self_in);
|
||||
}
|
||||
|
||||
STATIC void protomatter_protomatter_deinit_proto(mp_obj_t self_in) {
|
||||
common_hal_protomatter_protomatter_deinit(self_in);
|
||||
STATIC void rgbmatrix_rgbmatrix_deinit_proto(mp_obj_t self_in) {
|
||||
common_hal_rgbmatrix_rgbmatrix_deinit(self_in);
|
||||
}
|
||||
|
||||
STATIC float protomatter_protomatter_get_brightness_proto(mp_obj_t self_in) {
|
||||
return common_hal_protomatter_protomatter_get_paused(self_in) ? 0.0f : 1.0f;
|
||||
STATIC float rgbmatrix_rgbmatrix_get_brightness_proto(mp_obj_t self_in) {
|
||||
return common_hal_rgbmatrix_rgbmatrix_get_paused(self_in) ? 0.0f : 1.0f;
|
||||
}
|
||||
|
||||
STATIC bool protomatter_protomatter_set_brightness_proto(mp_obj_t self_in, mp_float_t value) {
|
||||
common_hal_protomatter_protomatter_set_paused(self_in, value <= 0);
|
||||
STATIC bool rgbmatrix_rgbmatrix_set_brightness_proto(mp_obj_t self_in, mp_float_t value) {
|
||||
common_hal_rgbmatrix_rgbmatrix_set_paused(self_in, value <= 0);
|
||||
return true;
|
||||
}
|
||||
|
||||
STATIC int protomatter_protomatter_get_width_proto(mp_obj_t self_in) {
|
||||
return common_hal_protomatter_protomatter_get_width(self_in);
|
||||
STATIC int rgbmatrix_rgbmatrix_get_width_proto(mp_obj_t self_in) {
|
||||
return common_hal_rgbmatrix_rgbmatrix_get_width(self_in);
|
||||
}
|
||||
|
||||
STATIC int protomatter_protomatter_get_height_proto(mp_obj_t self_in) {
|
||||
return common_hal_protomatter_protomatter_get_height(self_in);
|
||||
STATIC int rgbmatrix_rgbmatrix_get_height_proto(mp_obj_t self_in) {
|
||||
return common_hal_rgbmatrix_rgbmatrix_get_height(self_in);
|
||||
}
|
||||
|
||||
STATIC int protomatter_protomatter_get_color_depth_proto(mp_obj_t self_in) {
|
||||
STATIC int rgbmatrix_rgbmatrix_get_color_depth_proto(mp_obj_t self_in) {
|
||||
return 16;
|
||||
}
|
||||
|
||||
STATIC int protomatter_protomatter_get_bytes_per_cell_proto(mp_obj_t self_in) {
|
||||
STATIC int rgbmatrix_rgbmatrix_get_bytes_per_cell_proto(mp_obj_t self_in) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
STATIC int protomatter_protomatter_get_native_frames_per_second_proto(mp_obj_t self_in) {
|
||||
STATIC int rgbmatrix_rgbmatrix_get_native_frames_per_second_proto(mp_obj_t self_in) {
|
||||
return 250;
|
||||
}
|
||||
|
||||
|
||||
STATIC const framebuffer_p_t protomatter_protomatter_proto = {
|
||||
STATIC const framebuffer_p_t rgbmatrix_rgbmatrix_proto = {
|
||||
MP_PROTO_IMPLEMENT(MP_QSTR_protocol_framebuffer)
|
||||
.get_bufinfo = protomatter_protomatter_get_bufinfo,
|
||||
.set_brightness = protomatter_protomatter_set_brightness_proto,
|
||||
.get_brightness = protomatter_protomatter_get_brightness_proto,
|
||||
.get_width = protomatter_protomatter_get_width_proto,
|
||||
.get_height = protomatter_protomatter_get_height_proto,
|
||||
.get_color_depth = protomatter_protomatter_get_color_depth_proto,
|
||||
.get_bytes_per_cell = protomatter_protomatter_get_bytes_per_cell_proto,
|
||||
.get_native_frames_per_second = protomatter_protomatter_get_native_frames_per_second_proto,
|
||||
.swapbuffers = protomatter_protomatter_swapbuffers,
|
||||
.deinit = protomatter_protomatter_deinit_proto,
|
||||
.get_bufinfo = rgbmatrix_rgbmatrix_get_bufinfo,
|
||||
.set_brightness = rgbmatrix_rgbmatrix_set_brightness_proto,
|
||||
.get_brightness = rgbmatrix_rgbmatrix_get_brightness_proto,
|
||||
.get_width = rgbmatrix_rgbmatrix_get_width_proto,
|
||||
.get_height = rgbmatrix_rgbmatrix_get_height_proto,
|
||||
.get_color_depth = rgbmatrix_rgbmatrix_get_color_depth_proto,
|
||||
.get_bytes_per_cell = rgbmatrix_rgbmatrix_get_bytes_per_cell_proto,
|
||||
.get_native_frames_per_second = rgbmatrix_rgbmatrix_get_native_frames_per_second_proto,
|
||||
.swapbuffers = rgbmatrix_rgbmatrix_swapbuffers,
|
||||
.deinit = rgbmatrix_rgbmatrix_deinit_proto,
|
||||
};
|
||||
|
||||
STATIC mp_int_t protomatter_protomatter_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) {
|
||||
protomatter_protomatter_obj_t *self = (protomatter_protomatter_obj_t*)self_in;
|
||||
STATIC mp_int_t rgbmatrix_rgbmatrix_get_buffer(mp_obj_t self_in, mp_buffer_info_t *bufinfo, mp_uint_t flags) {
|
||||
rgbmatrix_rgbmatrix_obj_t *self = (rgbmatrix_rgbmatrix_obj_t*)self_in;
|
||||
// a readonly framebuffer would be unusual but not impossible
|
||||
if ((flags & MP_BUFFER_WRITE) && !(self->bufinfo.typecode & MP_OBJ_ARRAY_TYPECODE_FLAG_RW)) {
|
||||
return 1;
|
||||
@ -429,11 +426,11 @@ STATIC mp_int_t protomatter_protomatter_get_buffer(mp_obj_t self_in, mp_buffer_i
|
||||
return 0;
|
||||
}
|
||||
|
||||
const mp_obj_type_t protomatter_Protomatter_type = {
|
||||
const mp_obj_type_t rgbmatrix_RGBMatrix_type = {
|
||||
{ &mp_type_type },
|
||||
.name = MP_QSTR_RGBMatrix,
|
||||
.buffer_p = { .get_buffer = protomatter_protomatter_get_buffer, },
|
||||
.make_new = protomatter_protomatter_make_new,
|
||||
.protocol = &protomatter_protomatter_proto,
|
||||
.locals_dict = (mp_obj_dict_t*)&protomatter_protomatter_locals_dict,
|
||||
.buffer_p = { .get_buffer = rgbmatrix_rgbmatrix_get_buffer, },
|
||||
.make_new = rgbmatrix_rgbmatrix_make_new,
|
||||
.protocol = &rgbmatrix_rgbmatrix_proto,
|
||||
.locals_dict = (mp_obj_dict_t*)&rgbmatrix_rgbmatrix_locals_dict,
|
||||
};
|
||||
|
@ -24,13 +24,13 @@
|
||||
* THE SOFTWARE.
|
||||
*/
|
||||
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_PROTOMATTER_PROTOMATTER_H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_PROTOMATTER_PROTOMATTER_H
|
||||
#ifndef MICROPY_INCLUDED_SHARED_BINDINGS_RGBMATRIX_RGBMATRIX_H
|
||||
#define MICROPY_INCLUDED_SHARED_BINDINGS_RGBMATRIX_RGBMATRIX_H
|
||||
|
||||
#include "shared-module/rgbmatrix/RGBMatrix.h"
|
||||
#include "lib/protomatter/core.h"
|
||||
|
||||
extern const mp_obj_type_t protomatter_Protomatter_type;
|
||||
extern const mp_obj_type_t rgbmatrix_RGBMatrix_type;
|
||||
typedef struct {
|
||||
mp_obj_base_t base;
|
||||
mp_obj_t framebuffer;
|
||||
@ -46,16 +46,16 @@ typedef struct {
|
||||
bool core_is_initialized;
|
||||
bool paused;
|
||||
bool doublebuffer;
|
||||
} protomatter_protomatter_obj_t;
|
||||
} rgbmatrix_rgbmatrix_obj_t;
|
||||
|
||||
void common_hal_protomatter_protomatter_construct(protomatter_protomatter_obj_t* self, int width, int bit_depth, uint8_t rgb_count, uint8_t* rgb_pins, uint8_t addr_count, uint8_t* addr_pins, uint8_t clock_pin, uint8_t latch_pin, uint8_t oe_pin, bool doublebuffer, mp_obj_t framebuffer, void* timer);
|
||||
void common_hal_protomatter_protomatter_deinit(protomatter_protomatter_obj_t*);
|
||||
void protomatter_protomatter_collect_ptrs(protomatter_protomatter_obj_t*);
|
||||
void common_hal_protomatter_protomatter_reconstruct(protomatter_protomatter_obj_t* self, mp_obj_t framebuffer);
|
||||
void common_hal_protomatter_protomatter_set_paused(protomatter_protomatter_obj_t* self, bool paused);
|
||||
bool common_hal_protomatter_protomatter_get_paused(protomatter_protomatter_obj_t* self);
|
||||
void common_hal_protomatter_protomatter_refresh(protomatter_protomatter_obj_t* self);
|
||||
int common_hal_protomatter_protomatter_get_width(protomatter_protomatter_obj_t* self);
|
||||
int common_hal_protomatter_protomatter_get_height(protomatter_protomatter_obj_t* self);
|
||||
void common_hal_rgbmatrix_rgbmatrix_construct(rgbmatrix_rgbmatrix_obj_t* self, int width, int bit_depth, uint8_t rgb_count, uint8_t* rgb_pins, uint8_t addr_count, uint8_t* addr_pins, uint8_t clock_pin, uint8_t latch_pin, uint8_t oe_pin, bool doublebuffer, mp_obj_t framebuffer, void* timer);
|
||||
void common_hal_rgbmatrix_rgbmatrix_deinit(rgbmatrix_rgbmatrix_obj_t*);
|
||||
void rgbmatrix_rgbmatrix_collect_ptrs(rgbmatrix_rgbmatrix_obj_t*);
|
||||
void common_hal_rgbmatrix_rgbmatrix_reconstruct(rgbmatrix_rgbmatrix_obj_t* self, mp_obj_t framebuffer);
|
||||
void common_hal_rgbmatrix_rgbmatrix_set_paused(rgbmatrix_rgbmatrix_obj_t* self, bool paused);
|
||||
bool common_hal_rgbmatrix_rgbmatrix_get_paused(rgbmatrix_rgbmatrix_obj_t* self);
|
||||
void common_hal_rgbmatrix_rgbmatrix_refresh(rgbmatrix_rgbmatrix_obj_t* self);
|
||||
int common_hal_rgbmatrix_rgbmatrix_get_width(rgbmatrix_rgbmatrix_obj_t* self);
|
||||
int common_hal_rgbmatrix_rgbmatrix_get_height(rgbmatrix_rgbmatrix_obj_t* self);
|
||||
|
||||
#endif
|
||||
|
@ -42,14 +42,14 @@
|
||||
//|
|
||||
//| RGBMatrix
|
||||
|
||||
STATIC const mp_rom_map_elem_t protomatter_module_globals_table[] = {
|
||||
STATIC const mp_rom_map_elem_t rgbmatrix_module_globals_table[] = {
|
||||
{ MP_ROM_QSTR(MP_QSTR___name__), MP_ROM_QSTR(MP_QSTR_rgbmatrix) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGBMatrix), MP_ROM_PTR(&protomatter_Protomatter_type) },
|
||||
{ MP_ROM_QSTR(MP_QSTR_RGBMatrix), MP_ROM_PTR(&rgbmatrix_RGBMatrix_type) },
|
||||
};
|
||||
|
||||
STATIC MP_DEFINE_CONST_DICT(protomatter_module_globals, protomatter_module_globals_table);
|
||||
STATIC MP_DEFINE_CONST_DICT(rgbmatrix_module_globals, rgbmatrix_module_globals_table);
|
||||
|
||||
const mp_obj_module_t protomatter_module = {
|
||||
const mp_obj_module_t rgbmatrix_module = {
|
||||
.base = { &mp_type_module },
|
||||
.globals = (mp_obj_dict_t*)&protomatter_module_globals,
|
||||
.globals = (mp_obj_dict_t*)&rgbmatrix_module_globals,
|
||||
};
|
||||
|
@ -21,8 +21,8 @@
|
||||
|
||||
primary_display_t displays[CIRCUITPY_DISPLAY_LIMIT];
|
||||
|
||||
#if CIRCUITPY_PROTOMATTER
|
||||
STATIC bool any_display_uses_this_protomatter(protomatter_protomatter_obj_t* pm) {
|
||||
#if CIRCUITPY_RGBMATRIX
|
||||
STATIC bool any_display_uses_this_rgbmatrix(rgbmatrix_rgbmatrix_obj_t* pm) {
|
||||
for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) {
|
||||
if (displays[i].framebuffer_display.base.type == &framebufferio_framebufferdisplay_type) {
|
||||
framebufferio_framebufferdisplay_obj_t* display = &displays[i].framebuffer_display;
|
||||
@ -103,8 +103,8 @@ void common_hal_displayio_release_displays(void) {
|
||||
} else if (bus_type == &displayio_parallelbus_type) {
|
||||
common_hal_displayio_parallelbus_deinit(&displays[i].parallel_bus);
|
||||
#if CIRCUITPY_FRAMEBUFFERIO
|
||||
} else if (bus_type == &protomatter_Protomatter_type) {
|
||||
common_hal_protomatter_protomatter_deinit(&displays[i].protomatter);
|
||||
} else if (bus_type == &rgbmatrix_RGBMatrix_type) {
|
||||
common_hal_rgbmatrix_rgbmatrix_deinit(&displays[i].rgbmatrix);
|
||||
#endif
|
||||
}
|
||||
displays[i].fourwire_bus.base.type = &mp_type_NoneType;
|
||||
@ -167,11 +167,11 @@ void reset_displays(void) {
|
||||
}
|
||||
}
|
||||
}
|
||||
#if CIRCUITPY_PROTOMATTER
|
||||
} else if (displays[i].protomatter.base.type == &protomatter_Protomatter_type) {
|
||||
protomatter_protomatter_obj_t * pm = &displays[i].protomatter;
|
||||
if(!any_display_uses_this_protomatter(pm)) {
|
||||
common_hal_protomatter_protomatter_deinit(pm);
|
||||
#if CIRCUITPY_RGBMATRIX
|
||||
} else if (displays[i].rgbmatrix.base.type == &rgbmatrix_RGBMatrix_type) {
|
||||
rgbmatrix_rgbmatrix_obj_t * pm = &displays[i].rgbmatrix;
|
||||
if(!any_display_uses_this_rgbmatrix(pm)) {
|
||||
common_hal_rgbmatrix_rgbmatrix_deinit(pm);
|
||||
}
|
||||
#endif
|
||||
} else {
|
||||
@ -200,9 +200,9 @@ void reset_displays(void) {
|
||||
|
||||
void displayio_gc_collect(void) {
|
||||
for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) {
|
||||
#if CIRCUITPY_PROTOMATTER
|
||||
if (displays[i].protomatter.base.type == &protomatter_Protomatter_type) {
|
||||
protomatter_protomatter_collect_ptrs(&displays[i].protomatter);
|
||||
#if CIRCUITPY_RGBMATRIX
|
||||
if (displays[i].rgbmatrix.base.type == &rgbmatrix_RGBMatrix_type) {
|
||||
rgbmatrix_rgbmatrix_collect_ptrs(&displays[i].rgbmatrix);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -43,8 +43,8 @@ typedef struct {
|
||||
displayio_fourwire_obj_t fourwire_bus;
|
||||
displayio_i2cdisplay_obj_t i2cdisplay_bus;
|
||||
displayio_parallelbus_obj_t parallel_bus;
|
||||
#if CIRCUITPY_PROTOMATTER
|
||||
protomatter_protomatter_obj_t protomatter;
|
||||
#if CIRCUITPY_RGBMATRIX
|
||||
rgbmatrix_rgbmatrix_obj_t rgbmatrix;
|
||||
#endif
|
||||
};
|
||||
union {
|
||||
|
@ -42,7 +42,7 @@
|
||||
|
||||
extern Protomatter_core *_PM_protoPtr;
|
||||
|
||||
void common_hal_protomatter_protomatter_construct(protomatter_protomatter_obj_t *self, int width, int bit_depth, uint8_t rgb_count, uint8_t *rgb_pins, uint8_t addr_count, uint8_t *addr_pins, uint8_t clock_pin, uint8_t latch_pin, uint8_t oe_pin, bool doublebuffer, mp_obj_t framebuffer, void *timer) {
|
||||
void common_hal_rgbmatrix_rgbmatrix_construct(rgbmatrix_rgbmatrix_obj_t *self, int width, int bit_depth, uint8_t rgb_count, uint8_t *rgb_pins, uint8_t addr_count, uint8_t *addr_pins, uint8_t clock_pin, uint8_t latch_pin, uint8_t oe_pin, bool doublebuffer, mp_obj_t framebuffer, void *timer) {
|
||||
self->width = width;
|
||||
self->bit_depth = bit_depth;
|
||||
self->rgb_count = rgb_count;
|
||||
@ -54,7 +54,7 @@ void common_hal_protomatter_protomatter_construct(protomatter_protomatter_obj_t
|
||||
self->latch_pin = latch_pin;
|
||||
self->doublebuffer = doublebuffer;
|
||||
|
||||
self->timer = timer ? timer : common_hal_protomatter_timer_allocate();
|
||||
self->timer = timer ? timer : common_hal_rgbmatrix_timer_allocate();
|
||||
if (self->timer == NULL) {
|
||||
mp_raise_ValueError(translate("No timer available"));
|
||||
}
|
||||
@ -62,10 +62,10 @@ void common_hal_protomatter_protomatter_construct(protomatter_protomatter_obj_t
|
||||
self->width = width;
|
||||
self->bufsize = 2 * width * rgb_count / 3 * (1 << addr_count);
|
||||
|
||||
common_hal_protomatter_protomatter_reconstruct(self, framebuffer);
|
||||
common_hal_rgbmatrix_rgbmatrix_reconstruct(self, framebuffer);
|
||||
}
|
||||
|
||||
void common_hal_protomatter_protomatter_reconstruct(protomatter_protomatter_obj_t* self, mp_obj_t framebuffer) {
|
||||
void common_hal_rgbmatrix_rgbmatrix_reconstruct(rgbmatrix_rgbmatrix_obj_t* self, mp_obj_t framebuffer) {
|
||||
if (framebuffer) {
|
||||
self->framebuffer = framebuffer;
|
||||
framebuffer = mp_obj_new_bytearray_of_zeros(self->bufsize);
|
||||
@ -99,7 +99,7 @@ void common_hal_protomatter_protomatter_reconstruct(protomatter_protomatter_obj_
|
||||
if (stat == PROTOMATTER_OK) {
|
||||
_PM_protoPtr = &self->core;
|
||||
common_hal_mcu_disable_interrupts();
|
||||
common_hal_protomatter_timer_enable(self->timer);
|
||||
common_hal_rgbmatrix_timer_enable(self->timer);
|
||||
stat = _PM_begin(&self->core);
|
||||
_PM_convert_565(&self->core, self->bufinfo.buf, self->width);
|
||||
common_hal_mcu_enable_interrupts();
|
||||
@ -109,7 +109,7 @@ void common_hal_protomatter_protomatter_reconstruct(protomatter_protomatter_obj_
|
||||
if (stat != PROTOMATTER_OK) {
|
||||
// XXX this deinit() actually makes crashy-crashy
|
||||
// can trigger it by sending inappropriate pins
|
||||
common_hal_protomatter_protomatter_deinit(self);
|
||||
common_hal_rgbmatrix_rgbmatrix_deinit(self);
|
||||
switch (stat) {
|
||||
case PROTOMATTER_ERR_PINS:
|
||||
mp_raise_ValueError(translate("Invalid pin"));
|
||||
@ -120,7 +120,7 @@ void common_hal_protomatter_protomatter_reconstruct(protomatter_protomatter_obj_
|
||||
case PROTOMATTER_ERR_MALLOC: /// should have already been signaled as NLR
|
||||
default:
|
||||
mp_raise_msg_varg(&mp_type_RuntimeError,
|
||||
translate("Protomatter internal error #%d"), (int)stat);
|
||||
translate("Internal error #%d"), (int)stat);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -142,9 +142,9 @@ STATIC void free_pin_seq(uint8_t *seq, int count) {
|
||||
}
|
||||
}
|
||||
|
||||
void common_hal_protomatter_protomatter_deinit(protomatter_protomatter_obj_t* self) {
|
||||
void common_hal_rgbmatrix_rgbmatrix_deinit(rgbmatrix_rgbmatrix_obj_t* self) {
|
||||
if (self->timer) {
|
||||
common_hal_protomatter_timer_free(self->timer);
|
||||
common_hal_rgbmatrix_timer_free(self->timer);
|
||||
self->timer = 0;
|
||||
}
|
||||
|
||||
@ -173,14 +173,14 @@ void common_hal_protomatter_protomatter_deinit(protomatter_protomatter_obj_t* se
|
||||
self->framebuffer = NULL;
|
||||
}
|
||||
|
||||
void protomatter_protomatter_collect_ptrs(protomatter_protomatter_obj_t* self) {
|
||||
void rgbmatrix_rgbmatrix_collect_ptrs(rgbmatrix_rgbmatrix_obj_t* self) {
|
||||
gc_collect_ptr(self->framebuffer);
|
||||
gc_collect_ptr(self->core.rgbPins);
|
||||
gc_collect_ptr(self->core.addr);
|
||||
gc_collect_ptr(self->core.screenData);
|
||||
}
|
||||
|
||||
void common_hal_protomatter_protomatter_set_paused(protomatter_protomatter_obj_t* self, bool paused) {
|
||||
void common_hal_rgbmatrix_rgbmatrix_set_paused(rgbmatrix_rgbmatrix_obj_t* self, bool paused) {
|
||||
if (paused && !self->paused) {
|
||||
_PM_stop(&self->core);
|
||||
} else if (!paused && self->paused) {
|
||||
@ -189,20 +189,20 @@ void common_hal_protomatter_protomatter_set_paused(protomatter_protomatter_obj_t
|
||||
self->paused = paused;
|
||||
}
|
||||
|
||||
bool common_hal_protomatter_protomatter_get_paused(protomatter_protomatter_obj_t* self) {
|
||||
bool common_hal_rgbmatrix_rgbmatrix_get_paused(rgbmatrix_rgbmatrix_obj_t* self) {
|
||||
return self->paused;
|
||||
}
|
||||
|
||||
void common_hal_protomatter_protomatter_refresh(protomatter_protomatter_obj_t* self) {
|
||||
void common_hal_rgbmatrix_rgbmatrix_refresh(rgbmatrix_rgbmatrix_obj_t* self) {
|
||||
_PM_convert_565(&self->core, self->bufinfo.buf, self->width);
|
||||
_PM_swapbuffer_maybe(&self->core);
|
||||
}
|
||||
|
||||
int common_hal_protomatter_protomatter_get_width(protomatter_protomatter_obj_t* self) {
|
||||
int common_hal_rgbmatrix_rgbmatrix_get_width(rgbmatrix_rgbmatrix_obj_t* self) {
|
||||
return self->width;
|
||||
}
|
||||
|
||||
int common_hal_protomatter_protomatter_get_height(protomatter_protomatter_obj_t* self) {
|
||||
int common_hal_rgbmatrix_rgbmatrix_get_height(rgbmatrix_rgbmatrix_obj_t* self) {
|
||||
int computed_height = (self->rgb_count / 3) << (self->addr_count);
|
||||
return computed_height;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
#ifndef MICROPY_INCLUDED_SHARED_MODULE_PROTOMATTER_ALLOCATOR_H
|
||||
#define MICROPY_INCLUDED_SHARED_MODULE_PROTOMATTER_ALLOCATOR_H
|
||||
#ifndef MICROPY_INCLUDED_SHARED_MODULE_RGBMATRIX_ALLOCATOR_H
|
||||
#define MICROPY_INCLUDED_SHARED_MODULE_RGBMATRIX_ALLOCATOR_H
|
||||
|
||||
#include <stdbool.h>
|
||||
#include "py/gc.h"
|
||||
|
@ -34,7 +34,7 @@
|
||||
#include "shared-bindings/displayio/TileGrid.h"
|
||||
#include "supervisor/memory.h"
|
||||
|
||||
#if CIRCUITPY_PROTOMATTER
|
||||
#if CIRCUITPY_RGBMATRIX
|
||||
#include "shared-module/displayio/__init__.h"
|
||||
#endif
|
||||
|
||||
@ -116,11 +116,11 @@ void supervisor_display_move_memory(void) {
|
||||
grid->inline_tiles = false;
|
||||
}
|
||||
MP_STATE_VM(terminal_tilegrid_tiles) = NULL;
|
||||
#if CIRCUITPY_PROTOMATTER
|
||||
#if CIRCUITPY_RGBMATRIX
|
||||
for (uint8_t i = 0; i < CIRCUITPY_DISPLAY_LIMIT; i++) {
|
||||
if (displays[i].protomatter.base.type == &protomatter_Protomatter_type) {
|
||||
protomatter_protomatter_obj_t * pm = &displays[i].protomatter;
|
||||
common_hal_protomatter_protomatter_reconstruct(pm, NULL);
|
||||
if (displays[i].rgbmatrix.base.type == &rgbmatrix_RGBMatrix_type) {
|
||||
rgbmatrix_rgbmatrix_obj_t * pm = &displays[i].rgbmatrix;
|
||||
common_hal_rgbmatrix_rgbmatrix_reconstruct(pm, NULL);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user