00001
00002
00003 #ifndef console_h
00004 #define console_h
00005
00006 #include <stddef.h>
00007 #include "l4_types.h"
00008
00009
00010
00011
00012
00013
00020 class Console
00021 {
00022 public:
00023
00024 enum Console_state
00025 {
00026 DISABLED = 0,
00027 INENABLED = 1,
00028 OUTENABLED = 2,
00029 };
00030
00031 enum Console_attr
00032 {
00033
00034 INVALID = 0,
00035 OUT = 0x1,
00036 IN = 0x2,
00037
00038 DIRECT = 0x4,
00039 UART = 0x8,
00040 UX = 0x10,
00041 PUSH = 0x20,
00042 GZIP = 0x40,
00043 BUFFER = 0x80,
00044 DEBUG = 0x100,
00045 };
00046
00050 virtual void state( Mword new_state );
00051
00060 virtual int write( char const *str, size_t len );
00061
00069 virtual int getchar( bool blocking = true );
00070
00079 virtual int char_avail() const;
00080
00084 virtual Mword get_attributes() const;
00085
00086 virtual ~Console();
00087
00088 public:
00089
00093 static void disable_all();
00094
00096 static Console *stdout;
00098 static Console *stderr;
00100 static Console *stdin;
00101
00102 protected:
00103
00104 Mword _state;
00105
00106 public:
00110 inline Mword state() const;
00111
00112 const char* str_mode() const;
00113
00114 const char* str_state() const;
00115
00116 const char* str_attr(Mword bit) const;
00117 };
00118
00119
00120
00121
00122
00123
00124
00129 inline Mword
00130 Console::state() const
00131 {
00132 return _state;
00133 }
00134
00135 #endif // console_h