diff options
| author | xoviat <[email protected]> | 2023-07-16 17:28:34 -0500 |
|---|---|---|
| committer | xoviat <[email protected]> | 2023-07-16 17:28:34 -0500 |
| commit | 34217ea797c6bbea6219bb2bc2b611a99212e14b (patch) | |
| tree | 5c6fdd77632b46b6cc81daefbf0a2c2728748774 /embassy-stm32-wpan/src | |
| parent | a0515ca7ac9f4aebeadede7c6a2fa312b60b5d55 (diff) | |
wpan: add slice data view
Diffstat (limited to 'embassy-stm32-wpan/src')
| -rw-r--r-- | embassy-stm32-wpan/src/mac/event.rs | 73 | ||||
| -rw-r--r-- | embassy-stm32-wpan/src/mac/indications.rs | 8 |
2 files changed, 38 insertions, 43 deletions
diff --git a/embassy-stm32-wpan/src/mac/event.rs b/embassy-stm32-wpan/src/mac/event.rs index 67f207d57..a2bb79222 100644 --- a/embassy-stm32-wpan/src/mac/event.rs +++ b/embassy-stm32-wpan/src/mac/event.rs | |||
| @@ -36,53 +36,40 @@ impl Event { | |||
| 36 | let opcode = u16::from_le_bytes(payload[0..2].try_into().unwrap()); | 36 | let opcode = u16::from_le_bytes(payload[0..2].try_into().unwrap()); |
| 37 | 37 | ||
| 38 | let opcode = OpcodeM0ToM4::try_from(opcode)?; | 38 | let opcode = OpcodeM0ToM4::try_from(opcode)?; |
| 39 | let buf = &payload[2..]; | ||
| 39 | 40 | ||
| 40 | match opcode { | 41 | match opcode { |
| 41 | OpcodeM0ToM4::MlmeAssociateCnf => Ok(MacEvent::MlmeAssociateCnf(AssociateConfirm::from_buffer( | 42 | OpcodeM0ToM4::MlmeAssociateCnf => Ok(MacEvent::MlmeAssociateCnf(AssociateConfirm::from_buffer(buf)?)), |
| 42 | &payload[2..], | 43 | OpcodeM0ToM4::MlmeDisassociateCnf => { |
| 43 | )?)), | 44 | Ok(MacEvent::MlmeDisassociateCnf(DisassociateConfirm::from_buffer(buf)?)) |
| 44 | OpcodeM0ToM4::MlmeDisassociateCnf => Ok(MacEvent::MlmeDisassociateCnf(DisassociateConfirm::from_buffer( | ||
| 45 | &payload[2..], | ||
| 46 | )?)), | ||
| 47 | OpcodeM0ToM4::MlmeGetCnf => Ok(MacEvent::MlmeGetCnf(GetConfirm::from_buffer(&payload[2..])?)), | ||
| 48 | OpcodeM0ToM4::MlmeGtsCnf => Ok(MacEvent::MlmeGtsCnf(GtsConfirm::from_buffer(&payload[2..])?)), | ||
| 49 | OpcodeM0ToM4::MlmeResetCnf => Ok(MacEvent::MlmeResetCnf(ResetConfirm::from_buffer(&payload[2..])?)), | ||
| 50 | OpcodeM0ToM4::MlmeRxEnableCnf => { | ||
| 51 | Ok(MacEvent::MlmeRxEnableCnf(RxEnableConfirm::from_buffer(&payload[2..])?)) | ||
| 52 | } | 45 | } |
| 53 | OpcodeM0ToM4::MlmeScanCnf => Ok(MacEvent::MlmeScanCnf(ScanConfirm::from_buffer(&payload[2..])?)), | 46 | OpcodeM0ToM4::MlmeGetCnf => Ok(MacEvent::MlmeGetCnf(GetConfirm::from_buffer(buf)?)), |
| 54 | OpcodeM0ToM4::MlmeSetCnf => Ok(MacEvent::MlmeSetCnf(SetConfirm::from_buffer(&payload[2..])?)), | 47 | OpcodeM0ToM4::MlmeGtsCnf => Ok(MacEvent::MlmeGtsCnf(GtsConfirm::from_buffer(buf)?)), |
| 55 | OpcodeM0ToM4::MlmeStartCnf => Ok(MacEvent::MlmeStartCnf(StartConfirm::from_buffer(&payload[2..])?)), | 48 | OpcodeM0ToM4::MlmeResetCnf => Ok(MacEvent::MlmeResetCnf(ResetConfirm::from_buffer(buf)?)), |
| 56 | OpcodeM0ToM4::MlmePollCnf => Ok(MacEvent::MlmePollCnf(PollConfirm::from_buffer(&payload[2..])?)), | 49 | OpcodeM0ToM4::MlmeRxEnableCnf => Ok(MacEvent::MlmeRxEnableCnf(RxEnableConfirm::from_buffer(buf)?)), |
| 57 | OpcodeM0ToM4::MlmeDpsCnf => Ok(MacEvent::MlmeDpsCnf(DpsConfirm::from_buffer(&payload[2..])?)), | 50 | OpcodeM0ToM4::MlmeScanCnf => Ok(MacEvent::MlmeScanCnf(ScanConfirm::from_buffer(buf)?)), |
| 58 | OpcodeM0ToM4::MlmeSoundingCnf => { | 51 | OpcodeM0ToM4::MlmeSetCnf => Ok(MacEvent::MlmeSetCnf(SetConfirm::from_buffer(buf)?)), |
| 59 | Ok(MacEvent::MlmeSoundingCnf(SoundingConfirm::from_buffer(&payload[2..])?)) | 52 | OpcodeM0ToM4::MlmeStartCnf => Ok(MacEvent::MlmeStartCnf(StartConfirm::from_buffer(buf)?)), |
| 53 | OpcodeM0ToM4::MlmePollCnf => Ok(MacEvent::MlmePollCnf(PollConfirm::from_buffer(buf)?)), | ||
| 54 | OpcodeM0ToM4::MlmeDpsCnf => Ok(MacEvent::MlmeDpsCnf(DpsConfirm::from_buffer(buf)?)), | ||
| 55 | OpcodeM0ToM4::MlmeSoundingCnf => Ok(MacEvent::MlmeSoundingCnf(SoundingConfirm::from_buffer(buf)?)), | ||
| 56 | OpcodeM0ToM4::MlmeCalibrateCnf => Ok(MacEvent::MlmeCalibrateCnf(CalibrateConfirm::from_buffer(buf)?)), | ||
| 57 | OpcodeM0ToM4::McpsDataCnf => Ok(MacEvent::McpsDataCnf(DataConfirm::from_buffer(buf)?)), | ||
| 58 | OpcodeM0ToM4::McpsPurgeCnf => Ok(MacEvent::McpsPurgeCnf(PurgeConfirm::from_buffer(buf)?)), | ||
| 59 | OpcodeM0ToM4::MlmeAssociateInd => Ok(MacEvent::MlmeAssociateInd(AssociateIndication::from_buffer(buf)?)), | ||
| 60 | OpcodeM0ToM4::MlmeDisassociateInd => { | ||
| 61 | Ok(MacEvent::MlmeDisassociateInd(DisassociateIndication::from_buffer(buf)?)) | ||
| 60 | } | 62 | } |
| 61 | OpcodeM0ToM4::MlmeCalibrateCnf => Ok(MacEvent::MlmeCalibrateCnf(CalibrateConfirm::from_buffer( | 63 | OpcodeM0ToM4::MlmeBeaconNotifyInd => { |
| 62 | &payload[2..], | 64 | Ok(MacEvent::MlmeBeaconNotifyInd(BeaconNotifyIndication::from_buffer(buf)?)) |
| 63 | )?)), | 65 | } |
| 64 | OpcodeM0ToM4::McpsDataCnf => Ok(MacEvent::McpsDataCnf(DataConfirm::from_buffer(&payload[2..])?)), | 66 | OpcodeM0ToM4::MlmeCommStatusInd => Ok(MacEvent::MlmeCommStatusInd(CommStatusIndication::from_buffer(buf)?)), |
| 65 | OpcodeM0ToM4::McpsPurgeCnf => Ok(MacEvent::McpsPurgeCnf(PurgeConfirm::from_buffer(&payload[2..])?)), | 67 | OpcodeM0ToM4::MlmeGtsInd => Ok(MacEvent::MlmeGtsInd(GtsIndication::from_buffer(buf)?)), |
| 66 | OpcodeM0ToM4::MlmeAssociateInd => Ok(MacEvent::MlmeAssociateInd(AssociateIndication::from_buffer( | 68 | OpcodeM0ToM4::MlmeOrphanInd => Ok(MacEvent::MlmeOrphanInd(OrphanIndication::from_buffer(buf)?)), |
| 67 | &payload[2..], | 69 | OpcodeM0ToM4::MlmeSyncLossInd => Ok(MacEvent::MlmeSyncLossInd(SyncLossIndication::from_buffer(buf)?)), |
| 68 | )?)), | 70 | OpcodeM0ToM4::MlmeDpsInd => Ok(MacEvent::MlmeDpsInd(DpsIndication::from_buffer(buf)?)), |
| 69 | OpcodeM0ToM4::MlmeDisassociateInd => Ok(MacEvent::MlmeDisassociateInd( | 71 | OpcodeM0ToM4::McpsDataInd => Ok(MacEvent::McpsDataInd(DataIndication::from_buffer(buf)?)), |
| 70 | DisassociateIndication::from_buffer(&payload[2..])?, | 72 | OpcodeM0ToM4::MlmePollInd => Ok(MacEvent::MlmePollInd(PollIndication::from_buffer(buf)?)), |
| 71 | )), | ||
| 72 | OpcodeM0ToM4::MlmeBeaconNotifyInd => Ok(MacEvent::MlmeBeaconNotifyInd( | ||
| 73 | BeaconNotifyIndication::from_buffer(&payload[2..])?, | ||
| 74 | )), | ||
| 75 | OpcodeM0ToM4::MlmeCommStatusInd => Ok(MacEvent::MlmeCommStatusInd(CommStatusIndication::from_buffer( | ||
| 76 | &payload[2..], | ||
| 77 | )?)), | ||
| 78 | OpcodeM0ToM4::MlmeGtsInd => Ok(MacEvent::MlmeGtsInd(GtsIndication::from_buffer(&payload[2..])?)), | ||
| 79 | OpcodeM0ToM4::MlmeOrphanInd => Ok(MacEvent::MlmeOrphanInd(OrphanIndication::from_buffer(&payload[2..])?)), | ||
| 80 | OpcodeM0ToM4::MlmeSyncLossInd => Ok(MacEvent::MlmeSyncLossInd(SyncLossIndication::from_buffer( | ||
| 81 | &payload[2..], | ||
| 82 | )?)), | ||
| 83 | OpcodeM0ToM4::MlmeDpsInd => Ok(MacEvent::MlmeDpsInd(DpsIndication::from_buffer(&payload[2..])?)), | ||
| 84 | OpcodeM0ToM4::McpsDataInd => Ok(MacEvent::McpsDataInd(DataIndication::from_buffer(&payload[2..])?)), | ||
| 85 | OpcodeM0ToM4::MlmePollInd => Ok(MacEvent::MlmePollInd(PollIndication::from_buffer(&payload[2..])?)), | ||
| 86 | } | 73 | } |
| 87 | } | 74 | } |
| 88 | } | 75 | } |
diff --git a/embassy-stm32-wpan/src/mac/indications.rs b/embassy-stm32-wpan/src/mac/indications.rs index 66819dc9d..cf795dfa0 100644 --- a/embassy-stm32-wpan/src/mac/indications.rs +++ b/embassy-stm32-wpan/src/mac/indications.rs | |||
| @@ -1,3 +1,5 @@ | |||
| 1 | use core::slice; | ||
| 2 | |||
| 1 | use super::consts::MAX_PENDING_ADDRESS; | 3 | use super::consts::MAX_PENDING_ADDRESS; |
| 2 | use super::event::ParseableMacEvent; | 4 | use super::event::ParseableMacEvent; |
| 3 | use super::typedefs::{ | 5 | use super::typedefs::{ |
| @@ -233,6 +235,12 @@ pub struct DataIndication { | |||
| 233 | 235 | ||
| 234 | impl ParseableMacEvent for DataIndication {} | 236 | impl ParseableMacEvent for DataIndication {} |
| 235 | 237 | ||
| 238 | impl DataIndication { | ||
| 239 | pub fn payload<'a>(&'a self) -> &'a [u8] { | ||
| 240 | unsafe { slice::from_raw_parts(self.msdu_ptr as *const _ as *const u8, self.msdu_length as usize) } | ||
| 241 | } | ||
| 242 | } | ||
| 243 | |||
| 236 | /// MLME POLL Indication which will be used for indicating the Data Request | 244 | /// MLME POLL Indication which will be used for indicating the Data Request |
| 237 | /// reception to upper layer as defined in Zigbee r22 - D.8.2 | 245 | /// reception to upper layer as defined in Zigbee r22 - D.8.2 |
| 238 | #[repr(C)] | 246 | #[repr(C)] |
