Example #1
0
 private static void ReturnUnmarshalledPdu(object pdu, DataInputStream dStream)
 {
     // Unmarshal is the method name found in each of the PDU classes
     pdu.GetType().InvokeMember("Unmarshal", System.Reflection.BindingFlags.InvokeMethod, null, pdu, new object[] { dStream }, CultureInfo.InvariantCulture);
 }
Example #2
0
        /// <summary>
        /// Used to unmarshal data back into the correct PDU type.
        /// </summary>
        /// <param name="pduType">PDU type</param>
        /// <param name="ds">Datastream which contains the raw packet and Endian Type</param>
        /// <remarks>Added by PES to work with Mobile.</remarks>
        /// <returns>The PDU instance.</returns>
        public static Pdu UnmarshalRawPdu(PduType pduType, DataInputStream ds)
        {
            Pdu pdu = new Pdu();

            switch (pduType)
            {
            case PduType.EntityState:
                EntityStatePdu entityStatePdu = new EntityStatePdu();
                entityStatePdu.Unmarshal(ds);
                pdu = (Pdu)entityStatePdu;
                break;

            case PduType.Fire:
                FirePdu firePdu = new FirePdu();
                firePdu.Unmarshal(ds);
                pdu = (Pdu)firePdu;
                break;

            case PduType.Detonation:
                DetonationPdu detonationPdu = new DetonationPdu();
                detonationPdu.Unmarshal(ds);
                pdu = (Pdu)detonationPdu;
                break;

            case PduType.Collision:
                CollisionPdu collisionPdu = new CollisionPdu();
                collisionPdu.Unmarshal(ds);
                pdu = (Pdu)collisionPdu;
                break;

            case PduType.ServiceRequest:
                ServiceRequestPdu serviceRequestPdu = new ServiceRequestPdu();
                serviceRequestPdu.Unmarshal(ds);
                pdu = (Pdu)serviceRequestPdu;
                break;

            case PduType.ResupplyOffer:
                ResupplyOfferPdu resupplyOfferPdu = new ResupplyOfferPdu();
                resupplyOfferPdu.Unmarshal(ds);
                pdu = (Pdu)resupplyOfferPdu;
                break;

            case PduType.ResupplyReceived:
                ResupplyReceivedPdu resupplyReceivedPdu = new ResupplyReceivedPdu();
                resupplyReceivedPdu.Unmarshal(ds);
                pdu = (Pdu)resupplyReceivedPdu;
                break;

            case PduType.ResupplyCancel:
                ResupplyCancelPdu resupplyCancelPdu = new ResupplyCancelPdu();
                resupplyCancelPdu.Unmarshal(ds);
                pdu = (Pdu)resupplyCancelPdu;
                break;

            case PduType.RepairComplete:
                RepairCompletePdu repairCompletePdu = new RepairCompletePdu();
                repairCompletePdu.Unmarshal(ds);
                pdu = (Pdu)repairCompletePdu;
                break;

            case PduType.RepairResponse:
                RepairResponsePdu repairResponsePdu = new RepairResponsePdu();
                repairResponsePdu.Unmarshal(ds);
                pdu = (Pdu)repairResponsePdu;
                break;

            case PduType.CreateEntity:
                CreateEntityPdu createEntityPdu = new CreateEntityPdu();
                createEntityPdu.Unmarshal(ds);
                pdu = (Pdu)createEntityPdu;
                break;

            case PduType.RemoveEntity:
                RemoveEntityPdu removeEntityPdu = new RemoveEntityPdu();
                removeEntityPdu.Unmarshal(ds);
                pdu = (Pdu)removeEntityPdu;
                break;

            case PduType.StartResume:
                StartResumePdu startResumePdu = new StartResumePdu();
                startResumePdu.Unmarshal(ds);
                pdu = (Pdu)startResumePdu;
                break;

            case PduType.Acknowledge:
                AcknowledgePdu acknowledgePdu = new AcknowledgePdu();
                acknowledgePdu.Unmarshal(ds);
                pdu = (Pdu)acknowledgePdu;
                break;

            case PduType.ActionRequest:
                ActionRequestPdu actionRequestPdu = new ActionRequestPdu();
                actionRequestPdu.Unmarshal(ds);
                pdu = (Pdu)actionRequestPdu;
                break;

            case PduType.ActionResponse:
                ActionResponsePdu actionResponsePdu = new ActionResponsePdu();
                actionResponsePdu.Unmarshal(ds);
                pdu = (Pdu)actionResponsePdu;
                break;

            case PduType.DataQuery:
                DataQueryPdu dataQueryPdu = new DataQueryPdu();
                dataQueryPdu.Unmarshal(ds);
                pdu = (Pdu)dataQueryPdu;
                break;

            case PduType.SetData:
                SetDataPdu setDataPdu = new SetDataPdu();
                setDataPdu.Unmarshal(ds);
                pdu = (Pdu)setDataPdu;
                break;

            case PduType.EventReport:
                EventReportPdu eventReportPdu = new EventReportPdu();
                eventReportPdu.Unmarshal(ds);
                pdu = (Pdu)eventReportPdu;
                break;

            case PduType.Comment:
                CommentPdu commentPdu = new CommentPdu();
                commentPdu.Unmarshal(ds);
                pdu = (Pdu)commentPdu;
                break;

            case PduType.StopFreeze:
                StopFreezePdu stopFreezePdu = new StopFreezePdu();
                stopFreezePdu.Unmarshal(ds);
                pdu = (Pdu)stopFreezePdu;
                break;

            case PduType.Signal:
                SignalPdu signalPdu = new SignalPdu();
                signalPdu.Unmarshal(ds);
                pdu = (Pdu)signalPdu;
                break;

            case PduType.Transmitter:
                TransmitterPdu transmitterPdu = new TransmitterPdu();
                transmitterPdu.Unmarshal(ds);
                pdu = (Pdu)transmitterPdu;
                break;
            }

            return(pdu);
        }
Example #3
0
        /// <summary>
        /// Used to unmarshal data back into the correct PDU type.
        /// </summary>
        /// <param name="pduType">PDU type</param>
        /// <param name="rawPDU">byte array containing the raw packets</param>
        /// <param name="endian">Endian type</param>
        /// <remarks>Added by PES to work with Mobile.</remarks>
        /// <returns>The PDU instance.</returns>
        public static Pdu UnmarshalRawPdu(PduType pduType, byte[] rawPdu, Endian endian)
        {
            DataInputStream ds = new DataInputStream(rawPdu, endian);

            return(UnmarshalRawPdu(pduType, ds));
        }
Example #4
0
 /// <summary>
 /// Used to unmarshal data back into the correct PDU type.
 /// </summary>
 /// <param name="pduType">PDU type</param>
 /// <param name="ds">Datastream which contains the raw packet and Endian Type</param>
 /// <remarks>Added by PES to work with Mobile.</remarks>
 /// <returns>The PDU instance.</returns>
 public static Pdu UnmarshalRawPdu(byte pduType, DataInputStream ds)
 {
     return(UnmarshalRawPdu((PduType)pduType, ds));
 }