mirror of
https://github.com/chirpstack/chirpstack.git
synced 2025-06-01 15:30:46 +00:00
Reset uplink_adr_history in case of DR / TxPower / NbTrans change.
This commit is contained in:
parent
4d27c339cc
commit
99561f2e47
4
api/proto/internal/internal.proto
vendored
4
api/proto/internal/internal.proto
vendored
@ -106,6 +106,10 @@ message DeviceSession {
|
|||||||
DeviceSession pending_rejoin_device_session = 29;
|
DeviceSession pending_rejoin_device_session = 29;
|
||||||
|
|
||||||
// Uplink history for ADR (last 20 uplink transmissions).
|
// Uplink history for ADR (last 20 uplink transmissions).
|
||||||
|
// This table is reset in case one of parameters has changed:
|
||||||
|
// * DR
|
||||||
|
// * TxPower
|
||||||
|
// * NbTrans
|
||||||
repeated UplinkAdrHistory uplink_adr_history = 30;
|
repeated UplinkAdrHistory uplink_adr_history = 30;
|
||||||
|
|
||||||
// Mac-command error count.
|
// Mac-command error count.
|
||||||
|
@ -53,7 +53,7 @@ pub fn handle(
|
|||||||
if ch_mask_ack && dr_ack && tx_power_ack {
|
if ch_mask_ack && dr_ack && tx_power_ack {
|
||||||
// The device acked all request (channel-mask, data-rate and power),
|
// The device acked all request (channel-mask, data-rate and power),
|
||||||
// in this case we update the device-session with all the requested
|
// in this case we update the device-session with all the requested
|
||||||
// modifcations.
|
// modifications.
|
||||||
|
|
||||||
// reset the error counter
|
// reset the error counter
|
||||||
ds.mac_command_error_count
|
ds.mac_command_error_count
|
||||||
@ -69,6 +69,14 @@ pub fn handle(
|
|||||||
)
|
)
|
||||||
.context("Get enabled uplink-channels for LinkADRReq payloads")?;
|
.context("Get enabled uplink-channels for LinkADRReq payloads")?;
|
||||||
|
|
||||||
|
// Reset the uplink ADR history table in case one of the TxPower, DR or NbTrans parameters have changed.
|
||||||
|
if ds.tx_power_index != link_adr_req.tx_power as u32
|
||||||
|
|| ds.dr != link_adr_req.dr as u32
|
||||||
|
|| ds.nb_trans != link_adr_req.redundancy.nb_rep as u32
|
||||||
|
{
|
||||||
|
ds.uplink_adr_history = vec![];
|
||||||
|
}
|
||||||
|
|
||||||
ds.tx_power_index = link_adr_req.tx_power as u32;
|
ds.tx_power_index = link_adr_req.tx_power as u32;
|
||||||
ds.dr = link_adr_req.dr as u32;
|
ds.dr = link_adr_req.dr as u32;
|
||||||
ds.nb_trans = link_adr_req.redundancy.nb_rep as u32;
|
ds.nb_trans = link_adr_req.redundancy.nb_rep as u32;
|
||||||
@ -174,6 +182,9 @@ pub mod test {
|
|||||||
.iter()
|
.iter()
|
||||||
.cloned()
|
.cloned()
|
||||||
.collect(),
|
.collect(),
|
||||||
|
uplink_adr_history: vec![internal::UplinkAdrHistory {
|
||||||
|
..Default::default()
|
||||||
|
}],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
link_adr_req: Some(lrwn::LinkADRReqPayload {
|
link_adr_req: Some(lrwn::LinkADRReqPayload {
|
||||||
@ -197,6 +208,7 @@ pub mod test {
|
|||||||
nb_trans: 2,
|
nb_trans: 2,
|
||||||
dr: 5,
|
dr: 5,
|
||||||
mac_command_error_count: HashMap::new(),
|
mac_command_error_count: HashMap::new(),
|
||||||
|
uplink_adr_history: vec![],
|
||||||
..Default::default()
|
..Default::default()
|
||||||
},
|
},
|
||||||
expected_error: None,
|
expected_error: None,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user