198 lines
5.3 KiB
C
198 lines
5.3 KiB
C
/***************************************************************************
|
|
*
|
|
* Copyright 2015-2019 BES.
|
|
* All rights reserved. All unpublished rights reserved.
|
|
*
|
|
* No part of this work may be used or reproduced in any form or by any
|
|
* means, or stored in a database or retrieval system, without prior written
|
|
* permission of BES.
|
|
*
|
|
* Use of this work is governed by a license granted by BES.
|
|
* This work contains confidential and proprietary information of
|
|
* BES. which is protected by copyright, trade secret,
|
|
* trademark and other intellectual property rights.
|
|
*
|
|
****************************************************************************/
|
|
|
|
#ifndef __BESAUD_H__
|
|
#define __BESAUD_H__
|
|
|
|
#include "bluetooth.h"
|
|
#include "bt_co_list.h"
|
|
#include "btm.h"
|
|
#include "btlib_type.h"
|
|
|
|
#define BESAUD_PACKET_COUNT (5)
|
|
|
|
typedef struct _BesaudCallbackParms BesaudCallbackParms;
|
|
typedef struct _BesaudChannel BesaudChannel;
|
|
|
|
typedef struct _BesaudConn BesaudConn;
|
|
typedef struct _BesaudConnCallbackParms BesaudConnCallbackParms;
|
|
|
|
typedef void (*BesaudConnCallback)(BesaudConn *Conn, BesaudConnCallbackParms *Parms);
|
|
|
|
/* Connection State */
|
|
struct _BesaudConn {
|
|
uint32 l2cap_handle;
|
|
uint8 state;
|
|
BesaudConnCallback callback;
|
|
};
|
|
|
|
struct _BesaudConnCallbackParms {
|
|
uint8 event;
|
|
int8 status;
|
|
uint16 dataLen;
|
|
union {
|
|
struct btm_conn_item_t *remDev;
|
|
uint8 *data;
|
|
} ptrs;
|
|
};
|
|
|
|
int8 BesaudDisconnect(struct btm_conn_item_t *RemDev);
|
|
BOOL BesaudIsConnected(BesaudConn *Conn);
|
|
int8 BesaudConnect(BesaudChannel *chnl, struct btm_conn_item_t *RemDev);
|
|
|
|
typedef uint16 BesaudEvent;
|
|
|
|
typedef struct
|
|
{
|
|
struct list_node node;
|
|
uint8* pBuf;
|
|
uint16 pDataLength;
|
|
} BesaudPacket;
|
|
|
|
struct _BesaudCallbackParms{
|
|
BesaudEvent event;
|
|
|
|
int8 status;
|
|
int8 errCode;
|
|
BesaudChannel *chnl;
|
|
union{
|
|
struct btm_conn_item_t *remDev;
|
|
BesaudPacket Packet;
|
|
}p;
|
|
};
|
|
|
|
/*--------------------------------------------------------------------------
|
|
* BESAUDChannelStates type
|
|
*
|
|
* This type enumerates the possible BESAUD channel connection
|
|
* states.
|
|
*/
|
|
typedef uint8 BesaudChannelStates;
|
|
|
|
/* End of HfChannelStates */
|
|
|
|
typedef void (*BesaudCallback)(BesaudChannel *Chan, BesaudCallbackParms *Info);
|
|
|
|
|
|
struct _BesaudChannel{
|
|
struct list_node node;
|
|
struct btm_conn_item_t *remDev;
|
|
BesaudCallback callback; /* Application callback*/
|
|
BesaudConn besaudc_conn;
|
|
BesaudChannelStates state; /* Current connection state */
|
|
uint16 flags; /* Current connection flags */
|
|
struct list_node freeTxPacketList;
|
|
struct list_node pendingTxPacketList;
|
|
uint8 initiator;
|
|
uint8 tx_state;
|
|
BesaudPacket *curr_tx_packet;
|
|
};
|
|
|
|
#ifndef BESAUDC_MAX_MTU
|
|
#define BESAUDC_MAX_MTU L2CAP_MTU
|
|
#endif
|
|
|
|
|
|
#ifndef BESAUDI_MAX_MTU
|
|
#define BESAUDI_MAX_MTU L2CAP_MTU
|
|
#endif
|
|
|
|
|
|
////besaud channel state
|
|
#define BESAUD_STATE_DISCONNECTED 0
|
|
#define BESAUD_STATE_CONN_PENDING 1
|
|
#define BESAUD_STATE_CONN_INCOMING 2
|
|
#define BESAUD_STATE_DISC_PENDING 3
|
|
#define BESAUD_STATE_DISC_INCOMING 4
|
|
#define BESAUD_STATE_CONNECTED 5
|
|
|
|
////channel tx state
|
|
#define BESAUD_TX_STATE_IDLE 0
|
|
#define BESAUD_TX_STATE_IN_TX 1
|
|
|
|
#define BESAUD_REPORT_TYPE_INPUT 1
|
|
#define BESAUD_REPORT_TYPE_OUTPUT 2
|
|
#define BESAUD_REPORT_TYPE_FEATURE 3
|
|
|
|
|
|
|
|
#define BESAUD_TRANS_TYPE_HANDSHAKE 0
|
|
#define BESAUD_TRANS_TYPE_CONTROL 1
|
|
#define BESAUD_TRANS_TYPE_GET_REPORT 4
|
|
#define BESAUD_TRANS_TYPE_SET_REPORT 5
|
|
#define BESAUD_TRANS_TYPE_GET_PROTOCAL 6
|
|
#define BESAUD_TRANS_TYPE_SET_PROTOCAL 7
|
|
#define BESAUD_TRANS_TYPE_GET_IDLE 8
|
|
#define BESAUD_TRANS_TYPE_SET_IDLE 9
|
|
#define BESAUD_TRANS_TYPE_DATA 10
|
|
#define BESAUD_TRANS_TYPE_DATAC 11
|
|
|
|
|
|
#define BESAUD_HANDSHAKE_SUCCESS 0
|
|
#define BESAUD_HANDSHAKE_NOT_READY 1
|
|
#define BESAUD_HANDSHAKE_INVALID_REPORTID 2
|
|
#define BESAUD_HANDSHAKE_UNSUPPORT_REQUEST 3
|
|
#define BESAUD_HANDSHAKE_INVALID_PARAM 4
|
|
#define BESAUD_HANDSHAKE_ERROR_UNKNOWN 0xe
|
|
#define BESAUD_HANDSHAKE_ERROR_FATAL 0xF
|
|
|
|
|
|
#define BESAUD_CONTROL_NOP 0
|
|
#define BESAUD_CONTROL_HARD_RESET 1
|
|
#define BESAUD_CONTROL_SOFT_RESET 2
|
|
#define BESAUD_CONTROL_SUSPEND 3
|
|
#define BESAUD_CONTROL_EXIT_SUSPEND 4
|
|
#define BESAUD_CONTROL_VIRTUAL_CABLE_UNPLUG 5
|
|
|
|
#define BESAUD_CHANNEL_TYPE_INTERRUPT 0
|
|
#define BESAUD_CHANNEL_TYPE_CONTROL 1
|
|
|
|
|
|
|
|
#define BESAUD_DATA_TXSTATE_IDLE 0
|
|
#define BESAUD_DATA_TXSTATE_SEND 1
|
|
|
|
|
|
|
|
#define BESAUD_EVENT_CONTROL_CONNECTED 0x21
|
|
|
|
#define BESAUD_EVENT_CONTROL_DISCONNECTED 0x22
|
|
|
|
#define BESAUD_EVENT_CONTROL_DATA_IND 0x23
|
|
|
|
#define BESAUD_EVENT_CONTROL_DATA_SENT 0x24
|
|
|
|
|
|
#define BESAUD_EVENT_CONTROL_SET_IDLE 0x30
|
|
|
|
#if defined(__cplusplus)
|
|
extern "C" {
|
|
#endif
|
|
|
|
int8 BESAUD_Init(void);
|
|
int8 Besaud_Register(BesaudChannel *chnl,
|
|
BesaudCallback callback
|
|
);
|
|
int8 Besaud_Connect(BesaudChannel *chnl, struct btm_conn_item_t *RemDev);
|
|
int8 Besaud_Disconnect(BesaudChannel *chnl);
|
|
int8 Besaud_Send_packet(BesaudChannel *chnl, char *buffer, uint16 nBytes);
|
|
int8 Besaud_Send_cmd_packet(BesaudChannel *chnl, char *buffer, uint16 nBytes);
|
|
|
|
#if defined(__cplusplus)
|
|
}
|
|
#endif
|
|
|
|
#endif /* __BESAUD_H__ */ |