From b24866225a6301d3a663f874725e83c012dc25d3 Mon Sep 17 00:00:00 2001 From: Florent Duchon Date: Wed, 26 Dec 2012 17:36:00 +0100 Subject: digital/beacon: add bitcloud stack into common directory digital/zigbit --- .../Components/MAC_PHY/MAC_ENV/include/macenvPib.h | 444 +++++++++++++++++++++ 1 file changed, 444 insertions(+) create mode 100644 digital/zigbit/bitcloud/stack/Components/MAC_PHY/MAC_ENV/include/macenvPib.h (limited to 'digital/zigbit/bitcloud/stack/Components/MAC_PHY/MAC_ENV/include/macenvPib.h') diff --git a/digital/zigbit/bitcloud/stack/Components/MAC_PHY/MAC_ENV/include/macenvPib.h b/digital/zigbit/bitcloud/stack/Components/MAC_PHY/MAC_ENV/include/macenvPib.h new file mode 100644 index 00000000..e1d9e2a9 --- /dev/null +++ b/digital/zigbit/bitcloud/stack/Components/MAC_PHY/MAC_ENV/include/macenvPib.h @@ -0,0 +1,444 @@ +/**************************************************************************//** + \file macenvPib.h + + \brief MAC and PHY PIB access function prototypes. + + \author + Atmel Corporation: http://www.atmel.com \n + Support email: avr@atmel.com + + Copyright (c) 2008-2011, Atmel Corporation. All rights reserved. + Licensed under Atmel's Limited License Agreement (BitCloudTM). + + \internal + History: + 28/09/07 A. Mandychev - Created macphyPibServer.h. + 10/06/08 A. Mandychev - Renamed to macenvPib.h. + 22/12/10 A. Razinkov - Merged with macenvPibOldCs.h +******************************************************************************/ + +#ifndef _MACENVPIB_H +#define _MACENVPIB_H + +/****************************************************************************** + Includes section +******************************************************************************/ +#include +#include +#include +#include + +/****************************************************************************** + Define(s) section +******************************************************************************/ +#define MS_1000 1000U /* Divider from us to ms. */ + +/****************************************************************************** + Types section +******************************************************************************/ +//! PIB request's descriptor. +typedef struct +{ + MACPHY_PibId_t id; + MACPHY_PibAttr_t attr; +} MacPhyPibReq_t; + +/****************************************************************************** + Constants section +******************************************************************************/ + +/****************************************************************************** + External variables section +******************************************************************************/ +extern PIB_t csPIB; + +/****************************************************************************** + Prototypes section +******************************************************************************/ +/**************************************************************************//** + \brief Resets MACPHY PIB. + \param none. + \return none. +******************************************************************************/ +void macenvResetPib(void); + +/**************************************************************************//** + \brief Sets MAC or PHY attribute to PIB. + \param[in] pibAttr - pointer to attribute structure. + \return SUCCESS, READ_ONLY, UNSUPPORTED_ATTRIBUTE or INVALID_PARAMETER. +******************************************************************************/ +MAC_Status_t macenvSetPibAttr(const MacPhyPibReq_t *pibAttr); + +/**************************************************************************//** + \brief Gets MAC or PHY attribute from PIB. + \param[inout] pibAttr - pointer to attribute structure. + \return SUCCESS or UNSUPPORTED_ATTRIBUTE. +******************************************************************************/ +MAC_Status_t macenvGetPibAttr(MacPhyPibReq_t *pibAttr); + +/**************************************************************************//** + \brief Calculates maximum frame total wait time. + \return maximum frame total wait time. +******************************************************************************/ +uint32_t macenvCalculateMaxFrameTotalWaitTimeInMs(void); + +/****************************************************************************** + Calculates MAC response wait time (IEEE standart: macResponseWaitTime). + Parameters: + none. + Return: + MAC response wait time. +******************************************************************************/ +uint32_t macenvCalculateResponceWaitTimeInMs(void); + +/**************************************************************************//** + \brief Detects PHY symbol duration. + \param none; + \return PHY symbol duration. +******************************************************************************/ +uint8_t macenvGetPhySymbolDuration(void); + +#ifdef _FFD_ +/**************************************************************************//** + \brief Calculates MAC transaction persistence time im ms. + + \param[in] MAC transaction persistence time in unit periods. + IEEE802.15.4_2006, 7.4.2, Table 86, page 166. + \return time calculated (milliseconds). +******************************************************************************/ +uint32_t macenvConvertTransPersistTimeFromUnitsToMs(uint16_t transPersTimeInUnits); +#endif // _FFD_ + +/**************************************************************************//** + \brief Gets current value for dsn parameter of PHY&MAC PIB and then increments it. + \return current dsn value. +******************************************************************************/ +INLINE uint8_t macenvGetAndIncDsn(void) +{ + return csPIB.macAttr.dsn++; +} + +/**************************************************************************//** + \brief Gets current value for bsn parameter of PHY&MAC PIB and then increments it. + \return current bsn value. +******************************************************************************/ +#ifdef _FFD_ +INLINE uint8_t macenvGetAndIncBsn(void) +{ + return csPIB.macAttr.bsn++; +} +#endif // _FFD_ + +/**************************************************************************//** + \brief Gets channel. + \return current channel. +******************************************************************************/ +INLINE uint8_t macenvGetChannel(void) +{ + return csPIB.phyAttr.channel; +} + +/**************************************************************************//** + \brief Gets supported channels. + \return supported channels. +******************************************************************************/ +INLINE uint32_t macenvGetChannelsSupported(void) +{ + return csPIB.phyAttr.channelsSupported; +} + +/**************************************************************************//** + \brief Gets tx power. + \return current tx power. +******************************************************************************/ +INLINE int8_t macenvGetTxPower(void) +{ + return csPIB.phyAttr.transmitPower; +} + +/**************************************************************************//** + \brief Gets CCA mode. + \return current CCA mode. +******************************************************************************/ +INLINE PHY_CcaMode_t macenvGetCcaMode(void) +{ + return csPIB.phyAttr.ccaMode; +} + +/**************************************************************************//** + \brief Gets current page. + \return current page. +******************************************************************************/ +INLINE uint8_t macenvGetCurrentPage(void) +{ + return csPIB.phyAttr.currentPage; +} + +/**************************************************************************//** + \brief Gets max CSMA backoffs. + \return max CSMA backoffs. +******************************************************************************/ +INLINE uint8_t macenvGetMaxCsmaBackoffs(void) +{ + return csPIB.macAttr.maxCsmaBackoffs; +} + +/**************************************************************************//** + \brief Gets PAN ID. + \return PAN ID. +******************************************************************************/ +INLINE PanId_t macenvGetPanId(void) +{ + return csPIB.macAttr.panId; +} + +/**************************************************************************//** + \brief Gets short address. + \return short address. +******************************************************************************/ +INLINE ShortAddr_t macenvGetShortAddr(void) +{ + return csPIB.macAttr.shortAddr; +} + +/**************************************************************************//** + \brief Gets min BE. + \return min BE. +******************************************************************************/ +INLINE uint8_t macenvGetMinBe(void) +{ + return csPIB.macAttr.minBe; +} + +/**************************************************************************//** + \brief Gets max frame retries. + \return max frame retries. +******************************************************************************/ +INLINE uint8_t macenvGetMaxFrameRetries(void) +{ + return csPIB.macAttr.maxFrameRetries; +} + +/**************************************************************************//** + \brief Gets rx on when idle parameter. + \return rx on when idle parameter. +******************************************************************************/ +INLINE bool macenvGetRxOnWhenIdle(void) +{ + return csPIB.macAttr.rxOnWhenIdle; +} + +/**************************************************************************//** + \brief Gets coordinator short address. + \return coordinator short address. +******************************************************************************/ +INLINE ShortAddr_t macenvGetCoordShortAddr(void) +{ + return csPIB.macAttr.coordShortAddr; +} + +/**************************************************************************//** + \brief Gets pointer to coordinator extended address. + \return pointer to coordinator extended address. +******************************************************************************/ +INLINE ExtAddr_t* macenvGetCoordExtAddr(void) +{ + return &csPIB.macAttr.coordExtAddr; +} + +/**************************************************************************//** + \brief Gets response wait time. + \return response wait time. +******************************************************************************/ +INLINE uint8_t macenvGetResponseWaitTime(void) +{ + return csPIB.macAttr.responseWaitTime; +} + +/**************************************************************************//** + \brief Gets PAN coordinator parameter. + \return PAN coordinator parameter. +******************************************************************************/ +INLINE bool macenvGetPanCoordinator(void) +{ + return csPIB.macAttr.panCoordinator; +} + +/**************************************************************************//** + \brief Gets association permit parameter. + \return association permit parameter. +******************************************************************************/ +#ifdef _FFD_ +INLINE bool macenvGetAssociationPermit(void) +{ + return csPIB.macAttr.associationPermit; +} +#endif + +/**************************************************************************//** + \brief Gets beacon payload pointer. + \return beacon payload pointer. +******************************************************************************/ +#ifdef _FFD_ +INLINE uint8_t* macenvGetBeaconPayload(void) +{ + return csPIB.macAttr.beaconPayload; +} +#endif + +/**************************************************************************//** + \brief Gets beacon payload length. + \return beacon payload length. +******************************************************************************/ +#ifdef _FFD_ +INLINE uint8_t macenvGetBeaconPayloadLength(void) +{ + return csPIB.macAttr.beaconPayloadLength; +} +#endif + +/**************************************************************************//** + \brief Gets beacon tx enable parameter. + \return beacon tx enable parameter. +******************************************************************************/ +#ifdef _FFD_ +INLINE bool macenvGetBeaconTxEnable(void) +{ + return csPIB.macAttr.beaconTxEnable; +} +#endif + +/**************************************************************************//** + \brief Gets auto request parameter. + \return auto request parameter. +******************************************************************************/ +INLINE bool macenvGetAutoRequest(void) +{ + return csPIB.macAttr.autoRequest; +} + +/**************************************************************************//** + \brief Gets associated PAN coordinator parameter. + \return associated PAN coordinator parameter. +******************************************************************************/ +INLINE bool macenvGetAssociatedPanCoord(void) +{ + return csPIB.macAttr.associatedPanCoord; +} + +/**************************************************************************//** + \brief Sets channel. + \param channel - channel to set. + \return none. +******************************************************************************/ +INLINE void macenvSetChannel(uint8_t channel) +{ + csPIB.phyAttr.channel = channel; +} + +/**************************************************************************//** + \brief Sets short address. + \param shortAddr - short address. + \return none. +******************************************************************************/ +INLINE void macenvSetShortAddr(ShortAddr_t shortAddr) +{ + csPIB.macAttr.shortAddr = shortAddr; +} + +/**************************************************************************//** + \brief Sets associated pan coordinator parameter. + \param associatedPanCoord. + \return none. +******************************************************************************/ +INLINE void macenvSetAssociatedPanCoord(bool associatedPanCoord) +{ + csPIB.macAttr.associatedPanCoord = associatedPanCoord; +} + +/**************************************************************************//** + \brief Sets coordinator short address. + \param coordShortAddr - coordinator short address. + \return none. +******************************************************************************/ +INLINE void macenvSetCoordShortAddr(ShortAddr_t coordShortAddr) +{ + csPIB.macAttr.coordShortAddr = coordShortAddr; +} + +/**************************************************************************//** + \brief Sets coordinator ext address. + \param coordExtAddr - coordinator ext address. + \return none. +******************************************************************************/ +INLINE void macenvSetCoordExtAddr(ExtAddr_t* coordExtAddr) +{ + COPY_EXT_ADDR(csPIB.macAttr.coordExtAddr, *coordExtAddr); +} + +/**************************************************************************//** + \brief Sets PAN ID. + \param panId - PAN ID. + \return none. +******************************************************************************/ +INLINE void macenvSetPanId(PanId_t panId) +{ + csPIB.macAttr.panId = panId; +} + +/**************************************************************************//** + \brief Sets PAN coordinator parameter. + \param panCoordinator - PAN coordinator parameter. + \return none. +******************************************************************************/ +INLINE void macenvSetPanCoordinator(bool panCoordinator) +{ + csPIB.macAttr.panCoordinator = panCoordinator; +} + +/**************************************************************************//** + \brief Sets beacon payload length. + \param beaconTxEnable - beacon tx enable parameter. + \return none. +******************************************************************************/ +#ifdef _FFD_ +INLINE void macenvSetBeaconTxEnable(bool beaconTxEnable) +{ + csPIB.macAttr.beaconTxEnable = beaconTxEnable; +} +#endif + +/****************************************************************************** + \brief Converts time in Microseconds to time in Milliseconds. + \param[in] time in microseconds. + \return time in milliseconds +******************************************************************************/ +INLINE uint32_t convertTimeFromUsToMs(uint32_t timeInUs) +{ + return (timeInUs / MS_1000); +} + +/**************************************************************************//** + \brief Sets max frame transmission time attribute value. + + \param[in] time - new max frame transmission time value. + \return None. + ******************************************************************************/ +INLINE void MAC_SetMaxFrameTransmissionTime(const uint8_t time) +{ + csPIB.macAttr.maxFrameTransmissionTime = time; +} + +/**************************************************************************//** + \brief Gets max frame transmission time attribute value. + + \return Max frame transmission time attribute value. + ******************************************************************************/ +INLINE uint8_t MAC_GetMaxFrameTransmissionTime(void) +{ + return csPIB.macAttr.maxFrameTransmissionTime; +} + +#endif /* _MACENVPIB_H */ + +// eof macenvPib.h -- cgit v1.2.3