Skip to content

Commit ca0f5d7

Browse files
committed
Add support for Miromico GWC-02-LW-915.
1 parent cb9d97f commit ca0f5d7

File tree

3 files changed

+184
-0
lines changed

3 files changed

+184
-0
lines changed

chirpstack-concentratord-sx1302/src/config/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ pub fn get(filenames: Vec<String>) -> Configuration {
341341
"dragino_pg1302" => vendor::dragino::pg1302::new(&config).unwrap(),
342342
"embit_emb_lr1302_mpcie" => vendor::embit::emb_lr1302_mpcie::new(&config).unwrap(),
343343
"miromico_gwc_02_lw_868" => vendor::miromico::gwc_02_lw_868::new(&config).unwrap(),
344+
"miromico_gwc_02_lw_915" => vendor::miromico::gwc_02_lw_915::new(&config).unwrap(),
344345
"multitech_mtac_003e00" => vendor::multitech::mtac_003e00::new(&config).unwrap(),
345346
"multitech_mtac_003u00" => vendor::multitech::mtac_003u00::new(&config).unwrap(),
346347
"multitech_mtcap3_003e00" => vendor::multitech::mtcap3_003e00::new(&config).unwrap(),
Lines changed: 182 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,182 @@
1+
use anyhow::Result;
2+
use libconcentratord::{gnss, region};
3+
use libloragw_sx1302::hal;
4+
5+
use super::super::super::super::config::{self, Region};
6+
use super::super::{ComType, Configuration, RadioConfig};
7+
8+
// source: https://gitlab.com/fmlr/miro_edge/sx1302_hal/-/tree/master/packet_forwarder?ref_type=heads
9+
pub fn new(conf: &config::Configuration) -> Result<Configuration> {
10+
let region = conf.gateway.region.unwrap_or(Region::US915);
11+
12+
let tx_min_max_freqs = match region {
13+
Region::AS923 => region::as923::TX_MIN_MAX_FREQS.to_vec(),
14+
Region::AS923_2 => region::as923_2::TX_MIN_MAX_FREQS.to_vec(),
15+
Region::AS923_3 => region::as923_3::TX_MIN_MAX_FREQS.to_vec(),
16+
Region::AS923_4 => region::as923_4::TX_MIN_MAX_FREQS.to_vec(),
17+
Region::AU915 => region::au915::TX_MIN_MAX_FREQS.to_vec(),
18+
Region::KR920 => region::kr920::TX_MIN_MAX_FREQS.to_vec(),
19+
Region::US915 => region::us915::TX_MIN_MAX_FREQS.to_vec(),
20+
_ => return Err(anyhow!("Region is not supported: {}", region)),
21+
};
22+
23+
let enforce_duty_cycle = conf.gateway.model_flags.contains(&"ENFORCE_DC".to_string());
24+
25+
Ok(Configuration {
26+
enforce_duty_cycle,
27+
radio_count: 2,
28+
clock_source: 0,
29+
full_duplex: false,
30+
lora_multi_sf_bandwidth: 125000,
31+
radio_config: vec![
32+
RadioConfig {
33+
tx_min_max_freqs,
34+
radio_type: hal::RadioType::SX1250,
35+
single_input_mode: true,
36+
37+
rssi_offset: -215.4,
38+
rssi_temp_compensation: hal::RssiTempCompensationConfig {
39+
coeff_a: 0.0,
40+
coeff_b: 0.0,
41+
coeff_c: 20.41,
42+
coeff_d: 2162.56,
43+
coeff_e: 0.0,
44+
},
45+
tx_enable: true,
46+
tx_gain_table: vec![
47+
// 0
48+
hal::TxGainConfig {
49+
rf_power: 12,
50+
pa_gain: 0,
51+
pwr_idx: 15,
52+
..Default::default()
53+
},
54+
// 1
55+
hal::TxGainConfig {
56+
rf_power: 13,
57+
pa_gain: 0,
58+
pwr_idx: 16,
59+
..Default::default()
60+
},
61+
// 2
62+
hal::TxGainConfig {
63+
rf_power: 14,
64+
pa_gain: 0,
65+
pwr_idx: 17,
66+
..Default::default()
67+
},
68+
// 3
69+
hal::TxGainConfig {
70+
rf_power: 15,
71+
pa_gain: 0,
72+
pwr_idx: 19,
73+
..Default::default()
74+
},
75+
// 4
76+
hal::TxGainConfig {
77+
rf_power: 16,
78+
pa_gain: 0,
79+
pwr_idx: 20,
80+
..Default::default()
81+
},
82+
// 5
83+
hal::TxGainConfig {
84+
rf_power: 17,
85+
pa_gain: 0,
86+
pwr_idx: 22,
87+
..Default::default()
88+
},
89+
// 6
90+
hal::TxGainConfig {
91+
rf_power: 18,
92+
pa_gain: 1,
93+
pwr_idx: 1,
94+
..Default::default()
95+
},
96+
// 7
97+
hal::TxGainConfig {
98+
rf_power: 19,
99+
pa_gain: 1,
100+
pwr_idx: 2,
101+
..Default::default()
102+
},
103+
// 8
104+
hal::TxGainConfig {
105+
rf_power: 20,
106+
pa_gain: 1,
107+
pwr_idx: 3,
108+
..Default::default()
109+
},
110+
// 9
111+
hal::TxGainConfig {
112+
rf_power: 21,
113+
pa_gain: 1,
114+
pwr_idx: 4,
115+
..Default::default()
116+
},
117+
// 10
118+
hal::TxGainConfig {
119+
rf_power: 22,
120+
pa_gain: 1,
121+
pwr_idx: 5,
122+
..Default::default()
123+
},
124+
// 11
125+
hal::TxGainConfig {
126+
rf_power: 23,
127+
pa_gain: 1,
128+
pwr_idx: 6,
129+
..Default::default()
130+
},
131+
// 12
132+
hal::TxGainConfig {
133+
rf_power: 24,
134+
pa_gain: 1,
135+
pwr_idx: 7,
136+
..Default::default()
137+
},
138+
// 13
139+
hal::TxGainConfig {
140+
rf_power: 25,
141+
pa_gain: 1,
142+
pwr_idx: 9,
143+
..Default::default()
144+
},
145+
// 14
146+
hal::TxGainConfig {
147+
rf_power: 26,
148+
pa_gain: 1,
149+
pwr_idx: 11,
150+
..Default::default()
151+
},
152+
// 15
153+
hal::TxGainConfig {
154+
rf_power: 27,
155+
pa_gain: 1,
156+
pwr_idx: 14,
157+
..Default::default()
158+
},
159+
],
160+
},
161+
RadioConfig {
162+
radio_type: hal::RadioType::SX1250,
163+
single_input_mode: false,
164+
rssi_offset: -215.4,
165+
rssi_temp_compensation: hal::RssiTempCompensationConfig {
166+
coeff_a: 0.0,
167+
coeff_b: 0.0,
168+
coeff_c: 20.41,
169+
coeff_d: 2162.56,
170+
coeff_e: 0.0,
171+
},
172+
tx_enable: false,
173+
tx_min_max_freqs: vec![],
174+
tx_gain_table: vec![],
175+
},
176+
],
177+
gps: gnss::Device::None,
178+
com_type: ComType::Usb,
179+
com_path: conf.gateway.get_com_dev_path("/dev/ttyACM0"),
180+
..Default::default()
181+
})
182+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
pub mod gwc_02_lw_868;
2+
pub mod gwc_02_lw_915;

0 commit comments

Comments
 (0)