NSMBW-Decomp
A decompilation of New Super Mario Bros. Wii
Loading...
Searching...
No Matches
port_api.h
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*/
37typedef 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
93
94
95/*
96** Define the callback function prototypes. Parameters are specific
97** to each event and are described bellow
98*/
99typedef 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
104typedef int (tPORT_DATA_CO_CALLBACK) (UINT16 port_handle, UINT8* p_buf, UINT16 len, int type);
105
106typedef 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
179/*****************************************************************************
180** External Function Declarations
181*****************************************************************************/
182#ifdef __cplusplus
183extern "C"
184{
185#endif
186
187/*******************************************************************************
188**
189** Function RFCOMM_CreateConnection
190**
191** Description RFCOMM_CreateConnection function is used from the application
192** to establish serial port connection to the peer device,
193** or allow RFCOMM to accept a connection from the peer
194** application.
195**
196** Parameters: scn - Service Channel Number as registered with
197** the SDP (server) or obtained using SDP from
198** the peer device (client).
199** is_server - TRUE if requesting application is a server
200** mtu - Maximum frame size the application can accept
201** bd_addr - BD_ADDR of the peer (client)
202** mask - specifies events to be enabled. A value
203** of zero disables all events.
204** p_handle - OUT pointer to the handle.
205** p_mgmt_cb - pointer to callback function to receive
206** connection up/down events.
207** Notes:
208**
209** Server can call this function with the same scn parameter multiple times if
210** it is ready to accept multiple simulteneous connections.
211**
212** DLCI for the connection is (scn * 2 + 1) if client originates connection on
213** existing none initiator multiplexer channel. Otherwise it is (scn * 2).
214** For the server DLCI can be changed later if client will be calling it using
215** (scn * 2 + 1) dlci.
216**
217*******************************************************************************/
218RFC_API extern int RFCOMM_CreateConnection (UINT16 uuid, UINT8 scn,
219 BOOLEAN is_server, UINT16 mtu,
220 BD_ADDR bd_addr, UINT16 *p_handle,
221 tPORT_CALLBACK *p_mgmt_cb);
222
223
224/*******************************************************************************
225**
226** Function RFCOMM_RemoveConnection
227**
228** Description This function is called to close the specified connection.
229**
230** Parameters: handle - Handle of the port returned in the Open
231**
232*******************************************************************************/
233RFC_API extern int RFCOMM_RemoveConnection (UINT16 handle);
234
235
236/*******************************************************************************
237**
238** Function RFCOMM_RemoveServer
239**
240** Description This function is called to close the server port.
241**
242** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
243**
244*******************************************************************************/
245RFC_API extern int RFCOMM_RemoveServer (UINT16 handle);
246
247
248/*******************************************************************************
249**
250** Function PORT_SetEventCallback
251**
252** Description Set event callback the specified connection.
253**
254** Parameters: handle - Handle of the port returned in the Open
255** p_callback - address of the callback function which should
256** be called from the RFCOMM when an event
257** specified in the mask occurs.
258**
259*******************************************************************************/
260RFC_API extern int PORT_SetEventCallback (UINT16 port_handle,
261 tPORT_CALLBACK *p_port_cb);
262
263
264/*******************************************************************************
265**
266** Function PORT_SetEventCallback
267**
268** Description Set event data callback the specified connection.
269**
270** Parameters: handle - Handle of the port returned in the Open
271** p_callback - address of the callback function which should
272** be called from the RFCOMM when a data
273** packet is received.
274**
275*******************************************************************************/
276RFC_API extern int PORT_SetDataCallback (UINT16 port_handle,
277 tPORT_DATA_CALLBACK *p_cb);
278
279RFC_API extern int PORT_SetDataCOCallback (UINT16 port_handle, tPORT_DATA_CO_CALLBACK *p_port_cb);
280/*******************************************************************************
281**
282** Function PORT_SetEventMask
283**
284** Description This function is called to close the specified connection.
285**
286** Parameters: handle - Handle of the port returned in the Open
287** mask - specifies events to be enabled. A value
288** of zero disables all events.
289**
290*******************************************************************************/
291RFC_API extern int PORT_SetEventMask (UINT16 port_handle, UINT32 mask);
292
293
294/*******************************************************************************
295**
296** Function PORT_CheckConnection
297**
298** Description This function returns PORT_SUCCESS if connection referenced
299** by handle is up and running
300**
301** Parameters: handle - Handle of the port returned in the Open
302** bd_addr - OUT bd_addr of the peer
303** p_lcid - OUT L2CAP's LCID
304**
305*******************************************************************************/
306RFC_API extern int PORT_CheckConnection (UINT16 handle, BD_ADDR bd_addr,
307 UINT16 *p_lcid);
308
309/*******************************************************************************
310**
311** Function PORT_IsOpening
312**
313** Description This function returns TRUE if there is any RFCOMM connection
314** opening in process.
315**
316** Parameters: TRUE if any connection opening is found
317** bd_addr - bd_addr of the peer
318**
319*******************************************************************************/
320RFC_API extern BOOLEAN PORT_IsOpening (BD_ADDR bd_addr);
321
322/*******************************************************************************
323**
324** Function PORT_SetState
325**
326** Description This function configures connection according to the
327** specifications in the tPORT_STATE structure.
328**
329** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
330** p_settings - Pointer to a tPORT_STATE structure containing
331** configuration information for the connection.
332**
333*******************************************************************************/
334RFC_API extern int PORT_SetState (UINT16 handle, tPORT_STATE *p_settings);
335
336/*******************************************************************************
337**
338** Function PORT_GetRxQueueCnt
339**
340** Description This function return number of buffers on the rx queue.
341**
342** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
343** p_rx_queue_count - Pointer to return queue count in.
344**
345*******************************************************************************/
346RFC_API extern int PORT_GetRxQueueCnt (UINT16 handle, UINT16 *p_rx_queue_count);
347
348/*******************************************************************************
349**
350** Function PORT_GetState
351**
352** Description This function is called to fill tPORT_STATE structure
353** with the current control settings for the port
354**
355** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
356** p_settings - Pointer to a tPORT_STATE structure in which
357** configuration information is returned.
358**
359*******************************************************************************/
360RFC_API extern int PORT_GetState (UINT16 handle, tPORT_STATE *p_settings);
361
362
363/*******************************************************************************
364**
365** Function PORT_Control
366**
367** Description This function directs a specified connection to pass control
368** control information to the peer device.
369**
370** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
371** signal - specify the function to be passed
372**
373*******************************************************************************/
374#define PORT_SET_DTRDSR 0x01
375#define PORT_CLR_DTRDSR 0x02
376#define PORT_SET_CTSRTS 0x03
377#define PORT_CLR_CTSRTS 0x04
378#define PORT_SET_RI 0x05 /* DCE only */
379#define PORT_CLR_RI 0x06 /* DCE only */
380#define PORT_SET_DCD 0x07 /* DCE only */
381#define PORT_CLR_DCD 0x08 /* DCE only */
382#define PORT_BREAK 0x09 /* Break event */
383
384RFC_API extern int PORT_Control (UINT16 handle, UINT8 signal);
385
386
387/*******************************************************************************
388**
389** Function PORT_FlowControl
390**
391** Description This function directs a specified connection to pass
392** flow control message to the peer device. Enable flag passed
393** shows if port can accept more data.
394**
395** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
396** enable - enables data flow
397**
398*******************************************************************************/
399RFC_API extern int PORT_FlowControl (UINT16 handle, BOOLEAN enable);
400
401
402/*******************************************************************************
403**
404** Function PORT_GetModemStatus
405**
406** Description This function retrieves modem control signals. Normally
407** application will call this function after a callback
408** function is called with notification that one of signals
409** has been changed.
410**
411** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
412** callback.
413** p_signal - specify the pointer to control signals info
414**
415*******************************************************************************/
416#define PORT_DTRDSR_ON 0x01
417#define PORT_CTSRTS_ON 0x02
418#define PORT_RING_ON 0x04
419#define PORT_DCD_ON 0x08
420
421/*
422** Define default initial local modem signals state set after connection established
423*/
424#define PORT_OBEX_DEFAULT_SIGNAL_STATE (PORT_DTRDSR_ON | PORT_CTSRTS_ON | PORT_DCD_ON)
425#define PORT_SPP_DEFAULT_SIGNAL_STATE (PORT_DTRDSR_ON | PORT_CTSRTS_ON | PORT_DCD_ON)
426#define PORT_PPP_DEFAULT_SIGNAL_STATE (PORT_DTRDSR_ON | PORT_CTSRTS_ON | PORT_DCD_ON)
427#define PORT_DUN_DEFAULT_SIGNAL_STATE (PORT_DTRDSR_ON | PORT_CTSRTS_ON)
428
429RFC_API extern int PORT_GetModemStatus (UINT16 handle, UINT8 *p_control_signal);
430
431
432/*******************************************************************************
433**
434** Function PORT_ClearError
435**
436** Description This function retreives information about a communications
437** error and reports current status of a connection. The
438** function should be called when an error occures to clear
439** the connection error flag and to enable additional read
440** and write operations.
441**
442** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
443** p_errors - pointer of the variable to receive error codes
444** p_status - pointer to the tPORT_STATUS structur to receive
445** connection status
446**
447*******************************************************************************/
448
449#define PORT_ERR_BREAK 0x01 /* Break condition occured on the peer device */
450#define PORT_ERR_OVERRUN 0x02 /* Overrun is reported by peer device */
451#define PORT_ERR_FRAME 0x04 /* Framing error reported by peer device */
452#define PORT_ERR_RXOVER 0x08 /* Input queue overflow occured */
453#define PORT_ERR_TXFULL 0x10 /* Output queue overflow occured */
454
455typedef struct
456{
457#define PORT_FLAG_CTS_HOLD 0x01 /* Tx is waiting for CTS signal */
458#define PORT_FLAG_DSR_HOLD 0x02 /* Tx is waiting for DSR signal */
459#define PORT_FLAG_RLSD_HOLD 0x04 /* Tx is waiting for RLSD signal */
460
461 UINT16 flags;
462 UINT16 in_queue_size; /* Number of bytes in the input queue */
463 UINT16 out_queue_size; /* Number of bytes in the output queue */
464 UINT16 mtu_size; /* peer MTU size */
466
467
468RFC_API extern int PORT_ClearError (UINT16 handle, UINT16 *p_errors,
469 tPORT_STATUS *p_status);
470
471
472/*******************************************************************************
473**
474** Function PORT_SendError
475**
476** Description This function send a communications error to the peer device
477**
478** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
479** errors - receive error codes
480**
481*******************************************************************************/
482RFC_API extern int PORT_SendError (UINT16 handle, UINT8 errors);
483
484
485/*******************************************************************************
486**
487** Function PORT_GetQueueStatus
488**
489** Description This function reports current status of a connection.
490**
491** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
492** p_status - pointer to the tPORT_STATUS structur to receive
493** connection status
494**
495*******************************************************************************/
496RFC_API extern int PORT_GetQueueStatus (UINT16 handle, tPORT_STATUS *p_status);
497
498
499/*******************************************************************************
500**
501** Function PORT_Purge
502**
503** Description This function discards all the data from the output or
504** input queues of the specified connection.
505**
506** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
507** purge_flags - specify the action to take.
508**
509*******************************************************************************/
510#define PORT_PURGE_TXCLEAR 0x01
511#define PORT_PURGE_RXCLEAR 0x02
512
513RFC_API extern int PORT_Purge (UINT16 handle, UINT8 purge_flags);
514
515
516/*******************************************************************************
517**
518** Function PORT_Read
519**
520** Description This function returns the pointer to the buffer received
521** from the peer device. Normally application will call this
522** function after receiving PORT_EVT_RXCHAR event.
523** Application calling this function is responsible to free
524** buffer returned.
525**
526** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
527** callback.
528** pp_buf - pointer to address of buffer with data,
529**
530*******************************************************************************/
531RFC_API extern int PORT_Read (UINT16 handle, BT_HDR **pp_buf);
532
533
534/*******************************************************************************
535**
536** Function PORT_ReadData
537**
538** Description Normally application will call this function after receiving
539** PORT_EVT_RXCHAR event.
540**
541** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
542** callback.
543** p_data - Data area
544** max_len - Byte count requested
545** p_len - Byte count received
546**
547*******************************************************************************/
548RFC_API extern int PORT_ReadData (UINT16 handle, char *p_data, UINT16 max_len,
549 UINT16 *p_len);
550
551
552/*******************************************************************************
553**
554** Function PORT_Write
555**
556** Description This function to send BT buffer to the peer device.
557** Application should not free the buffer.
558**
559** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
560** p_buf - pointer to the buffer with data,
561**
562*******************************************************************************/
563RFC_API extern int PORT_Write (UINT16 handle, BT_HDR *p_buf);
564
565
566/*******************************************************************************
567**
568** Function PORT_WriteData
569**
570** Description This function is called from the legacy application to
571** send data.
572**
573** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
574** p_data - Data area
575** max_len - Byte count to write
576** p_len - Bytes written
577**
578*******************************************************************************/
579RFC_API extern int PORT_WriteData (UINT16 handle, char *p_data, UINT16 max_len,
580 UINT16 *p_len);
581
582/*******************************************************************************
583**
584** Function PORT_WriteDataCO
585**
586** Description Normally not GKI aware application will call this function
587** to send data to the port by callout functions.
588**
589** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
590**
591*******************************************************************************/
592RFC_API extern int PORT_WriteDataCO (UINT16 handle, int* p_len);
593
594/*******************************************************************************
595**
596** Function PORT_Test
597**
598** Description Application can call this function to send RFCOMM Test frame
599**
600** Parameters: handle - Handle returned in the RFCOMM_CreateConnection
601** p_data - Data area
602** max_len - Byte count requested
603**
604*******************************************************************************/
605RFC_API extern int PORT_Test (UINT16 handle, UINT8 *p_data, UINT16 len);
606
607
608/*******************************************************************************
609**
610** Function RFCOMM_Init
611**
612** Description This function is called to initialize RFCOMM layer
613**
614*******************************************************************************/
615RFC_API extern void RFCOMM_Init (void);
616
617
618/*******************************************************************************
619**
620** Function PORT_SetTraceLevel
621**
622** Description This function sets the trace level for RFCOMM. If called with
623** a value of 0xFF, it simply reads the current trace level.
624**
625** Returns the new (current) trace level
626**
627*******************************************************************************/
628RFC_API extern UINT8 PORT_SetTraceLevel (UINT8 new_level);
629
630
631#ifdef __cplusplus
632}
633#endif
634
635#endif /* PORT_API_H */