119e95205Sopenharmony_ci/*
219e95205Sopenharmony_ci * Copyright (C) 2021 Huawei Device Co., Ltd.
319e95205Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
419e95205Sopenharmony_ci * you may not use this file except in compliance with the License.
519e95205Sopenharmony_ci * You may obtain a copy of the License at
619e95205Sopenharmony_ci *
719e95205Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
819e95205Sopenharmony_ci *
919e95205Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
1019e95205Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
1119e95205Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1219e95205Sopenharmony_ci * See the License for the specific language governing permissions and
1319e95205Sopenharmony_ci * limitations under the License.
1419e95205Sopenharmony_ci */
1519e95205Sopenharmony_ci
1619e95205Sopenharmony_ci/**
1719e95205Sopenharmony_ci * @file att.h
1819e95205Sopenharmony_ci *
1919e95205Sopenharmony_ci * @brief Declares extern interface, including register interface, callback interface etc.
2019e95205Sopenharmony_ci *
2119e95205Sopenharmony_ci */
2219e95205Sopenharmony_ci
2319e95205Sopenharmony_ci#ifndef ATT_H
2419e95205Sopenharmony_ci#define ATT_H
2519e95205Sopenharmony_ci
2619e95205Sopenharmony_ci#include <stdint.h>
2719e95205Sopenharmony_ci#include "btstack.h"
2819e95205Sopenharmony_ci#include "buffer.h"
2919e95205Sopenharmony_ci#ifdef __cplusplus
3019e95205Sopenharmony_ciextern "C" {
3119e95205Sopenharmony_ci#endif
3219e95205Sopenharmony_ci
3319e95205Sopenharmony_ci// Transport type
3419e95205Sopenharmony_ci#define BT_TRANSPORT_INVALID 0
3519e95205Sopenharmony_ci#define BT_TRANSPORT_BR_EDR 1
3619e95205Sopenharmony_ci#define BT_TRANSPORT_LE 2
3719e95205Sopenharmony_ci
3819e95205Sopenharmony_ci// client callback event id
3919e95205Sopenharmony_ci#define ATT_ERROR_RESPONSE_ID 0x0101
4019e95205Sopenharmony_ci#define ATT_EXCHANGE_MTU_RESPONSE_ID 0x0103
4119e95205Sopenharmony_ci#define ATT_FIND_INFORMATION_RESPONSE_ID 0x0105
4219e95205Sopenharmony_ci#define ATT_FIND_BY_TYPE_VALUE_RESPONSE_ID 0x0107
4319e95205Sopenharmony_ci#define ATT_READ_BY_TYPE_RESPONSE_ID 0x0109
4419e95205Sopenharmony_ci#define ATT_READ_RESPONSE_ID 0x010B
4519e95205Sopenharmony_ci#define ATT_READ_BLOB_RESPONSE_ID 0x010D
4619e95205Sopenharmony_ci#define ATT_READ_MULTIPLE_RESPONSE_ID 0x010F
4719e95205Sopenharmony_ci#define ATT_READ_BY_GROUP_TYPE_RESPONSE_ID 0x0202
4819e95205Sopenharmony_ci#define ATT_WRITE_RESPONSE_ID 0x0204
4919e95205Sopenharmony_ci#define ATT_PREPARE_WRITE_RESPONSE_ID 0x0208
5019e95205Sopenharmony_ci#define ATT_EXECUTE_WRITE_RESPONSE_ID 0x020A
5119e95205Sopenharmony_ci#define ATT_HANDLE_VALUE_NOTIFICATION_ID 0x020B
5219e95205Sopenharmony_ci#define ATT_HANDLE_VALUE_INDICATION_ID 0x020C
5319e95205Sopenharmony_ci#define ATT_TRANSACTION_TIME_OUT_ID 0x020E
5419e95205Sopenharmony_ci
5519e95205Sopenharmony_ci// server callback event id
5619e95205Sopenharmony_ci#define ATT_EXCHANGE_MTU_REQUEST_ID 0x0102
5719e95205Sopenharmony_ci#define ATT_FIND_INFORMATION_REQUEST_ID 0x0104
5819e95205Sopenharmony_ci#define ATT_FIND_BY_TYPE_VALUE_REQUEST_ID 0x0106
5919e95205Sopenharmony_ci#define ATT_READ_BY_TYPE_REQUEST_ID 0x0108
6019e95205Sopenharmony_ci#define ATT_READ_REQUEST_ID 0x010A
6119e95205Sopenharmony_ci#define ATT_READ_BLOB_REQUEST_ID 0x010C
6219e95205Sopenharmony_ci#define ATT_READ_MULTIPLE_REQUEST_ID 0x010E
6319e95205Sopenharmony_ci#define ATT_READ_BY_GROUP_TYPE_REQUEST_ID 0x0201
6419e95205Sopenharmony_ci#define ATT_WRITE_REQUEST_ID 0x0203
6519e95205Sopenharmony_ci#define ATT_WRITE_COMMAND_ID 0x0205
6619e95205Sopenharmony_ci#define ATT_SIGNED_WRITE_COMMAND_ID 0x0206
6719e95205Sopenharmony_ci#define ATT_PREPARE_WRITE_REQUEST_ID 0x0207
6819e95205Sopenharmony_ci#define ATT_EXECUTE_WRITE_REQUEST_ID 0x0209
6919e95205Sopenharmony_ci#define ATT_HANDLE_VALUE_CONFIRMATION_ID 0x020D
7019e95205Sopenharmony_ci#define ATT_UNKNOW_OPCODE_ID 0x020F
7119e95205Sopenharmony_ci
7219e95205Sopenharmony_ci// error response code
7319e95205Sopenharmony_ci#define ATT_INVALID_HANDLE 0x01
7419e95205Sopenharmony_ci#define ATT_READ_NOT_PERMITTED 0x02
7519e95205Sopenharmony_ci#define ATT_WRITE_NOT_PERMITTED 0x03
7619e95205Sopenharmony_ci#define ATT_INVALID_PDU 0x04
7719e95205Sopenharmony_ci#define ATT_INSUFFICIENT_AUTHENTICATION 0x05
7819e95205Sopenharmony_ci#define ATT_REQUEST_NOT_SUPPORTED 0x06
7919e95205Sopenharmony_ci#define ATT_INVALID_OFFSET 0x07
8019e95205Sopenharmony_ci#define ATT_INSUFFICIENT_AUTHORIZATION 0x08
8119e95205Sopenharmony_ci#define ATT_PREPARE_QUEUE_FULL 0x09
8219e95205Sopenharmony_ci#define ATT_ATTRIBUTE_NOT_FOUND 0x0A
8319e95205Sopenharmony_ci#define ATT_ATTRIBUTE_NOT_LONG 0x0B
8419e95205Sopenharmony_ci#define ATT_INSUFFICIENT_ENCRYPTION_KEY_SIZE 0x0C
8519e95205Sopenharmony_ci#define ATT_INVALID_ATTRIBUTE_VALUE_LENGTH 0x0D
8619e95205Sopenharmony_ci#define ATT_UNLIKELY_ERROR 0x0E
8719e95205Sopenharmony_ci#define ATT_INSUFFICIENT_ENCRYPTION 0x0F
8819e95205Sopenharmony_ci#define ATT_UNSUPPORTED_GROUP_TYPE 0x10
8919e95205Sopenharmony_ci#define ATT_INSUFFICIENT_RESOURECES 0x11
9019e95205Sopenharmony_ci#define ATT_WRITE_REQUEST_REJECTED 0xFC
9119e95205Sopenharmony_ci#define ATT_CLIENT_CHARACTERISTIC_CONFIGURATION_DESCRIPTOR_IMPROPERLY_CONFIGURED 0xFD
9219e95205Sopenharmony_ci#define ATT_PROCEDURE_ALREADY_IN_PROGRESS 0xFE
9319e95205Sopenharmony_ci#define ATT_OUT_OF_RANGE 0xFF
9419e95205Sopenharmony_ci
9519e95205Sopenharmony_ci// opcode
9619e95205Sopenharmony_ci#define ERROR_RESPONSE 0x01
9719e95205Sopenharmony_ci#define EXCHANGE_MTU_REQUEST 0x02
9819e95205Sopenharmony_ci#define EXCHANGE_MTU_RESPONSE 0x03
9919e95205Sopenharmony_ci#define FIND_INFORMATION_REQUEST 0x04
10019e95205Sopenharmony_ci#define FIND_INFORMATION_RESPONSE 0x05
10119e95205Sopenharmony_ci#define FIND_BY_TYPE_VALUE_REQUEST 0x06
10219e95205Sopenharmony_ci#define FIND_BY_TYPE_VALUE_RESPONSE 0x07
10319e95205Sopenharmony_ci#define READ_BY_TYPE_REQUEST 0x08
10419e95205Sopenharmony_ci#define READ_BY_TYPE_RESPONSE 0x09
10519e95205Sopenharmony_ci#define READ_REQUEST 0x0A
10619e95205Sopenharmony_ci#define READ_RESPONSE 0x0B
10719e95205Sopenharmony_ci#define READ_BLOB_REQUEST 0x0C
10819e95205Sopenharmony_ci#define READ_BLOB_RESPONSE 0x0D
10919e95205Sopenharmony_ci#define READ_MULTIPLE_REQUEST 0x0E
11019e95205Sopenharmony_ci#define READ_MULTIPLE_RESPONSE 0x0F
11119e95205Sopenharmony_ci#define READ_BY_GROUP_TYPE_REQUEST 0x10
11219e95205Sopenharmony_ci#define READ_BY_GROUP_TYPE_RESPONSE 0x11
11319e95205Sopenharmony_ci#define WRITE_REQUEST 0x12
11419e95205Sopenharmony_ci#define WRITE_RESPONSE 0x13
11519e95205Sopenharmony_ci#define WRITE_COMMAND 0x52
11619e95205Sopenharmony_ci#define SIGNED_WRITE_COMMAND 0xD2
11719e95205Sopenharmony_ci#define PREPARE_WRITE_REQUEST 0x16
11819e95205Sopenharmony_ci#define PREPARE_WRITE_RESPONSE 0x17
11919e95205Sopenharmony_ci#define EXECUTE_WRITE_REQUEST 0x18
12019e95205Sopenharmony_ci#define EXECUTE_WRITE_RESPONSE 0x19
12119e95205Sopenharmony_ci#define HANDLE_VALUE_NOTIFICATION 0x1B
12219e95205Sopenharmony_ci#define HANDLE_VALUE_INDICATION 0x1D
12319e95205Sopenharmony_ci#define HANDLE_VALUE_CONFIRMATION 0x1E
12419e95205Sopenharmony_ci#define READ_MULTIPLE_VARIABLE_RESPONSE 0x21
12519e95205Sopenharmony_ci#define MULTIPLE_HANDLE_VALUE_NOTIFICATION 0x23
12619e95205Sopenharmony_ci
12719e95205Sopenharmony_ci// gap security authentication result code
12819e95205Sopenharmony_ci#define SECURITY_AUTHENTICATION_SUCCESS 0x45
12919e95205Sopenharmony_ci#define SECURITY_AUTHENTICATION_FAIL 0x46
13019e95205Sopenharmony_ci
13119e95205Sopenharmony_ci// bredr connect callback result code
13219e95205Sopenharmony_ci#define BREDR_CONNECT_SUCCESS 0x49
13319e95205Sopenharmony_ci#define BREDR_CONNECT_FAIL 0x50
13419e95205Sopenharmony_ci
13519e95205Sopenharmony_ci// le connect callback result code
13619e95205Sopenharmony_ci#define LE_CONNECT_SUCCESS 0x51
13719e95205Sopenharmony_ci#define LE_CONNECT_FAIL 0x52
13819e95205Sopenharmony_ci
13919e95205Sopenharmony_ci// le disconnect result code
14019e95205Sopenharmony_ci#define LE_DISCONNECT_SUCCESS 0x53
14119e95205Sopenharmony_ci#define LE_DISCONNECT_FAIL 0x54
14219e95205Sopenharmony_ci
14319e95205Sopenharmony_ci// bredr disconnect callback result code
14419e95205Sopenharmony_ci#define INITIATIVECONNECT_DISCONNECT_SUCCESS 0x55
14519e95205Sopenharmony_ci#define INITIATIVECONNECT_DISCONNECT_FAIL 0x56
14619e95205Sopenharmony_ci#define PASSIVECONNECT_DISCONNECT_SUCCESS 0x57
14719e95205Sopenharmony_ci#define PASSIVECONNECT_DISCONNECT_FAIL 0x58
14819e95205Sopenharmony_ci#define DISCONNECT_ABNORMAL 0x59
14919e95205Sopenharmony_ci
15019e95205Sopenharmony_ci// bredr connect response result
15119e95205Sopenharmony_ci#define BREDR_CONNECT_ACCEPT 0x00
15219e95205Sopenharmony_ci#define BREDR_CONNECT_REJECTED 0x04
15319e95205Sopenharmony_ci
15419e95205Sopenharmony_ci// att connect timeout
15519e95205Sopenharmony_ci#define ATT_CONNECT_TIMEOUT 0x0060
15619e95205Sopenharmony_ci
15719e95205Sopenharmony_citypedef struct {
15819e95205Sopenharmony_ci    uint16_t attHandle;
15919e95205Sopenharmony_ci    BtUuid uuid;
16019e95205Sopenharmony_ci} AttHandleUuid;
16119e95205Sopenharmony_ci
16219e95205Sopenharmony_citypedef struct {
16319e95205Sopenharmony_ci    uint16_t attHandle;
16419e95205Sopenharmony_ci    uint16_t groupEndHandle;
16519e95205Sopenharmony_ci} AttHandleInfo;
16619e95205Sopenharmony_ci
16719e95205Sopenharmony_citypedef struct {
16819e95205Sopenharmony_ci    uint8_t properties;
16919e95205Sopenharmony_ci    uint16_t attributeHandle;
17019e95205Sopenharmony_ci    BtUuid *uuid;
17119e95205Sopenharmony_ci} AttSpecificAttributeValue;
17219e95205Sopenharmony_ci
17319e95205Sopenharmony_citypedef struct {
17419e95205Sopenharmony_ci    uint16_t attHandle;
17519e95205Sopenharmony_ci} AttHandleValue;
17619e95205Sopenharmony_ci
17719e95205Sopenharmony_citypedef struct {
17819e95205Sopenharmony_ci    uint16_t attHandle;
17919e95205Sopenharmony_ci    uint16_t groupEndHandle;
18019e95205Sopenharmony_ci    uint8_t *attributeValue;
18119e95205Sopenharmony_ci} AttReadGoupAttributeData;
18219e95205Sopenharmony_ci
18319e95205Sopenharmony_citypedef struct {
18419e95205Sopenharmony_ci    uint16_t mtuSize;
18519e95205Sopenharmony_ci} AttExchangeMTUType;
18619e95205Sopenharmony_ci
18719e95205Sopenharmony_citypedef struct {
18819e95205Sopenharmony_ci    uint16_t startHandle;
18919e95205Sopenharmony_ci    uint16_t endHandle;
19019e95205Sopenharmony_ci} AttHandleRange;
19119e95205Sopenharmony_ci
19219e95205Sopenharmony_citypedef struct {
19319e95205Sopenharmony_ci    uint8_t reqOpcode;
19419e95205Sopenharmony_ci    uint16_t attHandleInError;
19519e95205Sopenharmony_ci    uint8_t errorCode;
19619e95205Sopenharmony_ci} AttError;
19719e95205Sopenharmony_ci
19819e95205Sopenharmony_citypedef struct {
19919e95205Sopenharmony_ci    AttHandleUuid *handleUuidPairs;
20019e95205Sopenharmony_ci    uint16_t pairNum;
20119e95205Sopenharmony_ci    uint8_t format;
20219e95205Sopenharmony_ci} AttFindInformationRsp;
20319e95205Sopenharmony_ci
20419e95205Sopenharmony_citypedef struct {
20519e95205Sopenharmony_ci    AttHandleRange handleRange;
20619e95205Sopenharmony_ci    uint16_t attType;
20719e95205Sopenharmony_ci} AttFindByTypeValueReq;
20819e95205Sopenharmony_ci
20919e95205Sopenharmony_citypedef struct {
21019e95205Sopenharmony_ci    AttHandleInfo *handleInfoList;
21119e95205Sopenharmony_ci    uint16_t listNum;
21219e95205Sopenharmony_ci} AttFindByTypeValueRsp;
21319e95205Sopenharmony_ci
21419e95205Sopenharmony_citypedef union {
21519e95205Sopenharmony_ci    AttHandleRange findInformationRequest;
21619e95205Sopenharmony_ci    AttFindInformationRsp findInforRsponse;
21719e95205Sopenharmony_ci    AttFindByTypeValueReq findByTypeValueRequest;
21819e95205Sopenharmony_ci    AttFindByTypeValueRsp findByTypeValueResponse;
21919e95205Sopenharmony_ci} AttFind;
22019e95205Sopenharmony_ci
22119e95205Sopenharmony_citypedef struct {
22219e95205Sopenharmony_ci    AttHandleRange handleRange;
22319e95205Sopenharmony_ci    BtUuid *uuid;
22419e95205Sopenharmony_ci} AttReadByTypeReq;
22519e95205Sopenharmony_ci
22619e95205Sopenharmony_citypedef struct {
22719e95205Sopenharmony_ci    AttHandleValue attHandle;
22819e95205Sopenharmony_ci    uint8_t *attributeValue;
22919e95205Sopenharmony_ci} AttReadByTypeRspDataList;
23019e95205Sopenharmony_ci
23119e95205Sopenharmony_citypedef struct {
23219e95205Sopenharmony_ci    AttReadByTypeRspDataList *valueList;
23319e95205Sopenharmony_ci    uint16_t valueNum;
23419e95205Sopenharmony_ci    uint8_t len;
23519e95205Sopenharmony_ci} AttReadByTypeRsp;
23619e95205Sopenharmony_ci
23719e95205Sopenharmony_citypedef struct {
23819e95205Sopenharmony_ci    uint16_t attHandle;
23919e95205Sopenharmony_ci} AttReadReq;
24019e95205Sopenharmony_ci
24119e95205Sopenharmony_citypedef struct {
24219e95205Sopenharmony_ci    uint16_t attHandle;
24319e95205Sopenharmony_ci    uint16_t offset;
24419e95205Sopenharmony_ci} AttReadBlobReqPrepareWriteValue;
24519e95205Sopenharmony_ci
24619e95205Sopenharmony_citypedef struct {
24719e95205Sopenharmony_ci    uint16_t *setHandles;
24819e95205Sopenharmony_ci} AttReadMultipleReq;
24919e95205Sopenharmony_ci
25019e95205Sopenharmony_citypedef struct {
25119e95205Sopenharmony_ci    uint8_t *setValues;
25219e95205Sopenharmony_ci} AttReadMultipleRes;
25319e95205Sopenharmony_ci
25419e95205Sopenharmony_citypedef struct {
25519e95205Sopenharmony_ci    AttHandleRange handleRange;
25619e95205Sopenharmony_ci    BtUuid *uuid;
25719e95205Sopenharmony_ci} AttReadGroupReq;
25819e95205Sopenharmony_ci
25919e95205Sopenharmony_citypedef struct {
26019e95205Sopenharmony_ci    uint8_t length;
26119e95205Sopenharmony_ci    uint16_t num;
26219e95205Sopenharmony_ci    AttReadGoupAttributeData *attributeData;
26319e95205Sopenharmony_ci} AttReadGroupRes;
26419e95205Sopenharmony_ci
26519e95205Sopenharmony_citypedef union {
26619e95205Sopenharmony_ci    AttReadByTypeReq readHandleRangeUuid;
26719e95205Sopenharmony_ci    AttReadByTypeRsp readHandleListNum;
26819e95205Sopenharmony_ci    AttReadReq readHandle;
26919e95205Sopenharmony_ci    AttReadBlobReqPrepareWriteValue readBlob;
27019e95205Sopenharmony_ci    AttReadMultipleReq readMultRequest;
27119e95205Sopenharmony_ci    AttReadMultipleRes readMultResponse;
27219e95205Sopenharmony_ci    AttReadGroupReq readGroupRequest;
27319e95205Sopenharmony_ci    AttReadGroupRes readGroupResponse;
27419e95205Sopenharmony_ci} AttRead;
27519e95205Sopenharmony_ci
27619e95205Sopenharmony_citypedef enum {
27719e95205Sopenharmony_ci    SIGNATURE_OK,
27819e95205Sopenharmony_ci    SIGNATURE_ERR_EXECUTION,
27919e95205Sopenharmony_ci    SIGNATURE_ERR_COUNTER,
28019e95205Sopenharmony_ci    SIGNATURE_ERR_ALGORITHM,
28119e95205Sopenharmony_ci    GAP_REJECT,
28219e95205Sopenharmony_ci} AttSignedWriteCommandResult;
28319e95205Sopenharmony_ci
28419e95205Sopenharmony_citypedef struct {
28519e95205Sopenharmony_ci    AttHandleValue attHandleValueObj;
28619e95205Sopenharmony_ci    uint8_t authSignature[12];
28719e95205Sopenharmony_ci    uint16_t authSignatureLen;
28819e95205Sopenharmony_ci    AttSignedWriteCommandResult result;
28919e95205Sopenharmony_ci} AttSignedWriteComm;
29019e95205Sopenharmony_ci
29119e95205Sopenharmony_citypedef struct {
29219e95205Sopenharmony_ci    AttHandleValue handleValue;
29319e95205Sopenharmony_ci    uint16_t offset;
29419e95205Sopenharmony_ci} AttPrepareWrite;
29519e95205Sopenharmony_ci
29619e95205Sopenharmony_citypedef struct {
29719e95205Sopenharmony_ci    uint8_t flag;
29819e95205Sopenharmony_ci} AttExecuteWrite;
29919e95205Sopenharmony_ci
30019e95205Sopenharmony_citypedef union {
30119e95205Sopenharmony_ci    AttHandleValue writeRequest;
30219e95205Sopenharmony_ci    AttHandleValue writeCommand;
30319e95205Sopenharmony_ci    AttHandleValue confirmation;
30419e95205Sopenharmony_ci    AttSignedWriteComm signedWriteCommand;
30519e95205Sopenharmony_ci    AttPrepareWrite prepareWrite;
30619e95205Sopenharmony_ci    AttExecuteWrite excuteWrite;
30719e95205Sopenharmony_ci} AttWrite;
30819e95205Sopenharmony_ci
30919e95205Sopenharmony_citypedef struct {
31019e95205Sopenharmony_ci    uint8_t status;
31119e95205Sopenharmony_ci    uint8_t role;
31219e95205Sopenharmony_ci    BtAddr addr;
31319e95205Sopenharmony_ci} AttLeConnectCallback;
31419e95205Sopenharmony_ci
31519e95205Sopenharmony_citypedef struct {
31619e95205Sopenharmony_ci    uint8_t status;
31719e95205Sopenharmony_ci    uint8_t reason;
31819e95205Sopenharmony_ci} AttLeDisconnectCallback;
31919e95205Sopenharmony_ci
32019e95205Sopenharmony_citypedef struct {
32119e95205Sopenharmony_ci    BtAddr addr;
32219e95205Sopenharmony_ci    uint8_t status;
32319e95205Sopenharmony_ci    uint16_t mtu;
32419e95205Sopenharmony_ci} AttBredrConnectCallback;
32519e95205Sopenharmony_ci
32619e95205Sopenharmony_citypedef struct {
32719e95205Sopenharmony_ci    uint8_t reason;
32819e95205Sopenharmony_ci} AttBredrDisconnectCallback;
32919e95205Sopenharmony_ci
33019e95205Sopenharmony_citypedef struct {
33119e95205Sopenharmony_ci    uint16_t connIntervalMin;
33219e95205Sopenharmony_ci    uint16_t connIntervalMax;
33319e95205Sopenharmony_ci    uint16_t connLatency;
33419e95205Sopenharmony_ci    uint16_t supervisionTimeout;
33519e95205Sopenharmony_ci} AttLeConnect;
33619e95205Sopenharmony_ci
33719e95205Sopenharmony_citypedef struct {
33819e95205Sopenharmony_ci    uint16_t mtu;
33919e95205Sopenharmony_ci    uint16_t flushTimeout;
34019e95205Sopenharmony_ci    uint8_t mode;
34119e95205Sopenharmony_ci} AttBredrConnect;
34219e95205Sopenharmony_ci
34319e95205Sopenharmony_citypedef union {
34419e95205Sopenharmony_ci    AttLeConnect leConnParaVar;
34519e95205Sopenharmony_ci    AttBredrConnect bredrConnParaVar;
34619e95205Sopenharmony_ci} AttConnect;
34719e95205Sopenharmony_ci
34819e95205Sopenharmony_citypedef union AttEventData {
34919e95205Sopenharmony_ci    AttError attErrorResponse;
35019e95205Sopenharmony_ci    AttExchangeMTUType attExchangeMtuRequest;
35119e95205Sopenharmony_ci    AttExchangeMTUType attExchangeMtuResponse;
35219e95205Sopenharmony_ci    AttFind attFindInformationRequest;
35319e95205Sopenharmony_ci    AttFind attFindInformationResponse;
35419e95205Sopenharmony_ci    AttFind attFindByTypeValueRequest;
35519e95205Sopenharmony_ci    AttFind attFindByTypeValueResponse;
35619e95205Sopenharmony_ci    AttRead attReadByTypeRequest;
35719e95205Sopenharmony_ci    AttRead attReadByTypeResponse;
35819e95205Sopenharmony_ci    AttRead attReadRequest;
35919e95205Sopenharmony_ci    AttRead attReadResponse;
36019e95205Sopenharmony_ci    AttRead attReadBlobRequest;
36119e95205Sopenharmony_ci    AttRead attReadBlobResponse;
36219e95205Sopenharmony_ci    AttRead attReadMultipleRequest;
36319e95205Sopenharmony_ci    AttRead attReadMultipleResponse;
36419e95205Sopenharmony_ci    AttRead attReadByGroupTypeRequest;
36519e95205Sopenharmony_ci    AttRead attReadByGroupTypeResponse;
36619e95205Sopenharmony_ci    AttWrite attWriteRequest;
36719e95205Sopenharmony_ci    AttWrite attWriteResponse;
36819e95205Sopenharmony_ci    AttWrite attWriteCommand;
36919e95205Sopenharmony_ci    AttWrite attSignedWriteCommand;
37019e95205Sopenharmony_ci    AttWrite attPreprareWriteRequest;
37119e95205Sopenharmony_ci    AttWrite attPrepareWriteResponse;
37219e95205Sopenharmony_ci    AttWrite attExecuteWriteRequest;
37319e95205Sopenharmony_ci    AttWrite attExecuteWriteResponse;
37419e95205Sopenharmony_ci    AttHandleValue attNotification;
37519e95205Sopenharmony_ci    AttHandleValue attIndication;
37619e95205Sopenharmony_ci    AttHandleValue attHandleValueConfirmation;
37719e95205Sopenharmony_ci    AttWrite attTimeOut;
37819e95205Sopenharmony_ci} AttEventData;
37919e95205Sopenharmony_ci
38019e95205Sopenharmony_citypedef struct {
38119e95205Sopenharmony_ci    void (*attLEConnectCompleted)(uint16_t connectHandle, AttLeConnectCallback *data, void *context);
38219e95205Sopenharmony_ci    void (*attLEDisconnectCompleted)(uint16_t connectHandle, AttLeDisconnectCallback *data, void *context);
38319e95205Sopenharmony_ci    void (*attBREDRConnectCompleted)(uint16_t connectHandle, AttBredrConnectCallback *data, void *context);
38419e95205Sopenharmony_ci    void (*attBREDRDisconnectCompleted)(uint16_t connectHandle, AttBredrDisconnectCallback *data, void *context);
38519e95205Sopenharmony_ci    void (*attBREDRConnectInd)(uint16_t connectHandle, void *context);
38619e95205Sopenharmony_ci} AttConnectCallback;
38719e95205Sopenharmony_ci
38819e95205Sopenharmony_citypedef void (*attCallback)(uint16_t connectHandle, uint16_t event, void *eventData, Buffer *buffer, void *context);
38919e95205Sopenharmony_citypedef void (*attSendDataCallback)(uint16_t retGattConnectHandle, int result, void *context);
39019e95205Sopenharmony_ci
39119e95205Sopenharmony_citypedef struct {
39219e95205Sopenharmony_ci    attSendDataCallback attSendDataCB;
39319e95205Sopenharmony_ci    void *context;
39419e95205Sopenharmony_ci} AttClientSendDataCallback;
39519e95205Sopenharmony_ci
39619e95205Sopenharmony_citypedef struct {
39719e95205Sopenharmony_ci    attSendDataCallback attSendDataCB;
39819e95205Sopenharmony_ci    void *context;
39919e95205Sopenharmony_ci} AttServerSendDataCallback;
40019e95205Sopenharmony_ci
40119e95205Sopenharmony_ci/**
40219e95205Sopenharmony_ci * @brief Gatt register the client data callback to att.
40319e95205Sopenharmony_ci *
40419e95205Sopenharmony_ci * @param1 dataCallback Indicates the pointer to callback.
40519e95205Sopenharmony_ci * @param2 context Indicates the pointer to context.
40619e95205Sopenharmony_ci */
40719e95205Sopenharmony_civoid BTSTACK_API ATT_ClientDataRegister(attCallback dataCallback, void *context);
40819e95205Sopenharmony_ci
40919e95205Sopenharmony_ci/**
41019e95205Sopenharmony_ci * @brief Gatt deregister the client data callback to att.
41119e95205Sopenharmony_ci *
41219e95205Sopenharmony_ci */
41319e95205Sopenharmony_civoid BTSTACK_API ATT_ClientDataDeregister();
41419e95205Sopenharmony_ci
41519e95205Sopenharmony_ci/**
41619e95205Sopenharmony_ci * @brief Gatt register the server data callback to att.
41719e95205Sopenharmony_ci *
41819e95205Sopenharmony_ci * @param1 dataCallback Indicates the pointer to callback.
41919e95205Sopenharmony_ci * @param2 context Indicates the pointer to context.
42019e95205Sopenharmony_ci */
42119e95205Sopenharmony_civoid BTSTACK_API ATT_ServerDataRegister(attCallback dataCallback, void *context);
42219e95205Sopenharmony_ci
42319e95205Sopenharmony_ci/**
42419e95205Sopenharmony_ci * @brief Gatt deregister the server data callback to att.
42519e95205Sopenharmony_ci *
42619e95205Sopenharmony_ci */
42719e95205Sopenharmony_civoid BTSTACK_API ATT_ServerDataDeregister();
42819e95205Sopenharmony_ci
42919e95205Sopenharmony_ci/**
43019e95205Sopenharmony_ci * @brief Gatt register the connection callback to att.
43119e95205Sopenharmony_ci *
43219e95205Sopenharmony_ci * @param1 connectBack Indicates the struct to callback.
43319e95205Sopenharmony_ci * @param2 context Indicates the pointer to context.
43419e95205Sopenharmony_ci */
43519e95205Sopenharmony_civoid BTSTACK_API ATT_ConnectRegister(AttConnectCallback connectBack, void *context);
43619e95205Sopenharmony_ci
43719e95205Sopenharmony_ci/**
43819e95205Sopenharmony_ci * @brief Gatt deregister the connection callback to att.
43919e95205Sopenharmony_ci *
44019e95205Sopenharmony_ci */
44119e95205Sopenharmony_civoid BTSTACK_API ATT_ConnectDeregister();
44219e95205Sopenharmony_ci
44319e95205Sopenharmony_ci/**
44419e95205Sopenharmony_ci * @brief Gatt client register the send data callback to att.
44519e95205Sopenharmony_ci *
44619e95205Sopenharmony_ci * @param1 attSendDataCB Indicates pointer of attSendDataCallback.
44719e95205Sopenharmony_ci * @param2 context Indicates the pointer to context.
44819e95205Sopenharmony_ci */
44919e95205Sopenharmony_civoid BTSTACK_API ATT_ClientSendDataRegister(attSendDataCallback attSendDataCB, void *context);
45019e95205Sopenharmony_ci
45119e95205Sopenharmony_ci/**
45219e95205Sopenharmony_ci * @brief Gatt client deregister the send data callback to att.
45319e95205Sopenharmony_ci */
45419e95205Sopenharmony_civoid BTSTACK_API ATT_ClientSendDataDeRegister();
45519e95205Sopenharmony_ci
45619e95205Sopenharmony_ci/**
45719e95205Sopenharmony_ci * @brief Gatt server register the send data callback to att.
45819e95205Sopenharmony_ci *
45919e95205Sopenharmony_ci * @param1 AttSendDataCB Indicates pointer of attSendDataCallback.
46019e95205Sopenharmony_ci * @param2 context Indicates the pointer to context.
46119e95205Sopenharmony_ci */
46219e95205Sopenharmony_civoid BTSTACK_API ATT_ServerSendDataRegister(attSendDataCallback AttSendDataCB, void *context);
46319e95205Sopenharmony_ci
46419e95205Sopenharmony_ci/**
46519e95205Sopenharmony_ci * @brief Gatt server deregister the send data callback to att.
46619e95205Sopenharmony_ci */
46719e95205Sopenharmony_civoid BTSTACK_API ATT_ServerSendDataDeRegister();
46819e95205Sopenharmony_ci
46919e95205Sopenharmony_ci/**
47019e95205Sopenharmony_ci * @brief Send a connect request.
47119e95205Sopenharmony_ci *
47219e95205Sopenharmony_ci * @param1 transportType Indicates the connect type.
47319e95205Sopenharmony_ci * @param2 connParaPtr Indicates the pointer to const connect parameter.
47419e95205Sopenharmony_ci * @param3 btAddress Indicates the pointer to const address.
47519e95205Sopenharmony_ci * @param4 bredrconnectHandle Indicates the pointer to connecthandle be outputted.
47619e95205Sopenharmony_ci */
47719e95205Sopenharmony_civoid BTSTACK_API ATT_ConnectReq(
47819e95205Sopenharmony_ci    uint8_t transportType, const AttConnect *connParaPtr, const BtAddr *btAddress, const uint16_t *bredrconnectHandle);
47919e95205Sopenharmony_ci
48019e95205Sopenharmony_ci/**
48119e95205Sopenharmony_ci * @brief Send a connect response.
48219e95205Sopenharmony_ci *
48319e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
48419e95205Sopenharmony_ci * @param2 result Indicates the variable of result.
48519e95205Sopenharmony_ci * @param3 status Indicates the result of status.
48619e95205Sopenharmony_ci * @param4 cfg Indicates the pointer to const connect parameter.
48719e95205Sopenharmony_ci */
48819e95205Sopenharmony_civoid BTSTACK_API ATT_ConnectRsp(uint16_t connectHandle, uint16_t result, uint16_t status, const AttConnect *cfg);
48919e95205Sopenharmony_ci
49019e95205Sopenharmony_ci/**
49119e95205Sopenharmony_ci * @brief Send a disconnect request.
49219e95205Sopenharmony_ci *
49319e95205Sopenharmony_ci * @param connectHandle Indicates the connect handle.
49419e95205Sopenharmony_ci */
49519e95205Sopenharmony_civoid BTSTACK_API ATT_DisconnectReq(uint16_t connectHandle);
49619e95205Sopenharmony_ci
49719e95205Sopenharmony_ci/**
49819e95205Sopenharmony_ci * @brief Send an error response.
49919e95205Sopenharmony_ci *
50019e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
50119e95205Sopenharmony_ci * @param2 ATTErrorPtr Indicates the pointer to const error response parameter.
50219e95205Sopenharmony_ci */
50319e95205Sopenharmony_civoid BTSTACK_API ATT_ErrorResponse(uint16_t connectHandle, const AttError *ATTErrorPtr);
50419e95205Sopenharmony_ci
50519e95205Sopenharmony_ci/**
50619e95205Sopenharmony_ci * @brief Send an exchange MTU request .
50719e95205Sopenharmony_ci *
50819e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
50919e95205Sopenharmony_ci * @param2 clientRxMTU Indicates the client receive MTU size.
51019e95205Sopenharmony_ci */
51119e95205Sopenharmony_civoid BTSTACK_API ATT_ExchangeMTURequest(uint16_t connectHandle, uint16_t clientRxMTU);
51219e95205Sopenharmony_ci
51319e95205Sopenharmony_ci/**
51419e95205Sopenharmony_ci * @brief Send an exchange MTU response.
51519e95205Sopenharmony_ci *
51619e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
51719e95205Sopenharmony_ci * @param2 serverRxMTU Indicates the attribute server receive MTU size.
51819e95205Sopenharmony_ci */
51919e95205Sopenharmony_civoid BTSTACK_API ATT_ExchangeMTUResponse(uint16_t connectHandle, uint16_t serverRxMTU);
52019e95205Sopenharmony_ci
52119e95205Sopenharmony_ci/**
52219e95205Sopenharmony_ci * @brief Send a find Information request.
52319e95205Sopenharmony_ci *
52419e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
52519e95205Sopenharmony_ci * @param2 startHandle Indicates the first requested handle number.
52619e95205Sopenharmony_ci * @param3 endHandle Indicates the last requested handle number.
52719e95205Sopenharmony_ci */
52819e95205Sopenharmony_civoid BTSTACK_API ATT_FindInformationRequest(uint16_t connectHandle, uint16_t startHandle, uint16_t endHandle);
52919e95205Sopenharmony_ci
53019e95205Sopenharmony_ci/**
53119e95205Sopenharmony_ci * @brief Send a find Information response.
53219e95205Sopenharmony_ci *
53319e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
53419e95205Sopenharmony_ci * @param2 format Indicates the format of the information data.
53519e95205Sopenharmony_ci * @param3 handleUUIDPairs Indicates the pointer to const information data.
53619e95205Sopenharmony_ci * @param4 pairNum Indicates the paris number of the Information Data.
53719e95205Sopenharmony_ci */
53819e95205Sopenharmony_civoid BTSTACK_API ATT_FindInformationResponse(
53919e95205Sopenharmony_ci    uint16_t connectHandle, uint8_t format, AttHandleUuid *handleUUIDPairs, uint16_t pairNum);
54019e95205Sopenharmony_ci
54119e95205Sopenharmony_ci/**
54219e95205Sopenharmony_ci * @brief Send a find by type value request.
54319e95205Sopenharmony_ci *
54419e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
54519e95205Sopenharmony_ci * @param2 attFindByTypePtreve Indicates the pointer to const the parameter of AttFindByTypeValueReq.
54619e95205Sopenharmony_ci * @param3 attValue Indicates the pointer to attribute value to find.
54719e95205Sopenharmony_ci */
54819e95205Sopenharmony_civoid BTSTACK_API ATT_FindByTypeValueRequest(
54919e95205Sopenharmony_ci    uint16_t connectHandle, const AttFindByTypeValueReq *attFindByTypePtreve, const Buffer *attValue);
55019e95205Sopenharmony_ci
55119e95205Sopenharmony_ci/**
55219e95205Sopenharmony_ci * @brief Send a find by type value response.
55319e95205Sopenharmony_ci *
55419e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
55519e95205Sopenharmony_ci * @param2 handleInfoList Indicates the pointer to const a list of 1 or more Handle Information.
55619e95205Sopenharmony_ci * @param3 listNum Indicates the number of handles information list.
55719e95205Sopenharmony_ci */
55819e95205Sopenharmony_civoid BTSTACK_API ATT_FindByTypeValueResponse(
55919e95205Sopenharmony_ci    uint16_t connectHandle, const AttHandleInfo *handleInfoList, uint16_t listNum);
56019e95205Sopenharmony_ci
56119e95205Sopenharmony_ci/**
56219e95205Sopenharmony_ci * @brief Send a read by type request.
56319e95205Sopenharmony_ci *
56419e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
56519e95205Sopenharmony_ci * @param2 startHandle Indicates the first requested handle number.
56619e95205Sopenharmony_ci * @param3 endHandle Indicates the last requested handle number.
56719e95205Sopenharmony_ci * @param4 uuid Indicates the pointer to const 2 or 16 octet UUID.
56819e95205Sopenharmony_ci */
56919e95205Sopenharmony_civoid BTSTACK_API ATT_ReadByTypeRequest(
57019e95205Sopenharmony_ci    uint16_t connectHandle, uint16_t startHandle, uint16_t endHandle, const BtUuid *uuid);
57119e95205Sopenharmony_ci
57219e95205Sopenharmony_ci/**
57319e95205Sopenharmony_ci * @brief Send a read by type response.
57419e95205Sopenharmony_ci *
57519e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
57619e95205Sopenharmony_ci * @param2 length Indicates the size of each attribute handlevalue pair.
57719e95205Sopenharmony_ci * @param3 valueList Indicates the pointer to const a list of attribute data.
57819e95205Sopenharmony_ci * @param4 attrValueNum Indicates the value of attribute value number.
57919e95205Sopenharmony_ci */
58019e95205Sopenharmony_civoid BTSTACK_API ATT_ReadByTypeResponse(
58119e95205Sopenharmony_ci    uint16_t connectHandle, uint8_t length, const AttReadByTypeRspDataList *valueList, uint16_t attrValueNum);
58219e95205Sopenharmony_ci
58319e95205Sopenharmony_ci/**
58419e95205Sopenharmony_ci * @brief Send a read request.
58519e95205Sopenharmony_ci *
58619e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
58719e95205Sopenharmony_ci * @param2 attHandle Indicates the handle of the attribute to be read.
58819e95205Sopenharmony_ci */
58919e95205Sopenharmony_civoid BTSTACK_API ATT_ReadRequest(uint16_t connectHandle, uint16_t attHandle);
59019e95205Sopenharmony_ci
59119e95205Sopenharmony_ci/**
59219e95205Sopenharmony_ci * @brief Send a read response.
59319e95205Sopenharmony_ci *
59419e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
59519e95205Sopenharmony_ci * @param2 attValue Indicates the pointer to the value of the attribute with the handle given.
59619e95205Sopenharmony_ci */
59719e95205Sopenharmony_civoid BTSTACK_API ATT_ReadResponse(uint16_t connectHandle, const Buffer *attValue);
59819e95205Sopenharmony_ci
59919e95205Sopenharmony_ci/**
60019e95205Sopenharmony_ci * @brief Send a read blob request.
60119e95205Sopenharmony_ci *
60219e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
60319e95205Sopenharmony_ci * @param2 attHandle Indicates the handle of the attribute to be read.
60419e95205Sopenharmony_ci * @param3 offset Indicates the offset of the first octet to be read.
60519e95205Sopenharmony_ci */
60619e95205Sopenharmony_civoid BTSTACK_API ATT_ReadBlobRequest(uint16_t connectHandle, uint16_t attHandle, uint16_t offset);
60719e95205Sopenharmony_ci
60819e95205Sopenharmony_ci/**
60919e95205Sopenharmony_ci * @brief Send a read blob response.
61019e95205Sopenharmony_ci *
61119e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
61219e95205Sopenharmony_ci * @param2 attReadBlobResObj Indicates the pointer to part of the value of the attribute with the handle given.
61319e95205Sopenharmony_ci */
61419e95205Sopenharmony_civoid BTSTACK_API ATT_ReadBlobResponse(uint16_t connectHandle, const Buffer *attReadBlobResObj);
61519e95205Sopenharmony_ci
61619e95205Sopenharmony_ci/**
61719e95205Sopenharmony_ci * @brief Send a read multiple request.
61819e95205Sopenharmony_ci *
61919e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
62019e95205Sopenharmony_ci * @param2 handleList Indicates the pointer to a set of two or more attribute handles.
62119e95205Sopenharmony_ci */
62219e95205Sopenharmony_civoid BTSTACK_API ATT_ReadMultipleRequest(uint16_t connectHandle, const Buffer *handleList);
62319e95205Sopenharmony_ci
62419e95205Sopenharmony_ci/**
62519e95205Sopenharmony_ci * @brief Send a read multiple response.
62619e95205Sopenharmony_ci *
62719e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
62819e95205Sopenharmony_ci * @param2 valueList Indicates the pointer to a set of two or more values.
62919e95205Sopenharmony_ci */
63019e95205Sopenharmony_civoid BTSTACK_API ATT_ReadMultipleResponse(uint16_t connectHandle, const Buffer *valueList);
63119e95205Sopenharmony_ci
63219e95205Sopenharmony_ci/**
63319e95205Sopenharmony_ci * @brief Send a read by group type request.
63419e95205Sopenharmony_ci *
63519e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
63619e95205Sopenharmony_ci * @param2 startHandle Indicates the first requested handle number.
63719e95205Sopenharmony_ci * @param3 endHandle Indicates the last requested handle number.
63819e95205Sopenharmony_ci * @param4 uuid Indicates the pointer to 2 or 16 octet UUID.
63919e95205Sopenharmony_ci */
64019e95205Sopenharmony_civoid BTSTACK_API ATT_ReadByGroupTypeRequest(
64119e95205Sopenharmony_ci    uint16_t connectHandle, uint16_t startHandle, uint16_t endHandle, const BtUuid *uuid);
64219e95205Sopenharmony_ci
64319e95205Sopenharmony_ci/**
64419e95205Sopenharmony_ci * @brief Send a read by group type response.
64519e95205Sopenharmony_ci *
64619e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
64719e95205Sopenharmony_ci * @param2 length Indicates the size of each attribute data.
64819e95205Sopenharmony_ci * @param3 serviceList Indicates the pointer to const a list of attribute data.
64919e95205Sopenharmony_ci * @param4 serviceNum Indicates the number of attribute data.
65019e95205Sopenharmony_ci */
65119e95205Sopenharmony_civoid BTSTACK_API ATT_ReadByGroupTypeResponse(
65219e95205Sopenharmony_ci    uint16_t connectHandle, uint8_t length, const AttReadGoupAttributeData *serviceList, uint16_t serviceNum);
65319e95205Sopenharmony_ci
65419e95205Sopenharmony_ci/**
65519e95205Sopenharmony_ci * @brief Send a write request.
65619e95205Sopenharmony_ci *
65719e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
65819e95205Sopenharmony_ci * @param2 attHandle Indicates the handle of the attribute to be written.
65919e95205Sopenharmony_ci * @param3 attValue Indicates the pointer to the value to be written to the attribute.
66019e95205Sopenharmony_ci */
66119e95205Sopenharmony_civoid BTSTACK_API ATT_WriteRequest(uint16_t connectHandle, uint16_t attHandle, const Buffer *attValue);
66219e95205Sopenharmony_ci
66319e95205Sopenharmony_ci/**
66419e95205Sopenharmony_ci * @brief Send a write response.
66519e95205Sopenharmony_ci *
66619e95205Sopenharmony_ci * @param connectHandle Indicates the connect handle.
66719e95205Sopenharmony_ci */
66819e95205Sopenharmony_civoid BTSTACK_API ATT_WriteResponse(uint16_t connectHandle);
66919e95205Sopenharmony_ci
67019e95205Sopenharmony_ci/**
67119e95205Sopenharmony_ci * @brief Send a write command.
67219e95205Sopenharmony_ci *
67319e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
67419e95205Sopenharmony_ci * @param2 attHandle Indicates the handle of the attribute to be set.
67519e95205Sopenharmony_ci * @param3 attValue Indicates the pointer to the value of be written to the attribute.
67619e95205Sopenharmony_ci */
67719e95205Sopenharmony_civoid BTSTACK_API ATT_WriteCommand(uint16_t connectHandle, uint16_t attHandle, const Buffer *attValue);
67819e95205Sopenharmony_ci
67919e95205Sopenharmony_ci/**
68019e95205Sopenharmony_ci * @brief Send a signed write command.
68119e95205Sopenharmony_ci *
68219e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
68319e95205Sopenharmony_ci * @param2 attHandle Indicates the the handle of the attribute to be set.
68419e95205Sopenharmony_ci * @param3 attValue Indicates the pointer to the value to be written to the attribute.
68519e95205Sopenharmony_ci */
68619e95205Sopenharmony_civoid BTSTACK_API ATT_SignedWriteCommand(uint16_t connectHandle, uint16_t attHandle, const Buffer *attValue);
68719e95205Sopenharmony_ci
68819e95205Sopenharmony_ci/**
68919e95205Sopenharmony_ci * @brief Send a prepare write request.
69019e95205Sopenharmony_ci *
69119e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
69219e95205Sopenharmony_ci * @param2 attReadBlobObj Indicates the value of the struct AttReadBlobReqPrepareWriteValue.
69319e95205Sopenharmony_ci * @param3 attValue Indicates the pointer to the value of the attribute to be written.
69419e95205Sopenharmony_ci */
69519e95205Sopenharmony_civoid BTSTACK_API ATT_PrepareWriteRequest(
69619e95205Sopenharmony_ci    uint16_t connectHandle, AttReadBlobReqPrepareWriteValue attReadBlobObj, const Buffer *attValue);
69719e95205Sopenharmony_ci
69819e95205Sopenharmony_ci/**
69919e95205Sopenharmony_ci * @brief Send a prepare write response.
70019e95205Sopenharmony_ci *
70119e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
70219e95205Sopenharmony_ci * @param2 attReadBlobObj Indicates the value of the struct AttReadBlobReqPrepareWriteValue.
70319e95205Sopenharmony_ci * @param3 attValue Indicates the pointer to the value of the attribute to be written.
70419e95205Sopenharmony_ci */
70519e95205Sopenharmony_civoid BTSTACK_API ATT_PrepareWriteResponse(
70619e95205Sopenharmony_ci    uint16_t connectHandle, AttReadBlobReqPrepareWriteValue attReadBlobObj, const Buffer *attValue);
70719e95205Sopenharmony_ci
70819e95205Sopenharmony_ci/**
70919e95205Sopenharmony_ci * @brief Send a execute write request.
71019e95205Sopenharmony_ci *
71119e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
71219e95205Sopenharmony_ci * @param2 flag Indicates the value of flags.
71319e95205Sopenharmony_ci */
71419e95205Sopenharmony_civoid BTSTACK_API ATT_ExecuteWriteRequest(uint16_t connectHandle, uint8_t flag);
71519e95205Sopenharmony_ci
71619e95205Sopenharmony_ci/**
71719e95205Sopenharmony_ci * @brief Send a execute write response.
71819e95205Sopenharmony_ci *
71919e95205Sopenharmony_ci * @param connectHandle Indicates the connect handle.
72019e95205Sopenharmony_ci */
72119e95205Sopenharmony_civoid BTSTACK_API ATT_ExecuteWriteResponse(uint16_t connectHandle);
72219e95205Sopenharmony_ci
72319e95205Sopenharmony_ci/**
72419e95205Sopenharmony_ci * @brief Send a handle value notification.
72519e95205Sopenharmony_ci *
72619e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
72719e95205Sopenharmony_ci * @param2 attHandle Indicates the handle of the attribute.
72819e95205Sopenharmony_ci * @param3 attValue Indicates the pointer to the current value of the attribute.
72919e95205Sopenharmony_ci */
73019e95205Sopenharmony_civoid BTSTACK_API ATT_HandleValueNotification(uint16_t connectHandle, uint16_t attHandle, const Buffer *attValue);
73119e95205Sopenharmony_ci
73219e95205Sopenharmony_ci/**
73319e95205Sopenharmony_ci * @brief Send a handle value indication.
73419e95205Sopenharmony_ci *
73519e95205Sopenharmony_ci * @param1 connectHandle Indicates the connect handle.
73619e95205Sopenharmony_ci * @param2 attHandle Indicates the handle of the attribute.
73719e95205Sopenharmony_ci * @param3 attValue Indicates the pointer to the current value of the attribute.
73819e95205Sopenharmony_ci */
73919e95205Sopenharmony_civoid BTSTACK_API ATT_HandleValueIndication(uint16_t connectHandle, uint16_t attHandle, const Buffer *attValue);
74019e95205Sopenharmony_ci
74119e95205Sopenharmony_ci/**
74219e95205Sopenharmony_ci * @brief Send a handle value confirmation.
74319e95205Sopenharmony_ci *
74419e95205Sopenharmony_ci * @param connectHandle Indicates the connect handle.
74519e95205Sopenharmony_ci */
74619e95205Sopenharmony_civoid BTSTACK_API ATT_HandleValueConfirmation(uint16_t connectHandle);
74719e95205Sopenharmony_ci
74819e95205Sopenharmony_ci/**
74919e95205Sopenharmony_ci * @brief Cancel Le ACL connection
75019e95205Sopenharmony_ci *
75119e95205Sopenharmony_ci * @return Returns BT_SUCCESS if the operation is successful, otherwise the operation fails.
75219e95205Sopenharmony_ci */
75319e95205Sopenharmony_ciint BTSTACK_API ATT_LeConnectCancel(const BtAddr *addr);
75419e95205Sopenharmony_ci
75519e95205Sopenharmony_ci#ifdef __cplusplus
75619e95205Sopenharmony_ci}
75719e95205Sopenharmony_ci#endif
75819e95205Sopenharmony_ci
75919e95205Sopenharmony_ci#endif  // ATT_H
760