RSPRO: Add ErrorInd

Change-Id: I5e5e227d188c5f30ae9be60dd0439ae6f6913b8a
changes/97/13497/1
Harald Welte 4 years ago
parent 71752ddd2b
commit 769ab7d04a
  1. 35
      asn1/RSPRO.asn
  2. 48
      include/osmocom/rspro/ErrorCode.h
  3. 57
      include/osmocom/rspro/ErrorInd.h
  4. 48
      include/osmocom/rspro/ErrorSeverity.h
  5. 38
      include/osmocom/rspro/ErrorString.h
  6. 4
      include/osmocom/rspro/Makefile.am
  7. 3
      include/osmocom/rspro/RsproPDUchoice.h
  8. 132
      src/rspro/ErrorCode.c
  9. 109
      src/rspro/ErrorInd.c
  10. 132
      src/rspro/ErrorSeverity.c
  11. 143
      src/rspro/ErrorString.c
  12. 8
      src/rspro/Makefile.am
  13. 28
      src/rspro/RsproPDUchoice.c

@ -101,6 +101,24 @@ ResultCode ::= ENUMERATED {
...
}
ErrorCode ::= ENUMERATED {
-- Bankd or Server has received connection form unknown client (no mapping)
unknownClientConnected (1),
-- unexpected disconnect (typically bankd reports client disconnect)
unexpectedDisconnect (2),
unexpectedProtocolVersion (3),
...
}
ErrorString ::= IA5String (SIZE (1..255))
ErrorSeverity ::= ENUMERATED {
minor (1),
major (2),
fatal (3),
...
}
-- Slot number within a SIM bank or a client.
SlotNumber ::= INTEGER(0..1023)
@ -263,6 +281,22 @@ BankSlotStatusInd ::= SEQUENCE {
...
}
-- *->SERVER: indication about some kind of error
ErrorInd ::= SEQUENCE {
-- whoever is detecting + sending us the error
sender ComponentType,
severity ErrorSeverity,
code ErrorCode,
-- any bank-side slot that's affected
bankSlot [0] BankSlot OPTIONAL,
-- any client-side slot that's affected
clientSlot [1] ClientSlot OPTIONAL,
-- any additional textual information
errorString [2] ErrorString OPTIONAL,
...
}
----------------------------------------------------------------------
-- PDU
----------------------------------------------------------------------
@ -279,6 +313,7 @@ RsproPDUchoice ::= CHOICE {
removeMappingRes [7] RemoveMappingRes,
configClientReq [8] ConfigClientReq,
configClientRes [9] ConfigClientRes,
errorInd [16] ErrorInd,
-- APDUs etc.
setAtrReq [10] SetAtrReq,
setAtrRes [11] SetAtrRes,

@ -0,0 +1,48 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#ifndef _ErrorCode_H_
#define _ErrorCode_H_
#include <asn_application.h>
/* Including external dependencies */
#include <NativeEnumerated.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Dependencies */
typedef enum ErrorCode {
ErrorCode_unknownClientConnected = 1,
ErrorCode_unexpectedDisconnect = 2,
ErrorCode_unexpectedProtocolVersion = 3
/*
* Enumeration is extensible
*/
} e_ErrorCode;
/* ErrorCode */
typedef long ErrorCode_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ErrorCode;
asn_struct_free_f ErrorCode_free;
asn_struct_print_f ErrorCode_print;
asn_constr_check_f ErrorCode_constraint;
ber_type_decoder_f ErrorCode_decode_ber;
der_type_encoder_f ErrorCode_encode_der;
xer_type_decoder_f ErrorCode_decode_xer;
xer_type_encoder_f ErrorCode_encode_xer;
#ifdef __cplusplus
}
#endif
#endif /* _ErrorCode_H_ */
#include <asn_internal.h>

@ -0,0 +1,57 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#ifndef _ErrorInd_H_
#define _ErrorInd_H_
#include <asn_application.h>
/* Including external dependencies */
#include <osmocom/rspro/ComponentType.h>
#include "ErrorSeverity.h"
#include "ErrorCode.h"
#include "ErrorString.h"
#include <constr_SEQUENCE.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Forward declarations */
struct BankSlot;
struct ClientSlot;
/* ErrorInd */
typedef struct ErrorInd {
ComponentType_t sender;
ErrorSeverity_t severity;
ErrorCode_t code;
struct BankSlot *bankSlot /* OPTIONAL */;
struct ClientSlot *clientSlot /* OPTIONAL */;
ErrorString_t *errorString /* OPTIONAL */;
/*
* This type is extensible,
* possible extensions are below.
*/
/* Context for parsing across buffer boundaries */
asn_struct_ctx_t _asn_ctx;
} ErrorInd_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ErrorInd;
#ifdef __cplusplus
}
#endif
/* Referred external types */
#include <osmocom/rspro/BankSlot.h>
#include <osmocom/rspro/ClientSlot.h>
#endif /* _ErrorInd_H_ */
#include <asn_internal.h>

@ -0,0 +1,48 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#ifndef _ErrorSeverity_H_
#define _ErrorSeverity_H_
#include <asn_application.h>
/* Including external dependencies */
#include <NativeEnumerated.h>
#ifdef __cplusplus
extern "C" {
#endif
/* Dependencies */
typedef enum ErrorSeverity {
ErrorSeverity_minor = 1,
ErrorSeverity_major = 2,
ErrorSeverity_fatal = 3
/*
* Enumeration is extensible
*/
} e_ErrorSeverity;
/* ErrorSeverity */
typedef long ErrorSeverity_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ErrorSeverity;
asn_struct_free_f ErrorSeverity_free;
asn_struct_print_f ErrorSeverity_print;
asn_constr_check_f ErrorSeverity_constraint;
ber_type_decoder_f ErrorSeverity_decode_ber;
der_type_encoder_f ErrorSeverity_encode_der;
xer_type_decoder_f ErrorSeverity_decode_xer;
xer_type_encoder_f ErrorSeverity_encode_xer;
#ifdef __cplusplus
}
#endif
#endif /* _ErrorSeverity_H_ */
#include <asn_internal.h>

@ -0,0 +1,38 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#ifndef _ErrorString_H_
#define _ErrorString_H_
#include <asn_application.h>
/* Including external dependencies */
#include <IA5String.h>
#ifdef __cplusplus
extern "C" {
#endif
/* ErrorString */
typedef IA5String_t ErrorString_t;
/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_ErrorString;
asn_struct_free_f ErrorString_free;
asn_struct_print_f ErrorString_print;
asn_constr_check_f ErrorString_constraint;
ber_type_decoder_f ErrorString_decode_ber;
der_type_encoder_f ErrorString_encode_der;
xer_type_decoder_f ErrorString_decode_xer;
xer_type_encoder_f ErrorString_encode_xer;
#ifdef __cplusplus
}
#endif
#endif /* _ErrorString_H_ */
#include <asn_internal.h>

@ -17,6 +17,10 @@ noinst_HEADERS = \
ConnectClientRes.h \
CreateMappingReq.h \
CreateMappingRes.h \
ErrorCode.h \
ErrorInd.h \
ErrorSeverity.h \
ErrorString.h \
IpAddress.h \
IpPort.h \
Ipv4Address.h \

@ -21,6 +21,7 @@
#include <osmocom/rspro/RemoveMappingRes.h>
#include <osmocom/rspro/ConfigClientReq.h>
#include <osmocom/rspro/ConfigClientRes.h>
#include "ErrorInd.h"
#include <osmocom/rspro/SetAtrReq.h>
#include <osmocom/rspro/SetAtrRes.h>
#include <osmocom/rspro/TpduModemToCard.h>
@ -46,6 +47,7 @@ typedef enum RsproPDUchoice_PR {
RsproPDUchoice_PR_removeMappingRes,
RsproPDUchoice_PR_configClientReq,
RsproPDUchoice_PR_configClientRes,
RsproPDUchoice_PR_errorInd,
RsproPDUchoice_PR_setAtrReq,
RsproPDUchoice_PR_setAtrRes,
RsproPDUchoice_PR_tpduModemToCard,
@ -70,6 +72,7 @@ typedef struct RsproPDUchoice {
RemoveMappingRes_t removeMappingRes;
ConfigClientReq_t configClientReq;
ConfigClientRes_t configClientRes;
ErrorInd_t errorInd;
SetAtrReq_t setAtrReq;
SetAtrRes_t setAtrRes;
TpduModemToCard_t tpduModemToCard;

@ -0,0 +1,132 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include "ErrorCode.h"
int
ErrorCode_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
ErrorCode_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
ErrorCode_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
ErrorCode_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
ErrorCode_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
ErrorCode_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
ErrorCode_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) {
ErrorCode_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
ErrorCode_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) {
ErrorCode_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
ErrorCode_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) {
ErrorCode_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
ErrorCode_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) {
ErrorCode_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_ErrorCode_value2enum_1[] = {
{ 1, 22, "unknownClientConnected" },
{ 2, 20, "unexpectedDisconnect" },
{ 3, 25, "unexpectedProtocolVersion" }
/* This list is extensible */
};
static const unsigned int asn_MAP_ErrorCode_enum2value_1[] = {
1, /* unexpectedDisconnect(2) */
2, /* unexpectedProtocolVersion(3) */
0 /* unknownClientConnected(1) */
/* This list is extensible */
};
static const asn_INTEGER_specifics_t asn_SPC_ErrorCode_specs_1 = {
asn_MAP_ErrorCode_value2enum_1, /* "tag" => N; sorted by tag */
asn_MAP_ErrorCode_enum2value_1, /* N => "tag"; sorted by N */
3, /* Number of elements in the maps */
4, /* Extensions before this member */
1, /* Strict enumeration */
0, /* Native long size */
0
};
static const ber_tlv_tag_t asn_DEF_ErrorCode_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
asn_TYPE_descriptor_t asn_DEF_ErrorCode = {
"ErrorCode",
"ErrorCode",
ErrorCode_free,
ErrorCode_print,
ErrorCode_constraint,
ErrorCode_decode_ber,
ErrorCode_encode_der,
ErrorCode_decode_xer,
ErrorCode_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_ErrorCode_tags_1,
sizeof(asn_DEF_ErrorCode_tags_1)
/sizeof(asn_DEF_ErrorCode_tags_1[0]), /* 1 */
asn_DEF_ErrorCode_tags_1, /* Same as above */
sizeof(asn_DEF_ErrorCode_tags_1)
/sizeof(asn_DEF_ErrorCode_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* Defined elsewhere */
&asn_SPC_ErrorCode_specs_1 /* Additional specs */
};

@ -0,0 +1,109 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include "ErrorInd.h"
static asn_TYPE_member_t asn_MBR_ErrorInd_1[] = {
{ ATF_NOFLAGS, 0, offsetof(struct ErrorInd, sender),
(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,
"sender"
},
{ ATF_NOFLAGS, 0, offsetof(struct ErrorInd, severity),
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
0,
&asn_DEF_ErrorSeverity,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"severity"
},
{ ATF_NOFLAGS, 0, offsetof(struct ErrorInd, code),
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),
0,
&asn_DEF_ErrorCode,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"code"
},
{ ATF_POINTER, 3, offsetof(struct ErrorInd, bankSlot),
(ASN_TAG_CLASS_CONTEXT | (0 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_BankSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"bankSlot"
},
{ ATF_POINTER, 2, offsetof(struct ErrorInd, clientSlot),
(ASN_TAG_CLASS_CONTEXT | (1 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ClientSlot,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"clientSlot"
},
{ ATF_POINTER, 1, offsetof(struct ErrorInd, errorString),
(ASN_TAG_CLASS_CONTEXT | (2 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ErrorString,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"errorString"
},
};
static const ber_tlv_tag_t asn_DEF_ErrorInd_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
static const asn_TYPE_tag2member_t asn_MAP_ErrorInd_tag2el_1[] = {
{ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 2 }, /* sender */
{ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 1, -1, 1 }, /* severity */
{ (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 2, -2, 0 }, /* code */
{ (ASN_TAG_CLASS_CONTEXT | (0 << 2)), 3, 0, 0 }, /* bankSlot */
{ (ASN_TAG_CLASS_CONTEXT | (1 << 2)), 4, 0, 0 }, /* clientSlot */
{ (ASN_TAG_CLASS_CONTEXT | (2 << 2)), 5, 0, 0 } /* errorString */
};
static asn_SEQUENCE_specifics_t asn_SPC_ErrorInd_specs_1 = {
sizeof(struct ErrorInd),
offsetof(struct ErrorInd, _asn_ctx),
asn_MAP_ErrorInd_tag2el_1,
6, /* Count of tags in the map */
0, 0, 0, /* Optional elements (not needed) */
5, /* Start extensions */
7 /* Stop extensions */
};
asn_TYPE_descriptor_t asn_DEF_ErrorInd = {
"ErrorInd",
"ErrorInd",
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_ErrorInd_tags_1,
sizeof(asn_DEF_ErrorInd_tags_1)
/sizeof(asn_DEF_ErrorInd_tags_1[0]), /* 1 */
asn_DEF_ErrorInd_tags_1, /* Same as above */
sizeof(asn_DEF_ErrorInd_tags_1)
/sizeof(asn_DEF_ErrorInd_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
asn_MBR_ErrorInd_1,
6, /* Elements count */
&asn_SPC_ErrorInd_specs_1 /* Additional specs */
};

@ -0,0 +1,132 @@
/*
* Generated by asn1c-0.9.28 (http://lionet.info/asn1c)
* From ASN.1 module "RSPRO"
* found in "../../asn1/RSPRO.asn"
*/
#include "ErrorSeverity.h"
int
ErrorSeverity_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
ErrorSeverity_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
ErrorSeverity_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
ErrorSeverity_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
ErrorSeverity_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
ErrorSeverity_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
ErrorSeverity_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) {
ErrorSeverity_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
ErrorSeverity_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) {
ErrorSeverity_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
ErrorSeverity_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) {
ErrorSeverity_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
ErrorSeverity_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) {
ErrorSeverity_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_ErrorSeverity_value2enum_1[] = {
{ 1, 5, "minor" },
{ 2, 5, "major" },
{ 3, 5, "fatal" }
/* This list is extensible */
};
static const unsigned int asn_MAP_ErrorSeverity_enum2value_1[] = {
2, /* fatal(3) */
1, /* major(2) */
0 /* minor(1) */
/* This list is extensible */
};
static const asn_INTEGER_specifics_t asn_SPC_ErrorSeverity_specs_1 = {
asn_MAP_ErrorSeverity_value2enum_1, /* "tag" => N; sorted by tag */
asn_MAP_ErrorSeverity_enum2value_1, /* N => "tag"; sorted by N */
3, /* Number of elements in the maps */
4, /* Extensions before this member */
1, /* Strict enumeration */
0, /* Native long size */
0
};
static const ber_tlv_tag_t asn_DEF_ErrorSeverity_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (10 << 2))
};
asn_TYPE_descriptor_t asn_DEF_ErrorSeverity = {
"ErrorSeverity",
"ErrorSeverity",
ErrorSeverity_free,
ErrorSeverity_print,
ErrorSeverity_constraint,
ErrorSeverity_decode_ber,
ErrorSeverity_encode_der,
ErrorSeverity_decode_xer,
ErrorSeverity_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_ErrorSeverity_tags_1,
sizeof(asn_DEF_ErrorSeverity_tags_1)
/sizeof(asn_DEF_ErrorSeverity_tags_1[0]), /* 1 */
asn_DEF_ErrorSeverity_tags_1, /* Same as above */
sizeof(asn_DEF_ErrorSeverity_tags_1)
/sizeof(asn_DEF_ErrorSeverity_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* Defined elsewhere */
&asn_SPC_ErrorSeverity_specs_1 /* Additional specs */
};

@ -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 "ErrorString.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
ErrorString_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 <= 255l)
&& !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
ErrorString_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
ErrorString_free(asn_TYPE_descriptor_t *td,
void *struct_ptr, int contents_only) {
ErrorString_1_inherit_TYPE_descriptor(td);
td->free_struct(td, struct_ptr, contents_only);
}
int
ErrorString_print(asn_TYPE_descriptor_t *td, const void *struct_ptr,
int ilevel, asn_app_consume_bytes_f *cb, void *app_key) {
ErrorString_1_inherit_TYPE_descriptor(td);
return td->print_struct(td, struct_ptr, ilevel, cb, app_key);
}
asn_dec_rval_t
ErrorString_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) {
ErrorString_1_inherit_TYPE_descriptor(td);
return td->ber_decoder(opt_codec_ctx, td, structure, bufptr, size, tag_mode);
}
asn_enc_rval_t
ErrorString_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) {
ErrorString_1_inherit_TYPE_descriptor(td);
return td->der_encoder(td, structure, tag_mode, tag, cb, app_key);
}
asn_dec_rval_t
ErrorString_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) {
ErrorString_1_inherit_TYPE_descriptor(td);
return td->xer_decoder(opt_codec_ctx, td, structure, opt_mname, bufptr, size);
}
asn_enc_rval_t
ErrorString_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) {
ErrorString_1_inherit_TYPE_descriptor(td);
return td->xer_encoder(td, structure, ilevel, flags, cb, app_key);
}
static const ber_tlv_tag_t asn_DEF_ErrorString_tags_1[] = {
(ASN_TAG_CLASS_UNIVERSAL | (22 << 2))
};
asn_TYPE_descriptor_t asn_DEF_ErrorString = {
"ErrorString",
"ErrorString",
ErrorString_free,
ErrorString_print,
ErrorString_constraint,
ErrorString_decode_ber,
ErrorString_encode_der,
ErrorString_decode_xer,
ErrorString_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_ErrorString_tags_1,
sizeof(asn_DEF_ErrorString_tags_1)
/sizeof(asn_DEF_ErrorString_tags_1[0]), /* 1 */
asn_DEF_ErrorString_tags_1, /* Same as above */
sizeof(asn_DEF_ErrorString_tags_1)
/sizeof(asn_DEF_ErrorString_tags_1[0]), /* 1 */
0, /* No PER visible constraints */
0, 0, /* No members */
0 /* No specifics */
};

@ -17,6 +17,10 @@ ASN_MODULE_SOURCES = \
ConnectClientRes.c \
CreateMappingReq.c \
CreateMappingRes.c \
ErrorCode.c \
ErrorInd.c \
ErrorSeverity.c \
ErrorString.c \
IpAddress.c \
IpPort.c \
Ipv4Address.c \
@ -56,6 +60,10 @@ ASN_MODULE_INC = \
ConnectClientRes.h \
CreateMappingReq.h \
CreateMappingRes.h \
ErrorCode.h \
ErrorInd.h \
ErrorSeverity.h \
ErrorString.h \
IpAddress.h \
IpPort.h \
Ipv4Address.h \

@ -97,6 +97,15 @@ static asn_TYPE_member_t asn_MBR_RsproPDUchoice_1[] = {
0,
"configClientRes"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.errorInd),
(ASN_TAG_CLASS_CONTEXT | (16 << 2)),
-1, /* IMPLICIT tag at current level */
&asn_DEF_ErrorInd,
0, /* Defer constraints checking to the member type */
0, /* PER is not compiled, use -gen-PER */
0,
"errorInd"
},
{ ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.setAtrReq),
(ASN_TAG_CLASS_CONTEXT | (10 << 2)),
-1, /* IMPLICIT tag at current level */
@ -163,12 +172,13 @@ static const asn_TYPE_tag2member_t asn_MAP_RsproPDUchoice_tag2el_1[] = {
{ (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 */
{ (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 11, 0, 0 }, /* setAtrReq */
{ (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 12, 0, 0 }, /* setAtrRes */
{ (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 13, 0, 0 }, /* tpduModemToCard */
{ (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 14, 0, 0 }, /* tpduCardToModem */
{ (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 15, 0, 0 }, /* clientSlotStatusInd */
{ (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 16, 0, 0 }, /* bankSlotStatusInd */
{ (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 10, 0, 0 } /* errorInd */
};
static asn_CHOICE_specifics_t asn_SPC_RsproPDUchoice_specs_1 = {
sizeof(struct RsproPDUchoice),
@ -176,9 +186,9 @@ static asn_CHOICE_specifics_t asn_SPC_RsproPDUchoice_specs_1 = {
offsetof(struct RsproPDUchoice, present),
sizeof(((struct RsproPDUchoice *)0)->present),
asn_MAP_RsproPDUchoice_tag2el_1,
16, /* Count of tags in the map */
17, /* Count of tags in the map */
0,
16 /* Extensions start */
17 /* Extensions start */
};
asn_TYPE_descriptor_t asn_DEF_RsproPDUchoice = {
"RsproPDUchoice",
@ -199,7 +209,7 @@ asn_TYPE_descriptor_t asn_DEF_RsproPDUchoice = {
0, /* No tags (count) */
0, /* No PER visible constraints */
asn_MBR_RsproPDUchoice_1,
16, /* Elements count */
17, /* Elements count */
&asn_SPC_RsproPDUchoice_specs_1 /* Additional specs */
};

Loading…
Cancel
Save