Mistake on this page?
Report an issue in GitHub or email us
lctr_int_bis_master.h
Go to the documentation of this file.
1 /*************************************************************************************************/
2 /*!
3  * \file
4  *
5  * \brief Internal link layer controller isochronous master interface file.
6  *
7  * Copyright (c) 2019 Packetcraft, Inc.
8  *
9  * Licensed under the Apache License, Version 2.0 (the "License");
10  * you may not use this file except in compliance with the License.
11  * You may obtain a copy of the License at
12  *
13  * http://www.apache.org/licenses/LICENSE-2.0
14  *
15  * Unless required by applicable law or agreed to in writing, software
16  * distributed under the License is distributed on an "AS IS" BASIS,
17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18  * See the License for the specific language governing permissions and
19  * limitations under the License.
20  */
21 /*************************************************************************************************/
22 
23 #ifndef LCTR_INT_BIS_MASTER_H
24 #define LCTR_INT_BIS_MASTER_H
25 
26 #include "lctr_api_bis_master.h"
27 #include "lctr_int_bis.h"
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 /**************************************************************************************************
34  Macros
35 **************************************************************************************************/
36 
37 /*! \brief Get reservation manager handle for BIG from the context pointer. */
38 #define LCTR_GET_BIG_RM_HANDLE(pBigCtx) (LL_MAX_CONN + LL_MAX_ADV_SETS + LL_MAX_BIG + (pBigCtx - &pLctrBigTbl[0]))
39 
40 /*! \brief Resolve BIG context pointer from the reservation manager handle. */
41 #define LCTR_GET_BIG_RM_CTX(rmHandle) &(pLctrBigTbl[rmHandle - (LL_MAX_CONN + LL_MAX_ADV_SETS + LL_MAX_BIG)])
42 
43 /**************************************************************************************************
44  Constants
45 **************************************************************************************************/
46 
47 /*! \brief Slave BIG broadcasting states. */
48 typedef enum
49 {
50  LCTR_MST_BIG_STATE_DISABLED, /*!< BIG master disabled state. */
51  LCTR_MST_BIG_STATE_SYNCING, /*!< BIG master synchronizing state. */
52  LCTR_MST_BIG_STATE_SYNCED, /*!< BIG master synchronized state. */
53  LCTR_MST_BIG_STATE_SHUTDOWN, /*!< BIG master shutdown in progress. */
54  LCTR_MST_BIG_STATE_RESET, /*!< BIG master reset in progress. */
55  LCTR_MST_BIG_STATE_TOTAL /*!< Total number of BIG master states. */
57 
58 /**************************************************************************************************
59  Globals
60 **************************************************************************************************/
61 
62 extern lctrMstBigMsg_t *pLctrMstBigMsg;
63 
64 /**************************************************************************************************
65  Function Declarations
66 **************************************************************************************************/
67 
68 /* Host Events */
69 void lctrNotifyHostBigTerminateComplete(LlStatus_t status, uint8_t bigHandle);
70 void lctrNotifyHostSyncLost(uint8_t bigHandle, LlStatus_t reason);
71 
72 /* State machine for BIG master */
73 void lctrMstBigSendMsg(lctrBigCtx_t *pBigCtx, LctrMstBigMsg_t event);
74 void lctrMstBigExecuteSm(lctrBigCtx_t *pBigCtx, LctrMstBigMsg_t event);
75 
76 /* Action routines */
77 void lctrMstBigActStart(lctrBigCtx_t *pBigCtx);
78 void lctrMstBigActBigSync(lctrBigCtx_t *pBigCtx);
79 void lctrMstBigActTerm(lctrBigCtx_t *pBigCtx);
80 void lctrMstBigActShutdown(lctrBigCtx_t *pBigCtx);
81 void lctrMstBigActSyncLost(lctrBigCtx_t *pBigCtx);
82 void lctrMstBigActMicFailed(lctrBigCtx_t *pBigCtx);
83 void lctrMstBigActCleanup(lctrBigCtx_t *pBigCtx);
84 
85 /* Builder */
86 void lctrMstBigBuildOp(lctrBigCtx_t *pBigCtx, LctrAcadBigInfo_t *pBigInfo);
87 void lctrMstSetupBigContext(lctrBigCtx_t *pBigCtx, LctrAcadBigInfo_t *pBigInfo);
88 void lctrMstSetupBigChannel(lctrBigCtx_t *pBigCtx, LctrAcadBigInfo_t *pBigInfo);
89 
90 /* ISR: BOD handlers */
91 void lctrMstBisRxCompletion(BbOpDesc_t *pBod, uint8_t *pBuf, uint8_t status);
92 void lctrMstBigBeginOp(BbOpDesc_t *pOp);
93 void lctrMstBigEndOp(BbOpDesc_t *pOp);
94 
95 #ifdef __cplusplus
96 };
97 #endif
98 
99 #endif /* LCTR_INT_BIS_MASTER_H */
LctrMstBigMsg_t
BIG task messages for LCTR_DISP_BIG_SYNC dispatcher.
lctrMstBigState_t
Slave BIG broadcasting states.
BIG messages.
LlStatus_t
The following status values are used in the LL API.
Definition: ll_api.h:46
Broadcast Isochronous Group (BIG) context.
Definition: lctr_int_bis.h:116
Link layer controller BIS slave interface file.
Baseband operation descriptor (BOD).
Definition: bb_api.h:149
Internal link layer controller connected isochronous interface file.
ACAD data field for channel map update.
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.