/**
 * Interface for candidate IVS and PSAP modem implementations.
 *
 * @copyright 2008, research in motion ltd.
 *
 * @version $id: //depot/main/dsp/ecall/c/testlab/testlab_sock.c#3 $
 */

#ifndef __MODEM_H__
#define __MODEM_H__

#include "rimtypes.h"

#define MSD_MAX_LENGTH           (140)
#define PCM_LENGTH               (160)

/*
 * IVS reset: called at start of each test case.
 */
void IvsReset(const Ord8 *msd, int length);

/*
 * IVS modem processing: called for each 20ms audio frame.
 */
void IvsProcess(Int16 *pcm);

/*
 * PSAP reset: called at start of each test case.
 */
void PsapReset(void);

/*
 * PSAP request for MSD: called when PSAP should trigger request from IVS.
 */
void PsapSendStart(void);

/*
 * PSAP modem processing: called for each 20ms audio frame.
 */
void PsapProcess(Int16 *pcm);

/*
 * Called by PSAP implementation to indicate MSD was received.
 */
void PsapReceiveMsd(const Ord8 *msd, int length);

#endif
