Skip to content

Commit 253382d

Browse files
committed
Add support for Miromico GWC-02-LW-868.
1 parent 7b69cea commit 253382d

File tree

4 files changed

+183
-0
lines changed

4 files changed

+183
-0
lines changed

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

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

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use libloragw_sx1302::hal;
33

44
pub mod dragino;
55
pub mod embit;
6+
pub mod miromico;
67
pub mod multitech;
78
pub mod rak;
89
pub mod seeed;

0 commit comments

Comments
 (0)