BayEOSArduino Library
RD200M.h
1 /*
2  * This is a Arduino Library for
3  * FTLab's RD200M Radon Sensor
4  *
5  * it is inspired by
6  * https://github.com/ekyuho/sensors
7  *
8  * Serial Connection can be established via Hard- or Software-Serial
9  *
10  */
11 
12 
13 #ifndef RD200M_H
14 #define RD200M_H
15 #include <Arduino.h>
16 #include <SoftwareSerial.h>
17 
18 
19 class RD200M_interface : public Stream{
20 public:
21  void update(void);
22  void reset(void);
23  void init(void);
24  float _value;
25  uint8_t _elapsed;
26  uint8_t _up;
27  uint8_t _status;
28  bool _ready;
29 
30 protected:
31  using Print::write; // pull in write(str) and write(buf, size) from Print
32  virtual int i_available(void);
33  virtual void begin(long b);
34 private:
35  byte req[4] = { 0x02, 0x01, 0x00, 0xFE };
36  byte _reset[4] = { 0x02, 0xA0, 0x00, 0xFF-0xA0 };
37  int _csum;
38  int _state;
39 
40 };
41 
42 class RD200M : public RD200M_interface {
43 public:
44  RD200M(HardwareSerial &serial);
45 private:
46  HardwareSerial* _serial; //Pointer to existing serial object!!
47  int i_available(void){return _serial->available();}
48  int available(void){return _serial->available();}
49  int read(void){ return _serial->read(); }
50  void begin(long b){ _serial->begin(b);}
51  void end(void){ _serial->end();}
52  size_t write(uint8_t b){return _serial->write(b);}
53  int peek(void){return _serial->peek();};
54  void flush(void){_serial->flush();};
55 };
56 
57 class RD200MSoftserial : private SoftwareSerial, public RD200M_interface {
58 public:
62  RD200MSoftserial(uint8_t rxPin, uint8_t txPin);
63 private:
64  int i_available(void){return SoftwareSerial::available();}
65  int read(void){ return SoftwareSerial::read(); }
66  void begin(long b){ SoftwareSerial::begin(b);}
67  void end(void){ SoftwareSerial::end();}
68  int available(void){return SoftwareSerial::available();}
69  size_t write(uint8_t b){return SoftwareSerial::write(b);}
70  int peek(void){return SoftwareSerial::peek();};
71  void flush(void){SoftwareSerial::flush();};
72 };
73 
74 #endif
Definition: RD200M.h:19
Definition: RD200M.h:42
Definition: RD200M.h:57
RD200MSoftserial(uint8_t rxPin, uint8_t txPin)
Definition: RD200M.cpp:92