add map_operations.hrl as well as rec4op/class4op/timer4op

This commit is contained in:
Harald Welte 2013-07-14 20:00:26 +02:00
parent 002365d895
commit 0174a284e8
2 changed files with 209 additions and 1 deletions

101
include/map_operations.hrl Normal file
View File

@ -0,0 +1,101 @@
% from MAP-MobileServiceOperations.asn 3GPP TS 29.002 V9.3.0 (2010-09)
-define(MAP_OP_UPDATE_LOCATION, 2).
-define(MAP_OP_CANCEL_LOCATION, 3).
-define(MAP_OP_PURGE_MS, 67).
-define(MAP_OP_SEND_IDENTIFICATION, 55).
-define(MAP_OP_UPDATE_GRPS_LOCATION, 23).
-define(MAP_OP_PROVIDE_SUBSCR_INFO, 70).
-define(MAP_OP_ANYTIME_INTERROGATION, 71).
-define(MAP_OP_ANYTIME_SUBSCR_INTERR, 62).
-define(MAP_OP_ANYTIME_MODIFICATION, 65).
-define(MAP_OP_NOTE_SUBSCR_DAT_MODIF, 5).
-define(MAP_OP_PREPARE_HANDOVER, 68).
-define(MAP_OP_SEND_END_SIGNAL, 29).
-define(MAP_OP_PROC_ACC_SIGNALLING, 33).
-define(MAP_OP_FWD_ACC_SIGNALLING, 34).
-define(MAP_OP_PREPARE_SUBSEQ_HO, 69).
-define(MAP_OP_SEND_AUTH_INFO, 56).
-define(MAP_OP_AUTH_FAIL_REPORT, 15).
-define(MAP_OP_CHECK_IMEI, 43).
-define(MAP_OP_INSERT_SUBSCR_DATA, 7).
-define(MAP_OP_DELETE_SUBSCR_DATA, 8).
-define(MAP_OP_RESET, 37).
-define(MAP_OP_FW_CHECK_SS, 38).
-define(MAP_OP_RESTORE_DATA, 57).
-define(MAP_OP_SRI_FOR_GPRS, 24).
-define(MAP_OP_FAILURE_REPORT, 25).
-define(MAP_OP_NOTE_MS_PRESENT_GPRS, 26).
-define(MAP_OP_NOTE_MM_EVENT, 89).
% from ShortMessageOperations.asn
-define(MAP_OP_SRI_FOR_SM, 45).
-define(MAP_OP_MO_FORWARD_SM, 46).
-define(MAP_OP_MT_FORWARD_SM, 44).
-define(MAP_OP_REPORT_SM_DEL_STATUS, 47).
-define(MAP_OP_NOTE_SUBSCR_PRESENT, 48).
-define(MAP_OP_ALERT_SC_NO_RESULT, 49).
-define(MAP_OP_ALERT_SC, 64).
-define(MAP_OP_INFORM_SC, 63).
-define(MAP_OP_READY_FOR_SM, 66).
-define(MAP_OP_MT_FW_SMS_VGCS, 21).
% from SS-Operations.asn 3GPP TS 24.080 V9.1.0
-define(MAP_OP_NOTIFY_SS, 16).
-define(MAP_OP_PROC_USS_DATA, 19).
-define(MAP_OP_LCS_PER_LOC_CANCEL, 109).
-define(MAP_OP_LCS_LOC_UPD, 110).
-define(MAP_OP_LCS_PER_LOC_REQ, 111).
-define(MAP_OP_LCS_AREA_EVT_CANCEL, 112).
-define(MAP_OP_LCS_AREA_EVT_REP, 113).
-define(MAP_OP_LCS_AREA_EVT_REQ, 114).
-define(MAP_OP_LCS_MOLR, 115).
-define(MAP_OP_LCS_LOC_NOTIF, 116).
-define(MAP_OP_CALL_DEFLECTION, 117).
-define(MAP_OP_USER_USER_SVC, 118).
-define(MAP_OP_ACC_REG_CC_ENTRY, 119).
-define(MAP_OP_FW_CUG_INFO, 120).
-define(MAP_OP_SPLIT_MPTY, 121).
-define(MAP_OP_RETR_MPTY, 122).
-define(MAP_OP_HOLD_MPTY, 123).
-define(MAP_OP_BUILD_MPTY, 124).
-define(MAP_OP_FW_CHG_ADVICE, 125).
-define(MAP_OP_EXPLICIT_CT, 126).
% from SupplementaryServiceOperations.asn
-define(MAP_OP_REGISTER_SS, 10).
-define(MAP_OP_ERASE_SS, 11).
-define(MAP_OP_ACTIVATE_SS, 12).
-define(MAP_OP_DEACTIVATE_SS, 13).
-define(MAP_OP_INTERROGATE_SS, 14).
-define(MAP_OP_PROC_USS_REQ, 59).
-define(MAP_OP_USS_REQ, 60).
-define(MAP_OP_USS_NOTIFY, 61).
-define(MAP_OP_REGISTER_PW, 17).
-define(MAP_OP_GET_PW, 18).
-define(MAP_OP_SS_INVOC_NOTIF, 72).
-define(MAP_OP_REGISTER_CC_ENTRY, 76).
-define(MAP_OP_ERASE_CC_ENTRY, 77).
% from MAP-CallHandlingOperations.asn
-define(MAP_OP_SEND_ROUTING_INFO, 22).
-define(MAP_OP_PROVIDE_ROAMING_NR, 4).
-define(MAP_OP_RESUME_CALL_HANDLING, 6).
-define(MAP_OP_SET_REPORTING_STATE, 73).
-define(MAP_OP_STATUS_REPORT, 74).
-define(MAP_OP_REMOTE_USER_FREE, 75).
-define(MAP_OP_IST_ALERT, 87).
-define(MAP_OP_IST_COMMAND, 88).
-define(MAP_OP_RELEASE_RESOURCES, 20).
% from MAP-LocationServiceOperations.asn
-define(MAP_OP_SRI_FOR_LCS, 85).
-define(MAP_OP_PROV_SUBSCR_LOC, 83).
-define(MAP_OP_SUBSCR_LOC_REPORT, 86).
% FIXME: GroupCallOperations, OandMOperations, SecureTransportOperations
% maximum values as gvin in TS 09.02 / 17.1.2
-define(MAP_INV_TIMER_S, 10*1000).
-define(MAP_INV_TIMER_M, 30*1000).
-define(MAP_INV_TIMER_ML, 10*60*1000).
-define(MAP_INV_TIMER_L, 38*60*60*1000).

View File

@ -36,8 +36,10 @@
-include_lib("osmo_ss7/include/isup.hrl").
-include_lib("osmo_map/include/map.hrl").
-include_lib("osmo_map/include/map_operations.hrl").
-export([postproc/2, postproc_gt/2, postproc_imsi/2, postproc_msisdn/2]).
-export([postproc/2, postproc_gt/2, postproc_imsi/2, postproc_msisdn/2,
encode_op/3, decode_op/3, timer4op/1, class4op/1]).
postproc(M=#'UpdateLocationArg'{imsi = Imsi, 'msc-Number' = Msc, 'vlr-Number' = Vlr,
'v-gmlc-Address' = Gmlc}, Mode) ->
@ -132,3 +134,108 @@ postproc_msisdn([], pre) ->
postproc_msisdn(In, pre) ->
map_codec:encode_map_tbcd(In).
rec4op({local, ?MAP_OP_SEND_IDENTIFICATION}) -> 'UpdateLocation';
rec4op({local, ?MAP_OP_CANCEL_LOCATION}) -> 'CancelLocation';
rec4op({local, ?MAP_OP_PURGE_MS}) -> 'PurgeMS-';
rec4op({local, ?MAP_OP_SEND_IDENTIFICATION}) -> 'SendIdentification';
rec4op({local, ?MAP_OP_UPDATE_GRPS_LOCATION}) -> 'UpdateGprsLocation';
rec4op({local, ?MAP_OP_PROVIDE_SUBSCR_INFO}) -> 'ProvideSubscriberInfo';
rec4op({local, ?MAP_OP_ANYTIME_INTERROGATION}) -> 'AnyTimeInterrogation';
rec4op({local, ?MAP_OP_ANYTIME_SUBSCR_INTERR}) -> 'AnyTimeSubscriptionInterrogation';
rec4op({local, ?MAP_OP_ANYTIME_MODIFICATION}) -> 'AnyTimeModification';
rec4op({local, ?MAP_OP_NOTE_SUBSCR_DAT_MODIF}) -> 'NoteSubscriberDataModified';
rec4op({local, ?MAP_OP_PREPARE_HANDOVER}) -> 'PrepareHO-';
rec4op({local, ?MAP_OP_SEND_END_SIGNAL}) -> 'SendEndSignal-';
rec4op({local, ?MAP_OP_PROC_ACC_SIGNALLING}) -> 'ProcessAccessSignalling-';
rec4op({local, ?MAP_OP_FWD_ACC_SIGNALLING}) -> 'ForwardAccessSignalling-';
rec4op({local, ?MAP_OP_PREPARE_SUBSEQ_HO}) -> 'PrepareSubsequentHO-';
rec4op({local, ?MAP_OP_SEND_AUTH_INFO}) -> 'SendAuthenticationInfo';
rec4op({local, ?MAP_OP_AUTH_FAIL_REPORT}) -> 'AuthenticationFailureReport';
rec4op({local, ?MAP_OP_CHECK_IMEI}) -> 'CheckIMEI-';
rec4op({local, ?MAP_OP_INSERT_SUBSCR_DATA}) -> 'InsertSubscriberData';
rec4op({local, ?MAP_OP_DELETE_SUBSCR_DATA}) -> 'DeleteSubscriberData';
rec4op({local, ?MAP_OP_RESET}) -> 'Reset';
rec4op({local, ?MAP_OP_FW_CHECK_SS}) -> {error, 'FIXME'};
rec4op({local, ?MAP_OP_RESTORE_DATA}) -> 'RestoreData';
rec4op({local, ?MAP_OP_SRI_FOR_GPRS}) -> 'SendRoutingInfoForGprs';
rec4op({local, ?MAP_OP_FAILURE_REPORT}) -> 'FailureReport';
rec4op({local, ?MAP_OP_NOTE_MS_PRESENT_GPRS}) -> 'NoteMsPresentForGprs';
rec4op({local, ?MAP_OP_NOTE_MM_EVENT}) -> 'NoteMM-Event';
rec4op({local, ?MAP_OP_SRI_FOR_SM}) -> 'SendRoutingInfo';
rec4op({local, ?MAP_OP_MO_FORWARD_SM}) -> 'MO-ForwardSM-';
rec4op({local, ?MAP_OP_MT_FORWARD_SM}) -> 'MT-ForwardSM-';
rec4op({local, ?MAP_OP_REPORT_SM_DEL_STATUS}) -> 'ReportSM-DeliveryStatus';
rec4op({local, ?MAP_OP_NOTE_SUBSCR_PRESENT}) -> {error, 'FIXME'};
rec4op({local, ?MAP_OP_ALERT_SC_NO_RESULT}) -> {error, 'FIXME'};
rec4op({local, ?MAP_OP_ALERT_SC}) -> 'AlertServiceCentre';
rec4op({local, ?MAP_OP_INFORM_SC}) -> 'InformServiceCentre';
rec4op({local, ?MAP_OP_READY_FOR_SM}) -> 'ReadyForSM-';
rec4op({local, ?MAP_OP_MT_FW_SMS_VGCS}) -> 'MT-ForwardSM-VGCS-';
% FIXME: SS-Operations.asn, SupplementaryServiceOperations, MAP-CallHandlingOperations, MAP-LocationServiceOperations
argres(arg) -> "Arg";
argres(argument) -> "Arg";
argres(res) -> "Res";
argres(result) -> "Res".
decode_op(_, _, <<>>) ->
undefined;
decode_op(_, _, []) ->
undefined;
decode_op({local, Op}, ArgRes, Enc) when is_binary(Enc) or is_list(Enc) ->
case rec4op({local, Op}) of
{error, Err} ->
{error, Err};
TypePrefix ->
RecType = list_to_atom(TypePrefix ++ argres(ArgRes)),
map_only:decode(RecType, Enc)
end.
encode_op({local, Op}, ArgRes, Dec) ->
case rec4op({local, Op}) of
{error, Err} ->
{error, Err};
TypePrefix ->
RecType = list_to_atom(TypePrefix ++ argres(ArgRes)),
map_only_encode(RecType, Dec)
end.
timer4op({local, Op}) when is_integer(Op) ->
timer4op(Op);
timer4op(?MAP_OP_SEND_IDENTIFICATION) -> ?MAP_INV_TIMER_S;
timer4op(?MAP_OP_SEND_END_SIGNAL) -> ?MAP_INV_TIMER_L;
timer4op(?MAP_OP_PROC_ACC_SIGNALLING) -> ?MAP_INV_TIMER_S;
timer4op(?MAP_OP_FWD_ACC_SIGNALLING) -> ?MAP_INV_TIMER_S;
timer4op(?MAP_OP_FW_CHECK_SS) -> ?MAP_INV_TIMER_S;
timer4op(?MAP_OP_MO_FORWARD_SM) -> ?MAP_INV_TIMER_ML;
timer4op(?MAP_OP_MT_FORWARD_SM) -> ?MAP_INV_TIMER_ML;
timer4op(?MAP_OP_REPORT_SM_DEL_STATUS) -> ?MAP_INV_TIMER_S;
timer4op(?MAP_OP_ALERT_SC) -> ?MAP_INV_TIMER_S;
timer4op(?MAP_OP_INFORM_SC) -> ?MAP_INV_TIMER_S;
timer4op(?MAP_OP_MT_FW_SMS_VGCS) -> ?MAP_INV_TIMER_ML;
timer4op(?MAP_OP_PROC_USS_REQ) -> ?MAP_INV_TIMER_ML;
timer4op(?MAP_OP_USS_REQ) -> ?MAP_INV_TIMER_ML;
timer4op(?MAP_OP_USS_NOTIFY) -> ?MAP_INV_TIMER_ML;
timer4op(?MAP_OP_REGISTER_PW) -> ?MAP_INV_TIMER_ML;
timer4op(?MAP_OP_PROV_SUBSCR_LOC) -> ?MAP_INV_TIMER_ML;
% FIXME: GroupCallOperations, OandMOperations, SecureTransportOperations
timer4op(Op) when is_integer(Op) -> ?MAP_INV_TIMER_M.
class4op({local, Op}) when is_integer(Op) ->
class4op(Op);
class4op(?MAP_OP_SEND_END_SIGNAL) -> 3;
class4op(?MAP_OP_PROC_ACC_SIGNALLING) -> 4;
class4op(?MAP_OP_FWD_ACC_SIGNALLING) -> 4;
class4op(?MAP_OP_RESET) -> 4;
class4op(?MAP_OP_FW_CHECK_SS) -> 4;
class4op(?MAP_OP_NOTE_SUBSCR_PRESENT) -> 4;
class4op(?MAP_OP_ALERT_SC_NO_RESULT) -> 4;
class4op(?MAP_OP_INFORM_SC) -> 4;
class4op(?MAP_OP_NOTIFY_SS) -> 4;
class4op(?MAP_OP_FW_CHG_ADVICE) -> 3;
class4op(?MAP_OP_FW_CUG_INFO) -> 4;
class4op(?MAP_OP_GET_PW) -> 3;
% FIXME: GroupCallOperations, OandMOperations, SecureTransportOperations
class4op(Op) when is_integer(Op) -> 1.