1*042d53a7SEvalZero /* 2*042d53a7SEvalZero * Licensed to the Apache Software Foundation (ASF) under one 3*042d53a7SEvalZero * or more contributor license agreements. See the NOTICE file 4*042d53a7SEvalZero * distributed with this work for additional information 5*042d53a7SEvalZero * regarding copyright ownership. The ASF licenses this file 6*042d53a7SEvalZero * to you under the Apache License, Version 2.0 (the 7*042d53a7SEvalZero * "License"); you may not use this file except in compliance 8*042d53a7SEvalZero * with the License. You may obtain a copy of the License at 9*042d53a7SEvalZero * 10*042d53a7SEvalZero * http://www.apache.org/licenses/LICENSE-2.0 11*042d53a7SEvalZero * 12*042d53a7SEvalZero * Unless required by applicable law or agreed to in writing, 13*042d53a7SEvalZero * software distributed under the License is distributed on an 14*042d53a7SEvalZero * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 15*042d53a7SEvalZero * KIND, either express or implied. See the License for the 16*042d53a7SEvalZero * specific language governing permissions and limitations 17*042d53a7SEvalZero * under the License. 18*042d53a7SEvalZero */ 19*042d53a7SEvalZero 20*042d53a7SEvalZero #ifndef H_BLE_ATT_CMD_ 21*042d53a7SEvalZero #define H_BLE_ATT_CMD_ 22*042d53a7SEvalZero 23*042d53a7SEvalZero #include <inttypes.h> 24*042d53a7SEvalZero #include <stddef.h> 25*042d53a7SEvalZero #include "os/os_mbuf.h" 26*042d53a7SEvalZero 27*042d53a7SEvalZero #ifdef __cplusplus 28*042d53a7SEvalZero extern "C" { 29*042d53a7SEvalZero #endif 30*042d53a7SEvalZero 31*042d53a7SEvalZero struct ble_att_hdr { 32*042d53a7SEvalZero uint8_t opcode; 33*042d53a7SEvalZero uint8_t data[0]; 34*042d53a7SEvalZero } __attribute__((packed)); 35*042d53a7SEvalZero 36*042d53a7SEvalZero /** 37*042d53a7SEvalZero * | Parameter | Size (octets) | 38*042d53a7SEvalZero * +------------------------------------+-------------------+ 39*042d53a7SEvalZero * | Attribute Opcode | 1 | 40*042d53a7SEvalZero * | Request Opcode In Error | 1 | 41*042d53a7SEvalZero * | Attribute Handle In Error | 2 | 42*042d53a7SEvalZero * | Error Code | 1 | 43*042d53a7SEvalZero */ 44*042d53a7SEvalZero #define BLE_ATT_ERROR_RSP_SZ 5 45*042d53a7SEvalZero struct ble_att_error_rsp { 46*042d53a7SEvalZero uint8_t baep_req_op; 47*042d53a7SEvalZero uint16_t baep_handle; 48*042d53a7SEvalZero uint8_t baep_error_code; 49*042d53a7SEvalZero } __attribute__((packed)); 50*042d53a7SEvalZero 51*042d53a7SEvalZero /** 52*042d53a7SEvalZero * | Parameter | Size (octets) | 53*042d53a7SEvalZero * +------------------------------------+-------------------+ 54*042d53a7SEvalZero * | Attribute Opcode | 1 | 55*042d53a7SEvalZero * | Server Rx MTU | 2 | 56*042d53a7SEvalZero */ 57*042d53a7SEvalZero #define BLE_ATT_MTU_CMD_SZ 3 58*042d53a7SEvalZero struct ble_att_mtu_cmd { 59*042d53a7SEvalZero uint16_t bamc_mtu; 60*042d53a7SEvalZero } __attribute__((packed)); 61*042d53a7SEvalZero 62*042d53a7SEvalZero /** 63*042d53a7SEvalZero * | Parameter | Size (octets) | 64*042d53a7SEvalZero * +------------------------------------+-------------------+ 65*042d53a7SEvalZero * | Attribute Opcode | 1 | 66*042d53a7SEvalZero * | Starting Handle | 2 | 67*042d53a7SEvalZero * | Ending Handle | 2 | 68*042d53a7SEvalZero */ 69*042d53a7SEvalZero #define BLE_ATT_FIND_INFO_REQ_SZ 5 70*042d53a7SEvalZero struct ble_att_find_info_req { 71*042d53a7SEvalZero uint16_t bafq_start_handle; 72*042d53a7SEvalZero uint16_t bafq_end_handle; 73*042d53a7SEvalZero } __attribute__((packed)); 74*042d53a7SEvalZero 75*042d53a7SEvalZero /** 76*042d53a7SEvalZero * | Parameter | Size (octets) | 77*042d53a7SEvalZero * +------------------------------------+-------------------+ 78*042d53a7SEvalZero * | Attribute Opcode | 1 | 79*042d53a7SEvalZero * | Format | 1 | 80*042d53a7SEvalZero * | Information Data | 4 to (ATT_MTU-2) | 81*042d53a7SEvalZero */ 82*042d53a7SEvalZero #define BLE_ATT_FIND_INFO_RSP_BASE_SZ 2 83*042d53a7SEvalZero struct ble_att_find_info_rsp { 84*042d53a7SEvalZero uint8_t bafp_format; 85*042d53a7SEvalZero /* Followed by information data. */ 86*042d53a7SEvalZero } __attribute__((packed)); 87*042d53a7SEvalZero 88*042d53a7SEvalZero #define BLE_ATT_FIND_INFO_RSP_FORMAT_16BIT 1 89*042d53a7SEvalZero #define BLE_ATT_FIND_INFO_RSP_FORMAT_128BIT 2 90*042d53a7SEvalZero 91*042d53a7SEvalZero #define BLE_ATT_FIND_INFO_IDATA_16_SZ 4 92*042d53a7SEvalZero #define BLE_ATT_FIND_INFO_IDATA_128_SZ 18 93*042d53a7SEvalZero 94*042d53a7SEvalZero /** 95*042d53a7SEvalZero * | Parameter | Size (octets) | 96*042d53a7SEvalZero * +------------------------------------+-------------------+ 97*042d53a7SEvalZero * | Attribute Opcode | 1 | 98*042d53a7SEvalZero * | Starting Handle | 2 | 99*042d53a7SEvalZero * | Ending Handle | 2 | 100*042d53a7SEvalZero * | Attribute Type | 2 | 101*042d53a7SEvalZero * | Attribute Value | 0 to (ATT_MTU-7) | 102*042d53a7SEvalZero */ 103*042d53a7SEvalZero #define BLE_ATT_FIND_TYPE_VALUE_REQ_BASE_SZ 7 104*042d53a7SEvalZero struct ble_att_find_type_value_req { 105*042d53a7SEvalZero uint16_t bavq_start_handle; 106*042d53a7SEvalZero uint16_t bavq_end_handle; 107*042d53a7SEvalZero uint16_t bavq_attr_type; 108*042d53a7SEvalZero uint16_t bavq_value[0]; 109*042d53a7SEvalZero } __attribute__((packed)); 110*042d53a7SEvalZero 111*042d53a7SEvalZero /** 112*042d53a7SEvalZero * | Parameter | Size (octets) | 113*042d53a7SEvalZero * +------------------------------------+-------------------+ 114*042d53a7SEvalZero * | Attribute Opcode | 1 | 115*042d53a7SEvalZero * | Information Data | 4 to (ATT_MTU-1) | 116*042d53a7SEvalZero */ 117*042d53a7SEvalZero #define BLE_ATT_FIND_TYPE_VALUE_RSP_BASE_SZ 1 118*042d53a7SEvalZero #define BLE_ATT_FIND_TYPE_VALUE_HINFO_BASE_SZ 4 119*042d53a7SEvalZero 120*042d53a7SEvalZero struct ble_att_handle_group { 121*042d53a7SEvalZero uint16_t attr_handle; 122*042d53a7SEvalZero uint16_t group_end_handle; 123*042d53a7SEvalZero } __attribute__((packed)); 124*042d53a7SEvalZero 125*042d53a7SEvalZero struct ble_att_find_type_value_rsp { 126*042d53a7SEvalZero struct ble_att_handle_group list[0]; 127*042d53a7SEvalZero } __attribute__((packed)); 128*042d53a7SEvalZero 129*042d53a7SEvalZero /** 130*042d53a7SEvalZero * | Parameter | Size (octets) | 131*042d53a7SEvalZero * +------------------------------------+-------------------+ 132*042d53a7SEvalZero * | Attribute Opcode | 1 | 133*042d53a7SEvalZero * | Starting Handle | 2 | 134*042d53a7SEvalZero * | Ending Handle | 2 | 135*042d53a7SEvalZero * | Attribute Type | 2 or 16 | 136*042d53a7SEvalZero */ 137*042d53a7SEvalZero #define BLE_ATT_READ_TYPE_REQ_BASE_SZ 5 138*042d53a7SEvalZero #define BLE_ATT_READ_TYPE_REQ_SZ_16 7 139*042d53a7SEvalZero #define BLE_ATT_READ_TYPE_REQ_SZ_128 21 140*042d53a7SEvalZero struct ble_att_read_type_req { 141*042d53a7SEvalZero uint16_t batq_start_handle; 142*042d53a7SEvalZero uint16_t batq_end_handle; 143*042d53a7SEvalZero uint8_t uuid[0]; 144*042d53a7SEvalZero } __attribute__((packed)); 145*042d53a7SEvalZero 146*042d53a7SEvalZero /** 147*042d53a7SEvalZero * | Parameter | Size (octets) | 148*042d53a7SEvalZero * +------------------------------------+-------------------+ 149*042d53a7SEvalZero * | Attribute Opcode | 1 | 150*042d53a7SEvalZero * | Length | 1 | 151*042d53a7SEvalZero * | Attribute Data List | 2 to (ATT_MTU-2) | 152*042d53a7SEvalZero */ 153*042d53a7SEvalZero #define BLE_ATT_READ_TYPE_RSP_BASE_SZ 2 154*042d53a7SEvalZero 155*042d53a7SEvalZero struct ble_att_attr_data_list { 156*042d53a7SEvalZero uint16_t handle; 157*042d53a7SEvalZero uint8_t value[0]; 158*042d53a7SEvalZero } __attribute__((packed)); 159*042d53a7SEvalZero 160*042d53a7SEvalZero struct ble_att_read_type_rsp { 161*042d53a7SEvalZero uint8_t batp_length; 162*042d53a7SEvalZero struct ble_att_attr_data_list batp_list[0]; 163*042d53a7SEvalZero } __attribute__((packed)); 164*042d53a7SEvalZero 165*042d53a7SEvalZero #define BLE_ATT_READ_TYPE_ADATA_BASE_SZ 2 166*042d53a7SEvalZero #define BLE_ATT_READ_TYPE_ADATA_SZ_16 6 167*042d53a7SEvalZero #define BLE_ATT_READ_TYPE_ADATA_SZ_128 20 168*042d53a7SEvalZero 169*042d53a7SEvalZero /** 170*042d53a7SEvalZero * | Parameter | Size (octets) | 171*042d53a7SEvalZero * +------------------------------------+-------------------+ 172*042d53a7SEvalZero * | Attribute Opcode | 1 | 173*042d53a7SEvalZero * | Attribute Handle | 2 | 174*042d53a7SEvalZero */ 175*042d53a7SEvalZero #define BLE_ATT_READ_REQ_SZ 3 176*042d53a7SEvalZero struct ble_att_read_req { 177*042d53a7SEvalZero uint16_t barq_handle; 178*042d53a7SEvalZero } __attribute__((packed)); 179*042d53a7SEvalZero 180*042d53a7SEvalZero /** 181*042d53a7SEvalZero * | Parameter | Size (octets) | 182*042d53a7SEvalZero * +------------------------------------+-------------------+ 183*042d53a7SEvalZero * | Attribute Opcode | 1 | 184*042d53a7SEvalZero * | Attribute Value | 0 to (ATT_MTU-1) | 185*042d53a7SEvalZero */ 186*042d53a7SEvalZero #define BLE_ATT_READ_RSP_BASE_SZ 1 187*042d53a7SEvalZero 188*042d53a7SEvalZero /** 189*042d53a7SEvalZero * | Parameter | Size (octets) | 190*042d53a7SEvalZero * +------------------------------------+-------------------+ 191*042d53a7SEvalZero * | Attribute Opcode | 1 | 192*042d53a7SEvalZero * | Attribute Handle | 2 | 193*042d53a7SEvalZero * | Value Offset | 2 | 194*042d53a7SEvalZero */ 195*042d53a7SEvalZero #define BLE_ATT_READ_BLOB_REQ_SZ 5 196*042d53a7SEvalZero struct ble_att_read_blob_req { 197*042d53a7SEvalZero uint16_t babq_handle; 198*042d53a7SEvalZero uint16_t babq_offset; 199*042d53a7SEvalZero } __attribute__((packed)); 200*042d53a7SEvalZero 201*042d53a7SEvalZero /** 202*042d53a7SEvalZero * | Parameter | Size (octets) | 203*042d53a7SEvalZero * +------------------------------------+-------------------+ 204*042d53a7SEvalZero * | Attribute Opcode | 1 | 205*042d53a7SEvalZero * | Attribute Value | 0 to (ATT_MTU-1) | 206*042d53a7SEvalZero */ 207*042d53a7SEvalZero #define BLE_ATT_READ_BLOB_RSP_BASE_SZ 1 208*042d53a7SEvalZero 209*042d53a7SEvalZero /** 210*042d53a7SEvalZero * | Parameter | Size (octets) | 211*042d53a7SEvalZero * +------------------------------------+-------------------+ 212*042d53a7SEvalZero * | Attribute Opcode | 1 | 213*042d53a7SEvalZero * | Set Of Handles | 4 to (ATT_MTU-1) | 214*042d53a7SEvalZero */ 215*042d53a7SEvalZero #define BLE_ATT_READ_MULT_REQ_BASE_SZ 1 216*042d53a7SEvalZero struct ble_att_read_mult_req { 217*042d53a7SEvalZero uint16_t handles[0]; 218*042d53a7SEvalZero } __attribute__((packed)); 219*042d53a7SEvalZero 220*042d53a7SEvalZero /** 221*042d53a7SEvalZero * | Parameter | Size (octets) | 222*042d53a7SEvalZero * +------------------------------------+-------------------+ 223*042d53a7SEvalZero * | Attribute Opcode | 1 | 224*042d53a7SEvalZero * | Set Of Values | 4 to (ATT_MTU-1) | 225*042d53a7SEvalZero */ 226*042d53a7SEvalZero #define BLE_ATT_READ_MULT_RSP_BASE_SZ 1 227*042d53a7SEvalZero 228*042d53a7SEvalZero /** 229*042d53a7SEvalZero * | Parameter | Size (octets) | 230*042d53a7SEvalZero * +------------------------------------+-------------------+ 231*042d53a7SEvalZero * | Attribute Opcode | 1 | 232*042d53a7SEvalZero * | Starting Handle | 2 | 233*042d53a7SEvalZero * | Ending Handle | 2 | 234*042d53a7SEvalZero * | Attribute Group Type | 2 or 16 | 235*042d53a7SEvalZero */ 236*042d53a7SEvalZero #define BLE_ATT_READ_GROUP_TYPE_REQ_BASE_SZ 5 237*042d53a7SEvalZero #define BLE_ATT_READ_GROUP_TYPE_REQ_SZ_16 7 238*042d53a7SEvalZero #define BLE_ATT_READ_GROUP_TYPE_REQ_SZ_128 21 239*042d53a7SEvalZero struct ble_att_read_group_type_req { 240*042d53a7SEvalZero uint16_t bagq_start_handle; 241*042d53a7SEvalZero uint16_t bagq_end_handle; 242*042d53a7SEvalZero uint8_t uuid[0]; 243*042d53a7SEvalZero } __attribute__((packed)); 244*042d53a7SEvalZero 245*042d53a7SEvalZero /** 246*042d53a7SEvalZero * | Parameter | Size (octets) | 247*042d53a7SEvalZero * +------------------------------------+-------------------+ 248*042d53a7SEvalZero * | Attribute Opcode | 1 | 249*042d53a7SEvalZero * | Length | 1 | 250*042d53a7SEvalZero * | Attribute Data List | 2 to (ATT_MTU-2) | 251*042d53a7SEvalZero */ 252*042d53a7SEvalZero #define BLE_ATT_READ_GROUP_TYPE_RSP_BASE_SZ 2 253*042d53a7SEvalZero struct ble_att_read_group_type_rsp { 254*042d53a7SEvalZero uint8_t bagp_length; 255*042d53a7SEvalZero } __attribute__((packed)); 256*042d53a7SEvalZero 257*042d53a7SEvalZero #define BLE_ATT_READ_GROUP_TYPE_ADATA_BASE_SZ 4 258*042d53a7SEvalZero #define BLE_ATT_READ_GROUP_TYPE_ADATA_SZ_16 6 259*042d53a7SEvalZero #define BLE_ATT_READ_GROUP_TYPE_ADATA_SZ_128 20 260*042d53a7SEvalZero 261*042d53a7SEvalZero /** 262*042d53a7SEvalZero * | Parameter | Size (octets) | 263*042d53a7SEvalZero * +------------------------------------+-------------------+ 264*042d53a7SEvalZero * | Attribute Opcode | 1 | 265*042d53a7SEvalZero * | Attribute Handle | 2 | 266*042d53a7SEvalZero * | Attribute Value | 0 to (ATT_MTU-3) | 267*042d53a7SEvalZero */ 268*042d53a7SEvalZero #define BLE_ATT_WRITE_REQ_BASE_SZ 3 269*042d53a7SEvalZero struct ble_att_write_req { 270*042d53a7SEvalZero uint16_t bawq_handle; 271*042d53a7SEvalZero uint8_t value[0]; 272*042d53a7SEvalZero } __attribute__((packed)); 273*042d53a7SEvalZero 274*042d53a7SEvalZero #define BLE_ATT_WRITE_RSP_SZ 1 275*042d53a7SEvalZero 276*042d53a7SEvalZero /** 277*042d53a7SEvalZero * | Parameter | Size (octets) | 278*042d53a7SEvalZero * +------------------------------------+-------------------+ 279*042d53a7SEvalZero * | Attribute Opcode | 1 | 280*042d53a7SEvalZero * | Attribute Handle | 2 | 281*042d53a7SEvalZero * | Value Offset | 2 | 282*042d53a7SEvalZero * | Part Attribute Value | 0 to (ATT_MTU-5) | 283*042d53a7SEvalZero */ 284*042d53a7SEvalZero #define BLE_ATT_PREP_WRITE_CMD_BASE_SZ 5 285*042d53a7SEvalZero struct ble_att_prep_write_cmd { 286*042d53a7SEvalZero uint16_t bapc_handle; 287*042d53a7SEvalZero uint16_t bapc_offset; 288*042d53a7SEvalZero uint16_t bapc_value[0]; 289*042d53a7SEvalZero } __attribute__((packed)); 290*042d53a7SEvalZero 291*042d53a7SEvalZero /** 292*042d53a7SEvalZero * | Parameter | Size (octets) | 293*042d53a7SEvalZero * +------------------------------------+-------------------+ 294*042d53a7SEvalZero * | Attribute Opcode | 1 | 295*042d53a7SEvalZero * | Flags | 1 | 296*042d53a7SEvalZero */ 297*042d53a7SEvalZero #define BLE_ATT_EXEC_WRITE_REQ_SZ 2 298*042d53a7SEvalZero struct ble_att_exec_write_req { 299*042d53a7SEvalZero uint8_t baeq_flags; 300*042d53a7SEvalZero } __attribute__((packed)); 301*042d53a7SEvalZero 302*042d53a7SEvalZero #define BLE_ATT_EXEC_WRITE_F_CANCEL 0x00 303*042d53a7SEvalZero #define BLE_ATT_EXEC_WRITE_F_EXECUTE 0x01 304*042d53a7SEvalZero 305*042d53a7SEvalZero /** 306*042d53a7SEvalZero * | Parameter | Size (octets) | 307*042d53a7SEvalZero * +------------------------------------+-------------------+ 308*042d53a7SEvalZero * | Attribute Opcode | 1 | 309*042d53a7SEvalZero */ 310*042d53a7SEvalZero #define BLE_ATT_EXEC_WRITE_RSP_SZ 1 311*042d53a7SEvalZero 312*042d53a7SEvalZero /** 313*042d53a7SEvalZero * | Parameter | Size (octets) | 314*042d53a7SEvalZero * +------------------------------------+-------------------+ 315*042d53a7SEvalZero * | Attribute Opcode | 1 | 316*042d53a7SEvalZero * | Attribute Handle | 2 | 317*042d53a7SEvalZero * | Attribute Value | 0 to (ATT_MTU-3) | 318*042d53a7SEvalZero */ 319*042d53a7SEvalZero #define BLE_ATT_NOTIFY_REQ_BASE_SZ 3 320*042d53a7SEvalZero struct ble_att_notify_req { 321*042d53a7SEvalZero uint16_t banq_handle; 322*042d53a7SEvalZero } __attribute__((packed)); 323*042d53a7SEvalZero 324*042d53a7SEvalZero /** 325*042d53a7SEvalZero * | Parameter | Size (octets) | 326*042d53a7SEvalZero * +------------------------------------+-------------------+ 327*042d53a7SEvalZero * | Attribute Opcode | 1 | 328*042d53a7SEvalZero * | Attribute Handle | 2 | 329*042d53a7SEvalZero * | Attribute Value | 0 to (ATT_MTU-3) | 330*042d53a7SEvalZero */ 331*042d53a7SEvalZero #define BLE_ATT_INDICATE_REQ_BASE_SZ 3 332*042d53a7SEvalZero struct ble_att_indicate_req { 333*042d53a7SEvalZero uint16_t baiq_handle; 334*042d53a7SEvalZero } __attribute__((packed)); 335*042d53a7SEvalZero 336*042d53a7SEvalZero /** 337*042d53a7SEvalZero * | Parameter | Size (octets) | 338*042d53a7SEvalZero * +------------------------------------+-------------------+ 339*042d53a7SEvalZero * | Attribute Opcode | 1 | 340*042d53a7SEvalZero */ 341*042d53a7SEvalZero #define BLE_ATT_INDICATE_RSP_SZ 1 342*042d53a7SEvalZero 343*042d53a7SEvalZero /** 344*042d53a7SEvalZero * | Parameter | Size (octets) | 345*042d53a7SEvalZero * +------------------------------------+-------------------+ 346*042d53a7SEvalZero * | Attribute Opcode | 1 | 347*042d53a7SEvalZero * | Attribute Handle | 2 | 348*042d53a7SEvalZero * | Attribute Value | 0 to (ATT_MTU-3) | 349*042d53a7SEvalZero */ 350*042d53a7SEvalZero #define BLE_ATT_WRITE_CMD_BASE_SZ 3 351*042d53a7SEvalZero struct ble_att_write_cmd { 352*042d53a7SEvalZero uint16_t handle; 353*042d53a7SEvalZero uint8_t value[0]; 354*042d53a7SEvalZero } __attribute__((packed)); 355*042d53a7SEvalZero 356*042d53a7SEvalZero void ble_att_error_rsp_parse(const void *payload, int len, 357*042d53a7SEvalZero struct ble_att_error_rsp *rsp); 358*042d53a7SEvalZero void ble_att_error_rsp_write(void *payload, int len, 359*042d53a7SEvalZero const struct ble_att_error_rsp *rsp); 360*042d53a7SEvalZero void ble_att_error_rsp_log(const struct ble_att_error_rsp *cmd); 361*042d53a7SEvalZero void ble_att_mtu_req_parse(const void *payload, int len, 362*042d53a7SEvalZero struct ble_att_mtu_cmd *cmd); 363*042d53a7SEvalZero void ble_att_mtu_req_write(void *payload, int len, 364*042d53a7SEvalZero const struct ble_att_mtu_cmd *cmd); 365*042d53a7SEvalZero void ble_att_mtu_rsp_parse(const void *payload, int len, 366*042d53a7SEvalZero struct ble_att_mtu_cmd *cmd); 367*042d53a7SEvalZero void ble_att_mtu_rsp_write(void *payload, int len, 368*042d53a7SEvalZero const struct ble_att_mtu_cmd *cmd); 369*042d53a7SEvalZero void ble_att_mtu_cmd_log(const struct ble_att_mtu_cmd *cmd); 370*042d53a7SEvalZero void ble_att_find_info_req_parse(const void *payload, int len, 371*042d53a7SEvalZero struct ble_att_find_info_req *req); 372*042d53a7SEvalZero void ble_att_find_info_req_write(void *payload, int len, 373*042d53a7SEvalZero const struct ble_att_find_info_req *req); 374*042d53a7SEvalZero void ble_att_find_info_req_log(const struct ble_att_find_info_req *cmd); 375*042d53a7SEvalZero void ble_att_find_info_rsp_parse(const void *payload, int len, 376*042d53a7SEvalZero struct ble_att_find_info_rsp *rsp); 377*042d53a7SEvalZero void ble_att_find_info_rsp_write(void *payload, int len, 378*042d53a7SEvalZero const struct ble_att_find_info_rsp *rsp); 379*042d53a7SEvalZero void ble_att_find_info_rsp_log(const struct ble_att_find_info_rsp *cmd); 380*042d53a7SEvalZero void ble_att_find_type_value_req_parse( 381*042d53a7SEvalZero const void *payload, int len, struct ble_att_find_type_value_req *req); 382*042d53a7SEvalZero void ble_att_find_type_value_req_write( 383*042d53a7SEvalZero void *payload, int len, const struct ble_att_find_type_value_req *req); 384*042d53a7SEvalZero void ble_att_find_type_value_req_log( 385*042d53a7SEvalZero const struct ble_att_find_type_value_req *cmd); 386*042d53a7SEvalZero void ble_att_read_type_req_parse(const void *payload, int len, 387*042d53a7SEvalZero struct ble_att_read_type_req *req); 388*042d53a7SEvalZero void ble_att_read_type_req_write(void *payload, int len, 389*042d53a7SEvalZero const struct ble_att_read_type_req *req); 390*042d53a7SEvalZero void ble_att_read_type_req_log(const struct ble_att_read_type_req *cmd); 391*042d53a7SEvalZero void ble_att_read_type_rsp_parse(const void *payload, int len, 392*042d53a7SEvalZero struct ble_att_read_type_rsp *rsp); 393*042d53a7SEvalZero void ble_att_read_type_rsp_write(void *payload, int len, 394*042d53a7SEvalZero const struct ble_att_read_type_rsp *rsp); 395*042d53a7SEvalZero void ble_att_read_type_rsp_log(const struct ble_att_read_type_rsp *cmd); 396*042d53a7SEvalZero void ble_att_read_req_parse(const void *payload, int len, 397*042d53a7SEvalZero struct ble_att_read_req *req); 398*042d53a7SEvalZero void ble_att_read_req_write(void *payload, int len, 399*042d53a7SEvalZero const struct ble_att_read_req *req); 400*042d53a7SEvalZero void ble_att_read_req_log(const struct ble_att_read_req *cmd); 401*042d53a7SEvalZero void ble_att_read_blob_req_parse(const void *payload, int len, 402*042d53a7SEvalZero struct ble_att_read_blob_req *req); 403*042d53a7SEvalZero void ble_att_read_blob_req_write(void *payload, int len, 404*042d53a7SEvalZero const struct ble_att_read_blob_req *req); 405*042d53a7SEvalZero void ble_att_read_blob_req_log(const struct ble_att_read_blob_req *cmd); 406*042d53a7SEvalZero void ble_att_read_mult_req_parse(const void *payload, int len); 407*042d53a7SEvalZero void ble_att_read_mult_req_write(void *payload, int len); 408*042d53a7SEvalZero void ble_att_read_mult_rsp_parse(const void *payload, int len); 409*042d53a7SEvalZero void ble_att_read_mult_rsp_write(void *payload, int len); 410*042d53a7SEvalZero void ble_att_read_group_type_req_parse( 411*042d53a7SEvalZero const void *payload, int len, struct ble_att_read_group_type_req *req); 412*042d53a7SEvalZero void ble_att_read_group_type_req_write( 413*042d53a7SEvalZero void *payload, int len, const struct ble_att_read_group_type_req *req); 414*042d53a7SEvalZero void ble_att_read_group_type_req_log( 415*042d53a7SEvalZero const struct ble_att_read_group_type_req *cmd); 416*042d53a7SEvalZero void ble_att_read_group_type_rsp_parse( 417*042d53a7SEvalZero const void *payload, int len, struct ble_att_read_group_type_rsp *rsp); 418*042d53a7SEvalZero void ble_att_read_group_type_rsp_write( 419*042d53a7SEvalZero void *payload, int len, const struct ble_att_read_group_type_rsp *rsp); 420*042d53a7SEvalZero void ble_att_read_group_type_rsp_log( 421*042d53a7SEvalZero const struct ble_att_read_group_type_rsp *cmd); 422*042d53a7SEvalZero void ble_att_write_req_parse(const void *payload, int len, 423*042d53a7SEvalZero struct ble_att_write_req *req); 424*042d53a7SEvalZero void ble_att_write_req_write(void *payload, int len, 425*042d53a7SEvalZero const struct ble_att_write_req *req); 426*042d53a7SEvalZero void ble_att_write_cmd_parse(const void *payload, int len, 427*042d53a7SEvalZero struct ble_att_write_req *req); 428*042d53a7SEvalZero void ble_att_write_cmd_write(void *payload, int len, 429*042d53a7SEvalZero const struct ble_att_write_req *req); 430*042d53a7SEvalZero void ble_att_write_cmd_log(const struct ble_att_write_cmd *cmd); 431*042d53a7SEvalZero void ble_att_write_req_log(const struct ble_att_write_req *req); 432*042d53a7SEvalZero void ble_att_prep_write_req_parse(const void *payload, int len, 433*042d53a7SEvalZero struct ble_att_prep_write_cmd *cmd); 434*042d53a7SEvalZero void ble_att_prep_write_req_write(void *payload, int len, 435*042d53a7SEvalZero const struct ble_att_prep_write_cmd *cmd); 436*042d53a7SEvalZero void ble_att_prep_write_cmd_log(const struct ble_att_prep_write_cmd *cmd); 437*042d53a7SEvalZero void ble_att_prep_write_rsp_parse(const void *payload, int len, 438*042d53a7SEvalZero struct ble_att_prep_write_cmd *cmd); 439*042d53a7SEvalZero void ble_att_prep_write_rsp_write(void *payload, int len, 440*042d53a7SEvalZero const struct ble_att_prep_write_cmd *cmd); 441*042d53a7SEvalZero void ble_att_exec_write_req_parse(const void *payload, int len, 442*042d53a7SEvalZero struct ble_att_exec_write_req *req); 443*042d53a7SEvalZero void ble_att_exec_write_req_log(const struct ble_att_exec_write_req *cmd); 444*042d53a7SEvalZero void ble_att_exec_write_req_write(void *payload, int len, 445*042d53a7SEvalZero const struct ble_att_exec_write_req *req); 446*042d53a7SEvalZero void ble_att_exec_write_rsp_parse(const void *payload, int len); 447*042d53a7SEvalZero void ble_att_exec_write_rsp_write(void *payload, int len); 448*042d53a7SEvalZero void ble_att_notify_req_parse(const void *payload, int len, 449*042d53a7SEvalZero struct ble_att_notify_req *req); 450*042d53a7SEvalZero void ble_att_notify_req_write(void *payload, int len, 451*042d53a7SEvalZero const struct ble_att_notify_req *req); 452*042d53a7SEvalZero void ble_att_notify_req_log(const struct ble_att_notify_req *cmd); 453*042d53a7SEvalZero void ble_att_indicate_req_parse(const void *payload, int len, 454*042d53a7SEvalZero struct ble_att_indicate_req *req); 455*042d53a7SEvalZero void ble_att_indicate_req_write(void *payload, int len, 456*042d53a7SEvalZero const struct ble_att_indicate_req *req); 457*042d53a7SEvalZero void ble_att_indicate_rsp_parse(const void *payload, int len); 458*042d53a7SEvalZero void ble_att_indicate_rsp_write(void *payload, int len); 459*042d53a7SEvalZero void ble_att_indicate_req_log(const struct ble_att_indicate_req *cmd); 460*042d53a7SEvalZero 461*042d53a7SEvalZero void *ble_att_cmd_prepare(uint8_t opcode, size_t len, struct os_mbuf *txom); 462*042d53a7SEvalZero void *ble_att_cmd_get(uint8_t opcode, size_t len, struct os_mbuf **txom); 463*042d53a7SEvalZero int ble_att_tx(uint16_t conn_handle, struct os_mbuf *txom); 464*042d53a7SEvalZero 465*042d53a7SEvalZero #ifdef __cplusplus 466*042d53a7SEvalZero } 467*042d53a7SEvalZero #endif 468*042d53a7SEvalZero 469*042d53a7SEvalZero #endif 470