summaryrefslogtreecommitdiff
path: root/cesar/ce/rx/inc
diff options
context:
space:
mode:
authordufour2009-07-16 09:12:57 +0000
committerdufour2009-07-16 09:12:57 +0000
commit0dc1a9e5fc18340c0ce7bf4fa6dac164a8aa5131 (patch)
tree33c1381b74fb0be7d92638dd3ef669e628ff2ddb /cesar/ce/rx/inc
parent4b7217315485a6f870dc7301c5e463a13e98f6e7 (diff)
* ce/rx:
- CP/CE RX communication: - add more information about the state of the tone maps (TEI list, intervals list) to prevent sending wrong information about the state of the tone maps to the peer, - update comments. git-svn-id: svn+ssh://pessac/svn/cesar/trunk@4968 017c9cb6-072f-447c-8318-d5b54f68fe89
Diffstat (limited to 'cesar/ce/rx/inc')
-rw-r--r--cesar/ce/rx/inc/cp.h56
1 files changed, 50 insertions, 6 deletions
diff --git a/cesar/ce/rx/inc/cp.h b/cesar/ce/rx/inc/cp.h
index 09f5d0244a..b92bf2aaf5 100644
--- a/cesar/ce/rx/inc/cp.h
+++ b/cesar/ce/rx/inc/cp.h
@@ -14,15 +14,28 @@
*
* This header contains the private part of the functions used for the
* interface between the communication of the CP and the CE RX.
+ *
+ * This functions must be called in the context of the CE RX and are used to
+ * set-up the works that must be executed by the CP.
*/
#include "lib/mbox.h"
#include "cp/types.h"
/**
- * Maibox used for the exchange of work between the CE RX and the CP.
+ * Mailbox used for the exchange of work between the CE RX and the CP.
+ * The work that can be posted from the CE RX to the CP is quite simple:
+ * sending MME to the peer. It can be divided into two sub-parts:
+ * - sending a tone map,
+ * - preventing tone map expiration on the other side (by sending a refresh).
* The information contains in this node are enough to send a tone map
* (pointed with the tone map index) to a peer (pointed by its TEI).
+ *
+ * When the CP process a mail, the state of the structure tone maps has maybe
+ * changed (the CE RX can maybe generate multiple tone maps and during this
+ * time, the CP has maybe not process our mail). That's why, the mail contains
+ * some copy of the fields of the tone maps structure (default TMI, TMI list
+ * and intervals list).
*/
typedef struct ce_rx_cp_mbox_t
{
@@ -35,9 +48,31 @@ typedef struct ce_rx_cp_mbox_t
*/
cp_tei_t tei;
/**
+ * Default TMI.
+ */
+ u8 default_tmi;
+ /**
+ * The list of valid tone map index.
+ * This field is a bit field (bit is set to one when the tone map is
+ * active).
+ */
+ u32 tmi_list;
+ /**
+ * List of valid intervals.
+ */
+ tonemap_intervals_t intervals_list;
+ /**
* The tone map index.
+ * If this field is set to 0, no tone map should be sent, just a refresh
+ * MME (to prevent tone maps expiration).
*/
- u8 tmi;
+ u8 new_tmi;
+ /**
+ * The old tone map index.
+ * When the bit loading of the CE RX creates a new tone map based on an
+ * old one, it can give an hint on the tone map index used.
+ */
+ u8 old_tmi;
/**
* Initial CE?
*/
@@ -63,13 +98,22 @@ ce_rx_cp_uninit (ce_rx_t *ce_rx);
/**
* Add work for the CP from the CE RX context.
* \param ce_rx the context of the CE in RX.
- * \param tei the TEI of the peer.
- * \param tmi the new TMI that required to be sent.
+ * \param peer the peer STA.
+ * \param new_tmi the new TMI of the tone map to send.
+ * \param old_tmi the old TMI used (if there is one, 0 otherwise).
* \param initial_ce initial channel estimation?
*/
void
-ce_rx_cp_send_tone_map_mme (ce_rx_t *ce_rx, cp_tei_t tei, u8 tmi,
- bool initial_ce);
+ce_rx_cp_send_mme_new_tone_map (ce_rx_t *ce_rx, sta_t *peer, u8 new_tmi,
+ u8 old_tmi, bool initial_ce);
+
+/**
+ * Add work to prevent expirations of the valid tone maps list of a peer.
+ * \param ce_rx the context of the CE in RX.
+ * \param peer the peer STA.
+ */
+void
+ce_rx_cp_send_mme_refresh_tmi_list (ce_rx_t *ce_rx, sta_t *peer);
END_DECLS