summaryrefslogtreecommitdiff
path: root/cesar/cp/beacon/src
diff options
context:
space:
mode:
authorDavid Mercadie2011-03-10 18:30:48 +0100
committerDavid Mercadie2011-03-24 16:08:29 +0100
commitb27a174ae4a742879b98a9e342d5f78d173fdb23 (patch)
tree6572fa15994bd792baa689de2c3032aaceb26073 /cesar/cp/beacon/src
parent16ef9d3018afee3c5cdd4316d440a5ec57591eae (diff)
cesar/cp/beacon: generate nek_request event, closes #1761
Diffstat (limited to 'cesar/cp/beacon/src')
-rw-r--r--cesar/cp/beacon/src/beacon.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/cesar/cp/beacon/src/beacon.c b/cesar/cp/beacon/src/beacon.c
index 13a09b6b4b..59281a4cdb 100644
--- a/cesar/cp/beacon/src/beacon.c
+++ b/cesar/cp/beacon/src/beacon.c
@@ -426,7 +426,6 @@ cp_beacon_countdowns (cp_t *ctx)
{
dbg_assert (ctx);
- // TODO DM: is this test really usefull?
if (less_mod2p32 (ctx->beacon.countdown_limit_date, phy_date ()))
{
u32 intervals;
@@ -514,6 +513,12 @@ cp_beacon_countdowns (cp_t *ctx)
ctx->beacon.eks.kccd = 0;
else
ctx->beacon.eks.kccd -= intervals;
+
+ if (!ctx->beacon.eks.kccd &&
+ (ctx->beacon.eks.kbc == BSU_BEACON_EKS_KBC_NEK))
+ {
+ ctx->mac_config->nek[bsu_nek_index_next ()].eks = MAC_EKS_CLEAR;
+ }
}
}
}
@@ -672,6 +677,14 @@ cp_beacon_process_beacon_central (
}
if (beacon->bmis.eks.present)
{
+ if ((beacon->bmis.eks.kbc == BSU_BEACON_EKS_KBC_NEK) &&
+ (ctx->mac_config->nek[bsu_nek_index_next ()].eks !=
+ beacon->bmis.eks.new_eks))
+ {
+ /* POST the FSM event. */
+ cp_fsm_post_new_event (ctx, bare, nek_request);
+ }
+
ctx->beacon.eks.kccd = beacon->bmis.eks.kccd;
ctx->beacon.eks.kbc = beacon->bmis.eks.kbc;
ctx->beacon.eks.new_eks =