Allow clearing core device log buffer.

This is useful to get a fresh environment, such as when
running tests that print to log buffer.
pull/235/head
whitequark 2015-08-28 00:37:46 -05:00
parent c21387dc09
commit d80be482fc
4 changed files with 32 additions and 10 deletions

View File

@ -12,23 +12,26 @@ logger = logging.getLogger(__name__)
class _H2DMsgType(Enum):
LOG_REQUEST = 1
IDENT_REQUEST = 2
SWITCH_CLOCK = 3
LOG_CLEAR = 2
LOAD_LIBRARY = 4
RUN_KERNEL = 5
IDENT_REQUEST = 3
SWITCH_CLOCK = 4
RPC_REPLY = 6
RPC_EXCEPTION = 7
LOAD_LIBRARY = 5
RUN_KERNEL = 6
FLASH_READ_REQUEST = 8
FLASH_WRITE_REQUEST = 9
FLASH_ERASE_REQUEST = 10
FLASH_REMOVE_REQUEST = 11
RPC_REPLY = 7
RPC_EXCEPTION = 8
FLASH_READ_REQUEST = 9
FLASH_WRITE_REQUEST = 10
FLASH_ERASE_REQUEST = 11
FLASH_REMOVE_REQUEST = 12
class _D2HMsgType(Enum):
LOG_REPLY = 1
IDENT_REPLY = 2
CLOCK_SWITCH_COMPLETED = 3
CLOCK_SWITCH_FAILED = 4
@ -235,6 +238,11 @@ class CommGeneric:
self._read_expect(_D2HMsgType.LOG_REPLY)
return self._read_chunk(self._read_length).decode('utf-8')
def clear_log(self):
self._write_empty(_H2DMsgType.LOG_CLEAR)
self._read_empty(_D2HMsgType.LOG_REPLY)
def flash_storage_read(self, key):
self._write_header(_H2DMsgType.FLASH_READ_REQUEST)
self._write_string(key)

View File

@ -61,3 +61,8 @@ void log_get(char *outbuf)
j = (j + 1) % LOG_BUFFER_SIZE;
}
}
void log_clear()
{
memset(buffer, 0, sizeof(buffer));
}

View File

@ -12,5 +12,6 @@ void log_va(const char *fmt, va_list args);
void log(const char *fmt, ...);
void log_get(char *outbuf);
void log_clear();
#endif /* __LOG_H */

View File

@ -310,6 +310,8 @@ void session_end(void)
/* host to device */
enum {
REMOTEMSG_TYPE_LOG_REQUEST = 1,
REMOTEMSG_TYPE_LOG_CLEAR,
REMOTEMSG_TYPE_IDENT_REQUEST,
REMOTEMSG_TYPE_SWITCH_CLOCK,
@ -328,6 +330,7 @@ enum {
/* device to host */
enum {
REMOTEMSG_TYPE_LOG_REPLY = 1,
REMOTEMSG_TYPE_IDENT_REPLY,
REMOTEMSG_TYPE_CLOCK_SWITCH_COMPLETED,
REMOTEMSG_TYPE_CLOCK_SWITCH_FAILED,
@ -383,6 +386,11 @@ static int process_input(void)
out_packet_finish();
break;
case REMOTEMSG_TYPE_LOG_CLEAR:
log_clear();
out_packet_empty(REMOTEMSG_TYPE_LOG_REPLY);
break;
case REMOTEMSG_TYPE_FLASH_READ_REQUEST: {
#if SPIFLASH_SECTOR_SIZE - 4 > BUFFER_OUT_SIZE - 9
#error Output buffer cannot hold the flash storage data