--- /dev/null
+/*------------------------------------------------------------------------------------------------*/\r
+/* Unicens XML Parser */\r
+/* Copyright 2017, Microchip Technology Inc. and its subsidiaries. */\r
+/* */\r
+/* Redistribution and use in source and binary forms, with or without */\r
+/* modification, are permitted provided that the following conditions are met: */\r
+/* */\r
+/* 1. Redistributions of source code must retain the above copyright notice, this */\r
+/* list of conditions and the following disclaimer. */\r
+/* */\r
+/* 2. Redistributions in binary form must reproduce the above copyright notice, */\r
+/* this list of conditions and the following disclaimer in the documentation */\r
+/* and/or other materials provided with the distribution. */\r
+/* */\r
+/* 3. Neither the name of the copyright holder nor the names of its */\r
+/* contributors may be used to endorse or promote products derived from */\r
+/* this software without specific prior written permission. */\r
+/* */\r
+/* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" */\r
+/* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE */\r
+/* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE */\r
+/* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE */\r
+/* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL */\r
+/* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR */\r
+/* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER */\r
+/* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, */\r
+/* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE */\r
+/* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */\r
+/*------------------------------------------------------------------------------------------------*/\r
+#ifndef UCSXML_PRIVATE_H_\r
+#define UCSXML_PRIVATE_H_\r
+\r
+#include <stdbool.h>\r
+#include <stdint.h>\r
+#include "ucs_api.h"\r
+\r
+typedef enum\r
+{\r
+ SYNC_DATA = 0, /*!< \brief Specifies the synchronous streaming data type */\r
+ CONTROL_DATA = 2, /*!< \brief Specifies the control data type */\r
+ AV_PACKETIZED = 3, /*!< \brief Specifies the A/V Packetized Isochronous \r
+ streaming data type */\r
+ QOS_IP = 4, /*!< \brief Specifies the Quality of Service IP \r
+ streaming data type*/\r
+ DISC_FRAME_PHASE = 5, /*!< \brief Specifies the DiscreteFrame Isochronous\r
+ streaming phase data type */\r
+ IPC_PACKET = 7, /*!< \brief Specifies the IPC packet data type */\r
+ INVALID = 0xFF /*!< \brief Defined invalid value */\r
+} MDataType_t;\r
+\r
+struct UcsXmlObjectList\r
+{\r
+ void *obj;\r
+ struct UcsXmlObjectList *next;\r
+};\r
+\r
+void *MCalloc(struct UcsXmlObjectList *list, uint32_t nElem, uint32_t elemSize);\r
+void FreeObjList(struct UcsXmlObjectList *cur);\r
+\r
+struct MostSocketParameters\r
+{\r
+ struct UcsXmlObjectList *list;\r
+ bool isSource;\r
+ MDataType_t dataType;\r
+ uint16_t bandwidth;\r
+};\r
+bool GetMostSocket(Ucs_Xrm_MostSocket_t **mostSoc, struct MostSocketParameters *param);\r
+\r
+struct UsbPortParameters\r
+{\r
+ struct UcsXmlObjectList *list;\r
+ const char *physicalLayer;\r
+ const char *deviceInterfaces;\r
+ const char *streamInCount;\r
+ const char *streamOutCount;\r
+};\r
+bool GetUsbPort(Ucs_Xrm_UsbPort_t **usbPort, struct UsbPortParameters *param);\r
+bool GetUsbPortDefaultCreated(Ucs_Xrm_ResObject_t **usbPort, struct UcsXmlObjectList *list);\r
+\r
+struct UsbSocketParameters\r
+{\r
+ struct UcsXmlObjectList *list;\r
+ bool isSource;\r
+ MDataType_t dataType;\r
+ const char *endpointAddress;\r
+ const char *framesPerTrans;\r
+ Ucs_Xrm_ResObject_t *usbPort; /** Must be either Ucs_Xrm_UsbPort_t or Ucs_Xrm_DefaultCreatedPort_t */\r
+};\r
+bool GetUsbSocket(Ucs_Xrm_UsbSocket_t **usbSoc, struct UsbSocketParameters *param);\r
+\r
+struct MlbPortParameters\r
+{\r
+ struct UcsXmlObjectList *list;\r
+ const char *clockConfig;\r
+};\r
+bool GetMlbPort(Ucs_Xrm_MlbPort_t **mlbPort, struct MlbPortParameters *param);\r
+bool GetMlbPortDefaultCreated(Ucs_Xrm_ResObject_t **mlbPort, struct UcsXmlObjectList *list);\r
+\r
+struct MlbSocketParameters\r
+{\r
+ struct UcsXmlObjectList *list;\r
+ bool isSource;\r
+ MDataType_t dataType;\r
+ uint16_t bandwidth;\r
+ const char *channelAddress;\r
+ Ucs_Xrm_ResObject_t *mlbPort; /** Must be either Ucs_Xrm_MlbPort_t or Ucs_Xrm_DefaultCreatedPort_t */\r
+};\r
+bool GetMlbSocket(Ucs_Xrm_MlbSocket_t **mlbSoc, struct MlbSocketParameters *param);\r
+\r
+struct StrmPortParameters\r
+{\r
+ uint8_t index; /** Always create two Streaming Ports one with index 0 and one with index 1 */\r
+ struct UcsXmlObjectList *list;\r
+ const char *clockConfig;\r
+ const char *dataAlignment;\r
+};\r
+bool GetStrmPort(Ucs_Xrm_StrmPort_t **strmPort, struct StrmPortParameters *param);\r
+\r
+struct StrmSocketParameters\r
+{\r
+ struct UcsXmlObjectList *list;\r
+ bool isSource;\r
+ MDataType_t dataType;\r
+ uint16_t bandwidth;\r
+ const char *streamPin;\r
+ Ucs_Xrm_StrmPort_t *streamPortA; /* Mandatory, set with index 0 */\r
+ Ucs_Xrm_StrmPort_t *streamPortB; /* Mandatory, set with index 1 */\r
+};\r
+bool GetStrmSocket(Ucs_Xrm_StrmSocket_t **strmSoc, struct StrmSocketParameters *param);\r
+\r
+struct SplitterParameters\r
+{\r
+ struct UcsXmlObjectList *list;\r
+ uint16_t bytesPerFrame;\r
+ Ucs_Xrm_ResObject_t *inSoc;\r
+};\r
+bool GetSplitter(Ucs_Xrm_Splitter_t **splitter, struct SplitterParameters *param);\r
+\r
+struct CombinerParameters\r
+{\r
+ struct UcsXmlObjectList *list;\r
+ uint16_t bytesPerFrame;\r
+ Ucs_Xrm_ResObject_t *outSoc;\r
+};\r
+bool GetCombiner(Ucs_Xrm_Combiner_t **combiner, struct CombinerParameters *param);\r
+\r
+struct SyncConParameters\r
+{\r
+ struct UcsXmlObjectList *list;\r
+ const char *muteMode;\r
+ const char *optional_offset;\r
+ Ucs_Xrm_ResObject_t *inSoc;\r
+ Ucs_Xrm_ResObject_t *outSoc;\r
+};\r
+bool GetSyncCon(Ucs_Xrm_SyncCon_t **syncCon, struct SyncConParameters *param);\r
+\r
+struct AvpConParameters\r
+{\r
+ struct UcsXmlObjectList *list;\r
+ const char *optional_isocPacketSize;\r
+ Ucs_Xrm_ResObject_t *inSoc;\r
+ Ucs_Xrm_ResObject_t *outSoc;\r
+};\r
+bool GetAvpCon(Ucs_Xrm_AvpCon_t **avpCon, struct AvpConParameters *param);\r
+\r
+\r
+#endif /* UCSXML_PRIVATE_H_ */
\ No newline at end of file