#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, RegValue_H; Wire.requestFrom(_iic_addr, 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; Wire.requestFrom(_iic_addr, 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; Wire.requestFrom(_iic_addr, 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(); }