forked from M-Labs/artiq
Allow clearing core device log buffer.
This is useful to get a fresh environment, such as when running tests that print to log buffer.
This commit is contained in:
parent
c21387dc09
commit
d80be482fc
|
@ -12,23 +12,26 @@ logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
class _H2DMsgType(Enum):
|
class _H2DMsgType(Enum):
|
||||||
LOG_REQUEST = 1
|
LOG_REQUEST = 1
|
||||||
IDENT_REQUEST = 2
|
LOG_CLEAR = 2
|
||||||
SWITCH_CLOCK = 3
|
|
||||||
|
|
||||||
LOAD_LIBRARY = 4
|
IDENT_REQUEST = 3
|
||||||
RUN_KERNEL = 5
|
SWITCH_CLOCK = 4
|
||||||
|
|
||||||
RPC_REPLY = 6
|
LOAD_LIBRARY = 5
|
||||||
RPC_EXCEPTION = 7
|
RUN_KERNEL = 6
|
||||||
|
|
||||||
FLASH_READ_REQUEST = 8
|
RPC_REPLY = 7
|
||||||
FLASH_WRITE_REQUEST = 9
|
RPC_EXCEPTION = 8
|
||||||
FLASH_ERASE_REQUEST = 10
|
|
||||||
FLASH_REMOVE_REQUEST = 11
|
FLASH_READ_REQUEST = 9
|
||||||
|
FLASH_WRITE_REQUEST = 10
|
||||||
|
FLASH_ERASE_REQUEST = 11
|
||||||
|
FLASH_REMOVE_REQUEST = 12
|
||||||
|
|
||||||
|
|
||||||
class _D2HMsgType(Enum):
|
class _D2HMsgType(Enum):
|
||||||
LOG_REPLY = 1
|
LOG_REPLY = 1
|
||||||
|
|
||||||
IDENT_REPLY = 2
|
IDENT_REPLY = 2
|
||||||
CLOCK_SWITCH_COMPLETED = 3
|
CLOCK_SWITCH_COMPLETED = 3
|
||||||
CLOCK_SWITCH_FAILED = 4
|
CLOCK_SWITCH_FAILED = 4
|
||||||
|
@ -235,6 +238,11 @@ class CommGeneric:
|
||||||
self._read_expect(_D2HMsgType.LOG_REPLY)
|
self._read_expect(_D2HMsgType.LOG_REPLY)
|
||||||
return self._read_chunk(self._read_length).decode('utf-8')
|
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):
|
def flash_storage_read(self, key):
|
||||||
self._write_header(_H2DMsgType.FLASH_READ_REQUEST)
|
self._write_header(_H2DMsgType.FLASH_READ_REQUEST)
|
||||||
self._write_string(key)
|
self._write_string(key)
|
||||||
|
|
|
@ -61,3 +61,8 @@ void log_get(char *outbuf)
|
||||||
j = (j + 1) % LOG_BUFFER_SIZE;
|
j = (j + 1) % LOG_BUFFER_SIZE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void log_clear()
|
||||||
|
{
|
||||||
|
memset(buffer, 0, sizeof(buffer));
|
||||||
|
}
|
||||||
|
|
|
@ -12,5 +12,6 @@ void log_va(const char *fmt, va_list args);
|
||||||
void log(const char *fmt, ...);
|
void log(const char *fmt, ...);
|
||||||
|
|
||||||
void log_get(char *outbuf);
|
void log_get(char *outbuf);
|
||||||
|
void log_clear();
|
||||||
|
|
||||||
#endif /* __LOG_H */
|
#endif /* __LOG_H */
|
||||||
|
|
|
@ -310,6 +310,8 @@ void session_end(void)
|
||||||
/* host to device */
|
/* host to device */
|
||||||
enum {
|
enum {
|
||||||
REMOTEMSG_TYPE_LOG_REQUEST = 1,
|
REMOTEMSG_TYPE_LOG_REQUEST = 1,
|
||||||
|
REMOTEMSG_TYPE_LOG_CLEAR,
|
||||||
|
|
||||||
REMOTEMSG_TYPE_IDENT_REQUEST,
|
REMOTEMSG_TYPE_IDENT_REQUEST,
|
||||||
REMOTEMSG_TYPE_SWITCH_CLOCK,
|
REMOTEMSG_TYPE_SWITCH_CLOCK,
|
||||||
|
|
||||||
|
@ -328,6 +330,7 @@ enum {
|
||||||
/* device to host */
|
/* device to host */
|
||||||
enum {
|
enum {
|
||||||
REMOTEMSG_TYPE_LOG_REPLY = 1,
|
REMOTEMSG_TYPE_LOG_REPLY = 1,
|
||||||
|
|
||||||
REMOTEMSG_TYPE_IDENT_REPLY,
|
REMOTEMSG_TYPE_IDENT_REPLY,
|
||||||
REMOTEMSG_TYPE_CLOCK_SWITCH_COMPLETED,
|
REMOTEMSG_TYPE_CLOCK_SWITCH_COMPLETED,
|
||||||
REMOTEMSG_TYPE_CLOCK_SWITCH_FAILED,
|
REMOTEMSG_TYPE_CLOCK_SWITCH_FAILED,
|
||||||
|
@ -383,6 +386,11 @@ static int process_input(void)
|
||||||
out_packet_finish();
|
out_packet_finish();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case REMOTEMSG_TYPE_LOG_CLEAR:
|
||||||
|
log_clear();
|
||||||
|
out_packet_empty(REMOTEMSG_TYPE_LOG_REPLY);
|
||||||
|
break;
|
||||||
|
|
||||||
case REMOTEMSG_TYPE_FLASH_READ_REQUEST: {
|
case REMOTEMSG_TYPE_FLASH_READ_REQUEST: {
|
||||||
#if SPIFLASH_SECTOR_SIZE - 4 > BUFFER_OUT_SIZE - 9
|
#if SPIFLASH_SECTOR_SIZE - 4 > BUFFER_OUT_SIZE - 9
|
||||||
#error Output buffer cannot hold the flash storage data
|
#error Output buffer cannot hold the flash storage data
|
||||||
|
|
Loading…
Reference in New Issue