c2d4d7085777afee8a4145f5073bfb420e99f3fd
[apps/agl-service-unicens.git] / ucs2-interface / ucs-xml / UcsXml_Private.h
1 /*------------------------------------------------------------------------------------------------*/\r
2 /* Unicens XML Parser                                                                             */\r
3 /* Copyright 2017, Microchip Technology Inc. and its subsidiaries.                                */\r
4 /*                                                                                                */\r
5 /* Redistribution and use in source and binary forms, with or without                             */\r
6 /* modification, are permitted provided that the following conditions are met:                    */\r
7 /*                                                                                                */\r
8 /* 1. Redistributions of source code must retain the above copyright notice, this                 */\r
9 /*    list of conditions and the following disclaimer.                                            */\r
10 /*                                                                                                */\r
11 /* 2. Redistributions in binary form must reproduce the above copyright notice,                   */\r
12 /*    this list of conditions and the following disclaimer in the documentation                   */\r
13 /*    and/or other materials provided with the distribution.                                      */\r
14 /*                                                                                                */\r
15 /* 3. Neither the name of the copyright holder nor the names of its                               */\r
16 /*    contributors may be used to endorse or promote products derived from                        */\r
17 /*    this software without specific prior written permission.                                    */\r
18 /*                                                                                                */\r
19 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"                    */\r
20 /* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE                      */\r
21 /* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE                 */\r
22 /* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE                   */\r
23 /* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL                     */\r
24 /* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR                     */\r
25 /* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER                     */\r
26 /* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,                  */\r
27 /* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE                  */\r
28 /* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.                           */\r
29 /*------------------------------------------------------------------------------------------------*/\r
30 #ifndef UCSXML_PRIVATE_H_\r
31 #define UCSXML_PRIVATE_H_\r
32 \r
33 #include <stdbool.h>\r
34 #include <stdint.h>\r
35 #include "ucs_api.h"\r
36 \r
37 typedef enum\r
38 {\r
39     SYNC_DATA        = 0,      /*!< \brief  Specifies the synchronous streaming data type */\r
40     CONTROL_DATA     = 2,      /*!< \brief  Specifies the control data type */\r
41     AV_PACKETIZED    = 3,      /*!< \brief  Specifies the A/V Packetized Isochronous \r
42                                             streaming data type */\r
43     QOS_IP           = 4,      /*!< \brief  Specifies the Quality of Service IP \r
44                                             streaming data type*/\r
45     DISC_FRAME_PHASE = 5,      /*!< \brief  Specifies the DiscreteFrame Isochronous\r
46                                             streaming phase data type */\r
47     IPC_PACKET       = 7,       /*!< \brief Specifies the IPC packet data type */\r
48     INVALID          = 0xFF     /*!< \brief Defined invalid value */\r
49 } MDataType_t;\r
50 \r
51 struct UcsXmlObjectList\r
52 {\r
53     void *obj;\r
54     struct UcsXmlObjectList *next;\r
55 };\r
56 \r
57 void *MCalloc(struct UcsXmlObjectList *list, uint32_t nElem, uint32_t elemSize);\r
58 void FreeObjList(struct UcsXmlObjectList *cur);\r
59 \r
60 struct MostSocketParameters\r
61 {\r
62     struct UcsXmlObjectList *list;\r
63     bool isSource;\r
64     MDataType_t dataType;\r
65     uint16_t bandwidth;\r
66 };\r
67 bool GetMostSocket(Ucs_Xrm_MostSocket_t **mostSoc, struct MostSocketParameters *param);\r
68 \r
69 struct UsbPortParameters\r
70 {\r
71     struct UcsXmlObjectList *list;\r
72     const char *physicalLayer;\r
73     const char *deviceInterfaces;\r
74     const char *streamInCount;\r
75     const char *streamOutCount;\r
76 };\r
77 bool GetUsbPort(Ucs_Xrm_UsbPort_t **usbPort, struct UsbPortParameters *param);\r
78 bool GetUsbPortDefaultCreated(Ucs_Xrm_ResObject_t **usbPort, struct UcsXmlObjectList *list);\r
79 \r
80 struct UsbSocketParameters\r
81 {\r
82     struct UcsXmlObjectList *list;\r
83     bool isSource;\r
84     MDataType_t dataType;\r
85     const char *endpointAddress;\r
86     const char *framesPerTrans;\r
87     Ucs_Xrm_ResObject_t *usbPort; /** Must be either Ucs_Xrm_UsbPort_t or Ucs_Xrm_DefaultCreatedPort_t  */\r
88 };\r
89 bool GetUsbSocket(Ucs_Xrm_UsbSocket_t **usbSoc, struct UsbSocketParameters *param);\r
90 \r
91 struct MlbPortParameters\r
92 {\r
93     struct UcsXmlObjectList *list;\r
94     const char *clockConfig;\r
95 };\r
96 bool GetMlbPort(Ucs_Xrm_MlbPort_t **mlbPort, struct MlbPortParameters *param);\r
97 bool GetMlbPortDefaultCreated(Ucs_Xrm_ResObject_t **mlbPort, struct UcsXmlObjectList *list);\r
98 \r
99 struct MlbSocketParameters\r
100 {\r
101     struct UcsXmlObjectList *list;\r
102     bool isSource;\r
103     MDataType_t dataType;\r
104     uint16_t bandwidth;\r
105     const char *channelAddress;\r
106     Ucs_Xrm_ResObject_t *mlbPort; /** Must be either Ucs_Xrm_MlbPort_t or Ucs_Xrm_DefaultCreatedPort_t  */\r
107 };\r
108 bool GetMlbSocket(Ucs_Xrm_MlbSocket_t **mlbSoc, struct MlbSocketParameters *param);\r
109 \r
110 struct StrmPortParameters\r
111 {\r
112     uint8_t index; /** Always create two Streaming Ports one with index 0 and one with index 1 */\r
113     struct UcsXmlObjectList *list;\r
114     const char *clockConfig;\r
115     const char *dataAlignment;\r
116 };\r
117 bool GetStrmPort(Ucs_Xrm_StrmPort_t **strmPort, struct StrmPortParameters *param);\r
118 \r
119 struct StrmSocketParameters\r
120 {\r
121     struct UcsXmlObjectList *list;\r
122     bool isSource;\r
123     MDataType_t dataType;\r
124     uint16_t bandwidth;\r
125     const char *streamPin;\r
126     Ucs_Xrm_StrmPort_t *streamPortA; /* Mandatory, set with index 0 */\r
127     Ucs_Xrm_StrmPort_t *streamPortB; /* Mandatory, set with index 1 */\r
128 };\r
129 bool GetStrmSocket(Ucs_Xrm_StrmSocket_t **strmSoc, struct StrmSocketParameters *param);\r
130 \r
131 struct SplitterParameters\r
132 {\r
133     struct UcsXmlObjectList *list;\r
134     uint16_t bytesPerFrame;\r
135     Ucs_Xrm_ResObject_t *inSoc;\r
136 };\r
137 bool GetSplitter(Ucs_Xrm_Splitter_t **splitter, struct SplitterParameters *param);\r
138 \r
139 struct CombinerParameters\r
140 {\r
141     struct UcsXmlObjectList *list;\r
142     uint16_t bytesPerFrame;\r
143     Ucs_Xrm_ResObject_t *outSoc;\r
144 };\r
145 bool GetCombiner(Ucs_Xrm_Combiner_t **combiner, struct CombinerParameters *param);\r
146 \r
147 struct SyncConParameters\r
148 {\r
149     struct UcsXmlObjectList *list;\r
150     const char *muteMode;\r
151     const char *optional_offset;\r
152     Ucs_Xrm_ResObject_t *inSoc;\r
153     Ucs_Xrm_ResObject_t *outSoc;\r
154 };\r
155 bool GetSyncCon(Ucs_Xrm_SyncCon_t **syncCon, struct SyncConParameters *param);\r
156 \r
157 struct AvpConParameters\r
158 {\r
159     struct UcsXmlObjectList *list;\r
160     const char *optional_isocPacketSize;\r
161     Ucs_Xrm_ResObject_t *inSoc;\r
162     Ucs_Xrm_ResObject_t *outSoc;\r
163 };\r
164 bool GetAvpCon(Ucs_Xrm_AvpCon_t **avpCon, struct AvpConParameters *param);\r
165 \r
166 \r
167 #endif /* UCSXML_PRIVATE_H_ */