mirror of
https://github.com/m5stack/M5Stack.git
synced 2026-05-20 10:06:46 -07:00
porthub.cpp:38:34: warning: ISO C++ says that these are ambiguous, even though the worst conversion for the first is better than the worst conversion for the second:
129 lines
3.1 KiB
C++
129 lines
3.1 KiB
C++
#include "porthub.h"
|
|
|
|
PortHub::PortHub() {
|
|
}
|
|
|
|
PortHub::PortHub(uint8_t iic_addr) {
|
|
_iic_addr = iic_addr;
|
|
}
|
|
|
|
void PortHub::begin() {
|
|
Wire.begin();
|
|
}
|
|
|
|
uint16_t PortHub::hub_a_read_value(uint8_t reg) {
|
|
Wire.beginTransmission(_iic_addr);
|
|
Wire.write(reg | 0x06);
|
|
Wire.endTransmission();
|
|
|
|
uint8_t RegValue_L = 0;
|
|
uint8_t RegValue_H = 0;
|
|
|
|
Wire.requestFrom(_iic_addr, (uint8_t)2);
|
|
while (Wire.available()) {
|
|
RegValue_L = Wire.read();
|
|
RegValue_H = Wire.read();
|
|
}
|
|
|
|
return (RegValue_H << 8) | RegValue_L;
|
|
}
|
|
|
|
uint8_t PortHub::hub_d_read_value_A(uint8_t reg) {
|
|
Wire.beginTransmission(_iic_addr);
|
|
Wire.write(reg | 0x04);
|
|
Wire.endTransmission();
|
|
|
|
uint8_t RegValue = 0;
|
|
|
|
Wire.requestFrom(_iic_addr, (uint8_t)1);
|
|
while (Wire.available()) {
|
|
RegValue = Wire.read();
|
|
}
|
|
return RegValue;
|
|
}
|
|
|
|
uint8_t PortHub::hub_d_read_value_B(uint8_t reg) {
|
|
Wire.beginTransmission(_iic_addr);
|
|
Wire.write(reg | 0x05);
|
|
Wire.endTransmission();
|
|
|
|
uint8_t RegValue = 0;
|
|
|
|
Wire.requestFrom(_iic_addr, (uint8_t)1);
|
|
while (Wire.available()) {
|
|
RegValue = Wire.read();
|
|
}
|
|
return RegValue;
|
|
}
|
|
|
|
void PortHub::hub_d_wire_value_A(uint8_t reg, uint16_t level) {
|
|
Wire.beginTransmission(_iic_addr);
|
|
Wire.write(reg | 0x00);
|
|
Wire.write(level & 0xff);
|
|
Wire.endTransmission();
|
|
}
|
|
|
|
void PortHub::hub_d_wire_value_B(uint8_t reg, uint16_t level) {
|
|
Wire.beginTransmission(_iic_addr);
|
|
Wire.write(reg | 0x01);
|
|
Wire.write(level & 0xff);
|
|
Wire.endTransmission();
|
|
}
|
|
|
|
void PortHub::hub_a_wire_value_A(uint8_t reg, uint16_t duty) {
|
|
Wire.beginTransmission(_iic_addr);
|
|
Wire.write(reg | 0x02);
|
|
Wire.write(duty & 0xff);
|
|
Wire.endTransmission();
|
|
}
|
|
|
|
void PortHub::hub_a_wire_value_B(uint8_t reg, uint16_t duty) {
|
|
Wire.beginTransmission(_iic_addr);
|
|
Wire.write(reg | 0x03);
|
|
Wire.write(duty & 0xff);
|
|
Wire.endTransmission();
|
|
}
|
|
|
|
void PortHub::hub_wire_length(uint8_t reg, uint16_t length) {
|
|
Wire.beginTransmission(_iic_addr);
|
|
Wire.write(reg | 0x08);
|
|
Wire.write(length & 0xff);
|
|
Wire.write(length >> 8);
|
|
Wire.endTransmission();
|
|
}
|
|
|
|
void PortHub::hub_wire_index_color(uint8_t reg, uint16_t num, uint8_t r,
|
|
int8_t g, uint8_t b) {
|
|
Wire.beginTransmission(_iic_addr);
|
|
Wire.write(reg | 0x09);
|
|
Wire.write(num & 0xff);
|
|
Wire.write(num >> 8);
|
|
Wire.write(r);
|
|
Wire.write(g);
|
|
Wire.write(b);
|
|
Wire.endTransmission();
|
|
}
|
|
|
|
void PortHub::hub_wire_fill_color(uint8_t reg, uint16_t first, uint16_t count,
|
|
uint8_t r, int8_t g, uint8_t b) {
|
|
Wire.beginTransmission(_iic_addr);
|
|
Wire.write(reg | 0x0a);
|
|
Wire.write(first & 0xff);
|
|
Wire.write(first >> 8);
|
|
|
|
Wire.write(count & 0xff);
|
|
Wire.write(count >> 8);
|
|
|
|
Wire.write(r);
|
|
Wire.write(g);
|
|
Wire.write(b);
|
|
Wire.endTransmission();
|
|
}
|
|
|
|
void PortHub::hub_wire_setBrightness(uint8_t reg, uint8_t brightness) {
|
|
Wire.beginTransmission(_iic_addr);
|
|
Wire.write(reg | 0x0b);
|
|
Wire.write(brightness & 0xff);
|
|
Wire.endTransmission();
|
|
}
|