Exemple #1
0
        private PowerMateState ParseState(byte[] data)
        {
            if (data.Length >= 6)
            {
                PowerMateButtonState buttonState = data[0] == 0 ? PowerMateButtonState.Up : PowerMateButtonState.Down;
                int  knobDisplacement            = data[1] < 128 ? data[1] : -256 + data[1];
                int  ledBrightness              = data[2];
                bool ledPulseEnabled            = (data[4] & 0x01) == 0x01;
                bool ledPulseDuringSleepEnabled = (data[4] & 0x04) == 0x04;
                int  ledPulseSpeedFlags         = (data[4] & 0x30) >> 4;
                int  ledPulseSpeed              = 0;
                switch (ledPulseSpeedFlags)
                {
                case 0: ledPulseSpeed = -data[5]; break;

                case 1: ledPulseSpeed = 0; break;

                case 2: ledPulseSpeed = data[5]; break;
                }

                return(new PowerMateState(buttonState, knobDisplacement, ledBrightness, ledPulseEnabled, ledPulseDuringSleepEnabled, ledPulseSpeed));
            }
            else
            {
                return(new PowerMateState()); // PowerMateState.Invalid() will return false
            }
        }
 /// <summary>
 /// Initializes a new instance (valid) of the PowerMate class.
 /// </summary>
 /// <param name="buttonState"></param>
 /// <param name="knobDisplacement"></param>
 /// <param name="ledBrightness"></param>
 /// <param name="ledPulseEnabled"></param>
 /// <param name="ledPulseDuringSleepEnabled"></param>
 /// <param name="ledPulseSpeed"></param>
 public PowerMateState(PowerMateButtonState buttonState,
                       int knobDisplacement,
                       int ledBrightness,
                       bool ledPulseEnabled,
                       bool ledPulseDuringSleepEnabled,
                       int ledPulseSpeed)
 {
     this.buttonState                = buttonState;
     this.knobDisplacement           = knobDisplacement;
     this.ledBrightness              = ledBrightness;
     this.ledPulseEnabled            = ledPulseEnabled;
     this.ledPulseDuringSleepEnabled = ledPulseDuringSleepEnabled;
     this.ledPulseSpeed              = ledPulseSpeed;
     this.valid = true;
 }
 /// <summary>
 /// Initializes a new instance (valid) of the PowerMate class.
 /// </summary>
 /// <param name="buttonState"></param>
 /// <param name="knobDisplacement"></param>
 /// <param name="ledBrightness"></param>
 /// <param name="ledPulseEnabled"></param>
 /// <param name="ledPulseDuringSleepEnabled"></param>
 /// <param name="ledPulseSpeed"></param>
 public PowerMateState(PowerMateButtonState buttonState,
                       int knobDisplacement,
                       int ledBrightness,
                       bool ledPulseEnabled,
                       bool ledPulseDuringSleepEnabled,
                       int ledPulseSpeed)
 {
     this.buttonState = buttonState;
     this.knobDisplacement = knobDisplacement;
     this.ledBrightness = ledBrightness;
     this.ledPulseEnabled = ledPulseEnabled;
     this.ledPulseDuringSleepEnabled = ledPulseDuringSleepEnabled;
     this.ledPulseSpeed = ledPulseSpeed;
     this.valid = true;
 }