libctr9
Nintendo 3DS ARM9 library
i2c.h
1 #pragma once
2 
3 #include <stdint.h>
4 #include <stddef.h>
5 #include <stdbool.h>
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
11 #define I2C1_REG_OFF 0x10161000
12 #define I2C2_REG_OFF 0x10144000
13 #define I2C3_REG_OFF 0x10148000
14 
15 #define I2C_REG_DATA 0
16 #define I2C_REG_CNT 1
17 #define I2C_REG_CNTEX 2
18 #define I2C_REG_SCL 4
19 
20 #define I2C_DEV_MCU 3
21 #define I2C_DEV_GYRO 10
22 #define I2C_DEV_IR 13
23 
24 uint8_t i2cGetDeviceBusId(uint8_t device_id);
25 uint8_t i2cGetDeviceRegAddr(uint8_t device_id);
26 
27 volatile uint8_t* i2cGetDataReg(uint8_t bus_id);
28 volatile uint8_t* i2cGetCntReg(uint8_t bus_id);
29 
30 void i2cWaitBusy(uint8_t bus_id);
31 bool i2cGetResult(uint8_t bus_id);
32 uint8_t i2cGetData(uint8_t bus_id);
33 void i2cStop(uint8_t bus_id, uint8_t arg0);
34 
35 bool i2cSelectDevice(uint8_t bus_id, uint8_t dev_reg);
36 bool i2cSelectRegister(uint8_t bus_id, uint8_t reg);
37 
38 uint8_t i2cReadRegister(uint8_t dev_id, uint8_t reg);
39 bool i2cWriteRegister(uint8_t dev_id, uint8_t reg, uint8_t data);
40 
41 bool i2cReadRegisterBuffer(uint8_t dev_id, uint8_t reg, uint8_t *buffer, size_t buf_size);
42 bool i2cWriteRegisterBuffer(uint8_t dev_id, uint8_t reg, const uint8_t *buffer, size_t buf_size);
43 
44 #ifdef __cplusplus
45 }
46 #endif
47