From be1ce8799ff01657f0e920d59b5434636cc4cb6b Mon Sep 17 00:00:00 2001 From: Paul Gardner-Stephen Date: Thu, 18 Apr 2019 10:51:41 +0930 Subject: [PATCH] allow auto-starting Vice and injecting keyboard input during tests --- src/collect_data.c | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/src/collect_data.c b/src/collect_data.c index 8c65c8d6..116b24c0 100644 --- a/src/collect_data.c +++ b/src/collect_data.c @@ -64,6 +64,10 @@ int set_nonblock(int fd) return retVal; } +#define MAX_KEYS 1024 +int key_times[MAX_KEYS]; +char key_sequences[MAX_KEYS][1024]; +int key_count=0; int main (int argc, char *argv[]) { @@ -76,7 +80,7 @@ int main (int argc, char *argv[]) { int opt; - while ((opt = getopt(argc, argv, "f:b:t:c:")) != -1) { + while ((opt = getopt(argc, argv, "f:b:t:c:k:v:")) != -1) { switch (opt) { case 'b': rom_bottom=strtoll(optarg,NULL,16); @@ -90,8 +94,26 @@ int main (int argc, char *argv[]) { case 'c': collect_cycles=atoi(optarg); break; + case 'v': + system(optarg); + sleep(3); + break; + case 'k': + // Scheduled key events + if (key_count>=MAX_KEYS) { + fprintf(stderr,"Too many -k arguments. Increase MAX_KEYS?\n"); + exit(-1); + } + if (sscanf(optarg,"%d:%[^~]",&key_times[key_count],key_sequences[key_count])<2) { + fprintf(stderr,"Malformed argument to -k. Must be :\n" + " RETURN should be written \\x0d\n" + "\n"); + exit(-1); + } + key_count++; + break; default: /* '?' */ - fprintf(stderr, "Usage: %s [-b ] [-t ] [-f ] [-c ]\n", + fprintf(stderr, "Usage: %s [-v ] [-b ] [-t ] [-f ] [-c ] [[-k