The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
Parent:
171:3a7713b1edbc
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 171:3a7713b1edbc 1 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 2 /*!
AnnaBridge 171:3a7713b1edbc 3 * \file hci_core.h
AnnaBridge 171:3a7713b1edbc 4 *
AnnaBridge 171:3a7713b1edbc 5 * \brief HCI core interfaces.
AnnaBridge 171:3a7713b1edbc 6 *
AnnaBridge 171:3a7713b1edbc 7 * $Date: 2016-03-29 11:20:44 -0700 (Tue, 29 Mar 2016) $
AnnaBridge 171:3a7713b1edbc 8 * $Revision: 6512 $
AnnaBridge 171:3a7713b1edbc 9 *
AnnaBridge 171:3a7713b1edbc 10 * Copyright (c) 2009 Wicentric, Inc., all rights reserved.
AnnaBridge 171:3a7713b1edbc 11 * Wicentric confidential and proprietary.
AnnaBridge 171:3a7713b1edbc 12 *
AnnaBridge 171:3a7713b1edbc 13 * IMPORTANT. Your use of this file is governed by a Software License Agreement
AnnaBridge 171:3a7713b1edbc 14 * ("Agreement") that must be accepted in order to download or otherwise receive a
AnnaBridge 171:3a7713b1edbc 15 * copy of this file. You may not use or copy this file for any purpose other than
AnnaBridge 171:3a7713b1edbc 16 * as described in the Agreement. If you do not agree to all of the terms of the
AnnaBridge 171:3a7713b1edbc 17 * Agreement do not use this file and delete all copies in your possession or control;
AnnaBridge 171:3a7713b1edbc 18 * if you do not have a copy of the Agreement, you must contact Wicentric, Inc. prior
AnnaBridge 171:3a7713b1edbc 19 * to any use, copying or further distribution of this software.
AnnaBridge 171:3a7713b1edbc 20 */
AnnaBridge 171:3a7713b1edbc 21 /*************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 22 #ifndef HCI_CORE_H
AnnaBridge 171:3a7713b1edbc 23 #define HCI_CORE_H
AnnaBridge 171:3a7713b1edbc 24
AnnaBridge 171:3a7713b1edbc 25 #include "hci_core_ps.h"
AnnaBridge 171:3a7713b1edbc 26 #include "wsf_queue.h"
AnnaBridge 171:3a7713b1edbc 27 #include "wsf_os.h"
AnnaBridge 171:3a7713b1edbc 28 #include "hci_api.h"
AnnaBridge 171:3a7713b1edbc 29 #include "cfg_stack.h"
AnnaBridge 171:3a7713b1edbc 30
AnnaBridge 171:3a7713b1edbc 31 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 32 extern "C" {
AnnaBridge 171:3a7713b1edbc 33 #endif
AnnaBridge 171:3a7713b1edbc 34
AnnaBridge 171:3a7713b1edbc 35 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 36 Data Types
AnnaBridge 171:3a7713b1edbc 37 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 38
AnnaBridge 171:3a7713b1edbc 39 /* Per-connection structure for ACL packet accounting */
AnnaBridge 171:3a7713b1edbc 40 typedef struct
AnnaBridge 171:3a7713b1edbc 41 {
AnnaBridge 171:3a7713b1edbc 42 uint8_t *pTxAclPkt; /* Fragmenting TX ACL packet pointer */
AnnaBridge 171:3a7713b1edbc 43 uint8_t *pNextTxFrag; /* Next TX ACL packet fragment */
AnnaBridge 171:3a7713b1edbc 44 uint8_t *pRxAclPkt; /* RX ACL packet pointer */
AnnaBridge 171:3a7713b1edbc 45 uint8_t *pNextRxFrag; /* Next RX ACL packet fragment */
AnnaBridge 171:3a7713b1edbc 46 uint16_t handle; /* Connection handle */
AnnaBridge 171:3a7713b1edbc 47 uint16_t txAclRemLen; /* Fragmenting TX ACL packet remaining length */
AnnaBridge 171:3a7713b1edbc 48 uint16_t rxAclRemLen; /* Fragmented RX ACL packet remaining length */
AnnaBridge 171:3a7713b1edbc 49 bool_t fragmenting; /* TRUE if fragmenting a TX ACL packet */
AnnaBridge 171:3a7713b1edbc 50 bool_t flowDisabled; /* TRUE if data flow disabled */
AnnaBridge 171:3a7713b1edbc 51 uint8_t queuedBufs; /* Queued ACL buffers on this connection */
AnnaBridge 171:3a7713b1edbc 52 uint8_t outBufs; /* Outstanding ACL buffers sent to controller */
AnnaBridge 171:3a7713b1edbc 53 } hciCoreConn_t;
AnnaBridge 171:3a7713b1edbc 54
AnnaBridge 171:3a7713b1edbc 55 /* Main control block for dual-chip implementation */
AnnaBridge 171:3a7713b1edbc 56 typedef struct
AnnaBridge 171:3a7713b1edbc 57 {
AnnaBridge 171:3a7713b1edbc 58 hciCoreConn_t conn[DM_CONN_MAX]; /* Connection structures */
AnnaBridge 171:3a7713b1edbc 59 uint8_t leStates[HCI_LE_STATES_LEN]; /* Controller LE supported states */
AnnaBridge 171:3a7713b1edbc 60 bdAddr_t bdAddr; /* Bluetooth device address */
AnnaBridge 171:3a7713b1edbc 61 wsfQueue_t aclQueue; /* HCI ACL TX queue */
AnnaBridge 171:3a7713b1edbc 62 hciCoreConn_t *pConnRx; /* Connection struct for current transport RX packet */
AnnaBridge 171:3a7713b1edbc 63 uint16_t maxRxAclLen; /* Maximum reassembled RX ACL packet length */
AnnaBridge 171:3a7713b1edbc 64 uint16_t bufSize; /* Controller ACL data buffer size */
AnnaBridge 171:3a7713b1edbc 65 uint8_t aclQueueHi; /* Disable flow when this many ACL buffers queued */
AnnaBridge 171:3a7713b1edbc 66 uint8_t aclQueueLo; /* Enable flow when this many ACL buffers queued */
AnnaBridge 171:3a7713b1edbc 67 uint8_t availBufs; /* Current avail ACL data buffers */
AnnaBridge 171:3a7713b1edbc 68 uint8_t numBufs; /* Controller number of ACL data buffers */
AnnaBridge 171:3a7713b1edbc 69 uint8_t whiteListSize; /* Controller white list size */
AnnaBridge 171:3a7713b1edbc 70 uint8_t numCmdPkts; /* Controller command packed count */
AnnaBridge 171:3a7713b1edbc 71 uint8_t leSupFeat; /* Controller LE supported features */
AnnaBridge 171:3a7713b1edbc 72 int8_t advTxPwr; /* Controller advertising TX power */
AnnaBridge 171:3a7713b1edbc 73 uint8_t resListSize; /* Controller resolving list size */
AnnaBridge 171:3a7713b1edbc 74 } hciCoreCb_t;
AnnaBridge 171:3a7713b1edbc 75
AnnaBridge 171:3a7713b1edbc 76 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 77 Global Variables
AnnaBridge 171:3a7713b1edbc 78 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 79
AnnaBridge 171:3a7713b1edbc 80 /* Control block */
AnnaBridge 171:3a7713b1edbc 81 extern hciCoreCb_t hciCoreCb;
AnnaBridge 171:3a7713b1edbc 82
AnnaBridge 171:3a7713b1edbc 83 /* LE event mask */
AnnaBridge 171:3a7713b1edbc 84 extern const uint8_t hciLeEventMask[HCI_LE_EVT_MASK_LEN];
AnnaBridge 171:3a7713b1edbc 85
AnnaBridge 171:3a7713b1edbc 86 /* Event mask page 2 */
AnnaBridge 171:3a7713b1edbc 87 extern const uint8_t hciEventMaskPage2[HCI_EVT_MASK_LEN];
AnnaBridge 171:3a7713b1edbc 88
AnnaBridge 171:3a7713b1edbc 89 /* LE supported features configuration mask */
AnnaBridge 171:3a7713b1edbc 90 extern uint8_t hciLeSupFeatCfg;
AnnaBridge 171:3a7713b1edbc 91
AnnaBridge 171:3a7713b1edbc 92 /**************************************************************************************************
AnnaBridge 171:3a7713b1edbc 93 Function Declarations
AnnaBridge 171:3a7713b1edbc 94 **************************************************************************************************/
AnnaBridge 171:3a7713b1edbc 95
AnnaBridge 171:3a7713b1edbc 96 void hciCoreInit(void);
AnnaBridge 171:3a7713b1edbc 97 void hciCoreResetStart(void);
AnnaBridge 171:3a7713b1edbc 98 void hciCoreConnOpen(uint16_t handle);
AnnaBridge 171:3a7713b1edbc 99 void hciCoreConnClose(uint16_t handle);
AnnaBridge 171:3a7713b1edbc 100 hciCoreConn_t *hciCoreConnByHandle(uint16_t handle);
AnnaBridge 171:3a7713b1edbc 101 void hciCoreSendAclData(hciCoreConn_t *pConn, uint8_t *pData);
AnnaBridge 171:3a7713b1edbc 102 void hciCoreTxReady(uint8_t bufs);
AnnaBridge 171:3a7713b1edbc 103 void hciCoreTxAclStart(hciCoreConn_t *pConn, uint16_t len, uint8_t *pData);
AnnaBridge 171:3a7713b1edbc 104 bool_t hciCoreTxAclContinue(hciCoreConn_t *pConn);
AnnaBridge 171:3a7713b1edbc 105 void hciCoreTxAclComplete(hciCoreConn_t *pConn, uint8_t *pData);
AnnaBridge 171:3a7713b1edbc 106 uint8_t *hciCoreAclReassembly(uint8_t *pData);
AnnaBridge 171:3a7713b1edbc 107
AnnaBridge 171:3a7713b1edbc 108 #ifdef __cplusplus
AnnaBridge 171:3a7713b1edbc 109 };
AnnaBridge 171:3a7713b1edbc 110 #endif
AnnaBridge 171:3a7713b1edbc 111
AnnaBridge 171:3a7713b1edbc 112 #endif /* HCI_CORE_H */