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 /*! 00039 * LoRaMac maximum number of channels 00040 */ 00041 #define US915_HYBRID_MAX_NB_CHANNELS 72 00042 00043 /*! 00044 * LoRaMac maximum number of bands 00045 */ 00046 #define US915_HYBRID_MAX_NB_BANDS 1 00047 00048 #define US915_HYBRID_CHANNEL_MASK_SIZE 5 00049 00050 00051 class LoRaPHYUS915Hybrid : public LoRaPHY { 00052 00053 public: 00054 00055 LoRaPHYUS915Hybrid(LoRaWANTimeHandler &lora_time); 00056 virtual ~LoRaPHYUS915Hybrid(); 00057 00058 virtual void restore_default_channels(); 00059 00060 virtual bool get_next_ADR(bool restore_channel_mask, int8_t& dr_out, 00061 int8_t& tx_power_out, uint32_t& adr_ack_cnt); 00062 00063 virtual bool rx_config(rx_config_params_t * rxConfig, int8_t* datarate); 00064 00065 virtual bool tx_config(tx_config_params_t* tx_config, int8_t* tx_power, 00066 lorawan_time_t* tx_toa); 00067 00068 virtual uint8_t link_ADR_request(adr_req_params_t* params, 00069 int8_t* dr_out, int8_t* tx_power_out, 00070 uint8_t* nb_rep_out, 00071 uint8_t* nb_bytes_parsed); 00072 00073 virtual uint8_t accept_rx_param_setup_req(rx_param_setup_req_t* params); 00074 00075 virtual int8_t get_alternate_DR(uint8_t nb_trials); 00076 00077 virtual lorawan_status_t set_next_channel(channel_selection_params_t* params, 00078 uint8_t* channel, lorawan_time_t* time, 00079 lorawan_time_t* aggregate_timeoff); 00080 00081 virtual void set_tx_cont_mode(cw_mode_params_t * continuousWave, 00082 uint32_t frequency = 0); 00083 00084 virtual uint8_t apply_DR_offset(int8_t dr, int8_t dr_offset); 00085 00086 private: 00087 int8_t limit_tx_power(int8_t tx_power, int8_t max_band_tx_power, int8_t datarate); 00088 bool validate_channel_mask(uint16_t* channel_mask); 00089 void reenable_500khz_channels(uint16_t mask, uint16_t* channel_mask); 00090 00091 /*! 00092 * LoRaMAC channels 00093 */ 00094 channel_params_t channels[US915_HYBRID_MAX_NB_CHANNELS]; 00095 00096 /*! 00097 * LoRaMac bands 00098 */ 00099 band_t bands[US915_HYBRID_MAX_NB_BANDS]; 00100 00101 /*! 00102 * LoRaMac channels mask 00103 */ 00104 uint16_t channel_mask[US915_HYBRID_CHANNEL_MASK_SIZE]; 00105 00106 /*! 00107 * Previously used channel mask 00108 */ 00109 uint16_t current_channel_mask[US915_HYBRID_CHANNEL_MASK_SIZE]; 00110 00111 /*! 00112 * LoRaMac default channel mask 00113 */ 00114 uint16_t default_channel_mask[US915_HYBRID_CHANNEL_MASK_SIZE]; 00115 }; 00116 00117 #endif /* MBED_OS_LORAPHY_US915HYBRID_H_ */
Generated on Tue Jul 12 2022 12:11:25 by
