2019-05-29 09:41:49 +08:00
|
|
|
#include "porthub.h"
|
|
|
|
|
|
2022-08-11 17:01:46 +08:00
|
|
|
PortHub::PortHub() {
|
|
|
|
|
}
|
2019-05-29 09:41:49 +08:00
|
|
|
|
2022-08-11 17:01:46 +08:00
|
|
|
PortHub::PortHub(uint8_t iic_addr) {
|
|
|
|
|
_iic_addr = iic_addr;
|
|
|
|
|
}
|
2019-05-29 09:41:49 +08:00
|
|
|
|
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();
|
|
|
|
|
|
2023-03-08 16:15:51 +01:00
|
|
|
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;
|
2019-05-29 09:41:49 +08:00
|
|
|
}
|
|
|
|
|
|
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();
|
|
|
|
|
|
2023-03-08 16:15:51 +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;
|
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;
|
2019-05-29 09:41:49 +08:00
|
|
|
}
|
|
|
|
|
|
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();
|
|
|
|
|
}
|
2019-05-29 09:41:49 +08:00
|
|
|
|
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();
|
|
|
|
|
}
|
2019-05-29 09:41:49 +08:00
|
|
|
|
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();
|
|
|
|
|
}
|
2019-05-29 09:41:49 +08:00
|
|
|
|
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();
|
|
|
|
|
}
|
2019-05-29 09:41:49 +08:00
|
|
|
|
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();
|
|
|
|
|
}
|
2019-05-29 09:41:49 +08:00
|
|
|
|
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();
|
|
|
|
|
}
|
2019-05-29 09:41:49 +08:00
|
|
|
|
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);
|
2019-05-29 09:41:49 +08:00
|
|
|
|
2022-07-06 12:15:36 +08:00
|
|
|
Wire.write(count & 0xff);
|
|
|
|
|
Wire.write(count >> 8);
|
2019-05-29 09:41:49 +08:00
|
|
|
|
2022-07-06 12:15:36 +08:00
|
|
|
Wire.write(r);
|
|
|
|
|
Wire.write(g);
|
|
|
|
|
Wire.write(b);
|
|
|
|
|
Wire.endTransmission();
|
|
|
|
|
}
|
2019-05-29 09:41:49 +08:00
|
|
|
|
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();
|
|
|
|
|
}
|