(&mut self)
| 133 | } |
| 134 | |
| 135 | async fn _handle_relayed(&mut self) -> Result<()> { |
| 136 | self.get_phy_payload_relayed()?; |
| 137 | self.get_device_data().await?; // the device-data of the relay |
| 138 | |
| 139 | if self.is_error() { |
| 140 | // We log the tx ack error under the relay as this is the device to which the downlink |
| 141 | // is sent. |
| 142 | self.log_tx_ack_error().await?; |
| 143 | } else { |
| 144 | // First handle the relay frame-counter increment. |
| 145 | self.increment_a_f_cnt_down()?; |
| 146 | self.save_device_session().await?; |
| 147 | |
| 148 | // Get data of relayed device. |
| 149 | self.get_device_data_relayed().await?; |
| 150 | |
| 151 | // Handle end-device frame-counter increment + queue item. |
| 152 | if self.is_application_payload_relayed() { |
| 153 | self.get_device_queue_item().await?; |
| 154 | if self.is_unconfirmed_downlink_relayed() { |
| 155 | self.delete_device_queue_item().await?; |
| 156 | } |
| 157 | |
| 158 | if self.is_confirmed_downlink_relayed() { |
| 159 | self.set_device_queue_item_pending().await?; |
| 160 | self.set_device_session_conf_f_cnt_relayed()?; |
| 161 | } |
| 162 | |
| 163 | self.increment_a_f_cnt_down_relayed()?; |
| 164 | self.save_device_session_relayed().await?; |
| 165 | |
| 166 | // Log tx ack event. |
| 167 | self.get_device_data_relayed().await?; |
| 168 | self.send_tx_ack_event_relayed().await?; |
| 169 | } else if self.is_mac_only_downlink_relayed() { |
| 170 | self.increment_n_f_cnt_down_relayed()?; |
| 171 | self.save_device_session_relayed().await?; |
| 172 | } |
| 173 | |
| 174 | // Log downlink frame and meta-data. |
| 175 | // This will log the downlink under the relay as this is the device to which the |
| 176 | // downlink is sent. |
| 177 | self.log_downlink_frame().await?; |
| 178 | self.log_downlink_meta().await?; |
| 179 | } |
| 180 | |
| 181 | Ok(()) |
| 182 | } |
| 183 | |
| 184 | async fn get_downlink_frame(&mut self) -> Result<()> { |
| 185 | trace!("Get downlink-frame from Redis"); |
no test coverage detected