Mistake on this page?
Report an issue in GitHub or email us
lctr_int_cis_slave.h
Go to the documentation of this file.
1 /*************************************************************************************************/
2 /*!
3  * \file
4  *
5  * \brief Internal link layer controller connected isochronous stream slave interface file.
6  *
7  * Copyright (c) 2013-2018 Arm Ltd. All Rights Reserved.
8  *
9  * Copyright (c) 2019 Packetcraft, Inc.
10  *
11  * Licensed under the Apache License, Version 2.0 (the "License");
12  * you may not use this file except in compliance with the License.
13  * You may obtain a copy of the License at
14  *
15  * http://www.apache.org/licenses/LICENSE-2.0
16  *
17  * Unless required by applicable law or agreed to in writing, software
18  * distributed under the License is distributed on an "AS IS" BASIS,
19  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
20  * See the License for the specific language governing permissions and
21  * limitations under the License.
22  */
23 /*************************************************************************************************/
24 
25 #ifndef LCTR_INT_CIS_SLAVE_H
26 #define LCTR_INT_CIS_SLAVE_H
27 
28 #include "lctr_int.h"
29 #include "lctr_api_cis.h"
30 #include "lctr_int_conn.h"
31 #include "lctr_int_cis.h"
32 #include "lctr_api_cis_slave.h"
33 #include "lmgr_api_cis_slave.h"
34 #include "bb_ble_api.h"
35 #include "bb_ble_api_op.h"
36 #include "wsf_timer.h"
37 
38 #ifdef __cplusplus
39 extern "C" {
40 #endif
41 
42 /**************************************************************************************************
43  Macros
44 **************************************************************************************************/
45 
46 /**************************************************************************************************
47  Constants
48 **************************************************************************************************/
49 /*! \brief CIS slave establishment states. */
50 enum
51 {
52  LCTR_CIS_SLV_EST_STATE_IDLE, /*!< Idle state. */
53  LCTR_CIS_SLV_EST_STATE_HOST_REPLY, /*!< Wait for host reply state. */
54  LCTR_CIS_SLV_EST_STATE_CIS_IND, /*!< Wait for LL_CIS_IND state. */
55  LCTR_CIS_SLV_EST_STATE_TOTAL /*!< Total CIS slave establishment states. */
56 };
57 
58 /**************************************************************************************************
59  Data Types
60 **************************************************************************************************/
61 
62 /**************************************************************************************************
63  Globals
64 **************************************************************************************************/
65 
66 /**************************************************************************************************
67  Function Declarations
68 **************************************************************************************************/
69 /* State machine for CIS LLCP */
70 bool_t lctrSlvLlcpExecuteCisEstSm(lctrConnCtx_t *pCtx, uint8_t event);
71 
72 /* Builder */
73 void lctrSlvCisBuildCigOp(lctrCigCtx_t *pCigCtx);
74 void lctrSlvCisCigOpCommit(lctrCigCtx_t *pCigCtx, lctrConnCtx_t *pCtx, lctrCisCtx_t *pCisCtx);
75 void lctrSlvCisBuildCisData(lctrCisCtx_t *pCisCtx);
76 
77 /* ISR: Packet handlers */
78 void lctrSlvCisCigTxCompletion(BbOpDesc_t *pOp, uint8_t status);
79 void lctrSlvCisCigRxCompletion(BbOpDesc_t *pOp, uint8_t *pRxBuf, uint8_t status);
80 
81 /* ISR: BOD handlers */
82 void lctrSlvCisCigBeginOp(BbOpDesc_t *pOp);
83 void lctrSlvCisCigContOp(BbOpDesc_t *pOp);
84 void lctrSlvCisCigPostSubEvt(BbOpDesc_t *pOp, uint8_t status);
85 uint32_t lctrSlvCisCheckContOp(BbOpDesc_t *pOp, bool_t *pNewCisCtx);
86 void lctrSlvCisCigEndOp(BbOpDesc_t *pOp);
87 void lctrSlvCisCigCleanupOp(BbOpDesc_t *pOp);
88 void lctrSlvCisCigAbortOp(BbOpDesc_t *pOp);
89 
90 /* Action routines for CIS slave LLCP state machine */
91 void lctrSlvCisLlcpActPeerCisReq(lctrConnCtx_t *pCtx, lctrCisCtx_t *pCisCtx);
92 void lctrSlvCisLlcpActRejCisReq(lctrConnCtx_t *pCtx, lctrCisCtx_t *pCisCtx);
93 void lctrSlvCisLlcpActAcpCisReq(lctrConnCtx_t *pCtx, lctrCisCtx_t *pCisCtx);
94 void lctrSlvCisLlcpActPeerCisInd(lctrConnCtx_t *pCtx, lctrCisCtx_t *pCisCtx);
95 void lctrSlvCisLlcpActPeerCisRej(lctrConnCtx_t *pCtx, lctrCisCtx_t *pCisCtx);
96 void lctrSlvCisLlcpActIntPeerCisReq(lctrConnCtx_t *pCtx, lctrCisCtx_t *pCisCtx);
97 
98 /* Reservation */
99 
100 /* Helper */
101 void lctrCisStorePeerCisReq(lctrConnCtx_t *pCtx, lctrCisCtx_t *pCisCtx);
102 
103 #ifdef __cplusplus
104 };
105 #endif
106 
107 #endif /* LCTR_INT_CIS_SLAVE_H */
Link layer controller CIS slave interface file.
Internal link layer controller connected isochronous stream interface file.
Connection context.
BLE baseband interface file.
Link layer manager connected isochronous stream slave interface file.
Connected isochronous stream context.
Definition: lctr_int_cis.h:147
Link layer controller CIS slave interface file.
Internal link layer controller connection interface file.
Baseband operation descriptor (BOD).
Definition: bb_api.h:149
Connected isochronous group context.
Definition: lctr_int_cis.h:314
Timer service.
BLE baseband interface file.
Internal link layer controller interface file.
Important Information for this Arm website

This site uses cookies to store information on your computer. By continuing to use our site, you consent to our cookies. If you are not happy with the use of these cookies, please review our Cookie Policy to learn how they can be disabled. By disabling cookies, some features of the site will not work.