init
Embed:
(wiki syntax)
Show/hide line numbers
LoRaPHYUS915Hybrid.h
Go to the documentation of this file.
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 bool 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 13:24:48 by
1.7.2