diff options
| author | Raul Alimbekov <[email protected]> | 2025-12-16 09:05:22 +0300 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-12-16 09:05:22 +0300 |
| commit | c9a04b4b732b7a3b696eb8223664c1a7942b1875 (patch) | |
| tree | 6dbe5c02e66eed8d8762f13f95afd24f8db2b38c /embassy-stm32-wpan/src/wb55/mac/opcodes.rs | |
| parent | cde24a3ef1117653ba5ed4184102b33f745782fb (diff) | |
| parent | 5ae6e060ec1c90561719aabdc29d5b6e7b8b0a82 (diff) | |
Merge branch 'main' into main
Diffstat (limited to 'embassy-stm32-wpan/src/wb55/mac/opcodes.rs')
| -rw-r--r-- | embassy-stm32-wpan/src/wb55/mac/opcodes.rs | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/embassy-stm32-wpan/src/wb55/mac/opcodes.rs b/embassy-stm32-wpan/src/wb55/mac/opcodes.rs new file mode 100644 index 000000000..fd7011873 --- /dev/null +++ b/embassy-stm32-wpan/src/wb55/mac/opcodes.rs | |||
| @@ -0,0 +1,92 @@ | |||
| 1 | const ST_VENDOR_OGF: u16 = 0x3F; | ||
| 2 | const MAC_802_15_4_CMD_OPCODE_OFFSET: u16 = 0x280; | ||
| 3 | |||
| 4 | const fn opcode(ocf: u16) -> isize { | ||
| 5 | ((ST_VENDOR_OGF << 9) | (MAC_802_15_4_CMD_OPCODE_OFFSET + ocf)) as isize | ||
| 6 | } | ||
| 7 | |||
| 8 | #[cfg_attr(feature = "defmt", derive(defmt::Format))] | ||
| 9 | pub enum OpcodeM4ToM0 { | ||
| 10 | MlmeAssociateReq = opcode(0x00), | ||
| 11 | MlmeAssociateRes = opcode(0x01), | ||
| 12 | MlmeDisassociateReq = opcode(0x02), | ||
| 13 | MlmeGetReq = opcode(0x03), | ||
| 14 | MlmeGtsReq = opcode(0x04), | ||
| 15 | MlmeOrphanRes = opcode(0x05), | ||
| 16 | MlmeResetReq = opcode(0x06), | ||
| 17 | MlmeRxEnableReq = opcode(0x07), | ||
| 18 | MlmeScanReq = opcode(0x08), | ||
| 19 | MlmeSetReq = opcode(0x09), | ||
| 20 | MlmeStartReq = opcode(0x0A), | ||
| 21 | MlmeSyncReq = opcode(0x0B), | ||
| 22 | MlmePollReq = opcode(0x0C), | ||
| 23 | MlmeDpsReq = opcode(0x0D), | ||
| 24 | MlmeSoundingReq = opcode(0x0E), | ||
| 25 | MlmeCalibrateReq = opcode(0x0F), | ||
| 26 | McpsDataReq = opcode(0x10), | ||
| 27 | McpsPurgeReq = opcode(0x11), | ||
| 28 | } | ||
| 29 | |||
| 30 | #[cfg_attr(feature = "defmt", derive(defmt::Format))] | ||
| 31 | pub enum OpcodeM0ToM4 { | ||
| 32 | MlmeAssociateCnf = 0x00, | ||
| 33 | MlmeDisassociateCnf, | ||
| 34 | MlmeGetCnf, | ||
| 35 | MlmeGtsCnf, | ||
| 36 | MlmeResetCnf, | ||
| 37 | MlmeRxEnableCnf, | ||
| 38 | MlmeScanCnf, | ||
| 39 | MlmeSetCnf, | ||
| 40 | MlmeStartCnf, | ||
| 41 | MlmePollCnf, | ||
| 42 | MlmeDpsCnf, | ||
| 43 | MlmeSoundingCnf, | ||
| 44 | MlmeCalibrateCnf, | ||
| 45 | McpsDataCnf, | ||
| 46 | McpsPurgeCnf, | ||
| 47 | MlmeAssociateInd, | ||
| 48 | MlmeDisassociateInd, | ||
| 49 | MlmeBeaconNotifyInd, | ||
| 50 | MlmeCommStatusInd, | ||
| 51 | MlmeGtsInd, | ||
| 52 | MlmeOrphanInd, | ||
| 53 | MlmeSyncLossInd, | ||
| 54 | MlmeDpsInd, | ||
| 55 | McpsDataInd, | ||
| 56 | MlmePollInd, | ||
| 57 | } | ||
| 58 | |||
| 59 | impl TryFrom<u16> for OpcodeM0ToM4 { | ||
| 60 | type Error = (); | ||
| 61 | |||
| 62 | fn try_from(value: u16) -> Result<Self, Self::Error> { | ||
| 63 | match value { | ||
| 64 | 0 => Ok(Self::MlmeAssociateCnf), | ||
| 65 | 1 => Ok(Self::MlmeDisassociateCnf), | ||
| 66 | 2 => Ok(Self::MlmeGetCnf), | ||
| 67 | 3 => Ok(Self::MlmeGtsCnf), | ||
| 68 | 4 => Ok(Self::MlmeResetCnf), | ||
| 69 | 5 => Ok(Self::MlmeRxEnableCnf), | ||
| 70 | 6 => Ok(Self::MlmeScanCnf), | ||
| 71 | 7 => Ok(Self::MlmeSetCnf), | ||
| 72 | 8 => Ok(Self::MlmeStartCnf), | ||
| 73 | 9 => Ok(Self::MlmePollCnf), | ||
| 74 | 10 => Ok(Self::MlmeDpsCnf), | ||
| 75 | 11 => Ok(Self::MlmeSoundingCnf), | ||
| 76 | 12 => Ok(Self::MlmeCalibrateCnf), | ||
| 77 | 13 => Ok(Self::McpsDataCnf), | ||
| 78 | 14 => Ok(Self::McpsPurgeCnf), | ||
| 79 | 15 => Ok(Self::MlmeAssociateInd), | ||
| 80 | 16 => Ok(Self::MlmeDisassociateInd), | ||
| 81 | 17 => Ok(Self::MlmeBeaconNotifyInd), | ||
| 82 | 18 => Ok(Self::MlmeCommStatusInd), | ||
| 83 | 19 => Ok(Self::MlmeGtsInd), | ||
| 84 | 20 => Ok(Self::MlmeOrphanInd), | ||
| 85 | 21 => Ok(Self::MlmeSyncLossInd), | ||
| 86 | 22 => Ok(Self::MlmeDpsInd), | ||
| 87 | 23 => Ok(Self::McpsDataInd), | ||
| 88 | 24 => Ok(Self::MlmePollInd), | ||
| 89 | _ => Err(()), | ||
| 90 | } | ||
| 91 | } | ||
| 92 | } | ||
