diff --git a/src/common/platforms/esp/stub_flasher.c b/src/common/platforms/esp/stub_flasher.c index 09afcfe3..51f1ffa7 100644 --- a/src/common/platforms/esp/stub_flasher.c +++ b/src/common/platforms/esp/stub_flasher.c @@ -470,6 +470,27 @@ uint8_t cmd_loop(void) { resp = 0; break; } + case CMD_READ_REG: { + len = SLIP_recv(args, sizeof(args)); + if (len == 4) { + uint32_t value = READ_PERI_REG((uint32_t *) args[0]); + SLIP_send(&value, sizeof(value)); + resp = 0; + } else { + resp = 0x91; + } + break; + } + case CMD_WRITE_REG: { + len = SLIP_recv(args, sizeof(args)); + if (len == 8) { + WRITE_PERI_REG((uint32_t *) args[0], args[1]); + resp = 0; + } else { + resp = 0xa1; + } + break; + } } SLIP_send(&resp, 1); } while (cmd != CMD_BOOT_FW && cmd != CMD_REBOOT); diff --git a/src/common/platforms/esp/stub_flasher.h b/src/common/platforms/esp/stub_flasher.h index 4bae4c6a..dd1f948b 100644 --- a/src/common/platforms/esp/stub_flasher.h +++ b/src/common/platforms/esp/stub_flasher.h @@ -91,6 +91,24 @@ enum stub_cmd { * Output: arguments. */ CMD_ECHO = 8, + + /* + * Read register value. + * + * Args: register address. + * Input: None. + * Output: register value. + */ + CMD_READ_REG = 9, + + /* + * Write register value. + * + * Args: register address, value. + * Input: None. + * Output: None. + */ + CMD_WRITE_REG = 10, }; #endif /* CS_COMMON_PLATFORMS_ESP8266_STUBS_STUB_FLASHER_H_ */