/*
 * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
 * From ASN.1 module "SABP-IEs"
 * 	found in "../../asn1/sabp/SABP-IEs.asn"
 */

#ifndef	_SABP_Repetition_Period_H_
#define	_SABP_Repetition_Period_H_


#include <asn_application.h>

/* Including external dependencies */
#include <NativeInteger.h>

#ifdef __cplusplus
extern "C" {
#endif

/* SABP_Repetition-Period */
typedef long	 SABP_Repetition_Period_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_SABP_Repetition_Period;
asn_struct_free_f SABP_Repetition_Period_free;
asn_struct_print_f SABP_Repetition_Period_print;
asn_constr_check_f SABP_Repetition_Period_constraint;
ber_type_decoder_f SABP_Repetition_Period_decode_ber;
der_type_encoder_f SABP_Repetition_Period_encode_der;
xer_type_decoder_f SABP_Repetition_Period_decode_xer;
xer_type_encoder_f SABP_Repetition_Period_encode_xer;
per_type_decoder_f SABP_Repetition_Period_decode_uper;
per_type_encoder_f SABP_Repetition_Period_encode_uper;
per_type_decoder_f SABP_Repetition_Period_decode_aper;
per_type_encoder_f SABP_Repetition_Period_encode_aper;

#ifdef __cplusplus
}
#endif

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