blob: e2660f8682a1043c953e162e10ac950aa1cb2176 [file] [log] [blame]
/* Copyright (c) 2012 The Regents of the University of California
* Barret Rhoden <brho@cs.berkeley.edu>
* See LICENSE for details.
*
* x86 Console (keyboard/serial/monitor) interfaces */
#pragma once
#include <ros/common.h>
#include <sys/queue.h>
/* Types of console devices */
#define CONS_KB_DEV 1
#define CONS_SER_DEV 2
struct cons_dev;
/* Interrupt-driven console input devices */
struct cons_dev {
SLIST_ENTRY(cons_dev) next;
int type; /* e.g., CONS_KB_DEV */
int val; /* e.g., COM1 */
int irq; /* desired irq */
char *model; /* descriptive string */
int (*getc)(struct cons_dev *, uint8_t *);
};
SLIST_HEAD(cons_dev_slist, cons_dev);
extern struct cons_dev_slist cdev_list;
void cons_init(void);
/* Returns 0 on success, with the char in *data */
int cons_get_char(struct cons_dev *cdev, uint8_t *data);
/* Returns any available character, or 0 for none (legacy helper) */
int cons_get_any_char(void);
/* Writes c to the monitor and to all CONS_SER_DEV console devices */
void cons_putc(int c);
/* TODO: remove us (and serial IO) */
void serial_send_byte(uint8_t b);
int serial_read_byte();