/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "NR-RRC-Definitions"
 * 	found in "asn/nr-rrc-15.6.0.asn1"
 * 	`asn1c -fcompound-names -pdu=all -findirect-choice -fno-include-deps -gen-PER -no-gen-OER -no-gen-example -D rrc`
 */

#ifndef	_ASN_RRC_SRS_Resource_H_
#define	_ASN_RRC_SRS_Resource_H_


#include <asn_application.h>

/* Including external dependencies */
#include "ASN_RRC_SRS-ResourceId.h"
#include <NativeEnumerated.h>
#include <NativeInteger.h>
#include <constr_SEQUENCE.h>
#include <constr_CHOICE.h>
#include "ASN_RRC_SRS-PeriodicityAndOffset.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum ASN_RRC_SRS_Resource__nrofSRS_Ports {
	ASN_RRC_SRS_Resource__nrofSRS_Ports_port1	= 0,
	ASN_RRC_SRS_Resource__nrofSRS_Ports_ports2	= 1,
	ASN_RRC_SRS_Resource__nrofSRS_Ports_ports4	= 2
} e_ASN_RRC_SRS_Resource__nrofSRS_Ports;
typedef enum ASN_RRC_SRS_Resource__ptrs_PortIndex {
	ASN_RRC_SRS_Resource__ptrs_PortIndex_n0	= 0,
	ASN_RRC_SRS_Resource__ptrs_PortIndex_n1	= 1
} e_ASN_RRC_SRS_Resource__ptrs_PortIndex;
typedef enum ASN_RRC_SRS_Resource__transmissionComb_PR {
	ASN_RRC_SRS_Resource__transmissionComb_PR_NOTHING,	/* No components present */
	ASN_RRC_SRS_Resource__transmissionComb_PR_n2,
	ASN_RRC_SRS_Resource__transmissionComb_PR_n4
} ASN_RRC_SRS_Resource__transmissionComb_PR;
typedef enum ASN_RRC_SRS_Resource__resourceMapping__nrofSymbols {
	ASN_RRC_SRS_Resource__resourceMapping__nrofSymbols_n1	= 0,
	ASN_RRC_SRS_Resource__resourceMapping__nrofSymbols_n2	= 1,
	ASN_RRC_SRS_Resource__resourceMapping__nrofSymbols_n4	= 2
} e_ASN_RRC_SRS_Resource__resourceMapping__nrofSymbols;
typedef enum ASN_RRC_SRS_Resource__resourceMapping__repetitionFactor {
	ASN_RRC_SRS_Resource__resourceMapping__repetitionFactor_n1	= 0,
	ASN_RRC_SRS_Resource__resourceMapping__repetitionFactor_n2	= 1,
	ASN_RRC_SRS_Resource__resourceMapping__repetitionFactor_n4	= 2
} e_ASN_RRC_SRS_Resource__resourceMapping__repetitionFactor;
typedef enum ASN_RRC_SRS_Resource__groupOrSequenceHopping {
	ASN_RRC_SRS_Resource__groupOrSequenceHopping_neither	= 0,
	ASN_RRC_SRS_Resource__groupOrSequenceHopping_groupHopping	= 1,
	ASN_RRC_SRS_Resource__groupOrSequenceHopping_sequenceHopping	= 2
} e_ASN_RRC_SRS_Resource__groupOrSequenceHopping;
typedef enum ASN_RRC_SRS_Resource__resourceType_PR {
	ASN_RRC_SRS_Resource__resourceType_PR_NOTHING,	/* No components present */
	ASN_RRC_SRS_Resource__resourceType_PR_aperiodic,
	ASN_RRC_SRS_Resource__resourceType_PR_semi_persistent,
	ASN_RRC_SRS_Resource__resourceType_PR_periodic
} ASN_RRC_SRS_Resource__resourceType_PR;

/* Forward declarations */
struct ASN_RRC_SRS_SpatialRelationInfo;

/* ASN_RRC_SRS-Resource */
typedef struct ASN_RRC_SRS_Resource {
	ASN_RRC_SRS_ResourceId_t	 srs_ResourceId;
	long	 nrofSRS_Ports;
	long	*ptrs_PortIndex;	/* OPTIONAL */
	struct ASN_RRC_SRS_Resource__transmissionComb {
		ASN_RRC_SRS_Resource__transmissionComb_PR present;
		union ASN_RRC_SRS_Resource__ASN_RRC_transmissionComb_u {
			struct ASN_RRC_SRS_Resource__transmissionComb__n2 {
				long	 combOffset_n2;
				long	 cyclicShift_n2;
				
				/* Context for parsing across buffer boundaries */
				asn_struct_ctx_t _asn_ctx;
			} *n2;
			struct ASN_RRC_SRS_Resource__transmissionComb__n4 {
				long	 combOffset_n4;
				long	 cyclicShift_n4;
				
				/* Context for parsing across buffer boundaries */
				asn_struct_ctx_t _asn_ctx;
			} *n4;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} transmissionComb;
	struct ASN_RRC_SRS_Resource__resourceMapping {
		long	 startPosition;
		long	 nrofSymbols;
		long	 repetitionFactor;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} resourceMapping;
	long	 freqDomainPosition;
	long	 freqDomainShift;
	struct ASN_RRC_SRS_Resource__freqHopping {
		long	 c_SRS;
		long	 b_SRS;
		long	 b_hop;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} freqHopping;
	long	 groupOrSequenceHopping;
	struct ASN_RRC_SRS_Resource__resourceType {
		ASN_RRC_SRS_Resource__resourceType_PR present;
		union ASN_RRC_SRS_Resource__ASN_RRC_resourceType_u {
			struct ASN_RRC_SRS_Resource__resourceType__aperiodic {
				/*
				 * This type is extensible,
				 * possible extensions are below.
				 */
				
				/* Context for parsing across buffer boundaries */
				asn_struct_ctx_t _asn_ctx;
			} *aperiodic;
			struct ASN_RRC_SRS_Resource__resourceType__semi_persistent {
				ASN_RRC_SRS_PeriodicityAndOffset_t	 periodicityAndOffset_sp;
				/*
				 * This type is extensible,
				 * possible extensions are below.
				 */
				
				/* Context for parsing across buffer boundaries */
				asn_struct_ctx_t _asn_ctx;
			} *semi_persistent;
			struct ASN_RRC_SRS_Resource__resourceType__periodic {
				ASN_RRC_SRS_PeriodicityAndOffset_t	 periodicityAndOffset_p;
				/*
				 * This type is extensible,
				 * possible extensions are below.
				 */
				
				/* Context for parsing across buffer boundaries */
				asn_struct_ctx_t _asn_ctx;
			} *periodic;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} resourceType;
	long	 sequenceId;
	struct ASN_RRC_SRS_SpatialRelationInfo	*spatialRelationInfo;	/* OPTIONAL */
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ASN_RRC_SRS_Resource_t;

/* Implementation */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_nrofSRS_Ports_3;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_ptrs_PortIndex_7;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_nrofSymbols_19;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_repetitionFactor_23;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_groupOrSequenceHopping_33;	// (Use -fall-defs-global to expose) */
extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_SRS_Resource;
extern asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_SRS_Resource_specs_1;
extern asn_TYPE_member_t asn_MBR_ASN_RRC_SRS_Resource_1[12];

#ifdef __cplusplus
}
#endif

#endif	/* _ASN_RRC_SRS_Resource_H_ */
#include <asn_internal.h>
