mirror of
https://github.com/CalcProgrammer1/OpenRGB.git
synced 2025-12-28 09:47:50 -05:00
66 lines
2.1 KiB
C++
66 lines
2.1 KiB
C++
/*---------------------------------------------------------*\
|
|
| ENESMBusInterface_i2c_smbus.cpp |
|
|
| |
|
|
| ENE SMBus interface for I2C/SMBus |
|
|
| |
|
|
| Adam Honse (CalcProgrammer1) 21 Nov 2021 |
|
|
| |
|
|
| This file is part of the OpenRGB project |
|
|
| SPDX-License-Identifier: GPL-2.0-only |
|
|
\*---------------------------------------------------------*/
|
|
|
|
#include "ENESMBusInterface_i2c_smbus.h"
|
|
|
|
ENESMBusInterface_i2c_smbus::ENESMBusInterface_i2c_smbus(i2c_smbus_interface* bus)
|
|
{
|
|
this->bus = bus;
|
|
}
|
|
|
|
ENESMBusInterface_i2c_smbus::~ENESMBusInterface_i2c_smbus()
|
|
{
|
|
|
|
}
|
|
|
|
ene_interface_type ENESMBusInterface_i2c_smbus::GetInterfaceType()
|
|
{
|
|
return(ENE_INTERFACE_TYPE_I2C_SMBUS);
|
|
}
|
|
|
|
std::string ENESMBusInterface_i2c_smbus::GetLocation()
|
|
{
|
|
std::string return_string(bus->device_name);
|
|
return("I2C: " + return_string);
|
|
}
|
|
|
|
int ENESMBusInterface_i2c_smbus::GetMaxBlock()
|
|
{
|
|
return(3);
|
|
}
|
|
|
|
unsigned char ENESMBusInterface_i2c_smbus::ENERegisterRead(ene_dev_id dev, ene_register reg)
|
|
{
|
|
//Write ENE register
|
|
bus->i2c_smbus_write_word_data(dev, 0x00, ((reg << 8) & 0xFF00) | ((reg >> 8) & 0x00FF));
|
|
|
|
//Read ENE value
|
|
return(bus->i2c_smbus_read_byte_data(dev, 0x81));
|
|
}
|
|
|
|
void ENESMBusInterface_i2c_smbus::ENERegisterWrite(ene_dev_id dev, ene_register reg, unsigned char val)
|
|
{
|
|
//Write ENE register
|
|
bus->i2c_smbus_write_word_data(dev, 0x00, ((reg << 8) & 0xFF00) | ((reg >> 8) & 0x00FF));
|
|
|
|
//Write ENE value
|
|
bus->i2c_smbus_write_byte_data(dev, 0x01, val);
|
|
}
|
|
|
|
void ENESMBusInterface_i2c_smbus::ENERegisterWriteBlock(ene_dev_id dev, ene_register reg, unsigned char * data, unsigned char sz)
|
|
{
|
|
//Write ENE register
|
|
bus->i2c_smbus_write_word_data(dev, 0x00, ((reg << 8) & 0xFF00) | ((reg >> 8) & 0x00FF));
|
|
|
|
//Write ENE block data
|
|
bus->i2c_smbus_write_block_data(dev, 0x03, sz, data);
|
|
}
|