/**
 *  @file LoRaPHYEU868.h
 *
 *  @brief Implements LoRaPHY for European 868 MHz band
 *
 *  \code
 *   ______                              _
 *  / _____)             _              | |
 * ( (____  _____ ____ _| |_ _____  ____| |__
 *  \____ \| ___ |    (_   _) ___ |/ ___)  _ \
 *  _____) ) ____| | | || |_| ____( (___| | | |
 * (______/|_____)_|_|_| \__)_____)\____)_| |_|
 *   (C)2013 Semtech
 *  ___ _____ _   ___ _  _____ ___  ___  ___ ___
 * / __|_   _/_\ / __| |/ / __/ _ \| _ \/ __| __|
 * \__ \ | |/ _ \ (__| ' <| _| (_) |   / (__| _|
 * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___|
 * embedded.connectivity.solutions===============
 *
 * \endcode
 *
 *
 * License: Revised BSD License, see LICENSE.TXT file include in the project
 *
 * Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE )
 *
 * Copyright (c) 2017, Arm Limited and affiliates.
 * SPDX-License-Identifier: BSD-3-Clause
 *
 */

#ifndef MBED_OS_LORAPHY_EU868_H_
#define MBED_OS_LORAPHY_EU868_H_

#include "LoRaPHY.h"

/*!
 * LoRaMac maximum number of channels
 */
#define EU868_MAX_NB_CHANNELS                       16

/*!
 * Maximum number of bands
 *
 * We have broken down EU-868 MHz BAND 2 into two parts. That's why
 * total number of sub-bands is 6.
 * from 863 MHz to 865 MHz region is part of BAND 2, however
 * we call it Band-5 here. Duty cycle limit is 0.1 % in this sub band.
 */
#define EU868_MAX_NB_BANDS                          6

#define EU868_CHANNEL_MASK_SIZE                    1

class LoRaPHYEU868 : public LoRaPHY {

public:
    LoRaPHYEU868();
    virtual ~LoRaPHYEU868();

private:
    /*!
     * LoRaMAC channels
     */
    channel_params_t channels[EU868_MAX_NB_CHANNELS];

    /*!
     * LoRaMac bands
     */
    band_t bands[EU868_MAX_NB_BANDS];

    /*!
     * LoRaMac channels mask
     */
    uint16_t channel_mask[EU868_CHANNEL_MASK_SIZE];

    /*!
     * LoRaMac default channel mask
     */
    uint16_t default_channel_mask[EU868_CHANNEL_MASK_SIZE];
};

#endif /* MBED_OS_LORAPHY_EU868_H_ */
