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 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 EventMaskSetCommandResponse Parse(byte[] data) { var result = new EventMaskSetCommandResponse(); result.CheckResponse(data); var status = data[1]; result.IsError = status != 0; if (!result.IsError) { var numBits = data[4] + (data[5] << 8); var maskLength = (numBits + 7) / 8; if (data.Length < maskLength + 6) { throw new QcdmManagerException(Strings.QcdmInvalidResponseCommand); } var enabledEvents = new List <EventId>(); for (var i = 0; i < numBits; ++i) { if (BitsUtils.GetBitAsBool(data, 6, i)) { enabledEvents.Add((EventId)i); } } result.EnabledEvents = enabledEvents.ToArray(); } return(result); }