MCPcopy Create free account
hub / github.com/chirpstack/chirpstack / handle_device

Function handle_device

chirpstack/src/cmd/import_device_profiles.rs:187–212  ·  view source on GitHub ↗
(dir: &Path, vendor: &Vendor, device: &str)

Source from the content-addressed store, hash-verified

185}
186
187async fn handle_device(dir: &Path, vendor: &Vendor, device: &str) -> Result<()> {
188 let device_conf = dir.join("devices").join(device);
189
190 info!(path = ?device_conf, "Reading device configuration");
191 let device_conf: DeviceConfig = toml::from_str(&fs::read_to_string(device_conf)?)?;
192 info!(device_name = %device_conf.device.name, "Device loaded");
193
194 let _ = device_profile::upsert_device(device_profile::Device {
195 id: device_conf.device.id.into(),
196 vendor_id: vendor.id.into(),
197 name: device_conf.device.name.clone(),
198 description: device_conf.device.description.clone(),
199 metadata: fields::KeyValue::new(device_conf.device.metadata.clone()),
200 ..Default::default()
201 })
202 .await?;
203
204 for firmware in &device_conf.device.firmware {
205 let span = span!(Level::INFO, "", firmware = %firmware.version);
206 handle_firmware(dir, &device_conf.device, firmware)
207 .instrument(span)
208 .await?;
209 }
210
211 Ok(())
212}
213
214async fn handle_firmware(dir: &Path, device: &Device, firmware: &DeviceFirmware) -> Result<()> {
215 let codec = if let Some(codec) = &firmware.codec {

Callers 1

handle_devicesFunction · 0.85

Calls 3

upsert_deviceFunction · 0.85
handle_firmwareFunction · 0.85
intoMethod · 0.45

Tested by

no test coverage detected