#ifndef _IOI2CADT746x_H
#define _IOI2CADT746x_H
#include <IOI2C/IOI2CDevice.h>
#include "ADT746x.h"
#ifdef DLOG
#undef DLOG
#endif
#ifdef IOI2CADT746x_DEBUG
#define DLOG(fmt, args...) IOLog(fmt, ## args)
#else
#define DLOG(fmt, args...) do {} while(0)
#endif
#define ERRLOG(fmt, args...) IOLog(fmt, ## args)
#define kNumRetries 10 // I2C transactions are retried before failing
#define kGetTempSymbol "platform-getTemp"
#define kGetSensorValueSymbol "getSensorValue"
#define kDTSensorParamsVersionKey "hwsensor-params-version"
#define kDTSensorIDKey "hwsensor-id"
#define kDTSensorZoneKey "hwsensor-zone"
#define kDTSensorTypeKey "hwsensor-type"
#define kDTSensorLocationKey "hwsensor-location"
#define kDTSensorPollingPeriodKey "hwsensor-polling-period"
#define kDTTemperatureSensorType "temperature"
#define kDTVoltageSensorType "voltage"
#define kDTFanSpeedSensorType "fanspeed"
#define kHWSensorTemperatureNubName "temp-sensor"
#define kHWSensorVoltageNubName "voltage-sensor"
#define kHWSensorFanSpeedNubName "fanspeed-sensor"
#define kHWSensorParamsVersionKey "version"
#define kHWSensorIDKey "sensor-id"
#define kHWSensorZoneKey "zone"
#define kHWSensorTypeKey "type"
#define kHWSensorLocationKey "location"
#define kHWSensorPollingPeriodKey "polling-period"
#define kFanTachOne 1
#define kFanTachTwo 2
enum {
kHWSensorPollingPeriodNULL = 0xFFFFFFFF
};
class IOI2CADT746x : public IOI2CDevice
{
OSDeclareDefaultStructors(IOI2CADT746x)
private:
UInt8 fDeviceID;
bool fClearSMBAlertStatus;
UInt32 fHWSensorIDMap[6];
const OSSymbol *getSensorValueSymbol;
OSArray *parseSensorParamsAndCreateNubs(IOService *provider);
IOReturn getLocalTemp(SInt32 *temperature);
IOReturn getRemote1Temp(SInt32 *temperature);
IOReturn getRemote2Temp(SInt32 *temperature);
IOReturn getVoltage(SInt32 *voltage);
IOReturn getFanTach(SInt32 *fanSpeed, SInt16 whichFan);
virtual void processPowerEvent(UInt32 eventType);
public:
virtual bool start(IOService *provider);
virtual IOReturn callPlatformFunction(const OSSymbol *functionName,
bool waitForFunction, void *param1, void *param2,
void *param3, void *param4);
};
#endif // _APPLEADT746x_H