Esempio n. 1
0
        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;
 }