public static LogConfigCommandResponse Parse(byte[] data) { var result = new LogConfigCommandResponse(); result.CheckResponse(data); var status = data[8]; result.IsError = status != 0; result.Operation = (LogConfigOperation)data[4]; switch (result.Operation) { case LogConfigOperation.Disable: case LogConfigOperation.RetrieveIdRanges: case LogConfigOperation.RetrieveValidMask: case LogConfigOperation.GetLMask: ParseData(result, data); break; case LogConfigOperation.SetMask: ParseSetMask(result, data); break; } return(result); }
public static LogConfigCommandResponse Parse(byte[] data) { var result = new LogConfigCommandResponse(); result.CheckResponse(data); var status = data[8]; result.IsError = status != 0; result.Operation = (LogConfigOperation)data[4]; result.Scope = data[12]; var numBits = data[16] + (data[17] << 8); var maskLength = (numBits + 7) / 8; if (data.Length < (maskLength + 16)) { throw new QcdmManagerException(Strings.QcdmInvalidResponseCommand); } var enabledLogs = new List <LogId>(); for (var i = 0; i < numBits; ++i) { if (BitsUtils.GetBitAsBool(data, 20, i)) { var v = i + 0x1000; enabledLogs.Add((LogId)v); } } result.EnabledLogs = enabledLogs.ToArray(); return(result); }