Files

129 lines
3.1 KiB
C++
Raw Permalink Normal View History

#include "porthub.h"
2022-08-11 17:01:46 +08:00
PortHub::PortHub() {
}
2022-08-11 17:01:46 +08:00
PortHub::PortHub(uint8_t iic_addr) {
_iic_addr = iic_addr;
}
2022-08-11 17:01:46 +08:00
void PortHub::begin() {
Wire.begin();
}
2022-07-06 12:15:36 +08:00
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;
2022-07-06 12:15:36 +08:00
2023-03-08 16:52:34 +01:00
Wire.requestFrom(_iic_addr, (uint8_t)2);
2022-07-06 12:15:36 +08:00
while (Wire.available()) {
RegValue_L = Wire.read();
RegValue_H = Wire.read();
}
return (RegValue_H << 8) | RegValue_L;
}
2022-07-06 12:15:36 +08:00
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;
2022-07-06 12:15:36 +08:00
2023-03-08 16:52:34 +01:00
Wire.requestFrom(_iic_addr, (uint8_t)1);
2022-07-06 12:15:36 +08:00
while (Wire.available()) {
RegValue = Wire.read();
}
return RegValue;
2021-07-16 10:39:57 +02:00
}
2022-07-06 12:15:36 +08:00
uint8_t PortHub::hub_d_read_value_B(uint8_t reg) {
Wire.beginTransmission(_iic_addr);
Wire.write(reg | 0x05);
Wire.endTransmission();
2023-03-08 16:13:05 +01:00
uint8_t RegValue = 0;
2022-07-06 12:15:36 +08:00
2023-03-08 16:52:34 +01:00
Wire.requestFrom(_iic_addr, (uint8_t)1);
2022-07-06 12:15:36 +08:00
while (Wire.available()) {
RegValue = Wire.read();
}
return RegValue;
}
2022-07-06 12:15:36 +08:00
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();
}
2022-07-06 12:15:36 +08:00
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();
}
2022-07-06 12:15:36 +08:00
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();
}
2022-07-06 12:15:36 +08:00
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();
}
2022-07-06 12:15:36 +08:00
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();
}
2022-07-06 12:15:36 +08:00
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();
}
2022-07-06 12:15:36 +08:00
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);
2022-07-06 12:15:36 +08:00
Wire.write(count & 0xff);
Wire.write(count >> 8);
2022-07-06 12:15:36 +08:00
Wire.write(r);
Wire.write(g);
Wire.write(b);
Wire.endTransmission();
}
2022-07-06 12:15:36 +08:00
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();
}