Compare commits

...

2 Commits

Author SHA1 Message Date
Merlijn Wajer fe3b178d3c HACK: add console_init_fd 4 years ago
Merlijn Wajer ff82126348 HACK: main: open admin console on pty via arg 1 4 years ago
  1. 2
      include/console.h
  2. 28
      source/main.c
  3. 28
      source/platform/usart.c

@ -9,10 +9,12 @@
#endif
struct console {
FILE *read_fp;
FILE *fp;
};
struct console *console_init(unsigned dev_id);
struct console *console_init_fd(unsigned dev_id, FILE* rfd, FILE* wfd);
int console_peek(char *c, struct console *console, int block);
int console_getc(char *c, struct console *console);
int console_getline(struct console *console, char *buf, size_t n);

@ -80,7 +80,8 @@ struct cmd admin_cmds[] = {
{ NULL, NULL },
};
int main(void)
//int main(void)
int main(int argc, char **argv)
{
size_t i;
@ -92,8 +93,18 @@ int main(void)
buzzer_init(buzzers + i);
}
user_con = console_init(1);
admin_con = console_init(0);
FILE *admin_out = fopen(argv[1], "w");
if (admin_out == NULL) {
perror("admin_out cannot be opened");
return 1;
}
FILE *admin_in = fopen(argv[1], "r");
if (admin_in == NULL) {
perror("admin_in cannot be opened");
return 1;
}
//user_con = console_init_fd(1, user_in, user_out);
admin_con = console_init_fd(0, admin_in, admin_out);
if ((flash = flash_probe())) {
flash = ftl_mount(flash);
@ -102,16 +113,19 @@ int main(void)
fprintf(admin_con->fp, "error: unable to probe flash chip.\n");
}
fprintf(user_con->fp, "TBM-dev (built on " BUILD_VERSION ")\n");
fprintf(stderr, "fds opened\n");
//fprintf(user_con->fp, "TBM-dev (built on " BUILD_VERSION ")\n");
fprintf(admin_con->fp, "TBM-dev (built on " BUILD_VERSION ")\n");
//fflush(user_con->fp);
fflush(admin_con->fp);
shell_init(&user_shell, user_cmds, user_con, "tbm $",
SHELL_SHOW_EXIT_CODE);
//shell_init(&user_shell, user_cmds, user_con, "tbm $",
// SHELL_SHOW_EXIT_CODE);
shell_init(&admin_shell, admin_cmds, admin_con, "tbm #",
SHELL_SHOW_EXIT_CODE);
while (1) {
shell_parse(&user_shell);
//shell_parse(&user_shell);
shell_parse(&admin_shell);
}

@ -94,6 +94,14 @@ int console_peek(char *c, struct console *console_, int block)
int console_getc(char *c, struct console *console_)
{
*c = fgetc(console_->read_fp);
if (*c == EOF) {
return -1;
}
fprintf(stderr, "fgetc on %d gives %x\n", fileno(console_->read_fp), *c);
return 0;
#if 0
struct usart_console *console = container_of(console_,
struct usart_console, console);
@ -106,6 +114,7 @@ int console_getc(char *c, struct console *console_)
}
return 0;
#endif
}
int console_getline(struct console *console_, char *buf, size_t n)
@ -159,6 +168,8 @@ int console_getline(struct console *console_, char *buf, size_t n)
ssize_t console_read(struct console *console, char *buf, size_t n)
{
return fread(buf, n, 1, console->read_fp);
#if 0
char *p = buf;
char c;
@ -178,6 +189,7 @@ ssize_t console_read(struct console *console, char *buf, size_t n)
}
return p - buf;
#endif
}
static ssize_t usart_write(void *cookie, const char *buf, size_t n)
@ -236,14 +248,28 @@ static int usart_init(struct usart_console *console)
return 0;
}
struct console *console_init_fd(unsigned dev_id, FILE* rfd, FILE* wfd) {
struct usart_console *console;
console = usart + dev_id;
console->console.read_fp = rfd;
console->console.fp = wfd;
setvbuf(console->console.fp, NULL, _IONBF, 0);
return &console->console;
}
struct console *console_init(unsigned dev_id)
{
#if 0
cookie_io_functions_t fops = {
.read = NULL,
.write = usart_write,
.seek = NULL,
.close = NULL,
};
#endif
struct usart_console *console;
console = usart + dev_id;
@ -261,8 +287,10 @@ struct console *console_init(unsigned dev_id)
usart_init(console);
#if 0
console->console.fp = fopencookie(console, "w", fops);
setvbuf(console->console.fp, NULL, _IONBF, 0);
#endif
return &console->console;
}

Loading…
Cancel
Save