public static ExtMessageConfigCommandResponse Parse(byte[] data) { var result = new ExtMessageConfigCommandResponse(); result.CheckResponse(data); var command = (ExtMessageConfigOperation)data[1]; switch (command) { case ExtMessageConfigOperation.Disable: case ExtMessageConfigOperation.RetrieveIdRanges: ParseMessages(result, data); break; case ExtMessageConfigOperation.RetrieveValidMask: ParseRetrieveValidMask(result, data); break; case ExtMessageConfigOperation.SetMask: ParseSetMask(result, data); break; } return(result); }
public static ExtMessageConfigCommandResponse Parse(byte[] data) { var result = new ExtMessageConfigCommandResponse(); result.CheckResponse(data); var command = data[1]; var status = data[6]; result.IsError = status == 0; var start = data[2] + (data[3] << 8); var end = data[4] + (data[5] << 8); var maskLength = end - start + 1; if (data.Length < (maskLength + 8)) { throw new QcdmManagerException(Strings.QcdmInvalidResponseCommand); } var enabledMessages = new List <MessageId>(); for (var i = 0; i < maskLength; ++i) { var ind = i * 4 + 8; if (ind < data.Length) { var v = data[ind] + (data[ind + 1] << 8) + (data[ind + 2] << 16) + (data[ind + 3] << 24); if (v != 0) { enabledMessages.Add((MessageId)(i + start)); } } } result.EnabledMessages = enabledMessages.ToArray(); return(result); }