//Editor-Info: -*- C++ -*-
//
//Subject: TOVE project / UNI
//
//File: unidefs.h 
//
//Version: $Revision: 1.5 $
//
//State: $State: Exp $
//
//Date: $Date: 1999/01/22 15:47:14 $
//
//Organisation:
//      Helsinki University of Technology
//      Laboratory of Telecommunications Software and Multimedia
//
//Author:
//      Jari Katajavuori
//
//Description:
//
//
//Copyright:
//
//
//Licence:
//
//
//History: 

#ifndef __UNI_UNIDEFS_H__
#define __UNI_UNIDEFS_H__

#include <typeinfo>
#include <string>

#include "pf/types.h"
#include "pf/bytes.h"

const pfUlong uniDummyCallReference = 0x7FFFFFF;
const pfUlong uniGlobalCallReference = 0;

const pfUlong uniZeroEndpointReferenceAtOSide = 0;
const pfUlong uniZeroEndpointReferenceAtTSide = 0x8000;

const pfUlong uniRSNMaxRestartsSent = 2;
const pfUlong uniMaxStatusEnquiriesSent = 2;

// Timer expiration delays

const pfUlong uniT301expire = 180000; // Q.2931 nw side only, min. 3 min
const pfUlong uniT303expire = 100000;
const pfUlong uniT308expire = 30000;
const pfUlong uniT309expire = 10000;
const pfUlong uniT310expire = 10000;
const pfUlong uniT313expire = 4000;   // User side only
const pfUlong uniT316expire = 120000;
const pfUlong uniT317expire = 100000; // Anything less than T316
const pfUlong uniT322expire = 4000;
const pfUlong uniT398expire = 4000;
const pfUlong uniT399expire = 14000;
const pfUlong uniTREMOVEDexpire = 10000; // Waiting for all conn. cleared

// States

enum uniStateValue
{
    uniState_Null                    = B0000_0000,
    uniState_CallInitiated           = B0000_0001,
    uniState_OverlapSending          = B0000_0010,
    uniState_OutgoingCallProceeding  = B0000_0011,
    uniState_CallDelivered           = B0000_0100,
    uniState_CallPresent             = B0000_0110,
    uniState_CallReceived            = B0000_0111,
    uniState_ConnectRequest          = B0000_1000,
    uniState_IncomingCallProceeding  = B0000_1001,
    uniState_Active                  = B0000_1010,
    uniState_ReleaseRequest          = B0000_1011,
    uniState_ReleaseIndication       = B0000_1100,
    uniState_OverlapReceiving        = B0001_1001,
    uniState_RestartRequest          = B0011_1101,
    uniState_Restart                 = B0011_1110
};

enum uniPartyStateValue
{
    uniPartyState_Null               = B0000_0000,
    uniPartyState_AddPartyInitiated  = B0000_0001,
    uniPartyState_AddPartyReceived   = B0000_0110,
    uniPartyState_DropPartyInitiated = B0000_1011,
    uniPartyState_DropPartyReceived  = B0000_1100,
    uniPartyState_Active             = B0000_1010
};

enum uniGlobalIFStateValue
{
    uniGlobal_Null                   = B0000_0000,
    uniGlobal_RestartRequest         = B0011_1101,
    uniGlobal_Restart                = B0011_1110
};

enum uniResetError
{
    uniResetError_Ok = 0,
    uniResetError_NoResponse = 1,
    uniResetError_PeerIncompatibleState = 2,
    uniResetError_NoResetConfirm = 3
};

enum uniCauseValue
{
    uniCauseValue_UnallocatedNumber = 1,
    uniCauseValue_NoRouteToSpecifiedTransitNW = 2,
    uniCauseValue_NoRouteToDestination = 3,
    uniCauseValue_NormalCallClearing = 16,
    uniCauseValue_UserBusy = 17,
    uniCauseValue_NoUserResponding = 18,
    uniCauseValue_NoAnswerFromUserUserAlerted = 19,
    uniCauseValue_CallRejected = 21,
    uniCauseValue_NumberChanged = 22,
    uniCauseValue_UserRejectsAllCallsWithCLIR = 23,
    uniCauseValue_DestinationOutOfOrder = 27,
    uniCauseValue_InvalidNumberFormat = 28,
    uniCauseValue_ResponseToSTATUS_ENQUIRY = 30,
    uniCauseValue_NormalUnspecified = 31,
    uniCauseValue_RequestedVPCI_VCI_NotAvailable = 35,
    uniCauseValue_VPCI_VCI_AssignmentFailure = 36,
    uniCauseValue_UserCellRateNotAvailable = 37,
    uniCauseValue_NWOutOfOrder = 38,
    uniCauseValue_TemporaryFailure = 41,
    uniCauseValue_AccessInformationDiscarded = 43,
    uniCauseValue_NoVPCI_VCI_Available = 45,
    uniCauseValue_ResourceUnavailable = 47,
    uniCauseValue_QoSUnavailable = 49,
    uniCauseValue_BearerCapabilityNotAuthorized = 57,
    uniCauseValue_BearerCapabilityNotAvailable = 58,
    uniCauseValue_ServiceOrOptionNotAvailable = 63,
    uniCauseValue_BearerCapabilityNotImplemented = 65,
    uniCauseValue_UnsupportedCombinationOfTrafficParameters = 73,
    uniCauseValue_AALParametersCannotBeSupported = 78,
    uniCauseValue_InvalidCallReferenceValue = 81,
    uniCauseValue_IdentifiedChannelDoesNotExist = 82,
    uniCauseValue_IncompatibleDestination = 88,
    uniCauseValue_InvalidEndpointReference = 89,
    uniCauseValue_InvalidTransitNWSelection = 91,
    uniCauseValue_TooManyPendingAddPartyRequests = 92,
    uniCauseValue_MandatoryIEIsMissing = 96,
    uniCauseValue_MessageTypeNonexistent = 97,
    uniCauseValue_IENonexistent = 99,
    uniCauseValue_InvalidIEContents = 100,
    uniCauseValue_MessageNotCompatibleWithCallState = 101,
    uniCauseValue_RecoveryOnTimerExpiry = 102,
    uniCauseValue_IncorrectMessageLength = 104,
    uniCauseValue_ProtocolError = 111
};

enum uniLocation
{
    uniLocation_User                       = B0000_0000,
    uniLocation_PrivateNWServingLocalUser  = B0000_0001,
    uniLocation_PublicNWServingLocalUser   = B0000_0010,
    uniLocation_TransitNW                  = B0000_0011,
    uniLocation_PublicNWServingRemoteUser  = B0000_0100,
    uniLocation_PrivateNWServingRemoteUser = B0000_0101,
    uniLocation_InternationalNW            = B0000_0111,
    uniLocation_NWBeyondIWPoint            = B0000_1010
};
    

#endif // __UNI_UNIDEFS_H__
