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

Function handle

chirpstack/src/maccommand/mod.rs:121–164  ·  view source on GitHub ↗
(
    uplink_frame_set: &UplinkFrameSet,
    cid: lrwn::CID,
    block: &lrwn::MACCommandSet,
    pending_block: Option<&lrwn::MACCommandSet>,
    tenant: &tenant::Tenant,
    app: &application::Appli

Source from the content-addressed store, hash-verified

119
120#[allow(clippy::too_many_arguments)]
121async fn handle(
122 uplink_frame_set: &UplinkFrameSet,
123 cid: lrwn::CID,
124 block: &lrwn::MACCommandSet,
125 pending_block: Option<&lrwn::MACCommandSet>,
126 tenant: &tenant::Tenant,
127 app: &application::Application,
128 dp: &device_profile::DeviceProfile,
129 dev: &mut device::Device,
130 region_conf: Arc<Box<dyn lrwn::region::Region + Send + Sync>>,
131) -> Result<Option<lrwn::MACCommandSet>> {
132 match cid {
133 lrwn::CID::DevStatusAns => {
134 dev_status::handle(uplink_frame_set, tenant, app, dp, dev, block).await
135 }
136 lrwn::CID::DeviceModeInd => device_mode_ind::handle(dev, block).await,
137 lrwn::CID::DeviceTimeReq => device_time::handle(uplink_frame_set, dev, block),
138 lrwn::CID::LinkADRAns => link_adr::handle(uplink_frame_set, dev, block, pending_block),
139 lrwn::CID::LinkCheckReq => link_check::handle(uplink_frame_set, dev, block),
140 lrwn::CID::NewChannelAns => new_channel::handle(dev, block, pending_block, region_conf),
141 lrwn::CID::PingSlotChannelAns => ping_slot_channel::handle(dev, block, pending_block),
142 lrwn::CID::PingSlotInfoReq => ping_slot_info::handle(dev, block),
143 lrwn::CID::RejoinParamSetupAns => rejoin_param_setup::handle(dev, block, pending_block),
144 lrwn::CID::RekeyInd => rekey::handle(dev, block),
145 lrwn::CID::ResetInd => reset::handle(dev, dp, block),
146 lrwn::CID::RxParamSetupAns => rx_param_setup::handle(dev, block, pending_block),
147 lrwn::CID::RxTimingSetupAns => rx_timing_setup::handle(dev, block, pending_block),
148 lrwn::CID::TxParamSetupAns => tx_param_setup::handle(dev, block, pending_block),
149 lrwn::CID::RelayConfAns => relay_conf::handle(dev, block, pending_block),
150 lrwn::CID::EndDeviceConfAns => end_device_conf::handle(dev, block, pending_block),
151 lrwn::CID::FilterListAns => filter_list::handle(dev, block, pending_block),
152 lrwn::CID::UpdateUplinkListAns => update_uplink_list::handle(dev, block, pending_block),
153 lrwn::CID::ConfigureFwdLimitAns => configure_fwd_limit::handle(dev, block, pending_block),
154 lrwn::CID::NotifyNewEndDeviceReq => {
155 notify_new_end_device::handle(tenant, dp, app, dev, block).await
156 }
157 lrwn::CID::CtrlUplinkListAns => ctrl_uplink_list::handle(dev, block, pending_block).await,
158 _ => {
159 warn!(cid = %cid, "Unexpected CID");
160 // Return OK, we don't want to break out of the uplink handling.
161 Ok(None)
162 }
163 }
164}
165
166#[cfg(test)]
167pub mod test {

Callers 1

handle_uplinkFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected