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); }
private static void ParseSetMask(LogConfigCommandResponse result, byte[] data) { 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); return; } var scopeDelta = result.Scope * 0x1000; var enabledLogs = new List <LogId>(); for (var i = 0; i < numBits; ++i) { if (BitsUtils.GetBitAsBool(data, 20, i)) { var v = i + scopeDelta; enabledLogs.Add((LogId)v); } } result.LogIds = enabledLogs.ToArray(); }
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); }
private static LogConfigCommandResponse ParseData(LogConfigCommandResponse result, byte[] data) { var pos = 14; var count = (data.Length - pos) / 2; var logIds = new LogId[count]; for (var i = 0; i < count; ++i) { logIds[i] = (LogId)BitConverter.ToUInt16(data, pos); pos += 2; } result.LogIds = logIds; return(result); }