initial checkin of osmo-remsim

This adds some initial code, particularly the ASN.1 definition of the
RSPRO protocol, related makefile to build it using ffasn1c, and our
usual autoconf infrastructure to build it.

Change-Id: Ibaa993b59e9a65a0242b0f42b27d9cd29f8e1878
This commit is contained in:
Harald Welte 2018-08-13 18:32:36 +02:00
commit 3aa901da56
89 changed files with 6270 additions and 0 deletions

29
.gitignore vendored Normal file
View File

@ -0,0 +1,29 @@
*.o
*.lo
*.la
*.a
*.so
*~
.*.swp
.deps
.version
.tarball-version
autom4te.cache
aclocal.m4
config.guess
config.log
config.status
config.sub
configure
compile
depcomp
install-sh
libtool
ltmain.sh
missing
Makefile.in
Makefile
Makefile.am.sample
tags
m4
gen_rspro.stamp

15
Makefile.am Normal file
View File

@ -0,0 +1,15 @@
AUTOMAKE_OPTIONS = foreign dist-bzip2
SUBDIRS = src include
EXTRA_DIST = asn1 .version README.md
pkgcofigdir = $(libdir)/pkgconfig
@RELMAKE@
BUILT_SOURCES = $(top_srcdir)/.version
$(top_srcdir)/.version:
echo $(VERSION) > $@-t && mv $@-t $@
dist-hook:
echo $(VERSION) > $(distdir)/.tarball-version

4
README.md Normal file
View File

@ -0,0 +1,4 @@
osmo-remsim - Osmocom remote SIM software suite
===============================================
TBD

275
asn1/RSPRO.asn Normal file
View File

@ -0,0 +1,275 @@
----------------------------------------------------------------------
-- RSPRO - Remote SIM Protocol, part of Osmocom Remote SIM Suite
-- (C) 2018 by Harald Welte <laforge@gnumonks.org>
----------------------------------------------------------------------
RSPRO {} DEFINITIONS
IMPLICIT TAGS
::=
BEGIN
EXPORTS
RsproPDU
;
----------------------------------------------------------------------
-- Elementary Data Types
----------------------------------------------------------------------
-- Some random ID the requestor can chose and which the client echos back in a response.
-- This allows multiple outstanding commands in flight and matching of responses to requests.
OperationTag ::= INTEGER(0..2147483647)
-- Unique identifier of a given SIM bank
BankId ::= INTEGER(0..1023)
-- Unique identifier of a given client (modem)
ClientId ::= INTEGER(0..1023)
ComponentType ::= ENUMERATED {
-- client: Modems / Phones
remsimClient (0),
-- server: Coordination
remsimServer (1),
-- bank daemon: SIM cards
remsimBankd (2)
}
ComponentName ::= IA5String (SIZE (1..32))
ComponentIdentity ::= SEQUENCE {
type ComponentType,
name ComponentName,
software [0] ComponentName,
swVersion [1] ComponentName,
hwManufacturer [2] ComponentName OPTIONAL,
hwModel [3] ComponentName OPTIONAL,
hwSerialNr [4] ComponentName OPTIONAL,
hwVersion [5] ComponentName OPTIONAL,
fwVersion [6] ComponentName OPTIONAL,
...
}
-- IP address / port details
Ipv4Address ::= OCTET STRING (SIZE (4))
Ipv6Address ::= OCTET STRING (SIZE (16))
IpAddress ::= CHOICE {
ipv4 [0] Ipv4Address,
ipv6 [1] Ipv6Address
}
PortNumber ::= INTEGER (0..65535)
IpPort ::= SEQUENCE {
ip IpAddress,
port PortNumber
}
-- Result of a given operation
ResultCode ::= ENUMERATED {
ok (0),
-- client / bank / slot ID not accepted
illegalClientId (1),
illegalBankId (2),
illegalSlotId (3),
-- no card is present in given slot
cardNotPresent (100),
-- card is present but unresponsive in given slot
cardUnresponsive (101),
-- unrecoverable transmission errors detected
cardTransmissionError (102),
...
}
-- Slot number within a SIM bank or a client.
SlotNumber ::= INTEGER(0..1023)
-- Slot identity on client (modem) side
ClientSlot ::= SEQUENCE {
clientId ClientId,
slotNr SlotNumber,
...
}
-- Slot identity on SIM bank side
BankSlot ::= SEQUENCE {
bankId BankId,
slotNr SlotNumber,
...
}
ATR ::= OCTET STRING (SIZE (1..55))
-- flags related to a TPDU in either of the two directions
TpduFlags ::= SEQUENCE {
-- indicates a TPDU header is present in this message
tpduHeaderPresent BOOLEAN,
-- indicates last part of transmission in this direction
finalPart BOOLEAN,
-- indicates a PB is present and we should continue with TX
procByteContinueTx BOOLEAN,
-- indicates a PB is present and we should continue with RX
procByteContinueRx BOOLEAN,
...
}
--- physical state of a given slot
SlotPhysStatus ::= SEQUENCE {
-- is RST activated by the modem?
resetActive [0] BOOLEAN,
-- is VCC applied by the modem?
vccPresent [1] BOOLEAN OPTIONAL,
-- is CLK applied by the modem?
clkActive [2] BOOLEAN OPTIONAL, -- not all hardware supports this
-- is card presence signalled to the modem?
cardPresent [3] BOOLEAN OPTIONAL,
...
}
----------------------------------------------------------------------
-- Messages
----------------------------------------------------------------------
-- SIM Bank connects to central server
ConnectBankReq ::= SEQUENCE {
-- identity of the bank that is connecting to the server
identity ComponentIdentity,
-- bank number, pre-configured on bank side
bankId BankId,
numberOfSlots SlotNumber,
...
}
ConnectBankRes ::= SEQUENCE {
-- identity of the server to which the bank is connecting
identity ComponentIdentity,
result ResultCode,
...
}
ConnectClientReq ::= SEQUENCE {
-- identity of the bank that is connecting to the server
identity ComponentIdentity,
...
}
ConnectClientRes ::= SEQUENCE {
-- identity of the bnak to which the client is connecting
identity ComponentIdentity,
result ResultCode,
...
}
-- create a mapping between a given Bank:Slot <-> Client:Slot
CreateMappingReq ::= SEQUENCE {
client ClientSlot,
bank BankSlot,
...
}
CreateMappingRes ::= SEQUENCE {
result ResultCode,
...
}
-- remove a mapping between a given Bank:Slot <-> Client:Slot
RemoveMappingReq ::= SEQUENCE {
client ClientSlot,
bank BankSlot,
...
}
RemoveMappingRes ::= SEQUENCE {
result ResultCode,
...
}
ConfigClientReq ::= SEQUENCE {
-- server-allocated assignment of a client ID
clientId ClientId,
-- bank to which the client shall connect
bankd IpPort,
...
}
ConfigClientRes ::= SEQUENCE {
result ResultCode,
...
}
-- configure the ATR which the card emulator (client) shall send to the modem
SetAtrReq ::= SEQUENCE {
slot ClientSlot,
atr ATR,
...
}
SetAtrRes ::= SEQUENCE {
result ResultCode,
...
}
-- TPDU in Modem -> Card direction
TpduModemToCard ::= SEQUENCE {
-- we include fully-qualified bank and client slots for easier debugging
fromClientSlot ClientSlot,
toBankSlot BankSlot,
flags TpduFlags,
data OCTET STRING,
...
}
-- TPDU in Card -> Modem direction
TpduCardToModem ::= SEQUENCE {
-- we include fully-qualified bank and client slots for easier debugging
fromBankSlot BankSlot,
toClientSlot ClientSlot,
flags TpduFlags,
data OCTET STRING,
...
}
-- indciation about the current status of a client (modem side)
ClientSlotStatusInd ::= SEQUENCE {
fromClientSlot ClientSlot,
toBankSlot BankSlot,
slotPhysStatus SlotPhysStatus,
...
}
-- indciation about the current status of a bank (modem side)
BankSlotStatusInd ::= SEQUENCE {
fromBankSlot BankSlot,
toClientSlot ClientSlot,
slotPhysStatus SlotPhysStatus,
...
}
----------------------------------------------------------------------
-- PDU
----------------------------------------------------------------------
RsproPDUchoice ::= CHOICE {
-- configuration + management
connectBankReq [0] ConnectBankReq,
connectBankRes [1] ConnectBankRes,
connectClientReq [2] ConnectClientReq,
connectClientRes [3] ConnectClientRes,
createMappingReq [4] CreateMappingReq,
createMappingRes [5] CreateMappingRes,
removeMappingReq [6] RemoveMappingReq,
removeMappingRes [7] RemoveMappingRes,
configClientReq [8] ConfigClientReq,
configClientRes [9] ConfigClientRes,
-- APDUs etc.
setAtrReq [10] SetAtrReq,
setAtrRes [11] SetAtrRes,
tpduModemToCard [12] TpduModemToCard,
tpduCardToModem [13] TpduCardToModem,
clientSlotStatusInd [14] ClientSlotStatusInd,
bankSlotStatusInd [15] BankSlotStatusInd,
...
}
RsproPDU ::= SEQUENCE {
version [0] INTEGER(0..32) DEFAULT 1,
tag [1] OperationTag,
msg [2] RsproPDUchoice
}
END

86
configure.ac Normal file
View File

@ -0,0 +1,86 @@
AC_INIT([osmo-remsim],
m4_esyscmd([./git-version-gen .tarball-version]),
[simtrace@lists.osmocom.org])
dnl *This* is the root dir, even if an install-sh exists in ../ or ../../
AC_CONFIG_AUX_DIR([.])
LT_INIT
AM_INIT_AUTOMAKE([foreign dist-bzip2 no-dist-gzip 1.9 tar-ustar])
dnl tar-ustar: some asn1 filenames surpass the 99 char limit of tar, so we need
dnl to make tar allow longer filenames.
dnl kernel style compile messages
m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
dnl include release helper
RELMAKE='-include osmo-release.mk'
AC_SUBST([RELMAKE])
dnl checks for programs
AC_PROG_MAKE_SET
AC_PROG_MKDIR_P
AC_PROG_CC
AC_PROG_INSTALL
dnl check for pkg-config (explained in detail in libosmocore/configure.ac)
AC_PATH_PROG(PKG_CONFIG_INSTALLED, pkg-config, no)
if test "x$PKG_CONFIG_INSTALLED" = "xno"; then
AC_MSG_WARN([You need to install pkg-config])
fi
PKG_PROG_PKG_CONFIG([0.20])
PKG_CHECK_MODULES(OSMOCORE, libosmocore >= 0.11.0)
PKG_CHECK_MODULES(ASN1C, libasn1c >= 0.9.30)
AC_CONFIG_MACRO_DIR([m4])
dnl checks for header files
AC_HEADER_STDC
AC_ARG_ENABLE(sanitize,
[AS_HELP_STRING(
[--enable-sanitize],
[Compile with address sanitizer enabled],
)],
[sanitize=$enableval], [sanitize="no"])
if test x"$sanitize" = x"yes"
then
CFLAGS="$CFLAGS -fsanitize=address -fsanitize=undefined"
CPPFLAGS="$CPPFLAGS -fsanitize=address -fsanitize=undefined"
fi
AC_ARG_ENABLE(werror,
AS_HELP_STRING(
[--enable-werror],
[Turn all compiler warnings into errors, with exceptions:
a) deprecation (allow upstream to mark deprecation without breaking builds);
b) "#warning" pragmas (allow to remind ourselves of errors without breaking builds)
]
)],
[werror=$enableval], [werror="no"])
if test x"$werror" = x"yes"
then
WERROR_FLAGS="-Werror"
WERROR_FLAGS+=" -Wno-error=deprecated -Wno-error=deprecated-declarations"
WERROR_FLAGS+=" -Wno-error=cpp" # "#warning"
CFLAGS="$CFLAGS $WERROR_FLAGS"
CPPFLAGS="$CPPFLAGS $WERROR_FLAGS"
fi
CFLAGS="$CFLAGS -Wall"
CPPFLAGS="$CPPFLAGS -Wall"
AC_MSG_RESULT([CFLAGS="$CFLAGS"])
AC_MSG_RESULT([CPPFLAGS="$CPPFLAGS"])
AC_OUTPUT(
Makefile
src/Makefile
src/rspro/Makefile
include/Makefile
include/osmocom/Makefile
include/osmocom/rspro/Makefile
)

151
git-version-gen Executable file
View File

@ -0,0 +1,151 @@
#!/bin/sh
# Print a version string.
scriptversion=2010-01-28.01
# Copyright (C) 2007-2010 Free Software Foundation, Inc.
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
# This script is derived from GIT-VERSION-GEN from GIT: http://git.or.cz/.
# It may be run two ways:
# - from a git repository in which the "git describe" command below
# produces useful output (thus requiring at least one signed tag)
# - from a non-git-repo directory containing a .tarball-version file, which
# presumes this script is invoked like "./git-version-gen .tarball-version".
# In order to use intra-version strings in your project, you will need two
# separate generated version string files:
#
# .tarball-version - present only in a distribution tarball, and not in
# a checked-out repository. Created with contents that were learned at
# the last time autoconf was run, and used by git-version-gen. Must not
# be present in either $(srcdir) or $(builddir) for git-version-gen to
# give accurate answers during normal development with a checked out tree,
# but must be present in a tarball when there is no version control system.
# Therefore, it cannot be used in any dependencies. GNUmakefile has
# hooks to force a reconfigure at distribution time to get the value
# correct, without penalizing normal development with extra reconfigures.
#
# .version - present in a checked-out repository and in a distribution
# tarball. Usable in dependencies, particularly for files that don't
# want to depend on config.h but do want to track version changes.
# Delete this file prior to any autoconf run where you want to rebuild
# files to pick up a version string change; and leave it stale to
# minimize rebuild time after unrelated changes to configure sources.
#
# It is probably wise to add these two files to .gitignore, so that you
# don't accidentally commit either generated file.
#
# Use the following line in your configure.ac, so that $(VERSION) will
# automatically be up-to-date each time configure is run (and note that
# since configure.ac no longer includes a version string, Makefile rules
# should not depend on configure.ac for version updates).
#
# AC_INIT([GNU project],
# m4_esyscmd([build-aux/git-version-gen .tarball-version]),
# [bug-project@example])
#
# Then use the following lines in your Makefile.am, so that .version
# will be present for dependencies, and so that .tarball-version will
# exist in distribution tarballs.
#
# BUILT_SOURCES = $(top_srcdir)/.version
# $(top_srcdir)/.version:
# echo $(VERSION) > $@-t && mv $@-t $@
# dist-hook:
# echo $(VERSION) > $(distdir)/.tarball-version
case $# in
1) ;;
*) echo 1>&2 "Usage: $0 \$srcdir/.tarball-version"; exit 1;;
esac
tarball_version_file=$1
nl='
'
# First see if there is a tarball-only version file.
# then try "git describe", then default.
if test -f $tarball_version_file
then
v=`cat $tarball_version_file` || exit 1
case $v in
*$nl*) v= ;; # reject multi-line output
[0-9]*) ;;
*) v= ;;
esac
test -z "$v" \
&& echo "$0: WARNING: $tarball_version_file seems to be damaged" 1>&2
fi
if test -n "$v"
then
: # use $v
elif
v=`git describe --abbrev=4 --match='v*' HEAD 2>/dev/null \
|| git describe --abbrev=4 HEAD 2>/dev/null` \
&& case $v in
[0-9]*) ;;
v[0-9]*) ;;
*) (exit 1) ;;
esac
then
# Is this a new git that lists number of commits since the last
# tag or the previous older version that did not?
# Newer: v6.10-77-g0f8faeb
# Older: v6.10-g0f8faeb
case $v in
*-*-*) : git describe is okay three part flavor ;;
*-*)
: git describe is older two part flavor
# Recreate the number of commits and rewrite such that the
# result is the same as if we were using the newer version
# of git describe.
vtag=`echo "$v" | sed 's/-.*//'`
numcommits=`git rev-list "$vtag"..HEAD | wc -l`
v=`echo "$v" | sed "s/\(.*\)-\(.*\)/\1-$numcommits-\2/"`;
;;
esac
# Change the first '-' to a '.', so version-comparing tools work properly.
# Remove the "g" in git describe's output string, to save a byte.
v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
else
v=UNKNOWN
fi
v=`echo "$v" |sed 's/^v//'`
# Don't declare a version "dirty" merely because a time stamp has changed.
git status > /dev/null 2>&1
dirty=`sh -c 'git diff-index --name-only HEAD' 2>/dev/null` || dirty=
case "$dirty" in
'') ;;
*) # Append the suffix only if there isn't one already.
case $v in
*-dirty) ;;
*) v="$v-dirty" ;;
esac ;;
esac
# Omit the trailing newline, so that m4_esyscmd can use the result directly.
echo "$v" | tr -d '\012'
# Local variables:
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

1
include/Makefile.am Normal file
View File

@ -0,0 +1 @@
SUBDIRS = osmocom

View File

@ -0,0 +1 @@
SUBDIRS = rspro

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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)

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

View File

@ -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>

44
move-asn1-header-files.sh Executable file
View File

@ -0,0 +1,44 @@
#!/bin/sh
# Usage:
# ../../move-asn1-headers.sh subdir_name File1.h File2.h ...
# All .h and .c files in the current directory are edited to use #include <...>
# style for the .h files given on the cmdline. The given .h files are also
# moved to ../include/<subdir_name>/ so that #include <...> will work.
set -e
base_dir="$(dirname "$0")"
include_subdir="$1"
shift
include_dir="$base_dir/include/$include_subdir"
mkdir -p "$include_dir"
echo "$PWD/*.h --> $include_dir"
collect_sed_commands() {
while [ -n "$1" ]; do
fname="$1"
shift
echo "s,^#include \"$fname\"$,#include <$include_subdir/$fname>,"
done
}
move_headers() {
echo mv $@ "$include_dir/"
mv $@ "$include_dir/"
}
# Replace all `#include "foo.h"' with `#include <dir/foo.h>' locally
# - Collect sed commands to replace all header includes, for efficiency
cmds="$(mktemp)"
echo "collecting sed commands..."
collect_sed_commands $@ > "$cmds"
# - Run commands on all h and c files
echo "sed -i -f \"$cmds\" *.[hc]"
sed -i -f "$cmds" *.[hc]
rm "$cmds"
# Now move sed'ed *.h files to the proper ../include/dir
move_headers $@

10
src/Makefile.am Normal file
View File

@ -0,0 +1,10 @@
SUBDIRS = rspro
AM_CFLAGS = -Wall -I$(top_srcdir)/include -I$(top_builddir)/include \
$(OSMOCORE_CFLAGS) $(ASN1C_CFLAGS)
RSPRO_LIBVERSION=0:0:0
lib_LTLIBRARIES = libosmo-rspro.la
libosmo_rspro_la_LDFLAGS = $(AM_LDFLAGS) -version-info $(RSPRO_LIBVERSION)
libosmo_rspro_la_LIBADD = $(OSMOCORE_LIBS) $(ASN1C_LIBS) rspro/libosmo-asn1-rspro.la
libosmo_rspro_la_SOURCES = rspro_util.c

84
src/driver_core.c Normal file
View File

@ -0,0 +1,84 @@
/*! \file reader_pcsc.c
* Card reader driver core */
/*
* (C) 2018 by Harald Welte <laforge@gnumonks.org>
*
* All Rights Reserved
*
* SPDX-License-Identifier: GPL-2.0+
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#include <stdio.h>
#include <talloc.h>
#include <osmocom/core/linuxlist.h>
#include "internal.h"
static LLIST_HEAD(g_card_reader_drivers);
static LLIST_HEAD(g_card_readers);
struct card_reader *card_reader_alloc(void *ctx, const char *name,
const struct card_reader_driver *drv, void *drv_handle)
{
struct card_reader *cr = talloc_zero(ctx, struct card_reader);
if (!cr)
return NULL;
cr->name = talloc_strdup(ctx, name);
cr->drv = drv;
cr->drv_handle = drv_handle;
INIT_LLIST_HEAD(&cr->slots);
llist_add(&cr->list, &g_card_readers);
printf("allocated reader '%s'\n", cr->name);
return cr;
}
/* allocate a new slot in the given reader */
struct card_reader_slot *card_reader_slot_alloc(struct card_reader *cr, unsigned int slot_num)
{
struct card_reader_slot *cs = talloc_zero(cr, struct card_reader_slot);
if (!cs)
return NULL;
cs->reader = cr;
llist_add(&cr->list, &cr->slots);
cs->num = slot_num;
return cs;
}
/* register a driver with the core, should typcially be called at start-up */
void card_reader_driver_register(struct card_reader_driver *drv)
{
llist_add_tail(&drv->list, &g_card_reader_drivers);
}
/* probe all readers on all drivers */
void card_readers_probe(void *ctx)
{
struct card_reader_driver *drv;
llist_for_each_entry(drv, &g_card_reader_drivers, list) {
printf("probing driver '%s' for drivers\n", drv->name);
drv->ops->probe(ctx);
}
}

123
src/driver_pcsc.c Normal file
View File

@ -0,0 +1,123 @@
/*! \file reader_pcsc.c
* PC/SC Card reader backend for libosmosim. */
/*
* (C) 2012 by Harald Welte <laforge@gnumonks.org>
*
* All Rights Reserved
*
* SPDX-License-Identifier: GPL-2.0+
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#include <string.h>
#include <stdint.h>
#include <stdio.h>
#include <errno.h>
#include <talloc.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/sim/sim.h>
#include <wintypes.h>
#include <winscard.h>
#include "internal.h"
#define PCSC_ERROR(rv, text) \
if (rv != SCARD_S_SUCCESS) { \
fprintf(stderr, text ": %s (0x%lX)\n", pcsc_stringify_error(rv), rv); \
goto end; \
} else { \
printf(text ": OK\n\n"); \
}
static void pcsc_readers_probe(void *ctx)
{
LONG rc;
LPSTR mszReaders = NULL;
DWORD dwReaders;
SCARDCONTEXT hContext;
unsigned int num_readers;
char *ptr;
rc = SCardEstablishContext(SCARD_SCOPE_SYSTEM, NULL, NULL, &hContext);
PCSC_ERROR(rc, "SCardEstablishContext");
dwReaders = SCARD_AUTOALLOCATE;
rc = SCardListReaders(hContext, NULL, (LPSTR)&mszReaders, &dwReaders);
PCSC_ERROR(rc, "SCardListReaders");
num_readers = 0;
ptr = mszReaders;
while (*ptr != '\0') {
struct card_reader *cr;
/* while CCID has the nice feature to distinguish between readers and slots, PC/SC
* doesn't have this distinction, so we end up having one "reader" per slot */
cr = card_reader_alloc(ctx, ptr, NULL, NULL);
card_reader_slot_alloc(cr, 0);
ptr += strlen(ptr)+1;
num_readers++;
}
printf("num_readers=%d\n", num_readers);
end:
if (mszReaders)
SCardFreeMemory(hContext, mszReaders);
}
static int pcsc_reader_open_slot(struct card_reader_slot *slot)
{
struct osim_card_hdl *card;
LONG rc;
if (proto != OSIM_PROTO_T0)
return NULL;
rc = SCardConnect(st->hContext, st->name, SCARD_SHARE_SHARED,
SCARD_PROTOCOL_T0, &st->hCard, &st->dwActiveProtocol);
PCSC_ERROR(rc, "SCardConnect");
st->pioSendPci = SCARD_PCI_T0;
card = talloc_zero(rh, struct osim_card_hdl);
INIT_LLIST_HEAD(&card->channels);
card->reader = rh;
rh->card = card;
end:
return NULL;
}
static const struct card_reader_driver_ops pcsc_driver_ops = {
.probe = pcsc_readers_probe,
.open_slot = pcsc_reader_open_slot,
.close_slot = NULL,
.transceive_apdu = NULL,
};
static struct card_reader_driver pcsc_driver = {
.name = "PCSC",
.ops = &pcsc_driver_ops,
};
__attribute__ ((constructor)) void pcsc_reader_init(void)
{
card_reader_driver_register(&pcsc_driver);
}

60
src/internal.h Normal file
View File

@ -0,0 +1,60 @@
#pragma once
#include <osmocom/core/linuxlist.h>
struct card_reader_slot;
struct card_reader_driver_ops {
/* probe system for card readers */
void (*probe)(void *ctx);
/* open a given slot, attempt to reset/start the card */
int (*open_slot)(struct card_reader_slot *slot);
/* close a given slot, power down the card */
void (*close_slot)(struct card_reader_slot *slot);
/* transceive an APDU */
int (*transceive_apdu)(struct card_reader_slot *slot);
};
struct card_reader_driver {
/* global list of drivers */
struct llist_head list;
/* name of the driver */
char *name;
const struct card_reader_driver_ops *ops;
};
struct card_reader {
/* global list of card readers */
struct llist_head list;
/* name of this reader */
char *name;
/* driver providing access to this reader */
const struct card_reader_driver *drv;
void *drv_handle;
/* list of card slots for this reader */
struct llist_head slots;
};
enum card_slot_state {
CARD_SLOT_OFF,
CARD_SLOT_OPEN,
};
struct card_reader_slot {
/* links to card_reader.slots */
struct llist_head list;
/* back-pointer to reader serving this slot */
struct card_reader *reader;
/* slot number */
unsigned int num;
/* state in which the slot is */
enum card_slot_state state;
};
struct card_reader *card_reader_alloc(void *ctx, const char *name,
const struct card_reader_driver *drv, void *drv_handle);
struct card_reader_slot *card_reader_slot_alloc(struct card_reader *cr, unsigned int slot_num);
void card_reader_driver_register(struct card_reader_driver *drv);
void card_readers_probe(void *ctx);

42
src/main.c Normal file
View File

@ -0,0 +1,42 @@
/*! \file main.c */
/*
* (C) 2018 by Harald Welte <laforge@gnumonks.org>
*
* All Rights Reserved
*
* SPDX-License-Identifier: GPL-2.0+
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
*/
#include <string.h>
#include <stdint.h>
#include <stdio.h>
#include <errno.h>
#include <talloc.h>
#include <osmocom/core/linuxlist.h>
#include <osmocom/sim/sim.h>
#include <wintypes.h>
#include <winscard.h>
#include "internal.h"
int main(int argc, char **argv)
{
card_readers_probe(NULL);
}

129
src/rspro/ATR.c Normal file
View File

@ -0,0 +1,129 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ATR.h>
int
ATR_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
size_t size;
if(!sptr) {
_ASN_CTFAIL(app_key, td, sptr,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
size = st->size;
if((size >= 1l && size <= 55l)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_CTFAIL(app_key, td, sptr,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
/*
* This type is implemented using OCTET_STRING,
* so here we adjust the DEF accordingly.
*/
static void
ATR_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_OCTET_STRING.free_struct;
td->print_struct = asn_DEF_OCTET_STRING.print_struct;
td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
td->elements = asn_DEF_OCTET_STRING.elements;
td->elements_count = asn_DEF_OCTET_STRING.elements_count;
td->specifics = asn_DEF_OCTET_STRING.specifics;
}
void
ATR_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
ATR_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
ATR_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
ATR_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
ATR_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
ATR_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
ATR_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
ATR_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
ATR_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
ATR_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
ATR_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
ATR_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const ber_tlv_tag_t asn_DEF_ATR_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
};
asn_TYPE_descriptor_t asn_DEF_ATR = {
"ATR",
"ATR",
ATR_free,
ATR_print,
ATR_constraint,
ATR_decode_ber,
ATR_encode_der,
ATR_decode_xer,
ATR_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ATR_tags_1,
sizeof(asn_DEF_ATR_tags_1)
/sizeof(asn_DEF_ATR_tags_1[0]), /* 1 */
asn_DEF_ATR_tags_1, /* Same as above */
sizeof(asn_DEF_ATR_tags_1)
/sizeof(asn_DEF_ATR_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};

128
src/rspro/BankId.c Normal file
View File

@ -0,0 +1,128 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/BankId.h>
int
BankId_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
long value;
if(!sptr) {
_ASN_CTFAIL(app_key, td, sptr,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
value = *(const long *)sptr;
if((value >= 0l && value <= 1023l)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_CTFAIL(app_key, td, sptr,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
/*
* This type is implemented using NativeInteger,
* so here we adjust the DEF accordingly.
*/
static void
BankId_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_NativeInteger.free_struct;
td->print_struct = asn_DEF_NativeInteger.print_struct;
td->check_constraints = asn_DEF_NativeInteger.check_constraints;
td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
td->der_encoder = asn_DEF_NativeInteger.der_encoder;
td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_NativeInteger.per_constraints;
td->elements = asn_DEF_NativeInteger.elements;
td->elements_count = asn_DEF_NativeInteger.elements_count;
td->specifics = asn_DEF_NativeInteger.specifics;
}
void
BankId_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
BankId_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
BankId_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
BankId_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
BankId_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
BankId_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
BankId_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
BankId_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
BankId_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
BankId_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
BankId_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
BankId_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const ber_tlv_tag_t asn_DEF_BankId_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
asn_TYPE_descriptor_t asn_DEF_BankId = {
"BankId",
"BankId",
BankId_free,
BankId_print,
BankId_constraint,
BankId_decode_ber,
BankId_encode_der,
BankId_decode_xer,
BankId_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_BankId_tags_1,
sizeof(asn_DEF_BankId_tags_1)
/sizeof(asn_DEF_BankId_tags_1[0]), /* 1 */
asn_DEF_BankId_tags_1, /* Same as above */
sizeof(asn_DEF_BankId_tags_1)
/sizeof(asn_DEF_BankId_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};

69
src/rspro/BankSlot.c Normal file
View File

@ -0,0 +1,69 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/BankSlot.h>
static asn_TYPE_member_t asn_MBR_BankSlot_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct BankSlot, bankId),
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
0,
&asn_DEF_BankId,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"bankId"
},
{ ATF_NOFLAGS, 0, offsetof(struct BankSlot, slotNr),
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
0,
&asn_DEF_SlotNumber,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"slotNr"
},
};
static const ber_tlv_tag_t asn_DEF_BankSlot_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_BankSlot_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* bankId */
{ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 } /* slotNr */
};
static asn_SEQUENCE_specifics_t asn_SPC_BankSlot_specs_1 = {
sizeof(struct BankSlot),
offsetof(struct BankSlot, _asn_ctx),
asn_MAP_BankSlot_tag2el_1,
2, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
1, /* Start extensions */
3 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_BankSlot = {
"BankSlot",
"BankSlot",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_BankSlot_tags_1,
sizeof(asn_DEF_BankSlot_tags_1)
/sizeof(asn_DEF_BankSlot_tags_1[0]), /* 1 */
asn_DEF_BankSlot_tags_1, /* Same as above */
sizeof(asn_DEF_BankSlot_tags_1)
/sizeof(asn_DEF_BankSlot_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_BankSlot_1,
2, /* Elements count */
&asn_SPC_BankSlot_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,79 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/BankSlotStatusInd.h>
static asn_TYPE_member_t asn_MBR_BankSlotStatusInd_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct BankSlotStatusInd, fromBankSlot),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_BankSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"fromBankSlot"
},
{ ATF_NOFLAGS, 0, offsetof(struct BankSlotStatusInd, toClientSlot),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_ClientSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"toClientSlot"
},
{ ATF_NOFLAGS, 0, offsetof(struct BankSlotStatusInd, slotPhysStatus),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_SlotPhysStatus,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"slotPhysStatus"
},
};
static const ber_tlv_tag_t asn_DEF_BankSlotStatusInd_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_BankSlotStatusInd_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* fromBankSlot */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* toClientSlot */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* slotPhysStatus */
};
static asn_SEQUENCE_specifics_t asn_SPC_BankSlotStatusInd_specs_1 = {
sizeof(struct BankSlotStatusInd),
offsetof(struct BankSlotStatusInd, _asn_ctx),
asn_MAP_BankSlotStatusInd_tag2el_1,
3, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
2, /* Start extensions */
4 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_BankSlotStatusInd = {
"BankSlotStatusInd",
"BankSlotStatusInd",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_BankSlotStatusInd_tags_1,
sizeof(asn_DEF_BankSlotStatusInd_tags_1)
/sizeof(asn_DEF_BankSlotStatusInd_tags_1[0]), /* 1 */
asn_DEF_BankSlotStatusInd_tags_1, /* Same as above */
sizeof(asn_DEF_BankSlotStatusInd_tags_1)
/sizeof(asn_DEF_BankSlotStatusInd_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_BankSlotStatusInd_1,
3, /* Elements count */
&asn_SPC_BankSlotStatusInd_specs_1 /* Additional specs */
};

128
src/rspro/ClientId.c Normal file
View File

@ -0,0 +1,128 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ClientId.h>
int
ClientId_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
long value;
if(!sptr) {
_ASN_CTFAIL(app_key, td, sptr,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
value = *(const long *)sptr;
if((value >= 0l && value <= 1023l)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_CTFAIL(app_key, td, sptr,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
/*
* This type is implemented using NativeInteger,
* so here we adjust the DEF accordingly.
*/
static void
ClientId_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_NativeInteger.free_struct;
td->print_struct = asn_DEF_NativeInteger.print_struct;
td->check_constraints = asn_DEF_NativeInteger.check_constraints;
td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
td->der_encoder = asn_DEF_NativeInteger.der_encoder;
td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_NativeInteger.per_constraints;
td->elements = asn_DEF_NativeInteger.elements;
td->elements_count = asn_DEF_NativeInteger.elements_count;
td->specifics = asn_DEF_NativeInteger.specifics;
}
void
ClientId_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
ClientId_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
ClientId_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
ClientId_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
ClientId_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
ClientId_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
ClientId_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
ClientId_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
ClientId_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
ClientId_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
ClientId_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
ClientId_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const ber_tlv_tag_t asn_DEF_ClientId_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
asn_TYPE_descriptor_t asn_DEF_ClientId = {
"ClientId",
"ClientId",
ClientId_free,
ClientId_print,
ClientId_constraint,
ClientId_decode_ber,
ClientId_encode_der,
ClientId_decode_xer,
ClientId_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ClientId_tags_1,
sizeof(asn_DEF_ClientId_tags_1)
/sizeof(asn_DEF_ClientId_tags_1[0]), /* 1 */
asn_DEF_ClientId_tags_1, /* Same as above */
sizeof(asn_DEF_ClientId_tags_1)
/sizeof(asn_DEF_ClientId_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};

69
src/rspro/ClientSlot.c Normal file
View File

@ -0,0 +1,69 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ClientSlot.h>
static asn_TYPE_member_t asn_MBR_ClientSlot_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct ClientSlot, clientId),
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
0,
&asn_DEF_ClientId,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"clientId"
},
{ ATF_NOFLAGS, 0, offsetof(struct ClientSlot, slotNr),
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
0,
&asn_DEF_SlotNumber,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"slotNr"
},
};
static const ber_tlv_tag_t asn_DEF_ClientSlot_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ClientSlot_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 1 }, /* clientId */
{ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, -1, 0 } /* slotNr */
};
static asn_SEQUENCE_specifics_t asn_SPC_ClientSlot_specs_1 = {
sizeof(struct ClientSlot),
offsetof(struct ClientSlot, _asn_ctx),
asn_MAP_ClientSlot_tag2el_1,
2, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
1, /* Start extensions */
3 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_ClientSlot = {
"ClientSlot",
"ClientSlot",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ClientSlot_tags_1,
sizeof(asn_DEF_ClientSlot_tags_1)
/sizeof(asn_DEF_ClientSlot_tags_1[0]), /* 1 */
asn_DEF_ClientSlot_tags_1, /* Same as above */
sizeof(asn_DEF_ClientSlot_tags_1)
/sizeof(asn_DEF_ClientSlot_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_ClientSlot_1,
2, /* Elements count */
&asn_SPC_ClientSlot_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,79 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ClientSlotStatusInd.h>
static asn_TYPE_member_t asn_MBR_ClientSlotStatusInd_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct ClientSlotStatusInd, fromClientSlot),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_ClientSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"fromClientSlot"
},
{ ATF_NOFLAGS, 0, offsetof(struct ClientSlotStatusInd, toBankSlot),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_BankSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"toBankSlot"
},
{ ATF_NOFLAGS, 0, offsetof(struct ClientSlotStatusInd, slotPhysStatus),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_SlotPhysStatus,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"slotPhysStatus"
},
};
static const ber_tlv_tag_t asn_DEF_ClientSlotStatusInd_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ClientSlotStatusInd_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* fromClientSlot */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* toBankSlot */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* slotPhysStatus */
};
static asn_SEQUENCE_specifics_t asn_SPC_ClientSlotStatusInd_specs_1 = {
sizeof(struct ClientSlotStatusInd),
offsetof(struct ClientSlotStatusInd, _asn_ctx),
asn_MAP_ClientSlotStatusInd_tag2el_1,
3, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
2, /* Start extensions */
4 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_ClientSlotStatusInd = {
"ClientSlotStatusInd",
"ClientSlotStatusInd",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ClientSlotStatusInd_tags_1,
sizeof(asn_DEF_ClientSlotStatusInd_tags_1)
/sizeof(asn_DEF_ClientSlotStatusInd_tags_1[0]), /* 1 */
asn_DEF_ClientSlotStatusInd_tags_1, /* Same as above */
sizeof(asn_DEF_ClientSlotStatusInd_tags_1)
/sizeof(asn_DEF_ClientSlotStatusInd_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_ClientSlotStatusInd_1,
3, /* Elements count */
&asn_SPC_ClientSlotStatusInd_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,139 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ComponentIdentity.h>
static asn_TYPE_member_t asn_MBR_ComponentIdentity_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct ComponentIdentity, type),
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
0,
&asn_DEF_ComponentType,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"type"
},
{ ATF_NOFLAGS, 0, offsetof(struct ComponentIdentity, name),
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2)),
0,
&asn_DEF_ComponentName,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"name"
},
{ ATF_NOFLAGS, 0, offsetof(struct ComponentIdentity, software),
(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ComponentName,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"software"
},
{ ATF_NOFLAGS, 0, offsetof(struct ComponentIdentity, swVersion),
(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ComponentName,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"swVersion"
},
{ ATF_POINTER, 5, offsetof(struct ComponentIdentity, hwManufacturer),
(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ComponentName,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"hwManufacturer"
},
{ ATF_POINTER, 4, offsetof(struct ComponentIdentity, hwModel),
(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ComponentName,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"hwModel"
},
{ ATF_POINTER, 3, offsetof(struct ComponentIdentity, hwSerialNr),
(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ComponentName,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"hwSerialNr"
},
{ ATF_POINTER, 2, offsetof(struct ComponentIdentity, hwVersion),
(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ComponentName,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"hwVersion"
},
{ ATF_POINTER, 1, offsetof(struct ComponentIdentity, fwVersion),
(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ComponentName,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"fwVersion"
},
};
static const ber_tlv_tag_t asn_DEF_ComponentIdentity_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ComponentIdentity_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 }, /* type */
{ (ASN_TAG_CLASS_UNIVERSAL | (22 << 2)), 1, 0, 0 }, /* name */
{ (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 2, 0, 0 }, /* software */
{ (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 3, 0, 0 }, /* swVersion */
{ (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 4, 0, 0 }, /* hwManufacturer */
{ (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 5, 0, 0 }, /* hwModel */
{ (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 6, 0, 0 }, /* hwSerialNr */
{ (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 7, 0, 0 }, /* hwVersion */
{ (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 8, 0, 0 } /* fwVersion */
};
static asn_SEQUENCE_specifics_t asn_SPC_ComponentIdentity_specs_1 = {
sizeof(struct ComponentIdentity),
offsetof(struct ComponentIdentity, _asn_ctx),
asn_MAP_ComponentIdentity_tag2el_1,
9, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
8, /* Start extensions */
10 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_ComponentIdentity = {
"ComponentIdentity",
"ComponentIdentity",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ComponentIdentity_tags_1,
sizeof(asn_DEF_ComponentIdentity_tags_1)
/sizeof(asn_DEF_ComponentIdentity_tags_1[0]), /* 1 */
asn_DEF_ComponentIdentity_tags_1, /* Same as above */
sizeof(asn_DEF_ComponentIdentity_tags_1)
/sizeof(asn_DEF_ComponentIdentity_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_ComponentIdentity_1,
9, /* Elements count */
&asn_SPC_ComponentIdentity_specs_1 /* Additional specs */
};

143
src/rspro/ComponentName.c Normal file
View File

@ -0,0 +1,143 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ComponentName.h>
static int check_permitted_alphabet_1(const void *sptr) {
/* The underlying type is IA5String */
const IA5String_t *st = (const IA5String_t *)sptr;
const uint8_t *ch = st->buf;
const uint8_t *end = ch + st->size;
for(; ch < end; ch++) {
uint8_t cv = *ch;
if(!(cv <= 127l)) return -1;
}
return 0;
}
int
ComponentName_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
const IA5String_t *st = (const IA5String_t *)sptr;
size_t size;
if(!sptr) {
_ASN_CTFAIL(app_key, td, sptr,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
size = st->size;
if((size >= 1l && size <= 32l)
&& !check_permitted_alphabet_1(st)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_CTFAIL(app_key, td, sptr,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
/*
* This type is implemented using IA5String,
* so here we adjust the DEF accordingly.
*/
static void
ComponentName_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_IA5String.free_struct;
td->print_struct = asn_DEF_IA5String.print_struct;
td->check_constraints = asn_DEF_IA5String.check_constraints;
td->ber_decoder = asn_DEF_IA5String.ber_decoder;
td->der_encoder = asn_DEF_IA5String.der_encoder;
td->xer_decoder = asn_DEF_IA5String.xer_decoder;
td->xer_encoder = asn_DEF_IA5String.xer_encoder;
td->uper_decoder = asn_DEF_IA5String.uper_decoder;
td->uper_encoder = asn_DEF_IA5String.uper_encoder;
td->aper_decoder = asn_DEF_IA5String.aper_decoder;
td->aper_encoder = asn_DEF_IA5String.aper_encoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_IA5String.per_constraints;
td->elements = asn_DEF_IA5String.elements;
td->elements_count = asn_DEF_IA5String.elements_count;
td->specifics = asn_DEF_IA5String.specifics;
}
void
ComponentName_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
ComponentName_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
ComponentName_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
ComponentName_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
ComponentName_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
ComponentName_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
ComponentName_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
ComponentName_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
ComponentName_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
ComponentName_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
ComponentName_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
ComponentName_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const ber_tlv_tag_t asn_DEF_ComponentName_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
asn_TYPE_descriptor_t asn_DEF_ComponentName = {
"ComponentName",
"ComponentName",
ComponentName_free,
ComponentName_print,
ComponentName_constraint,
ComponentName_decode_ber,
ComponentName_encode_der,
ComponentName_decode_xer,
ComponentName_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ComponentName_tags_1,
sizeof(asn_DEF_ComponentName_tags_1)
/sizeof(asn_DEF_ComponentName_tags_1[0]), /* 1 */
asn_DEF_ComponentName_tags_1, /* Same as above */
sizeof(asn_DEF_ComponentName_tags_1)
/sizeof(asn_DEF_ComponentName_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};

130
src/rspro/ComponentType.c Normal file
View File

@ -0,0 +1,130 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ComponentType.h>
int
ComponentType_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
/* Replace with underlying type checker */
td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
return td->check_constraints(td, sptr, ctfailcb, app_key);
}
/*
* This type is implemented using NativeEnumerated,
* so here we adjust the DEF accordingly.
*/
static void
ComponentType_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_NativeEnumerated.free_struct;
td->print_struct = asn_DEF_NativeEnumerated.print_struct;
td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
td->elements = asn_DEF_NativeEnumerated.elements;
td->elements_count = asn_DEF_NativeEnumerated.elements_count;
/* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
}
void
ComponentType_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
ComponentType_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
ComponentType_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
ComponentType_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
ComponentType_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
ComponentType_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
ComponentType_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
ComponentType_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
ComponentType_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
ComponentType_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
ComponentType_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
ComponentType_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const asn_INTEGER_enum_map_t asn_MAP_ComponentType_value2enum_1[] = {
{ 0, 12, "remsimClient" },
{ 1, 12, "remsimServer" },
{ 2, 11, "remsimBankd" }
};
static const unsigned int asn_MAP_ComponentType_enum2value_1[] = {
2, /* remsimBankd(2) */
0, /* remsimClient(0) */
1 /* remsimServer(1) */
};
static const asn_INTEGER_specifics_t asn_SPC_ComponentType_specs_1 = {
asn_MAP_ComponentType_value2enum_1, /* "tag" => N; sorted by tag */
asn_MAP_ComponentType_enum2value_1, /* N => "tag"; sorted by N */
3, /* Number of elements in the maps */
0, /* Enumeration is not extensible */
1, /* Strict enumeration */
0, /* Native long size */
0
};
static const ber_tlv_tag_t asn_DEF_ComponentType_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
asn_TYPE_descriptor_t asn_DEF_ComponentType = {
"ComponentType",
"ComponentType",
ComponentType_free,
ComponentType_print,
ComponentType_constraint,
ComponentType_decode_ber,
ComponentType_encode_der,
ComponentType_decode_xer,
ComponentType_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ComponentType_tags_1,
sizeof(asn_DEF_ComponentType_tags_1)
/sizeof(asn_DEF_ComponentType_tags_1[0]), /* 1 */
asn_DEF_ComponentType_tags_1, /* Same as above */
sizeof(asn_DEF_ComponentType_tags_1)
/sizeof(asn_DEF_ComponentType_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* Defined elsewhere */
&asn_SPC_ComponentType_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,69 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ConfigClientReq.h>
static asn_TYPE_member_t asn_MBR_ConfigClientReq_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientReq, clientId),
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
0,
&asn_DEF_ClientId,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"clientId"
},
{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientReq, bankd),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_IpPort,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"bankd"
},
};
static const ber_tlv_tag_t asn_DEF_ConfigClientReq_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ConfigClientReq_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 0, 0, 0 }, /* clientId */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, 0, 0 } /* bankd */
};
static asn_SEQUENCE_specifics_t asn_SPC_ConfigClientReq_specs_1 = {
sizeof(struct ConfigClientReq),
offsetof(struct ConfigClientReq, _asn_ctx),
asn_MAP_ConfigClientReq_tag2el_1,
2, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
1, /* Start extensions */
3 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_ConfigClientReq = {
"ConfigClientReq",
"ConfigClientReq",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ConfigClientReq_tags_1,
sizeof(asn_DEF_ConfigClientReq_tags_1)
/sizeof(asn_DEF_ConfigClientReq_tags_1[0]), /* 1 */
asn_DEF_ConfigClientReq_tags_1, /* Same as above */
sizeof(asn_DEF_ConfigClientReq_tags_1)
/sizeof(asn_DEF_ConfigClientReq_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_ConfigClientReq_1,
2, /* Elements count */
&asn_SPC_ConfigClientReq_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,59 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ConfigClientRes.h>
static asn_TYPE_member_t asn_MBR_ConfigClientRes_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct ConfigClientRes, result),
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
0,
&asn_DEF_ResultCode,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"result"
},
};
static const ber_tlv_tag_t asn_DEF_ConfigClientRes_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ConfigClientRes_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* result */
};
static asn_SEQUENCE_specifics_t asn_SPC_ConfigClientRes_specs_1 = {
sizeof(struct ConfigClientRes),
offsetof(struct ConfigClientRes, _asn_ctx),
asn_MAP_ConfigClientRes_tag2el_1,
1, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
0, /* Start extensions */
2 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_ConfigClientRes = {
"ConfigClientRes",
"ConfigClientRes",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ConfigClientRes_tags_1,
sizeof(asn_DEF_ConfigClientRes_tags_1)
/sizeof(asn_DEF_ConfigClientRes_tags_1[0]), /* 1 */
asn_DEF_ConfigClientRes_tags_1, /* Same as above */
sizeof(asn_DEF_ConfigClientRes_tags_1)
/sizeof(asn_DEF_ConfigClientRes_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_ConfigClientRes_1,
1, /* Elements count */
&asn_SPC_ConfigClientRes_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,79 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ConnectBankReq.h>
static asn_TYPE_member_t asn_MBR_ConnectBankReq_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct ConnectBankReq, identity),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_ComponentIdentity,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"identity"
},
{ ATF_NOFLAGS, 0, offsetof(struct ConnectBankReq, bankId),
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
0,
&asn_DEF_BankId,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"bankId"
},
{ ATF_NOFLAGS, 0, offsetof(struct ConnectBankReq, numberOfSlots),
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
0,
&asn_DEF_SlotNumber,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"numberOfSlots"
},
};
static const ber_tlv_tag_t asn_DEF_ConnectBankReq_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ConnectBankReq_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 1 }, /* bankId */
{ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 2, -1, 0 }, /* numberOfSlots */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* identity */
};
static asn_SEQUENCE_specifics_t asn_SPC_ConnectBankReq_specs_1 = {
sizeof(struct ConnectBankReq),
offsetof(struct ConnectBankReq, _asn_ctx),
asn_MAP_ConnectBankReq_tag2el_1,
3, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
2, /* Start extensions */
4 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_ConnectBankReq = {
"ConnectBankReq",
"ConnectBankReq",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ConnectBankReq_tags_1,
sizeof(asn_DEF_ConnectBankReq_tags_1)
/sizeof(asn_DEF_ConnectBankReq_tags_1[0]), /* 1 */
asn_DEF_ConnectBankReq_tags_1, /* Same as above */
sizeof(asn_DEF_ConnectBankReq_tags_1)
/sizeof(asn_DEF_ConnectBankReq_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_ConnectBankReq_1,
3, /* Elements count */
&asn_SPC_ConnectBankReq_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,69 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ConnectBankRes.h>
static asn_TYPE_member_t asn_MBR_ConnectBankRes_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct ConnectBankRes, identity),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_ComponentIdentity,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"identity"
},
{ ATF_NOFLAGS, 0, offsetof(struct ConnectBankRes, result),
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
0,
&asn_DEF_ResultCode,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"result"
},
};
static const ber_tlv_tag_t asn_DEF_ConnectBankRes_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ConnectBankRes_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* result */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* identity */
};
static asn_SEQUENCE_specifics_t asn_SPC_ConnectBankRes_specs_1 = {
sizeof(struct ConnectBankRes),
offsetof(struct ConnectBankRes, _asn_ctx),
asn_MAP_ConnectBankRes_tag2el_1,
2, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
1, /* Start extensions */
3 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_ConnectBankRes = {
"ConnectBankRes",
"ConnectBankRes",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ConnectBankRes_tags_1,
sizeof(asn_DEF_ConnectBankRes_tags_1)
/sizeof(asn_DEF_ConnectBankRes_tags_1[0]), /* 1 */
asn_DEF_ConnectBankRes_tags_1, /* Same as above */
sizeof(asn_DEF_ConnectBankRes_tags_1)
/sizeof(asn_DEF_ConnectBankRes_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_ConnectBankRes_1,
2, /* Elements count */
&asn_SPC_ConnectBankRes_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,59 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ConnectClientReq.h>
static asn_TYPE_member_t asn_MBR_ConnectClientReq_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct ConnectClientReq, identity),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_ComponentIdentity,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"identity"
},
};
static const ber_tlv_tag_t asn_DEF_ConnectClientReq_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ConnectClientReq_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* identity */
};
static asn_SEQUENCE_specifics_t asn_SPC_ConnectClientReq_specs_1 = {
sizeof(struct ConnectClientReq),
offsetof(struct ConnectClientReq, _asn_ctx),
asn_MAP_ConnectClientReq_tag2el_1,
1, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
0, /* Start extensions */
2 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_ConnectClientReq = {
"ConnectClientReq",
"ConnectClientReq",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ConnectClientReq_tags_1,
sizeof(asn_DEF_ConnectClientReq_tags_1)
/sizeof(asn_DEF_ConnectClientReq_tags_1[0]), /* 1 */
asn_DEF_ConnectClientReq_tags_1, /* Same as above */
sizeof(asn_DEF_ConnectClientReq_tags_1)
/sizeof(asn_DEF_ConnectClientReq_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_ConnectClientReq_1,
1, /* Elements count */
&asn_SPC_ConnectClientReq_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,69 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ConnectClientRes.h>
static asn_TYPE_member_t asn_MBR_ConnectClientRes_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct ConnectClientRes, identity),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_ComponentIdentity,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"identity"
},
{ ATF_NOFLAGS, 0, offsetof(struct ConnectClientRes, result),
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
0,
&asn_DEF_ResultCode,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"result"
},
};
static const ber_tlv_tag_t asn_DEF_ConnectClientRes_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ConnectClientRes_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, 0, 0 }, /* result */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* identity */
};
static asn_SEQUENCE_specifics_t asn_SPC_ConnectClientRes_specs_1 = {
sizeof(struct ConnectClientRes),
offsetof(struct ConnectClientRes, _asn_ctx),
asn_MAP_ConnectClientRes_tag2el_1,
2, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
1, /* Start extensions */
3 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_ConnectClientRes = {
"ConnectClientRes",
"ConnectClientRes",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ConnectClientRes_tags_1,
sizeof(asn_DEF_ConnectClientRes_tags_1)
/sizeof(asn_DEF_ConnectClientRes_tags_1[0]), /* 1 */
asn_DEF_ConnectClientRes_tags_1, /* Same as above */
sizeof(asn_DEF_ConnectClientRes_tags_1)
/sizeof(asn_DEF_ConnectClientRes_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_ConnectClientRes_1,
2, /* Elements count */
&asn_SPC_ConnectClientRes_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,69 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/CreateMappingReq.h>
static asn_TYPE_member_t asn_MBR_CreateMappingReq_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct CreateMappingReq, client),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_ClientSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"client"
},
{ ATF_NOFLAGS, 0, offsetof(struct CreateMappingReq, bank),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_BankSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"bank"
},
};
static const ber_tlv_tag_t asn_DEF_CreateMappingReq_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_CreateMappingReq_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* client */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* bank */
};
static asn_SEQUENCE_specifics_t asn_SPC_CreateMappingReq_specs_1 = {
sizeof(struct CreateMappingReq),
offsetof(struct CreateMappingReq, _asn_ctx),
asn_MAP_CreateMappingReq_tag2el_1,
2, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
1, /* Start extensions */
3 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_CreateMappingReq = {
"CreateMappingReq",
"CreateMappingReq",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_CreateMappingReq_tags_1,
sizeof(asn_DEF_CreateMappingReq_tags_1)
/sizeof(asn_DEF_CreateMappingReq_tags_1[0]), /* 1 */
asn_DEF_CreateMappingReq_tags_1, /* Same as above */
sizeof(asn_DEF_CreateMappingReq_tags_1)
/sizeof(asn_DEF_CreateMappingReq_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_CreateMappingReq_1,
2, /* Elements count */
&asn_SPC_CreateMappingReq_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,59 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/CreateMappingRes.h>
static asn_TYPE_member_t asn_MBR_CreateMappingRes_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct CreateMappingRes, result),
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
0,
&asn_DEF_ResultCode,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"result"
},
};
static const ber_tlv_tag_t asn_DEF_CreateMappingRes_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_CreateMappingRes_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* result */
};
static asn_SEQUENCE_specifics_t asn_SPC_CreateMappingRes_specs_1 = {
sizeof(struct CreateMappingRes),
offsetof(struct CreateMappingRes, _asn_ctx),
asn_MAP_CreateMappingRes_tag2el_1,
1, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
0, /* Start extensions */
2 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_CreateMappingRes = {
"CreateMappingRes",
"CreateMappingRes",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_CreateMappingRes_tags_1,
sizeof(asn_DEF_CreateMappingRes_tags_1)
/sizeof(asn_DEF_CreateMappingRes_tags_1[0]), /* 1 */
asn_DEF_CreateMappingRes_tags_1, /* Same as above */
sizeof(asn_DEF_CreateMappingRes_tags_1)
/sizeof(asn_DEF_CreateMappingRes_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_CreateMappingRes_1,
1, /* Elements count */
&asn_SPC_CreateMappingRes_specs_1 /* Additional specs */
};

65
src/rspro/IpAddress.c Normal file
View File

@ -0,0 +1,65 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/IpAddress.h>
static asn_TYPE_member_t asn_MBR_IpAddress_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct IpAddress, choice.ipv4),
(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_Ipv4Address,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"ipv4"
},
{ ATF_NOFLAGS, 0, offsetof(struct IpAddress, choice.ipv6),
(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_Ipv6Address,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"ipv6"
},
};
static const asn_TYPE_tag2member_t asn_MAP_IpAddress_tag2el_1[] = {
{ (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ipv4 */
{ (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 } /* ipv6 */
};
static asn_CHOICE_specifics_t asn_SPC_IpAddress_specs_1 = {
sizeof(struct IpAddress),
offsetof(struct IpAddress, _asn_ctx),
offsetof(struct IpAddress, present),
sizeof(((struct IpAddress *)0)->present),
asn_MAP_IpAddress_tag2el_1,
2, /* Count of tags in the map */
0,
-1 /* Extensions start */
};
asn_TYPE_descriptor_t asn_DEF_IpAddress = {
"IpAddress",
"IpAddress",
CHOICE_free,
CHOICE_print,
CHOICE_constraint,
CHOICE_decode_ber,
CHOICE_encode_der,
CHOICE_decode_xer,
CHOICE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
CHOICE_outmost_tag,
0, /* No effective tags (pointer) */
0, /* No effective tags (count) */
0, /* No tags (pointer) */
0, /* No tags (count) */
0, /* No PER visible constraints */
asn_MBR_IpAddress_1,
2, /* Elements count */
&asn_SPC_IpAddress_specs_1 /* Additional specs */
};

70
src/rspro/IpPort.c Normal file
View File

@ -0,0 +1,70 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/IpPort.h>
static asn_TYPE_member_t asn_MBR_IpPort_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct IpPort, ip),
-1 /* Ambiguous tag (CHOICE?) */,
0,
&asn_DEF_IpAddress,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"ip"
},
{ ATF_NOFLAGS, 0, offsetof(struct IpPort, port),
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
0,
&asn_DEF_PortNumber,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"port"
},
};
static const ber_tlv_tag_t asn_DEF_IpPort_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_IpPort_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 1, 0, 0 }, /* port */
{ (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* ipv4 */
{ (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 0, 0, 0 } /* ipv6 */
};
static asn_SEQUENCE_specifics_t asn_SPC_IpPort_specs_1 = {
sizeof(struct IpPort),
offsetof(struct IpPort, _asn_ctx),
asn_MAP_IpPort_tag2el_1,
3, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
-1, /* Start extensions */
-1 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_IpPort = {
"IpPort",
"IpPort",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_IpPort_tags_1,
sizeof(asn_DEF_IpPort_tags_1)
/sizeof(asn_DEF_IpPort_tags_1[0]), /* 1 */
asn_DEF_IpPort_tags_1, /* Same as above */
sizeof(asn_DEF_IpPort_tags_1)
/sizeof(asn_DEF_IpPort_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_IpPort_1,
2, /* Elements count */
&asn_SPC_IpPort_specs_1 /* Additional specs */
};

129
src/rspro/Ipv4Address.c Normal file
View File

@ -0,0 +1,129 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/Ipv4Address.h>
int
Ipv4Address_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
size_t size;
if(!sptr) {
_ASN_CTFAIL(app_key, td, sptr,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
size = st->size;
if((size == 4l)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_CTFAIL(app_key, td, sptr,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
/*
* This type is implemented using OCTET_STRING,
* so here we adjust the DEF accordingly.
*/
static void
Ipv4Address_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_OCTET_STRING.free_struct;
td->print_struct = asn_DEF_OCTET_STRING.print_struct;
td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
td->elements = asn_DEF_OCTET_STRING.elements;
td->elements_count = asn_DEF_OCTET_STRING.elements_count;
td->specifics = asn_DEF_OCTET_STRING.specifics;
}
void
Ipv4Address_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
Ipv4Address_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
Ipv4Address_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
Ipv4Address_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
Ipv4Address_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
Ipv4Address_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
Ipv4Address_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
Ipv4Address_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
Ipv4Address_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
Ipv4Address_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
Ipv4Address_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
Ipv4Address_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const ber_tlv_tag_t asn_DEF_Ipv4Address_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
};
asn_TYPE_descriptor_t asn_DEF_Ipv4Address = {
"Ipv4Address",
"Ipv4Address",
Ipv4Address_free,
Ipv4Address_print,
Ipv4Address_constraint,
Ipv4Address_decode_ber,
Ipv4Address_encode_der,
Ipv4Address_decode_xer,
Ipv4Address_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_Ipv4Address_tags_1,
sizeof(asn_DEF_Ipv4Address_tags_1)
/sizeof(asn_DEF_Ipv4Address_tags_1[0]), /* 1 */
asn_DEF_Ipv4Address_tags_1, /* Same as above */
sizeof(asn_DEF_Ipv4Address_tags_1)
/sizeof(asn_DEF_Ipv4Address_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};

129
src/rspro/Ipv6Address.c Normal file
View File

@ -0,0 +1,129 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/Ipv6Address.h>
int
Ipv6Address_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
const OCTET_STRING_t *st = (const OCTET_STRING_t *)sptr;
size_t size;
if(!sptr) {
_ASN_CTFAIL(app_key, td, sptr,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
size = st->size;
if((size == 16l)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_CTFAIL(app_key, td, sptr,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
/*
* This type is implemented using OCTET_STRING,
* so here we adjust the DEF accordingly.
*/
static void
Ipv6Address_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_OCTET_STRING.free_struct;
td->print_struct = asn_DEF_OCTET_STRING.print_struct;
td->check_constraints = asn_DEF_OCTET_STRING.check_constraints;
td->ber_decoder = asn_DEF_OCTET_STRING.ber_decoder;
td->der_encoder = asn_DEF_OCTET_STRING.der_encoder;
td->xer_decoder = asn_DEF_OCTET_STRING.xer_decoder;
td->xer_encoder = asn_DEF_OCTET_STRING.xer_encoder;
td->uper_decoder = asn_DEF_OCTET_STRING.uper_decoder;
td->uper_encoder = asn_DEF_OCTET_STRING.uper_encoder;
td->aper_decoder = asn_DEF_OCTET_STRING.aper_decoder;
td->aper_encoder = asn_DEF_OCTET_STRING.aper_encoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_OCTET_STRING.per_constraints;
td->elements = asn_DEF_OCTET_STRING.elements;
td->elements_count = asn_DEF_OCTET_STRING.elements_count;
td->specifics = asn_DEF_OCTET_STRING.specifics;
}
void
Ipv6Address_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
Ipv6Address_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
Ipv6Address_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
Ipv6Address_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
Ipv6Address_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
Ipv6Address_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
Ipv6Address_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
Ipv6Address_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
Ipv6Address_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
Ipv6Address_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
Ipv6Address_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
Ipv6Address_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const ber_tlv_tag_t asn_DEF_Ipv6Address_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (4 << 2))
};
asn_TYPE_descriptor_t asn_DEF_Ipv6Address = {
"Ipv6Address",
"Ipv6Address",
Ipv6Address_free,
Ipv6Address_print,
Ipv6Address_constraint,
Ipv6Address_decode_ber,
Ipv6Address_encode_der,
Ipv6Address_decode_xer,
Ipv6Address_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_Ipv6Address_tags_1,
sizeof(asn_DEF_Ipv6Address_tags_1)
/sizeof(asn_DEF_Ipv6Address_tags_1[0]), /* 1 */
asn_DEF_Ipv6Address_tags_1, /* Same as above */
sizeof(asn_DEF_Ipv6Address_tags_1)
/sizeof(asn_DEF_Ipv6Address_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};

89
src/rspro/Makefile.am Normal file
View File

@ -0,0 +1,89 @@
ASN_MODULE_SOURCES = \
ATR.c \
BankId.c \
BankSlot.c \
BankSlotStatusInd.c \
ClientId.c \
ClientSlot.c \
ClientSlotStatusInd.c \
ComponentIdentity.c \
ComponentName.c \
ComponentType.c \
ConfigClientReq.c \
ConfigClientRes.c \
ConnectBankReq.c \
ConnectBankRes.c \
ConnectClientReq.c \
ConnectClientRes.c \
CreateMappingReq.c \
CreateMappingRes.c \
IpAddress.c \
IpPort.c \
Ipv4Address.c \
Ipv6Address.c \
OperationTag.c \
PortNumber.c \
RemoveMappingReq.c \
RemoveMappingRes.c \
ResultCode.c \
RsproPDU.c \
RsproPDUchoice.c \
SetAtrReq.c \
SetAtrRes.c \
SlotNumber.c \
SlotPhysStatus.c \
TpduCardToModem.c \
TpduFlags.c \
TpduModemToCard.c \
$(NULL)
ASN_MODULE_INC = \
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)
AM_CFLAGS = -I$(top_srcdir)/include $(ASN1C_CFLAGS) $(OSMOCORE_CFLAGS)
noinst_LTLIBRARIES=libosmo-asn1-rspro.la
libosmo_asn1_rspro_la_SOURCES=$(ASN_MODULE_SOURCES)
libosmo_asn1_rspro_la_LIBADD=$(ASN1C_LDADD)
regen: regenerate-from-asn1-source
regenerate-from-asn1-source:
asn1c -R $(top_srcdir)/asn1/RSPRO.asn
$(top_srcdir)/move-asn1-header-files.sh osmocom/rspro $(ASN_MODULE_INC)

128
src/rspro/OperationTag.c Normal file
View File

@ -0,0 +1,128 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/OperationTag.h>
int
OperationTag_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
long value;
if(!sptr) {
_ASN_CTFAIL(app_key, td, sptr,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
value = *(const long *)sptr;
if((value >= 0l && value <= 2147483647l)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_CTFAIL(app_key, td, sptr,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
/*
* This type is implemented using NativeInteger,
* so here we adjust the DEF accordingly.
*/
static void
OperationTag_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_NativeInteger.free_struct;
td->print_struct = asn_DEF_NativeInteger.print_struct;
td->check_constraints = asn_DEF_NativeInteger.check_constraints;
td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
td->der_encoder = asn_DEF_NativeInteger.der_encoder;
td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_NativeInteger.per_constraints;
td->elements = asn_DEF_NativeInteger.elements;
td->elements_count = asn_DEF_NativeInteger.elements_count;
td->specifics = asn_DEF_NativeInteger.specifics;
}
void
OperationTag_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
OperationTag_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
OperationTag_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
OperationTag_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
OperationTag_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
OperationTag_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
OperationTag_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
OperationTag_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
OperationTag_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
OperationTag_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
OperationTag_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
OperationTag_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const ber_tlv_tag_t asn_DEF_OperationTag_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
asn_TYPE_descriptor_t asn_DEF_OperationTag = {
"OperationTag",
"OperationTag",
OperationTag_free,
OperationTag_print,
OperationTag_constraint,
OperationTag_decode_ber,
OperationTag_encode_der,
OperationTag_decode_xer,
OperationTag_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_OperationTag_tags_1,
sizeof(asn_DEF_OperationTag_tags_1)
/sizeof(asn_DEF_OperationTag_tags_1[0]), /* 1 */
asn_DEF_OperationTag_tags_1, /* Same as above */
sizeof(asn_DEF_OperationTag_tags_1)
/sizeof(asn_DEF_OperationTag_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};

128
src/rspro/PortNumber.c Normal file
View File

@ -0,0 +1,128 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/PortNumber.h>
int
PortNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
long value;
if(!sptr) {
_ASN_CTFAIL(app_key, td, sptr,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
value = *(const long *)sptr;
if((value >= 0l && value <= 65535l)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_CTFAIL(app_key, td, sptr,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
/*
* This type is implemented using NativeInteger,
* so here we adjust the DEF accordingly.
*/
static void
PortNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_NativeInteger.free_struct;
td->print_struct = asn_DEF_NativeInteger.print_struct;
td->check_constraints = asn_DEF_NativeInteger.check_constraints;
td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
td->der_encoder = asn_DEF_NativeInteger.der_encoder;
td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_NativeInteger.per_constraints;
td->elements = asn_DEF_NativeInteger.elements;
td->elements_count = asn_DEF_NativeInteger.elements_count;
td->specifics = asn_DEF_NativeInteger.specifics;
}
void
PortNumber_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
PortNumber_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
PortNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
PortNumber_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
PortNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
PortNumber_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
PortNumber_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
PortNumber_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
PortNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
PortNumber_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
PortNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
PortNumber_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const ber_tlv_tag_t asn_DEF_PortNumber_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
asn_TYPE_descriptor_t asn_DEF_PortNumber = {
"PortNumber",
"PortNumber",
PortNumber_free,
PortNumber_print,
PortNumber_constraint,
PortNumber_decode_ber,
PortNumber_encode_der,
PortNumber_decode_xer,
PortNumber_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_PortNumber_tags_1,
sizeof(asn_DEF_PortNumber_tags_1)
/sizeof(asn_DEF_PortNumber_tags_1[0]), /* 1 */
asn_DEF_PortNumber_tags_1, /* Same as above */
sizeof(asn_DEF_PortNumber_tags_1)
/sizeof(asn_DEF_PortNumber_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};

View File

@ -0,0 +1,69 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/RemoveMappingReq.h>
static asn_TYPE_member_t asn_MBR_RemoveMappingReq_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct RemoveMappingReq, client),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_ClientSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"client"
},
{ ATF_NOFLAGS, 0, offsetof(struct RemoveMappingReq, bank),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_BankSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"bank"
},
};
static const ber_tlv_tag_t asn_DEF_RemoveMappingReq_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_RemoveMappingReq_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 1 }, /* client */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 0 } /* bank */
};
static asn_SEQUENCE_specifics_t asn_SPC_RemoveMappingReq_specs_1 = {
sizeof(struct RemoveMappingReq),
offsetof(struct RemoveMappingReq, _asn_ctx),
asn_MAP_RemoveMappingReq_tag2el_1,
2, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
1, /* Start extensions */
3 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_RemoveMappingReq = {
"RemoveMappingReq",
"RemoveMappingReq",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_RemoveMappingReq_tags_1,
sizeof(asn_DEF_RemoveMappingReq_tags_1)
/sizeof(asn_DEF_RemoveMappingReq_tags_1[0]), /* 1 */
asn_DEF_RemoveMappingReq_tags_1, /* Same as above */
sizeof(asn_DEF_RemoveMappingReq_tags_1)
/sizeof(asn_DEF_RemoveMappingReq_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_RemoveMappingReq_1,
2, /* Elements count */
&asn_SPC_RemoveMappingReq_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,59 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/RemoveMappingRes.h>
static asn_TYPE_member_t asn_MBR_RemoveMappingRes_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct RemoveMappingRes, result),
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
0,
&asn_DEF_ResultCode,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"result"
},
};
static const ber_tlv_tag_t asn_DEF_RemoveMappingRes_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_RemoveMappingRes_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* result */
};
static asn_SEQUENCE_specifics_t asn_SPC_RemoveMappingRes_specs_1 = {
sizeof(struct RemoveMappingRes),
offsetof(struct RemoveMappingRes, _asn_ctx),
asn_MAP_RemoveMappingRes_tag2el_1,
1, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
0, /* Start extensions */
2 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_RemoveMappingRes = {
"RemoveMappingRes",
"RemoveMappingRes",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_RemoveMappingRes_tags_1,
sizeof(asn_DEF_RemoveMappingRes_tags_1)
/sizeof(asn_DEF_RemoveMappingRes_tags_1[0]), /* 1 */
asn_DEF_RemoveMappingRes_tags_1, /* Same as above */
sizeof(asn_DEF_RemoveMappingRes_tags_1)
/sizeof(asn_DEF_RemoveMappingRes_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_RemoveMappingRes_1,
1, /* Elements count */
&asn_SPC_RemoveMappingRes_specs_1 /* Additional specs */
};

140
src/rspro/ResultCode.c Normal file
View File

@ -0,0 +1,140 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/ResultCode.h>
int
ResultCode_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
/* Replace with underlying type checker */
td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
return td->check_constraints(td, sptr, ctfailcb, app_key);
}
/*
* This type is implemented using NativeEnumerated,
* so here we adjust the DEF accordingly.
*/
static void
ResultCode_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_NativeEnumerated.free_struct;
td->print_struct = asn_DEF_NativeEnumerated.print_struct;
td->check_constraints = asn_DEF_NativeEnumerated.check_constraints;
td->ber_decoder = asn_DEF_NativeEnumerated.ber_decoder;
td->der_encoder = asn_DEF_NativeEnumerated.der_encoder;
td->xer_decoder = asn_DEF_NativeEnumerated.xer_decoder;
td->xer_encoder = asn_DEF_NativeEnumerated.xer_encoder;
td->uper_decoder = asn_DEF_NativeEnumerated.uper_decoder;
td->uper_encoder = asn_DEF_NativeEnumerated.uper_encoder;
td->aper_decoder = asn_DEF_NativeEnumerated.aper_decoder;
td->aper_encoder = asn_DEF_NativeEnumerated.aper_encoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_NativeEnumerated.per_constraints;
td->elements = asn_DEF_NativeEnumerated.elements;
td->elements_count = asn_DEF_NativeEnumerated.elements_count;
/* td->specifics = asn_DEF_NativeEnumerated.specifics; // Defined explicitly */
}
void
ResultCode_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
ResultCode_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
ResultCode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
ResultCode_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
ResultCode_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
ResultCode_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
ResultCode_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
ResultCode_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
ResultCode_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
ResultCode_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
ResultCode_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
ResultCode_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const asn_INTEGER_enum_map_t asn_MAP_ResultCode_value2enum_1[] = {
{ 0, 2, "ok" },
{ 1, 15, "illegalClientId" },
{ 2, 13, "illegalBankId" },
{ 3, 13, "illegalSlotId" },
{ 100, 14, "cardNotPresent" },
{ 101, 16, "cardUnresponsive" },
{ 102, 21, "cardTransmissionError" }
/* This list is extensible */
};
static const unsigned int asn_MAP_ResultCode_enum2value_1[] = {
4, /* cardNotPresent(100) */
6, /* cardTransmissionError(102) */
5, /* cardUnresponsive(101) */
2, /* illegalBankId(2) */
1, /* illegalClientId(1) */
3, /* illegalSlotId(3) */
0 /* ok(0) */
/* This list is extensible */
};
static const asn_INTEGER_specifics_t asn_SPC_ResultCode_specs_1 = {
asn_MAP_ResultCode_value2enum_1, /* "tag" => N; sorted by tag */
asn_MAP_ResultCode_enum2value_1, /* N => "tag"; sorted by N */
7, /* Number of elements in the maps */
8, /* Extensions before this member */
1, /* Strict enumeration */
0, /* Native long size */
0
};
static const ber_tlv_tag_t asn_DEF_ResultCode_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
asn_TYPE_descriptor_t asn_DEF_ResultCode = {
"ResultCode",
"ResultCode",
ResultCode_free,
ResultCode_print,
ResultCode_constraint,
ResultCode_decode_ber,
ResultCode_encode_der,
ResultCode_decode_xer,
ResultCode_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_ResultCode_tags_1,
sizeof(asn_DEF_ResultCode_tags_1)
/sizeof(asn_DEF_ResultCode_tags_1[0]), /* 1 */
asn_DEF_ResultCode_tags_1, /* Same as above */
sizeof(asn_DEF_ResultCode_tags_1)
/sizeof(asn_DEF_ResultCode_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* Defined elsewhere */
&asn_SPC_ResultCode_specs_1 /* Additional specs */
};

122
src/rspro/RsproPDU.c Normal file
View File

@ -0,0 +1,122 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/RsproPDU.h>
static int
memb_version_constraint_1(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
long value;
if(!sptr) {
_ASN_CTFAIL(app_key, td, sptr,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
value = *(const long *)sptr;
if((value >= 0l && value <= 32l)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_CTFAIL(app_key, td, sptr,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
static int asn_DFL_2_set_1(int set_value, void **sptr) {
long *st = *sptr;
if(!st) {
if(!set_value) return -1; /* Not a default value */
st = (*sptr = CALLOC(1, sizeof(*st)));
if(!st) return -1;
}
if(set_value) {
/* Install default value 1 */
*st = 1l;
return 0;
} else {
/* Test default value 1 */
return (*st == 1);
}
}
static asn_TYPE_member_t asn_MBR_RsproPDU_1[] = {
{ ATF_POINTER, 1, offsetof(struct RsproPDU, version),
(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_NativeInteger,
memb_version_constraint_1,
0, /* PER is not compiled, use -gen-PER */
asn_DFL_2_set_1, /* DEFAULT 1 */
"version"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDU, tag),
(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_OperationTag,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"tag"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDU, msg),
(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
+1, /* EXPLICIT tag at current level */
&asn_DEF_RsproPDUchoice,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"msg"
},
};
static const ber_tlv_tag_t asn_DEF_RsproPDU_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_RsproPDU_tag2el_1[] = {
{ (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* version */
{ (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* tag */
{ (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 } /* msg */
};
static asn_SEQUENCE_specifics_t asn_SPC_RsproPDU_specs_1 = {
sizeof(struct RsproPDU),
offsetof(struct RsproPDU, _asn_ctx),
asn_MAP_RsproPDU_tag2el_1,
3, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
-1, /* Start extensions */
-1 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_RsproPDU = {
"RsproPDU",
"RsproPDU",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_RsproPDU_tags_1,
sizeof(asn_DEF_RsproPDU_tags_1)
/sizeof(asn_DEF_RsproPDU_tags_1[0]), /* 1 */
asn_DEF_RsproPDU_tags_1, /* Same as above */
sizeof(asn_DEF_RsproPDU_tags_1)
/sizeof(asn_DEF_RsproPDU_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_RsproPDU_1,
3, /* Elements count */
&asn_SPC_RsproPDU_specs_1 /* Additional specs */
};

205
src/rspro/RsproPDUchoice.c Normal file
View File

@ -0,0 +1,205 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/RsproPDUchoice.h>
static asn_TYPE_member_t asn_MBR_RsproPDUchoice_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.connectBankReq),
(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ConnectBankReq,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"connectBankReq"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.connectBankRes),
(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ConnectBankRes,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"connectBankRes"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.connectClientReq),
(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ConnectClientReq,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"connectClientReq"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.connectClientRes),
(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ConnectClientRes,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"connectClientRes"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.createMappingReq),
(ASN_TAG_CLASS_CONTEXT | (4 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_CreateMappingReq,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"createMappingReq"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.createMappingRes),
(ASN_TAG_CLASS_CONTEXT | (5 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_CreateMappingRes,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"createMappingRes"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.removeMappingReq),
(ASN_TAG_CLASS_CONTEXT | (6 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_RemoveMappingReq,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"removeMappingReq"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.removeMappingRes),
(ASN_TAG_CLASS_CONTEXT | (7 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_RemoveMappingRes,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"removeMappingRes"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.configClientReq),
(ASN_TAG_CLASS_CONTEXT | (8 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ConfigClientReq,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"configClientReq"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.configClientRes),
(ASN_TAG_CLASS_CONTEXT | (9 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ConfigClientRes,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"configClientRes"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.setAtrReq),
(ASN_TAG_CLASS_CONTEXT | (10 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_SetAtrReq,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"setAtrReq"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.setAtrRes),
(ASN_TAG_CLASS_CONTEXT | (11 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_SetAtrRes,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"setAtrRes"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.tpduModemToCard),
(ASN_TAG_CLASS_CONTEXT | (12 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_TpduModemToCard,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"tpduModemToCard"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.tpduCardToModem),
(ASN_TAG_CLASS_CONTEXT | (13 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_TpduCardToModem,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"tpduCardToModem"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.clientSlotStatusInd),
(ASN_TAG_CLASS_CONTEXT | (14 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ClientSlotStatusInd,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"clientSlotStatusInd"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.bankSlotStatusInd),
(ASN_TAG_CLASS_CONTEXT | (15 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_BankSlotStatusInd,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"bankSlotStatusInd"
},
};
static const asn_TYPE_tag2member_t asn_MAP_RsproPDUchoice_tag2el_1[] = {
{ (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* connectBankReq */
{ (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* connectBankRes */
{ (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* connectClientReq */
{ (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 }, /* connectClientRes */
{ (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 4, 0, 0 }, /* createMappingReq */
{ (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 5, 0, 0 }, /* createMappingRes */
{ (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 6, 0, 0 }, /* removeMappingReq */
{ (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* removeMappingRes */
{ (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* configClientReq */
{ (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* configClientRes */
{ (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 10, 0, 0 }, /* setAtrReq */
{ (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 11, 0, 0 }, /* setAtrRes */
{ (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 12, 0, 0 }, /* tpduModemToCard */
{ (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 13, 0, 0 }, /* tpduCardToModem */
{ (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 14, 0, 0 }, /* clientSlotStatusInd */
{ (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 15, 0, 0 } /* bankSlotStatusInd */
};
static asn_CHOICE_specifics_t asn_SPC_RsproPDUchoice_specs_1 = {
sizeof(struct RsproPDUchoice),
offsetof(struct RsproPDUchoice, _asn_ctx),
offsetof(struct RsproPDUchoice, present),
sizeof(((struct RsproPDUchoice *)0)->present),
asn_MAP_RsproPDUchoice_tag2el_1,
16, /* Count of tags in the map */
0,
16 /* Extensions start */
};
asn_TYPE_descriptor_t asn_DEF_RsproPDUchoice = {
"RsproPDUchoice",
"RsproPDUchoice",
CHOICE_free,
CHOICE_print,
CHOICE_constraint,
CHOICE_decode_ber,
CHOICE_encode_der,
CHOICE_decode_xer,
CHOICE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
CHOICE_outmost_tag,
0, /* No effective tags (pointer) */
0, /* No effective tags (count) */
0, /* No tags (pointer) */
0, /* No tags (count) */
0, /* No PER visible constraints */
asn_MBR_RsproPDUchoice_1,
16, /* Elements count */
&asn_SPC_RsproPDUchoice_specs_1 /* Additional specs */
};

69
src/rspro/SetAtrReq.c Normal file
View File

@ -0,0 +1,69 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/SetAtrReq.h>
static asn_TYPE_member_t asn_MBR_SetAtrReq_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct SetAtrReq, slot),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_ClientSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"slot"
},
{ ATF_NOFLAGS, 0, offsetof(struct SetAtrReq, atr),
(ASN_TAG_CLASS_UNIVERSAL | (4 << 2)),
0,
&asn_DEF_ATR,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"atr"
},
};
static const ber_tlv_tag_t asn_DEF_SetAtrReq_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_SetAtrReq_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 1, 0, 0 }, /* atr */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 0 } /* slot */
};
static asn_SEQUENCE_specifics_t asn_SPC_SetAtrReq_specs_1 = {
sizeof(struct SetAtrReq),
offsetof(struct SetAtrReq, _asn_ctx),
asn_MAP_SetAtrReq_tag2el_1,
2, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
1, /* Start extensions */
3 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_SetAtrReq = {
"SetAtrReq",
"SetAtrReq",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_SetAtrReq_tags_1,
sizeof(asn_DEF_SetAtrReq_tags_1)
/sizeof(asn_DEF_SetAtrReq_tags_1[0]), /* 1 */
asn_DEF_SetAtrReq_tags_1, /* Same as above */
sizeof(asn_DEF_SetAtrReq_tags_1)
/sizeof(asn_DEF_SetAtrReq_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_SetAtrReq_1,
2, /* Elements count */
&asn_SPC_SetAtrReq_specs_1 /* Additional specs */
};

59
src/rspro/SetAtrRes.c Normal file
View File

@ -0,0 +1,59 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/SetAtrRes.h>
static asn_TYPE_member_t asn_MBR_SetAtrRes_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct SetAtrRes, result),
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
0,
&asn_DEF_ResultCode,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"result"
},
};
static const ber_tlv_tag_t asn_DEF_SetAtrRes_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_SetAtrRes_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* result */
};
static asn_SEQUENCE_specifics_t asn_SPC_SetAtrRes_specs_1 = {
sizeof(struct SetAtrRes),
offsetof(struct SetAtrRes, _asn_ctx),
asn_MAP_SetAtrRes_tag2el_1,
1, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
0, /* Start extensions */
2 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_SetAtrRes = {
"SetAtrRes",
"SetAtrRes",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_SetAtrRes_tags_1,
sizeof(asn_DEF_SetAtrRes_tags_1)
/sizeof(asn_DEF_SetAtrRes_tags_1[0]), /* 1 */
asn_DEF_SetAtrRes_tags_1, /* Same as above */
sizeof(asn_DEF_SetAtrRes_tags_1)
/sizeof(asn_DEF_SetAtrRes_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_SetAtrRes_1,
1, /* Elements count */
&asn_SPC_SetAtrRes_specs_1 /* Additional specs */
};

128
src/rspro/SlotNumber.c Normal file
View File

@ -0,0 +1,128 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/SlotNumber.h>
int
SlotNumber_constraint(asn_TYPE_descriptor_t *td, const void *sptr,
asn_app_constraint_failed_f *ctfailcb, void *app_key) {
long value;
if(!sptr) {
_ASN_CTFAIL(app_key, td, sptr,
"%s: value not given (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
value = *(const long *)sptr;
if((value >= 0l && value <= 1023l)) {
/* Constraint check succeeded */
return 0;
} else {
_ASN_CTFAIL(app_key, td, sptr,
"%s: constraint failed (%s:%d)",
td->name, __FILE__, __LINE__);
return -1;
}
}
/*
* This type is implemented using NativeInteger,
* so here we adjust the DEF accordingly.
*/
static void
SlotNumber_1_inherit_TYPE_descriptor(asn_TYPE_descriptor_t *td) {
td->free_struct = asn_DEF_NativeInteger.free_struct;
td->print_struct = asn_DEF_NativeInteger.print_struct;
td->check_constraints = asn_DEF_NativeInteger.check_constraints;
td->ber_decoder = asn_DEF_NativeInteger.ber_decoder;
td->der_encoder = asn_DEF_NativeInteger.der_encoder;
td->xer_decoder = asn_DEF_NativeInteger.xer_decoder;
td->xer_encoder = asn_DEF_NativeInteger.xer_encoder;
td->uper_decoder = asn_DEF_NativeInteger.uper_decoder;
td->uper_encoder = asn_DEF_NativeInteger.uper_encoder;
td->aper_decoder = asn_DEF_NativeInteger.aper_decoder;
td->aper_encoder = asn_DEF_NativeInteger.aper_encoder;
if(!td->per_constraints)
td->per_constraints = asn_DEF_NativeInteger.per_constraints;
td->elements = asn_DEF_NativeInteger.elements;
td->elements_count = asn_DEF_NativeInteger.elements_count;
td->specifics = asn_DEF_NativeInteger.specifics;
}
void
SlotNumber_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
SlotNumber_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
SlotNumber_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
SlotNumber_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
SlotNumber_decode_ber(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const void *bufptr, size_t size, int tag_mode) {
SlotNumber_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
SlotNumber_encode_der(asn_TYPE_descriptor_t *td,
void *structure, int tag_mode, ber_tlv_tag_t tag,
asn_app_consume_bytes_f *cb, void *app_key) {
SlotNumber_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
SlotNumber_decode_xer(asn_codec_ctx_t *opt_codec_ctx, asn_TYPE_descriptor_t *td,
void **structure, const char *opt_mname, const void *bufptr, size_t size) {
SlotNumber_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
SlotNumber_encode_xer(asn_TYPE_descriptor_t *td, void *structure,
int ilevel, enum xer_encoder_flags_e flags,
asn_app_consume_bytes_f *cb, void *app_key) {
SlotNumber_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const ber_tlv_tag_t asn_DEF_SlotNumber_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
};
asn_TYPE_descriptor_t asn_DEF_SlotNumber = {
"SlotNumber",
"SlotNumber",
SlotNumber_free,
SlotNumber_print,
SlotNumber_constraint,
SlotNumber_decode_ber,
SlotNumber_encode_der,
SlotNumber_decode_xer,
SlotNumber_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_SlotNumber_tags_1,
sizeof(asn_DEF_SlotNumber_tags_1)
/sizeof(asn_DEF_SlotNumber_tags_1[0]), /* 1 */
asn_DEF_SlotNumber_tags_1, /* Same as above */
sizeof(asn_DEF_SlotNumber_tags_1)
/sizeof(asn_DEF_SlotNumber_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};

View File

@ -0,0 +1,89 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/SlotPhysStatus.h>
static asn_TYPE_member_t asn_MBR_SlotPhysStatus_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct SlotPhysStatus, resetActive),
(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_BOOLEAN,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"resetActive"
},
{ ATF_POINTER, 3, offsetof(struct SlotPhysStatus, vccPresent),
(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_BOOLEAN,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"vccPresent"
},
{ ATF_POINTER, 2, offsetof(struct SlotPhysStatus, clkActive),
(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_BOOLEAN,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"clkActive"
},
{ ATF_POINTER, 1, offsetof(struct SlotPhysStatus, cardPresent),
(ASN_TAG_CLASS_CONTEXT | (3 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_BOOLEAN,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"cardPresent"
},
};
static const ber_tlv_tag_t asn_DEF_SlotPhysStatus_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_SlotPhysStatus_tag2el_1[] = {
{ (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 0, 0, 0 }, /* resetActive */
{ (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 1, 0, 0 }, /* vccPresent */
{ (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 2, 0, 0 }, /* clkActive */
{ (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 3, 0, 0 } /* cardPresent */
};
static asn_SEQUENCE_specifics_t asn_SPC_SlotPhysStatus_specs_1 = {
sizeof(struct SlotPhysStatus),
offsetof(struct SlotPhysStatus, _asn_ctx),
asn_MAP_SlotPhysStatus_tag2el_1,
4, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
3, /* Start extensions */
5 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_SlotPhysStatus = {
"SlotPhysStatus",
"SlotPhysStatus",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_SlotPhysStatus_tags_1,
sizeof(asn_DEF_SlotPhysStatus_tags_1)
/sizeof(asn_DEF_SlotPhysStatus_tags_1[0]), /* 1 */
asn_DEF_SlotPhysStatus_tags_1, /* Same as above */
sizeof(asn_DEF_SlotPhysStatus_tags_1)
/sizeof(asn_DEF_SlotPhysStatus_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_SlotPhysStatus_1,
4, /* Elements count */
&asn_SPC_SlotPhysStatus_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,89 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/TpduCardToModem.h>
static asn_TYPE_member_t asn_MBR_TpduCardToModem_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct TpduCardToModem, fromBankSlot),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_BankSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"fromBankSlot"
},
{ ATF_NOFLAGS, 0, offsetof(struct TpduCardToModem, toClientSlot),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_ClientSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"toClientSlot"
},
{ ATF_NOFLAGS, 0, offsetof(struct TpduCardToModem, flags),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_TpduFlags,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"flags"
},
{ ATF_NOFLAGS, 0, offsetof(struct TpduCardToModem, data),
(ASN_TAG_CLASS_UNIVERSAL | (4 << 2)),
0,
&asn_DEF_OCTET_STRING,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"data"
},
};
static const ber_tlv_tag_t asn_DEF_TpduCardToModem_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_TpduCardToModem_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* data */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* fromBankSlot */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* toClientSlot */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* flags */
};
static asn_SEQUENCE_specifics_t asn_SPC_TpduCardToModem_specs_1 = {
sizeof(struct TpduCardToModem),
offsetof(struct TpduCardToModem, _asn_ctx),
asn_MAP_TpduCardToModem_tag2el_1,
4, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
3, /* Start extensions */
5 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_TpduCardToModem = {
"TpduCardToModem",
"TpduCardToModem",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_TpduCardToModem_tags_1,
sizeof(asn_DEF_TpduCardToModem_tags_1)
/sizeof(asn_DEF_TpduCardToModem_tags_1[0]), /* 1 */
asn_DEF_TpduCardToModem_tags_1, /* Same as above */
sizeof(asn_DEF_TpduCardToModem_tags_1)
/sizeof(asn_DEF_TpduCardToModem_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_TpduCardToModem_1,
4, /* Elements count */
&asn_SPC_TpduCardToModem_specs_1 /* Additional specs */
};

89
src/rspro/TpduFlags.c Normal file
View File

@ -0,0 +1,89 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/TpduFlags.h>
static asn_TYPE_member_t asn_MBR_TpduFlags_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct TpduFlags, tpduHeaderPresent),
(ASN_TAG_CLASS_UNIVERSAL | (1 << 2)),
0,
&asn_DEF_BOOLEAN,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"tpduHeaderPresent"
},
{ ATF_NOFLAGS, 0, offsetof(struct TpduFlags, finalPart),
(ASN_TAG_CLASS_UNIVERSAL | (1 << 2)),
0,
&asn_DEF_BOOLEAN,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"finalPart"
},
{ ATF_NOFLAGS, 0, offsetof(struct TpduFlags, procByteContinueTx),
(ASN_TAG_CLASS_UNIVERSAL | (1 << 2)),
0,
&asn_DEF_BOOLEAN,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"procByteContinueTx"
},
{ ATF_NOFLAGS, 0, offsetof(struct TpduFlags, procByteContinueRx),
(ASN_TAG_CLASS_UNIVERSAL | (1 << 2)),
0,
&asn_DEF_BOOLEAN,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"procByteContinueRx"
},
};
static const ber_tlv_tag_t asn_DEF_TpduFlags_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_TpduFlags_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)), 0, 0, 3 }, /* tpduHeaderPresent */
{ (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)), 1, -1, 2 }, /* finalPart */
{ (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)), 2, -2, 1 }, /* procByteContinueTx */
{ (ASN_TAG_CLASS_UNIVERSAL | (1 << 2)), 3, -3, 0 } /* procByteContinueRx */
};
static asn_SEQUENCE_specifics_t asn_SPC_TpduFlags_specs_1 = {
sizeof(struct TpduFlags),
offsetof(struct TpduFlags, _asn_ctx),
asn_MAP_TpduFlags_tag2el_1,
4, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
3, /* Start extensions */
5 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_TpduFlags = {
"TpduFlags",
"TpduFlags",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_TpduFlags_tags_1,
sizeof(asn_DEF_TpduFlags_tags_1)
/sizeof(asn_DEF_TpduFlags_tags_1[0]), /* 1 */
asn_DEF_TpduFlags_tags_1, /* Same as above */
sizeof(asn_DEF_TpduFlags_tags_1)
/sizeof(asn_DEF_TpduFlags_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_TpduFlags_1,
4, /* Elements count */
&asn_SPC_TpduFlags_specs_1 /* Additional specs */
};

View File

@ -0,0 +1,89 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include <osmocom/rspro/TpduModemToCard.h>
static asn_TYPE_member_t asn_MBR_TpduModemToCard_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct TpduModemToCard, fromClientSlot),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_ClientSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"fromClientSlot"
},
{ ATF_NOFLAGS, 0, offsetof(struct TpduModemToCard, toBankSlot),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_BankSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"toBankSlot"
},
{ ATF_NOFLAGS, 0, offsetof(struct TpduModemToCard, flags),
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
0,
&asn_DEF_TpduFlags,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"flags"
},
{ ATF_NOFLAGS, 0, offsetof(struct TpduModemToCard, data),
(ASN_TAG_CLASS_UNIVERSAL | (4 << 2)),
0,
&asn_DEF_OCTET_STRING,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"data"
},
};
static const ber_tlv_tag_t asn_DEF_TpduModemToCard_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_TpduModemToCard_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (4 << 2)), 3, 0, 0 }, /* data */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 0, 0, 2 }, /* fromClientSlot */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 1, -1, 1 }, /* toBankSlot */
{ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2)), 2, -2, 0 } /* flags */
};
static asn_SEQUENCE_specifics_t asn_SPC_TpduModemToCard_specs_1 = {
sizeof(struct TpduModemToCard),
offsetof(struct TpduModemToCard, _asn_ctx),
asn_MAP_TpduModemToCard_tag2el_1,
4, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
3, /* Start extensions */
5 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_TpduModemToCard = {
"TpduModemToCard",
"TpduModemToCard",
SEQUENCE_free,
SEQUENCE_print,
SEQUENCE_constraint,
SEQUENCE_decode_ber,
SEQUENCE_encode_der,
SEQUENCE_decode_xer,
SEQUENCE_encode_xer,
0, 0, /* No UPER support, use "-gen-PER" to enable */
0, 0, /* No APER support, use "-gen-PER" to enable */
0, /* Use generic outmost tag fetcher */
asn_DEF_TpduModemToCard_tags_1,
sizeof(asn_DEF_TpduModemToCard_tags_1)
/sizeof(asn_DEF_TpduModemToCard_tags_1[0]), /* 1 */
asn_DEF_TpduModemToCard_tags_1, /* Same as above */
sizeof(asn_DEF_TpduModemToCard_tags_1)
/sizeof(asn_DEF_TpduModemToCard_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_TpduModemToCard_1,
4, /* Elements count */
&asn_SPC_TpduModemToCard_specs_1 /* Additional specs */
};

156
src/rspro_util.c Normal file
View File

@ -0,0 +1,156 @@
#include <asn1c/asn_application.h>
#include <asn1c/der_encoder.h>
#include <osmocom/core/msgb.h>
#include <osmocom/rspro/RsproPDU.h>
struct msgb *rspro_msgb_alloc(void)
{
return msgb_alloc_headroom(1024, 8, "RSPRO");
}
/*! BER-Encode an RSPRO message into msgb.
* \param[in] pdu Structure describing RSPRO PDU. Is freed by this function on success
* \returns callee-allocated message buffer containing encoded RSPRO PDU; NULL on error.
*/
struct msgb *rspro_enc_msg(RsproPDU_t *pdu)
{
struct msgb *msg = rspro_msgb_alloc();
asn_enc_rval_t rval;
if (!msg)
return NULL;
rval = der_encode_to_buffer(&asn_DEF_RsproPDU, pdu, msgb_data(msg), msgb_length(msg));
if (rval.encoded < 0) {
return NULL;
}
msgb_put(msg, rval.encoded/8);
ASN_STRUCT_FREE(asn_DEF_RsproPDU, pdu);
return msg;
}
/* consumes 'msg' _if_ it is successful */
RsproPDU_t *rspro_dec_msg(struct msgb *msg)
{
RsproPDU_t *pdu;
asn_dec_rval_t rval;
rval = ber_decode(NULL, &asn_DEF_RsproPDU, (void **) &pdu, msgb_data(msg), msgb_length(msg));
if (rval.code != RC_OK) {
/* FIXME */
return NULL;
}
msgb_free(msg);
return pdu;
}
#define MAX_NAME_LEN 32
struct app_comp_id {
char name[MAX_NAME_LEN+1];
char software[MAX_NAME_LEN+1];
char sw_version[MAX_NAME_LEN+1];
char hw_manufacturer[MAX_NAME_LEN+1];
char hw_model[MAX_NAME_LEN+1];
char hw_serial_nr[MAX_NAME_LEN+1];
char hw_version[MAX_NAME_LEN+1];
char fw_version[MAX_NAME_LEN+1];
};
static void fill_comp_id(ComponentIdentity_t *out, const struct app_comp_id *in)
{
OCTET_STRING_fromString(&out->name, in->name);
OCTET_STRING_fromString(&out->software, in->software);
OCTET_STRING_fromString(&out->swVersion, in->sw_version);
if (strlen(in->hw_manufacturer))
out->hwManufacturer = OCTET_STRING_new_fromBuf(&asn_DEF_ComponentName,
in->hw_manufacturer, -1);
if (strlen(in->hw_model))
out->hwModel = OCTET_STRING_new_fromBuf(&asn_DEF_ComponentName, in->hw_model, -1);
if (strlen(in->hw_serial_nr))
out->hwSerialNr = OCTET_STRING_new_fromBuf(&asn_DEF_ComponentName, in->hw_serial_nr, -1);
if (strlen(in->hw_version))
out->hwVersion = OCTET_STRING_new_fromBuf(&asn_DEF_ComponentName, in->hw_version, -1);
if (strlen(in->fw_version))
out->fwVersion = OCTET_STRING_new_fromBuf(&asn_DEF_ComponentName, in->fw_version, -1);
}
static void fill_ip4_port(IpPort_t *out, uint32_t ip, uint16_t port)
{
uint32_t ip_n = htonl(ip);
out->ip.present = IpAddress_PR_ipv4;
OCTET_STRING_fromBuf(&out->ip.choice.ipv4, (const char *) &ip_n, 4);
out->port = htons(port);
}
RsproPDU_t *rspro_gen_ConnectBankReq(const struct app_comp_id *a_cid,
uint16_t bank_id, uint16_t num_slots)
{
RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));
if (!pdu)
return NULL;
pdu->msg.present = RsproPDUchoice_PR_connectBankReq;
fill_comp_id(&pdu->msg.choice.connectBankReq.identity, a_cid);
pdu->msg.choice.connectBankReq.bankId = bank_id;
pdu->msg.choice.connectBankReq.numberOfSlots = num_slots;
return pdu;
}
RsproPDU_t *rspro_gen_ConnectClientReq(const struct app_comp_id *a_cid)
{
RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));
if (!pdu)
return NULL;
pdu->msg.present = RsproPDUchoice_PR_connectClientReq;
fill_comp_id(&pdu->msg.choice.connectClientReq.identity, a_cid);
return pdu;
}
RsproPDU_t *rspro_gen_CreateMappingReq(const ClientSlot_t *client, const BankSlot_t *bank)
{
RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));
if (!pdu)
return NULL;
pdu->msg.present = RsproPDUchoice_PR_createMappingReq;
pdu->msg.choice.createMappingReq.client = *client;
pdu->msg.choice.createMappingReq.bank = *bank;
return pdu;
}
RsproPDU_t *rspro_gen_ConfigClientReq(uint16_t client_id, uint32_t ip, uint16_t port)
{
RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));
if (!pdu)
return NULL;
pdu->msg.present = RsproPDUchoice_PR_configClientReq;
pdu->msg.choice.configClientReq.clientId = client_id;
fill_ip4_port(&pdu->msg.choice.configClientReq.bankd, ip, port);
return pdu;
}
RsproPDU_t *rspro_gen_SetAtrReq(uint16_t client_id, uint16_t slot_nr, const uint8_t *atr,
unsigned int atr_len)
{
RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));
if (!pdu)
return NULL;
pdu->msg.present = RsproPDUchoice_PR_setAtrReq;
pdu->msg.choice.setAtrReq.slot.clientId = client_id;
pdu->msg.choice.setAtrReq.slot.slotNr = slot_nr;
OCTET_STRING_fromBuf(&pdu->msg.choice.setAtrReq.atr, (const char *)atr, atr_len);
return pdu;
}