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

Method get_dev_addr_prefix

lrwn/src/netid.rs:96–112  ·  view source on GitHub ↗
(&self, prefix_length: u32, nwkid_bits: u32)

Source from the content-addressed store, hash-verified

94 }
95
96 fn get_dev_addr_prefix(&self, prefix_length: u32, nwkid_bits: u32) -> DevAddrPrefix {
97 // type prefix
98 let mut prefix: u32 = 254 << (32 - prefix_length);
99
100 // NwkID prefix
101 let mut netid_bytes: [u8; 4] = [0; 4];
102 let netid_id = self.id();
103 netid_bytes[4 - netid_id.len()..].clone_from_slice(&netid_id);
104 let mut nwkid = u32::from_be_bytes(netid_bytes);
105 nwkid <<= 32 - nwkid_bits; // truncate the MSB of the NetID ID field
106 nwkid >>= prefix_length; // shift base for the prefix MSB
107
108 // merge type prefix with nwkid.
109 prefix |= nwkid;
110
111 DevAddrPrefix::new(prefix.to_be_bytes(), prefix_length + nwkid_bits)
112 }
113}
114
115impl fmt::Display for NetID {

Callers 1

dev_addr_prefixMethod · 0.80

Calls 2

idMethod · 0.80
to_be_bytesMethod · 0.45

Tested by

no test coverage detected