[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/driver/audio/src32_inc/ecall_modem.h b/mcu/driver/audio/src32_inc/ecall_modem.h
new file mode 100644
index 0000000..e1d296a
--- /dev/null
+++ b/mcu/driver/audio/src32_inc/ecall_modem.h
@@ -0,0 +1,61 @@
+/*============================================================================*/
+/* eCall ANSI C fixed-point reference source code */
+/* */
+/* File: ecall_modem.h */
+/* Version: 8.6.0 (Rel8) / 9.4.0 (Rel9) */
+/* Date: 2011-02-08 */
+/* Description: modulator and demodulator functions (header file) */
+/*----------------------------------------------------------------------------*/
+
+#ifndef ECALL_MODEM_H_
+#define ECALL_MODEM_H_
+
+#include "ecall_defines.h"
+
+
+typedef enum {
+ ModUndef,
+ Mod3bit4smp,
+ Mod3bit8smp
+} ModType;
+
+typedef struct {
+ ModType type; /* identifies modulator type */
+
+ Int16 bpsym; /* bits per symbol */
+ Int16 spmf; /* samples per modulation frame */
+ Int16 mfpf; /* modulation frames per frame = PCM_LENGTH/spmf */
+ Int16 decpos1; /* position 1st decoding trial */
+ Int16 decpos2; /* position 2nd decoding trial */
+ Int16 wutperiod; /* wakeup tone period in samples */
+ Int16 nfmute1; /* number of muting frames 1st interval */
+ Int16 nfmute4; /* number of muting frames 4th interval */
+ Int16 nfmuteall; /* number of muting frames total */
+ Int16 nfdata; /* number of data frames = NRB_CODE_ARQ/(mfpf*bpsym) */
+
+ const Int16 *ulPulse;
+ const Int16 *ulPulseMatch;
+ const Int16 *mgTable;
+ const Int16 *wakeupSin;
+ const Int16 *wakeupCos;
+} ModState;
+
+
+/*============================================================================*/
+/* Modem functions */
+/*----------------------------------------------------------------------------*/
+
+void SetModState(ModState*, ModType);
+
+void IvsTransmitter(const ModState*, const Ord1*, Int16*, Int16, Int16);
+void PsapReceiver(const ModState*, const Int16*, IntLLR*);
+
+void SymbolMod(const ModState*, Int16, Int16*);
+void SymbolDemod(const ModState*, const Int16*, IntLLR*);
+
+void Byte2Bit(const Ord8*, Ord1*, Int16);
+void Bit2Byte(const Ord1*, Ord8*, Int16);
+
+Int32 MpyLacc(Int32, Int16);
+
+#endif