Mistake on this page?
Report an issue in GitHub or email us
lctr_int_bis_slave.h
Go to the documentation of this file.
1 /*************************************************************************************************/
2 /*!
3  * \file
4  *
5  * \brief Internal link layer controller isochronous slave interface file.
6  *
7  * Copyright (c) 2019 Arm Ltd. All Rights Reserved.
8  *
9  * Copyright (c) 2019-2020 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_BIS_SLAVE_H
26 #define LCTR_INT_BIS_SLAVE_H
27 
28 #include "lctr_api_bis_slave.h"
29 #include "lctr_int_bis.h"
30 
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34 
35 /**************************************************************************************************
36  Macros
37 **************************************************************************************************/
38 
39 /*! \brief Get reservation manager handle from BIG context. */
40 #define LCTR_BIG_TO_RM_HANDLE(pBigCtx) (LL_MAX_CONN + LL_MAX_ADV_SETS + LL_MAX_CIG + (pBigCtx - &pLctrBigTbl[0]))
41 
42 /*! \brief Get BIG context from reservation manager handle. */
43 #define LCTR_RM_HANDLE_TO_BIG(rmHandle) (&pLctrBigTbl[(rmHandle) - LL_MAX_CONN - LL_MAX_ADV_SETS - LL_MAX_CIG])
44 
45 /**************************************************************************************************
46  Constants
47 **************************************************************************************************/
48 
49 /*! \brief Slave BIS broadcasting states. */
50 enum
51 {
52  LCTR_SLV_BIG_STATE_DISABLED, /*!< BIS slave broadcasting disabled state. */
53  LCTR_SLV_BIG_STATE_ENABLED, /*!< BIS slave broadcasting enabled state. */
54  LCTR_SLV_BIG_STATE_SHUTDOWN, /*!< BIS slave broadcasting shutdown in progress. */
55  LCTR_SLV_BIG_STATE_RESET, /*!< BIS slave broadcasting reset in progress. */
56  LCTR_SLV_BIG_STATE_TOTAL /*!< Total number of extended advertising states. */
57 };
58 
59 /**************************************************************************************************
60  Function Declarations
61 **************************************************************************************************/
62 
63 /* Host events */
64 void lctrNotifyHostCreateBigComplete(lctrBigCtx_t *pBigCtx, uint8_t status);
65 void lctrNotifyHostTerminateBigComplete(lctrBigCtx_t *pBigCtx);
66 
67 /* State machine for BIS slave */
68 void lctrSlvBigSendMsg(lctrBigCtx_t *pBigCtx, uint8_t event);
69 void lctrSlvBigSendAcadMsg(lctrBigCtx_t *pBigCtx, uint8_t event);
70 void lctrSlvBigExecuteSm(lctrBigCtx_t *pBigCtx, uint8_t event);
71 
72 /* Action routines */
73 void lctrSlvBigActStart(lctrBigCtx_t *pBigCtx);
74 void lctrSlvBigActSendChMapUpd(lctrBigCtx_t *pBigCtx);
75 void lctrSlvBigActSendTerm(lctrBigCtx_t *pBigCtx);
76 void lctrSlvBigActShutdown(lctrBigCtx_t *pBigCtx);
77 void lctrSlvBigActCleanup(lctrBigCtx_t *pBigCtx);
78 
79 /* Builder */
80 uint8_t lctrSlvBigBuildOp(lctrBigCtx_t *pBigCtx);
81 
82 /* ISR: Packet handlers */
83 void lctrSlvBisTxCompletionSequential(BbOpDesc_t *pOp, uint8_t status);
84 void lctrSlvBisTxCompletionInterleaved(BbOpDesc_t *pOp, uint8_t status);
85 
86 /* ISR: BOD handlers */
87 void lctrSlvBigBeginOp(BbOpDesc_t *pOp);
88 void lctrSlvBigEndOp(BbOpDesc_t *pOp);
89 void lctrSlvBigAbortOp(BbOpDesc_t *pOp);
90 
91 #ifdef __cplusplus
92 };
93 #endif
94 
95 #endif /* LCTR_INT_BIS_SLAVE_H */
Link layer controller BIS slave interface file.
Broadcast Isochronous Group (BIG) context.
Definition: lctr_int_bis.h:116
Baseband operation descriptor (BOD).
Definition: bb_api.h:149
Internal link layer controller connected isochronous 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.