// Copyright (c) 2001-2009 Objective Systems, Inc. (http://www.obj-sys.com) 
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available 
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//

/**
 * This file was generated by the Objective Systems ASN1C Compiler
 * (http://www.obj-sys.com).
 */
#ifndef SUPL_START_H
#define SUPL_START_H

#include <stdio.h>
#include <stdlib.h>
#include "rtkey.h"
#include "rtpersrc/asn1PerCppTypes.h"
#include "ULP-Components.h"

/**
 * Header file for ASN.1 module SUPL-START
 */
/**************************************************************/
/*                                                            */
/*  PosTechnology                                             */
/*                                                            */
/**************************************************************/

#define TV_PosTechnology	(TM_UNIV|TM_CONS|16)

struct ASN1T_PosTechnology {
   OSBOOL agpsSETassisted;
   OSBOOL agpsSETBased;
   OSBOOL autonomousGPS;
   OSBOOL aFLT;
   OSBOOL eCID;
   OSBOOL eOTD;
   OSBOOL oTDOA;
   IMPORT_C ASN1T_PosTechnology ();
} ;

IMPORT_C int asn1PE_PosTechnology (OSCTXT* pctxt, ASN1T_PosTechnology* pvalue);

IMPORT_C int asn1PD_PosTechnology (OSCTXT* pctxt, ASN1T_PosTechnology* pvalue);

IMPORT_C void asn1Print_PosTechnology
   (const char* name, ASN1T_PosTechnology* pvalue);

/**************************************************************/
/*                                                            */
/*  PrefMethod                                                */
/*                                                            */
/**************************************************************/

#define TV_PrefMethod	(TM_UNIV|TM_PRIM|10)

struct PrefMethod {
   enum Root {
      agpsSETassistedPreferred = 0,
      agpsSETBasedPreferred = 1,
      noPreference = 2
   } ;
} ;

typedef OSUINT32 ASN1T_PrefMethod;

IMPORT_C int asn1PE_PrefMethod (OSCTXT* pctxt, ASN1T_PrefMethod value);

IMPORT_C int asn1PD_PrefMethod (OSCTXT* pctxt, ASN1T_PrefMethod* pvalue);

IMPORT_C void asn1Print_PrefMethod
   (const char* name, ASN1T_PrefMethod* pvalue);

IMPORT_C const OSUTF8CHAR* ASN1T_PrefMethod_ToString (OSINT32 value);

IMPORT_C int ASN1T_PrefMethod_ToEnum (OSCTXT* pctxt,
   const OSUTF8CHAR* value, ASN1T_PrefMethod* pvalue);

/**************************************************************/
/*                                                            */
/*  PosProtocol                                               */
/*                                                            */
/**************************************************************/

#define TV_PosProtocol	(TM_UNIV|TM_CONS|16)

struct ASN1T_PosProtocol {
   OSBOOL tia801;
   OSBOOL rrlp;
   OSBOOL rrc;
   IMPORT_C ASN1T_PosProtocol ();
} ;

IMPORT_C int asn1PE_PosProtocol (OSCTXT* pctxt, ASN1T_PosProtocol* pvalue);

IMPORT_C int asn1PD_PosProtocol (OSCTXT* pctxt, ASN1T_PosProtocol* pvalue);

IMPORT_C void asn1Print_PosProtocol
   (const char* name, ASN1T_PosProtocol* pvalue);

/**************************************************************/
/*                                                            */
/*  SETCapabilities                                           */
/*                                                            */
/**************************************************************/

#define TV_SETCapabilities	(TM_UNIV|TM_CONS|16)

struct ASN1T_SETCapabilities {
   ASN1T_PosTechnology posTechnology;
   ASN1T_PrefMethod prefMethod;
   ASN1T_PosProtocol posProtocol;
   IMPORT_C ASN1T_SETCapabilities ();
} ;

IMPORT_C int asn1PE_SETCapabilities (OSCTXT* pctxt, ASN1T_SETCapabilities* pvalue);

IMPORT_C int asn1PD_SETCapabilities (OSCTXT* pctxt, ASN1T_SETCapabilities* pvalue);

IMPORT_C void asn1Print_SETCapabilities
   (const char* name, ASN1T_SETCapabilities* pvalue);

/**************************************************************/
/*                                                            */
/*  SUPLSTART                                                 */
/*                                                            */
/**************************************************************/

#define TV_SUPLSTART	(TM_UNIV|TM_CONS|16)

struct ASN1T_SUPLSTART {
   struct {
      unsigned qoPPresent : 1;
   } m;
   ASN1T_SETCapabilities sETCapabilities;
   ASN1T_LocationId locationId;
   ASN1T_QoP qoP;
   IMPORT_C ASN1T_SUPLSTART ();
} ;

IMPORT_C int asn1PE_SUPLSTART (OSCTXT* pctxt, ASN1T_SUPLSTART* pvalue);

IMPORT_C int asn1PD_SUPLSTART (OSCTXT* pctxt, ASN1T_SUPLSTART* pvalue);

IMPORT_C void asn1Print_SUPLSTART
   (const char* name, ASN1T_SUPLSTART* pvalue);

IMPORT_C void asn1Free_SUPLSTART (OSCTXT *pctxt, ASN1T_SUPLSTART* pvalue);

#endif
