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

#ifndef	_ComponentIdentity_H_
#define	_ComponentIdentity_H_


#include <asn_application.h>

/* Including external dependencies */
#include <osmocom/rspro/ComponentType.h>
#include <osmocom/rspro/ComponentName.h>
#include <constr_SEQUENCE.h>

#ifdef __cplusplus
extern "C" {
#endif

/* ComponentIdentity */
typedef struct ComponentIdentity {
	ComponentType_t	 type;
	ComponentName_t	 name;
	ComponentName_t	 software;
	ComponentName_t	 swVersion;
	ComponentName_t	*hwManufacturer	/* OPTIONAL */;
	ComponentName_t	*hwModel	/* OPTIONAL */;
	ComponentName_t	*hwSerialNr	/* OPTIONAL */;
	ComponentName_t	*hwVersion	/* OPTIONAL */;
	ComponentName_t	*fwVersion	/* OPTIONAL */;
	/*
	 * This type is extensible,
	 * possible extensions are below.
	 */
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ComponentIdentity_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ComponentIdentity;

#ifdef __cplusplus
}
#endif

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