dexter has uploaded this change for review. ( https://gerrit.osmocom.org/c/onomondo-eim/+/42881?usp=email )
Change subject: esipa_rest_utils: add support for PSMOs added in SGP.32 V.1.2 ......................................................................
esipa_rest_utils: add support for PSMOs added in SGP.32 V.1.2
SGP.32 adds 3 additional PSMOs: - setFallbackAttribute - unsetFallbackAttribute - setDefaultDpAddress
Change-Id: I03cdd70065a83dfc611d614cf32d817c13fad347 Related: SYS#8100 --- M contrib/rest_api_resource_schema.json M contrib/rest_api_response_schema.json M src/esipa_rest_utils.erl 3 files changed, 113 insertions(+), 0 deletions(-)
git pull ssh://gerrit.osmocom.org:29418/onomondo-eim refs/changes/81/42881/1
diff --git a/contrib/rest_api_resource_schema.json b/contrib/rest_api_resource_schema.json index 1bc0fcf..21ce5d2 100644 --- a/contrib/rest_api_resource_schema.json +++ b/contrib/rest_api_resource_schema.json @@ -157,6 +157,44 @@ "immediateEnableFlag" ] } + }, + { + "unsetFallbackAttribute": { + "description": "order the execution of a setFallbackAttribute PSMO, see also GSMA SGP.32, section 3.4.6", + "type": "object", + "properties": { + "iccid": { + "description": "ICCID of the profile. (ICCID in nibble-swapped raw format)", + "type": "string", + "pattern": "^[0-9,A-F]{2,32}$" + } + }, + "required": [ + "iccid" + ] + } + }, + { + "unsetFallbackAttribute": { + "description": "order the execution of a unsetFallbackAttribute PSMO, see also GSMA SGP.32, section 3.4.7", + "type": "object", + "properties": {} + } + }, + { + "setDefaultDpAddress": { + "description": "order the execution of a setDefaultDpAddress PSMO, see also GSMA SGP.32, section 5.9.25", + "type": "object", + "properties": { + "defaultDpAddress": { + "description": "Address of the default SM-DP+", + "type": "string" + } + }, + "required": [ + "defaultDpAddress" + ] + } } ] } diff --git a/contrib/rest_api_response_schema.json b/contrib/rest_api_response_schema.json index c36c6c7..5f09bc1 100644 --- a/contrib/rest_api_response_schema.json +++ b/contrib/rest_api_response_schema.json @@ -207,6 +207,42 @@ } }, { + "setFallbackAttributeResult": { + "description": "setFallbackAttributeResult PSMO result, see also SGP32Definitions.asn1", + "type": "string", + "enum": [ + "ok", + "iccidOrAidNotFound", + "fallbackNotAllowed", + "fallbackProfileEnabled", + "undefinedError" + ] + } + }, + { + "unsetFallbackAttributeResult": { + "description": "unsetFallbackAttributeResult PSMO result, see also SGP32Definitions.asn1", + "type": "string", + "enum": [ + "ok", + "noFallbackAttribute", + "fallbackProfileEnabled", + "commandError", + "undefinedError" + ] + } + }, + { + "setDefaultDpAddressResult": { + "description": "setDefaultDpAddressResult PSMO result, see also SGP32Definitions.asn1", + "type": "string", + "enum": [ + "ok", + "undefinedError" + ] + } + }, + { "addEimResult": { "description": "addEimResult eCO result", "type": "object", diff --git a/src/esipa_rest_utils.erl b/src/esipa_rest_utils.erl index 2d2c7fe..936e6fa 100644 --- a/src/esipa_rest_utils.erl +++ b/src/esipa_rest_utils.erl @@ -136,6 +136,33 @@ error end.
+psmo_to_asn_setFallbackAttribute(Psmo) -> + case Psmo of + {[{<<"iccid">>, Iccid}]} -> + {setFallbackAttribute, #{iccid => utils:hex_to_binary(Iccid)}}; + _ -> + logger:error("REST: order with bad setFallbackAttribute PSMO: ~p~n", [Psmo]), + error + end. + +psmo_to_asn_unsetFallbackAttribute(Psmo) -> + case Psmo of + {[]} -> + {unsetFallbackAttribute, #{}}; + _ -> + logger:error("REST: order with bad unsetFallbackAttribute PSMO: ~p~n", [Psmo]), + error + end. + +psmo_to_asn_setDefaultDpAddress(Psmo) -> + case Psmo of + {[{<<"defaultDpAddress">>, DefaultDpAddress}]} -> + {setDefaultDpAddress, #{defaultDpAddress => DefaultDpAddress}}; + _ -> + logger:error("REST: order with bad setDefaultDpAddress PSMO: ~p~n", [Psmo]), + error + end. + format_euicc_EuiccPackageSigned(EuiccPackage, EidValue, TransactionId) -> case EuiccPackage of error -> @@ -169,6 +196,12 @@ psmo_to_asn_getRAT(Psmo); {[{<<"configureImmediateEnable">>, Psmo}]} -> psmo_to_asn_configureImmediateEnable(Psmo); + {[{<<"setFallbackAttribute">>, Psmo}]} -> + psmo_to_asn_setFallbackAttribute(Psmo); + {[{<<"unsetFallbackAttribute">>, Psmo}]} -> + psmo_to_asn_unsetFallbackAttribute(Psmo); + {[{<<"setDefaultDpAddress">>, Psmo}]} -> + psmo_to_asn_setDefaultDpAddress(Psmo); _ -> logger:error("REST: order with unknown/unsupported PSMO: ~p~n", [PsmoOrder]), error @@ -396,6 +429,12 @@ result_to_json_getRATResult(GetRATResult); {configureImmediateEnableResult, ConfigureImmediateEnableResult} -> {[{configureImmediateEnableResult, ConfigureImmediateEnableResult}]}; + {setFallbackAttributeResult, SetFallbackAttributeResult} -> + {[{setFallbackAttributeResult, SetFallbackAttributeResult}]}; + {unsetFallbackAttributeResult, UnsetFallbackAttributeResult} -> + {[{unsetFallbackAttributeResult, UnsetFallbackAttributeResult}]}; + {setDefaultDpAddressResult, SetDefaultDpAddressResult} -> + {[{setDefaultDpAddressResult, maps:get(setDefaultDpAddressResult, SetDefaultDpAddressResult)}]}; {addEimResult, AddEimResult} -> result_to_json_addEimResult(AddEimResult); {deleteEimResult, DeleteEimResult} ->