#ifndef bsu_beacon_inc_bmi_defs_h #define bsu_beacon_inc_bmi_defs_h /* Cesar project {{{ * * Copyright (C) 2010 Spidcom * * <<>> * * }}} */ /** * \file bsu_beacon/inc/bmi_defs.h * \brief Beacon entries definition. * \ingroup bsu_beacon */ /** Define the bsu_beacon size in the data part of the block. The first part * of the NID is stored in the block descriptor. */ #define BSU_BEACON_SIZE 128 /** Non coordinated mode. */ enum bsu_beacon_non_coordinated_mode_t { BSU_BEACON_NON_COORDINATED_NETWORK, BSU_BEACON_NON_COORDINATED_NETWORK_REPORTED, BSU_BEACON_NON_COORDINATED_MAX }; typedef enum bsu_beacon_non_coordinated_mode_t bsu_beacon_non_coordinated_mode_t; /** Power Saving mode. */ enum bsu_beacon_npsm_t { BSU_BEACON_NPSM_NOT_ACTIVE, BSU_BEACON_NPSM_ACTIVE, BSU_BEACON_NPSM_MAX }; typedef enum bsu_beacon_npsm_t bsu_beacon_npsm_t; /** Handover in progress. */ enum bsu_beacon_hoip_t { BSU_BEACON_HOIP_FALSE, BSU_BEACON_HOIP_TRUE, BSU_BEACON_HOIP_MAX }; typedef enum bsu_beacon_hoip_t bsu_beacon_hoip_t; /** Network mode. */ enum bsu_beacon_nm_t { BSU_BEACON_NM_UNCOORDINATED, BSU_BEACON_NM_COORDINATED, BSU_BEACON_NM_CSMA_ONLY, BSU_BEACON_NM_NB }; typedef enum bsu_beacon_nm_t bsu_beacon_nm_t; /** CCo Cap. */ enum bsu_beacon_cco_cap_t { BSU_BEACON_CCO_LEVEL0, BSU_BEACON_CCO_LEVEL1, BSU_BEACON_CCO_LEVEL2, BSU_BEACON_CCO_LEVEL3 }; typedef enum bsu_beacon_cco_cap_t bsu_beacon_cco_cap_t; enum bsu_beacon_eks_kbc_t { BSU_BEACON_EKS_KBC_NEK, BSU_BEACON_EKS_KBC_NMK, BSU_BEACON_EKS_KBC_NB }; typedef enum bsu_beacon_eks_kbc_t bsu_beacon_eks_kbc_t; enum bsu_beacon_entry_header_t { BSU_BEACON_ENTRY_HEADER_NON_PERSISTENT_SCHEDULE, BSU_BEACON_ENTRY_HEADER_PERSISTENT_SCHEDULE, BSU_BEACON_ENTRY_HEADER_REGIONS, BSU_BEACON_ENTRY_HEADER_MAC_ADDRESS, BSU_BEACON_ENTRY_HEADER_DISCOVER, BSU_BEACON_ENTRY_HEADER_DISCOVERED_INFO, BSU_BEACON_ENTRY_HEADER_BEACON_PERIOD_START_TIME_OFFSET, BSU_BEACON_ENTRY_HEADER_ENCRYPTION_KEY_CHANGE, BSU_BEACON_ENTRY_HEADER_CCO_HANDOVER, BSU_BEACON_ENTRY_HEADER_BEACON_RELOCATION, BSU_BEACON_ENTRY_HEADER_AC_LINE_SYNC_COUNTDOWN, BSU_BEACON_ENTRY_HEADER_CHANGE_NUMSLOTS, BSU_BEACON_ENTRY_HEADER_CHANGE_HM, BSU_BEACON_ENTRY_HEADER_CHANGE_SNID, BSU_BEACON_ENTRY_HEADER_RSVD_MIN = 0x0E, BSU_BEACON_ENTRY_HEADER_RSVD_MAX = 0xFE, BSU_BEACON_ENTRY_HEADER_VENDOR=0xFF }; typedef enum bsu_beacon_entry_header_t bsu_beacon_entry_header_t; #define BSU_BEACON_ENTRY_IS_BENTRY(val) \ (((val) < BSU_BEACON_ENTRY_HEADER_RSVD_MIN) \ || ((val) == BSU_BEACON_ENTRY_HEADER_VENDOR)) /** Bentry header size. */ #define BSU_BEACON_ENTRY_SIZE_HEADER 2 /** Mac Address bentry size. */ #define BSU_BEACON_ENTRY_SIZE_MAC_ADDRESS 6 /** Discover Bentry. */ #define BSU_BEACON_ENTRY_SIZE_DISCOVER 1 /** Discover Info Bentry. */ #define BSU_BEACON_ENTRY_SIZE_DISCOVER_INFO 4 /** Beacon Period Start Time Offset. */ #define BSU_BEACON_ENTRY_SIZE_BPSTO 3 /** Encryption key change. */ #define BSU_BEACON_ENTRY_SIZE_EKC 2 /** Handover. */ #define BSU_BEACON_ENTRY_SIZE_HOIP 2 /** Beacon Relocation. */ #define BSU_BEACON_ENTRY_SIZE_RLO 4 /** AC Line synchronisation. */ #define BSU_BEACON_ENTRY_SIZE_ACL 2 /** Change Num Slots. */ #define BSU_BEACON_ENTRY_SIZE_CHANGE_NUMSLOTS 2 /** Change hybrid mode. */ #define BSU_BEACON_ENTRY_SIZE_CHANGE_HM 1 /** Change SNID. */ #define BSU_BEACON_ENTRY_SIZE_CHANGE_SNID 1 /* Variable ones. */ /** Define the size in bytes of a SAI with start time. */ #define BSU_BEACON_ENTRY_SIZE_SCHED_SAI_STPF 4 /** Define the size in bytes of a SAI without start time. */ #define BSU_BEACON_ENTRY_SIZE_SCHED_SAI_NSTPF 3 /** Define the macro to compute a non persistent schedule bentry. */ #define BSU_BEACON_ENTRY_SIZE_NON_PERSISTENT_SCHED(sai, nsai) \ (1 + (sai * BSU_BEACON_ENTRY_SIZE_SCHED_SAI_STPF) \ + (nsai * BSU_BEACON_ENTRY_SIZE_SCHED_SAI_NSTPF)) /** Define the macro to compute a persistent schedule bentry. */ #define BSU_BEACON_ENTRY_SIZE_PERSISTENT_SCHED(sai, nsai) \ (2 + (sai * BSU_BEACON_ENTRY_SIZE_SCHED_SAI_STPF) \ + (nsai * BSU_BEACON_ENTRY_SIZE_SCHED_SAI_NSTPF)) /** Define the size in bytes of a region definition. */ #define BSU_BEACON_ENTRY_SIZE_REGION_DESC 2 /** Define the Macro to compute a region bentry. */ #define BSU_BEACON_ENTRY_SIZE_REGION(nr) \ (1 + BSU_BEACON_ENTRY_SIZE_REGION_DESC * nr) #endif /* bsu_beacon_inc_bmi_defs_h */