<p>laforge has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.osmocom.org/c/osmo-remsim/+/16491">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">RSPRO: Add new ResetState{Req,Res}<br><br>These commands are introduced to enable the server to request the<br>full reset of all state in a client or bankd.  This is particularly<br>useful in TTCN-3 tests, where we typically want to reset the state<br>between tests.<br><br>Change-Id: I442bab523486bbdf2faa8028f8972cd0af795303<br>---<br>M asn1/RSPRO.asn<br>M include/osmocom/rspro/Makefile.am<br>A include/osmocom/rspro/ResetStateReq.h<br>A include/osmocom/rspro/ResetStateRes.h<br>M include/osmocom/rspro/RsproPDUchoice.h<br>M src/rspro/ConfigClientBankReq.c<br>M src/rspro/ConfigClientBankRes.c<br>M src/rspro/ConfigClientIdReq.c<br>M src/rspro/ConfigClientIdRes.c<br>M src/rspro/Makefile.am<br>A src/rspro/ResetStateReq.c<br>A src/rspro/ResetStateRes.c<br>M src/rspro/RsproPDUchoice.c<br>M src/rspro_util.c<br>M src/rspro_util.h<br>15 files changed, 269 insertions(+), 14 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.osmocom.org:29418/osmo-remsim refs/changes/91/16491/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/asn1/RSPRO.asn b/asn1/RSPRO.asn</span><br><span>index 65152ec..1b1be6d 100644</span><br><span>--- a/asn1/RSPRO.asn</span><br><span>+++ b/asn1/RSPRO.asn</span><br><span>@@ -308,6 +308,17 @@</span><br><span>         ...</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+-- SERVER->*: request reset of all state on peer side</span><br><span style="color: hsl(120, 100%, 40%);">+ResetStateReq ::= SEQUENCE {</span><br><span style="color: hsl(120, 100%, 40%);">+  ...</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+-- *->SERVER: confirm reset of all state on peer side</span><br><span style="color: hsl(120, 100%, 40%);">+ResetStateRes ::= SEQUENCE {</span><br><span style="color: hsl(120, 100%, 40%);">+      result          ResultCode,</span><br><span style="color: hsl(120, 100%, 40%);">+   ...</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> </span><br><span> ----------------------------------------------------------------------</span><br><span> -- PDU</span><br><span>@@ -328,6 +339,8 @@</span><br><span>       configClientBankReq     [17]    ConfigClientBankReq,</span><br><span>         configClientBankRes     [18]    ConfigClientBankRes,</span><br><span>         errorInd                [16]    ErrorInd,</span><br><span style="color: hsl(120, 100%, 40%);">+     resetStateReq           [19]    ResetStateReq,</span><br><span style="color: hsl(120, 100%, 40%);">+        resetStateRes           [20]    ResetStateRes,</span><br><span>       -- APDUs etc.</span><br><span>        setAtrReq               [10]    SetAtrReq,</span><br><span>   setAtrRes               [11]    SetAtrRes,</span><br><span>diff --git a/include/osmocom/rspro/Makefile.am b/include/osmocom/rspro/Makefile.am</span><br><span>index 4ffaa32..7549ffb 100644</span><br><span>--- a/include/osmocom/rspro/Makefile.am</span><br><span>+++ b/include/osmocom/rspro/Makefile.am</span><br><span>@@ -31,6 +31,8 @@</span><br><span>      PortNumber.h \</span><br><span>       RemoveMappingReq.h \</span><br><span>         RemoveMappingRes.h \</span><br><span style="color: hsl(120, 100%, 40%);">+  ResetStateReq.h \</span><br><span style="color: hsl(120, 100%, 40%);">+     ResetStateRes.h \</span><br><span>    ResultCode.h \</span><br><span>       RsproPDU.h \</span><br><span>         RsproPDUchoice.h \</span><br><span>diff --git a/include/osmocom/rspro/ResetStateReq.h b/include/osmocom/rspro/ResetStateReq.h</span><br><span>new file mode 100644</span><br><span>index 0000000..b56fe43</span><br><span>--- /dev/null</span><br><span>+++ b/include/osmocom/rspro/ResetStateReq.h</span><br><span>@@ -0,0 +1,39 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)</span><br><span style="color: hsl(120, 100%, 40%);">+ * From ASN.1 module "RSPRO"</span><br><span style="color: hsl(120, 100%, 40%);">+ *       found in "../../asn1/RSPRO.asn"</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef       _ResetStateReq_H_</span><br><span style="color: hsl(120, 100%, 40%);">+#define      _ResetStateReq_H_</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <asn_application.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Including external dependencies */</span><br><span style="color: hsl(120, 100%, 40%);">+#include <constr_SEQUENCE.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef __cplusplus</span><br><span style="color: hsl(120, 100%, 40%);">+extern "C" {</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* ResetStateReq */</span><br><span style="color: hsl(120, 100%, 40%);">+typedef struct ResetStateReq {</span><br><span style="color: hsl(120, 100%, 40%);">+   /*</span><br><span style="color: hsl(120, 100%, 40%);">+     * This type is extensible,</span><br><span style="color: hsl(120, 100%, 40%);">+    * possible extensions are below.</span><br><span style="color: hsl(120, 100%, 40%);">+      */</span><br><span style="color: hsl(120, 100%, 40%);">+   </span><br><span style="color: hsl(120, 100%, 40%);">+      /* Context for parsing across buffer boundaries */</span><br><span style="color: hsl(120, 100%, 40%);">+    asn_struct_ctx_t _asn_ctx;</span><br><span style="color: hsl(120, 100%, 40%);">+} ResetStateReq_t;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Implementation */</span><br><span style="color: hsl(120, 100%, 40%);">+extern asn_TYPE_descriptor_t asn_DEF_ResetStateReq;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef __cplusplus</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#endif  /* _ResetStateReq_H_ */</span><br><span style="color: hsl(120, 100%, 40%);">+#include <asn_internal.h></span><br><span>diff --git a/include/osmocom/rspro/ResetStateRes.h b/include/osmocom/rspro/ResetStateRes.h</span><br><span>new file mode 100644</span><br><span>index 0000000..622375e</span><br><span>--- /dev/null</span><br><span>+++ b/include/osmocom/rspro/ResetStateRes.h</span><br><span>@@ -0,0 +1,41 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)</span><br><span style="color: hsl(120, 100%, 40%);">+ * From ASN.1 module "RSPRO"</span><br><span style="color: hsl(120, 100%, 40%);">+ *         found in "../../asn1/RSPRO.asn"</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifndef       _ResetStateRes_H_</span><br><span style="color: hsl(120, 100%, 40%);">+#define      _ResetStateRes_H_</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include <asn_application.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Including external dependencies */</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ResultCode.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <constr_SEQUENCE.h></span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef __cplusplus</span><br><span style="color: hsl(120, 100%, 40%);">+extern "C" {</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* ResetStateRes */</span><br><span style="color: hsl(120, 100%, 40%);">+typedef struct ResetStateRes {</span><br><span style="color: hsl(120, 100%, 40%);">+      ResultCode_t     result;</span><br><span style="color: hsl(120, 100%, 40%);">+      /*</span><br><span style="color: hsl(120, 100%, 40%);">+     * This type is extensible,</span><br><span style="color: hsl(120, 100%, 40%);">+    * possible extensions are below.</span><br><span style="color: hsl(120, 100%, 40%);">+      */</span><br><span style="color: hsl(120, 100%, 40%);">+   </span><br><span style="color: hsl(120, 100%, 40%);">+      /* Context for parsing across buffer boundaries */</span><br><span style="color: hsl(120, 100%, 40%);">+    asn_struct_ctx_t _asn_ctx;</span><br><span style="color: hsl(120, 100%, 40%);">+} ResetStateRes_t;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+/* Implementation */</span><br><span style="color: hsl(120, 100%, 40%);">+extern asn_TYPE_descriptor_t asn_DEF_ResetStateRes;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#ifdef __cplusplus</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+#endif</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#endif  /* _ResetStateRes_H_ */</span><br><span style="color: hsl(120, 100%, 40%);">+#include <asn_internal.h></span><br><span>diff --git a/include/osmocom/rspro/RsproPDUchoice.h b/include/osmocom/rspro/RsproPDUchoice.h</span><br><span>index d603fa1..ebb2971 100644</span><br><span>--- a/include/osmocom/rspro/RsproPDUchoice.h</span><br><span>+++ b/include/osmocom/rspro/RsproPDUchoice.h</span><br><span>@@ -24,6 +24,8 @@</span><br><span> #include <osmocom/rspro/ConfigClientBankReq.h></span><br><span> #include <osmocom/rspro/ConfigClientBankRes.h></span><br><span> #include <osmocom/rspro/ErrorInd.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ResetStateReq.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ResetStateRes.h></span><br><span> #include <osmocom/rspro/SetAtrReq.h></span><br><span> #include <osmocom/rspro/SetAtrRes.h></span><br><span> #include <osmocom/rspro/TpduModemToCard.h></span><br><span>@@ -52,6 +54,8 @@</span><br><span>   RsproPDUchoice_PR_configClientBankReq,</span><br><span>       RsproPDUchoice_PR_configClientBankRes,</span><br><span>       RsproPDUchoice_PR_errorInd,</span><br><span style="color: hsl(120, 100%, 40%);">+   RsproPDUchoice_PR_resetStateReq,</span><br><span style="color: hsl(120, 100%, 40%);">+      RsproPDUchoice_PR_resetStateRes,</span><br><span>     RsproPDUchoice_PR_setAtrReq,</span><br><span>         RsproPDUchoice_PR_setAtrRes,</span><br><span>         RsproPDUchoice_PR_tpduModemToCard,</span><br><span>@@ -79,6 +83,8 @@</span><br><span>               ConfigClientBankReq_t    configClientBankReq;</span><br><span>                ConfigClientBankRes_t    configClientBankRes;</span><br><span>                ErrorInd_t       errorInd;</span><br><span style="color: hsl(120, 100%, 40%);">+            ResetStateReq_t  resetStateReq;</span><br><span style="color: hsl(120, 100%, 40%);">+               ResetStateRes_t  resetStateRes;</span><br><span>              SetAtrReq_t      setAtrReq;</span><br><span>          SetAtrRes_t      setAtrRes;</span><br><span>          TpduModemToCard_t        tpduModemToCard;</span><br><span>diff --git a/src/rspro/ConfigClientBankReq.c b/src/rspro/ConfigClientBankReq.c</span><br><span>index f19c9ee..a4cd21e 100644</span><br><span>--- a/src/rspro/ConfigClientBankReq.c</span><br><span>+++ b/src/rspro/ConfigClientBankReq.c</span><br><span>@@ -4,7 +4,7 @@</span><br><span>  *      found in "../../asn1/RSPRO.asn"</span><br><span>  */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#include "ConfigClientBankReq.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ConfigClientBankReq.h></span><br><span> </span><br><span> static asn_TYPE_member_t asn_MBR_ConfigClientBankReq_1[] = {</span><br><span>     { ATF_NOFLAGS, 0, offsetof(struct ConfigClientBankReq, bankSlot),</span><br><span>diff --git a/src/rspro/ConfigClientBankRes.c b/src/rspro/ConfigClientBankRes.c</span><br><span>index 4b3c18a..877100b 100644</span><br><span>--- a/src/rspro/ConfigClientBankRes.c</span><br><span>+++ b/src/rspro/ConfigClientBankRes.c</span><br><span>@@ -4,7 +4,7 @@</span><br><span>  *      found in "../../asn1/RSPRO.asn"</span><br><span>  */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#include "ConfigClientBankRes.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ConfigClientBankRes.h></span><br><span> </span><br><span> static asn_TYPE_member_t asn_MBR_ConfigClientBankRes_1[] = {</span><br><span>     { ATF_NOFLAGS, 0, offsetof(struct ConfigClientBankRes, result),</span><br><span>diff --git a/src/rspro/ConfigClientIdReq.c b/src/rspro/ConfigClientIdReq.c</span><br><span>index 570013a..548035c 100644</span><br><span>--- a/src/rspro/ConfigClientIdReq.c</span><br><span>+++ b/src/rspro/ConfigClientIdReq.c</span><br><span>@@ -4,7 +4,7 @@</span><br><span>  *        found in "../../asn1/RSPRO.asn"</span><br><span>  */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#include "ConfigClientIdReq.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ConfigClientIdReq.h></span><br><span> </span><br><span> static asn_TYPE_member_t asn_MBR_ConfigClientIdReq_1[] = {</span><br><span>   { ATF_NOFLAGS, 0, offsetof(struct ConfigClientIdReq, clientSlot),</span><br><span>diff --git a/src/rspro/ConfigClientIdRes.c b/src/rspro/ConfigClientIdRes.c</span><br><span>index a8b0691..23f2699 100644</span><br><span>--- a/src/rspro/ConfigClientIdRes.c</span><br><span>+++ b/src/rspro/ConfigClientIdRes.c</span><br><span>@@ -4,7 +4,7 @@</span><br><span>  *      found in "../../asn1/RSPRO.asn"</span><br><span>  */</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-#include "ConfigClientIdRes.h"</span><br><span style="color: hsl(120, 100%, 40%);">+#include <osmocom/rspro/ConfigClientIdRes.h></span><br><span> </span><br><span> static asn_TYPE_member_t asn_MBR_ConfigClientIdRes_1[] = {</span><br><span>   { ATF_NOFLAGS, 0, offsetof(struct ConfigClientIdRes, result),</span><br><span>diff --git a/src/rspro/Makefile.am b/src/rspro/Makefile.am</span><br><span>index 91f0f35..df3ccf4 100644</span><br><span>--- a/src/rspro/Makefile.am</span><br><span>+++ b/src/rspro/Makefile.am</span><br><span>@@ -31,6 +31,8 @@</span><br><span>   PortNumber.c \</span><br><span>       RemoveMappingReq.c \</span><br><span>         RemoveMappingRes.c \</span><br><span style="color: hsl(120, 100%, 40%);">+  ResetStateReq.c \</span><br><span style="color: hsl(120, 100%, 40%);">+     ResetStateRes.c \</span><br><span>    ResultCode.c \</span><br><span>       RsproPDU.c \</span><br><span>         RsproPDUchoice.c \</span><br><span>@@ -76,6 +78,8 @@</span><br><span>       PortNumber.h \</span><br><span>       RemoveMappingReq.h \</span><br><span>         RemoveMappingRes.h \</span><br><span style="color: hsl(120, 100%, 40%);">+  ResetStateReq.h \</span><br><span style="color: hsl(120, 100%, 40%);">+     ResetStateRes.h \</span><br><span>    ResultCode.h \</span><br><span>       RsproPDU.h \</span><br><span>         RsproPDUchoice.h \</span><br><span>diff --git a/src/rspro/ResetStateReq.c b/src/rspro/ResetStateReq.c</span><br><span>new file mode 100644</span><br><span>index 0000000..538a18c</span><br><span>--- /dev/null</span><br><span>+++ b/src/rspro/ResetStateReq.c</span><br><span>@@ -0,0 +1,44 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)</span><br><span style="color: hsl(120, 100%, 40%);">+ * From ASN.1 module "RSPRO"</span><br><span style="color: hsl(120, 100%, 40%);">+ *   found in "../../asn1/RSPRO.asn"</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include "ResetStateReq.h"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static const ber_tlv_tag_t asn_DEF_ResetStateReq_tags_1[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static asn_SEQUENCE_specifics_t asn_SPC_ResetStateReq_specs_1 = {</span><br><span style="color: hsl(120, 100%, 40%);">+    sizeof(struct ResetStateReq),</span><br><span style="color: hsl(120, 100%, 40%);">+ offsetof(struct ResetStateReq, _asn_ctx),</span><br><span style="color: hsl(120, 100%, 40%);">+     0,      /* No top level tags */</span><br><span style="color: hsl(120, 100%, 40%);">+       0,      /* No tags in the map */</span><br><span style="color: hsl(120, 100%, 40%);">+      0, 0, 0,        /* Optional elements (not needed) */</span><br><span style="color: hsl(120, 100%, 40%);">+  -1,     /* Start extensions */</span><br><span style="color: hsl(120, 100%, 40%);">+        -1      /* Stop extensions */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+asn_TYPE_descriptor_t asn_DEF_ResetStateReq = {</span><br><span style="color: hsl(120, 100%, 40%);">+    "ResetStateReq",</span><br><span style="color: hsl(120, 100%, 40%);">+    "ResetStateReq",</span><br><span style="color: hsl(120, 100%, 40%);">+    SEQUENCE_free,</span><br><span style="color: hsl(120, 100%, 40%);">+        SEQUENCE_print,</span><br><span style="color: hsl(120, 100%, 40%);">+       SEQUENCE_constraint,</span><br><span style="color: hsl(120, 100%, 40%);">+  SEQUENCE_decode_ber,</span><br><span style="color: hsl(120, 100%, 40%);">+  SEQUENCE_encode_der,</span><br><span style="color: hsl(120, 100%, 40%);">+  SEQUENCE_decode_xer,</span><br><span style="color: hsl(120, 100%, 40%);">+  SEQUENCE_encode_xer,</span><br><span style="color: hsl(120, 100%, 40%);">+  0, 0,   /* No UPER support, use "-gen-PER" to enable */</span><br><span style="color: hsl(120, 100%, 40%);">+     0, 0,   /* No APER support, use "-gen-PER" to enable */</span><br><span style="color: hsl(120, 100%, 40%);">+     0,      /* Use generic outmost tag fetcher */</span><br><span style="color: hsl(120, 100%, 40%);">+ asn_DEF_ResetStateReq_tags_1,</span><br><span style="color: hsl(120, 100%, 40%);">+ sizeof(asn_DEF_ResetStateReq_tags_1)</span><br><span style="color: hsl(120, 100%, 40%);">+          /sizeof(asn_DEF_ResetStateReq_tags_1[0]), /* 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+     asn_DEF_ResetStateReq_tags_1,   /* Same as above */</span><br><span style="color: hsl(120, 100%, 40%);">+   sizeof(asn_DEF_ResetStateReq_tags_1)</span><br><span style="color: hsl(120, 100%, 40%);">+          /sizeof(asn_DEF_ResetStateReq_tags_1[0]), /* 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+     0,      /* No PER visible constraints */</span><br><span style="color: hsl(120, 100%, 40%);">+      0, 0,   /* No members */</span><br><span style="color: hsl(120, 100%, 40%);">+      &asn_SPC_ResetStateReq_specs_1      /* Additional specs */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/src/rspro/ResetStateRes.c b/src/rspro/ResetStateRes.c</span><br><span>new file mode 100644</span><br><span>index 0000000..551dcc4</span><br><span>--- /dev/null</span><br><span>+++ b/src/rspro/ResetStateRes.c</span><br><span>@@ -0,0 +1,59 @@</span><br><span style="color: hsl(120, 100%, 40%);">+/*</span><br><span style="color: hsl(120, 100%, 40%);">+ * Generated by asn1c-0.9.28 (http://lionet.info/asn1c)</span><br><span style="color: hsl(120, 100%, 40%);">+ * From ASN.1 module "RSPRO"</span><br><span style="color: hsl(120, 100%, 40%);">+ *         found in "../../asn1/RSPRO.asn"</span><br><span style="color: hsl(120, 100%, 40%);">+ */</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+#include "ResetStateRes.h"</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+static asn_TYPE_member_t asn_MBR_ResetStateRes_1[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+      { ATF_NOFLAGS, 0, offsetof(struct ResetStateRes, result),</span><br><span style="color: hsl(120, 100%, 40%);">+             (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)),</span><br><span style="color: hsl(120, 100%, 40%);">+          0,</span><br><span style="color: hsl(120, 100%, 40%);">+            &asn_DEF_ResultCode,</span><br><span style="color: hsl(120, 100%, 40%);">+              0,      /* Defer constraints checking to the member type */</span><br><span style="color: hsl(120, 100%, 40%);">+           0,      /* PER is not compiled, use -gen-PER */</span><br><span style="color: hsl(120, 100%, 40%);">+               0,</span><br><span style="color: hsl(120, 100%, 40%);">+            "result"</span><br><span style="color: hsl(120, 100%, 40%);">+            },</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const ber_tlv_tag_t asn_DEF_ResetStateRes_tags_1[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+ (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static const asn_TYPE_tag2member_t asn_MAP_ResetStateRes_tag2el_1[] = {</span><br><span style="color: hsl(120, 100%, 40%);">+    { (ASN_TAG_CLASS_UNIVERSAL | (10 << 2)), 0, 0, 0 } /* result */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+static asn_SEQUENCE_specifics_t asn_SPC_ResetStateRes_specs_1 = {</span><br><span style="color: hsl(120, 100%, 40%);">+    sizeof(struct ResetStateRes),</span><br><span style="color: hsl(120, 100%, 40%);">+ offsetof(struct ResetStateRes, _asn_ctx),</span><br><span style="color: hsl(120, 100%, 40%);">+     asn_MAP_ResetStateRes_tag2el_1,</span><br><span style="color: hsl(120, 100%, 40%);">+       1,      /* Count of tags in the map */</span><br><span style="color: hsl(120, 100%, 40%);">+        0, 0, 0,        /* Optional elements (not needed) */</span><br><span style="color: hsl(120, 100%, 40%);">+  0,      /* Start extensions */</span><br><span style="color: hsl(120, 100%, 40%);">+        2       /* Stop extensions */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+asn_TYPE_descriptor_t asn_DEF_ResetStateRes = {</span><br><span style="color: hsl(120, 100%, 40%);">+    "ResetStateRes",</span><br><span style="color: hsl(120, 100%, 40%);">+    "ResetStateRes",</span><br><span style="color: hsl(120, 100%, 40%);">+    SEQUENCE_free,</span><br><span style="color: hsl(120, 100%, 40%);">+        SEQUENCE_print,</span><br><span style="color: hsl(120, 100%, 40%);">+       SEQUENCE_constraint,</span><br><span style="color: hsl(120, 100%, 40%);">+  SEQUENCE_decode_ber,</span><br><span style="color: hsl(120, 100%, 40%);">+  SEQUENCE_encode_der,</span><br><span style="color: hsl(120, 100%, 40%);">+  SEQUENCE_decode_xer,</span><br><span style="color: hsl(120, 100%, 40%);">+  SEQUENCE_encode_xer,</span><br><span style="color: hsl(120, 100%, 40%);">+  0, 0,   /* No UPER support, use "-gen-PER" to enable */</span><br><span style="color: hsl(120, 100%, 40%);">+     0, 0,   /* No APER support, use "-gen-PER" to enable */</span><br><span style="color: hsl(120, 100%, 40%);">+     0,      /* Use generic outmost tag fetcher */</span><br><span style="color: hsl(120, 100%, 40%);">+ asn_DEF_ResetStateRes_tags_1,</span><br><span style="color: hsl(120, 100%, 40%);">+ sizeof(asn_DEF_ResetStateRes_tags_1)</span><br><span style="color: hsl(120, 100%, 40%);">+          /sizeof(asn_DEF_ResetStateRes_tags_1[0]), /* 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+     asn_DEF_ResetStateRes_tags_1,   /* Same as above */</span><br><span style="color: hsl(120, 100%, 40%);">+   sizeof(asn_DEF_ResetStateRes_tags_1)</span><br><span style="color: hsl(120, 100%, 40%);">+          /sizeof(asn_DEF_ResetStateRes_tags_1[0]), /* 1 */</span><br><span style="color: hsl(120, 100%, 40%);">+     0,      /* No PER visible constraints */</span><br><span style="color: hsl(120, 100%, 40%);">+      asn_MBR_ResetStateRes_1,</span><br><span style="color: hsl(120, 100%, 40%);">+      1,      /* Elements count */</span><br><span style="color: hsl(120, 100%, 40%);">+  &asn_SPC_ResetStateRes_specs_1      /* Additional specs */</span><br><span style="color: hsl(120, 100%, 40%);">+};</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>diff --git a/src/rspro/RsproPDUchoice.c b/src/rspro/RsproPDUchoice.c</span><br><span>index a5f7161..0d19180 100644</span><br><span>--- a/src/rspro/RsproPDUchoice.c</span><br><span>+++ b/src/rspro/RsproPDUchoice.c</span><br><span>@@ -124,6 +124,24 @@</span><br><span>             0,</span><br><span>           "errorInd"</span><br><span>                 },</span><br><span style="color: hsl(120, 100%, 40%);">+    { ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.resetStateReq),</span><br><span style="color: hsl(120, 100%, 40%);">+              (ASN_TAG_CLASS_CONTEXT | (19 << 2)),</span><br><span style="color: hsl(120, 100%, 40%);">+            -1,     /* IMPLICIT tag at current level */</span><br><span style="color: hsl(120, 100%, 40%);">+           &asn_DEF_ResetStateReq,</span><br><span style="color: hsl(120, 100%, 40%);">+           0,      /* Defer constraints checking to the member type */</span><br><span style="color: hsl(120, 100%, 40%);">+           0,      /* PER is not compiled, use -gen-PER */</span><br><span style="color: hsl(120, 100%, 40%);">+               0,</span><br><span style="color: hsl(120, 100%, 40%);">+            "resetStateReq"</span><br><span style="color: hsl(120, 100%, 40%);">+             },</span><br><span style="color: hsl(120, 100%, 40%);">+    { ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.resetStateRes),</span><br><span style="color: hsl(120, 100%, 40%);">+              (ASN_TAG_CLASS_CONTEXT | (20 << 2)),</span><br><span style="color: hsl(120, 100%, 40%);">+            -1,     /* IMPLICIT tag at current level */</span><br><span style="color: hsl(120, 100%, 40%);">+           &asn_DEF_ResetStateRes,</span><br><span style="color: hsl(120, 100%, 40%);">+           0,      /* Defer constraints checking to the member type */</span><br><span style="color: hsl(120, 100%, 40%);">+           0,      /* PER is not compiled, use -gen-PER */</span><br><span style="color: hsl(120, 100%, 40%);">+               0,</span><br><span style="color: hsl(120, 100%, 40%);">+            "resetStateRes"</span><br><span style="color: hsl(120, 100%, 40%);">+             },</span><br><span>   { ATF_NOFLAGS, 0, offsetof(struct RsproPDUchoice, choice.setAtrReq),</span><br><span>                 (ASN_TAG_CLASS_CONTEXT | (10 << 2)),</span><br><span>           -1,     /* IMPLICIT tag at current level */</span><br><span>@@ -190,15 +208,17 @@</span><br><span>     { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 7, 0, 0 }, /* removeMappingRes */</span><br><span>     { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 8, 0, 0 }, /* configClientIdReq */</span><br><span>     { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 9, 0, 0 }, /* configClientIdRes */</span><br><span style="color: hsl(0, 100%, 40%);">-    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 13, 0, 0 }, /* setAtrReq */</span><br><span style="color: hsl(0, 100%, 40%);">-    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 14, 0, 0 }, /* setAtrRes */</span><br><span style="color: hsl(0, 100%, 40%);">-    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 15, 0, 0 }, /* tpduModemToCard */</span><br><span style="color: hsl(0, 100%, 40%);">-    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 16, 0, 0 }, /* tpduCardToModem */</span><br><span style="color: hsl(0, 100%, 40%);">-    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 17, 0, 0 }, /* clientSlotStatusInd */</span><br><span style="color: hsl(0, 100%, 40%);">-    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 18, 0, 0 }, /* bankSlotStatusInd */</span><br><span style="color: hsl(120, 100%, 40%);">+    { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 15, 0, 0 }, /* setAtrReq */</span><br><span style="color: hsl(120, 100%, 40%);">+    { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 16, 0, 0 }, /* setAtrRes */</span><br><span style="color: hsl(120, 100%, 40%);">+    { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 17, 0, 0 }, /* tpduModemToCard */</span><br><span style="color: hsl(120, 100%, 40%);">+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 18, 0, 0 }, /* tpduCardToModem */</span><br><span style="color: hsl(120, 100%, 40%);">+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 19, 0, 0 }, /* clientSlotStatusInd */</span><br><span style="color: hsl(120, 100%, 40%);">+    { (ASN_TAG_CLASS_CONTEXT | (15 << 2)), 20, 0, 0 }, /* bankSlotStatusInd */</span><br><span>     { (ASN_TAG_CLASS_CONTEXT | (16 << 2)), 12, 0, 0 }, /* errorInd */</span><br><span>     { (ASN_TAG_CLASS_CONTEXT | (17 << 2)), 10, 0, 0 }, /* configClientBankReq */</span><br><span style="color: hsl(0, 100%, 40%);">-    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 11, 0, 0 } /* configClientBankRes */</span><br><span style="color: hsl(120, 100%, 40%);">+    { (ASN_TAG_CLASS_CONTEXT | (18 << 2)), 11, 0, 0 }, /* configClientBankRes */</span><br><span style="color: hsl(120, 100%, 40%);">+    { (ASN_TAG_CLASS_CONTEXT | (19 << 2)), 13, 0, 0 }, /* resetStateReq */</span><br><span style="color: hsl(120, 100%, 40%);">+    { (ASN_TAG_CLASS_CONTEXT | (20 << 2)), 14, 0, 0 } /* resetStateRes */</span><br><span> };</span><br><span> static asn_CHOICE_specifics_t asn_SPC_RsproPDUchoice_specs_1 = {</span><br><span>      sizeof(struct RsproPDUchoice),</span><br><span>@@ -206,9 +226,9 @@</span><br><span>         offsetof(struct RsproPDUchoice, present),</span><br><span>    sizeof(((struct RsproPDUchoice *)0)->present),</span><br><span>    asn_MAP_RsproPDUchoice_tag2el_1,</span><br><span style="color: hsl(0, 100%, 40%);">-        19,     /* Count of tags in the map */</span><br><span style="color: hsl(120, 100%, 40%);">+        21,     /* Count of tags in the map */</span><br><span>       0,</span><br><span style="color: hsl(0, 100%, 40%);">-      19      /* Extensions start */</span><br><span style="color: hsl(120, 100%, 40%);">+        21      /* Extensions start */</span><br><span> };</span><br><span> asn_TYPE_descriptor_t asn_DEF_RsproPDUchoice = {</span><br><span>     "RsproPDUchoice",</span><br><span>@@ -229,7 +249,7 @@</span><br><span>    0,      /* No tags (count) */</span><br><span>        0,      /* No PER visible constraints */</span><br><span>     asn_MBR_RsproPDUchoice_1,</span><br><span style="color: hsl(0, 100%, 40%);">-       19,     /* Elements count */</span><br><span style="color: hsl(120, 100%, 40%);">+  21,     /* Elements count */</span><br><span>         &asn_SPC_RsproPDUchoice_specs_1     /* Additional specs */</span><br><span> };</span><br><span> </span><br><span>diff --git a/src/rspro_util.c b/src/rspro_util.c</span><br><span>index 5c78b60..422aef4 100644</span><br><span>--- a/src/rspro_util.c</span><br><span>+++ b/src/rspro_util.c</span><br><span>@@ -385,6 +385,29 @@</span><br><span>         return pdu;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+RsproPDU_t *rspro_gen_ResetStateReq(void)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!pdu)</span><br><span style="color: hsl(120, 100%, 40%);">+             return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+  pdu->version = 2;</span><br><span style="color: hsl(120, 100%, 40%);">+  pdu->msg.present = RsproPDUchoice_PR_resetStateReq;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      return pdu;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+RsproPDU_t *rspro_gen_ResetStateRes(e_ResultCode res)</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+    RsproPDU_t *pdu = CALLOC(1, sizeof(*pdu));</span><br><span style="color: hsl(120, 100%, 40%);">+    if (!pdu)</span><br><span style="color: hsl(120, 100%, 40%);">+             return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+  pdu->version = 2;</span><br><span style="color: hsl(120, 100%, 40%);">+  pdu->msg.present = RsproPDUchoice_PR_resetStateRes;</span><br><span style="color: hsl(120, 100%, 40%);">+        pdu->msg.choice.resetStateRes.result = res;</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+      return pdu;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> e_ResultCode rspro_get_result(const RsproPDU_t *pdu)</span><br><span> {</span><br><span>        switch (pdu->msg.present) {</span><br><span>@@ -402,6 +425,8 @@</span><br><span>                 return pdu->msg.choice.configClientBankRes.result;</span><br><span>        case RsproPDUchoice_PR_setAtrRes:</span><br><span>            return pdu->msg.choice.setAtrRes.result;</span><br><span style="color: hsl(120, 100%, 40%);">+   case RsproPDUchoice_PR_resetStateRes:</span><br><span style="color: hsl(120, 100%, 40%);">+         return pdu->msg.choice.resetStateRes.result;</span><br><span>      default:</span><br><span>             OSMO_ASSERT(0);</span><br><span>      }</span><br><span>diff --git a/src/rspro_util.h b/src/rspro_util.h</span><br><span>index 444d34a..8c6ae3b 100644</span><br><span>--- a/src/rspro_util.h</span><br><span>+++ b/src/rspro_util.h</span><br><span>@@ -42,6 +42,8 @@</span><br><span>                                const uint8_t *tpdu, unsigned int tpdu_len);</span><br><span> RsproPDU_t *rspro_gen_TpduCard2Modem(const BankSlot_t *bank, const ClientSlot_t *client,</span><br><span>                                     const uint8_t *tpdu, unsigned int tpdu_len);</span><br><span style="color: hsl(120, 100%, 40%);">+RsproPDU_t *rspro_gen_ResetStateReq(void);</span><br><span style="color: hsl(120, 100%, 40%);">+RsproPDU_t *rspro_gen_ResetStateRes(e_ResultCode res);</span><br><span> </span><br><span> e_ResultCode rspro_get_result(const RsproPDU_t *pdu);</span><br><span> </span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/osmo-remsim/+/16491">change 16491</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.osmocom.org/c/osmo-remsim/+/16491"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: osmo-remsim </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-Change-Id: I442bab523486bbdf2faa8028f8972cd0af795303 </div>
<div style="display:none"> Gerrit-Change-Number: 16491 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>