• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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