OneWire Library for Arduino  version: 1.0.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator
DS248x.h
Go to the documentation of this file.
1 /******************************************************************/
33 #ifndef OneWire_Masters_DS248x
34 #define OneWire_Masters_DS248x
35 
36 #include "Masters/OneWireMaster.h"
37 #include "Wire.h"
38 
39 namespace OneWire
40 {
42  class DS248x : public OneWireMaster
43  {
44  public:
46  enum Register
47  {
48  ConfigReg = 0xC3,
49  StatusReg = 0xF0,
50  ReadDataReg = 0xE1,
51  PortConfigReg = 0xB4,
52  ChannelSelectReg = 0xD2 // DS2482-800 only
53  };
54 
56  class Config
57  {
58  public:
61  bool get1WS() const { return m_1WS; }
62  void set1WS(bool new1WS) { m_1WS = new1WS; }
64 
67  bool getSPU() const { return m_SPU; }
68  void setSPU(bool newSPU) { m_SPU = newSPU; }
70 
73  bool getPDN() const { return m_PDN; }
74  void setPDN(bool newPDN) { m_PDN = newPDN; }
76 
79  bool getAPU() const { return m_APU; }
80  void setAPU(bool newAPU) { m_APU = newAPU; }
82 
84  uint8_t readByte() const;
86  uint8_t writeByte() const;
87 
89  void reset();
90  Config() { reset(); }
91 
92  private:
93  bool m_1WS, m_SPU, m_PDN, m_APU;
94  };
95 
97  DS248x();
98 
101  OneWireMaster::CmdResult begin(uint8_t i2cAdrs = 0x18);
102 
104  void end();
105 
109 
113  OneWireMaster::CmdResult writeConfig(const Config & config, bool verify);
114 
117  Config currentConfig() const { return m_curConfig; }
118 
123  OneWireMaster::CmdResult readRegister(Register reg, uint8_t & buf, bool skipSetPointer = false) const;
124 
131 
133  virtual OneWireMaster::CmdResult OWTriplet(SearchDirection & searchDirection, uint8_t & sbr, uint8_t & tsb);
134 
136  virtual OneWireMaster::CmdResult OWTouchBitSetLevel(uint8_t & sendRecvBit, OWLevel afterLevel);
137  virtual OneWireMaster::CmdResult OWReadByteSetLevel(uint8_t & recvByte, OWLevel afterLevel);
138  virtual OneWireMaster::CmdResult OWWriteByteSetLevel(uint8_t sendByte, OWLevel afterLevel);
139  virtual OneWireMaster::CmdResult OWSetSpeed(OWSpeed newSpeed);
140  virtual OneWireMaster::CmdResult OWSetLevel(OWLevel newLevel);
141 
142  protected:
143  enum Command
144  {
147  AdjustOwPortCmd = 0xC3, // DS2484 only
148  ChannelSelectCmd = 0xC3, // DS2482-800 only
150  OwResetCmd = 0xB4,
155  };
156 
157  uint8_t m_adrs;
159 
163  OneWireMaster::CmdResult pollBusy(uint8_t * pStatus = NULL);
164 
168 
171 
173  OneWireMaster::CmdResult sendCommand(Command cmd, uint8_t param) const;
174 
175  private:
176  int i2c_write(uint8_t i2c_adrs, uint8_t * data, uint8_t num_bytes) const;
177 
178  int i2c_read(uint8_t i2c_adrs, uint8_t * data, uint8_t num_bytes) const;
179  };
180 }
181 
182 #endif
virtual OneWireMaster::CmdResult OWInitMaster()
Definition: DS248x.cpp:109
OneWireMaster::CmdResult reset(void)
Definition: DS248x.cpp:126
OneWireMaster::CmdResult readRegister(Register reg, uint8_t &buf, bool skipSetPointer=false) const
Definition: DS248x.cpp:372
SearchDirection
Search direction for the triplet operation.
Definition: OneWireMaster.h:61
Definition: DS248x.h:50
uint8_t m_adrs
Definition: DS248x.h:157
uint8_t writeByte() const
Byte respresentation that is written to the DS248x.
Definition: DS248x.cpp:76
Definition: DS248x.h:150
Definition: DS248x.h:153
Definition: DS248x.h:49
virtual OneWireMaster::CmdResult OWReset()
Definition: DS248x.cpp:186
void set1WS(bool new1WS)
Definition: DS248x.h:62
void setPDN(bool newPDN)
Definition: DS248x.h:74
Interface to the DS2484, DS2482-100, DS2482-101, DS2482-800 1-Wire masters.
Definition: DS248x.h:42
Register
Device register pointers.
Definition: DS248x.h:46
void end()
End mbr function.
Definition: DS248x.cpp:104
OneWireMaster::CmdResult begin(uint8_t i2cAdrs=0x18)
Definition: DS248x.cpp:95
OWSpeed
Speed of the 1-Wire bus.
Definition: OneWireMaster.h:47
Represents a DS248x configuration.
Definition: DS248x.h:56
Config currentConfig() const
Definition: DS248x.h:117
Command
Definition: DS248x.h:143
OneWireMaster::CmdResult writeConfig(const Config &config, bool verify)
Definition: DS248x.cpp:342
bool getSPU() const
Definition: DS248x.h:67
void reset()
Reset to the power-on default config.
Definition: DS248x.cpp:82
bool getAPU() const
Definition: DS248x.h:79
Config()
Definition: DS248x.h:90
Definition: DS2484.h:41
virtual OneWireMaster::CmdResult OWReadByteSetLevel(uint8_t &recvByte, OWLevel afterLevel)
Definition: DS248x.cpp:276
Definition: DS248x.h:147
DS248x()
Default Constructor.
Definition: DS248x.cpp:91
bool getPDN() const
Definition: DS248x.h:73
virtual OneWireMaster::CmdResult OWSetLevel(OWLevel newLevel)
Set the 1-Wire bus level.
Definition: DS248x.cpp:332
Definition: DS248x.h:52
Definition: DS248x.h:149
Base class for all 1-Wire Masters.
Definition: OneWireMaster.h:43
virtual OneWireMaster::CmdResult OWWriteByteSetLevel(uint8_t sendByte, OWLevel afterLevel)
Definition: DS248x.cpp:250
void setSPU(bool newSPU)
Definition: DS248x.h:68
bool get1WS() const
Definition: DS248x.h:61
virtual OneWireMaster::CmdResult OWTriplet(SearchDirection &searchDirection, uint8_t &sbr, uint8_t &tsb)
Definition: DS248x.cpp:160
OneWireMaster::CmdResult pollBusy(uint8_t *pStatus=NULL)
Definition: DS248x.cpp:387
Definition: DS248x.h:148
Definition: DS248x.h:151
virtual OneWireMaster::CmdResult OWTouchBitSetLevel(uint8_t &sendRecvBit, OWLevel afterLevel)
Definition: DS248x.cpp:216
uint8_t readByte() const
Byte representation that is read from the DS248x.
Definition: DS248x.cpp:54
Definition: DS248x.h:154
OneWireMaster::CmdResult configureLevel(OWLevel level)
Definition: DS248x.cpp:415
OneWireMaster::CmdResult sendCommand(Command cmd) const
Definition: DS248x.cpp:431
void setAPU(bool newAPU)
Definition: DS248x.h:80
OWLevel
Level of the 1-Wire bus.
Definition: OneWireMaster.h:54
CmdResult
Result of all 1-Wire commands.
Definition: OneWireMaster.h:68
Definition: DS248x.h:48
Definition: DS248x.h:145
Definition: DS248x.h:152
virtual OneWireMaster::CmdResult OWSetSpeed(OWSpeed newSpeed)
Set the 1-Wire bus communication speed.
Definition: DS248x.cpp:316
Definition: DS248x.h:51
Config m_curConfig
Definition: DS248x.h:158