MCPcopy Create free account
hub / github.com/bjoernQ/bleps / encode

Method encode

bleps/src/command.rs:72–175  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

70
71impl<'a> Command<'a> {
72 pub fn encode(self) -> Data {
73 match self {
74 Command::Reset => {
75 log::debug!("encode reset command");
76 let mut data = [0u8; 4];
77 data[0] = 0x01;
78 CommandHeader::from_ogf_ocf(CONTROLLER_OGF, RESET_OCF, 0x00)
79 .write_into(&mut data[1..]);
80 Data::new(&data)
81 }
82 Command::LeSetAdvertisingParameters => {
83 let mut data = [0u8; 4 + 0xf];
84 data[0] = 0x01;
85 CommandHeader::from_ogf_ocf(LE_OGF, SET_ADVERTISING_PARAMETERS_OCF, 0x0f)
86 .write_into(&mut data[1..]);
87 data[4..]
88 .copy_from_slice(&[0x00, 0x01, 0x00, 0x01, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0]);
89 Data::new(&data)
90 }
91 Command::LeSetAdvertisingParametersCustom(params) => {
92 let mut data = [0u8; 4 + 0xf];
93 data[0] = 0x01;
94 CommandHeader::from_ogf_ocf(LE_OGF, SET_ADVERTISING_PARAMETERS_OCF, 0x0f)
95 .write_into(&mut data[1..]);
96
97 let mut adv_params = Data::new(&[]);
98 adv_params.append(&params.advertising_interval_min.to_le_bytes());
99 adv_params.append(&params.advertising_interval_max.to_le_bytes());
100 adv_params.append(&[params.advertising_type as u8]);
101 adv_params.append(&[params.own_address_type as u8]);
102 adv_params.append(&[params.peer_address_type as u8]);
103 adv_params.append(&params.peer_address);
104 adv_params.append(&[params.advertising_channel_map]);
105 adv_params.append(&[params.filter_policy as u8]);
106
107 data[4..].copy_from_slice(adv_params.as_slice());
108 Data::new(&data)
109 }
110 Command::LeSetAdvertisingData { ref data } => {
111 let mut header = [0u8; 4];
112 header[0] = 0x01;
113 CommandHeader::from_ogf_ocf(LE_OGF, SET_ADVERTISING_DATA_OCF, data.len as u8)
114 .write_into(&mut header[1..]);
115 let mut res = Data::new(&header);
116 res.append(data.as_slice());
117 res
118 }
119 Command::LeSetScanRspData { ref data } => {
120 let mut header = [0u8; 4];
121 header[0] = 0x01;
122 CommandHeader::from_ogf_ocf(LE_OGF, SET_SCAN_RSP_DATA_OCF, data.len as u8)
123 .write_into(&mut header[1..]);
124 let mut res = Data::new(&header);
125 res.append(data.as_slice());
126 res
127 }
128 Command::LeSetAdvertiseEnable(enable) => {
129 let mut data = [0u8; 5];

Callers

nothing calls this directly

Calls 3

write_intoMethod · 0.80
appendMethod · 0.80
as_sliceMethod · 0.80

Tested by

no test coverage detected