summaryrefslogtreecommitdiff
path: root/cesar/bsu/beacon/src/beacon.c
diff options
context:
space:
mode:
Diffstat (limited to 'cesar/bsu/beacon/src/beacon.c')
-rw-r--r--cesar/bsu/beacon/src/beacon.c25
1 files changed, 7 insertions, 18 deletions
diff --git a/cesar/bsu/beacon/src/beacon.c b/cesar/bsu/beacon/src/beacon.c
index adadc99070..d1b7256ecd 100644
--- a/cesar/bsu/beacon/src/beacon.c
+++ b/cesar/bsu/beacon/src/beacon.c
@@ -1018,14 +1018,12 @@ bsu_beacon_countdown (bsu_beacon_t *beacon)
void
bsu_beacon_read_schedules (pb_beacon_t *beacon,
bsu_beacon_schedules_t *schedules,
- bsu_beacon_bmi_discover_t *discover)
+ bsu_beacon_bmi_discover_t *discover,
+ mac_coexistence_mode_t *hm)
{
bitstream_t stream;
- uint i, j, nbe, nb_persistent = 0;
+ uint i, nbe, nb_persistent = 0;
bsu_beacon_entry_header_t header;
- bsu_beacon_bmi_change_snid_t snid;
- bsu_beacon_bmi_eks_t eks;
- bsu_beacon_bmi_change_hybrid_mode_t hm;
uint length;
dbg_assert (beacon);
dbg_assert (schedules);
@@ -1033,7 +1031,7 @@ bsu_beacon_read_schedules (pb_beacon_t *beacon,
bitstream_read_init (&stream, beacon->data, BSU_BEACON_SIZE);
/* Skip the NID. */
bitstream_skip (&stream, 22);
- schedules->hm[0] = bitstream_read (&stream, 2);
+ *hm = bitstream_read (&stream, 2);
/* Skip the variant fields until network mode. */
bitstream_skip (&stream, 32);
schedules->nm = bitstream_read (&stream, 2);
@@ -1060,22 +1058,13 @@ bsu_beacon_read_schedules (pb_beacon_t *beacon,
bsu_beacon_read_bmi_bpsto (&stream, &schedules->bpsto);
break;
case BSU_BEACON_ENTRY_HEADER_ENCRYPTION_KEY_CHANGE:
- bsu_beacon_read_bmi_eks (&stream, &eks);
- if (eks.kbc == BSU_BEACON_EKS_KBC_NEK)
- {
- for (j = eks.kccd; j < COUNT (schedules->nek_switch); j++)
- schedules->nek_switch [j] = eks.new_eks;
- }
+ bsu_beacon_read_bmi_eks (&stream, &schedules->eks);
break;
case BSU_BEACON_ENTRY_HEADER_CHANGE_SNID:
- bsu_beacon_read_bmi_change_snid (&stream, &snid);
- for (j = snid.snidccd; j < COUNT (schedules->snid); j++)
- schedules->snid [j] = snid.new_snid;
+ bsu_beacon_read_bmi_change_snid (&stream, &schedules->snid);
break;
case BSU_BEACON_ENTRY_HEADER_CHANGE_HM:
- bsu_beacon_read_bmi_change_hm (&stream, &hm);
- for (j = hm.hmccd; j < COUNT (schedules->hm); j++)
- schedules->hm[j] = hm.newhm;
+ bsu_beacon_read_bmi_change_hm (&stream, &schedules->hm);
break;
case BSU_BEACON_ENTRY_HEADER_DISCOVER:
bsu_beacon_read_bmi_discover (&stream, discover);