#include "porthub.h" PortHub::PortHub(){ } 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(); }