Krolyxon
Commit 1d55752

Branches

Tags

Refs →

orion-rf.piolibdepsesp32-s3-n16r8Adafruit BusIOAdafruit_GenericDevice.h

56 lines · 2.2 KB · Objective-C

1#ifndef ADAFRUIT_GENERICDEVICE_H
2#define ADAFRUIT_GENERICDEVICE_H
3
4#include <Arduino.h>
5
6typedef bool (*busio_genericdevice_read_t)(void *obj, uint8_t *buffer,
7 size_t len);
8typedef bool (*busio_genericdevice_write_t)(void *obj, const uint8_t *buffer,
9 size_t len);
10typedef bool (*busio_genericdevice_readreg_t)(void *obj, uint8_t *addr_buf,
11 uint8_t addrsiz, uint8_t *data,
12 uint16_t datalen);
13typedef bool (*busio_genericdevice_writereg_t)(void *obj, uint8_t *addr_buf,
14 uint8_t addrsiz,
15 const uint8_t *data,
16 uint16_t datalen);
17
18/*!
19 * @brief Class for communicating with a device via generic read/write functions
20 */
21class Adafruit_GenericDevice {
22public:
23 Adafruit_GenericDevice(
24 void *obj, busio_genericdevice_read_t read_func,
25 busio_genericdevice_write_t write_func,
26 busio_genericdevice_readreg_t readreg_func = nullptr,
27 busio_genericdevice_writereg_t writereg_func = nullptr);
28
29 bool begin(void);
30 void end(void);
31
32 bool read(uint8_t *buffer, size_t len);
33 bool write(const uint8_t *buffer, size_t len);
34 bool readRegister(uint8_t *addr_buf, uint8_t addrsiz, uint8_t *buf,
35 uint16_t bufsiz);
36 bool writeRegister(uint8_t *addr_buf, uint8_t addrsiz, const uint8_t *buf,
37 uint16_t bufsiz);
38
39protected:
40 /*! @brief Function pointer for reading raw data from the device */
41 busio_genericdevice_read_t _read_func;
42 /*! @brief Function pointer for writing raw data to the device */
43 busio_genericdevice_write_t _write_func;
44 /*! @brief Function pointer for reading a 'register' from the device */
45 busio_genericdevice_readreg_t _readreg_func;
46 /*! @brief Function pointer for writing a 'register' to the device */
47 busio_genericdevice_writereg_t _writereg_func;
48
49 bool _begun; ///< whether we have initialized yet (in case the function needs
50 ///< to do something)
51
52private:
53 void *_obj; ///< Pointer to object instance
54};
55
56#endif // ADAFRUIT_GENERICDEVICE_H