Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 2010-2014 Broadcom Corporation
      4  *
      5  *  Licensed under the Apache License, Version 2.0 (the "License");
      6  *  you may not use this file except in compliance with the License.
      7  *  You may obtain a copy of the License at:
      8  *
      9  *  http://www.apache.org/licenses/LICENSE-2.0
     10  *
     11  *  Unless required by applicable law or agreed to in writing, software
     12  *  distributed under the License is distributed on an "AS IS" BASIS,
     13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     14  *  See the License for the specific language governing permissions and
     15  *  limitations under the License.
     16  *
     17  ******************************************************************************/
     18 
     19 /******************************************************************************
     20  *
     21  *  This file contains the LLCP API definitions
     22  *
     23  ******************************************************************************/
     24 #ifndef LLCP_API_H
     25 #define LLCP_API_H
     26 
     27 #include "llcp_defs.h"
     28 #include "nfc_target.h"
     29 
     30 /*****************************************************************************
     31 **  Constants
     32 *****************************************************************************/
     33 /* Successfully done                */
     34 #define LLCP_STATUS_SUCCESS 0
     35 /* Failed without specific reason   */
     36 #define LLCP_STATUS_FAIL 1
     37 /* Data link is congested           */
     38 #define LLCP_STATUS_CONGESTED 2
     39 
     40 typedef uint8_t tLLCP_STATUS;
     41 
     42 #define LLCP_MIN_OFFSET                                             \
     43   (NCI_MSG_OFFSET_SIZE + NCI_DATA_HDR_SIZE + LLCP_PDU_HEADER_SIZE + \
     44    LLCP_SEQUENCE_SIZE)
     45 
     46 /* indication of failure to allocate data link resource */
     47 #define LLCP_INVALID_SAP 0xFF
     48 
     49 /*****************************************************************************
     50 **  Type Definitions
     51 *****************************************************************************/
     52 typedef struct {
     53   bool is_initiator;        /* TRUE if we are POLL mode */
     54   uint8_t max_payload_size; /* 64, 128, 192 or 254 */
     55   uint8_t waiting_time;
     56   uint8_t* p_gen_bytes;
     57   uint8_t gen_bytes_len;
     58 } tLLCP_ACTIVATE_CONFIG;
     59 
     60 typedef struct {
     61   uint16_t miu;                 /* Local receiving MIU      */
     62   uint8_t rw;                   /* Local receiving window   */
     63   char sn[LLCP_MAX_SN_LEN + 1]; /* Service name to connect  */
     64 } tLLCP_CONNECTION_PARAMS;
     65 
     66 /*********************************
     67 **  Callback Functions Prototypes
     68 **********************************/
     69 
     70 /* Link Management Callback Events */
     71 
     72 /* Fail to activate link    */
     73 #define LLCP_LINK_ACTIVATION_FAILED_EVT 0x00
     74 /* LLCP Link is activated   */
     75 #define LLCP_LINK_ACTIVATION_COMPLETE_EVT 0x01
     76 /* LLCP Link is deactivated */
     77 #define LLCP_LINK_DEACTIVATED_EVT 0x02
     78 /* First LLCP packet received from remote */
     79 #define LLCP_LINK_FIRST_PACKET_RECEIVED_EVT 0x03
     80 
     81 /* Link Management Callback Reasons */
     82 
     83 /* Success                                  */
     84 #define LLCP_LINK_SUCCESS 0x00
     85 /* Failed to agree version                  */
     86 #define LLCP_LINK_VERSION_FAILED 0x01
     87 /* Failed to parse received general bytes   */
     88 #define LLCP_LINK_BAD_GEN_BYTES 0x02
     89 /* internal error                           */
     90 #define LLCP_LINK_INTERNAL_ERROR 0x03
     91 /* Link has been deactivated by local       */
     92 #define LLCP_LINK_LOCAL_INITIATED 0x04
     93 /* Link has been deactivated by remote      */
     94 #define LLCP_LINK_REMOTE_INITIATED 0x05
     95 /* Link has been deactivated by timeout     */
     96 #define LLCP_LINK_TIMEOUT 0x06
     97 /* Link has been deactivated by frame error */
     98 #define LLCP_LINK_FRAME_ERROR 0x07
     99 /* RF link loss without any rx LLC PDU      */
    100 #define LLCP_LINK_RF_LINK_LOSS_NO_RX_LLC 0x08
    101 #define LLCP_LINK_RF_TRANSMISSION_ERR NFC_STATUS_RF_TRANSMISSION_ERR
    102 #define LLCP_LINK_RF_PROTOCOL_ERR NFC_STATUS_RF_PROTOCOL_ERR
    103 #define LLCP_LINK_RF_TIMEOUT NFC_STATUS_TIMEOUT
    104 #define LLCP_LINK_RF_LINK_LOSS_ERR NFC_STATUS_LINK_LOSS
    105 
    106 typedef void(tLLCP_LINK_CBACK)(uint8_t event, uint8_t reason);
    107 
    108 /* Minimum length of Gen Bytes for LLCP */
    109 /* In CE4 low power mode, NFCC can store up to 21 bytes */
    110 #define LLCP_MIN_GEN_BYTES 20
    111 
    112 /* Service Access Point (SAP) Callback Events */
    113 
    114 /* Received data on SAP         */
    115 #define LLCP_SAP_EVT_DATA_IND 0x00
    116 /* Connection request from peer */
    117 #define LLCP_SAP_EVT_CONNECT_IND 0x01
    118 /* Connection accepted by peer  */
    119 #define LLCP_SAP_EVT_CONNECT_RESP 0x02
    120 /* Received disconnect request  */
    121 #define LLCP_SAP_EVT_DISCONNECT_IND 0x03
    122 /* Received disconnect response */
    123 #define LLCP_SAP_EVT_DISCONNECT_RESP 0x04
    124 /* congested status is changed  */
    125 #define LLCP_SAP_EVT_CONGEST 0x05
    126 /* Change of LLCP Link status   */
    127 #define LLCP_SAP_EVT_LINK_STATUS 0x06
    128 /* tx queue is empty and all PDU is acked   */
    129 #define LLCP_SAP_EVT_TX_COMPLETE 0x07
    130 
    131 #define LLCP_LINK_TYPE_LOGICAL_DATA_LINK 0x01
    132 #define LLCP_LINK_TYPE_DATA_LINK_CONNECTION 0x02
    133 
    134 typedef struct {
    135   uint8_t event;      /* LLCP_SAP_EVT_DATA_IND        */
    136   uint8_t local_sap;  /* SAP of local device          */
    137   uint8_t remote_sap; /* SAP of remote device         */
    138   uint8_t link_type;  /* link type                    */
    139 } tLLCP_SAP_DATA_IND;
    140 
    141 typedef struct {
    142   uint8_t event;        /* LLCP_SAP_EVT_CONNECT_IND     */
    143   uint8_t server_sap;   /* SAP of local server          */
    144   uint8_t local_sap;    /* SAP of local device          */
    145   uint8_t remote_sap;   /* SAP of remote device         */
    146   uint16_t miu;         /* MIU of peer device           */
    147   uint8_t rw;           /* RW of peer device            */
    148   char* p_service_name; /* Service name (only for SDP)  */
    149 } tLLCP_SAP_CONNECT_IND;
    150 
    151 typedef struct {
    152   uint8_t event;      /* LLCP_SAP_EVT_CONNECT_RESP    */
    153   uint8_t local_sap;  /* SAP of local device          */
    154   uint8_t remote_sap; /* SAP of remote device         */
    155   uint16_t miu;       /* MIU of peer device           */
    156   uint8_t rw;         /* RW of peer device            */
    157 } tLLCP_SAP_CONNECT_RESP;
    158 
    159 #define LLCP_SAP_DISCONNECT_REASON_TIMEOUT 0x80
    160 typedef struct {
    161   uint8_t event;      /* LLCP_SAP_EVT_DISCONNECT_IND  */
    162   uint8_t local_sap;  /* SAP of local device          */
    163   uint8_t remote_sap; /* SAP of remote device         */
    164 } tLLCP_SAP_DISCONNECT_IND;
    165 
    166 typedef struct {
    167   uint8_t event;      /* LLCP_SAP_EVT_DISCONNECT_RESP */
    168   uint8_t local_sap;  /* SAP of local device          */
    169   uint8_t remote_sap; /* SAP of remote device         */
    170   uint8_t reason;     /* Reason of DM PDU if not timeout */
    171 } tLLCP_SAP_DISCONNECT_RESP;
    172 
    173 typedef struct {
    174   uint8_t event;      /* LLCP_SAP_EVT_CONGEST         */
    175   uint8_t local_sap;  /* SAP of local device          */
    176   uint8_t remote_sap; /* SAP of remote device         */
    177   bool is_congested;  /* TRUE if congested            */
    178   uint8_t link_type;  /* congested link type          */
    179 } tLLCP_SAP_CONGEST;
    180 
    181 typedef struct {
    182   uint8_t event;     /* LLCP_SAP_EVT_LINK_STATUS     */
    183   uint8_t local_sap; /* SAP of local device          */
    184   bool is_activated; /* TRUE if LLCP link is activated  */
    185   bool is_initiator; /* TRUE if local LLCP is initiator */
    186 } tLLCP_SAP_LINK_STATUS;
    187 
    188 typedef struct {
    189   uint8_t event;      /* LLCP_SAP_EVT_TX_COMPLETE     */
    190   uint8_t local_sap;  /* SAP of local device          */
    191   uint8_t remote_sap; /* SAP of remote device         */
    192 } tLLCP_SAP_TX_COMPLETE;
    193 
    194 typedef struct {
    195   uint8_t event;     /* event                        */
    196   uint8_t local_sap; /* SAP of local device          */
    197 } tLLCP_SAP_HEADER;
    198 
    199 typedef union {
    200   tLLCP_SAP_HEADER hdr;                      /* common header                */
    201   tLLCP_SAP_DATA_IND data_ind;               /* LLCP_SAP_EVT_DATA_IND        */
    202   tLLCP_SAP_CONNECT_IND connect_ind;         /* LLCP_SAP_EVT_CONNECT_IND     */
    203   tLLCP_SAP_CONNECT_RESP connect_resp;       /* LLCP_SAP_EVT_CONNECT_RESP    */
    204   tLLCP_SAP_DISCONNECT_IND disconnect_ind;   /* LLCP_SAP_EVT_DISCONNECT_IND  */
    205   tLLCP_SAP_DISCONNECT_RESP disconnect_resp; /* LLCP_SAP_EVT_DISCONNECT_RESP */
    206   tLLCP_SAP_CONGEST congest;                 /* LLCP_SAP_EVT_CONGEST         */
    207   tLLCP_SAP_LINK_STATUS link_status;         /* LLCP_SAP_EVT_LINK_STATUS     */
    208   tLLCP_SAP_TX_COMPLETE tx_complete;         /* LLCP_SAP_EVT_TX_COMPLETE     */
    209 } tLLCP_SAP_CBACK_DATA;
    210 
    211 typedef void(tLLCP_APP_CBACK)(tLLCP_SAP_CBACK_DATA* p_data);
    212 
    213 /* Service Discovery Callback */
    214 
    215 typedef void(tLLCP_SDP_CBACK)(uint8_t tid, uint8_t remote_sap);
    216 
    217 /* LLCP DTA Callback - notify DTA responded SNL for connectionless echo service
    218  */
    219 
    220 typedef void(tLLCP_DTA_CBACK)(void);
    221 
    222 /*****************************************************************************
    223 **  External Function Declarations
    224 *****************************************************************************/
    225 #ifdef __cplusplus
    226 extern "C" {
    227 #endif
    228 
    229 /*******************************************************************************
    230 **
    231 ** Function         LLCP_SetConfig
    232 **
    233 ** Description      Set configuration parameters for LLCP
    234 **                  - Local Link MIU
    235 **                  - Option parameter
    236 **                  - Waiting Time Index
    237 **                  - Local Link Timeout
    238 **                  - Inactivity Timeout as initiator role
    239 **                  - Inactivity Timeout as target role
    240 **                  - Delay SYMM response
    241 **                  - Data link connection timeout
    242 **                  - Delay timeout to send first PDU as initiator
    243 **
    244 ** Returns          void
    245 **
    246 *******************************************************************************/
    247 extern void LLCP_SetConfig(uint16_t link_miu, uint8_t opt, uint8_t wt,
    248                            uint16_t link_timeout, uint16_t inact_timeout_init,
    249                            uint16_t inact_timeout_target, uint16_t symm_delay,
    250                            uint16_t data_link_timeout,
    251                            uint16_t delay_first_pdu_timeout);
    252 
    253 /*******************************************************************************
    254 **
    255 ** Function         LLCP_GetConfig
    256 **
    257 ** Description      Get configuration parameters for LLCP
    258 **                  - Local Link MIU
    259 **                  - Option parameter
    260 **                  - Response Waiting Time Index
    261 **                  - Local Link Timeout
    262 **                  - Inactivity Timeout as initiator role
    263 **                  - Inactivity Timeout as target role
    264 **                  - Delay SYMM response
    265 **                  - Data link connection timeout
    266 **                  - Delay timeout to send first PDU as initiator
    267 **
    268 ** Returns          void
    269 **
    270 *******************************************************************************/
    271 extern void LLCP_GetConfig(uint16_t* p_link_miu, uint8_t* p_opt, uint8_t* p_wt,
    272                            uint16_t* p_link_timeout,
    273                            uint16_t* p_inact_timeout_init,
    274                            uint16_t* p_inact_timeout_target,
    275                            uint16_t* p_symm_delay,
    276                            uint16_t* p_data_link_timeout,
    277                            uint16_t* p_delay_first_pdu_timeout);
    278 
    279 /*******************************************************************************
    280 **
    281 ** Function         LLCP_GetDiscoveryConfig
    282 **
    283 ** Description      Returns discovery config for LLCP MAC link activation
    284 **                  This function is called to get general bytes for
    285 **                  NFC_PMID_ATR_REQ_GEN_BYTES or NFC_PMID_ATR_RES_GEN_BYTES
    286 **                  before starting discovery.
    287 **
    288 **                  wt:Waiting time 0 - 8, only for listen
    289 **                  p_gen_bytes: pointer to store LLCP magic number and
    290 **                               paramters
    291 **                  p_gen_bytes_len: length of buffer for gen bytes as input
    292 **                                   (NOTE:it must be bigger than
    293 **                                   LLCP_MIN_GEN_BYTES) actual gen bytes
    294 **                                   size as output
    295 **
    296 **                  Restrictions on the use of ISO 18092
    297 **                  1. The DID features shall not be used.
    298 **                  2. the NAD features shall not be used.
    299 **                  3. Frame waiting time extentions (WTX) shall not be used.
    300 **
    301 ** Returns          None
    302 **
    303 *******************************************************************************/
    304 extern void LLCP_GetDiscoveryConfig(uint8_t* p_wt, uint8_t* p_gen_bytes,
    305                                     uint8_t* p_gen_bytes_len);
    306 
    307 /*******************************************************************************
    308 **
    309 ** Function         LLCP_ActivateLink
    310 **
    311 ** Description      This function will activate LLCP link with LR, WT and Gen
    312 **                  Bytes in activation NTF from NFCC.
    313 **
    314 **                  LLCP_LINK_ACTIVATION_COMPLETE_EVT will be returned through
    315 **                  callback function if successful.
    316 **                  Otherwise, LLCP_LINK_ACTIVATION_FAILED_EVT will be returned.
    317 **
    318 ** Returns          LLCP_STATUS_SUCCESS if success
    319 **
    320 *******************************************************************************/
    321 extern tLLCP_STATUS LLCP_ActivateLink(tLLCP_ACTIVATE_CONFIG config,
    322                                       tLLCP_LINK_CBACK* p_link_cback);
    323 
    324 /*******************************************************************************
    325 **
    326 ** Function         LLCP_DeactivateLink
    327 **
    328 ** Description      Deactivate LLCP link
    329 **
    330 **                  LLCP_LINK_DEACTIVATED_EVT will be returned through callback
    331 **                  when LLCP link is deactivated. Then NFC link may be
    332 **                  deactivated.
    333 **
    334 ** Returns          LLCP_STATUS_SUCCESS if success
    335 **
    336 *******************************************************************************/
    337 extern tLLCP_STATUS LLCP_DeactivateLink(void);
    338 
    339 /*******************************************************************************
    340 **
    341 ** Function         LLCP_RegisterServer
    342 **
    343 ** Description      Register server and callback function
    344 **
    345 **                  reg_sap : Well-Known SAP except LM and SDP (0x02 - 0x0F)
    346 **                            Advertized by SDP (0x10 - 0x1F)
    347 **                            LLCP_INVALID_SAP, LLCP will allocate between 0x10
    348 **                            and 0x1F
    349 **                  link_type : LLCP_LINK_TYPE_LOGICAL_DATA_LINK
    350 **                              and/or LLCP_LINK_TYPE_DATA_LINK_CONNECTION
    351 **                  p_service_name : Null-terminated string up to
    352 **                                   LLCP_MAX_SN_LEN
    353 **
    354 ** Returns          SAP between 0x02 and 0x1F, if success
    355 **                  LLCP_INVALID_SAP, otherwise
    356 **
    357 *******************************************************************************/
    358 extern uint8_t LLCP_RegisterServer(uint8_t reg_sap, uint8_t link_type,
    359                                    char* p_service_name,
    360                                    tLLCP_APP_CBACK* p_sap_cback);
    361 
    362 /*******************************************************************************
    363 **
    364 ** Function         LLCP_RegisterClient
    365 **
    366 ** Description      Register client and callback function
    367 **
    368 **                  link_type : LLCP_LINK_TYPE_LOGICAL_DATA_LINK
    369 **                              and/or LLCP_LINK_TYPE_DATA_LINK_CONNECTION
    370 **
    371 ** Returns          SAP between 0x20 and 0x3F, if success
    372 **                  LLCP_INVALID_SAP, otherwise
    373 **
    374 *******************************************************************************/
    375 extern uint8_t LLCP_RegisterClient(uint8_t link_type,
    376                                    tLLCP_APP_CBACK* p_sap_cback);
    377 
    378 /*******************************************************************************
    379 **
    380 ** Function         LLCP_Deregister
    381 **
    382 ** Description      Deregister server or client
    383 **
    384 **
    385 ** Returns          LLCP_STATUS_SUCCESS if success
    386 **
    387 *******************************************************************************/
    388 extern tLLCP_STATUS LLCP_Deregister(uint8_t sap);
    389 
    390 /*******************************************************************************
    391 **
    392 ** Function         LLCP_IsLogicalLinkCongested
    393 **
    394 ** Description      Check if logical link is congested
    395 **
    396 **
    397 ** Returns          TRUE if congested
    398 **
    399 *******************************************************************************/
    400 extern bool LLCP_IsLogicalLinkCongested(uint8_t local_sap,
    401                                         uint8_t num_pending_ui_pdu,
    402                                         uint8_t total_pending_ui_pdu,
    403                                         uint8_t total_pending_i_pdu);
    404 
    405 /*******************************************************************************
    406 **
    407 ** Function         LLCP_SendUI
    408 **
    409 ** Description      Send connnectionless data to DSAP
    410 **
    411 **
    412 ** Returns          LLCP_STATUS_SUCCESS if success
    413 **                  LLCP_STATUS_CONGESTED if logical link is congested
    414 **                  LLCP_STATUS_FAIL, otherwise
    415 **
    416 *******************************************************************************/
    417 extern tLLCP_STATUS LLCP_SendUI(uint8_t ssap, uint8_t dsap, NFC_HDR* p_buf);
    418 
    419 /*******************************************************************************
    420 **
    421 ** Function         LLCP_ReadLogicalLinkData
    422 **
    423 ** Description      Read information of UI PDU for local SAP
    424 **
    425 **                  - Remote SAP who sent UI PDU is returned.
    426 **                  - Information of UI PDU up to max_data_len is copied into
    427 **                    p_data.
    428 **                  - Information of next UI PDU is not concatenated.
    429 **                  - Recommended max_data_len is link MIU of local device
    430 **
    431 ** Returns          TRUE if more information of UI PDU or more UI PDU in queue
    432 **
    433 *******************************************************************************/
    434 extern bool LLCP_ReadLogicalLinkData(uint8_t local_sap, uint32_t max_data_len,
    435                                      uint8_t* p_remote_sap,
    436                                      uint32_t* p_data_len, uint8_t* p_data);
    437 
    438 /*******************************************************************************
    439 **
    440 ** Function         LLCP_FlushLogicalLinkRxData
    441 **
    442 ** Description      Discard received data in logical data link of local SAP
    443 **
    444 **
    445 ** Returns          length of data flushed
    446 **
    447 *******************************************************************************/
    448 extern uint32_t LLCP_FlushLogicalLinkRxData(uint8_t local_sap);
    449 
    450 /*******************************************************************************
    451 **
    452 ** Function         LLCP_ConnectReq
    453 **
    454 ** Description      Create data link connection between registered SAP and DSAP
    455 **                  in peer LLCP,
    456 **
    457 **
    458 ** Returns          LLCP_STATUS_SUCCESS if success
    459 **                  LLCP_STATUS_FAIL, otherwise
    460 **
    461 *******************************************************************************/
    462 extern tLLCP_STATUS LLCP_ConnectReq(uint8_t reg_sap, uint8_t dsap,
    463                                     tLLCP_CONNECTION_PARAMS* p_params);
    464 
    465 /*******************************************************************************
    466 **
    467 ** Function         LLCP_ConnectCfm
    468 **
    469 ** Description      Accept connection request from peer LLCP
    470 **
    471 **
    472 ** Returns          LLCP_STATUS_SUCCESS if success
    473 **                  LLCP_STATUS_FAIL, otherwise
    474 **
    475 *******************************************************************************/
    476 extern tLLCP_STATUS LLCP_ConnectCfm(uint8_t local_sap, uint8_t remote_sap,
    477                                     tLLCP_CONNECTION_PARAMS* p_params);
    478 
    479 /*******************************************************************************
    480 **
    481 ** Function         LLCP_ConnectReject
    482 **
    483 ** Description      Reject connection request from peer LLCP
    484 **
    485 **                  reason : LLCP_SAP_DM_REASON_APP_REJECTED
    486 **                           LLCP_SAP_DM_REASON_PERM_REJECT_THIS
    487 **                           LLCP_SAP_DM_REASON_PERM_REJECT_ANY
    488 **                           LLCP_SAP_DM_REASON_TEMP_REJECT_THIS
    489 **                           LLCP_SAP_DM_REASON_TEMP_REJECT_ANY
    490 **
    491 ** Returns          LLCP_STATUS_SUCCESS if success
    492 **                  LLCP_STATUS_FAIL, otherwise
    493 **
    494 *******************************************************************************/
    495 extern tLLCP_STATUS LLCP_ConnectReject(uint8_t local_sap, uint8_t remote_sap,
    496                                        uint8_t reason);
    497 
    498 /*******************************************************************************
    499 **
    500 ** Function         LLCP_IsDataLinkCongested
    501 **
    502 ** Description      Check if data link is congested
    503 **
    504 **
    505 ** Returns          TRUE if congested
    506 **
    507 *******************************************************************************/
    508 extern bool LLCP_IsDataLinkCongested(uint8_t local_sap, uint8_t remote_sap,
    509                                      uint8_t num_pending_i_pdu,
    510                                      uint8_t total_pending_ui_pdu,
    511                                      uint8_t total_pending_i_pdu);
    512 
    513 /*******************************************************************************
    514 **
    515 ** Function         LLCP_SendData
    516 **
    517 ** Description      Send connection-oriented data
    518 **
    519 **
    520 ** Returns          LLCP_STATUS_SUCCESS if success
    521 **                  LLCP_STATUS_CONGESTED if data link is congested
    522 **
    523 *******************************************************************************/
    524 extern tLLCP_STATUS LLCP_SendData(uint8_t local_sap, uint8_t remote_sap,
    525                                   NFC_HDR* p_buf);
    526 
    527 /*******************************************************************************
    528 **
    529 ** Function         LLCP_ReadDataLinkData
    530 **
    531 ** Description      Read information of I PDU for data link connection
    532 **
    533 **                  - Information of I PDU up to max_data_len is copied into
    534 **                    p_data.
    535 **                  - Information of next I PDU is not concatenated.
    536 **                  - Recommended max_data_len is data link connection MIU of
    537 **                    local end point
    538 **
    539 ** Returns          TRUE if more data in queue
    540 **
    541 *******************************************************************************/
    542 extern bool LLCP_ReadDataLinkData(uint8_t local_sap, uint8_t remote_sap,
    543                                   uint32_t max_data_len, uint32_t* p_data_len,
    544                                   uint8_t* p_data);
    545 
    546 /*******************************************************************************
    547 **
    548 ** Function         LLCP_FlushDataLinkRxData
    549 **
    550 ** Description      Discard received data in data link connection
    551 **
    552 **
    553 ** Returns          length of rx data flushed
    554 **
    555 *******************************************************************************/
    556 extern uint32_t LLCP_FlushDataLinkRxData(uint8_t local_sap, uint8_t remote_sap);
    557 
    558 /*******************************************************************************
    559 **
    560 ** Function         LLCP_DisconnectReq
    561 **
    562 ** Description      Disconnect data link
    563 **                  discard any pending data if flush is set to TRUE
    564 **
    565 ** Returns          LLCP_STATUS_SUCCESS if success
    566 **
    567 *******************************************************************************/
    568 extern tLLCP_STATUS LLCP_DisconnectReq(uint8_t local_sap, uint8_t remote_sap,
    569                                        bool flush);
    570 
    571 /*******************************************************************************
    572 **
    573 ** Function         LLCP_SetTxCompleteNtf
    574 **
    575 ** Description      This function is called to get LLCP_SAP_EVT_TX_COMPLETE
    576 **                  when Tx queue is empty and all PDU is acked.
    577 **                  This is one time event, so upper layer shall call this
    578 **                  function again to get next LLCP_SAP_EVT_TX_COMPLETE.
    579 **
    580 ** Returns          LLCP_STATUS_SUCCESS if success
    581 **
    582 *******************************************************************************/
    583 extern tLLCP_STATUS LLCP_SetTxCompleteNtf(uint8_t local_sap,
    584                                           uint8_t remote_sap);
    585 
    586 /*******************************************************************************
    587 **
    588 ** Function         LLCP_SetLocalBusyStatus
    589 **
    590 ** Description      Set local busy status
    591 **
    592 **
    593 ** Returns          LLCP_STATUS_SUCCESS if success
    594 **
    595 *******************************************************************************/
    596 extern tLLCP_STATUS LLCP_SetLocalBusyStatus(uint8_t local_sap,
    597                                             uint8_t remote_sap, bool is_busy);
    598 
    599 /*******************************************************************************
    600 **
    601 ** Function         LLCP_GetRemoteWKS
    602 **
    603 ** Description      Return well-known service bitmap of connected device
    604 **
    605 **
    606 ** Returns          WKS bitmap if success
    607 **
    608 *******************************************************************************/
    609 extern uint16_t LLCP_GetRemoteWKS(void);
    610 
    611 /*******************************************************************************
    612 **
    613 ** Function         LLCP_GetRemoteLSC
    614 **
    615 ** Description      Return link service class of connected device
    616 **
    617 **
    618 ** Returns          link service class
    619 **
    620 *******************************************************************************/
    621 extern uint8_t LLCP_GetRemoteLSC(void);
    622 
    623 /*******************************************************************************
    624 **
    625 ** Function         LLCP_GetRemoteVersion
    626 **
    627 ** Description      Return LLCP version of connected device
    628 **
    629 **
    630 ** Returns          LLCP version
    631 **
    632 *******************************************************************************/
    633 extern uint8_t LLCP_GetRemoteVersion(void);
    634 
    635 /*******************************************************************************
    636 **
    637 ** Function         LLCP_GetLinkMIU
    638 **
    639 ** Description      Return local and remote link MIU
    640 **
    641 **
    642 ** Returns          None
    643 **
    644 *******************************************************************************/
    645 extern void LLCP_GetLinkMIU(uint16_t* p_local_link_miu,
    646                             uint16_t* p_remote_link_miu);
    647 
    648 /*******************************************************************************
    649 **
    650 ** Function         LLCP_DiscoverService
    651 **
    652 ** Description      Return SAP of service name in connected device through
    653 **                  callback
    654 **
    655 ** Returns          LLCP_STATUS_SUCCESS if success
    656 **
    657 *******************************************************************************/
    658 extern tLLCP_STATUS LLCP_DiscoverService(char* p_name, tLLCP_SDP_CBACK* p_cback,
    659                                          uint8_t* p_tid);
    660 
    661 /*******************************************************************************
    662 **
    663 ** Function         LLCP_SetTraceLevel
    664 **
    665 ** Description      This function sets the trace level for LLCP.  If called with
    666 **                  a value of 0xFF, it simply returns the current trace level.
    667 **
    668 ** Returns          The new or current trace level
    669 **
    670 *******************************************************************************/
    671 
    672 extern uint8_t LLCP_SetTraceLevel(uint8_t new_level);
    673 /*******************************************************************************
    674 **
    675 ** Function         LLCP_RegisterDtaCback
    676 **
    677 ** Description      Register callback function for LLCP DTA testing
    678 **
    679 **
    680 ** Returns          void
    681 **
    682 *******************************************************************************/
    683 extern void LLCP_RegisterDtaCback(tLLCP_DTA_CBACK* p_dta_cback);
    684 
    685 #if (LLCP_TEST_INCLUDED == TRUE)
    686 /*******************************************************************************
    687 **
    688 ** Function         LLCP_SetTestParams
    689 **
    690 ** Description      Set test parameters for LLCP
    691 **
    692 ** Returns          void
    693 **
    694 *******************************************************************************/
    695 extern void LLCP_SetTestParams(uint8_t version, uint16_t wks);
    696 #endif
    697 
    698 #ifdef __cplusplus
    699 }
    700 #endif
    701 
    702 #endif /* LLCP_API_H */
    703