emc230x 0.1.0

An async driver for the EMC230x family of fan controllerss
Documentation
enum ErrorRangeOption {
    Rpm_0,
    Rpm_50,
    Rpm_100,
    Rpm_200,
}

#[repr(u8)]
pub enum Registers {
    Configuration = 0x20,
    FanStatus = 0x24,
    FanStallStatus = 0x25,
    FanSpinStatus = 0x26,
    DriveFailStatus = 0x27,
    FanInterruptEnable = 0x29,
    PwmPolarityConfig = 0x2A,
    PwmOutputConfig = 0x2B,
    PwmBaseF45 = 0x2C,
    PwmBaseF123 = 0x2D,
    Fan1Setting = 0x30,
    Pwm1Divide = 0x31,
    Fan1Configuration1 = 0x32,
    Fan1Configuration2 = 0x33,
    Gain1 = 0x35,
    Fan1SpinUpConfiguration = 0x36,
    Fan1MaxStep = 0x37,
    Fan1MinimumDrive = 0x38,
    Fan1ValidTachCount = 0x39,
    Fan1DriveFailBandLowByte = 0x3A,
    Fan1DriveFailBandHighByte = 0x3B,
    Tach1TargetLowByte = 0x3C,
    Tach1TargetHighByte = 0x3D,
    Tach1ReadingHighByte = 0x3E,
    Tach1ReadLowByte = 0x3F,
    Fan2Setting = 0x40,
    Pwm2Divide = 0x41,
    Fan2Configuration1 = 0x42,
    Fan2Configuration2 = 0x43,
    Gain2 = 0x45,
    Fan2SpinUpConfiguration = 0x46,
    Fan2MaxStep = 0x47,
    Fan2MinimumDrive = 0x48,
    Fan2ValidTachCount = 0x49,
    Fan2DriveFailBandLowByte = 0x4A,
    Fan2DriveFailBandHighByte = 0x4B,
    Tach2TargetLowByte = 0x4C,
    Tach2TargetHighByte = 0x4D,
    Tach2ReadingHighByte = 0x4E,
    Tach2ReadLowByte = 0x4F,
    Fan3Setting = 0x50,
    Pwm3Divide = 0x51,
    Fan3Configuration1 = 0x52,
    Fan3Configuration2 = 0x53,
    Gain3 = 0x55,
    Fan3SpinUpConfiguration = 0x56,
    Fan3MaxStep = 0x57,
    Fan3MinimumDrive = 0x58,
    Fan3ValidTachCount = 0x59,
    Fan3DriveFailBandLowByte = 0x5A,
    Fan3DriveFailBandHighByte = 0x5B,
    Tach3TargetLowByte = 0x5C,
    Tach3TargetHighByte = 0x5D,
    Tach3ReadingHighByte = 0x5E,
    Tach3ReadLowByte = 0x5F,
}