From d208d45aa4f1895f22a3504355da8c8b6e2266fe Mon Sep 17 00:00:00 2001 From: Andrea Bulgarelli Date: Mon, 26 May 2014 11:20:37 +0200 Subject: [PATCH] changes on comments --- .../xcshareddata/PacketLib.xccheckout | 2 +- .../UserInterfaceState.xcuserstate | Bin 40646 -> 41344 bytes include/InputPacketStream.h | 3 +-- include/Packet.h | 21 +++++++++++------- include/PacketStream.h | 15 +++++++------ include/PartOfPacket.h | 4 +--- 6 files changed, 24 insertions(+), 21 deletions(-) diff --git a/PacketLib.xcodeproj/project.xcworkspace/xcshareddata/PacketLib.xccheckout b/PacketLib.xcodeproj/project.xcworkspace/xcshareddata/PacketLib.xccheckout index 2975829..46757d4 100644 --- a/PacketLib.xcodeproj/project.xcworkspace/xcshareddata/PacketLib.xccheckout +++ b/PacketLib.xcodeproj/project.xcworkspace/xcshareddata/PacketLib.xccheckout @@ -5,7 +5,7 @@ IDESourceControlProjectFavoriteDictionaryKey IDESourceControlProjectIdentifier - C0D7884D-D58B-4D06-B8C5-B1FECC0AA1D1 + E78724CD-2D6E-4FB5-8CA7-AC2C1C56AE1B IDESourceControlProjectName PacketLib IDESourceControlProjectOriginsDictionary diff --git a/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate b/PacketLib.xcodeproj/project.xcworkspace/xcuserdata/bulgarelli.xcuserdatad/UserInterfaceState.xcuserstate index 61f0f56dc3bcede999e319d2d6962bd9e8a72a94..4f72555a58e0e34791eba6cb7eae71acac84e691 100644 GIT binary patch literal 41344 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 G>jMBw{nc9l literal 40646 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 diff --git a/include/InputPacketStream.h b/include/InputPacketStream.h index 334f688..19d9c34 100644 --- a/include/InputPacketStream.h +++ b/include/InputPacketStream.h @@ -42,8 +42,7 @@ public: /// This method read a telemetry packet /// \pre The setInput method must be invocated - /// \param bDecode if true decode the method will decode the data fields. - /// \return A pointer telemetry packet. Make attention: the object returned is one of the TM packet object of the array of this object. Don't delete it! + /// \return A pointer of the packet. Make attention: the object returned is one of the TM packet object of the array of this object. Don't delete it! Packet* readPacket() throw(PacketExceptionIO*); diff --git a/include/Packet.h b/include/Packet.h index e8152b6..271b382 100644 --- a/include/Packet.h +++ b/include/Packet.h @@ -56,26 +56,27 @@ public: virtual bool createPacketType(char* fileName, bool prefix, word dimprefix) throw (PacketException*); - /// Sets the ByteStream. + /// Decode the packet /// \param stream A pointer to the stream of byte, with prefix and packet /// \param checkPacketLenght if true check the packet lenght and set the packet stream, if false do not check the packet lenght virtual bool decode(ByteStreamPtr stream, bool checkPacketLenght = false); - /// Sets the ByteStream. + /// Decode the packet /// \param prefix A pointer to the stream of byte, with the prefix /// \param packet A pointer to the stream of byte, with the packet /// \param checkPacketLenght if true check the packet lenght and set the packet stream, if false do not check the packet lenght virtual bool decode(ByteStreamPtr prefix, ByteStreamPtr packet, bool checkPacketLenght = false); - /// Sets the ByteStream. + /// Decode the packet /// \param prefix A pointer to the stream of byte, with the prefix /// \param packetHeader A pointer to the stream of byte, with the packet header /// \param packetHeader A pointer to the stream of byte, with the packet data field /// \param checkPacketLenght if true check the packet lenght and set the packet stream, if false do not check the packet lenght virtual bool decode(ByteStreamPtr prefix, ByteStreamPtr packetHeader, ByteStreamPtr packetDataField, bool checkPacketLenght = false); + /// Verify the content of the packet (after the decode) ///\return true is the packet contained into the stream is recognized using identifiers. - ///\pre the ByteStream is set with one of set(ByteStream) methods + ///\pre the ByteStream is set with one of decode(ByteStream) methods virtual bool verify(); ///\return compress the data section and change the packet (the variable part of the "source data field") @@ -85,10 +86,13 @@ public: ///\return decompress the data section without changing the packet (the variable part of the "source data field") virtual ByteStreamPtr decompressData(); + ///Get the compression algorithm used for this packet virtual enum CompressionAlgorithms getCompressionAlgorithm(); + ///Get the compression level used for this packet virtual word getCompressionLevel(); + ///\return true if the packet is compressed bool isCompressed() { if(compressible && getCompressionAlgorithm() != NONE) return true; @@ -96,6 +100,7 @@ public: return false; } + ///\return true is the packet is compressible, i.e. there are the useful fields that can store the information of the compression bool isCompressible() { return compressible; } @@ -127,16 +132,16 @@ public: ///Get the tail as a ByteStream ByteStreamPtr getBSTail(); - /// + ///Get the header PacketHeader* getPacketHeader(); - /// + ///Get the data field header DataFieldHeader* getPacketDataFieldHeader(); - /// + ///Get the source data field SourceDataField* getPacketSourceDataField(); - /// + ///Get the tail PartOfPacket* getPacketTail(); /// Gets the dimension in byte of the current packet (header + datafield (data field header + sdf + tail) diff --git a/include/PacketStream.h b/include/PacketStream.h index 526222a..4749ddb 100644 --- a/include/PacketStream.h +++ b/include/PacketStream.h @@ -37,27 +37,28 @@ public: ~PacketStream(); - /// get a Packet* from a ByteStream - /// \pre the prefix has been removed - /// \param packet the stream that contains the source packet without the prefix - /// \param decodeType (0) do not decode anything (1) decode only sections (prefix, header, data field header, source data field fixed part, source data field variable part) (2) decode blocks (all sections + all blocks of the ‘source data field variable part’) + /// Get a Packet* from a ByteStream + /// \param stream the stream that contains the source packet with the prefix Packet* getPacket(ByteStreamPtr stream) throw(PacketException*); + /// Decode a packet and return its pointer /// \return The index of packet type if it's recognized. 0 if packet isn't recognized. /// \param prefix A ByteStream that contains the prefix of packet (if present). /// \param packetHeader A ByteStream that contains the packet header. /// \param packetDataField A ByteStream that contains the packet data field. int detPacketType(ByteStreamPtr prefix, ByteStreamPtr packetHeader, ByteStreamPtr packetDataField); + /// Decode a packet and return its pointer /// \return The index of packet type if it's recognized. 0 if packet isn't recognized. /// \param prefix A ByteStream that contains the prefix of packet (if present). /// \param packet A ByteStream that contains the packet. int detPacketType(ByteStreamPtr prefix, ByteStreamPtr packet); - ///It returns the index of the packet type contained in the stream. The stream* contains also the prefix (if present) + /// Decode a packet and return its pointer + /// It returns the index of the packet type contained in the stream. The stream* contains also the prefix (if present) /// \return The index of packet type if it's recognized. 0 if packet isn't recognized. - /// \param packet A ByteStream pointer that contains the packet. - int detPacketType(ByteStreamPtr packet); + /// \param stream A ByteStream pointer that contains the packet + prefix. + int detPacketType(ByteStreamPtr stream); ///It returns the total dimension of the packet contained in the stream (without prefix). The stream* contains also the prefix (if present) ///\param The stream with the prefix (if present) diff --git a/include/PartOfPacket.h b/include/PartOfPacket.h index dba523f..3841c4a 100644 --- a/include/PartOfPacket.h +++ b/include/PartOfPacket.h @@ -219,8 +219,6 @@ public: /// \param value The real double precision value virtual void setFieldValue_64f(word index, double value); - //-------------------------------- - /// Returns the value of a field in the list of fields of this part of packet. /// The value returned is interpreted as a unsigned integer of less of equal 16 bits dimension /// (depends by the size of the field in bits) @@ -280,7 +278,6 @@ public: virtual void setFieldValue_16ui(string fieldname, word value); /// Sets the value of a field. The value is interpreted as a 32 bit signed integer. - /// --------------------------------- /// This corresponds with the PTC=4, PFC = 14. /// See setFieldValue(word index, word value) for general considerations. /// \param fieldname Represent the name of the field. @@ -310,6 +307,7 @@ public: /// \param value The real double precision value virtual void setFieldValue_64f(string fieldname, double value); + /// Return the physical index of a field virtual word getFieldIndex(string fieldname); -- GitLab