jolly has uploaded this change for review. ( 
https://gerrit.osmocom.org/c/onomondo-ipa/+/43030?usp=email )


Change subject: V1.2: EuiccResultData.setFallbackAttribute / 
unsetFallbackAttribute
......................................................................

V1.2: EuiccResultData.setFallbackAttribute / unsetFallbackAttribute

Add setFallbackAttribute and unsetFallbackAttribute to EuiccResultData.

The IoT eUICC emulation just acknowledges the operation with a log
message and does nothing. A non IoT eUICC does not support fallback.

Reference: SGP.32 Section 2.11.1.1.3

Related: SYS#8101
Change-Id: I59fba32cb12de22f71b3238adcbab5fc7f66e991
---
M asn1/SGP32Definitions.asn
M src/ipa/libasn/CMakeLists.txt
M src/ipa/libasn/EuiccResultData.c
M src/ipa/libasn/EuiccResultData.h
M src/ipa/libasn/Psmo.c
M src/ipa/libasn/Psmo.h
A src/ipa/libasn/SetFallbackAttributeResult.c
A src/ipa/libasn/SetFallbackAttributeResult.h
A src/ipa/libasn/UnsetFallbackAttributeResult.c
A src/ipa/libasn/UnsetFallbackAttributeResult.h
M src/ipa/libipa/es10b_load_euicc_pkg.c
11 files changed, 375 insertions(+), 17 deletions(-)



  git pull ssh://gerrit.osmocom.org:29418/onomondo-ipa refs/changes/30/43030/1

diff --git a/asn1/SGP32Definitions.asn b/asn1/SGP32Definitions.asn
index 3b91400..c37ac17 100644
--- a/asn1/SGP32Definitions.asn
+++ b/asn1/SGP32Definitions.asn
@@ -102,7 +102,9 @@
     immediateEnableFlag [0] NULL OPTIONAL,
     smdpOid [1] OBJECT IDENTIFIER OPTIONAL,
     smdpAddress [2] UTF8String OPTIONAL
-  }
+  },
+  setFallbackAttribute [8] SEQUENCE {iccid [APPLICATION 26] Iccid},
+  unsetFallbackAttribute [9] SEQUENCE {}
 }
 -- ASN1STOP

@@ -172,6 +174,8 @@
   updateEimResult [10] UpdateEimResult,
   listEimResult [11] ListEimResult,
   rollbackResult [12] RollbackProfileResult,
+  setFallbackAttributeResult [13] SetFallbackAttributeResult,
+  unsetFallbackAttributeResult [14] UnsetFallbackAttributeResult,
   processingTerminated INTEGER {
     resultSizeOverflow(1),
     unknownOrDamagedCommand(2),
@@ -231,6 +235,20 @@
   ok(0),
   undefinedError(127)
 }
+SetFallbackAttributeResult ::= INTEGER {
+  ok(0),
+  iccidOrAidNotFound (1),
+  fallbackNotAllowed (2),
+  fallbackProfileEnabled (3),
+  undefinedError (127)
+}
+UnsetFallbackAttributeResult ::= INTEGER {
+  ok(0),
+  noFallbackAttribute(2),
+  fallbackProfileEnabled (3),
+  commandError(7),
+  undefinedError (127)
+}
 AddEimResult ::= CHOICE {
   associationToken [4] INTEGER,
   addEimResultCode INTEGER {
diff --git a/src/ipa/libasn/CMakeLists.txt b/src/ipa/libasn/CMakeLists.txt
index 90d7b42..68338fb 100644
--- a/src/ipa/libasn/CMakeLists.txt
+++ b/src/ipa/libasn/CMakeLists.txt
@@ -786,6 +786,8 @@
 SetDefaultDpAddressRequest.h
 SetDefaultDpAddressResponse.c
 SetDefaultDpAddressResponse.h
+SetFallbackAttributeResult.c
+SetFallbackAttributeResult.h
 SetNicknameRequest.c
 SetNicknameRequest.h
 SetNicknameResponse.c
@@ -892,6 +894,8 @@
 UniquePostalName.h
 UniversalString.c
 UniversalString.h
+UnsetFallbackAttributeResult.c
+UnsetFallbackAttributeResult.h
 UpdateEimResult.c
 UpdateEimResult.h
 UpdateMetadataRequest.c
diff --git a/src/ipa/libasn/EuiccResultData.c b/src/ipa/libasn/EuiccResultData.c
index 08f4119..15fc272 100644
--- a/src/ipa/libasn/EuiccResultData.c
+++ b/src/ipa/libasn/EuiccResultData.c
@@ -11,7 +11,7 @@
        { 0, 0 },
        -1};
 asn_per_constraints_t asn_PER_type_EuiccResultData_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED | APC_EXTENSIBLE,  4,  4,  0,  11 }   /* (0..11,...) 
*/,
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  4,  4,  0,  13 }   /* (0..13,...) 
*/,
        { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
        0, 0    /* No PER value map */
 };
@@ -115,6 +115,24 @@
                0, 0, /* No default value */
                "rollbackResult"
                },
+       { ATF_NOFLAGS, 0, offsetof(struct EuiccResultData, 
choice.setFallbackAttributeResult),
+               (ASN_TAG_CLASS_CONTEXT | (13 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_SetFallbackAttributeResult,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setFallbackAttributeResult"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct EuiccResultData, 
choice.unsetFallbackAttributeResult),
+               (ASN_TAG_CLASS_CONTEXT | (14 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_UnsetFallbackAttributeResult,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "unsetFallbackAttributeResult"
+               },
        { ATF_NOFLAGS, 0, offsetof(struct EuiccResultData, 
choice.processingTerminated),
                (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)),
                0,
@@ -125,10 +143,10 @@
                "processingTerminated"
                },
 };
-static const unsigned asn_MAP_EuiccResultData_to_canonical_1[] = { 11, 0, 1, 
2, 4, 5, 6, 7, 8, 9, 10, 3 };
-static const unsigned asn_MAP_EuiccResultData_from_canonical_1[] = { 1, 2, 3, 
11, 4, 5, 6, 7, 8, 9, 10, 0 };
+static const unsigned asn_MAP_EuiccResultData_to_canonical_1[] = { 13, 0, 1, 
2, 4, 5, 6, 7, 8, 9, 10, 11, 12, 3 };
+static const unsigned asn_MAP_EuiccResultData_from_canonical_1[] = { 1, 2, 3, 
13, 4, 5, 6, 7, 8, 9, 10, 11, 12, 0 };
 static const asn_TYPE_tag2member_t asn_MAP_EuiccResultData_tag2el_1[] = {
-    { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 11, 0, 0 }, /* 
processingTerminated */
+    { (ASN_TAG_CLASS_UNIVERSAL | (2 << 2)), 13, 0, 0 }, /* 
processingTerminated */
     { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* enableResult */
     { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* disableResult */
     { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 }, /* deleteResult */
@@ -139,6 +157,8 @@
     { (ASN_TAG_CLASS_CONTEXT | (10 << 2)), 8, 0, 0 }, /* updateEimResult */
     { (ASN_TAG_CLASS_CONTEXT | (11 << 2)), 9, 0, 0 }, /* listEimResult */
     { (ASN_TAG_CLASS_CONTEXT | (12 << 2)), 10, 0, 0 }, /* rollbackResult */
+    { (ASN_TAG_CLASS_CONTEXT | (13 << 2)), 11, 0, 0 }, /* 
setFallbackAttributeResult */
+    { (ASN_TAG_CLASS_CONTEXT | (14 << 2)), 12, 0, 0 }, /* 
unsetFallbackAttributeResult */
     { (ASN_TAG_CLASS_CONTEXT | (45 << 2)), 3, 0, 0 } /* listProfileInfoResult 
*/
 };
 asn_CHOICE_specifics_t asn_SPC_EuiccResultData_specs_1 = {
@@ -147,10 +167,10 @@
        offsetof(struct EuiccResultData, present),
        sizeof(((struct EuiccResultData *)0)->present),
        asn_MAP_EuiccResultData_tag2el_1,
-       12,     /* Count of tags in the map */
+       14,     /* Count of tags in the map */
        asn_MAP_EuiccResultData_to_canonical_1,
        asn_MAP_EuiccResultData_from_canonical_1,
-       12      /* Extensions start */
+       14      /* Extensions start */
 };
 asn_TYPE_descriptor_t asn_DEF_EuiccResultData = {
        "EuiccResultData",
@@ -162,7 +182,7 @@
        0,      /* No tags (count) */
        { &asn_OER_type_EuiccResultData_constr_1, 
&asn_PER_type_EuiccResultData_constr_1, CHOICE_constraint },
        asn_MBR_EuiccResultData_1,
-       12,     /* Elements count */
+       14,     /* Elements count */
        &asn_SPC_EuiccResultData_specs_1        /* Additional specs */
 };

diff --git a/src/ipa/libasn/EuiccResultData.h b/src/ipa/libasn/EuiccResultData.h
index 82ee724..79197a6 100644
--- a/src/ipa/libasn/EuiccResultData.h
+++ b/src/ipa/libasn/EuiccResultData.h
@@ -23,6 +23,8 @@
 #include "UpdateEimResult.h"
 #include "ListEimResult.h"
 #include "RollbackProfileResult.h"
+#include "SetFallbackAttributeResult.h"
+#include "UnsetFallbackAttributeResult.h"
 #include <NativeInteger.h>
 #include <constr_CHOICE.h>

@@ -44,6 +46,8 @@
        EuiccResultData_PR_updateEimResult,
        EuiccResultData_PR_listEimResult,
        EuiccResultData_PR_rollbackResult,
+       EuiccResultData_PR_setFallbackAttributeResult,
+       EuiccResultData_PR_unsetFallbackAttributeResult,
        EuiccResultData_PR_processingTerminated
        /* Extensions may appear below */

@@ -70,6 +74,8 @@
                UpdateEimResult_t        updateEimResult;
                ListEimResult_t  listEimResult;
                RollbackProfileResult_t  rollbackResult;
+               SetFallbackAttributeResult_t     setFallbackAttributeResult;
+               UnsetFallbackAttributeResult_t   unsetFallbackAttributeResult;
                long     processingTerminated;
                /*
                 * This type is extensible,
@@ -84,7 +90,7 @@
 /* Implementation */
 extern asn_TYPE_descriptor_t asn_DEF_EuiccResultData;
 extern asn_CHOICE_specifics_t asn_SPC_EuiccResultData_specs_1;
-extern asn_TYPE_member_t asn_MBR_EuiccResultData_1[12];
+extern asn_TYPE_member_t asn_MBR_EuiccResultData_1[14];
 extern asn_per_constraints_t asn_PER_type_EuiccResultData_constr_1;

 #ifdef __cplusplus
diff --git a/src/ipa/libasn/Psmo.c b/src/ipa/libasn/Psmo.c
index 6b8d207..144a95a 100644
--- a/src/ipa/libasn/Psmo.c
+++ b/src/ipa/libasn/Psmo.c
@@ -11,7 +11,7 @@
        { 0, 0 },
        -1};
 asn_per_constraints_t asn_PER_type_Psmo_constr_1 CC_NOTUSED = {
-       { APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  5 }    /* (0..5,...) 
*/,
+       { APC_CONSTRAINED | APC_EXTENSIBLE,  3,  3,  0,  7 }    /* (0..7,...) 
*/,
        { APC_UNCONSTRAINED,    -1, -1,  0,  0 },
        0, 0    /* No PER value map */
 };
@@ -249,6 +249,77 @@
        &asn_SPC_configureImmediateEnable_specs_15      /* Additional specs */
 };

+static asn_TYPE_member_t asn_MBR_setFallbackAttribute_20[] = {
+       { ATF_NOFLAGS, 0, offsetof(struct Psmo__setFallbackAttribute, iccid),
+               (ASN_TAG_CLASS_APPLICATION | (26 << 2)),
+               -1,     /* IMPLICIT tag at current level */
+               &asn_DEF_Iccid,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "iccid"
+               },
+};
+static const ber_tlv_tag_t asn_DEF_setFallbackAttribute_tags_20[] = {
+       (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static const asn_TYPE_tag2member_t asn_MAP_setFallbackAttribute_tag2el_20[] = {
+    { (ASN_TAG_CLASS_APPLICATION | (26 << 2)), 0, 0, 0 } /* iccid */
+};
+static asn_SEQUENCE_specifics_t asn_SPC_setFallbackAttribute_specs_20 = {
+       sizeof(struct Psmo__setFallbackAttribute),
+       offsetof(struct Psmo__setFallbackAttribute, _asn_ctx),
+       asn_MAP_setFallbackAttribute_tag2el_20,
+       1,      /* Count of tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       1,      /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_setFallbackAttribute_20 = {
+       "setFallbackAttribute",
+       "setFallbackAttribute",
+       &asn_OP_SEQUENCE,
+       asn_DEF_setFallbackAttribute_tags_20,
+       sizeof(asn_DEF_setFallbackAttribute_tags_20)
+               /sizeof(asn_DEF_setFallbackAttribute_tags_20[0]) - 1, /* 1 */
+       asn_DEF_setFallbackAttribute_tags_20,   /* Same as above */
+       sizeof(asn_DEF_setFallbackAttribute_tags_20)
+               /sizeof(asn_DEF_setFallbackAttribute_tags_20[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       asn_MBR_setFallbackAttribute_20,
+       1,      /* Elements count */
+       &asn_SPC_setFallbackAttribute_specs_20  /* Additional specs */
+};
+
+static const ber_tlv_tag_t asn_DEF_unsetFallbackAttribute_tags_23[] = {
+       (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+       (ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+static asn_SEQUENCE_specifics_t asn_SPC_unsetFallbackAttribute_specs_23 = {
+       sizeof(struct Psmo__unsetFallbackAttribute),
+       offsetof(struct Psmo__unsetFallbackAttribute, _asn_ctx),
+       0,      /* No top level tags */
+       0,      /* No tags in the map */
+       0, 0, 0,        /* Optional elements (not needed) */
+       -1,     /* First extension addition */
+};
+static /* Use -fall-defs-global to expose */
+asn_TYPE_descriptor_t asn_DEF_unsetFallbackAttribute_23 = {
+       "unsetFallbackAttribute",
+       "unsetFallbackAttribute",
+       &asn_OP_SEQUENCE,
+       asn_DEF_unsetFallbackAttribute_tags_23,
+       sizeof(asn_DEF_unsetFallbackAttribute_tags_23)
+               /sizeof(asn_DEF_unsetFallbackAttribute_tags_23[0]) - 1, /* 1 */
+       asn_DEF_unsetFallbackAttribute_tags_23, /* Same as above */
+       sizeof(asn_DEF_unsetFallbackAttribute_tags_23)
+               /sizeof(asn_DEF_unsetFallbackAttribute_tags_23[0]), /* 2 */
+       { 0, 0, SEQUENCE_constraint },
+       0, 0,   /* No members */
+       &asn_SPC_unsetFallbackAttribute_specs_23        /* Additional specs */
+};
+
 asn_TYPE_member_t asn_MBR_Psmo_1[] = {
        { ATF_NOFLAGS, 0, offsetof(struct Psmo, choice.enable),
                (ASN_TAG_CLASS_CONTEXT | (3 << 2)),
@@ -304,15 +375,35 @@
                0, 0, /* No default value */
                "configureImmediateEnable"
                },
+       { ATF_NOFLAGS, 0, offsetof(struct Psmo, choice.setFallbackAttribute),
+               (ASN_TAG_CLASS_CONTEXT | (8 << 2)),
+               0,
+               &asn_DEF_setFallbackAttribute_20,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "setFallbackAttribute"
+               },
+       { ATF_NOFLAGS, 0, offsetof(struct Psmo, choice.unsetFallbackAttribute),
+               (ASN_TAG_CLASS_CONTEXT | (9 << 2)),
+               0,
+               &asn_DEF_unsetFallbackAttribute_23,
+               0,
+               { 0, 0, 0 },
+               0, 0, /* No default value */
+               "unsetFallbackAttribute"
+               },
 };
-static const unsigned asn_MAP_Psmo_to_canonical_1[] = { 0, 1, 2, 4, 5, 3 };
-static const unsigned asn_MAP_Psmo_from_canonical_1[] = { 0, 1, 2, 5, 3, 4 };
+static const unsigned asn_MAP_Psmo_to_canonical_1[] = { 0, 1, 2, 4, 5, 6, 7, 3 
};
+static const unsigned asn_MAP_Psmo_from_canonical_1[] = { 0, 1, 2, 7, 3, 4, 5, 
6 };
 static const asn_TYPE_tag2member_t asn_MAP_Psmo_tag2el_1[] = {
     { (ASN_TAG_CLASS_CONTEXT | (3 << 2)), 0, 0, 0 }, /* enable */
     { (ASN_TAG_CLASS_CONTEXT | (4 << 2)), 1, 0, 0 }, /* disable */
     { (ASN_TAG_CLASS_CONTEXT | (5 << 2)), 2, 0, 0 }, /* delete */
     { (ASN_TAG_CLASS_CONTEXT | (6 << 2)), 4, 0, 0 }, /* getRAT */
     { (ASN_TAG_CLASS_CONTEXT | (7 << 2)), 5, 0, 0 }, /* 
configureImmediateEnable */
+    { (ASN_TAG_CLASS_CONTEXT | (8 << 2)), 6, 0, 0 }, /* setFallbackAttribute */
+    { (ASN_TAG_CLASS_CONTEXT | (9 << 2)), 7, 0, 0 }, /* unsetFallbackAttribute 
*/
     { (ASN_TAG_CLASS_CONTEXT | (45 << 2)), 3, 0, 0 } /* listProfileInfo */
 };
 asn_CHOICE_specifics_t asn_SPC_Psmo_specs_1 = {
@@ -321,10 +412,10 @@
        offsetof(struct Psmo, present),
        sizeof(((struct Psmo *)0)->present),
        asn_MAP_Psmo_tag2el_1,
-       6,      /* Count of tags in the map */
+       8,      /* Count of tags in the map */
        asn_MAP_Psmo_to_canonical_1,
        asn_MAP_Psmo_from_canonical_1,
-       6       /* Extensions start */
+       8       /* Extensions start */
 };
 asn_TYPE_descriptor_t asn_DEF_Psmo = {
        "Psmo",
@@ -336,7 +427,7 @@
        0,      /* No tags (count) */
        { &asn_OER_type_Psmo_constr_1, &asn_PER_type_Psmo_constr_1, 
CHOICE_constraint },
        asn_MBR_Psmo_1,
-       6,      /* Elements count */
+       8,      /* Elements count */
        &asn_SPC_Psmo_specs_1   /* Additional specs */
 };

diff --git a/src/ipa/libasn/Psmo.h b/src/ipa/libasn/Psmo.h
index 9e9c22f..c5e3e10 100644
--- a/src/ipa/libasn/Psmo.h
+++ b/src/ipa/libasn/Psmo.h
@@ -32,7 +32,9 @@
        Psmo_PR_delete,
        Psmo_PR_listProfileInfo,
        Psmo_PR_getRAT,
-       Psmo_PR_configureImmediateEnable
+       Psmo_PR_configureImmediateEnable,
+       Psmo_PR_setFallbackAttribute,
+       Psmo_PR_unsetFallbackAttribute
        /* Extensions may appear below */

 } Psmo_PR;
@@ -94,6 +96,25 @@
                        /* Context for parsing across buffer boundaries */
                        asn_struct_ctx_t _asn_ctx;
                } configureImmediateEnable;
+               struct Psmo__setFallbackAttribute {
+                       Iccid_t  iccid;
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } setFallbackAttribute;
+               struct Psmo__unsetFallbackAttribute {
+                       /*
+                        * This type is extensible,
+                        * possible extensions are below.
+                        */
+
+                       /* Context for parsing across buffer boundaries */
+                       asn_struct_ctx_t _asn_ctx;
+               } unsetFallbackAttribute;
                /*
                 * This type is extensible,
                 * possible extensions are below.
@@ -107,7 +128,7 @@
 /* Implementation */
 extern asn_TYPE_descriptor_t asn_DEF_Psmo;
 extern asn_CHOICE_specifics_t asn_SPC_Psmo_specs_1;
-extern asn_TYPE_member_t asn_MBR_Psmo_1[6];
+extern asn_TYPE_member_t asn_MBR_Psmo_1[8];
 extern asn_per_constraints_t asn_PER_type_Psmo_constr_1;

 #ifdef __cplusplus
diff --git a/src/ipa/libasn/SetFallbackAttributeResult.c 
b/src/ipa/libasn/SetFallbackAttributeResult.c
new file mode 100644
index 0000000..8996ca7
--- /dev/null
+++ b/src/ipa/libasn/SetFallbackAttributeResult.c
@@ -0,0 +1,31 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "SGP32Definitions"
+ *     found in "../../../asn1/SGP32Definitions.asn"
+ *     `asn1c -fcompound-names -no-gen-example`
+ */
+
+#include "SetFallbackAttributeResult.h"
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static const ber_tlv_tag_t asn_DEF_SetFallbackAttributeResult_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_SetFallbackAttributeResult = {
+       "SetFallbackAttributeResult",
+       "SetFallbackAttributeResult",
+       &asn_OP_NativeInteger,
+       asn_DEF_SetFallbackAttributeResult_tags_1,
+       sizeof(asn_DEF_SetFallbackAttributeResult_tags_1)
+               /sizeof(asn_DEF_SetFallbackAttributeResult_tags_1[0]), /* 1 */
+       asn_DEF_SetFallbackAttributeResult_tags_1,      /* Same as above */
+       sizeof(asn_DEF_SetFallbackAttributeResult_tags_1)
+               /sizeof(asn_DEF_SetFallbackAttributeResult_tags_1[0]), /* 1 */
+       { 0, 0, NativeInteger_constraint },
+       0, 0,   /* Defined elsewhere */
+       0       /* No specifics */
+};
+
diff --git a/src/ipa/libasn/SetFallbackAttributeResult.h 
b/src/ipa/libasn/SetFallbackAttributeResult.h
new file mode 100644
index 0000000..a8b708e
--- /dev/null
+++ b/src/ipa/libasn/SetFallbackAttributeResult.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "SGP32Definitions"
+ *     found in "../../../asn1/SGP32Definitions.asn"
+ *     `asn1c -fcompound-names -no-gen-example`
+ */
+
+#ifndef        _SetFallbackAttributeResult_H_
+#define        _SetFallbackAttributeResult_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum SetFallbackAttributeResult {
+       SetFallbackAttributeResult_ok   = 0,
+       SetFallbackAttributeResult_iccidOrAidNotFound   = 1,
+       SetFallbackAttributeResult_fallbackNotAllowed   = 2,
+       SetFallbackAttributeResult_fallbackProfileEnabled       = 3,
+       SetFallbackAttributeResult_undefinedError       = 127
+} e_SetFallbackAttributeResult;
+
+/* SetFallbackAttributeResult */
+typedef long    SetFallbackAttributeResult_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_SetFallbackAttributeResult;
+asn_struct_free_f SetFallbackAttributeResult_free;
+asn_struct_print_f SetFallbackAttributeResult_print;
+asn_constr_check_f SetFallbackAttributeResult_constraint;
+ber_type_decoder_f SetFallbackAttributeResult_decode_ber;
+der_type_encoder_f SetFallbackAttributeResult_encode_der;
+xer_type_decoder_f SetFallbackAttributeResult_decode_xer;
+xer_type_encoder_f SetFallbackAttributeResult_encode_xer;
+oer_type_decoder_f SetFallbackAttributeResult_decode_oer;
+oer_type_encoder_f SetFallbackAttributeResult_encode_oer;
+per_type_decoder_f SetFallbackAttributeResult_decode_uper;
+per_type_encoder_f SetFallbackAttributeResult_encode_uper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SetFallbackAttributeResult_H_ */
+#include <asn_internal.h>
diff --git a/src/ipa/libasn/UnsetFallbackAttributeResult.c 
b/src/ipa/libasn/UnsetFallbackAttributeResult.c
new file mode 100644
index 0000000..910a723
--- /dev/null
+++ b/src/ipa/libasn/UnsetFallbackAttributeResult.c
@@ -0,0 +1,31 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "SGP32Definitions"
+ *     found in "../../../asn1/SGP32Definitions.asn"
+ *     `asn1c -fcompound-names -no-gen-example`
+ */
+
+#include "UnsetFallbackAttributeResult.h"
+
+/*
+ * This type is implemented using NativeInteger,
+ * so here we adjust the DEF accordingly.
+ */
+static const ber_tlv_tag_t asn_DEF_UnsetFallbackAttributeResult_tags_1[] = {
+       (ASN_TAG_CLASS_UNIVERSAL | (2 << 2))
+};
+asn_TYPE_descriptor_t asn_DEF_UnsetFallbackAttributeResult = {
+       "UnsetFallbackAttributeResult",
+       "UnsetFallbackAttributeResult",
+       &asn_OP_NativeInteger,
+       asn_DEF_UnsetFallbackAttributeResult_tags_1,
+       sizeof(asn_DEF_UnsetFallbackAttributeResult_tags_1)
+               /sizeof(asn_DEF_UnsetFallbackAttributeResult_tags_1[0]), /* 1 */
+       asn_DEF_UnsetFallbackAttributeResult_tags_1,    /* Same as above */
+       sizeof(asn_DEF_UnsetFallbackAttributeResult_tags_1)
+               /sizeof(asn_DEF_UnsetFallbackAttributeResult_tags_1[0]), /* 1 */
+       { 0, 0, NativeInteger_constraint },
+       0, 0,   /* Defined elsewhere */
+       0       /* No specifics */
+};
+
diff --git a/src/ipa/libasn/UnsetFallbackAttributeResult.h 
b/src/ipa/libasn/UnsetFallbackAttributeResult.h
new file mode 100644
index 0000000..6aede02
--- /dev/null
+++ b/src/ipa/libasn/UnsetFallbackAttributeResult.h
@@ -0,0 +1,52 @@
+/*
+ * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
+ * From ASN.1 module "SGP32Definitions"
+ *     found in "../../../asn1/SGP32Definitions.asn"
+ *     `asn1c -fcompound-names -no-gen-example`
+ */
+
+#ifndef        _UnsetFallbackAttributeResult_H_
+#define        _UnsetFallbackAttributeResult_H_
+
+
+#include <asn_application.h>
+
+/* Including external dependencies */
+#include <NativeInteger.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum UnsetFallbackAttributeResult {
+       UnsetFallbackAttributeResult_ok = 0,
+       UnsetFallbackAttributeResult_noFallbackAttribute        = 2,
+       UnsetFallbackAttributeResult_fallbackProfileEnabled     = 3,
+       UnsetFallbackAttributeResult_commandError       = 7,
+       UnsetFallbackAttributeResult_undefinedError     = 127
+} e_UnsetFallbackAttributeResult;
+
+/* UnsetFallbackAttributeResult */
+typedef long    UnsetFallbackAttributeResult_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_UnsetFallbackAttributeResult;
+asn_struct_free_f UnsetFallbackAttributeResult_free;
+asn_struct_print_f UnsetFallbackAttributeResult_print;
+asn_constr_check_f UnsetFallbackAttributeResult_constraint;
+ber_type_decoder_f UnsetFallbackAttributeResult_decode_ber;
+der_type_encoder_f UnsetFallbackAttributeResult_encode_der;
+xer_type_decoder_f UnsetFallbackAttributeResult_decode_xer;
+xer_type_encoder_f UnsetFallbackAttributeResult_encode_xer;
+oer_type_decoder_f UnsetFallbackAttributeResult_decode_oer;
+oer_type_encoder_f UnsetFallbackAttributeResult_encode_oer;
+per_type_decoder_f UnsetFallbackAttributeResult_decode_uper;
+per_type_encoder_f UnsetFallbackAttributeResult_encode_uper;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _UnsetFallbackAttributeResult_H_ */
+#include <asn_internal.h>
diff --git a/src/ipa/libipa/es10b_load_euicc_pkg.c 
b/src/ipa/libipa/es10b_load_euicc_pkg.c
index 0026d53..01e743a 100644
--- a/src/ipa/libipa/es10b_load_euicc_pkg.c
+++ b/src/ipa/libipa/es10b_load_euicc_pkg.c
@@ -266,6 +266,32 @@
        return euicc_result_data;
 }

+struct EuiccResultData *iot_emo_do_setFallbackAttribute_psmo(struct 
ipa_context *ctx,
+                                                            const struct 
Psmo__setFallbackAttribute *setFallbackAttribute_psmo)
+{
+       struct EuiccResultData *euicc_result_data = IPA_ALLOC_ZERO(struct 
EuiccResultData);
+
+       IPA_LOGP_ES10X("LoadEuiccPackage", LINFO,
+                      "IoT eUICC emulation active, setFallbackAttribute not 
supported by eUICC!\n");
+
+       euicc_result_data->choice.setFallbackAttributeResult = 
SetFallbackAttributeResult_ok;
+
+       return euicc_result_data;
+}
+
+struct EuiccResultData *iot_emo_do_unsetFallbackAttribute_psmo(struct 
ipa_context *ctx,
+                                                              const struct 
Psmo__unsetFallbackAttribute *unsetFallbackAttribute_psmo)
+{
+       struct EuiccResultData *euicc_result_data = IPA_ALLOC_ZERO(struct 
EuiccResultData);
+
+       IPA_LOGP_ES10X("LoadEuiccPackage", LINFO,
+                      "IoT eUICC emulation active, unsetFallbackAttribute not 
supported by eUICC!\n");
+
+       euicc_result_data->choice.setFallbackAttributeResult = 
UnsetFallbackAttributeResult_ok;
+
+       return euicc_result_data;
+}
+
 struct EuiccResultData *iot_emo_do_addEim_eco(struct ipa_context *ctx, const 
struct EimConfigurationData *addEim_eco)
 {
        struct EuiccResultData *euicc_result_data = IPA_ALLOC_ZERO(struct 
EuiccResultData);
@@ -600,6 +626,12 @@
                                psmo_result =
                                    
iot_emo_do_configureImmediateEnable_psmo(ctx, 
&psmo->choice.configureImmediateEnable);
                                break;
+                       case Psmo_PR_setFallbackAttribute:
+                               psmo_result = 
iot_emo_do_setFallbackAttribute_psmo(ctx, &psmo->choice.setFallbackAttribute);
+                               break;
+                       case Psmo_PR_unsetFallbackAttribute:
+                               psmo_result = 
iot_emo_do_unsetFallbackAttribute_psmo(ctx, 
&psmo->choice.unsetFallbackAttribute);
+                               break;
                        default:
                                IPA_LOGP_ES10X("LoadEuiccPackage", LERROR, 
"ignoring invalid or unsupported PSMO!\n");
                                break;

--
To view, visit https://gerrit.osmocom.org/c/onomondo-ipa/+/43030?usp=email
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings?usp=email

Gerrit-MessageType: newchange
Gerrit-Project: onomondo-ipa
Gerrit-Branch: master
Gerrit-Change-Id: I59fba32cb12de22f71b3238adcbab5fc7f66e991
Gerrit-Change-Number: 43030
Gerrit-PatchSet: 1
Gerrit-Owner: jolly <[email protected]>

Reply via email to