k8200_pst: Add simple rotation timeout
This commit is contained in:
parent
818ad88915
commit
d41e22aa96
|
@ -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
|
|
@ -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
|
|
@ -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)
|
||||
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue