Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers LoRaPHYAU915.h Source File

LoRaPHYAU915.h

Go to the documentation of this file.
00001 /**
00002  *  @file LoRaPHYAU915.h
00003  *
00004  *  @brief Implements LoRaPHY for Australian 915 MHz band
00005  *
00006  *  \code
00007  *   ______                              _
00008  *  / _____)             _              | |
00009  * ( (____  _____ ____ _| |_ _____  ____| |__
00010  *  \____ \| ___ |    (_   _) ___ |/ ___)  _ \
00011  *  _____) ) ____| | | || |_| ____( (___| | | |
00012  * (______/|_____)_|_|_| \__)_____)\____)_| |_|
00013  *   (C)2013 Semtech
00014  *  ___ _____ _   ___ _  _____ ___  ___  ___ ___
00015  * / __|_   _/_\ / __| |/ / __/ _ \| _ \/ __| __|
00016  * \__ \ | |/ _ \ (__| ' <| _| (_) |   / (__| _|
00017  * |___/ |_/_/ \_\___|_|\_\_| \___/|_|_\\___|___|
00018  * embedded.connectivity.solutions===============
00019  *
00020  * \endcode
00021  *
00022  *
00023  * License: Revised BSD License, see LICENSE.TXT file include in the project
00024  *
00025  * Maintainer: Miguel Luis ( Semtech ), Gregory Cristian ( Semtech ) and Daniel Jaeckle ( STACKFORCE )
00026  *
00027  * Copyright (c) 2017, Arm Limited and affiliates.
00028  * SPDX-License-Identifier: BSD-3-Clause
00029  *
00030  */
00031 
00032 #ifndef MBED_OS_LORAPHY_AU915_H_
00033 
00034 #define MBED_OS_LORAPHY_AU915_H_
00035 
00036 #include "LoRaPHY.h"
00037 
00038 // Definitions
00039 /*!
00040  * LoRaMac maximum number of channels
00041  */
00042 #define AU915_MAX_NB_CHANNELS                       72
00043 
00044 /*!
00045  * LoRaMac maximum number of bands
00046  */
00047 #define AU915_MAX_NB_BANDS                          1
00048 
00049 #define AU915_CHANNEL_MASK_SIZE                    5
00050 
00051 
00052 class LoRaPHYAU915 : public LoRaPHY{
00053 
00054 public:
00055 
00056     LoRaPHYAU915(LoRaWANTimeHandler &lora_time);
00057     virtual ~LoRaPHYAU915();
00058 
00059     virtual bool rx_config(rx_config_params_t * config, int8_t* datarate);
00060 
00061     virtual bool tx_config(tx_config_params_t* config, int8_t* txPower,
00062                            lorawan_time_t* txTimeOnAir);
00063 
00064     virtual uint8_t link_ADR_request(adr_req_params_t* params,
00065                                      int8_t* drOut, int8_t* txPowOut,
00066                                      uint8_t* nbRepOut,
00067                                      uint8_t* nbBytesParsed);
00068 
00069     virtual uint8_t accept_rx_param_setup_req(rx_param_setup_req_t* params);
00070 
00071     virtual int8_t get_alternate_DR(uint8_t nb_trials);
00072 
00073     virtual bool set_next_channel(channel_selection_params_t* next_chan_params,
00074                                   uint8_t* channel, lorawan_time_t* time,
00075                                   lorawan_time_t* aggregate_timeoff);
00076 
00077     virtual uint8_t apply_DR_offset(int8_t dr, int8_t dr_offset);
00078 
00079 private:
00080 
00081     /*!
00082      * LoRaMAC channels
00083      */
00084     channel_params_t  channels[AU915_MAX_NB_CHANNELS];
00085 
00086     /*!
00087      * LoRaMac bands
00088      */
00089     band_t  bands[AU915_MAX_NB_BANDS];
00090 
00091     /*!
00092      * LoRaMac channel mask
00093      */
00094     uint16_t channel_mask[AU915_CHANNEL_MASK_SIZE];
00095 
00096     /*!
00097      * Previously used channel mask
00098      */
00099     uint16_t current_channel_mask[AU915_CHANNEL_MASK_SIZE];
00100 
00101     /*!
00102      * LoRaMac channels default mask
00103      */
00104     uint16_t default_channel_mask[AU915_CHANNEL_MASK_SIZE];
00105 };
00106 
00107 #endif /* MBED_OS_LORAPHY_AU915_H_ */