-
Notifications
You must be signed in to change notification settings - Fork 1
/
mcp3423.h
54 lines (38 loc) · 1.47 KB
/
mcp3423.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
// Copyright (c) Christoph M. Wintersteiger
// Licensed under the MIT License.
#ifndef _MCP3423_H_
#define _MCP3423_H_
#include <mutex>
#include "i2c_device.h"
class MCP3423 : public I2CDevice<uint8_t, uint8_t> {
public:
class RegisterTable;
RegisterTable &RT;
MCP3423(const std::string &bus = "/dev/i2c-1", uint8_t device_address = 0x68);
virtual ~MCP3423();
std::string Bus() const { return bus; }
uint8_t DeviceAddress() const { return device_address; }
virtual const char* Name() const override { return "MCP3423"; }
virtual void Write(std::ostream &os) const override;
virtual void Read(std::istream &is) override;
using Device::Read;
using Device::Write;
virtual void Reset() override;
const std::vector<double>& Readings();
const std::vector<int32_t>& RawReadings();
double Reading() const { return last_reading; }
int32_t RawReading() const { return last_raw_reading; }
void Write(const uint8_t &config);
virtual void UpdateInfrequent() override;
virtual uint8_t Read(const uint8_t &addr) override;
virtual std::vector<uint8_t> Read(const uint8_t &addr, size_t length) override;
virtual void Write(const uint8_t &addr, const uint8_t &value) override;
virtual void Write(const uint8_t &addr, const std::vector<uint8_t> &values) override;
virtual void UpdateTimed() override;
protected:
std::vector<double> last_readings;
std::vector<int32_t> last_raw_readings;
double last_reading;
int32_t last_raw_reading;
};
#endif // _MCP3423_H_