STM32CubeWL/Middlewares/Third_Party/LoRaWAN/LmHandler/Packages/LmhpCompliance.h

102 lines
2.5 KiB
C

/*!
* \file LmhpCompliance.h
*
* \brief Implements the LoRa-Alliance certification protocol handling
*
* \copyright Revised BSD License, see section \ref LICENSE.
*
* \code
* ______ _
* / _____) _ | |
* ( (____ _____ ____ _| |_ _____ ____| |__
* \____ \| ___ | (_ _) ___ |/ ___) _ \
* _____) ) ____| | | || |_| ____( (___| | | |
* (______/|_____)_|_|_| \__)_____)\____)_| |_|
* (C)2013-2018 Semtech
*
* \endcode
*
* \author Miguel Luis ( Semtech )
*/
#ifndef __LMHP_COMPLIANCE__
#define __LMHP_COMPLIANCE__
#ifdef __cplusplus
extern "C"
{
#endif
#include "LmhPackage.h"
#include "LoRaMacVersion.h"
/*!
* Compliance package identifier.
*
* \remark This value must be unique amongst the packages
*/
#define PACKAGE_ID_COMPLIANCE 0
#if (defined( LORAMAC_VERSION ) && ( LORAMAC_VERSION == 0x01000300 ))
/*!
* Compliance test protocol handler parameters
*/
typedef struct LmhpComplianceParams_s
{
/*!
* Holds the ADR state
*/
bool AdrEnabled;
/*!
* LoRaWAN ETSI duty cycle control enable/disable
*
* \remark Please note that ETSI mandates duty cycled transmissions. Use only for test purposes
*/
bool DutyCycleEnabled;
/*!
* Stops unnecessary peripherals.
*
* \remark Use for the compliance tests protocol handling in order to
* reduce the power consumption.
*/
void ( *StopPeripherals )( void );
/*!
* Starts previously stopped peripherals.
*
* \remark Use for the compliance tests protocol handling in order to
* reduce the power consumption.
*/
void ( *StartPeripherals )( void );
} LmhpComplianceParams_t;
#elif (defined( LORAMAC_VERSION ) && (( LORAMAC_VERSION == 0x01000400 ) || ( LORAMAC_VERSION == 0x01010100 )))
/*!
* Compliance test protocol handler parameters
*/
typedef struct LmhpComplianceParams_s
{
/*!
* Current firmware version
*/
Version_t FwVersion;
/*!
*
*/
void ( *OnTxPeriodicityChanged )( uint32_t periodicity );
/*!
*
*/
void ( *OnTxFrameCtrlChanged )( LmHandlerMsgTypes_t isTxConfirmed );
/*!
*
*/
void ( *OnPingSlotPeriodicityChanged )( uint8_t pingSlotPeriodicity );
} LmhpComplianceParams_t;
#endif /* LORAMAC_VERSION */
LmhPackage_t *LmhpCompliancePackageFactory( void );
#ifdef __cplusplus
}
#endif
#endif /* __LMHP_COMPLIANCE__ */