|
6 | 6 |
|
7 | 7 | #include "Adafruit_GenericDevice.h" |
8 | 8 |
|
9 | | -/*! @brief Create a Generic device with the provided read/write functions |
10 | | - @param read_func Function pointer for reading raw data |
11 | | - @param write_func Function pointer for writing raw data |
12 | | - @param readreg_func Function pointer for reading registers (optional) |
13 | | - @param writereg_func Function pointer for writing registers (optional) */ |
| 9 | +/*! |
| 10 | + * @brief Create a Generic device with the provided read/write functions |
| 11 | + * @param obj Pointer to object instance |
| 12 | + * @param read_func Function pointer for reading raw data |
| 13 | + * @param write_func Function pointer for writing raw data |
| 14 | + * @param readreg_func Function pointer for reading registers (optional) |
| 15 | + * @param writereg_func Function pointer for writing registers (optional) */ |
14 | 16 | Adafruit_GenericDevice::Adafruit_GenericDevice( |
15 | | - busio_genericdevice_read_t read_func, |
| 17 | + void *obj, busio_genericdevice_read_t read_func, |
16 | 18 | busio_genericdevice_write_t write_func, |
17 | 19 | busio_genericdevice_readreg_t readreg_func, |
18 | 20 | busio_genericdevice_writereg_t writereg_func) { |
| 21 | + _obj = obj; |
19 | 22 | _read_func = read_func; |
20 | 23 | _write_func = write_func; |
21 | 24 | _readreg_func = readreg_func; |
22 | 25 | _writereg_func = writereg_func; |
23 | 26 | _begun = false; |
24 | 27 | } |
25 | 28 |
|
26 | | -/*! @brief Initializes the device |
27 | | - @return true if initialization was successful, otherwise false */ |
| 29 | +/*! @brief Simple begin function (doesn't do much at this time) |
| 30 | + @return true always |
| 31 | +*/ |
28 | 32 | bool Adafruit_GenericDevice::begin(void) { |
29 | 33 | _begun = true; |
30 | 34 | return true; |
31 | 35 | } |
32 | 36 |
|
33 | 37 | /*! @brief Write a buffer of data |
34 | | - @param buffer Pointer to buffer of data to write |
35 | | - @param len Number of bytes to write |
36 | | - @return true if write was successful, otherwise false */ |
| 38 | + @param buffer Pointer to buffer of data to write |
| 39 | + @param len Number of bytes to write |
| 40 | + @return true if write was successful, otherwise false */ |
37 | 41 | bool Adafruit_GenericDevice::write(const uint8_t *buffer, size_t len) { |
38 | 42 | if (!_begun) |
39 | 43 | return false; |
40 | | - return _write_func(buffer, len); |
| 44 | + return _write_func(_obj, buffer, len); |
41 | 45 | } |
42 | 46 |
|
43 | 47 | /*! @brief Read data into a buffer |
44 | | - @param buffer Pointer to buffer to read data into |
45 | | - @param len Number of bytes to read |
46 | | - @return true if read was successful, otherwise false */ |
| 48 | + @param buffer Pointer to buffer to read data into |
| 49 | + @param len Number of bytes to read |
| 50 | + @return true if read was successful, otherwise false */ |
47 | 51 | bool Adafruit_GenericDevice::read(uint8_t *buffer, size_t len) { |
48 | 52 | if (!_begun) |
49 | 53 | return false; |
50 | | - return _read_func(buffer, len); |
| 54 | + return _read_func(_obj, buffer, len); |
51 | 55 | } |
52 | 56 |
|
53 | 57 | /*! @brief Read from a register location |
54 | | - @param addr_buf Buffer containing register address |
55 | | - @param addrsiz Size of register address in bytes |
56 | | - @param buf Buffer to store read data |
57 | | - @param bufsiz Size of data to read in bytes |
58 | | - @return true if read was successful, otherwise false */ |
| 58 | + @param addr_buf Buffer containing register address |
| 59 | + @param addrsiz Size of register address in bytes |
| 60 | + @param buf Buffer to store read data |
| 61 | + @param bufsiz Size of data to read in bytes |
| 62 | + @return true if read was successful, otherwise false */ |
59 | 63 | bool Adafruit_GenericDevice::readRegister(uint8_t *addr_buf, uint8_t addrsiz, |
60 | 64 | uint8_t *buf, uint16_t bufsiz) { |
61 | 65 | if (!_begun || !_readreg_func) |
62 | 66 | return false; |
63 | | - return _readreg_func(addr_buf, addrsiz, buf, bufsiz); |
| 67 | + return _readreg_func(_obj, addr_buf, addrsiz, buf, bufsiz); |
64 | 68 | } |
65 | 69 |
|
66 | 70 | /*! @brief Write to a register location |
67 | | - @param addr_buf Buffer containing register address |
68 | | - @param addrsiz Size of register address in bytes |
69 | | - @param buf Buffer containing data to write |
70 | | - @param bufsiz Size of data to write in bytes |
71 | | - @return true if write was successful, otherwise false */ |
| 71 | + @param addr_buf Buffer containing register address |
| 72 | + @param addrsiz Size of register address in bytes |
| 73 | + @param buf Buffer containing data to write |
| 74 | + @param bufsiz Size of data to write in bytes |
| 75 | + @return true if write was successful, otherwise false */ |
72 | 76 | bool Adafruit_GenericDevice::writeRegister(uint8_t *addr_buf, uint8_t addrsiz, |
73 | 77 | const uint8_t *buf, |
74 | 78 | uint16_t bufsiz) { |
75 | 79 | if (!_begun || !_writereg_func) |
76 | 80 | return false; |
77 | | - return _writereg_func(addr_buf, addrsiz, buf, bufsiz); |
| 81 | + return _writereg_func(_obj, addr_buf, addrsiz, buf, bufsiz); |
78 | 82 | } |
0 commit comments