/*---------------------------------------------------------*\ | i2c_smbus_piix4_pawnio.h | | | | PawnIO PIIX4 SMBUS driver for Windows | | | | Stephen Horvath (Steve-Tech) 21 Apr 2025 | | Based on original OpenRGB PIIX4 source code | | | | This file is part of the OpenRGB project | | SPDX-License-Identifier: GPL-2.0-or-later | \*---------------------------------------------------------*/ #pragma once #include #include #include "windows.h" #include "i2c_smbus.h" #define GLOBAL_SMBUS_MUTEX_NAME "Global\\Access_SMBUS.HTP.Method" enum { PAWNIO_SLEEPMODE_ALWAYSBUSY = 0, PAWNIO_SLEEPMODE_SHORTBUSY = 1, PAWNIO_SLEEPMODE_ALWAYSSLEEP = 2, PAWNIO_SLEEPMODE_MAX }; class i2c_smbus_pawnio : public i2c_smbus_interface { public: static std::unordered_map using_handle; i2c_smbus_pawnio(HANDLE handle, std::string name); ~i2c_smbus_pawnio(); static HRESULT start_pawnio(std::string filename, PHANDLE phandle); private: s32 pawnio_read(u8 addr, char read_write, u8 command, int size, i2c_smbus_data *data); s32 pawnio_write(u8 addr, char read_write, u8 command, int size, i2c_smbus_data *data); s32 i2c_smbus_xfer(u8 addr, char read_write, u8 command, int size, i2c_smbus_data* data); s32 i2c_xfer(u8 addr, char read_write, int* size, u8* data); HANDLE global_smbus_access_handle; std::string name; HANDLE handle; };