Merge pull request #6784 from gamblor21/is31fl3741-fix

Two small fixes, remove hardcoded height and non-scaled display issues
This commit is contained in:
Jeff Epler 2022-08-20 08:10:50 -06:00 committed by GitHub
commit 9500c20f24
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 9 additions and 7 deletions

View File

@ -46,4 +46,4 @@ void common_hal_is31fl3741_send_reset(is31fl3741_IS31FL3741_obj_t *self);
void common_hal_is31fl3741_set_current(is31fl3741_IS31FL3741_obj_t *self, uint8_t current);
uint8_t common_hal_is31fl3741_get_current(is31fl3741_IS31FL3741_obj_t *self);
void common_hal_is31fl3741_set_led(is31fl3741_IS31FL3741_obj_t *self, uint16_t led, uint8_t level, uint8_t page);
void common_hal_is31fl3741_draw_pixel(is31fl3741_IS31FL3741_obj_t *self, int16_t x, int16_t y, uint32_t color, uint16_t *mapping);
void common_hal_is31fl3741_draw_pixel(is31fl3741_IS31FL3741_obj_t *self, int16_t x, int16_t y, uint32_t color, uint16_t *mapping, uint8_t display_height);

View File

@ -141,8 +141,7 @@ void common_hal_is31fl3741_FrameBuffer_refresh(is31fl3741_FrameBuffer_obj_t *sel
if (!self->paused) {
common_hal_is31fl3741_begin_transaction(self->is31fl3741);
uint8_t dirty_row_flags = 0xFF; // only supports 8 rows gotta fix
uint8_t dirty_row_flags = 0xFF;
if (self->scale) {
// Based on the Arduino IS31FL3741 driver code
// dirtyrows flag current not implemented for scaled displays
@ -173,7 +172,7 @@ void common_hal_is31fl3741_FrameBuffer_refresh(is31fl3741_FrameBuffer_obj_t *sel
} else {
color = (rsum << 16) + (gsum << 8) + bsum;
}
common_hal_is31fl3741_draw_pixel(self->is31fl3741, x, y, color, self->mapping);
common_hal_is31fl3741_draw_pixel(self->is31fl3741, x, y, color, self->mapping, self->height);
}
}
} else {
@ -194,9 +193,11 @@ void common_hal_is31fl3741_FrameBuffer_refresh(is31fl3741_FrameBuffer_obj_t *sel
color = *buffer;
}
common_hal_is31fl3741_draw_pixel(self->is31fl3741, x, y, color, self->mapping);
common_hal_is31fl3741_draw_pixel(self->is31fl3741, x, y, color, self->mapping, self->height);
buffer++;
}
} else {
buffer += self->width; // row did not have to be redrawn, skip it in the buffer
}
}
}

View File

@ -148,16 +148,17 @@ void common_hal_is31fl3741_set_led(is31fl3741_IS31FL3741_obj_t *self, uint16_t l
common_hal_busio_i2c_write(self->i2c, self->device_address, cmd, 2);
}
void common_hal_is31fl3741_draw_pixel(is31fl3741_IS31FL3741_obj_t *self, int16_t x, int16_t y, uint32_t color, uint16_t *mapping) {
void common_hal_is31fl3741_draw_pixel(is31fl3741_IS31FL3741_obj_t *self, int16_t x, int16_t y, uint32_t color, uint16_t *mapping, uint8_t display_height) {
uint8_t r = color >> 16 & 0xFF;
uint8_t g = color >> 8 & 0xFF;
uint8_t b = color & 0xFF;
int16_t x1 = (x * 5 + y) * 3;
int16_t x1 = (x * display_height + y) * 3;
uint16_t ridx = mapping[x1 + 2];
if (ridx != 65535) {
uint16_t gidx = mapping[x1 + 1];
uint16_t bidx = mapping[x1 + 0];
common_hal_is31fl3741_set_led(self, ridx, r, 0);
common_hal_is31fl3741_set_led(self, gidx, g, 0);
common_hal_is31fl3741_set_led(self, bidx, b, 0);