mirror of
https://github.com/trezor/trezor-firmware.git
synced 2025-02-12 23:52:39 +00:00
trezorhal/usb: add Inf timeout to blocking fns
This commit is contained in:
parent
9cb342fcb6
commit
51d00e1de7
@ -8,19 +8,14 @@ int mp_hal_stdin_rx_chr(void) {
|
|||||||
|
|
||||||
ensure(sectrue * (vcp_iface_num >= 0), "vcp stdio is not configured");
|
ensure(sectrue * (vcp_iface_num >= 0), "vcp stdio is not configured");
|
||||||
|
|
||||||
#define VCP_READ_TIMEOUT 25
|
|
||||||
uint8_t c = 0;
|
uint8_t c = 0;
|
||||||
while (usb_vcp_read_blocking(vcp_iface_num, &c, 1, VCP_READ_TIMEOUT) < 1) {
|
usb_vcp_read_blocking(vcp_iface_num, &c, 1, -1);
|
||||||
// wait until we read a byte
|
|
||||||
}
|
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mp_hal_stdout_tx_strn(const char *str, size_t len) {
|
void mp_hal_stdout_tx_strn(const char *str, size_t len) {
|
||||||
#define VCP_WRITE_TIMEOUT 0
|
|
||||||
|
|
||||||
if (vcp_iface_num >= 0) {
|
if (vcp_iface_num >= 0) {
|
||||||
usb_vcp_write_blocking(vcp_iface_num, (const uint8_t *)str, len, VCP_WRITE_TIMEOUT);
|
usb_vcp_write_blocking(vcp_iface_num, (const uint8_t *)str, len, 0);
|
||||||
} else {
|
} else {
|
||||||
// no-op
|
// no-op
|
||||||
}
|
}
|
||||||
|
@ -76,5 +76,5 @@ int usb_hid_read(uint8_t iface_num, uint8_t *buf, uint32_t len);
|
|||||||
int usb_hid_write(uint8_t iface_num, const uint8_t *buf, uint32_t len);
|
int usb_hid_write(uint8_t iface_num, const uint8_t *buf, uint32_t len);
|
||||||
|
|
||||||
int usb_hid_read_select(uint32_t timeout);
|
int usb_hid_read_select(uint32_t timeout);
|
||||||
int usb_hid_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, uint32_t timeout);
|
int usb_hid_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, int timeout);
|
||||||
int usb_hid_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, uint32_t timeout);
|
int usb_hid_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, int timeout);
|
||||||
|
@ -194,10 +194,10 @@ int usb_hid_read_select(uint32_t timeout) {
|
|||||||
return -1; // Timeout
|
return -1; // Timeout
|
||||||
}
|
}
|
||||||
|
|
||||||
int usb_hid_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, uint32_t timeout) {
|
int usb_hid_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, int timeout) {
|
||||||
const uint32_t start = HAL_GetTick();
|
const uint32_t start = HAL_GetTick();
|
||||||
while (!usb_hid_can_read(iface_num)) {
|
while (!usb_hid_can_read(iface_num)) {
|
||||||
if (HAL_GetTick() - start >= timeout) {
|
if (timeout >= 0 && HAL_GetTick() - start >= timeout) {
|
||||||
return 0; // Timeout
|
return 0; // Timeout
|
||||||
}
|
}
|
||||||
__WFI(); // Enter sleep mode, waiting for interrupt
|
__WFI(); // Enter sleep mode, waiting for interrupt
|
||||||
@ -205,10 +205,10 @@ int usb_hid_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, uint32_
|
|||||||
return usb_hid_read(iface_num, buf, len);
|
return usb_hid_read(iface_num, buf, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
int usb_hid_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, uint32_t timeout) {
|
int usb_hid_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, int timeout) {
|
||||||
const uint32_t start = HAL_GetTick();
|
const uint32_t start = HAL_GetTick();
|
||||||
while (!usb_hid_can_write(iface_num)) {
|
while (!usb_hid_can_write(iface_num)) {
|
||||||
if (HAL_GetTick() - start >= timeout) {
|
if (timeout >= 0 && HAL_GetTick() - start >= timeout) {
|
||||||
return 0; // Timeout
|
return 0; // Timeout
|
||||||
}
|
}
|
||||||
__WFI(); // Enter sleep mode, waiting for interrupt
|
__WFI(); // Enter sleep mode, waiting for interrupt
|
||||||
|
@ -125,5 +125,5 @@ secbool usb_vcp_can_write(uint8_t iface_num);
|
|||||||
int usb_vcp_read(uint8_t iface_num, uint8_t *buf, uint32_t len);
|
int usb_vcp_read(uint8_t iface_num, uint8_t *buf, uint32_t len);
|
||||||
int usb_vcp_write(uint8_t iface_num, const uint8_t *buf, uint32_t len);
|
int usb_vcp_write(uint8_t iface_num, const uint8_t *buf, uint32_t len);
|
||||||
|
|
||||||
int usb_vcp_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, uint32_t timeout);
|
int usb_vcp_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, int timeout);
|
||||||
int usb_vcp_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, uint32_t timeout);
|
int usb_vcp_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, int timeout);
|
||||||
|
@ -291,10 +291,10 @@ int usb_vcp_write(uint8_t iface_num, const uint8_t *buf, uint32_t len) {
|
|||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
int usb_vcp_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, uint32_t timeout) {
|
int usb_vcp_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, int timeout) {
|
||||||
uint32_t start = HAL_GetTick();
|
uint32_t start = HAL_GetTick();
|
||||||
while (!usb_vcp_can_read(iface_num)) {
|
while (!usb_vcp_can_read(iface_num)) {
|
||||||
if (HAL_GetTick() - start >= timeout) {
|
if (timeout >= 0 && HAL_GetTick() - start >= timeout) {
|
||||||
return 0; // Timeout
|
return 0; // Timeout
|
||||||
}
|
}
|
||||||
__WFI(); // Enter sleep mode, waiting for interrupt
|
__WFI(); // Enter sleep mode, waiting for interrupt
|
||||||
@ -302,10 +302,10 @@ int usb_vcp_read_blocking(uint8_t iface_num, uint8_t *buf, uint32_t len, uint32_
|
|||||||
return usb_vcp_read(iface_num, buf, len);
|
return usb_vcp_read(iface_num, buf, len);
|
||||||
}
|
}
|
||||||
|
|
||||||
int usb_vcp_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, uint32_t timeout) {
|
int usb_vcp_write_blocking(uint8_t iface_num, const uint8_t *buf, uint32_t len, int timeout) {
|
||||||
uint32_t start = HAL_GetTick();
|
uint32_t start = HAL_GetTick();
|
||||||
while (!usb_vcp_can_write(iface_num)) {
|
while (!usb_vcp_can_write(iface_num)) {
|
||||||
if (HAL_GetTick() - start >= timeout) {
|
if (timeout >= 0 && HAL_GetTick() - start >= timeout) {
|
||||||
return 0; // Timeout
|
return 0; // Timeout
|
||||||
}
|
}
|
||||||
__WFI(); // Enter sleep mode, waiting for interrupt
|
__WFI(); // Enter sleep mode, waiting for interrupt
|
||||||
|
Loading…
Reference in New Issue
Block a user