New XML Parser implementation, supports splitter and combiner
[apps/agl-service-unicens.git] / ucs2-interface / ucs-xml / UcsXml_Private.h
diff --git a/ucs2-interface/ucs-xml/UcsXml_Private.h b/ucs2-interface/ucs-xml/UcsXml_Private.h
new file mode 100644 (file)
index 0000000..c2d4d70
--- /dev/null
@@ -0,0 +1,167 @@
+/*------------------------------------------------------------------------------------------------*/\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