///<summary>
        ///Marshal the data to the DataOutputStream.  Note: Length needs to be set before calling this method
        ///</summary>
        public new void marshal(DataOutputStream dos)
        {
            base.marshal(dos);
            try
            {
                _radioEntityType.marshal(dos);
                dos.writeByte((byte)_transmitState);
                dos.writeByte((byte)_inputSource);
                dos.writeUshort((ushort)_padding1);
                _antennaLocation.marshal(dos);
                _relativeAntennaLocation.marshal(dos);
                dos.writeUshort((ushort)_antennaPatternType);
                dos.writeUshort((ushort)_antennaPatternList.Count);
                dos.writeUlong((ulong)_frequency);
                dos.writeFloat((float)_transmitFrequencyBandwidth);
                dos.writeFloat((float)_power);
                _modulationType.marshal(dos);
                dos.writeUshort((ushort)_cryptoSystem);
                dos.writeUshort((ushort)_cryptoKeyId);
                dos.writeByte((byte)_modulationParametersList.Count);
                dos.writeUshort((ushort)_padding2);
                dos.writeByte((byte)_padding3);

                for(int idx = 0; idx < _modulationParametersList.Count; idx++)
                {
                    Vector3Float aVector3Float = (Vector3Float)_modulationParametersList[idx];
                    aVector3Float.marshal(dos);
                } // end of list marshalling

                for(int idx = 0; idx < _antennaPatternList.Count; idx++)
                {
                    Vector3Float aVector3Float = (Vector3Float)_antennaPatternList[idx];
                    aVector3Float.marshal(dos);
                } // end of list marshalling

            } // end try
            catch(Exception e)
            {
                Trace.WriteLine(e);
                Trace.Flush();
            }
        }