/*
 * Copyright (c) 2005, Adaptive Digital Technologies, Inc.
 *
 * File Name: gpakenum.h
 *
 * Description:
 *   This file contains common enumerations related to G.PAK application
 *   software.
 *
 * Version: 1.0
 *
 * Revision History:
 *   06/15/05 - Initial release.
 *
 * This program has been released under the terms of the GPL version 2 by
 * permission of Adaptive Digital Technologies, Inc.
 *
 */

/*
 * See http://www.asterisk.org for more information about
 * the Asterisk project. Please do not directly contact
 * any of the maintainers of this project for assistance;
 * the project provides a web site, mailing lists and IRC
 * channels for your use.
 *
 * This program is free software, distributed under the terms of
 * the GNU General Public License Version 2 as published by the
 * Free Software Foundation. See the LICENSE file included with
 * this program for more details.
 */

#ifndef _GPAKENUM_H  /* prevent multiple inclusion */
#define _GPAKENUM_H

/* G.PAK Serial Port Word Size */
typedef enum
{
    SerWordSize8 = 0,       // 8-bit seial word
    SerWordSize16 = 1       // 16-bit serial word
} GpakSerWordSize_t;

/* G.PAK Serial Port FrameSync Polarity */
typedef enum
{
    FrameSyncActLow = 0,    // active low frame sync signal
    FrameSyncActHigh = 1    // active high frame sync signal
} GpakSerFrameSyncPol_t;

/* G.PAK Serial Port Clock Polarity */
typedef enum
{
    SerClockActLow = 0,     // active low serial clock
    SerClockActHigh = 1     // active high serial clock
} GpakSerClockPol_t;

/* G.PAK Serial Port Data Delay */
typedef enum
{
    DataDelay0 = 0,         // no data delay
    DataDelay1 = 1,         // 1-bit data delay
    DataDelay2 = 2          // 2-bit data delay
} GpakSerDataDelay_t;

/* G.PAK Serial Port Ids. */
typedef enum
{
    SerialPortNull = 0,     // null serial port 
    SerialPort1 = 1,        // first PCM serial stream port (McBSP0) 
    SerialPort2 = 2,        // second PCM serial stream port (McBSP1) 
    SerialPort3 = 3         // third PCM serial stream port (McBSP2) 
} GpakSerialPort_t;

/* G.PAK serial port Slot Configuration selection codes. */
typedef enum
{
    SlotCfgNone = 0,        // no time slots used 
    SlotCfg2Groups = 2,     // 2 groups of 16 time slots used, 32 Channels system
    SlotCfg8Groups = 8      // 8-partition mode for 128-channel system
} GpakSlotCfg_t;

/* G.PAK serial port Companding Mode codes. */
typedef enum 
{ 
    cmpPCMU=0,              // u-Law 
    cmpPCMA=1,              // A-Law 
    cmpNone=2               // none 
} GpakCompandModes;

/* G.PAK Active/Inactive selection codes. */
typedef enum
{
    Disabled=0,             // Inactive 
    Enabled=1               // Active 
} GpakActivation;

/* G.PAK Channel Type codes. */
typedef enum
{
    inactive=0,          // channel inactive 
    tdmToTdm=1           // tdmToTdm
} GpakChanType;

/* G.PAK Algorithm control commands */
typedef enum
{
    EnableEcanA          = 0,    // Enable A side echo canceller
    BypassEcanA          = 1,    // Bypass A side echo canceller
    ResetEcanA           = 2,    // Reset A side echo canceller
    EnableEcanB          = 3,    // Enable B side echo canceller
    BypassEcanB          = 4,    // Bypass B side echo canceller
    ResetEcanB           = 5,    // Reset B side echo canceller

    EnableMuLawSwCompanding  = 6,// Enable Mu-law Software companding
    EnableALawSwCompanding  = 7, // Enable Mu-law Software companding
    BypassSwCompanding   = 8,    // Bypass Software companding
	EnableDTMFMuteA       = 9,   // Mute A side Dtmf digit after tone detected
	DisableDTMFMuteA      = 10,  // Do not mute A side Dtmf digit once tone detected
	EnableDTMFMuteB       = 11,  // Mute B side Dtmf digit after tone detected
	DisableDTMFMuteB      = 12,  // Do not mute B side Dtmf digit once tone detected
	EnableFaxCngDetectA   = 13,  // Enable A side Fax CNG detector, channel must be configed already
	DisableFaxCngDetectA  = 14,  // Disable A side Fax CNG detector, channel must be configed already
	EnableFaxCngDetectB   = 15,  // Enable B side Fax CNG detector, channel must be configed already
	DisableFaxCngDetectB  = 16  // Disable B side Fax CNG detector, channel must be configed already
} GpakAlgCtrl_t;

/* G.PAK Tone types. */
typedef enum
{
    Null_tone = 0,        // no tone detection 
    DTMF_tone = 1         // DTMF tone 
} GpakToneTypes;

/* G.PAK direction. */
typedef enum
{
    TDMAToB = 0,        // A to B 
    TDMBToA = 1         // B to A
} GpakTdmDirection;


typedef enum
{
    rate1ms=0,
    rate2ms=1,
    rate10ms=2
} GpakRate_t;

/* G.PAK Asynchronous Event Codes */
typedef enum
{
    EventToneDetect = 0,            // Tone detection event
    EventDSPDebug = 7               // DSP debug data event
} GpakAsyncEventCode_t;

/* G.PAK MF Tone Code Indices */
typedef enum
{
    DtmfDigit1   = 0,     // DTMF Digit 1 
    DtmfDigit2   = 1,     // DTMF Digit 2 
    DtmfDigit3   = 2,     // DTMF Digit 3 
    DtmfDigitA   = 3,     // DTMF Digit A 
    DtmfDigit4   = 4,     // DTMF Digit 4 
    DtmfDigit5   = 5,     // DTMF Digit 5 
    DtmfDigit6   = 6,     // DTMF Digit 6 
    DtmfDigitB   = 7,     // DTMF Digit B 
    DtmfDigit7   = 8,     // DTMF Digit 7 
    DtmfDigit8   = 9,     // DTMF Digit 8 
    DtmfDigit9   = 10,    // DTMF Digit 9 
    DtmfDigitC   = 11,    // DTMF Digit C 
    DtmfDigitSt  = 12,    // DTMF Digit * 
    DtmfDigit0   = 13,    // DTMF Digit 0 
    DtmfDigitPnd = 14,    // DTMF Digit # 
    DtmfDigitD   = 15,    // DTMF Digit D 

    FaxCngDigit = 90,       // Fax Calling Tone (1100 Hz) 

    EndofMFDigit = 100,     // End of MF digit 
    EndofCngDigit = 101     // End of Cng Digit
} GpakToneCodes_t;

/* GPIO control code*/
typedef enum
{
	GPIO_READ = 0,
	GPIO_WRITE = 1,
	GPIO_DIR = 2
} GpakGPIOCotrol_t;


#endif // end multiple inclusion
