[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/driver/audio/src32_inc/ecall_control.h b/mcu/driver/audio/src32_inc/ecall_control.h
new file mode 100644
index 0000000..a364128
--- /dev/null
+++ b/mcu/driver/audio/src32_inc/ecall_control.h
@@ -0,0 +1,143 @@
+/*============================================================================*/
+/* eCall ANSI C fixed-point reference source code */
+/* */
+/* File: ecall_control.h */
+/* Version: 8.6.0 (Rel8) / 9.4.0 (Rel9) */
+/* Date: 2011-02-08 */
+/* Description: control message functions (header file) */
+/*----------------------------------------------------------------------------*/
+
+#ifndef ECALL_CONTROL_H_
+#define ECALL_CONTROL_H_
+
+#include "ecall_defines.h"
+#include "ecall_sync.h"
+
+
+typedef enum {
+ DlMsgNoop = -2,
+ DlMsgReset,
+ DlMsgStart, // 0
+ DlMsgNack, // 1
+ DlMsgAck, // 2
+ DlMsgSend, // 3
+ DlMsgUndef04,
+ DlMsgUndef05,
+ DlMsgUndef06,
+ DlMsgUndef07,
+ DlMsgUndef08,
+ DlMsgUndef09,
+ DlMsgUndef10,
+ DlMsgUndef11,
+ DlMsgUndef12,
+ DlMsgUndef13,
+ DlMsgUndef14,
+ DlMsgUndef15,
+ DlMsgUndef16,
+ DlMsgUndef17,
+ DlMsgUndef18,
+ DlMsgUndef19,
+ DlMsgUndef20,
+ DlMsgUndef21,
+ DlMsgUndef22,
+ DlMsgUndef23,
+ DlMsgUndef24,
+ DlMsgUndef25,
+ DlMsgUndef26,
+ DlMsgUndef27,
+ DlMsgUndef28,
+ DlMsgUndef29,
+ DlMsgUndef30,
+ DlMsgUndef31,
+ DlMsgHlack = SET_LLMSG + SET_HLMSG
+} DlData;
+
+#ifdef ECALL_ENUM2STR
+#define DLMSG_PAD (-DlMsgNoop)
+#define NUM_DLMSGS (DlMsgHlack - DlMsgNoop + 1)
+extern const char* const __DLMSG2STR[NUM_DLMSGS];
+#define DLDATA2STR(DLDATA) __DLMSG2STR[DLMSG_PAD + DLDATA]
+#endif
+
+typedef enum {
+ CtrlRxIdle,
+ CtrlRxSync,
+ CtrlRxLock,
+ CtrlTxIdle,
+ CtrlTxSend,
+ NUM_PORTSTATES
+} PortState;
+
+#ifdef ECALL_ENUM2STR
+extern const char* const __PORTSTATE2STR[NUM_PORTSTATES];
+#define PORTSTATE2STR(PORTSTATE) __PORTSTATE2STR[PORTSTATE]
+#endif
+
+typedef enum {
+ PortUndef,
+ PortIvs,
+ PortPsap,
+ NUM_PORTOWNERS
+} PortOwner;
+
+#ifdef ECALL_ENUM2STR
+extern const char* const __PORTOWNER2STR[NUM_PORTOWNERS];
+#define PORTOWNER2STR(PORTOWNER) __PORTOWNER2STR[PORTOWNER]
+#endif
+
+/*============================================================================*/
+/* Control structures */
+/*----------------------------------------------------------------------------*/
+
+typedef struct {
+ Int16 dlData; /* message symbol */
+ Int16 dlIndex; /* message frame counter */
+} CtrlTxPort;
+
+typedef struct {
+ Int16 dlData; /* detected message symbol */
+ Int16 dlMetric; /* receiver metric */
+} CtrlRxPort;
+
+typedef struct {
+ union {
+ CtrlTxPort tx; /* port control transmitter */
+ CtrlRxPort rx; /* port control receiver */
+ } u;
+ PortState state; /* port state */
+ PortOwner owner; /* port owner identification */
+ Bool invert; /* port inversion flag */
+} CtrlPort;
+
+typedef struct {
+ CtrlPort port; /* port struct */
+} CtrlTxData;
+
+typedef struct {
+ CtrlPort port; /* port struct */
+
+ SyncState *sync; /* pointer to sync struct */
+ Int16 *buffer; /* pointer to control receiver buffer */
+
+ Tern dlRead; /* sync indication (ternary variable) */
+ Int16 dlIndex; /* internal frame counter */
+ Int16 dlSyncLock; /* number of sync events required */
+} CtrlRxData;
+
+
+/*============================================================================*/
+/* Control functions */
+/*----------------------------------------------------------------------------*/
+
+const char* CtrlPortName(PortOwner);
+void CtrlSync(CtrlRxData*, const Int16*);
+
+void CtrlTxReset(CtrlTxData*, PortOwner);
+void CtrlTxProcess(CtrlTxData*, Int16*);
+void CtrlTxMod(Int16*, Int16, Int16);
+
+void CtrlRxReset(CtrlRxData*, PortOwner, SyncState*, Int16*, Int16);
+void CtrlRxProcess(CtrlRxData*, const Int16*);
+Int16 CtrlRxDemod(const Int16*, Int16*);
+
+#endif