Merge branch 'master' of https://github.com/adafruit/circuitpython
This commit is contained in:
commit
14a1e5756e
@ -108,7 +108,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -88,7 +88,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -89,7 +89,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -139,7 +139,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
false, // auto_refresh
|
false, // auto_refresh
|
||||||
20); // native_frames_per_second
|
20, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -111,7 +111,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -89,7 +89,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -111,7 +111,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -89,7 +89,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -100,7 +100,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -117,7 +117,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -108,7 +108,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data as commands
|
false, // data as commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -12,8 +12,8 @@ CHIP_VARIANT = SAMD51J20A
|
|||||||
CHIP_FAMILY = samd51
|
CHIP_FAMILY = samd51
|
||||||
|
|
||||||
QSPI_FLASH_FILESYSTEM = 1
|
QSPI_FLASH_FILESYSTEM = 1
|
||||||
EXTERNAL_FLASH_DEVICE_COUNT = 1
|
EXTERNAL_FLASH_DEVICE_COUNT = 2
|
||||||
EXTERNAL_FLASH_DEVICES = W25Q32JV_IQ
|
EXTERNAL_FLASH_DEVICES = "GD25Q64C, W25Q32JV_IQ"
|
||||||
LONGINT_IMPL = MPZ
|
LONGINT_IMPL = MPZ
|
||||||
|
|
||||||
# Disable modules that are unusable on this special-purpose board.
|
# Disable modules that are unusable on this special-purpose board.
|
||||||
|
@ -270,9 +270,14 @@ size_t common_hal_busio_uart_read(busio_uart_obj_t *self, uint8_t *data, size_t
|
|||||||
LPUART_TransferAbortReceive(self->uart, &self->handle);
|
LPUART_TransferAbortReceive(self->uart, &self->handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// No data left, we got it all
|
||||||
|
if (self->handle.rxData == NULL) {
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
// The only place we can reliably tell how many bytes have been received is from the current
|
// The only place we can reliably tell how many bytes have been received is from the current
|
||||||
// wp in the handle (because the abort nukes rxDataSize, and reading it before abort is a race.)
|
// wp in the handle (because the abort nukes rxDataSize, and reading it before abort is a race.)
|
||||||
return self->handle.rxData-data;
|
return self->handle.rxData - data;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write characters.
|
// Write characters.
|
||||||
|
@ -88,7 +88,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -81,14 +81,15 @@ void board_init(void) {
|
|||||||
0x37, // set vertical scroll command
|
0x37, // set vertical scroll command
|
||||||
display_init_sequence,
|
display_init_sequence,
|
||||||
sizeof(display_init_sequence),
|
sizeof(display_init_sequence),
|
||||||
NULL, // backlight pin
|
&pin_P0_02, // backlight pin
|
||||||
NO_BRIGHTNESS_COMMAND,
|
NO_BRIGHTNESS_COMMAND,
|
||||||
1.0f, // brightness (ignored)
|
1.0f, // brightness (ignored)
|
||||||
true, // auto_brightness
|
true, // auto_brightness
|
||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
false); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -109,7 +109,8 @@ void board_init(void) {
|
|||||||
false, // single_byte_bounds
|
false, // single_byte_bounds
|
||||||
false, // data_as_commands
|
false, // data_as_commands
|
||||||
true, // auto_refresh
|
true, // auto_refresh
|
||||||
60); // native_frames_per_second
|
60, // native_frames_per_second
|
||||||
|
true); // backlight_on_high
|
||||||
}
|
}
|
||||||
|
|
||||||
bool board_requests_safe_mode(void) {
|
bool board_requests_safe_mode(void) {
|
||||||
|
@ -104,9 +104,10 @@
|
|||||||
//| :param bool data_as_commands: Treat all init and boundary data as SPI commands. Certain displays require this.
|
//| :param bool data_as_commands: Treat all init and boundary data as SPI commands. Certain displays require this.
|
||||||
//| :param bool auto_refresh: Automatically refresh the screen
|
//| :param bool auto_refresh: Automatically refresh the screen
|
||||||
//| :param int native_frames_per_second: Number of display refreshes per second that occur with the given init_sequence.
|
//| :param int native_frames_per_second: Number of display refreshes per second that occur with the given init_sequence.
|
||||||
|
//| :param bool backlight_on_high: If True, pulling the backlight pin high turns the backlight on.
|
||||||
//|
|
//|
|
||||||
STATIC mp_obj_t displayio_display_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 displayio_display_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_display_bus, ARG_init_sequence, ARG_width, ARG_height, ARG_colstart, ARG_rowstart, ARG_rotation, ARG_color_depth, ARG_grayscale, ARG_pixels_in_byte_share_row, ARG_bytes_per_cell, ARG_reverse_pixels_in_byte, ARG_set_column_command, ARG_set_row_command, ARG_write_ram_command, ARG_set_vertical_scroll, ARG_backlight_pin, ARG_brightness_command, ARG_brightness, ARG_auto_brightness, ARG_single_byte_bounds, ARG_data_as_commands, ARG_auto_refresh, ARG_native_frames_per_second };
|
enum { ARG_display_bus, ARG_init_sequence, ARG_width, ARG_height, ARG_colstart, ARG_rowstart, ARG_rotation, ARG_color_depth, ARG_grayscale, ARG_pixels_in_byte_share_row, ARG_bytes_per_cell, ARG_reverse_pixels_in_byte, ARG_set_column_command, ARG_set_row_command, ARG_write_ram_command, ARG_set_vertical_scroll, ARG_backlight_pin, ARG_brightness_command, ARG_brightness, ARG_auto_brightness, ARG_single_byte_bounds, ARG_data_as_commands, ARG_auto_refresh, ARG_native_frames_per_second, ARG_backlight_on_high };
|
||||||
static const mp_arg_t allowed_args[] = {
|
static const mp_arg_t allowed_args[] = {
|
||||||
{ MP_QSTR_display_bus, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
{ MP_QSTR_display_bus, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||||
{ MP_QSTR_init_sequence, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
{ MP_QSTR_init_sequence, MP_ARG_REQUIRED | MP_ARG_OBJ },
|
||||||
@ -132,6 +133,7 @@ STATIC mp_obj_t displayio_display_make_new(const mp_obj_type_t *type, size_t n_a
|
|||||||
{ MP_QSTR_data_as_commands, MP_ARG_BOOL | MP_ARG_KW_ONLY, {.u_bool = false} },
|
{ MP_QSTR_data_as_commands, MP_ARG_BOOL | MP_ARG_KW_ONLY, {.u_bool = false} },
|
||||||
{ MP_QSTR_auto_refresh, MP_ARG_BOOL | MP_ARG_KW_ONLY, {.u_bool = true} },
|
{ MP_QSTR_auto_refresh, MP_ARG_BOOL | MP_ARG_KW_ONLY, {.u_bool = true} },
|
||||||
{ MP_QSTR_native_frames_per_second, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 60} },
|
{ MP_QSTR_native_frames_per_second, MP_ARG_INT | MP_ARG_KW_ONLY, {.u_int = 60} },
|
||||||
|
{ MP_QSTR_backlight_on_high, MP_ARG_BOOL | MP_ARG_KW_ONLY, {.u_bool = true} },
|
||||||
};
|
};
|
||||||
mp_arg_val_t args[MP_ARRAY_SIZE(allowed_args)];
|
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);
|
mp_arg_parse_all(n_args, pos_args, kw_args, MP_ARRAY_SIZE(allowed_args), allowed_args, args);
|
||||||
@ -178,7 +180,8 @@ STATIC mp_obj_t displayio_display_make_new(const mp_obj_type_t *type, size_t n_a
|
|||||||
args[ARG_single_byte_bounds].u_bool,
|
args[ARG_single_byte_bounds].u_bool,
|
||||||
args[ARG_data_as_commands].u_bool,
|
args[ARG_data_as_commands].u_bool,
|
||||||
args[ARG_auto_refresh].u_bool,
|
args[ARG_auto_refresh].u_bool,
|
||||||
args[ARG_native_frames_per_second].u_int
|
args[ARG_native_frames_per_second].u_int,
|
||||||
|
args[ARG_backlight_on_high].u_bool
|
||||||
);
|
);
|
||||||
|
|
||||||
return self;
|
return self;
|
||||||
|
@ -45,7 +45,7 @@ void common_hal_displayio_display_construct(displayio_display_obj_t* self,
|
|||||||
uint8_t set_column_command, uint8_t set_row_command, uint8_t write_ram_command, uint8_t set_vertical_scroll,
|
uint8_t set_column_command, uint8_t set_row_command, uint8_t write_ram_command, uint8_t set_vertical_scroll,
|
||||||
uint8_t* init_sequence, uint16_t init_sequence_len, const mcu_pin_obj_t* backlight_pin, uint16_t brightness_command,
|
uint8_t* init_sequence, uint16_t init_sequence_len, const mcu_pin_obj_t* backlight_pin, uint16_t brightness_command,
|
||||||
mp_float_t brightness, bool auto_brightness,
|
mp_float_t brightness, bool auto_brightness,
|
||||||
bool single_byte_bounds, bool data_as_commands, bool auto_refresh, uint16_t native_frames_per_second);
|
bool single_byte_bounds, bool data_as_commands, bool auto_refresh, uint16_t native_frames_per_second, bool backlight_on_high);
|
||||||
|
|
||||||
bool common_hal_displayio_display_show(displayio_display_obj_t* self,
|
bool common_hal_displayio_display_show(displayio_display_obj_t* self,
|
||||||
displayio_group_t* root_group);
|
displayio_group_t* root_group);
|
||||||
|
@ -50,7 +50,7 @@ void common_hal_displayio_display_construct(displayio_display_obj_t* self,
|
|||||||
uint8_t set_row_command, uint8_t write_ram_command, uint8_t set_vertical_scroll,
|
uint8_t set_row_command, uint8_t write_ram_command, uint8_t set_vertical_scroll,
|
||||||
uint8_t* init_sequence, uint16_t init_sequence_len, const mcu_pin_obj_t* backlight_pin,
|
uint8_t* init_sequence, uint16_t init_sequence_len, const mcu_pin_obj_t* backlight_pin,
|
||||||
uint16_t brightness_command, mp_float_t brightness, bool auto_brightness,
|
uint16_t brightness_command, mp_float_t brightness, bool auto_brightness,
|
||||||
bool single_byte_bounds, bool data_as_commands, bool auto_refresh, uint16_t native_frames_per_second) {
|
bool single_byte_bounds, bool data_as_commands, bool auto_refresh, uint16_t native_frames_per_second, bool backlight_on_high) {
|
||||||
// Turn off auto-refresh as we init.
|
// Turn off auto-refresh as we init.
|
||||||
self->auto_refresh = false;
|
self->auto_refresh = false;
|
||||||
uint16_t ram_width = 0x100;
|
uint16_t ram_width = 0x100;
|
||||||
@ -159,6 +159,9 @@ mp_float_t common_hal_displayio_display_get_brightness(displayio_display_obj_t*
|
|||||||
|
|
||||||
bool common_hal_displayio_display_set_brightness(displayio_display_obj_t* self, mp_float_t brightness) {
|
bool common_hal_displayio_display_set_brightness(displayio_display_obj_t* self, mp_float_t brightness) {
|
||||||
self->updating_backlight = true;
|
self->updating_backlight = true;
|
||||||
|
if (!self->backlight_on_high){
|
||||||
|
brightness = 1.0-brightness;
|
||||||
|
}
|
||||||
bool ok = false;
|
bool ok = false;
|
||||||
if (self->backlight_pwm.base.type == &pulseio_pwmout_type) {
|
if (self->backlight_pwm.base.type == &pulseio_pwmout_type) {
|
||||||
common_hal_pulseio_pwmout_set_duty_cycle(&self->backlight_pwm, (uint16_t) (0xffff * brightness));
|
common_hal_pulseio_pwmout_set_duty_cycle(&self->backlight_pwm, (uint16_t) (0xffff * brightness));
|
||||||
|
@ -55,6 +55,7 @@ typedef struct {
|
|||||||
bool data_as_commands;
|
bool data_as_commands;
|
||||||
bool auto_brightness;
|
bool auto_brightness;
|
||||||
bool updating_backlight;
|
bool updating_backlight;
|
||||||
|
bool backlight_on_high;
|
||||||
} displayio_display_obj_t;
|
} displayio_display_obj_t;
|
||||||
|
|
||||||
void displayio_display_background(displayio_display_obj_t* self);
|
void displayio_display_background(displayio_display_obj_t* self);
|
||||||
|
Loading…
Reference in New Issue
Block a user