libDaisy
Hardware Library for Daisy
Loading...
Searching...
No Matches
i2c.h
Go to the documentation of this file.
1#pragma once
2#include "daisy_core.h"
3
4namespace daisy
5{
25{
26 public:
28 struct Config
29 {
31 enum class Mode
32 {
35 };
36
38 enum class Peripheral
39 {
40 I2C_1 = 0,
41 I2C_2,
42 I2C_3,
43 I2C_4,
44 };
45
49 enum class Speed
50 {
53 I2C_1MHZ,
54 };
55
57 struct
58 {
65 // 0x10 is chosen as a default to avoid conflicts with reserved addresses
67 };
68
70 enum class Result
71 {
72 OK,
73 ERR
74 };
75
76 enum class Direction
77 {
78 TRANSMIT,
79 RECEIVE,
80 };
81
82 I2CHandle() : pimpl_(nullptr) {}
83 I2CHandle(const I2CHandle& other) = default;
84 I2CHandle& operator=(const I2CHandle& other) = default;
85
88
90 const Config& GetConfig() const;
91
101 uint8_t* data,
103 uint32_t timeout);
104
114 uint8_t* data,
116 uint32_t timeout);
117
119 typedef void (*CallbackFunctionPtr)(void* context, Result result);
120
141 uint8_t* data,
144 void* callback_context);
145
166 uint8_t* data,
169 void* callback_context);
170
184 uint8_t* data,
186 uint32_t timeout);
187
201 uint8_t* data,
203 uint32_t timeout);
204
205
206 class Impl;
208 private:
209 Impl* pimpl_;
210};
211
212extern "C"
213{
216};
217
218} // namespace daisy
Definition i2c.h:25
I2CHandle(const I2CHandle &other)=default
const Config & GetConfig() const
Result ReadDataAtAddress(uint16_t address, uint16_t mem_address, uint16_t mem_address_size, uint8_t *data, uint16_t data_size, uint32_t timeout)
Result TransmitDma(uint16_t address, uint8_t *data, uint16_t size, CallbackFunctionPtr callback, void *callback_context)
Result Init(const Config &config)
I2CHandle()
Definition i2c.h:82
Result
Definition i2c.h:71
Result ReceiveBlocking(uint16_t address, uint8_t *data, uint16_t size, uint32_t timeout)
void(* CallbackFunctionPtr)(void *context, Result result)
Definition i2c.h:119
I2CHandle & operator=(const I2CHandle &other)=default
Direction
Definition i2c.h:77
Result TransmitBlocking(uint16_t address, uint8_t *data, uint16_t size, uint32_t timeout)
Result ReceiveDma(uint16_t address, uint8_t *data, uint16_t size, CallbackFunctionPtr callback, void *callback_context)
Result WriteDataAtAddress(uint16_t address, uint16_t mem_address, uint16_t mem_address_size, uint8_t *data, uint16_t data_size, uint32_t timeout)
Definition leddriver.h:33
Hardware defines and helpers for daisy field platform.
Definition index.h:2
void dsy_i2c_global_init()
Definition i2c.h:29
Mode
Definition i2c.h:32
dsy_gpio_pin scl
Definition i2c.h:59
Mode mode
Definition i2c.h:64
Speed
Definition i2c.h:50
Speed speed
Definition i2c.h:63
dsy_gpio_pin sda
Definition i2c.h:60
struct daisy::I2CHandle::Config::@13 pin_config
uint8_t address
Definition i2c.h:66
Peripheral periph
Definition i2c.h:56
Peripheral
Definition i2c.h:39
Definition daisy_core.h:205