public FrontTorqueMessage(byte[] payload) { payload.RequireBytes(RequireBytes); FrontTorqueRequest = new NewtonMeter(BitArrayConverter.ToInt16(payload, 12, 13) * 2m); FrontTorque = new NewtonMeter(BitArrayConverter.ToInt16(payload, 27, 13) * 2m); FrontAxleRpm = new RevolutionsPerMinute(BitArrayConverter.ToInt16(payload, 40, 16) * 0.1m); }
public BatteryPowerMessage(byte[] payload) { payload.RequireBytes(RequireBytes); BatteryVoltage = new Volt(BitArrayConverter.ToUInt16(payload, 0, 16) / 100.0m); BatteryCurrentSmooth = new Ampere(BitArrayConverter.ToInt16(payload, 16, 15) * -0.01m); BatteryCurrentRaw = new Ampere(BitArrayConverter.ToInt16(payload, 32, 16) * -0.05m + 500m); ChargeTimeRemaining = TimeSpan.FromMinutes(BitArrayConverter.ToUInt16(payload, 48, 12)); }
public BatteryInfoMessage(byte[] payload) { payload.RequireBytes(RequireBytes); BmsNumberOfContactors = BitArrayConverter.ToUInt16(payload, 8, 3); BmsState = BitArrayConverter.ToUInt16(payload, 11, 4); IsolationResistance = new KiloOhm(BitArrayConverter.ToInt16(payload, 19, 10)); BmsChargeStatus = BitArrayConverter.ToUInt16(payload, 32, 3); BmsChargePowerAvailable = new KiloWatt(BitArrayConverter.ToUInt16(payload, 38, 11) * 0.125m); MinBatteryTemperature = new Celsius(BitArrayConverter.ToUInt16(payload, 56, 8) * 0.5m - 40m); }