public override APDUService Decode(BACPacket cm) { if (cm.hasMore() == true) { ObjId = (BACVnetObjectIdentifier) new BACVnetObjectIdentifier().Decode(cm, BACVnetVar.CONTEXT_TAG.OBJECT); } else { MissReqPar = true; return(this); } if (cm.hasMore() == true) { PropId = new BACVnetPropertyId().Decode(cm, BACVnetVar.CONTEXT_TAG.ENUM); } else { MissReqPar = true; return(this); } // Index of the desired property to read (if requesting the data) // If omitted with an array value; returns the entire array list if (cm.hasMore() == true) { if (cm.GetAction() == BACPacket.Action_Type.REQUEST) { switch (ObjId.getObjectType()) { case BACVnetObjectIdentifier.BACnetObjectType.ANALOG_INPUT: case BACVnetObjectIdentifier.BACnetObjectType.ANALOG_OUTPUT: case BACVnetObjectIdentifier.BACnetObjectType.ANALOG_VALUE: AnyVar = new BACVnetVar().Decode(cm, BACVnetVar.CONTEXT_TAG.REAL); break; case BACVnetObjectIdentifier.BACnetObjectType.BINARY_INPUT: case BACVnetObjectIdentifier.BACnetObjectType.BINARY_OUTPUT: case BACVnetObjectIdentifier.BACnetObjectType.BINARY_VALUE: AnyVar = new BACVnetVar().Decode(cm, BACVnetVar.CONTEXT_TAG.BSTRING); break; default: break; } } else { AnyVar = new BACVnetVar().Decode(cm); } } return(this); }