private IPsnProtocolCommandPartConfiguration LoadCommandPart(XElement node, string partName, PsnProtocolCommandPartType partType, IIdentifier parentCommandId) { var defParams = LoadDefinedValues(node).ToArray(); var varParams = LoadVariableValues(node).ToArray(); var address = PsnCmdPartExt.GetDefParamInfo(defParams, ParamNameAddress); var commandCode = PsnCmdPartExt.GetDefParamInfo(defParams, ParamNameCommand); var crcHigh = PsnCmdPartExt.GetVarParamInfo(varParams, ParamNameCrcHigh); var crcLow = PsnCmdPartExt.GetVarParamInfo(varParams, ParamNameCrcLow); var atrLen = node.Attribute("Length"); var len = atrLen != null?byte.Parse(atrLen.Value) : (byte)0; var msNode = node.Attribute("CycleMsTime"); var defParamsWithoutAddrAndCmd = defParams.Where(dp => dp.Name != ParamNameAddress && dp.Name != ParamNameCommand).ToArray(); if (msNode != null) { return new CyclePsnCommandPartInfoInfo { PartName = partName, PartType = partType, DefParams = defParamsWithoutAddrAndCmd, VarParams = varParams, Address = address, CommandCode = commandCode, CrcHigh = crcHigh, CrcLow = crcLow, Length = len, CyclePeriod = TimeSpan.FromMilliseconds(int.Parse(msNode.Value)), CommandId = parentCommandId, Id = new IdentifierStringToLowerBased(partName + "@" + parentCommandId) } } ; return(new PsnCommandPartInfo { PartName = partName, PartType = partType, DefParams = defParamsWithoutAddrAndCmd, VarParams = varParams, Address = address, CommandCode = commandCode, CrcHigh = crcHigh, CrcLow = crcLow, Length = len, CommandId = parentCommandId, Id = new IdentifierStringToLowerBased(partName + "@" + parentCommandId) }); }
public PsnCommandPartTypeBuilderFromLowLevel(PsnProtocolCommandPartType val) { _val = val; }