/* * Name: uamp_api.h * * Description: Universal AMP API * * Portions of this code are copyright (c) 2017 Cypress Semiconductor Corporation * * Copyright (C) 1999-2017, Broadcom Corporation * * Unless you and Broadcom execute a separate written software license * agreement governing use of this software, this software is licensed to you * under the terms of the GNU General Public License version 2 (the "GPL"), * available at http://www.broadcom.com/licenses/GPLv2.php, with the * following added to such license: * * As a special exception, the copyright holders of this software give you * permission to link this software with independent modules, and to copy and * distribute the resulting executable under terms of your choice, provided that * you also meet, for each linked independent module, the terms and conditions of * the license of that module. An independent module is a module which is not * derived from this software. The special exception does not apply to any * modifications of the software. * * Notwithstanding the above, under no circumstances may you combine this * software in any way with any other Broadcom software provided under a license * other than the GPL, without Broadcom's express prior written consent. * * * <> * * $Id: uamp_api.h 514727 2014-11-12 03:02:48Z $ * */ #ifndef UAMP_API_H #define UAMP_API_H #include "typedefs.h" /***************************************************************************** ** Constant and Type Definitions ****************************************************************************** */ #define BT_API /* Types. */ typedef bool BOOLEAN; typedef uint8 UINT8; typedef uint16 UINT16; /* UAMP identifiers */ #define UAMP_ID_1 1 #define UAMP_ID_2 2 typedef UINT8 tUAMP_ID; /* UAMP event ids (used by UAMP_CBACK) */ #define UAMP_EVT_RX_READY 0 /* Data from AMP controller is ready to be read */ #define UAMP_EVT_CTLR_REMOVED 1 /* Controller removed */ #define UAMP_EVT_CTLR_READY 2 /* Controller added/ready */ typedef UINT8 tUAMP_EVT; /* UAMP Channels */ #define UAMP_CH_HCI_CMD 0 /* HCI Command channel */ #define UAMP_CH_HCI_EVT 1 /* HCI Event channel */ #define UAMP_CH_HCI_DATA 2 /* HCI ACL Data channel */ typedef UINT8 tUAMP_CH; /* tUAMP_EVT_DATA: union for event-specific data, used by UAMP_CBACK */ typedef union { tUAMP_CH channel; /* UAMP_EVT_RX_READY: channel for which rx occured */ } tUAMP_EVT_DATA; /***************************************************************************** ** ** Function: UAMP_CBACK ** ** Description: Callback for events. Register callback using UAMP_Init. ** ** Parameters amp_id: AMP device identifier that generated the event ** amp_evt: event id ** p_amp_evt_data: pointer to event-specific data ** ****************************************************************************** */ typedef void (*tUAMP_CBACK)(tUAMP_ID amp_id, tUAMP_EVT amp_evt, tUAMP_EVT_DATA *p_amp_evt_data); /***************************************************************************** ** external function declarations ****************************************************************************** */ #ifdef __cplusplus extern "C" { #endif /***************************************************************************** ** ** Function: UAMP_Init ** ** Description: Initialize UAMP driver ** ** Parameters p_cback: Callback function for UAMP event notification ** ****************************************************************************** */ BT_API BOOLEAN UAMP_Init(tUAMP_CBACK p_cback); /***************************************************************************** ** ** Function: UAMP_Open ** ** Description: Open connection to local AMP device. ** ** Parameters app_id: Application specific AMP identifer. This value ** will be included in AMP messages sent to the ** BTU task, to identify source of the message ** ****************************************************************************** */ BT_API BOOLEAN UAMP_Open(tUAMP_ID amp_id); /***************************************************************************** ** ** Function: UAMP_Close ** ** Description: Close connection to local AMP device. ** ** Parameters app_id: Application specific AMP identifer. ** ****************************************************************************** */ BT_API void UAMP_Close(tUAMP_ID amp_id); /***************************************************************************** ** ** Function: UAMP_Write ** ** Description: Send buffer to AMP device. Frees GKI buffer when done. ** ** ** Parameters: app_id: AMP identifer. ** p_buf: pointer to buffer to write ** num_bytes: number of bytes to write ** channel: UAMP_CH_HCI_ACL, or UAMP_CH_HCI_CMD ** ** Returns: number of bytes written ** ****************************************************************************** */ BT_API UINT16 UAMP_Write(tUAMP_ID amp_id, UINT8 *p_buf, UINT16 num_bytes, tUAMP_CH channel); /***************************************************************************** ** ** Function: UAMP_Read ** ** Description: Read incoming data from AMP. Call after receiving a ** UAMP_EVT_RX_READY callback event. ** ** Parameters: app_id: AMP identifer. ** p_buf: pointer to buffer for holding incoming AMP data ** buf_size: size of p_buf ** channel: UAMP_CH_HCI_ACL, or UAMP_CH_HCI_EVT ** ** Returns: number of bytes read ** ****************************************************************************** */ BT_API UINT16 UAMP_Read(tUAMP_ID amp_id, UINT8 *p_buf, UINT16 buf_size, tUAMP_CH channel); #ifdef __cplusplus } #endif #endif /* UAMP_API_H */