/*
 * 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_ConfiguredGrantConfig_H_
#define	_ASN_RRC_ConfiguredGrantConfig_H_


#include <asn_application.h>

/* Including external dependencies */
#include <NativeEnumerated.h>
#include "ASN_RRC_DMRS-UplinkConfig.h"
#include "ASN_RRC_P0-PUSCH-AlphaSetId.h"
#include <NativeInteger.h>
#include <BIT_STRING.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum ASN_RRC_ConfiguredGrantConfig__frequencyHopping {
	ASN_RRC_ConfiguredGrantConfig__frequencyHopping_intraSlot	= 0,
	ASN_RRC_ConfiguredGrantConfig__frequencyHopping_interSlot	= 1
} e_ASN_RRC_ConfiguredGrantConfig__frequencyHopping;
typedef enum ASN_RRC_ConfiguredGrantConfig__mcs_Table {
	ASN_RRC_ConfiguredGrantConfig__mcs_Table_qam256	= 0,
	ASN_RRC_ConfiguredGrantConfig__mcs_Table_qam64LowSE	= 1
} e_ASN_RRC_ConfiguredGrantConfig__mcs_Table;
typedef enum ASN_RRC_ConfiguredGrantConfig__mcs_TableTransformPrecoder {
	ASN_RRC_ConfiguredGrantConfig__mcs_TableTransformPrecoder_qam256	= 0,
	ASN_RRC_ConfiguredGrantConfig__mcs_TableTransformPrecoder_qam64LowSE	= 1
} e_ASN_RRC_ConfiguredGrantConfig__mcs_TableTransformPrecoder;
typedef enum ASN_RRC_ConfiguredGrantConfig__resourceAllocation {
	ASN_RRC_ConfiguredGrantConfig__resourceAllocation_resourceAllocationType0	= 0,
	ASN_RRC_ConfiguredGrantConfig__resourceAllocation_resourceAllocationType1	= 1,
	ASN_RRC_ConfiguredGrantConfig__resourceAllocation_dynamicSwitch	= 2
} e_ASN_RRC_ConfiguredGrantConfig__resourceAllocation;
typedef enum ASN_RRC_ConfiguredGrantConfig__rbg_Size {
	ASN_RRC_ConfiguredGrantConfig__rbg_Size_config2	= 0
} e_ASN_RRC_ConfiguredGrantConfig__rbg_Size;
typedef enum ASN_RRC_ConfiguredGrantConfig__powerControlLoopToUse {
	ASN_RRC_ConfiguredGrantConfig__powerControlLoopToUse_n0	= 0,
	ASN_RRC_ConfiguredGrantConfig__powerControlLoopToUse_n1	= 1
} e_ASN_RRC_ConfiguredGrantConfig__powerControlLoopToUse;
typedef enum ASN_RRC_ConfiguredGrantConfig__transformPrecoder {
	ASN_RRC_ConfiguredGrantConfig__transformPrecoder_enabled	= 0,
	ASN_RRC_ConfiguredGrantConfig__transformPrecoder_disabled	= 1
} e_ASN_RRC_ConfiguredGrantConfig__transformPrecoder;
typedef enum ASN_RRC_ConfiguredGrantConfig__repK {
	ASN_RRC_ConfiguredGrantConfig__repK_n1	= 0,
	ASN_RRC_ConfiguredGrantConfig__repK_n2	= 1,
	ASN_RRC_ConfiguredGrantConfig__repK_n4	= 2,
	ASN_RRC_ConfiguredGrantConfig__repK_n8	= 3
} e_ASN_RRC_ConfiguredGrantConfig__repK;
typedef enum ASN_RRC_ConfiguredGrantConfig__repK_RV {
	ASN_RRC_ConfiguredGrantConfig__repK_RV_s1_0231	= 0,
	ASN_RRC_ConfiguredGrantConfig__repK_RV_s2_0303	= 1,
	ASN_RRC_ConfiguredGrantConfig__repK_RV_s3_0000	= 2
} e_ASN_RRC_ConfiguredGrantConfig__repK_RV;
typedef enum ASN_RRC_ConfiguredGrantConfig__periodicity {
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym2	= 0,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym7	= 1,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym1x14	= 2,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym2x14	= 3,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym4x14	= 4,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym5x14	= 5,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym8x14	= 6,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym10x14	= 7,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym16x14	= 8,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym20x14	= 9,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym32x14	= 10,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym40x14	= 11,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym64x14	= 12,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym80x14	= 13,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym128x14	= 14,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym160x14	= 15,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym256x14	= 16,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym320x14	= 17,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym512x14	= 18,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym640x14	= 19,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym1024x14	= 20,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym1280x14	= 21,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym2560x14	= 22,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym5120x14	= 23,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym6	= 24,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym1x12	= 25,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym2x12	= 26,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym4x12	= 27,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym5x12	= 28,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym8x12	= 29,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym10x12	= 30,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym16x12	= 31,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym20x12	= 32,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym32x12	= 33,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym40x12	= 34,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym64x12	= 35,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym80x12	= 36,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym128x12	= 37,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym160x12	= 38,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym256x12	= 39,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym320x12	= 40,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym512x12	= 41,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym640x12	= 42,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym1280x12	= 43,
	ASN_RRC_ConfiguredGrantConfig__periodicity_sym2560x12	= 44
} e_ASN_RRC_ConfiguredGrantConfig__periodicity;

/* Forward declarations */
struct ASN_RRC_SetupRelease_CG_UCI_OnPUSCH;

/* ASN_RRC_ConfiguredGrantConfig */
typedef struct ASN_RRC_ConfiguredGrantConfig {
	long	*frequencyHopping;	/* OPTIONAL */
	ASN_RRC_DMRS_UplinkConfig_t	 cg_DMRS_Configuration;
	long	*mcs_Table;	/* OPTIONAL */
	long	*mcs_TableTransformPrecoder;	/* OPTIONAL */
	struct ASN_RRC_SetupRelease_CG_UCI_OnPUSCH	*uci_OnPUSCH;	/* OPTIONAL */
	long	 resourceAllocation;
	long	*rbg_Size;	/* OPTIONAL */
	long	 powerControlLoopToUse;
	ASN_RRC_P0_PUSCH_AlphaSetId_t	 p0_PUSCH_Alpha;
	long	*transformPrecoder;	/* OPTIONAL */
	long	 nrofHARQ_Processes;
	long	 repK;
	long	*repK_RV;	/* OPTIONAL */
	long	 periodicity;
	long	*configuredGrantTimer;	/* OPTIONAL */
	struct ASN_RRC_ConfiguredGrantConfig__rrc_ConfiguredUplinkGrant {
		long	 timeDomainOffset;
		long	 timeDomainAllocation;
		BIT_STRING_t	 frequencyDomainAllocation;
		long	 antennaPort;
		long	*dmrs_SeqInitialization;	/* OPTIONAL */
		long	 precodingAndNumberOfLayers;
		long	*srs_ResourceIndicator;	/* OPTIONAL */
		long	 mcsAndTBS;
		long	*frequencyHoppingOffset;	/* OPTIONAL */
		long	 pathlossReferenceIndex;
		/*
		 * This type is extensible,
		 * possible extensions are below.
		 */
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} *rrc_ConfiguredUplinkGrant;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ASN_RRC_ConfiguredGrantConfig_t;

/* Implementation */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_frequencyHopping_2;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_mcs_Table_6;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_mcs_TableTransformPrecoder_9;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_resourceAllocation_13;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_rbg_Size_17;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_powerControlLoopToUse_19;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_transformPrecoder_23;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_repK_27;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_repK_RV_32;	// (Use -fall-defs-global to expose) */
/* extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_periodicity_36;	// (Use -fall-defs-global to expose) */
extern asn_TYPE_descriptor_t asn_DEF_ASN_RRC_ConfiguredGrantConfig;
extern asn_SEQUENCE_specifics_t asn_SPC_ASN_RRC_ConfiguredGrantConfig_specs_1;
extern asn_TYPE_member_t asn_MBR_ASN_RRC_ConfiguredGrantConfig_1[16];

#ifdef __cplusplus
}
#endif

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