summaryrefslogtreecommitdiff
path: root/drivers/painter/comms/qp_comms_spi.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/painter/comms/qp_comms_spi.c')
-rw-r--r--drivers/painter/comms/qp_comms_spi.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/drivers/painter/comms/qp_comms_spi.c b/drivers/painter/comms/qp_comms_spi.c
index 7534e844d8..9f52bc7d1f 100644
--- a/drivers/painter/comms/qp_comms_spi.c
+++ b/drivers/painter/comms/qp_comms_spi.c
@@ -105,13 +105,21 @@ void qp_comms_spi_dc_reset_send_command(painter_device_t device, uint8_t cmd) {
}
void qp_comms_spi_dc_reset_bulk_command_sequence(painter_device_t device, const uint8_t *sequence, size_t sequence_len) {
+ painter_driver_t * driver = (painter_driver_t *)device;
+ qp_comms_spi_dc_reset_config_t *comms_config = (qp_comms_spi_dc_reset_config_t *)driver->comms_config;
for (size_t i = 0; i < sequence_len;) {
uint8_t command = sequence[i];
uint8_t delay = sequence[i + 1];
uint8_t num_bytes = sequence[i + 2];
qp_comms_spi_dc_reset_send_command(device, command);
if (num_bytes > 0) {
- qp_comms_spi_dc_reset_send_data(device, &sequence[i + 3], num_bytes);
+ if (comms_config->command_params_uses_command_pin) {
+ for (uint8_t j = 0; j < num_bytes; j++) {
+ qp_comms_spi_dc_reset_send_command(device, sequence[i + 3 + j]);
+ }
+ } else {
+ qp_comms_spi_dc_reset_send_data(device, &sequence[i + 3], num_bytes);
+ }
}
if (delay > 0) {
wait_ms(delay);