[Feature]Upload Modem source code
Change-Id: Id4294f30faced84d3e6fd6d5e61e1111bf287a37
diff --git a/mcu/driver/audio/src32_inc/modemx.h b/mcu/driver/audio/src32_inc/modemx.h
new file mode 100644
index 0000000..6696396
--- /dev/null
+++ b/mcu/driver/audio/src32_inc/modemx.h
@@ -0,0 +1,238 @@
+/*============================================================================*/
+/* eCall ANSI C fixed-point reference source code */
+/* */
+/* File: modemx.h */
+/* Version: 8.6.0 (Rel8) / 9.4.0 (Rel9) */
+/* Date: 2011-02-08 */
+/* Description: IVS and PSAP structures and functions (header file) */
+/*----------------------------------------------------------------------------*/
+
+#ifndef MODEMX_H_
+#define MODEMX_H_
+
+#include <stdio.h>
+#include <string.h>
+
+#include "ecall_defines.h"
+#include "ecall_control.h"
+#include "ecall_modem.h"
+#include "ecall_sync.h"
+#include "ecall_fec.h"
+#include "ecall_rom.h"
+
+#include "kal_public_api.h"
+#include "kal_trace.h"
+#include "l1sp_trc.h"
+
+/* callback functions: to be implemented by the user application */
+
+void Abort(const char *format, ...);
+void LogInfo(const char *format, ...);
+
+/*============================================================================*/
+/* IVS declarations */
+/*----------------------------------------------------------------------------*/
+
+typedef enum {
+ IVSEVENT_SENDINGSTART,
+ IVSEVENT_SENDINGMSD,
+ IVSEVENT_RESTARTMSD,
+ IVSEVENT_CONTROLSYNC,
+ IVSEVENT_CONTROLLOCK,
+ IVSEVENT_LLACKRECEIVED,
+ IVSEVENT_HLACKRECEIVED,
+ IVSEVENT_IDLEPOSTRESET,
+ IVSEVENT_IDLEPOSTSTART,
+ IVSEVENT_TIMEOUT,
+ IVSEVENT_NACKRECEIVED,
+ IVSEVENT_RECEIVESTART //self defined
+} IvsEvent;
+
+/* callback functions: to be implemented by the user application */
+
+void IvsCatchEvent(IvsEvent ie);
+void IvsReceiveHlack(const Ord8 data);
+
+/*----------------------------------------------------------------------------*/
+
+void IvsReset(const Ord8 *msd, int length);
+void IvsProcess(Int16 *pcm);
+void IvsSendStart(void);
+
+void IvsRxReset(void);
+void IvsRxProcess(const Int16 *pcm);
+
+void IvsTxReset(const Ord8 *msd, int length);
+void IvsTxProcess(Int16 *pcm);
+void IvsTxState(Int16 msg, Int16 metric, Bool syncLock);
+
+/*----------------------------------------------------------------------------*/
+
+typedef enum {
+ IvsIdle,
+ IvsTrigger,
+ IvsStart,
+ IvsSendMsd,
+ IvsAck,
+ IvsHlack
+} IvsState;
+
+typedef struct {
+ IvsState state; /* IVS transmitter state */
+ CtrlTxData ctrl; /* IVS control struct */
+ ModState mod; /* IVS modulator struct */
+
+ Int16 rv; /* redundancy version */
+ Int16 ulN; /* uplink number of frames */
+ Int16 ulIndex; /* uplink frame counter */
+ Int16 ulDelay; /* uplink transmit offset in samples */
+ Int16 dlMsgOld; /* previous control message */
+
+ Bool pendingStart; /* indicates pending START message */
+ Int16 overallNack; /* cumulative NACK count */
+
+ Int16 stateCnt[SET_LLMSG + SET_HLMSG+1];
+ Int16 stateIgn[SET_LLMSG + SET_HLMSG+1];
+
+ Ord1 memCode[NRB_CODE_BUFFER];
+ Int16 memDelay[2*PCM_LENGTH];
+
+ Int8 Ivs_eCall_LIB_Status;
+} IvsTxData;
+
+typedef struct {
+ IvsState state; /* IVS receiver state */
+ CtrlRxData ctrl; /* IVS control struct */
+ SyncState sync; /* IVS sync struct */
+
+ Int16 dlData; /* downlink message symbol */
+ Int16 dlIndex; /* donwlink frame counter */
+ Int16 dlMsgCnt; /* downlink message counter */
+
+ Int16 memCtrl[NRF_MEMCTRL*PCM_LENGTH];
+ Int32 memSync[NRS_MEMSYNC];
+} IvsRxData;
+
+typedef struct {
+ IvsRxData rx; /* IVS receiver struct */
+ IvsTxData tx; /* IVS transmitter struct */
+} IvsData;
+
+// KH: add for integration
+void IvsInit(void *addr);
+void IvsDeinit(void);
+int IvsGetMemSize(void);
+IvsState IvsTxGetState(void);
+IvsState IvsRxGetState(void);
+
+void PsapInit(void *addr);
+void PsapDeinit(void);
+int PsapGetMemSize(void);
+
+void Ivs_Set_Ecall_Lib_Status(Int8 status);
+Int8 Ivs_Get_Ecall_Lib_Status(void);
+
+
+
+
+typedef enum{
+ Ivs_ECALL_DISABLE = 0,
+ Ivs_ECALL_SDT_ONLY,
+ Ivs_ECALL_ENABLE,
+ Ivs_ECALL_MAX = 3
+} Ivs_ECALL_STATUS;
+
+/*============================================================================*/
+/* PSAP declarations */
+/*----------------------------------------------------------------------------*/
+
+typedef enum {
+ PSAPEVENT_SENDINGSTART,
+ PSAPEVENT_SENDINGRESTART,
+ PSAPEVENT_SENDINGLLACK,
+ PSAPEVENT_SENDINGHLACK,
+ PSAPEVENT_CONTROLSYNC,
+ PSAPEVENT_CONTROLLOCK,
+ PSAPEVENT_MSDSYNC,
+ PSAPEVENT_MSDRECEIVED,
+ PSAPEVENT_IDLEPOSTRESET,
+ PSAPEVENT_IDLEPOSTSTART,
+ PSAPEVENT_IDLEPOSTLLACK,
+ PSAPEVENT_IDLEPOSTHLACK,
+ PSAPEVENT_TIMEOUT
+} PsapEvent;
+
+/* callback functions: to be implemented by the user application */
+
+void PsapCatchEvent(PsapEvent pe);
+void PsapReceiveMsd(const Ord8 *msd, int length);
+
+/*----------------------------------------------------------------------------*/
+
+void PsapReset(void);
+void PsapProcess(Int16 *pcm);
+void PsapSendStart(void);
+void PsapSendHlack(const Ord8 data);
+
+void PsapRxReset(void);
+void PsapRxProcess(const Int16 *pcm);
+void PsapRxUplink(const Int16 *pcm);
+void PsapRxDownlink(void);
+void PsapRxSetMod(const SyncState *sync, ModState *mod);
+
+void PsapTxReset(void);
+void PsapTxProcess(Int16 *pcm);
+
+/*----------------------------------------------------------------------------*/
+
+typedef enum {
+ PsapIdle,
+ PsapTrigger,
+ PsapStart,
+ PsapNack,
+ PsapAck,
+ PsapHlack
+} PsapState;
+
+typedef struct {
+ PsapState state; /* PSAP receiver state */
+ CtrlRxData ctrl; /* PSAP control struct */
+ SyncState sync; /* PSAP sync struct */
+ ModState mod; /* PSAP modulator struct */
+
+ Int16 rv; /* redundancy version */
+ Int16 ulN; /* uplink number of frames without muting */
+ Int16 ulIndex; /* uplink frame counter */
+ Int16 mgIndex; /* uplink position in muting gap table */
+ Int16 ulTrials; /* uplink decoding trails */
+ Int16 ulSyncTail; /* sync observation counter after sync success */
+
+ Ord8 dlHlackData; /* downlink higher-layer message (4 bits) */
+ Int16 dlData; /* downlink message symbol */
+ Int16 dlIndex; /* donwlink frame counter */
+ Int16 dlMsgCnt; /* downlink message counter */
+
+ Ord8 *msd; /* MSD in byte representation */
+ Ord1 *msdBin; /* MSD in binary representation */
+ Int16 *memCtrl; /* buffer for control and data demodulation */
+ IntLLR *memCode; /* soft bit buffer for decoding */
+
+ char buffer[0
+ + sizeof(IntLLR)* NRB_CODE_ARQ
+ + sizeof(Int16) * NRF_MEMCTRL*PCM_LENGTH
+ + sizeof(Int32) * NRS_MEMSYNC
+ + sizeof(Int32) * 2*(NRF_SYNC+1)];
+} PsapRxData;
+
+typedef struct {
+ CtrlTxData ctrl; /* PSAP control struct */
+} PsapTxData;
+
+typedef struct {
+ PsapRxData rx; /* PSAP receiver struct */
+ PsapTxData tx; /* PSAP transmitter struct */
+} PsapData;
+
+PsapData* PsapGetData(void);
+
+#endif