// PAGE new public PDU Decode(BACPacket cm) { cm.getNextByte(); invokerId = cm.getNextByte(); serviceChoseError = (BACNET_ServiceChoice_Error)cm.getNextByte(); Bv1 = new BACVnetVar().Decode(cm); Bv2 = new BACVnetVar().Decode(cm); return(this); }
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); }
public virtual BACVnetVar Decode(BACPacket cm) { byte tag = cm.getByte(); switch (DecodeClass(tag)) { case CLASS.APPLICATION: CONTEXT_TAG ct = (CONTEXT_TAG)(cm.getByte() >> 4); return(Decode(cm, ct)); case CLASS.CONTEXT: // IF this is an Openning Tag if ((tag & 0x0F) == 0x0E) { BACVnetConstructed constr = new BACVnetConstructed(); cm.getNextByte(); while (cm.hasMore() == true) { tag = cm.getByte(); // IF this is the closing Tag if ((tag & 0x0F) == 0x0F) { cm.getNextByte(); break; } BACVnetVar vn = new BACVnetVar().Decode(cm); constr.AddVar(vn); //constr.AddVar(cm.getNextByte()); } return(constr); } else { // This would be an error ?? CONTEXT_TAG ct1 = (CONTEXT_TAG)(cm.getByte() >> 4); return(Decode(cm, ct1)); } default: break; } return(this); }
public void AddVar(BACVnetVar v) { VarArr.Add(v); }