Home | History | Annotate | Download | only in include
      1 /******************************************************************************
      2  *
      3  *  Copyright (C) 1999-2012 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 PORT API definitions
     22  *
     23  ******************************************************************************/
     24 #ifndef PORT_API_H
     25 #define PORT_API_H
     26 
     27 #include "bt_target.h"
     28 
     29 /*****************************************************************************
     30 **  Constants and Types
     31 *****************************************************************************/
     32 
     33 /*
     34 ** Define port settings structure send from the application in the
     35 ** set settings request, or to the application in the set settings indication.
     36 */
     37 typedef struct
     38 {
     39 
     40 #define PORT_BAUD_RATE_2400       0x00
     41 #define PORT_BAUD_RATE_4800       0x01
     42 #define PORT_BAUD_RATE_7200       0x02
     43 #define PORT_BAUD_RATE_9600       0x03
     44 #define PORT_BAUD_RATE_19200      0x04
     45 #define PORT_BAUD_RATE_38400      0x05
     46 #define PORT_BAUD_RATE_57600      0x06
     47 #define PORT_BAUD_RATE_115200     0x07
     48 #define PORT_BAUD_RATE_230400     0x08
     49 
     50     UINT8  baud_rate;
     51 
     52 #define PORT_5_BITS               0x00
     53 #define PORT_6_BITS               0x01
     54 #define PORT_7_BITS               0x02
     55 #define PORT_8_BITS               0x03
     56 
     57     UINT8  byte_size;
     58 
     59 #define PORT_ONESTOPBIT           0x00
     60 #define PORT_ONE5STOPBITS         0x01
     61     UINT8   stop_bits;
     62 
     63 #define PORT_PARITY_NO            0x00
     64 #define PORT_PARITY_YES           0x01
     65     UINT8   parity;
     66 
     67 #define PORT_ODD_PARITY           0x00
     68 #define PORT_EVEN_PARITY          0x01
     69 #define PORT_MARK_PARITY          0x02
     70 #define PORT_SPACE_PARITY         0x03
     71 
     72     UINT8   parity_type;
     73 
     74 #define PORT_FC_OFF               0x00
     75 #define PORT_FC_XONXOFF_ON_INPUT  0x01
     76 #define PORT_FC_XONXOFF_ON_OUTPUT 0x02
     77 #define PORT_FC_CTS_ON_INPUT      0x04
     78 #define PORT_FC_CTS_ON_OUTPUT     0x08
     79 #define PORT_FC_DSR_ON_INPUT      0x10
     80 #define PORT_FC_DSR_ON_OUTPUT     0x20
     81 
     82     UINT8 fc_type;
     83 
     84     UINT8 rx_char1;
     85 
     86 #define PORT_XON_DC1              0x11
     87     UINT8 xon_char;
     88 
     89 #define PORT_XOFF_DC3             0x13
     90     UINT8 xoff_char;
     91 
     92 } tPORT_STATE;
     93 
     94 
     95 /*
     96 ** Define the callback function prototypes.  Parameters are specific
     97 ** to each event and are described bellow
     98 */
     99 typedef int  (tPORT_DATA_CALLBACK) (UINT16 port_handle, void *p_data, UINT16 len);
    100 
    101 #define DATA_CO_CALLBACK_TYPE_INCOMING          1
    102 #define DATA_CO_CALLBACK_TYPE_OUTGOING_SIZE     2
    103 #define DATA_CO_CALLBACK_TYPE_OUTGOING          3
    104 typedef int  (tPORT_DATA_CO_CALLBACK) (UINT16 port_handle, UINT8* p_buf, UINT16 len, int type);
    105 
    106 typedef void (tPORT_CALLBACK) (UINT32 code, UINT16 port_handle);
    107 
    108 /*
    109 ** Define events that registered application can receive in the callback
    110 */
    111 
    112 #define PORT_EV_RXCHAR  0x00000001   /* Any Character received */
    113 #define PORT_EV_RXFLAG  0x00000002   /* Received certain character */
    114 #define PORT_EV_TXEMPTY 0x00000004   /* Transmitt Queue Empty */
    115 #define PORT_EV_CTS     0x00000008   /* CTS changed state */
    116 #define PORT_EV_DSR     0x00000010   /* DSR changed state */
    117 #define PORT_EV_RLSD    0x00000020   /* RLSD changed state */
    118 #define PORT_EV_BREAK   0x00000040   /* BREAK received */
    119 #define PORT_EV_ERR     0x00000080   /* Line status error occurred */
    120 #define PORT_EV_RING    0x00000100   /* Ring signal detected */
    121 #define PORT_EV_CTSS    0x00000400   /* CTS state */
    122 #define PORT_EV_DSRS    0x00000800   /* DSR state */
    123 #define PORT_EV_RLSDS   0x00001000   /* RLSD state */
    124 #define PORT_EV_OVERRUN 0x00002000   /* receiver buffer overrun */
    125 #define PORT_EV_TXCHAR  0x00004000   /* Any character transmitted */
    126 
    127 #define PORT_EV_CONNECTED    0x00000200  /* RFCOMM connection established */
    128 #define PORT_EV_CONNECT_ERR  0x00008000  /* Was not able to establish connection */
    129                                      /* or disconnected */
    130 #define PORT_EV_FC      0x00010000   /* data flow enabled flag changed by remote */
    131 #define PORT_EV_FCS     0x00020000   /* data flow enable status true = enabled */
    132 
    133 /*
    134 ** To register for events application should provide bitmask with
    135 ** corresponding bit set
    136 */
    137 
    138 #define PORT_MASK_ALL             (PORT_EV_RXCHAR | PORT_EV_TXEMPTY | PORT_EV_CTS | \
    139                                    PORT_EV_DSR | PORT_EV_RLSD | PORT_EV_BREAK | \
    140                                    PORT_EV_ERR | PORT_EV_RING | PORT_EV_CONNECT_ERR | \
    141                                    PORT_EV_DSRS | PORT_EV_CTSS | PORT_EV_RLSDS | \
    142                                    PORT_EV_RXFLAG | PORT_EV_TXCHAR | PORT_EV_OVERRUN | \
    143                                    PORT_EV_FC | PORT_EV_FCS | PORT_EV_CONNECTED)
    144 
    145 
    146 /*
    147 ** Define port result codes
    148 */
    149 #define PORT_SUCCESS                0
    150 
    151 #define PORT_ERR_BASE               0
    152 
    153 #define PORT_UNKNOWN_ERROR          (PORT_ERR_BASE + 1)
    154 #define PORT_ALREADY_OPENED         (PORT_ERR_BASE + 2)
    155 #define PORT_CMD_PENDING            (PORT_ERR_BASE + 3)
    156 #define PORT_APP_NOT_REGISTERED     (PORT_ERR_BASE + 4)
    157 #define PORT_NO_MEM                 (PORT_ERR_BASE + 5)
    158 #define PORT_NO_RESOURCES           (PORT_ERR_BASE + 6)
    159 #define PORT_BAD_BD_ADDR            (PORT_ERR_BASE + 7)
    160 #define PORT_BAD_HANDLE             (PORT_ERR_BASE + 9)
    161 #define PORT_NOT_OPENED             (PORT_ERR_BASE + 10)
    162 #define PORT_LINE_ERR               (PORT_ERR_BASE + 11)
    163 #define PORT_START_FAILED           (PORT_ERR_BASE + 12)
    164 #define PORT_PAR_NEG_FAILED         (PORT_ERR_BASE + 13)
    165 #define PORT_PORT_NEG_FAILED        (PORT_ERR_BASE + 14)
    166 #define PORT_SEC_FAILED             (PORT_ERR_BASE + 15)
    167 #define PORT_PEER_CONNECTION_FAILED (PORT_ERR_BASE + 16)
    168 #define PORT_PEER_FAILED            (PORT_ERR_BASE + 17)
    169 #define PORT_PEER_TIMEOUT           (PORT_ERR_BASE + 18)
    170 #define PORT_CLOSED                 (PORT_ERR_BASE + 19)
    171 #define PORT_TX_FULL                (PORT_ERR_BASE + 20)
    172 #define PORT_LOCAL_CLOSED           (PORT_ERR_BASE + 21)
    173 #define PORT_LOCAL_TIMEOUT          (PORT_ERR_BASE + 22)
    174 #define PORT_TX_QUEUE_DISABLED      (PORT_ERR_BASE + 23)
    175 #define PORT_PAGE_TIMEOUT           (PORT_ERR_BASE + 24)
    176 #define PORT_INVALID_SCN            (PORT_ERR_BASE + 25)
    177 
    178 #define PORT_ERR_MAX                (PORT_ERR_BASE + 26)
    179 
    180 /*****************************************************************************
    181 **  External Function Declarations
    182 *****************************************************************************/
    183 #ifdef __cplusplus
    184 extern "C"
    185 {
    186 #endif
    187 
    188 /*******************************************************************************
    189 **
    190 ** Function         RFCOMM_CreateConnection
    191 **
    192 ** Description      RFCOMM_CreateConnection function is used from the application
    193 **                  to establish serial port connection to the peer device,
    194 **                  or allow RFCOMM to accept a connection from the peer
    195 **                  application.
    196 **
    197 ** Parameters:      scn          - Service Channel Number as registered with
    198 **                                 the SDP (server) or obtained using SDP from
    199 **                                 the peer device (client).
    200 **                  is_server    - TRUE if requesting application is a server
    201 **                  mtu          - Maximum frame size the application can accept
    202 **                  bd_addr      - BD_ADDR of the peer (client)
    203 **                  mask         - specifies events to be enabled.  A value
    204 **                                 of zero disables all events.
    205 **                  p_handle     - OUT pointer to the handle.
    206 **                  p_mgmt_cb    - pointer to callback function to receive
    207 **                                 connection up/down events.
    208 ** Notes:
    209 **
    210 ** Server can call this function with the same scn parameter multiple times if
    211 ** it is ready to accept multiple simulteneous connections.
    212 **
    213 ** DLCI for the connection is (scn * 2 + 1) if client originates connection on
    214 ** existing none initiator multiplexer channel.  Otherwise it is (scn * 2).
    215 ** For the server DLCI can be changed later if client will be calling it using
    216 ** (scn * 2 + 1) dlci.
    217 **
    218 *******************************************************************************/
    219 extern int RFCOMM_CreateConnection (UINT16 uuid, UINT8 scn,
    220                                             BOOLEAN is_server, UINT16 mtu,
    221                                             BD_ADDR bd_addr, UINT16 *p_handle,
    222                                             tPORT_CALLBACK *p_mgmt_cb);
    223 
    224 
    225 /*******************************************************************************
    226 **
    227 ** Function         RFCOMM_RemoveConnection
    228 **
    229 ** Description      This function is called to close the specified connection.
    230 **
    231 ** Parameters:      handle     - Handle of the port returned in the Open
    232 **
    233 *******************************************************************************/
    234 extern int RFCOMM_RemoveConnection (UINT16 handle);
    235 
    236 
    237 /*******************************************************************************
    238 **
    239 ** Function         RFCOMM_RemoveServer
    240 **
    241 ** Description      This function is called to close the server port.
    242 **
    243 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    244 **
    245 *******************************************************************************/
    246 extern int RFCOMM_RemoveServer (UINT16 handle);
    247 
    248 
    249 /*******************************************************************************
    250 **
    251 ** Function         PORT_SetEventCallback
    252 **
    253 ** Description      Set event callback the specified connection.
    254 **
    255 ** Parameters:      handle       - Handle of the port returned in the Open
    256 **                  p_callback   - address of the callback function which should
    257 **                                 be called from the RFCOMM when an event
    258 **                                 specified in the mask occurs.
    259 **
    260 *******************************************************************************/
    261 extern int PORT_SetEventCallback (UINT16 port_handle,
    262                                   tPORT_CALLBACK *p_port_cb);
    263 
    264 /*******************************************************************************
    265 **
    266 ** Function         PORT_ClearKeepHandleFlag
    267 **
    268 ** Description      This function is called to clear the keep handle flag
    269 **                  which will cause not to keep the port handle open when closed
    270 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    271 **
    272 *******************************************************************************/
    273 int PORT_ClearKeepHandleFlag (UINT16 port_handle);
    274 
    275 /*******************************************************************************
    276 **
    277 ** Function         PORT_SetEventCallback
    278 **
    279 ** Description      Set event data callback the specified connection.
    280 **
    281 ** Parameters:      handle       - Handle of the port returned in the Open
    282 **                  p_callback   - address of the callback function which should
    283 **                                 be called from the RFCOMM when a data
    284 **                                 packet is received.
    285 **
    286 *******************************************************************************/
    287 extern int PORT_SetDataCallback (UINT16 port_handle,
    288                                  tPORT_DATA_CALLBACK *p_cb);
    289 
    290 extern int PORT_SetDataCOCallback (UINT16 port_handle, tPORT_DATA_CO_CALLBACK *p_port_cb);
    291 /*******************************************************************************
    292 **
    293 ** Function         PORT_SetEventMask
    294 **
    295 ** Description      This function is called to close the specified connection.
    296 **
    297 ** Parameters:      handle - Handle of the port returned in the Open
    298 **                  mask   - specifies events to be enabled.  A value
    299 **                           of zero disables all events.
    300 **
    301 *******************************************************************************/
    302 extern int PORT_SetEventMask (UINT16 port_handle, UINT32 mask);
    303 
    304 
    305 /*******************************************************************************
    306 **
    307 ** Function         PORT_CheckConnection
    308 **
    309 ** Description      This function returns PORT_SUCCESS if connection referenced
    310 **                  by handle is up and running
    311 **
    312 ** Parameters:      handle     - Handle of the port returned in the Open
    313 **                  bd_addr    - OUT bd_addr of the peer
    314 **                  p_lcid     - OUT L2CAP's LCID
    315 **
    316 *******************************************************************************/
    317 extern int PORT_CheckConnection (UINT16 handle, BD_ADDR bd_addr,
    318                                  UINT16 *p_lcid);
    319 
    320 /*******************************************************************************
    321 **
    322 ** Function         PORT_IsOpening
    323 **
    324 ** Description      This function returns TRUE if there is any RFCOMM connection
    325 **                  opening in process.
    326 **
    327 ** Parameters:      TRUE if any connection opening is found
    328 **                  bd_addr    - bd_addr of the peer
    329 **
    330 *******************************************************************************/
    331 extern BOOLEAN PORT_IsOpening (BD_ADDR bd_addr);
    332 
    333 /*******************************************************************************
    334 **
    335 ** Function         PORT_SetState
    336 **
    337 ** Description      This function configures connection according to the
    338 **                  specifications in the tPORT_STATE structure.
    339 **
    340 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    341 **                  p_settings - Pointer to a tPORT_STATE structure containing
    342 **                               configuration information for the connection.
    343 **
    344 *******************************************************************************/
    345 extern int PORT_SetState (UINT16 handle, tPORT_STATE *p_settings);
    346 
    347 /*******************************************************************************
    348 **
    349 ** Function         PORT_GetRxQueueCnt
    350 **
    351 ** Description      This function return number of buffers on the rx queue.
    352 **
    353 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    354 **                  p_rx_queue_count - Pointer to return queue count in.
    355 **
    356 *******************************************************************************/
    357 extern int PORT_GetRxQueueCnt (UINT16 handle, UINT16 *p_rx_queue_count);
    358 
    359 /*******************************************************************************
    360 **
    361 ** Function         PORT_GetState
    362 **
    363 ** Description      This function is called to fill tPORT_STATE structure
    364 **                  with the current control settings for the port
    365 **
    366 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    367 **                  p_settings - Pointer to a tPORT_STATE structure in which
    368 **                               configuration information is returned.
    369 **
    370 *******************************************************************************/
    371 extern int PORT_GetState (UINT16 handle, tPORT_STATE *p_settings);
    372 
    373 
    374 /*******************************************************************************
    375 **
    376 ** Function         PORT_Control
    377 **
    378 ** Description      This function directs a specified connection to pass control
    379 **                  control information to the peer device.
    380 **
    381 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    382 **                  signal     - specify the function to be passed
    383 **
    384 *******************************************************************************/
    385 #define PORT_SET_DTRDSR         0x01
    386 #define PORT_CLR_DTRDSR         0x02
    387 #define PORT_SET_CTSRTS         0x03
    388 #define PORT_CLR_CTSRTS         0x04
    389 #define PORT_SET_RI             0x05        /* DCE only */
    390 #define PORT_CLR_RI             0x06        /* DCE only */
    391 #define PORT_SET_DCD            0x07        /* DCE only */
    392 #define PORT_CLR_DCD            0x08        /* DCE only */
    393 #define PORT_BREAK              0x09        /* Break event */
    394 
    395 extern int PORT_Control (UINT16 handle, UINT8 signal);
    396 
    397 
    398 /*******************************************************************************
    399 **
    400 ** Function         PORT_FlowControl
    401 **
    402 ** Description      This function directs a specified connection to pass
    403 **                  flow control message to the peer device.  Enable flag passed
    404 **                  shows if port can accept more data.
    405 **
    406 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    407 **                  enable     - enables data flow
    408 **
    409 *******************************************************************************/
    410 extern int PORT_FlowControl (UINT16 handle, BOOLEAN enable);
    411 
    412 
    413 /*******************************************************************************
    414 **
    415 ** Function         PORT_GetModemStatus
    416 **
    417 ** Description      This function retrieves modem control signals.  Normally
    418 **                  application will call this function after a callback
    419 **                  function is called with notification that one of signals
    420 **                  has been changed.
    421 **
    422 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    423 **                               callback.
    424 **                  p_signal   - specify the pointer to control signals info
    425 **
    426 *******************************************************************************/
    427 #define PORT_DTRDSR_ON          0x01
    428 #define PORT_CTSRTS_ON          0x02
    429 #define PORT_RING_ON            0x04
    430 #define PORT_DCD_ON             0x08
    431 
    432 /*
    433 ** Define default initial local modem signals state set after connection established
    434 */
    435 #define PORT_OBEX_DEFAULT_SIGNAL_STATE  (PORT_DTRDSR_ON | PORT_CTSRTS_ON | PORT_DCD_ON)
    436 #define PORT_SPP_DEFAULT_SIGNAL_STATE   (PORT_DTRDSR_ON | PORT_CTSRTS_ON | PORT_DCD_ON)
    437 #define PORT_PPP_DEFAULT_SIGNAL_STATE   (PORT_DTRDSR_ON | PORT_CTSRTS_ON | PORT_DCD_ON)
    438 #define PORT_DUN_DEFAULT_SIGNAL_STATE   (PORT_DTRDSR_ON | PORT_CTSRTS_ON)
    439 
    440 extern int PORT_GetModemStatus (UINT16 handle, UINT8 *p_control_signal);
    441 
    442 
    443 /*******************************************************************************
    444 **
    445 ** Function         PORT_ClearError
    446 **
    447 ** Description      This function retreives information about a communications
    448 **                  error and reports current status of a connection.  The
    449 **                  function should be called when an error occures to clear
    450 **                  the connection error flag and to enable additional read
    451 **                  and write operations.
    452 **
    453 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    454 **                  p_errors   - pointer of the variable to receive error codes
    455 **                  p_status   - pointer to the tPORT_STATUS structur to receive
    456 **                               connection status
    457 **
    458 *******************************************************************************/
    459 
    460 #define PORT_ERR_BREAK      0x01    /* Break condition occured on the peer device */
    461 #define PORT_ERR_OVERRUN    0x02    /* Overrun is reported by peer device */
    462 #define PORT_ERR_FRAME      0x04    /* Framing error reported by peer device */
    463 #define PORT_ERR_RXOVER     0x08    /* Input queue overflow occured */
    464 #define PORT_ERR_TXFULL     0x10    /* Output queue overflow occured */
    465 
    466 typedef struct
    467 {
    468 #define PORT_FLAG_CTS_HOLD  0x01    /* Tx is waiting for CTS signal */
    469 #define PORT_FLAG_DSR_HOLD  0x02    /* Tx is waiting for DSR signal */
    470 #define PORT_FLAG_RLSD_HOLD 0x04    /* Tx is waiting for RLSD signal */
    471 
    472     UINT16  flags;
    473     UINT16  in_queue_size;          /* Number of bytes in the input queue */
    474     UINT16  out_queue_size;         /* Number of bytes in the output queue */
    475     UINT16  mtu_size;               /* peer MTU size */
    476 } tPORT_STATUS;
    477 
    478 
    479 extern int PORT_ClearError (UINT16 handle, UINT16 *p_errors,
    480                             tPORT_STATUS *p_status);
    481 
    482 
    483 /*******************************************************************************
    484 **
    485 ** Function         PORT_SendError
    486 **
    487 ** Description      This function send a communications error to the peer device
    488 **
    489 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    490 **                  errors     - receive error codes
    491 **
    492 *******************************************************************************/
    493 extern int PORT_SendError (UINT16 handle, UINT8 errors);
    494 
    495 
    496 /*******************************************************************************
    497 **
    498 ** Function         PORT_GetQueueStatus
    499 **
    500 ** Description      This function reports current status of a connection.
    501 **
    502 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    503 **                  p_status   - pointer to the tPORT_STATUS structur to receive
    504 **                               connection status
    505 **
    506 *******************************************************************************/
    507 extern int PORT_GetQueueStatus (UINT16 handle, tPORT_STATUS *p_status);
    508 
    509 
    510 /*******************************************************************************
    511 **
    512 ** Function         PORT_Purge
    513 **
    514 ** Description      This function discards all the data from the output or
    515 **                  input queues of the specified connection.
    516 **
    517 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    518 **                  purge_flags - specify the action to take.
    519 **
    520 *******************************************************************************/
    521 #define PORT_PURGE_TXCLEAR  0x01
    522 #define PORT_PURGE_RXCLEAR  0x02
    523 
    524 extern int PORT_Purge (UINT16 handle, UINT8 purge_flags);
    525 
    526 
    527 /*******************************************************************************
    528 **
    529 ** Function         PORT_Read
    530 **
    531 ** Description      This function returns the pointer to the buffer received
    532 **                  from the peer device.  Normally application will call this
    533 **                  function after receiving PORT_EVT_RXCHAR event.
    534 **                  Application calling this function is responsible to free
    535 **                  buffer returned.
    536 **
    537 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    538 **                                callback.
    539 **                  pp_buf      - pointer to address of buffer with data,
    540 **
    541 *******************************************************************************/
    542 extern int PORT_Read (UINT16 handle, BT_HDR **pp_buf);
    543 
    544 
    545 /*******************************************************************************
    546 **
    547 ** Function         PORT_ReadData
    548 **
    549 ** Description      Normally application will call this function after receiving
    550 **                  PORT_EVT_RXCHAR event.
    551 **
    552 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    553 **                                callback.
    554 **                  p_data      - Data area
    555 **                  max_len     - Byte count requested
    556 **                  p_len       - Byte count received
    557 **
    558 *******************************************************************************/
    559 extern int PORT_ReadData (UINT16 handle, char *p_data, UINT16 max_len,
    560                           UINT16 *p_len);
    561 
    562 
    563 /*******************************************************************************
    564 **
    565 ** Function         PORT_Write
    566 **
    567 ** Description      This function to send BT buffer to the peer device.
    568 **                  Application should not free the buffer.
    569 **
    570 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    571 **                  p_buf       - pointer to the buffer with data,
    572 **
    573 *******************************************************************************/
    574 extern int PORT_Write (UINT16 handle, BT_HDR *p_buf);
    575 
    576 
    577 /*******************************************************************************
    578 **
    579 ** Function         PORT_WriteData
    580 **
    581 ** Description      This function is called from the legacy application to
    582 **                  send data.
    583 **
    584 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    585 **                  p_data      - Data area
    586 **                  max_len     - Byte count to write
    587 **                  p_len       - Bytes written
    588 **
    589 *******************************************************************************/
    590 extern int PORT_WriteData (UINT16 handle, char *p_data, UINT16 max_len,
    591                            UINT16 *p_len);
    592 
    593 /*******************************************************************************
    594 **
    595 ** Function         PORT_WriteDataCO
    596 **
    597 ** Description      Normally not GKI aware application will call this function
    598 **                  to send data to the port by callout functions.
    599 **
    600 ** Parameters:      handle     - Handle returned in the RFCOMM_CreateConnection
    601 **
    602 *******************************************************************************/
    603 extern int PORT_WriteDataCO (UINT16 handle, int* p_len);
    604 
    605 /*******************************************************************************
    606 **
    607 ** Function         PORT_Test
    608 **
    609 ** Description      Application can call this function to send RFCOMM Test frame
    610 **
    611 ** Parameters:      handle      - Handle returned in the RFCOMM_CreateConnection
    612 **                  p_data      - Data area
    613 **                  max_len     - Byte count requested
    614 **
    615 *******************************************************************************/
    616 extern int PORT_Test (UINT16 handle, UINT8 *p_data, UINT16 len);
    617 
    618 
    619 /*******************************************************************************
    620 **
    621 ** Function         RFCOMM_Init
    622 **
    623 ** Description      This function is called to initialize RFCOMM layer
    624 **
    625 *******************************************************************************/
    626 extern void RFCOMM_Init (void);
    627 
    628 
    629 /*******************************************************************************
    630 **
    631 ** Function         PORT_SetTraceLevel
    632 **
    633 ** Description      This function sets the trace level for RFCOMM. If called with
    634 **                  a value of 0xFF, it simply reads the current trace level.
    635 **
    636 ** Returns          the new (current) trace level
    637 **
    638 *******************************************************************************/
    639 extern UINT8 PORT_SetTraceLevel (UINT8 new_level);
    640 
    641 
    642 /*******************************************************************************
    643 **
    644 ** Function         PORT_GetResultString
    645 **
    646 ** Description      This function returns the human-readable string for a given
    647 **                  result code.
    648 **
    649 ** Returns          a pointer to the human-readable string for the given
    650 **                  result. Note that the string returned must not be freed.
    651 **
    652 *******************************************************************************/
    653 extern const char *PORT_GetResultString (const uint8_t result_code);
    654 
    655 #ifdef __cplusplus
    656 }
    657 #endif
    658 
    659 #endif  /* PORT_API_H */
    660