mirror of
https://github.com/chirpstack/chirpstack.git
synced 2025-04-07 19:34:20 +00:00
Fix c > 64 to c >= 64 typo in channel-mask calculation.
Depending the channel-configuration, this would send three LinkADRReq mac-commands while the same configuration could be send to the device in two LinkADRReq mac-commands.
This commit is contained in:
parent
3b297ef221
commit
d97da8ed50
@ -1107,7 +1107,7 @@ impl Region for Configuration {
|
||||
// use the ChMask of the first LinkADRReqPayload, besides
|
||||
// turning off all 125 kHz this payload contains the ChMask
|
||||
// for the last block of channels.
|
||||
if c > 64 {
|
||||
if c >= 64 {
|
||||
out[0].ch_mask.set(c % 16, true);
|
||||
continue;
|
||||
}
|
||||
@ -1419,11 +1419,11 @@ pub mod test {
|
||||
expected_uplink_channels: c.get_uplink_channel_indices(),
|
||||
expected_link_adr_req_payloads: vec![],
|
||||
},
|
||||
// Only activate 0 - 7.
|
||||
// Only activate 0 - 7 + 64.
|
||||
Test {
|
||||
device_channels: c.get_uplink_channel_indices(),
|
||||
enabled_channels: vec![0, 1, 2, 3, 4, 5, 6, 7],
|
||||
expected_uplink_channels: vec![0, 1, 2, 3, 4, 5, 6, 7],
|
||||
enabled_channels: vec![0, 1, 2, 3, 4, 5, 6, 7, 64],
|
||||
expected_uplink_channels: vec![0, 1, 2, 3, 4, 5, 6, 7, 64],
|
||||
expected_link_adr_req_payloads: vec![
|
||||
LinkADRReqPayload {
|
||||
dr: 0,
|
||||
@ -1432,7 +1432,10 @@ pub mod test {
|
||||
ch_mask_cntl: 7,
|
||||
nb_rep: 0,
|
||||
},
|
||||
ch_mask: ChMask::new([false; 16]),
|
||||
ch_mask: ChMask::new([
|
||||
true, false, false, false, false, false, false, false, false, false,
|
||||
false, false, false, false, false, false,
|
||||
]),
|
||||
},
|
||||
LinkADRReqPayload {
|
||||
dr: 0,
|
||||
@ -1448,6 +1451,42 @@ pub mod test {
|
||||
},
|
||||
],
|
||||
},
|
||||
// Only activate 0 - 15 + 64 & 65.
|
||||
Test {
|
||||
device_channels: c.get_uplink_channel_indices(),
|
||||
enabled_channels: vec![
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 64, 65,
|
||||
],
|
||||
expected_uplink_channels: vec![
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 64, 65,
|
||||
],
|
||||
expected_link_adr_req_payloads: vec![
|
||||
LinkADRReqPayload {
|
||||
dr: 0,
|
||||
tx_power: 0,
|
||||
redundancy: Redundancy {
|
||||
ch_mask_cntl: 7,
|
||||
nb_rep: 0,
|
||||
},
|
||||
ch_mask: ChMask::new([
|
||||
true, true, false, false, false, false, false, false, false, false,
|
||||
false, false, false, false, false, false,
|
||||
]),
|
||||
},
|
||||
LinkADRReqPayload {
|
||||
dr: 0,
|
||||
tx_power: 0,
|
||||
redundancy: Redundancy {
|
||||
ch_mask_cntl: 0,
|
||||
nb_rep: 0,
|
||||
},
|
||||
ch_mask: ChMask::new([
|
||||
true, true, true, true, true, true, true, true, true, true, true, true,
|
||||
true, true, true, true,
|
||||
]),
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
for tst in &tests {
|
||||
|
@ -797,7 +797,7 @@ impl Region for Configuration {
|
||||
// use the ChMask of the first LinkADRReqPayload, besides
|
||||
// turning off all 125 kHz this payload contains the ChMask
|
||||
// for the last block of channels.
|
||||
if c > 64 {
|
||||
if c >= 64 {
|
||||
out[0].ch_mask.set(c % 16, true);
|
||||
continue;
|
||||
}
|
||||
@ -1111,11 +1111,11 @@ pub mod test {
|
||||
expected_uplink_channels: c.get_uplink_channel_indices(),
|
||||
expected_link_adr_req_payloads: vec![],
|
||||
},
|
||||
// Only activate 0 - 7.
|
||||
// Only activate 0 - 7 + 64.
|
||||
Test {
|
||||
device_channels: c.get_uplink_channel_indices(),
|
||||
enabled_channels: vec![0, 1, 2, 3, 4, 5, 6, 7],
|
||||
expected_uplink_channels: vec![0, 1, 2, 3, 4, 5, 6, 7],
|
||||
enabled_channels: vec![0, 1, 2, 3, 4, 5, 6, 7, 64],
|
||||
expected_uplink_channels: vec![0, 1, 2, 3, 4, 5, 6, 7, 64],
|
||||
expected_link_adr_req_payloads: vec![
|
||||
LinkADRReqPayload {
|
||||
dr: 0,
|
||||
@ -1124,7 +1124,10 @@ pub mod test {
|
||||
ch_mask_cntl: 7,
|
||||
nb_rep: 0,
|
||||
},
|
||||
ch_mask: ChMask::new([false; 16]),
|
||||
ch_mask: ChMask::new([
|
||||
true, false, false, false, false, false, false, false, false, false,
|
||||
false, false, false, false, false, false,
|
||||
]),
|
||||
},
|
||||
LinkADRReqPayload {
|
||||
dr: 0,
|
||||
@ -1140,6 +1143,42 @@ pub mod test {
|
||||
},
|
||||
],
|
||||
},
|
||||
// Only activate 0 - 15 + 64 & 65.
|
||||
Test {
|
||||
device_channels: c.get_uplink_channel_indices(),
|
||||
enabled_channels: vec![
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 64, 65,
|
||||
],
|
||||
expected_uplink_channels: vec![
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 64, 65,
|
||||
],
|
||||
expected_link_adr_req_payloads: vec![
|
||||
LinkADRReqPayload {
|
||||
dr: 0,
|
||||
tx_power: 0,
|
||||
redundancy: Redundancy {
|
||||
ch_mask_cntl: 7,
|
||||
nb_rep: 0,
|
||||
},
|
||||
ch_mask: ChMask::new([
|
||||
true, true, false, false, false, false, false, false, false, false,
|
||||
false, false, false, false, false, false,
|
||||
]),
|
||||
},
|
||||
LinkADRReqPayload {
|
||||
dr: 0,
|
||||
tx_power: 0,
|
||||
redundancy: Redundancy {
|
||||
ch_mask_cntl: 0,
|
||||
nb_rep: 0,
|
||||
},
|
||||
ch_mask: ChMask::new([
|
||||
true, true, true, true, true, true, true, true, true, true, true, true,
|
||||
true, true, true, true,
|
||||
]),
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
for tst in &tests {
|
||||
|
Loading…
x
Reference in New Issue
Block a user