k8200_pst: Add simple rotation timeout

This commit is contained in:
Julian Metzler 2024-02-04 18:26:59 +01:00
parent 818ad88915
commit d41e22aa96
3 changed files with 14 additions and 0 deletions

View File

@ -50,4 +50,10 @@ config K8200_PST_SEL_TX_BUF_SIZE
help
UART transmit buffer size. Set to 0 to disable buffer and block while sending data. Otherwise, must be greater that UART_FIFO_LEN.
config K8200_PST_SEL_ROTATION_TIMEOUT
int "Rotation Timeout (ms)"
default 5000
help
How many milliseconds to wait for rotation to complete before sending NMI signal to stop any rogue units
endmenu

View File

@ -70,6 +70,7 @@ esp_err_t display_init(nvs_handle_t* nvsHandle, uint8_t* display_framebuf_mask,
void k8200_pst_set_nmi(uint8_t state) {
// state: 1 to assert NMI (stop units), 0 to deassert
ESP_LOGI(LOG_TAG, "NMI=%d", state);
if (CONFIG_K8200_PST_SEL_NMI_IO >= 0) gpio_set_level(CONFIG_K8200_PST_SEL_NMI_IO, CONFIG_K8200_PST_SEL_NMI_ACT_HIGH ? !!state : !state);
}
@ -116,6 +117,12 @@ void display_render_frame(uint8_t* frame, uint8_t* prevFrame, uint16_t frameBufS
free(buf);
if (prevFrame != NULL) memcpy(prevFrame, frame, frameBufSize);
// TODO: Implement better monitoring by querying rotation status using framebuffer mask
vTaskDelay(CONFIG_K8200_PST_SEL_ROTATION_TIMEOUT / portTICK_PERIOD_MS);
k8200_pst_set_nmi(1);
vTaskDelay(100 / portTICK_PERIOD_MS);
k8200_pst_set_nmi(0);
}
#endif

View File

@ -1286,6 +1286,7 @@ CONFIG_K8200_PST_SEL_UART_1=y
# CONFIG_K8200_PST_SEL_UART_2 is not set
CONFIG_K8200_PST_SEL_RX_BUF_SIZE=256
CONFIG_K8200_PST_SEL_TX_BUF_SIZE=0
CONFIG_K8200_PST_SEL_ROTATION_TIMEOUT=5000
# end of KRONE 8200 PST Split-Flap Configuration (Selection Mode)
#