summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordufour2009-03-05 16:16:11 +0000
committerdufour2009-03-05 16:16:11 +0000
commitf8acdbbd1b1b2c00b3b256e1a80ca530ed0d1dab (patch)
tree8092dfc8cd9ccbb4d6d73309f51984595a41f6bf
parent7b3aa7ac2ca03f1f7540543d581dda9bd78b1c64 (diff)
* cp/fsm, cp/sta/action (see #177):
- add SC states into poweron and some links with SC and assoc, - update poweron SDL doc. git-svn-id: svn+ssh://pessac/svn/cesar/trunk@4168 017c9cb6-072f-447c-8318-d5b54f68fe89
-rw-r--r--cesar/cp/fsm/src/fsm/cp.fsm58
-rw-r--r--cesar/cp/sta/action/doc/poweron.sdl68
-rw-r--r--cesar/cp/sta/action/src/assoc.c2
-rw-r--r--cesar/cp/sta/action/src/sc.c4
4 files changed, 88 insertions, 44 deletions
diff --git a/cesar/cp/fsm/src/fsm/cp.fsm b/cesar/cp/fsm/src/fsm/cp.fsm
index 991748a1e7..7d59d0edd2 100644
--- a/cesar/cp/fsm/src/fsm/cp.fsm
+++ b/cesar/cp/fsm/src/fsm/cp.fsm
@@ -49,6 +49,10 @@ States:
Same as USTA_JOINING, but the STA is doing SC procedure at the same time.
SC_UCCO
Same as UCCO, but the STA is doing SC procedure at the same time.
+ SC_STA
+ Same as STA, but the STA is doing SC procedure at the same time.
+ SC_CCO
+ Same as CCO, but the STA is doing SC procedure at the same time.
Events:
to_assoc
@@ -109,8 +113,6 @@ Events:
sc_get_cco_functionality
When the SC FSM need the main FSM to move to a state to get CCo
functionalities.
- sc_start_sc_assoc
- When SC FSM want the main FSM to start the sc_assoc.
CC_DISCOVER_LIST_REQ
CC_DISCOVER_LIST_CNF
@@ -304,9 +306,14 @@ USTA:
SC_USTA:
BEACON_TIMER_EXPIRES -> . [cp_beacon_beacon_not_received]
BEACON -> . [cp_sta_action_poweron_sc__usta__beacon]
- Track AVLN.
+ track AVLN.
net_list_empty -> SC_UCCO [NULL]
- sc_start_sc_assoc -> SC_USTA_JOINING [NULL]
+ no more AVLN to track, go to SC_UCCO.
+ sc_get_cco_functionality -> SC_UCCO [NULL]
+ TODO
+ sc_succeed -> SC_USTA_JOINING [NULL]
+ SC procedure finished, start association.
+ sc_failed -> USTA [NULL]
to_stop -> IDLE [cp_sta_action_poweron__many__to_idle]
POWERON_JOINING:
@@ -321,7 +328,11 @@ USTA_JOINING:
SC_USTA_JOINING:
BEACON_TIMER_EXPIRES -> . [cp_beacon_beacon_not_received]
- sc_succeed -> STA [NULL]
+ joined -> STA [NULL]
+ SC procedure (association part), finished, we are now a STA in the AVLN.
+ left -> USTA [NULL]
+ SC procedure (association part) failed.
+ to_stop -> UNASSOCIATING [cp_sta_action_poweron__joining__to_stop]
POWERON_JOINING, USTA_JOINING:
joined -> STA [NULL]
@@ -336,12 +347,30 @@ UCCO:
CC_WHO_RU_REQ -> . [cp_sta_action_process_cc_who_ru_req]
CC_ASSOC_REQ -> . [cp_cco_action__ucco__cc_assoc_req]
+SC_UCCO:
+ BEACON_TIMER_EXPIRES -> . [cp_beacon_cco_send_discover_beacon]
+ BEACON -> SC_USTA [cp_sta_action_poweron__ucco__beacon]
+ Still doing SC procedure, but in USTA.
+ CC_ASSOC_REQ -> . [NULL]
+ TODO: Reply with temporary failure.
+ CC_WHO_RU_REQ -> . [cp_sta_action_process_cc_who_ru_req]
+ to_stop -> IDLE [cp_sta_action_poweron__many__to_idle]
+
STA:
BEACON_TIMER_EXPIRES -> . [cp_beacon_beacon_not_received]
avln_failure -> POWERON [NULL]
left -> USTA [NULL]
to_stop -> UNASSOCIATING [cp_sta_action_poweron__sta__to_stop]
+SC_STA:
+ BEACON_TIMER_EXPIRES -> . [cp_beacon_beacon_not_received]
+ avln_failure -> POWERON [NULL]
+ TODO: stop SC procedure.
+ left -> SC_USTA [NULL]
+ to_stop -> UNASSOCIATING [cp_sta_action_poweron__sta__to_stop]
+ sc_failed -> STA [NULL]
+ sc_succeed -> STA [NULL]
+
CCO:
BEACON_TIMER_EXPIRES -> . [cp_beacon_cco_send_central_beacon]
join_timeout: sta -> . [cp_sta_action_poweron__cco__join_timeout]
@@ -358,12 +387,29 @@ CCO:
CM_GET_KEY_REQ_PID0 -> . [cp_cco_action__cco__cm_get_key_req_pid0]
CC_LEAVE_REQ -> . [cp_cco_action__cco__cc_leave]
+SC_CCO:
+ BEACON_TIMER_EXPIRES -> . [cp_beacon_cco_send_central_beacon]
+ join_timeout: sta -> . [cp_sta_action_poweron__cco__join_timeout]
+ join_timeout: no sta avln -> SC_USTA
+ join_timeout: no sta no avln -> SC_UCCO
+ all_sta_leaved -> . [cp_sta_action_poweron__cco__all_sta_leaved]
+ to_stop -> UNASSOCIATING [cp_cco_action__drv_mac_stop]
+ change_nek -> . [cp_cco_action_gen_nek]
+ snid_conflict -> . [cp_cco_action_snid_change]
+ CC_WHO_RU_REQ -> . [cp_sta_action_process_cc_who_ru_req]
+ CC_ASSOC_REQ -> . [cp_cco_action__cco__cc_assoc_req]
+ TODO: reply with temporary failure, retry later.
+ CM_GET_KEY_REQ_PID0 -> . [cp_cco_action__cco__cm_get_key_req_pid0]
+ CC_LEAVE_REQ -> . [cp_cco_action__cco__cc_leave]
+ sc_succeed -> CCO [NULL]
+ sc_failed -> CCO [NULL]
+
UNASSOCIATING:
BEACON_TIMER_EXPIRES -> . [cp_beacon_beacon_not_received]
left -> IDLE [cp_sta_action_poweron__many__to_idle]
avln_failure -> IDLE [cp_sta_action_poweron__many__to_idle]
-CCO, AUTHENTICATED:
+CCO, AUTHENTICATED, SC_CCO:
CM_BRG_INFO_CNF -> . [cp_sta_action_process_cm_brg_info_cnf]
CM_BRG_INFO_REQ -> . [cp_sta_action_process_cm_brg_info_req]
first_com_with_auth_sta -> . [cp_sta_action_bridge_first_com]
diff --git a/cesar/cp/sta/action/doc/poweron.sdl b/cesar/cp/sta/action/doc/poweron.sdl
index 1a1a4fe3cf..1b82d6ad88 100644
--- a/cesar/cp/sta/action/doc/poweron.sdl
+++ b/cesar/cp/sta/action/doc/poweron.sdl
@@ -8,11 +8,9 @@ poweron:
<b:avln?> -n-> (ucco)
(poweron) -beacon-> <:NID match?> -n(2)-> (poweron)
<:NID match?> -y-> (poweron joining)
-(poweron) -DRV_STA_SC-> (poweron)
(poweron) -to stop-> (idle)
(poweron joining) -left(2)-> (poweron)
(poweron joining) -joined-> (sta)
-(poweron joining) -DRV_STA_SC-> (poweron joining)
(poweron joining) -to stop-> (unassociating)
usta:
@@ -23,67 +21,65 @@ usta:
(usta) -usta ind-> <:NID match\n& CCo?> -y-> (cco)
<:NID match\n& CCo?> -n-> (usta)
(usta) -net list empty-> (ucco)
-(usta) -DRV_STA_SC-> (usta sc)
+(usta) -DRV_STA_SC-> (sc usta)
(usta) -to stop-> (idle)
(usta joining) -left(2)-> (usta)
(usta joining) -joined-> (sta)
-(usta joining) -DRV_STA_SC-> (usta joining)
(usta joining) -to stop-> (unassociating)
-(usta sc) -ustt timeout-> <usc:avln?> -n-> (usta sc)
- <usc:avln?> -y-> (usta sc)
-(usta sc) -beacon-> (usta sc)
-(usta sc) -usta ind-> <usc:NID match\n& CCo?> -y-> (ucco sc)
- <usc:NID match\n& CCo?> -n-> (usta sc)
-(usta sc) -net list empty-> (ucco sc)
-(usta sc) -sc to cco-> (cco sc)
-(usta sc) -sc to sc add-> (cco sc)
-(usta sc) -sc succeed-> (usta joining)
-(usta sc) -sc failed-> (usta)
-(usta sc) -to stop-> (unassociating)
+(sc usta) -beacon-> (sc usta)
+(sc usta) -beacon timer expires-> (sc usta)
+(sc usta) -net list empty-> (sc ucco)
+(sc usta) -sc get cco functionality-> (sc cco)
+(sc usta) -sc succeed-> (sc usta joining)
+(sc usta) -sc failed-> (usta)
+(sc usta) -to stop-> (unassociating)
+(sc usta joining) -left-> (usta)
+(sc usta joining) -joined-> (sta)
+(sc usta joining) -to stop-> (unassociating)
ucco:
(ucco) -beacon-> (usta)
(ucco) -association request-> (cco)
-(ucco) -DRV_STA_SC-> <:add?> -y-> (ucco sc)
- <:add?> -n-> (ucco sc)
+(ucco) -DRV_STA_SC-> (sc ucco)
(ucco) -to stop-> (idle)
-(ucco sc) -beacon-> (usta sc)
-(ucco sc) -sc to cco-> (cco sc)
-(ucco sc) -sc to sc add-> (cco sc)
-(ucco sc) -sc succeed-> (usta joining)
-(ucco sc) -sc failed-> (ucco)
-(ucco sc) -to stop-> (unassociating)
+(sc ucco) -beacon-> (sc usta)
+(sc ucco) -sc get cco functionality-> (sc cco)
+(sc ucco) -association request-> (sc ucco)
+(sc ucco) -sc succeed-> (sc usta joining)
+(sc ucco) -sc failed-> (ucco)
+(sc ucco) -to stop-> (unassociating)
sta:
(sta) -left-> (usta)
(sta) -avln failure-> (poweron)
-(sta) -DRV_STA_SC-> <:add?> -y-> (sta sc)
+(sta) -DRV_STA_SC-> <:add?> -y-> (sc sta)
<:add?> -n-> (sta)
(sta) -to stop-> (unassociating)
-(sta sc) -sc succeed-> (sta)
-(sta sc) -sc failed-> (sta)
-(sta sc) -left-> (usta sc)
-(sta sc) -avln failure-> (poweron)
-(sta sc) -to stop-> (unassociating)
+(sc sta) -sc succeed-> (sta)
+(sc sta) -sc failed-> (sta)
+(sc sta) -left-> (sc usta)
+(sc sta) -avln failure-> (poweron)
+(sc sta) -to stop-> (unassociating)
cco:
(cco) -join timeout-> <:sta joined> -y-> (cco)
<:sta joined> -n-> <:avln?> -y-> (usta)
<:avln?> -n-> (ucco)
(cco) -all sta leaved(3)-> (cco)
-(cco) -DRV_STA_SC-> <:add?> -y-> (cco sc)
+(cco) -DRV_STA_SC-> <:add?> -y-> (sc cco)
<:add?> -n-> (cco)
(cco) -to stop-> (unassociating)
-(cco sc) -join timeout-> <cs:sta joined> -y-> (cco sc)
- <cs:sta joined> -n-> <:avln?> -y-> (usta sc)
- <:avln?> -n-> (ucco sc)
-(cco sc) -sc succeed-> (cco)
-(cco sc) -all sta leaved-> (cco sc)
-(cco sc) -to stop-> (unassociating)
+(sc cco) -join timeout-> <cs:sta joined> -y-> (sc cco)
+ <cs:sta joined> -n-> <:avln?> -y-> (sc usta)
+ <:avln?> -n-> (sc ucco)
+(sc cco) -sc succeed-> (cco)
+(sc cco) -sc failed-> (cco)
+(sc cco) -all sta leaved-> (sc cco)
+(sc cco) -to stop-> (unassociating)
unassociating:
(unassociating) -left-> (idle)
diff --git a/cesar/cp/sta/action/src/assoc.c b/cesar/cp/sta/action/src/assoc.c
index c7d69a2268..afef3d6b9f 100644
--- a/cesar/cp/sta/action/src/assoc.c
+++ b/cesar/cp/sta/action/src/assoc.c
@@ -68,8 +68,6 @@ cp_sta_action_sc_assoc_start (cp_t *ctx, cp_net_t *cco_net, cp_sta_t *cco)
}
}
ctx->sta_action.assoc.retry = 3;
- /* Inform main FSM we have start SC association procedure. */
- cp_fsm_trigger_new_event (ctx, bare, sc_start_sc_assoc);
/* Trigger to_sc_assoc event. */
cp_fsm_trigger_new_event (ctx, bare, to_sc_assoc);
}
diff --git a/cesar/cp/sta/action/src/sc.c b/cesar/cp/sta/action/src/sc.c
index 49c81e48b6..570015b1c1 100644
--- a/cesar/cp/sta/action/src/sc.c
+++ b/cesar/cp/sta/action/src/sc.c
@@ -369,6 +369,8 @@ cp_sta_action_sc__sc_join__cm_sc_join_cnf (cp_t *ctx, cp_mme_rx_t *mme)
cp_sta_t *sta = cp_sta_mgr_sta_get_from_mac (ctx, mme->peer.mac);
/* Start SC assoc FSM (unknow CCo). */
cp_sta_action_sc_assoc_start (ctx, cp_sta_get_net (sta), NULL);
+ /* Inform main FSM we have start SC association procedure. */
+ cp_fsm_trigger_new_event (ctx, bare, sc_succeed);
cp_fsm_branch (ctx, SC_JOIN, CM_SC_JOIN_CNF, ok_peer_on_avln);
}
else
@@ -403,6 +405,8 @@ cp_sta_action_sc__sc_wait_beacon__beacon (cp_t *ctx, cp_beacon_desc_t *beacon,
{
/* Start assoc procedure. */
cp_sta_action_sc_assoc_start (ctx, net, sta);
+ /* Inform main FSM we have start SC association procedure. */
+ cp_fsm_trigger_new_event (ctx, bare, sc_succeed);
cp_fsm_branch (ctx, SC_WAIT_BEACON, BEACON, nid_match);
}
else