diff --git a/include/osmocom/rspro/ATR.h b/include/osmocom/rspro/ATR.h
new file mode 100644
index 0000000..e737109
--- /dev/null
+++ b/include/osmocom/rspro/ATR.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ATR_H_
+#define	_ATR_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ATR */
+typedef OCTET_STRING_t	 ATR_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ATR;
+asn_struct_free_f ATR_free;
+asn_struct_print_f ATR_print;
+asn_constr_check_f ATR_constraint;
+ber_type_decoder_f ATR_decode_ber;
+der_type_encoder_f ATR_encode_der;
+xer_type_decoder_f ATR_decode_xer;
+xer_type_encoder_f ATR_encode_xer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ATR_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/BankId.h b/include/osmocom/rspro/BankId.h
new file mode 100644
index 0000000..e24f7c5
--- /dev/null
+++ b/include/osmocom/rspro/BankId.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_BankId_H_
+#define	_BankId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BankId */
+typedef long	 BankId_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BankId;
+asn_struct_free_f BankId_free;
+asn_struct_print_f BankId_print;
+asn_constr_check_f BankId_constraint;
+ber_type_decoder_f BankId_decode_ber;
+der_type_encoder_f BankId_encode_der;
+xer_type_decoder_f BankId_decode_xer;
+xer_type_encoder_f BankId_encode_xer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BankId_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/BankSlot.h b/include/osmocom/rspro/BankSlot.h
new file mode 100644
index 0000000..44cf95d
--- /dev/null
+++ b/include/osmocom/rspro/BankSlot.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_BankSlot_H_
+#define	_BankSlot_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/BankId.h>
+#include <osmocom/rspro/SlotNumber.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BankSlot */
+typedef struct BankSlot {
+	BankId_t	 bankId;
+	SlotNumber_t	 slotNr;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} BankSlot_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BankSlot;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BankSlot_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/BankSlotStatusInd.h b/include/osmocom/rspro/BankSlotStatusInd.h
new file mode 100644
index 0000000..08b6fbb
--- /dev/null
+++ b/include/osmocom/rspro/BankSlotStatusInd.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_BankSlotStatusInd_H_
+#define	_BankSlotStatusInd_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/BankSlot.h>
+#include <osmocom/rspro/ClientSlot.h>
+#include <osmocom/rspro/SlotPhysStatus.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* BankSlotStatusInd */
+typedef struct BankSlotStatusInd {
+	BankSlot_t	 fromBankSlot;
+	ClientSlot_t	 toClientSlot;
+	SlotPhysStatus_t	 slotPhysStatus;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} BankSlotStatusInd_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_BankSlotStatusInd;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _BankSlotStatusInd_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ClientId.h b/include/osmocom/rspro/ClientId.h
new file mode 100644
index 0000000..9c7201f
--- /dev/null
+++ b/include/osmocom/rspro/ClientId.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ClientId_H_
+#define	_ClientId_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ClientId */
+typedef long	 ClientId_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ClientId;
+asn_struct_free_f ClientId_free;
+asn_struct_print_f ClientId_print;
+asn_constr_check_f ClientId_constraint;
+ber_type_decoder_f ClientId_decode_ber;
+der_type_encoder_f ClientId_encode_der;
+xer_type_decoder_f ClientId_decode_xer;
+xer_type_encoder_f ClientId_encode_xer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ClientId_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ClientSlot.h b/include/osmocom/rspro/ClientSlot.h
new file mode 100644
index 0000000..ee36650
--- /dev/null
+++ b/include/osmocom/rspro/ClientSlot.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ClientSlot_H_
+#define	_ClientSlot_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ClientId.h>
+#include <osmocom/rspro/SlotNumber.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ClientSlot */
+typedef struct ClientSlot {
+	ClientId_t	 clientId;
+	SlotNumber_t	 slotNr;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ClientSlot_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ClientSlot;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ClientSlot_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ClientSlotStatusInd.h b/include/osmocom/rspro/ClientSlotStatusInd.h
new file mode 100644
index 0000000..075a41a
--- /dev/null
+++ b/include/osmocom/rspro/ClientSlotStatusInd.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ClientSlotStatusInd_H_
+#define	_ClientSlotStatusInd_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ClientSlot.h>
+#include <osmocom/rspro/BankSlot.h>
+#include <osmocom/rspro/SlotPhysStatus.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ClientSlotStatusInd */
+typedef struct ClientSlotStatusInd {
+	ClientSlot_t	 fromClientSlot;
+	BankSlot_t	 toBankSlot;
+	SlotPhysStatus_t	 slotPhysStatus;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ClientSlotStatusInd_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ClientSlotStatusInd;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ClientSlotStatusInd_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ComponentIdentity.h b/include/osmocom/rspro/ComponentIdentity.h
new file mode 100644
index 0000000..166e670
--- /dev/null
+++ b/include/osmocom/rspro/ComponentIdentity.h
@@ -0,0 +1,50 @@
+/*
+ * 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>
diff --git a/include/osmocom/rspro/ComponentName.h b/include/osmocom/rspro/ComponentName.h
new file mode 100644
index 0000000..d57557a
--- /dev/null
+++ b/include/osmocom/rspro/ComponentName.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ComponentName_H_
+#define	_ComponentName_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <IA5String.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ComponentName */
+typedef IA5String_t	 ComponentName_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ComponentName;
+asn_struct_free_f ComponentName_free;
+asn_struct_print_f ComponentName_print;
+asn_constr_check_f ComponentName_constraint;
+ber_type_decoder_f ComponentName_decode_ber;
+der_type_encoder_f ComponentName_encode_der;
+xer_type_decoder_f ComponentName_decode_xer;
+xer_type_encoder_f ComponentName_encode_xer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ComponentName_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ComponentType.h b/include/osmocom/rspro/ComponentType.h
new file mode 100644
index 0000000..2eb2fc6
--- /dev/null
+++ b/include/osmocom/rspro/ComponentType.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ComponentType_H_
+#define	_ComponentType_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ComponentType {
+	ComponentType_remsimClient	= 0,
+	ComponentType_remsimServer	= 1,
+	ComponentType_remsimBankd	= 2
+} e_ComponentType;
+
+/* ComponentType */
+typedef long	 ComponentType_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ComponentType;
+asn_struct_free_f ComponentType_free;
+asn_struct_print_f ComponentType_print;
+asn_constr_check_f ComponentType_constraint;
+ber_type_decoder_f ComponentType_decode_ber;
+der_type_encoder_f ComponentType_encode_der;
+xer_type_decoder_f ComponentType_decode_xer;
+xer_type_encoder_f ComponentType_encode_xer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ComponentType_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ConfigClientReq.h b/include/osmocom/rspro/ConfigClientReq.h
new file mode 100644
index 0000000..670fb68
--- /dev/null
+++ b/include/osmocom/rspro/ConfigClientReq.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ConfigClientReq_H_
+#define	_ConfigClientReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ClientId.h>
+#include <osmocom/rspro/IpPort.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ConfigClientReq */
+typedef struct ConfigClientReq {
+	ClientId_t	 clientId;
+	IpPort_t	 bankd;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ConfigClientReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ConfigClientReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ConfigClientReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ConfigClientRes.h b/include/osmocom/rspro/ConfigClientRes.h
new file mode 100644
index 0000000..96c4441
--- /dev/null
+++ b/include/osmocom/rspro/ConfigClientRes.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ConfigClientRes_H_
+#define	_ConfigClientRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ResultCode.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ConfigClientRes */
+typedef struct ConfigClientRes {
+	ResultCode_t	 result;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ConfigClientRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ConfigClientRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ConfigClientRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ConnectBankReq.h b/include/osmocom/rspro/ConnectBankReq.h
new file mode 100644
index 0000000..468f8ba
--- /dev/null
+++ b/include/osmocom/rspro/ConnectBankReq.h
@@ -0,0 +1,45 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ConnectBankReq_H_
+#define	_ConnectBankReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ComponentIdentity.h>
+#include <osmocom/rspro/BankId.h>
+#include <osmocom/rspro/SlotNumber.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ConnectBankReq */
+typedef struct ConnectBankReq {
+	ComponentIdentity_t	 identity;
+	BankId_t	 bankId;
+	SlotNumber_t	 numberOfSlots;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ConnectBankReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ConnectBankReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ConnectBankReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ConnectBankRes.h b/include/osmocom/rspro/ConnectBankRes.h
new file mode 100644
index 0000000..20be498
--- /dev/null
+++ b/include/osmocom/rspro/ConnectBankRes.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ConnectBankRes_H_
+#define	_ConnectBankRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ComponentIdentity.h>
+#include <osmocom/rspro/ResultCode.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ConnectBankRes */
+typedef struct ConnectBankRes {
+	ComponentIdentity_t	 identity;
+	ResultCode_t	 result;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ConnectBankRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ConnectBankRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ConnectBankRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ConnectClientReq.h b/include/osmocom/rspro/ConnectClientReq.h
new file mode 100644
index 0000000..16eebec
--- /dev/null
+++ b/include/osmocom/rspro/ConnectClientReq.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ConnectClientReq_H_
+#define	_ConnectClientReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ComponentIdentity.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ConnectClientReq */
+typedef struct ConnectClientReq {
+	ComponentIdentity_t	 identity;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ConnectClientReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ConnectClientReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ConnectClientReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ConnectClientRes.h b/include/osmocom/rspro/ConnectClientRes.h
new file mode 100644
index 0000000..84fbe65
--- /dev/null
+++ b/include/osmocom/rspro/ConnectClientRes.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ConnectClientRes_H_
+#define	_ConnectClientRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ComponentIdentity.h>
+#include <osmocom/rspro/ResultCode.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* ConnectClientRes */
+typedef struct ConnectClientRes {
+	ComponentIdentity_t	 identity;
+	ResultCode_t	 result;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} ConnectClientRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ConnectClientRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ConnectClientRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/CreateMappingReq.h b/include/osmocom/rspro/CreateMappingReq.h
new file mode 100644
index 0000000..a6e2560
--- /dev/null
+++ b/include/osmocom/rspro/CreateMappingReq.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_CreateMappingReq_H_
+#define	_CreateMappingReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ClientSlot.h>
+#include <osmocom/rspro/BankSlot.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CreateMappingReq */
+typedef struct CreateMappingReq {
+	ClientSlot_t	 client;
+	BankSlot_t	 bank;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} CreateMappingReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CreateMappingReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CreateMappingReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/CreateMappingRes.h b/include/osmocom/rspro/CreateMappingRes.h
new file mode 100644
index 0000000..b95c20d
--- /dev/null
+++ b/include/osmocom/rspro/CreateMappingRes.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_CreateMappingRes_H_
+#define	_CreateMappingRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ResultCode.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* CreateMappingRes */
+typedef struct CreateMappingRes {
+	ResultCode_t	 result;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} CreateMappingRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_CreateMappingRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _CreateMappingRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/IpAddress.h b/include/osmocom/rspro/IpAddress.h
new file mode 100644
index 0000000..7e029e2
--- /dev/null
+++ b/include/osmocom/rspro/IpAddress.h
@@ -0,0 +1,49 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_IpAddress_H_
+#define	_IpAddress_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/Ipv4Address.h>
+#include <osmocom/rspro/Ipv6Address.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum IpAddress_PR {
+	IpAddress_PR_NOTHING,	/* No components present */
+	IpAddress_PR_ipv4,
+	IpAddress_PR_ipv6
+} IpAddress_PR;
+
+/* IpAddress */
+typedef struct IpAddress {
+	IpAddress_PR present;
+	union IpAddress_u {
+		Ipv4Address_t	 ipv4;
+		Ipv6Address_t	 ipv6;
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} IpAddress_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IpAddress;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _IpAddress_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/IpPort.h b/include/osmocom/rspro/IpPort.h
new file mode 100644
index 0000000..2ad3b27
--- /dev/null
+++ b/include/osmocom/rspro/IpPort.h
@@ -0,0 +1,39 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_IpPort_H_
+#define	_IpPort_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/IpAddress.h>
+#include <osmocom/rspro/PortNumber.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* IpPort */
+typedef struct IpPort {
+	IpAddress_t	 ip;
+	PortNumber_t	 port;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} IpPort_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_IpPort;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _IpPort_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/Ipv4Address.h b/include/osmocom/rspro/Ipv4Address.h
new file mode 100644
index 0000000..054bb2e
--- /dev/null
+++ b/include/osmocom/rspro/Ipv4Address.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_Ipv4Address_H_
+#define	_Ipv4Address_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Ipv4Address */
+typedef OCTET_STRING_t	 Ipv4Address_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Ipv4Address;
+asn_struct_free_f Ipv4Address_free;
+asn_struct_print_f Ipv4Address_print;
+asn_constr_check_f Ipv4Address_constraint;
+ber_type_decoder_f Ipv4Address_decode_ber;
+der_type_encoder_f Ipv4Address_encode_der;
+xer_type_decoder_f Ipv4Address_decode_xer;
+xer_type_encoder_f Ipv4Address_encode_xer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _Ipv4Address_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/Ipv6Address.h b/include/osmocom/rspro/Ipv6Address.h
new file mode 100644
index 0000000..9a2eca3
--- /dev/null
+++ b/include/osmocom/rspro/Ipv6Address.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_Ipv6Address_H_
+#define	_Ipv6Address_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <OCTET_STRING.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Ipv6Address */
+typedef OCTET_STRING_t	 Ipv6Address_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Ipv6Address;
+asn_struct_free_f Ipv6Address_free;
+asn_struct_print_f Ipv6Address_print;
+asn_constr_check_f Ipv6Address_constraint;
+ber_type_decoder_f Ipv6Address_decode_ber;
+der_type_encoder_f Ipv6Address_encode_der;
+xer_type_decoder_f Ipv6Address_decode_xer;
+xer_type_encoder_f Ipv6Address_encode_xer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _Ipv6Address_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/Makefile.am b/include/osmocom/rspro/Makefile.am
new file mode 100644
index 0000000..0bb7b82
--- /dev/null
+++ b/include/osmocom/rspro/Makefile.am
@@ -0,0 +1,38 @@
+noinst_HEADERS = \
+	ATR.h \
+	BankId.h \
+	BankSlot.h \
+	BankSlotStatusInd.h \
+	ClientId.h \
+	ClientSlot.h \
+	ClientSlotStatusInd.h \
+	ComponentIdentity.h \
+	ComponentName.h \
+	ComponentType.h \
+	ConfigClientReq.h \
+	ConfigClientRes.h \
+	ConnectBankReq.h \
+	ConnectBankRes.h \
+	ConnectClientReq.h \
+	ConnectClientRes.h \
+	CreateMappingReq.h \
+	CreateMappingRes.h \
+	IpAddress.h \
+	IpPort.h \
+	Ipv4Address.h \
+	Ipv6Address.h \
+	OperationTag.h \
+	PortNumber.h \
+	RemoveMappingReq.h \
+	RemoveMappingRes.h \
+	ResultCode.h \
+	RsproPDU.h \
+	RsproPDUchoice.h \
+	SetAtrReq.h \
+	SetAtrRes.h \
+	SlotNumber.h \
+	SlotPhysStatus.h \
+	TpduCardToModem.h \
+	TpduFlags.h \
+	TpduModemToCard.h \
+	$(NULL)
diff --git a/include/osmocom/rspro/OperationTag.h b/include/osmocom/rspro/OperationTag.h
new file mode 100644
index 0000000..293ee03
--- /dev/null
+++ b/include/osmocom/rspro/OperationTag.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_OperationTag_H_
+#define	_OperationTag_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* OperationTag */
+typedef long	 OperationTag_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_OperationTag;
+asn_struct_free_f OperationTag_free;
+asn_struct_print_f OperationTag_print;
+asn_constr_check_f OperationTag_constraint;
+ber_type_decoder_f OperationTag_decode_ber;
+der_type_encoder_f OperationTag_encode_der;
+xer_type_decoder_f OperationTag_decode_xer;
+xer_type_encoder_f OperationTag_encode_xer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _OperationTag_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/PortNumber.h b/include/osmocom/rspro/PortNumber.h
new file mode 100644
index 0000000..2a06e64
--- /dev/null
+++ b/include/osmocom/rspro/PortNumber.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_PortNumber_H_
+#define	_PortNumber_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* PortNumber */
+typedef long	 PortNumber_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_PortNumber;
+asn_struct_free_f PortNumber_free;
+asn_struct_print_f PortNumber_print;
+asn_constr_check_f PortNumber_constraint;
+ber_type_decoder_f PortNumber_decode_ber;
+der_type_encoder_f PortNumber_encode_der;
+xer_type_decoder_f PortNumber_decode_xer;
+xer_type_encoder_f PortNumber_encode_xer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _PortNumber_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/RemoveMappingReq.h b/include/osmocom/rspro/RemoveMappingReq.h
new file mode 100644
index 0000000..ea82c8d
--- /dev/null
+++ b/include/osmocom/rspro/RemoveMappingReq.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_RemoveMappingReq_H_
+#define	_RemoveMappingReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ClientSlot.h>
+#include <osmocom/rspro/BankSlot.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RemoveMappingReq */
+typedef struct RemoveMappingReq {
+	ClientSlot_t	 client;
+	BankSlot_t	 bank;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RemoveMappingReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RemoveMappingReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RemoveMappingReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/RemoveMappingRes.h b/include/osmocom/rspro/RemoveMappingRes.h
new file mode 100644
index 0000000..f731815
--- /dev/null
+++ b/include/osmocom/rspro/RemoveMappingRes.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_RemoveMappingRes_H_
+#define	_RemoveMappingRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ResultCode.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RemoveMappingRes */
+typedef struct RemoveMappingRes {
+	ResultCode_t	 result;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RemoveMappingRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RemoveMappingRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RemoveMappingRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/ResultCode.h b/include/osmocom/rspro/ResultCode.h
new file mode 100644
index 0000000..a45aa77
--- /dev/null
+++ b/include/osmocom/rspro/ResultCode.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_ResultCode_H_
+#define	_ResultCode_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeEnumerated.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum ResultCode {
+	ResultCode_ok	= 0,
+	ResultCode_illegalClientId	= 1,
+	ResultCode_illegalBankId	= 2,
+	ResultCode_illegalSlotId	= 3,
+	ResultCode_cardNotPresent	= 100,
+	ResultCode_cardUnresponsive	= 101,
+	ResultCode_cardTransmissionError	= 102
+	/*
+	 * Enumeration is extensible
+	 */
+} e_ResultCode;
+
+/* ResultCode */
+typedef long	 ResultCode_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_ResultCode;
+asn_struct_free_f ResultCode_free;
+asn_struct_print_f ResultCode_print;
+asn_constr_check_f ResultCode_constraint;
+ber_type_decoder_f ResultCode_decode_ber;
+der_type_encoder_f ResultCode_encode_der;
+xer_type_decoder_f ResultCode_decode_xer;
+xer_type_encoder_f ResultCode_encode_xer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ResultCode_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/RsproPDU.h b/include/osmocom/rspro/RsproPDU.h
new file mode 100644
index 0000000..171750a
--- /dev/null
+++ b/include/osmocom/rspro/RsproPDU.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_RsproPDU_H_
+#define	_RsproPDU_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+#include <osmocom/rspro/OperationTag.h>
+#include <osmocom/rspro/RsproPDUchoice.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* RsproPDU */
+typedef struct RsproPDU {
+	long	*version	/* DEFAULT 1 */;
+	OperationTag_t	 tag;
+	RsproPDUchoice_t	 msg;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RsproPDU_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RsproPDU;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RsproPDU_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/RsproPDUchoice.h b/include/osmocom/rspro/RsproPDUchoice.h
new file mode 100644
index 0000000..07d387e
--- /dev/null
+++ b/include/osmocom/rspro/RsproPDUchoice.h
@@ -0,0 +1,97 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_RsproPDUchoice_H_
+#define	_RsproPDUchoice_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ConnectBankReq.h>
+#include <osmocom/rspro/ConnectBankRes.h>
+#include <osmocom/rspro/ConnectClientReq.h>
+#include <osmocom/rspro/ConnectClientRes.h>
+#include <osmocom/rspro/CreateMappingReq.h>
+#include <osmocom/rspro/CreateMappingRes.h>
+#include <osmocom/rspro/RemoveMappingReq.h>
+#include <osmocom/rspro/RemoveMappingRes.h>
+#include <osmocom/rspro/ConfigClientReq.h>
+#include <osmocom/rspro/ConfigClientRes.h>
+#include <osmocom/rspro/SetAtrReq.h>
+#include <osmocom/rspro/SetAtrRes.h>
+#include <osmocom/rspro/TpduModemToCard.h>
+#include <osmocom/rspro/TpduCardToModem.h>
+#include <osmocom/rspro/ClientSlotStatusInd.h>
+#include <osmocom/rspro/BankSlotStatusInd.h>
+#include <constr_CHOICE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum RsproPDUchoice_PR {
+	RsproPDUchoice_PR_NOTHING,	/* No components present */
+	RsproPDUchoice_PR_connectBankReq,
+	RsproPDUchoice_PR_connectBankRes,
+	RsproPDUchoice_PR_connectClientReq,
+	RsproPDUchoice_PR_connectClientRes,
+	RsproPDUchoice_PR_createMappingReq,
+	RsproPDUchoice_PR_createMappingRes,
+	RsproPDUchoice_PR_removeMappingReq,
+	RsproPDUchoice_PR_removeMappingRes,
+	RsproPDUchoice_PR_configClientReq,
+	RsproPDUchoice_PR_configClientRes,
+	RsproPDUchoice_PR_setAtrReq,
+	RsproPDUchoice_PR_setAtrRes,
+	RsproPDUchoice_PR_tpduModemToCard,
+	RsproPDUchoice_PR_tpduCardToModem,
+	RsproPDUchoice_PR_clientSlotStatusInd,
+	RsproPDUchoice_PR_bankSlotStatusInd,
+	/* Extensions may appear below */
+	
+} RsproPDUchoice_PR;
+
+/* RsproPDUchoice */
+typedef struct RsproPDUchoice {
+	RsproPDUchoice_PR present;
+	union RsproPDUchoice_u {
+		ConnectBankReq_t	 connectBankReq;
+		ConnectBankRes_t	 connectBankRes;
+		ConnectClientReq_t	 connectClientReq;
+		ConnectClientRes_t	 connectClientRes;
+		CreateMappingReq_t	 createMappingReq;
+		CreateMappingRes_t	 createMappingRes;
+		RemoveMappingReq_t	 removeMappingReq;
+		RemoveMappingRes_t	 removeMappingRes;
+		ConfigClientReq_t	 configClientReq;
+		ConfigClientRes_t	 configClientRes;
+		SetAtrReq_t	 setAtrReq;
+		SetAtrRes_t	 setAtrRes;
+		TpduModemToCard_t	 tpduModemToCard;
+		TpduCardToModem_t	 tpduCardToModem;
+		ClientSlotStatusInd_t	 clientSlotStatusInd;
+		BankSlotStatusInd_t	 bankSlotStatusInd;
+		/*
+		 * This type is extensible,
+		 * possible extensions are below.
+		 */
+	} choice;
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} RsproPDUchoice_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_RsproPDUchoice;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _RsproPDUchoice_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/SetAtrReq.h b/include/osmocom/rspro/SetAtrReq.h
new file mode 100644
index 0000000..eae6831
--- /dev/null
+++ b/include/osmocom/rspro/SetAtrReq.h
@@ -0,0 +1,43 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_SetAtrReq_H_
+#define	_SetAtrReq_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ClientSlot.h>
+#include <osmocom/rspro/ATR.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SetAtrReq */
+typedef struct SetAtrReq {
+	ClientSlot_t	 slot;
+	ATR_t	 atr;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SetAtrReq_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SetAtrReq;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SetAtrReq_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/SetAtrRes.h b/include/osmocom/rspro/SetAtrRes.h
new file mode 100644
index 0000000..817dd01
--- /dev/null
+++ b/include/osmocom/rspro/SetAtrRes.h
@@ -0,0 +1,41 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_SetAtrRes_H_
+#define	_SetAtrRes_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ResultCode.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SetAtrRes */
+typedef struct SetAtrRes {
+	ResultCode_t	 result;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SetAtrRes_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SetAtrRes;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SetAtrRes_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/SlotNumber.h b/include/osmocom/rspro/SlotNumber.h
new file mode 100644
index 0000000..15d7fcd
--- /dev/null
+++ b/include/osmocom/rspro/SlotNumber.h
@@ -0,0 +1,38 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_SlotNumber_H_
+#define	_SlotNumber_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SlotNumber */
+typedef long	 SlotNumber_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SlotNumber;
+asn_struct_free_f SlotNumber_free;
+asn_struct_print_f SlotNumber_print;
+asn_constr_check_f SlotNumber_constraint;
+ber_type_decoder_f SlotNumber_decode_ber;
+der_type_encoder_f SlotNumber_encode_der;
+xer_type_decoder_f SlotNumber_decode_xer;
+xer_type_encoder_f SlotNumber_encode_xer;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SlotNumber_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/SlotPhysStatus.h b/include/osmocom/rspro/SlotPhysStatus.h
new file mode 100644
index 0000000..b77585a
--- /dev/null
+++ b/include/osmocom/rspro/SlotPhysStatus.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_SlotPhysStatus_H_
+#define	_SlotPhysStatus_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* SlotPhysStatus */
+typedef struct SlotPhysStatus {
+	BOOLEAN_t	 resetActive;
+	BOOLEAN_t	*vccPresent	/* OPTIONAL */;
+	BOOLEAN_t	*clkActive	/* OPTIONAL */;
+	BOOLEAN_t	*cardPresent	/* OPTIONAL */;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} SlotPhysStatus_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SlotPhysStatus;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _SlotPhysStatus_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/TpduCardToModem.h b/include/osmocom/rspro/TpduCardToModem.h
new file mode 100644
index 0000000..5e94125
--- /dev/null
+++ b/include/osmocom/rspro/TpduCardToModem.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_TpduCardToModem_H_
+#define	_TpduCardToModem_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/BankSlot.h>
+#include <osmocom/rspro/ClientSlot.h>
+#include <osmocom/rspro/TpduFlags.h>
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TpduCardToModem */
+typedef struct TpduCardToModem {
+	BankSlot_t	 fromBankSlot;
+	ClientSlot_t	 toClientSlot;
+	TpduFlags_t	 flags;
+	OCTET_STRING_t	 data;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} TpduCardToModem_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TpduCardToModem;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _TpduCardToModem_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/TpduFlags.h b/include/osmocom/rspro/TpduFlags.h
new file mode 100644
index 0000000..c8bfc5a
--- /dev/null
+++ b/include/osmocom/rspro/TpduFlags.h
@@ -0,0 +1,44 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_TpduFlags_H_
+#define	_TpduFlags_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <BOOLEAN.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TpduFlags */
+typedef struct TpduFlags {
+	BOOLEAN_t	 tpduHeaderPresent;
+	BOOLEAN_t	 finalPart;
+	BOOLEAN_t	 procByteContinueTx;
+	BOOLEAN_t	 procByteContinueRx;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} TpduFlags_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TpduFlags;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _TpduFlags_H_ */
+#include <asn_internal.h>
diff --git a/include/osmocom/rspro/TpduModemToCard.h b/include/osmocom/rspro/TpduModemToCard.h
new file mode 100644
index 0000000..7ec3989
--- /dev/null
+++ b/include/osmocom/rspro/TpduModemToCard.h
@@ -0,0 +1,47 @@
+/*
+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
+ * From ASN.1 module "RSPRO"
+ * 	found in "../../asn1/RSPRO.asn"
+ */
+
+#ifndef	_TpduModemToCard_H_
+#define	_TpduModemToCard_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <osmocom/rspro/ClientSlot.h>
+#include <osmocom/rspro/BankSlot.h>
+#include <osmocom/rspro/TpduFlags.h>
+#include <OCTET_STRING.h>
+#include <constr_SEQUENCE.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* TpduModemToCard */
+typedef struct TpduModemToCard {
+	ClientSlot_t	 fromClientSlot;
+	BankSlot_t	 toBankSlot;
+	TpduFlags_t	 flags;
+	OCTET_STRING_t	 data;
+	/*
+	 * This type is extensible,
+	 * possible extensions are below.
+	 */
+	
+	/* Context for parsing across buffer boundaries */
+	asn_struct_ctx_t _asn_ctx;
+} TpduModemToCard_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_TpduModemToCard;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _TpduModemToCard_H_ */
+#include <asn_internal.h>
