Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
LoRaPHYUS915Hybrid.h
00001 /** 00002 * @file LoRaPHYUS915Hybrid.h 00003 * 00004 * @brief Implements LoRaPHY for US 915 MHz Hybrid 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_US915_HYBRID_H_ 00033 #define MBED_OS_LORAPHY_US915_HYBRID_H_ 00034 00035 #include "LoRaPHY.h" 00036 00037 /*! 00038 * LoRaMac maximum number of channels 00039 */ 00040 #define US915_HYBRID_MAX_NB_CHANNELS 72 00041 00042 /*! 00043 * LoRaMac maximum number of bands 00044 */ 00045 #define US915_HYBRID_MAX_NB_BANDS 1 00046 00047 #define US915_HYBRID_CHANNEL_MASK_SIZE 5 00048 00049 00050 class LoRaPHYUS915Hybrid : public LoRaPHY { 00051 00052 public: 00053 00054 LoRaPHYUS915Hybrid(LoRaWANTimeHandler &lora_time); 00055 virtual ~LoRaPHYUS915Hybrid(); 00056 00057 virtual void restore_default_channels(); 00058 00059 virtual bool get_next_ADR(bool restore_channel_mask, int8_t& dr_out, 00060 int8_t& tx_power_out, uint32_t& adr_ack_cnt); 00061 00062 virtual bool rx_config(rx_config_params_t * rxConfig); 00063 00064 virtual bool tx_config(tx_config_params_t* tx_config, int8_t* tx_power, 00065 lorawan_time_t* tx_toa); 00066 00067 virtual uint8_t link_ADR_request(adr_req_params_t* params, 00068 int8_t* dr_out, int8_t* tx_power_out, 00069 uint8_t* nb_rep_out, 00070 uint8_t* nb_bytes_parsed); 00071 00072 virtual uint8_t accept_rx_param_setup_req(rx_param_setup_req_t* params); 00073 00074 virtual int8_t get_alternate_DR(uint8_t nb_trials); 00075 00076 virtual lorawan_status_t set_next_channel(channel_selection_params_t* params, 00077 uint8_t* channel, lorawan_time_t* time, 00078 lorawan_time_t* aggregate_timeoff); 00079 00080 virtual void set_tx_cont_mode(cw_mode_params_t * continuousWave, 00081 uint32_t frequency = 0); 00082 00083 virtual uint8_t apply_DR_offset(int8_t dr, int8_t dr_offset); 00084 00085 private: 00086 int8_t limit_tx_power(int8_t tx_power, int8_t max_band_tx_power, int8_t datarate); 00087 bool validate_channel_mask(uint16_t* channel_mask); 00088 void reenable_500khz_channels(uint16_t mask, uint16_t* channel_mask); 00089 00090 /*! 00091 * LoRaMAC channels 00092 */ 00093 channel_params_t channels[US915_HYBRID_MAX_NB_CHANNELS]; 00094 00095 /*! 00096 * LoRaMac bands 00097 */ 00098 band_t bands[US915_HYBRID_MAX_NB_BANDS]; 00099 00100 /*! 00101 * LoRaMac channels mask 00102 */ 00103 uint16_t channel_mask[US915_HYBRID_CHANNEL_MASK_SIZE]; 00104 00105 /*! 00106 * Previously used channel mask 00107 */ 00108 uint16_t current_channel_mask[US915_HYBRID_CHANNEL_MASK_SIZE]; 00109 00110 /*! 00111 * LoRaMac default channel mask 00112 */ 00113 uint16_t default_channel_mask[US915_HYBRID_CHANNEL_MASK_SIZE]; 00114 }; 00115 00116 #endif /* MBED_OS_LORAPHY_US915HYBRID_H_ */
Generated on Tue Jul 12 2022 12:44:31 by
