diff --git a/spi.cpp b/spi.cpp index 9318001..d20cc0f 100644 --- a/spi.cpp +++ b/spi.cpp @@ -210,16 +210,17 @@ void spi_osd_cmd32le(uint8_t cmd, uint32_t parm) } /* User_io related SPI functions */ -void spi_uio_cmd_cont(uint8_t cmd) +uint8_t spi_uio_cmd_cont(uint8_t cmd) { EnableIO(); - spi8(cmd); + return spi_b(cmd); } -void spi_uio_cmd(uint8_t cmd) +uint8_t spi_uio_cmd(uint8_t cmd) { - spi_uio_cmd_cont(cmd); + uint8_t res = spi_uio_cmd_cont(cmd); DisableIO(); + return res; } void spi_uio_cmd8_cont(uint8_t cmd, uint8_t parm) diff --git a/spi.h b/spi.h index 940bf86..d884d1c 100644 --- a/spi.h +++ b/spi.h @@ -51,8 +51,8 @@ void spi_osd_cmd32le_cont(uint8_t cmd, uint32_t parm); void spi_osd_cmd32le(uint8_t cmd, uint32_t parm); /* User_io related SPI functions */ -void spi_uio_cmd_cont(uint8_t cmd); -void spi_uio_cmd(uint8_t cmd); +uint8_t spi_uio_cmd_cont(uint8_t cmd); +uint8_t spi_uio_cmd(uint8_t cmd); void spi_uio_cmd8(uint8_t cmd, uint8_t parm); void spi_uio_cmd8_cont(uint8_t cmd, uint8_t parm); void spi_uio_cmd16(uint8_t cmd, uint16_t parm); diff --git a/user_io.cpp b/user_io.cpp index 31d4559..79ba449 100644 --- a/user_io.cpp +++ b/user_io.cpp @@ -1554,6 +1554,21 @@ void user_io_poll() DisableIO(); */ + static u_int8_t last_status_change = 0; + char stchg = spi_uio_cmd_cont(UIO_GET_STATUS); + if ((stchg & 0xF0) == 0xA0 && last_status_change != (stchg & 0xF)) + { + last_status_change = (stchg & 0xF); + uint32_t st = spi32w(0); + DisableIO(); + user_io_8bit_set_status(st, ~UIO_STATUS_RESET); + //printf("** new status from core: %08X\n", st); + } + else + { + DisableIO(); + } + // sd card emulation if (is_x86_core()) { diff --git a/user_io.h b/user_io.h index e2ba612..a4711d8 100644 --- a/user_io.h +++ b/user_io.h @@ -61,6 +61,7 @@ #define UIO_AUDVOL 0x26 // Digital volume as a number of bits to shift to the right #define UIO_SETHEIGHT 0x27 // Set scaled vertical resolution (to reduce scaling artefacts) #define UIO_GETUARTFLG 0x28 // Get UART_FLG_* +#define UIO_GET_STATUS 0x29 // Update status from the core // codes as used by 8bit for file loading from OSD #define UIO_FILE_TX 0x53