creator-level saving new files in fat
[quarnos.git] / resources / rs232.h
blob051affa3c8652e295471df30e72661dc7f8c060c
1 #ifndef _RS232_H_
2 #define _RS232_H_
4 #include "stream.h"
5 #include "manes/device.h"
7 #include "arch/x86/rs232.h"
9 namespace resources {
10 class rs232 : public manes::stream {
11 public:
12 typedef arch::parity_check parity_check;
13 typedef arch::rs232_mode rs232_mode;
15 virtual void read_bytes(char *data, int count) = 0;
16 virtual void write_bytes(const char *data, int count) = 0;
17 virtual void write_dwords(const int *, int) = 0;
19 virtual void received(const char a) = 0;
21 virtual resource_result *configure(rs232_mode mode, int speed, int bits,
22 parity_check parity, int stop) = 0;
24 virtual bool init_device(isa_address iadr) = 0;
26 virtual void set_ondatareceived(delegate<void>) = 0;
30 class rs232_impl : public rs232 {
31 private:
32 /* some kind of buffer here */
34 public:
35 typedef rs232::parity_check parity_check;
36 typedef rs232::rs232_mode rs232_mode;
38 void read_bytes(char *data, int count);
39 void write_bytes(const char *data, int count);
40 void write_dwords(const int *, int);
42 void received(const char a);
44 resource_result *configure(rs232_mode mode, int speed, int bits,
45 parity_check parity, int stop);
47 bool init_device(isa_address iadr);
49 void set_ondatareceived(delegate<void>);
53 #endif