summaryrefslogtreecommitdiff
path: root/cesar/maximus/phy/inc/PhySciMsgMpdu.h
diff options
context:
space:
mode:
Diffstat (limited to 'cesar/maximus/phy/inc/PhySciMsgMpdu.h')
-rw-r--r--cesar/maximus/phy/inc/PhySciMsgMpdu.h290
1 files changed, 290 insertions, 0 deletions
diff --git a/cesar/maximus/phy/inc/PhySciMsgMpdu.h b/cesar/maximus/phy/inc/PhySciMsgMpdu.h
new file mode 100644
index 0000000000..ae92ddb628
--- /dev/null
+++ b/cesar/maximus/phy/inc/PhySciMsgMpdu.h
@@ -0,0 +1,290 @@
+/************************************************************************
+ PhySciMsgMpdu.h - Copyright buret
+
+Here you can write a license for your code, some comments or any other
+information you want to have in your generated code. To to this simply
+configure the "headings" directory in uml to point to a directory
+where you have your heading files.
+
+or you can just replace the contents of this file with your own.
+If you want to do this, this file is located at
+
+/usr/share/apps/umbrello/headings/heading.h
+
+-->Code Generators searches for heading files based on the file extension
+ i.e. it will look for a file name ending in ".h" to include in C++ header
+ files, and for a file name ending in ".java" to include in all generated
+ java code.
+ If you name the file "heading.<extension>", Code Generator will always
+ choose this file even if there are other files with the same extension in the
+ directory. If you name the file something else, it must be the only one with that
+ extension in the directory to guarantee that Code Generator will choose it.
+
+you can use variables in your heading files which are replaced at generation
+time. possible variables are : author, date, time, filename and filepath.
+just write %variable_name%
+
+This file was generated on %date% at %time%
+The original location of this file is /home/buret/eclipse/maximus/phy/inc/PhySciMsgMpdu.h
+**************************************************************************/
+
+#ifndef PHYSCIMSGMPDU_H
+#define PHYSCIMSGMPDU_H
+
+#include "PhySciMsg.h"
+
+class PhySciMsgPre;
+class PhySciMsgFc;
+
+
+/**
+ * class PhySciMsgMpdu
+ */
+
+class PhySciMsgMpdu : public PhySciMsg
+{
+
+public:
+
+ // public attributes
+ //
+
+private:
+
+ // private attributes
+ //
+
+ unsigned long mPayloadLength;
+ unsigned char * mpPayload;
+
+ PhySciMsgPre * mpPre;
+ PhySciMsgFc * mpFc;
+
+ unsigned short int mNbOfPbsInLastMsg;
+ unsigned char mPbsArray[MAC_MAX_PB_PER_MPDU*MAC_PB520_BYTES];
+ uint32_t mPbsHeadersArray[MAC_MAX_PB_PER_MPDU];
+
+protected:
+
+ // protected attributes
+ //
+
+public:
+
+ // Constructors/Destructors
+ //
+
+ /**
+ * Constructor
+ * Creates a PHY SCI message of type MPDU_PAYLOAD.
+ * @param p_phy_processor a pointer to the PHY interface
+ */
+ PhySciMsgMpdu ( IPhy * p_phy_processor );
+
+ /**
+ * Copy Constructor
+ * Creates a PHY SCI message of type MPDU_PAYLOAD.
+ * @param phy_sci_msg a PHY SCI message
+ */
+ PhySciMsgMpdu ( PhySciMsg & phy_sci_msg );
+
+ /**
+ * Empty Destructor
+ */
+ virtual ~PhySciMsgMpdu ( );
+
+ // public methods
+ //
+
+ /**
+ * Segment the MPDU payload into PBs.
+ * Fills PBs headers.
+ * @return bool
+ */
+ bool segment ( );
+
+ /**
+ * Sets the PHY SCI message class attributes before transmission,
+ * and fills specialized SCI msg data length and specialized SCI msg data
+ * for a PHY message of type MPDU_PAYLOAD.
+ * @param clock_id ID of the Network Clock event received message
+ * @return bool
+ */
+ bool prepare ( Network_Clock_Id clock_id );
+
+ // public attribute accessor methods
+ //
+
+ // private attribute accessor methods
+ //
+
+ /**
+ * Gets the MPDU payload length.
+ * @return mPayloadLength
+ */
+ const unsigned long getPayloadLength ( ) const;
+
+ /**
+ * Gets the MPDU payload.
+ * @return mpPayload
+ */
+ const unsigned char * getPayload ( ) const;
+
+ /**
+ * @param length the new value of mPayloadLength
+ * @param p_payload the new value of mpPayload
+ * @return bool
+ */
+ bool setMpdu ( const unsigned long length, const unsigned char * p_payload );
+
+ /**
+ * Gets the PHY SCI message PREAMBLE.
+ * @return mpPre
+ */
+ PhySciMsgPre * getPre ( ) const;
+
+ /**
+ * Gets the PHY SCI message FC.
+ * @return mpFc
+ */
+ PhySciMsgFc * getFc ( ) const;
+
+ /**
+ * Gets the number of PBs into the last PHY SCI message composing the MPDU.
+ * @return mNbOfPbsInLastMsg
+ */
+ const unsigned short int getNbOfPbsInLastMsg ( ) const;
+
+ /**
+ * Sets the number of PBs into the last PHY SCI message composing the MPDU.
+ * @param nb_of_pbs_in_last_msg the new value of mNbOfPbsInLastMsg
+ * @return bool
+ */
+ bool setNbOfPbsInLastMsg ( const unsigned short int nb_of_pbs_in_last_msg );
+
+ /**
+ * Gets a pointer to the PBs of the nth PHY SCI message composing the MPDU.
+ * @return &mPbsArray[n*PHY_PB_MAX_NB*MAC_PB520_BYTES]
+ */
+ const unsigned char * getPbs ( const unsigned short int n = 0 ) const;
+
+ /**
+ * Checks if the PHY SCI message has been sent (MPDU, or FC in case of a short PPDU).
+ * @return (mIsSent || mpFc->mIsSent)
+ */
+ const bool isSent ( ) const;
+
+ /**
+ * Checks if the MPDU has been completely received
+ * (i.e. all PHY SCI messages MPDU composing the MPDU have been received).
+ * @param nb_of_received_msgs number of PHY SCI messages MPDU that have been received
+ * @return nb_of_received_msgs == mNbOfMsgs
+ */
+ const bool isReceived ( const unsigned short int nb_of_received_msgs ) const;
+
+ /**
+ * Sets the PHY SCI message Frame Control mode for PREAMBLE, FC and MPDU.
+ * @return bool
+ * @param fc_mode the new value of mFcMode, mpPre->mFcMode and mpFc->mFcMode
+ */
+ bool setFcMode ( const Phy_Fc_Mode fc_mode );
+
+ /**
+ * Sets the PHY SCI message short PPDU for PREAMBLE, FC and MPDU.
+ * @return bool
+ * @param short_ppdu the new value of mShortPpdu, mpPre->mShortPpdu and mpFc->mShortPpdu
+ */
+ bool setShortPpdu ( const Phy_Short_Ppdu short_ppdu );
+
+ /**
+ * Sets the PHY SCI message modulation for PREAMBLE, FC and MPDU.
+ * @return bool
+ * @param mod the new value of mMod, mpPre->mMod and mpFc->mMod
+ */
+ bool setMod ( const Phy_Mod mod );
+
+ /**
+ * Sets the PHY SCI message FEC rate for PREAMBLE, FC and MPDU.
+ * @return bool
+ * @param fecrate the new value of mFecrate, mpPre->mFecrate and mpFc->mFecrate
+ */
+ bool setFecrate ( const Phy_Fecrate fecrate );
+
+ /**
+ * Sets the PHY SCI message Guard Interval for PREAMBLE, FC and MPDU.
+ * @return bool
+ * @param gil the new value of mGil, mpPre->mGil and mpFc->mGil
+ */
+ bool setGil ( const Phy_Gil gil );
+
+ /**
+ * Sets the PHY SCI message flags for PREAMBLE, FC and MPDU.
+ * @return bool
+ * @param flags the new value of mFlags, mpPre->mFlags and mpFc->mFlags
+ */
+ bool setFlags ( const Phy_Flags flags );
+
+ /**
+ * Gets the Frame Control 1.0 of the PHY SCI message FC.
+ * @return mpFc->mFc10
+ */
+ const uint32_t getFc10 ( ) const;
+
+ /**
+ * Sets the Frame Control 1.0 of the PHY SCI message FC.
+ * @param fc_10 the new value of mpFc->mFc10
+ * @return bool
+ */
+ bool setFc10 ( const uint32_t fc_10 );
+
+ /**
+ * Gets the Frame Control AV of the PHY SCI message FC.
+ * @return mpFc->mFcAvArray
+ */
+ const uint32_t * getFcAv ( ) const;
+
+ /**
+ * Sets the Frame Control AV of the PHY SCI message FC.
+ * @param fc_av the new value of mpFc->mFcAvArray
+ * @return bool
+ */
+ bool setFcAv ( const uint32_t fc_av[4] );
+
+ /**
+ * Gets a pointer to the PB Header of the nth PHY SCI message composing the MPDU.
+ * @return &mPbsHeadersArray[n*PHY_PB_MAX_NB]
+ */
+ const uint32_t * getPbsHeaders ( const unsigned short int n ) const;
+
+ /**
+ * Sets the (n)th PB header.
+ * @param n indicates the number of the PB to set
+ * @param pb_header the value of the (n)th PB Header
+ * @return bool
+ */
+ bool setPbsHeaders ( const unsigned short int n, const uint32_t pb_header );
+
+ // protected attribute accessor methods
+ //
+
+private:
+
+ // private methods
+ //
+
+ /**
+ * Initializes the PHY SCI message class attributes.
+ * Fills PHY SCI message type.
+ * @param p_phy_processor a pointer to the PHY interface
+ */
+ void initAttributes ( IPhy * p_phy_processor );
+
+protected:
+
+ // protected methods
+ //
+
+};
+
+
+#endif // PHYSCIMSGMPDU_H