From 31cd25a7dd51f9cb8676370fadf630cf4c81c93b Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Fri, 23 Oct 2015 10:18:38 +0200 Subject: Initial import --- KME-specific-types.erl | 10502 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 10502 insertions(+) create mode 100644 KME-specific-types.erl (limited to 'KME-specific-types.erl') diff --git a/KME-specific-types.erl b/KME-specific-types.erl new file mode 100644 index 0000000..d23ccf6 --- /dev/null +++ b/KME-specific-types.erl @@ -0,0 +1,10502 @@ +%% Generated by the Erlang ASN.1 BER-compiler version:1.7 +%% Purpose: encoder and decoder to the types in mod KME-specific-types + +-module('KME-specific-types'). +-include("KME-specific-types.hrl"). +-define('RT_BER',asn1rt_ber_bin). +-asn1_info([{vsn,'1.7'}, + {module,'KME-specific-types'}, + {options,[{i,[47,104,111,109,101,47,113,117,97,120,47,101,114,108,47,97,115,110]},warnings,ber,errors,{cwd,[47,104,111,109,101,47,113,117,97,120,47,101,114,108,47,97,115,110]},{outdir,[47,104,111,109,101,47,113,117,97,120,47,101,114,108,47,97,115,110]},{i,[47,104,111,109,101,47,113,117,97,120,47,101,114,108,47,97,115,110,47,99,115,116,97]},{i,[46]},{i,[47,104,111,109,101,47,113,117,97,120,47,101,114,108,47,97,115,110,47,107,109,101]}]}]). + +-export([encoding_rule/0]). +-export([ +'enc_KmeDeviceLock'/2, +'enc_KmeTimeStamp'/2, +'enc_KmeSpeedDialRequest'/2, +'enc_KmeSpeedDial'/2, +'enc_KmeWakeUpTime'/2, +'enc_KmeWakeUpSchedule'/2, +'enc_KmeWakeUpInfo'/2, +'enc_KmeWakeupState'/2, +'enc_KmeAbsentMessage'/2, +'enc_KmeDnMode'/2, +'enc_KmeDayNightMode'/2, +'enc_KmeOgmPlayState'/2, +'enc_KmeForwardType'/2, +'enc_KmeSetForwardInfo'/2, +'enc_KmeFeatureList'/2, +'enc_KmeExtGroupEntry'/2, +'enc_KmeTrkGroupEntry'/2, +'enc_KmeExtMembers'/2, +'enc_KmeTrkMembers'/2, +'enc_KmeExtTrkGroupList'/2, +'enc_KmeGroupMembers'/2, +'enc_KmePckPagGroupList'/2, +'enc_KmeIcmGrpMembers'/2, +'enc_KmeIncomingGroupList'/2, +'enc_KmeDoorPhone'/2, +'enc_KmeVmGroup'/2, +'enc_KmeVmDtmfType'/2, +'enc_KmeVmGroupList'/2, +'enc_KmePsGroupList'/2, +'enc_KmeChangeExtNo'/2, +'enc_KmeChangeName'/2, +'enc_KmeDeviceCategory'/2, +'enc_KmeRequestedDevice'/2, +'enc_KmeChangedDeviceCategory'/2, +'enc_KmeDeviceStateList'/2, +'enc_KmeDeviceStateEntry'/2, +'enc_KmeDeviceState'/2, +'enc_KmeGroupType'/2, +'enc_KmePhoneProperty'/2, +'enc_KmeDeviceExtNo'/2, +'enc_KmeDeviceName'/2, +'enc_KmeFcoKeyInfo'/2, +'enc_KmeFcoKeyList'/2, +'enc_KmeExternalSensorList'/2, +'enc_KmeTenantSpeedDial'/2, +'enc_KmeDistributionMethod'/2, +'enc_KmePDFStart'/2, +'enc_KmePDFStop'/2, +'enc_KmePDFStatus'/2, +'enc_KmePDFSrvEvt'/2, +'enc_KmeSvmList'/2, +'enc_KmeExtName'/2, +'enc_NumberOfMsgPort'/2, +'enc_KmeDndOverride'/2, +'enc_KmeInteruptCall'/2, +'enc_KmeExternalFeatureAccess'/2, +'enc_KmeTempTollChange'/2, +'enc_KmeDoorOpen'/2, +'enc_KmeTwoWayRec'/2, +'enc_KmeCallBackInvokeReq'/2, +'enc_KmeCallBackInvokeRsp'/2, +'enc_CallBackNotification'/2, +'enc_KmeCallBackInvoke'/2, +'enc_KmePcRec'/2, +'enc_KmeDeviceAgentStatus'/2, +'enc_KmeDeviceCallStatus'/2, +'enc_KmeDeviceServiceStatus'/2, +'enc_KmeLineStatus'/2, +'enc_KmeLineStatusSegment'/2, +'enc_KmeStartDeviceMonitor'/2, +'enc_KmeStopDeviceMonitor'/2, +'enc_CallMonitorEvent'/2, +'enc_KmeBroadcastGroupList'/2, +'enc_KmeBroadcastGrpMembers'/2, +'enc_KmeAlterIfSrvEvt'/2, +'enc_KmeAlterIf'/2, +'enc_KmeIfAltered'/2, +'enc_IfVersion'/2, +'enc_KmeDeviceDataList'/2, +'enc_KmePdnGMembers'/2, +'enc_KmeHotelSrvEvt'/2, +'enc_KmeCheckStatusList'/2, +'enc_KmeRoomStatus'/2, +'enc_KmeCleanUpStatus'/2, +'enc_KmeGetSystemDataReq'/2, +'enc_KmeGetSystemDataRsp'/2, +'enc_KmeGetSystemData'/2, +'enc_KmeSetSystemData'/2, +'enc_KmeSystemDataChanged'/2, +'enc_KmeSystemDataLinkedReply'/2, +'enc_KmeGetSystemDataPosAck'/2, +'enc_KmeSystemCrossRefID'/2, +'enc_KmeLockSystemData'/2, +'enc_KmeSystemDataStatus'/2, +'enc_KmeSystemDataRevision'/2, +'enc_KmeGetSystemDataRevision'/2, +'enc_KmeRevisionType'/2, +'enc_ProgrammingEventOn'/2, +'enc_KmeSetProgrammingEventOn'/2, +'enc_KmeLocalAlerm'/2, +'enc_KmeTrunkId'/2, +'enc_KmeOtherDevice'/2, +'enc_KmeCdrConditionCode'/2, +'enc_KmeFeatureNumber'/2, +'enc_KmeProprietaryChars'/2, +'enc_KmeHoldType'/2, +'enc_KmeForcedAlerting'/2, +'enc_KmeDigitsReport'/2, +'enc_KmeOgmStatus'/2, +'enc_KmeWakeupResult'/2, +'enc_KmeUnconferenced'/2, +'enc_KmeTamEnded'/2, +'enc_KmePcRecEnded'/2, +'enc_KmeSwitchChannel'/2, +'enc_KmeFreeOgmPort'/2, +'enc_KmeCallControlSrvEvt'/2, +'enc_KmeDeviceStatus'/2, +'enc_KmeDeviceMonitor'/2, +'enc_KmeSystemData'/2, +'enc_KmeAdditionalData'/2, +'enc_KmePrivateEvent'/2, +'enc_KmeResourceControl'/2, +'enc_KmeOgmStart'/2, +'enc_KmeOgmStop'/2, +'enc_KmeGenericSrvEvt'/2, +'enc_KmeGenericServiceReq'/2, +'enc_KmeGenericServiceRsp'/2, +'enc_KmeGenericEvent'/2, +'enc_KMESpecificPrivateData'/2 +]). + +-export([ +'dec_KmeDeviceLock'/2, +'dec_KmeTimeStamp'/2, +'dec_KmeSpeedDialRequest'/2, +'dec_KmeSpeedDial'/2, +'dec_KmeWakeUpTime'/2, +'dec_KmeWakeUpSchedule'/2, +'dec_KmeWakeUpInfo'/2, +'dec_KmeWakeupState'/2, +'dec_KmeAbsentMessage'/2, +'dec_KmeDnMode'/2, +'dec_KmeDayNightMode'/2, +'dec_KmeOgmPlayState'/2, +'dec_KmeForwardType'/2, +'dec_KmeSetForwardInfo'/2, +'dec_KmeFeatureList'/2, +'dec_KmeExtGroupEntry'/2, +'dec_KmeTrkGroupEntry'/2, +'dec_KmeExtMembers'/2, +'dec_KmeTrkMembers'/2, +'dec_KmeExtTrkGroupList'/2, +'dec_KmeGroupMembers'/2, +'dec_KmePckPagGroupList'/2, +'dec_KmeIcmGrpMembers'/2, +'dec_KmeIncomingGroupList'/2, +'dec_KmeDoorPhone'/2, +'dec_KmeVmGroup'/2, +'dec_KmeVmDtmfType'/2, +'dec_KmeVmGroupList'/2, +'dec_KmePsGroupList'/2, +'dec_KmeChangeExtNo'/2, +'dec_KmeChangeName'/2, +'dec_KmeDeviceCategory'/2, +'dec_KmeRequestedDevice'/2, +'dec_KmeChangedDeviceCategory'/2, +'dec_KmeDeviceStateList'/2, +'dec_KmeDeviceStateEntry'/2, +'dec_KmeDeviceState'/2, +'dec_KmeGroupType'/2, +'dec_KmePhoneProperty'/2, +'dec_KmeDeviceExtNo'/2, +'dec_KmeDeviceName'/2, +'dec_KmeFcoKeyInfo'/2, +'dec_KmeFcoKeyList'/2, +'dec_KmeExternalSensorList'/2, +'dec_KmeTenantSpeedDial'/2, +'dec_KmeDistributionMethod'/2, +'dec_KmePDFStart'/2, +'dec_KmePDFStop'/2, +'dec_KmePDFStatus'/2, +'dec_KmePDFSrvEvt'/2, +'dec_KmeSvmList'/2, +'dec_KmeExtName'/2, +'dec_NumberOfMsgPort'/2, +'dec_KmeDndOverride'/2, +'dec_KmeInteruptCall'/2, +'dec_KmeExternalFeatureAccess'/2, +'dec_KmeTempTollChange'/2, +'dec_KmeDoorOpen'/2, +'dec_KmeTwoWayRec'/2, +'dec_KmeCallBackInvokeReq'/2, +'dec_KmeCallBackInvokeRsp'/2, +'dec_CallBackNotification'/2, +'dec_KmeCallBackInvoke'/2, +'dec_KmePcRec'/2, +'dec_KmeDeviceAgentStatus'/2, +'dec_KmeDeviceCallStatus'/2, +'dec_KmeDeviceServiceStatus'/2, +'dec_KmeLineStatus'/2, +'dec_KmeLineStatusSegment'/2, +'dec_KmeStartDeviceMonitor'/2, +'dec_KmeStopDeviceMonitor'/2, +'dec_CallMonitorEvent'/2, +'dec_KmeBroadcastGroupList'/2, +'dec_KmeBroadcastGrpMembers'/2, +'dec_KmeAlterIfSrvEvt'/2, +'dec_KmeAlterIf'/2, +'dec_KmeIfAltered'/2, +'dec_IfVersion'/2, +'dec_KmeDeviceDataList'/2, +'dec_KmePdnGMembers'/2, +'dec_KmeHotelSrvEvt'/2, +'dec_KmeCheckStatusList'/2, +'dec_KmeRoomStatus'/2, +'dec_KmeCleanUpStatus'/2, +'dec_KmeGetSystemDataReq'/2, +'dec_KmeGetSystemDataRsp'/2, +'dec_KmeGetSystemData'/2, +'dec_KmeSetSystemData'/2, +'dec_KmeSystemDataChanged'/2, +'dec_KmeSystemDataLinkedReply'/2, +'dec_KmeGetSystemDataPosAck'/2, +'dec_KmeSystemCrossRefID'/2, +'dec_KmeLockSystemData'/2, +'dec_KmeSystemDataStatus'/2, +'dec_KmeSystemDataRevision'/2, +'dec_KmeGetSystemDataRevision'/2, +'dec_KmeRevisionType'/2, +'dec_ProgrammingEventOn'/2, +'dec_KmeSetProgrammingEventOn'/2, +'dec_KmeLocalAlerm'/2, +'dec_KmeTrunkId'/2, +'dec_KmeOtherDevice'/2, +'dec_KmeCdrConditionCode'/2, +'dec_KmeFeatureNumber'/2, +'dec_KmeProprietaryChars'/2, +'dec_KmeHoldType'/2, +'dec_KmeForcedAlerting'/2, +'dec_KmeDigitsReport'/2, +'dec_KmeOgmStatus'/2, +'dec_KmeWakeupResult'/2, +'dec_KmeUnconferenced'/2, +'dec_KmeTamEnded'/2, +'dec_KmePcRecEnded'/2, +'dec_KmeSwitchChannel'/2, +'dec_KmeFreeOgmPort'/2, +'dec_KmeCallControlSrvEvt'/2, +'dec_KmeDeviceStatus'/2, +'dec_KmeDeviceMonitor'/2, +'dec_KmeSystemData'/2, +'dec_KmeAdditionalData'/2, +'dec_KmePrivateEvent'/2, +'dec_KmeResourceControl'/2, +'dec_KmeOgmStart'/2, +'dec_KmeOgmStop'/2, +'dec_KmeGenericSrvEvt'/2, +'dec_KmeGenericServiceReq'/2, +'dec_KmeGenericServiceRsp'/2, +'dec_KmeGenericEvent'/2, +'dec_KMESpecificPrivateData'/2 +]). + +-export([ +'dec_KmeDeviceLock'/3, +'dec_KmeTimeStamp'/3, +'dec_KmeSpeedDialRequest'/3, +'dec_KmeSpeedDial'/3, +'dec_KmeWakeUpTime'/3, +'dec_KmeWakeUpSchedule'/3, +'dec_KmeWakeUpInfo'/3, +'dec_KmeWakeupState'/3, +'dec_KmeAbsentMessage'/3, +'dec_KmeDnMode'/3, +'dec_KmeDayNightMode'/3, +'dec_KmeOgmPlayState'/3, +'dec_KmeForwardType'/3, +'dec_KmeSetForwardInfo'/3, +'dec_KmeFeatureList'/3, +'dec_KmeExtGroupEntry'/3, +'dec_KmeTrkGroupEntry'/3, +'dec_KmeExtMembers'/3, +'dec_KmeTrkMembers'/3, +'dec_KmeExtTrkGroupList'/3, +'dec_KmeGroupMembers'/3, +'dec_KmePckPagGroupList'/3, +'dec_KmeIcmGrpMembers'/3, +'dec_KmeIncomingGroupList'/3, +'dec_KmeDoorPhone'/3, +'dec_KmeVmGroup'/3, +'dec_KmeVmDtmfType'/3, +'dec_KmeVmGroupList'/3, +'dec_KmePsGroupList'/3, +'dec_KmeChangeExtNo'/3, +'dec_KmeChangeName'/3, +'dec_KmeDeviceCategory'/3, +'dec_KmeRequestedDevice'/3, +'dec_KmeChangedDeviceCategory'/3, +'dec_KmeDeviceStateList'/3, +'dec_KmeDeviceStateEntry'/3, +'dec_KmeDeviceState'/3, +'dec_KmeGroupType'/3, +'dec_KmePhoneProperty'/3, +'dec_KmeDeviceExtNo'/3, +'dec_KmeDeviceName'/3, +'dec_KmeFcoKeyInfo'/3, +'dec_KmeFcoKeyList'/3, +'dec_KmeExternalSensorList'/3, +'dec_KmeTenantSpeedDial'/3, +'dec_KmeDistributionMethod'/3, +'dec_KmePDFStart'/3, +'dec_KmePDFStop'/3, +'dec_KmePDFStatus'/3, +'dec_KmePDFSrvEvt'/3, +'dec_KmeSvmList'/3, +'dec_KmeExtName'/3, +'dec_NumberOfMsgPort'/3, +'dec_KmeDndOverride'/3, +'dec_KmeInteruptCall'/3, +'dec_KmeExternalFeatureAccess'/3, +'dec_KmeTempTollChange'/3, +'dec_KmeDoorOpen'/3, +'dec_KmeTwoWayRec'/3, +'dec_KmeCallBackInvokeReq'/3, +'dec_KmeCallBackInvokeRsp'/3, +'dec_CallBackNotification'/3, +'dec_KmeCallBackInvoke'/3, +'dec_KmePcRec'/3, +'dec_KmeDeviceAgentStatus'/3, +'dec_KmeDeviceCallStatus'/3, +'dec_KmeDeviceServiceStatus'/3, +'dec_KmeLineStatus'/3, +'dec_KmeLineStatusSegment'/3, +'dec_KmeStartDeviceMonitor'/3, +'dec_KmeStopDeviceMonitor'/3, +'dec_CallMonitorEvent'/3, +'dec_KmeBroadcastGroupList'/3, +'dec_KmeBroadcastGrpMembers'/3, +'dec_KmeAlterIfSrvEvt'/3, +'dec_KmeAlterIf'/3, +'dec_KmeIfAltered'/3, +'dec_IfVersion'/3, +'dec_KmeDeviceDataList'/3, +'dec_KmePdnGMembers'/3, +'dec_KmeHotelSrvEvt'/3, +'dec_KmeCheckStatusList'/3, +'dec_KmeRoomStatus'/3, +'dec_KmeCleanUpStatus'/3, +'dec_KmeGetSystemDataReq'/3, +'dec_KmeGetSystemDataRsp'/3, +'dec_KmeGetSystemData'/3, +'dec_KmeSetSystemData'/3, +'dec_KmeSystemDataChanged'/3, +'dec_KmeSystemDataLinkedReply'/3, +'dec_KmeGetSystemDataPosAck'/3, +'dec_KmeSystemCrossRefID'/3, +'dec_KmeLockSystemData'/3, +'dec_KmeSystemDataStatus'/3, +'dec_KmeSystemDataRevision'/3, +'dec_KmeGetSystemDataRevision'/3, +'dec_KmeRevisionType'/3, +'dec_ProgrammingEventOn'/3, +'dec_KmeSetProgrammingEventOn'/3, +'dec_KmeLocalAlerm'/3, +'dec_KmeTrunkId'/3, +'dec_KmeOtherDevice'/3, +'dec_KmeCdrConditionCode'/3, +'dec_KmeFeatureNumber'/3, +'dec_KmeProprietaryChars'/3, +'dec_KmeHoldType'/3, +'dec_KmeForcedAlerting'/3, +'dec_KmeDigitsReport'/3, +'dec_KmeOgmStatus'/3, +'dec_KmeWakeupResult'/3, +'dec_KmeUnconferenced'/3, +'dec_KmeTamEnded'/3, +'dec_KmePcRecEnded'/3, +'dec_KmeSwitchChannel'/3, +'dec_KmeFreeOgmPort'/3, +'dec_KmeCallControlSrvEvt'/3, +'dec_KmeDeviceStatus'/3, +'dec_KmeDeviceMonitor'/3, +'dec_KmeSystemData'/3, +'dec_KmeAdditionalData'/3, +'dec_KmePrivateEvent'/3, +'dec_KmeResourceControl'/3, +'dec_KmeOgmStart'/3, +'dec_KmeOgmStop'/3, +'dec_KmeGenericSrvEvt'/3, +'dec_KmeGenericServiceReq'/3, +'dec_KmeGenericServiceRsp'/3, +'dec_KmeGenericEvent'/3, +'dec_KMESpecificPrivateData'/3 +]). + +-export([info/0]). + + +-export([encode/2,decode/2,encode_disp/2,decode_disp/2]). + +encoding_rule() -> + ber. + +encode(Type,Data) -> +case catch encode_disp(Type,Data) of + {'EXIT',{error,Reason}} -> + {error,Reason}; + {'EXIT',Reason} -> + {error,{asn1,Reason}}; + {Bytes,_Len} -> + {ok,wrap_encode(Bytes)}; + Bytes -> + {ok,wrap_encode(Bytes)} +end. + +decode(Type,Data) -> +case catch decode_disp(Type,wrap_decode(Data)) of + {'EXIT',{error,Reason}} -> + {error,Reason}; + {'EXIT',Reason} -> + {error,{asn1,Reason}}; + {X,_Rest} -> + {ok,X}; + {X,_Rest,_Len} -> + {ok,X} +end. + +encode_disp('KmeDeviceLock',Data) -> 'enc_KmeDeviceLock'(Data,[]); +encode_disp('KmeTimeStamp',Data) -> 'enc_KmeTimeStamp'(Data,[]); +encode_disp('KmeSpeedDialRequest',Data) -> 'enc_KmeSpeedDialRequest'(Data,[]); +encode_disp('KmeSpeedDial',Data) -> 'enc_KmeSpeedDial'(Data,[]); +encode_disp('KmeWakeUpTime',Data) -> 'enc_KmeWakeUpTime'(Data,[]); +encode_disp('KmeWakeUpSchedule',Data) -> 'enc_KmeWakeUpSchedule'(Data,[]); +encode_disp('KmeWakeUpInfo',Data) -> 'enc_KmeWakeUpInfo'(Data,[]); +encode_disp('KmeWakeupState',Data) -> 'enc_KmeWakeupState'(Data,[]); +encode_disp('KmeAbsentMessage',Data) -> 'enc_KmeAbsentMessage'(Data,[]); +encode_disp('KmeDnMode',Data) -> 'enc_KmeDnMode'(Data,[]); +encode_disp('KmeDayNightMode',Data) -> 'enc_KmeDayNightMode'(Data,[]); +encode_disp('KmeOgmPlayState',Data) -> 'enc_KmeOgmPlayState'(Data,[]); +encode_disp('KmeForwardType',Data) -> 'enc_KmeForwardType'(Data,[]); +encode_disp('KmeSetForwardInfo',Data) -> 'enc_KmeSetForwardInfo'(Data,[]); +encode_disp('KmeFeatureList',Data) -> 'enc_KmeFeatureList'(Data,[]); +encode_disp('KmeExtGroupEntry',Data) -> 'enc_KmeExtGroupEntry'(Data,[]); +encode_disp('KmeTrkGroupEntry',Data) -> 'enc_KmeTrkGroupEntry'(Data,[]); +encode_disp('KmeExtMembers',Data) -> 'enc_KmeExtMembers'(Data,[]); +encode_disp('KmeTrkMembers',Data) -> 'enc_KmeTrkMembers'(Data,[]); +encode_disp('KmeExtTrkGroupList',Data) -> 'enc_KmeExtTrkGroupList'(Data,[]); +encode_disp('KmeGroupMembers',Data) -> 'enc_KmeGroupMembers'(Data,[]); +encode_disp('KmePckPagGroupList',Data) -> 'enc_KmePckPagGroupList'(Data,[]); +encode_disp('KmeIcmGrpMembers',Data) -> 'enc_KmeIcmGrpMembers'(Data,[]); +encode_disp('KmeIncomingGroupList',Data) -> 'enc_KmeIncomingGroupList'(Data,[]); +encode_disp('KmeDoorPhone',Data) -> 'enc_KmeDoorPhone'(Data,[]); +encode_disp('KmeVmGroup',Data) -> 'enc_KmeVmGroup'(Data,[]); +encode_disp('KmeVmDtmfType',Data) -> 'enc_KmeVmDtmfType'(Data,[]); +encode_disp('KmeVmGroupList',Data) -> 'enc_KmeVmGroupList'(Data,[]); +encode_disp('KmePsGroupList',Data) -> 'enc_KmePsGroupList'(Data,[]); +encode_disp('KmeChangeExtNo',Data) -> 'enc_KmeChangeExtNo'(Data,[]); +encode_disp('KmeChangeName',Data) -> 'enc_KmeChangeName'(Data,[]); +encode_disp('KmeDeviceCategory',Data) -> 'enc_KmeDeviceCategory'(Data,[]); +encode_disp('KmeRequestedDevice',Data) -> 'enc_KmeRequestedDevice'(Data,[]); +encode_disp('KmeChangedDeviceCategory',Data) -> 'enc_KmeChangedDeviceCategory'(Data,[]); +encode_disp('KmeDeviceStateList',Data) -> 'enc_KmeDeviceStateList'(Data,[]); +encode_disp('KmeDeviceStateEntry',Data) -> 'enc_KmeDeviceStateEntry'(Data,[]); +encode_disp('KmeDeviceState',Data) -> 'enc_KmeDeviceState'(Data,[]); +encode_disp('KmeGroupType',Data) -> 'enc_KmeGroupType'(Data,[]); +encode_disp('KmePhoneProperty',Data) -> 'enc_KmePhoneProperty'(Data,[]); +encode_disp('KmeDeviceExtNo',Data) -> 'enc_KmeDeviceExtNo'(Data,[]); +encode_disp('KmeDeviceName',Data) -> 'enc_KmeDeviceName'(Data,[]); +encode_disp('KmeFcoKeyInfo',Data) -> 'enc_KmeFcoKeyInfo'(Data,[]); +encode_disp('KmeFcoKeyList',Data) -> 'enc_KmeFcoKeyList'(Data,[]); +encode_disp('KmeExternalSensorList',Data) -> 'enc_KmeExternalSensorList'(Data,[]); +encode_disp('KmeTenantSpeedDial',Data) -> 'enc_KmeTenantSpeedDial'(Data,[]); +encode_disp('KmeDistributionMethod',Data) -> 'enc_KmeDistributionMethod'(Data,[]); +encode_disp('KmePDFStart',Data) -> 'enc_KmePDFStart'(Data,[]); +encode_disp('KmePDFStop',Data) -> 'enc_KmePDFStop'(Data,[]); +encode_disp('KmePDFStatus',Data) -> 'enc_KmePDFStatus'(Data,[]); +encode_disp('KmePDFSrvEvt',Data) -> 'enc_KmePDFSrvEvt'(Data,[]); +encode_disp('KmeSvmList',Data) -> 'enc_KmeSvmList'(Data,[]); +encode_disp('KmeExtName',Data) -> 'enc_KmeExtName'(Data,[]); +encode_disp('NumberOfMsgPort',Data) -> 'enc_NumberOfMsgPort'(Data,[]); +encode_disp('KmeDndOverride',Data) -> 'enc_KmeDndOverride'(Data,[]); +encode_disp('KmeInteruptCall',Data) -> 'enc_KmeInteruptCall'(Data,[]); +encode_disp('KmeExternalFeatureAccess',Data) -> 'enc_KmeExternalFeatureAccess'(Data,[]); +encode_disp('KmeTempTollChange',Data) -> 'enc_KmeTempTollChange'(Data,[]); +encode_disp('KmeDoorOpen',Data) -> 'enc_KmeDoorOpen'(Data,[]); +encode_disp('KmeTwoWayRec',Data) -> 'enc_KmeTwoWayRec'(Data,[]); +encode_disp('KmeCallBackInvokeReq',Data) -> 'enc_KmeCallBackInvokeReq'(Data,[]); +encode_disp('KmeCallBackInvokeRsp',Data) -> 'enc_KmeCallBackInvokeRsp'(Data,[]); +encode_disp('CallBackNotification',Data) -> 'enc_CallBackNotification'(Data,[]); +encode_disp('KmeCallBackInvoke',Data) -> 'enc_KmeCallBackInvoke'(Data,[]); +encode_disp('KmePcRec',Data) -> 'enc_KmePcRec'(Data,[]); +encode_disp('KmeDeviceAgentStatus',Data) -> 'enc_KmeDeviceAgentStatus'(Data,[]); +encode_disp('KmeDeviceCallStatus',Data) -> 'enc_KmeDeviceCallStatus'(Data,[]); +encode_disp('KmeDeviceServiceStatus',Data) -> 'enc_KmeDeviceServiceStatus'(Data,[]); +encode_disp('KmeLineStatus',Data) -> 'enc_KmeLineStatus'(Data,[]); +encode_disp('KmeLineStatusSegment',Data) -> 'enc_KmeLineStatusSegment'(Data,[]); +encode_disp('KmeStartDeviceMonitor',Data) -> 'enc_KmeStartDeviceMonitor'(Data,[]); +encode_disp('KmeStopDeviceMonitor',Data) -> 'enc_KmeStopDeviceMonitor'(Data,[]); +encode_disp('CallMonitorEvent',Data) -> 'enc_CallMonitorEvent'(Data,[]); +encode_disp('KmeBroadcastGroupList',Data) -> 'enc_KmeBroadcastGroupList'(Data,[]); +encode_disp('KmeBroadcastGrpMembers',Data) -> 'enc_KmeBroadcastGrpMembers'(Data,[]); +encode_disp('KmeAlterIfSrvEvt',Data) -> 'enc_KmeAlterIfSrvEvt'(Data,[]); +encode_disp('KmeAlterIf',Data) -> 'enc_KmeAlterIf'(Data,[]); +encode_disp('KmeIfAltered',Data) -> 'enc_KmeIfAltered'(Data,[]); +encode_disp('IfVersion',Data) -> 'enc_IfVersion'(Data,[]); +encode_disp('KmeDeviceDataList',Data) -> 'enc_KmeDeviceDataList'(Data,[]); +encode_disp('KmePdnGMembers',Data) -> 'enc_KmePdnGMembers'(Data,[]); +encode_disp('KmeHotelSrvEvt',Data) -> 'enc_KmeHotelSrvEvt'(Data,[]); +encode_disp('KmeCheckStatusList',Data) -> 'enc_KmeCheckStatusList'(Data,[]); +encode_disp('KmeRoomStatus',Data) -> 'enc_KmeRoomStatus'(Data,[]); +encode_disp('KmeCleanUpStatus',Data) -> 'enc_KmeCleanUpStatus'(Data,[]); +encode_disp('KmeGetSystemDataReq',Data) -> 'enc_KmeGetSystemDataReq'(Data,[]); +encode_disp('KmeGetSystemDataRsp',Data) -> 'enc_KmeGetSystemDataRsp'(Data,[]); +encode_disp('KmeGetSystemData',Data) -> 'enc_KmeGetSystemData'(Data,[]); +encode_disp('KmeSetSystemData',Data) -> 'enc_KmeSetSystemData'(Data,[]); +encode_disp('KmeSystemDataChanged',Data) -> 'enc_KmeSystemDataChanged'(Data,[]); +encode_disp('KmeSystemDataLinkedReply',Data) -> 'enc_KmeSystemDataLinkedReply'(Data,[]); +encode_disp('KmeGetSystemDataPosAck',Data) -> 'enc_KmeGetSystemDataPosAck'(Data,[]); +encode_disp('KmeSystemCrossRefID',Data) -> 'enc_KmeSystemCrossRefID'(Data,[]); +encode_disp('KmeLockSystemData',Data) -> 'enc_KmeLockSystemData'(Data,[]); +encode_disp('KmeSystemDataStatus',Data) -> 'enc_KmeSystemDataStatus'(Data,[]); +encode_disp('KmeSystemDataRevision',Data) -> 'enc_KmeSystemDataRevision'(Data,[]); +encode_disp('KmeGetSystemDataRevision',Data) -> 'enc_KmeGetSystemDataRevision'(Data,[]); +encode_disp('KmeRevisionType',Data) -> 'enc_KmeRevisionType'(Data,[]); +encode_disp('ProgrammingEventOn',Data) -> 'enc_ProgrammingEventOn'(Data,[]); +encode_disp('KmeSetProgrammingEventOn',Data) -> 'enc_KmeSetProgrammingEventOn'(Data,[]); +encode_disp('KmeLocalAlerm',Data) -> 'enc_KmeLocalAlerm'(Data,[]); +encode_disp('KmeTrunkId',Data) -> 'enc_KmeTrunkId'(Data,[]); +encode_disp('KmeOtherDevice',Data) -> 'enc_KmeOtherDevice'(Data,[]); +encode_disp('KmeCdrConditionCode',Data) -> 'enc_KmeCdrConditionCode'(Data,[]); +encode_disp('KmeFeatureNumber',Data) -> 'enc_KmeFeatureNumber'(Data,[]); +encode_disp('KmeProprietaryChars',Data) -> 'enc_KmeProprietaryChars'(Data,[]); +encode_disp('KmeHoldType',Data) -> 'enc_KmeHoldType'(Data,[]); +encode_disp('KmeForcedAlerting',Data) -> 'enc_KmeForcedAlerting'(Data,[]); +encode_disp('KmeDigitsReport',Data) -> 'enc_KmeDigitsReport'(Data,[]); +encode_disp('KmeOgmStatus',Data) -> 'enc_KmeOgmStatus'(Data,[]); +encode_disp('KmeWakeupResult',Data) -> 'enc_KmeWakeupResult'(Data,[]); +encode_disp('KmeUnconferenced',Data) -> 'enc_KmeUnconferenced'(Data,[]); +encode_disp('KmeTamEnded',Data) -> 'enc_KmeTamEnded'(Data,[]); +encode_disp('KmePcRecEnded',Data) -> 'enc_KmePcRecEnded'(Data,[]); +encode_disp('KmeSwitchChannel',Data) -> 'enc_KmeSwitchChannel'(Data,[]); +encode_disp('KmeFreeOgmPort',Data) -> 'enc_KmeFreeOgmPort'(Data,[]); +encode_disp('KmeCallControlSrvEvt',Data) -> 'enc_KmeCallControlSrvEvt'(Data,[]); +encode_disp('KmeDeviceStatus',Data) -> 'enc_KmeDeviceStatus'(Data,[]); +encode_disp('KmeDeviceMonitor',Data) -> 'enc_KmeDeviceMonitor'(Data,[]); +encode_disp('KmeSystemData',Data) -> 'enc_KmeSystemData'(Data,[]); +encode_disp('KmeAdditionalData',Data) -> 'enc_KmeAdditionalData'(Data,[]); +encode_disp('KmePrivateEvent',Data) -> 'enc_KmePrivateEvent'(Data,[]); +encode_disp('KmeResourceControl',Data) -> 'enc_KmeResourceControl'(Data,[]); +encode_disp('KmeOgmStart',Data) -> 'enc_KmeOgmStart'(Data,[]); +encode_disp('KmeOgmStop',Data) -> 'enc_KmeOgmStop'(Data,[]); +encode_disp('KmeGenericSrvEvt',Data) -> 'enc_KmeGenericSrvEvt'(Data,[]); +encode_disp('KmeGenericServiceReq',Data) -> 'enc_KmeGenericServiceReq'(Data,[]); +encode_disp('KmeGenericServiceRsp',Data) -> 'enc_KmeGenericServiceRsp'(Data,[]); +encode_disp('KmeGenericEvent',Data) -> 'enc_KmeGenericEvent'(Data,[]); +encode_disp('KMESpecificPrivateData',Data) -> 'enc_KMESpecificPrivateData'(Data,[]); +encode_disp(Type,_Data) -> exit({error,{asn1,{undefined_type,Type}}}). + + +decode_disp('KmeDeviceLock',Data) -> 'dec_KmeDeviceLock'(Data,mandatory); +decode_disp('KmeTimeStamp',Data) -> 'dec_KmeTimeStamp'(Data,mandatory); +decode_disp('KmeSpeedDialRequest',Data) -> 'dec_KmeSpeedDialRequest'(Data,mandatory); +decode_disp('KmeSpeedDial',Data) -> 'dec_KmeSpeedDial'(Data,mandatory); +decode_disp('KmeWakeUpTime',Data) -> 'dec_KmeWakeUpTime'(Data,mandatory); +decode_disp('KmeWakeUpSchedule',Data) -> 'dec_KmeWakeUpSchedule'(Data,mandatory); +decode_disp('KmeWakeUpInfo',Data) -> 'dec_KmeWakeUpInfo'(Data,mandatory); +decode_disp('KmeWakeupState',Data) -> 'dec_KmeWakeupState'(Data,mandatory); +decode_disp('KmeAbsentMessage',Data) -> 'dec_KmeAbsentMessage'(Data,mandatory); +decode_disp('KmeDnMode',Data) -> 'dec_KmeDnMode'(Data,mandatory); +decode_disp('KmeDayNightMode',Data) -> 'dec_KmeDayNightMode'(Data,mandatory); +decode_disp('KmeOgmPlayState',Data) -> 'dec_KmeOgmPlayState'(Data,mandatory); +decode_disp('KmeForwardType',Data) -> 'dec_KmeForwardType'(Data,mandatory); +decode_disp('KmeSetForwardInfo',Data) -> 'dec_KmeSetForwardInfo'(Data,mandatory); +decode_disp('KmeFeatureList',Data) -> 'dec_KmeFeatureList'(Data,mandatory); +decode_disp('KmeExtGroupEntry',Data) -> 'dec_KmeExtGroupEntry'(Data,mandatory); +decode_disp('KmeTrkGroupEntry',Data) -> 'dec_KmeTrkGroupEntry'(Data,mandatory); +decode_disp('KmeExtMembers',Data) -> 'dec_KmeExtMembers'(Data,mandatory); +decode_disp('KmeTrkMembers',Data) -> 'dec_KmeTrkMembers'(Data,mandatory); +decode_disp('KmeExtTrkGroupList',Data) -> 'dec_KmeExtTrkGroupList'(Data,mandatory); +decode_disp('KmeGroupMembers',Data) -> 'dec_KmeGroupMembers'(Data,mandatory); +decode_disp('KmePckPagGroupList',Data) -> 'dec_KmePckPagGroupList'(Data,mandatory); +decode_disp('KmeIcmGrpMembers',Data) -> 'dec_KmeIcmGrpMembers'(Data,mandatory); +decode_disp('KmeIncomingGroupList',Data) -> 'dec_KmeIncomingGroupList'(Data,mandatory); +decode_disp('KmeDoorPhone',Data) -> 'dec_KmeDoorPhone'(Data,mandatory); +decode_disp('KmeVmGroup',Data) -> 'dec_KmeVmGroup'(Data,mandatory); +decode_disp('KmeVmDtmfType',Data) -> 'dec_KmeVmDtmfType'(Data,mandatory); +decode_disp('KmeVmGroupList',Data) -> 'dec_KmeVmGroupList'(Data,mandatory); +decode_disp('KmePsGroupList',Data) -> 'dec_KmePsGroupList'(Data,mandatory); +decode_disp('KmeChangeExtNo',Data) -> 'dec_KmeChangeExtNo'(Data,mandatory); +decode_disp('KmeChangeName',Data) -> 'dec_KmeChangeName'(Data,mandatory); +decode_disp('KmeDeviceCategory',Data) -> 'dec_KmeDeviceCategory'(Data,mandatory); +decode_disp('KmeRequestedDevice',Data) -> 'dec_KmeRequestedDevice'(Data,mandatory); +decode_disp('KmeChangedDeviceCategory',Data) -> 'dec_KmeChangedDeviceCategory'(Data,mandatory); +decode_disp('KmeDeviceStateList',Data) -> 'dec_KmeDeviceStateList'(Data,mandatory); +decode_disp('KmeDeviceStateEntry',Data) -> 'dec_KmeDeviceStateEntry'(Data,mandatory); +decode_disp('KmeDeviceState',Data) -> 'dec_KmeDeviceState'(Data,mandatory); +decode_disp('KmeGroupType',Data) -> 'dec_KmeGroupType'(Data,mandatory); +decode_disp('KmePhoneProperty',Data) -> 'dec_KmePhoneProperty'(Data,mandatory); +decode_disp('KmeDeviceExtNo',Data) -> 'dec_KmeDeviceExtNo'(Data,mandatory); +decode_disp('KmeDeviceName',Data) -> 'dec_KmeDeviceName'(Data,mandatory); +decode_disp('KmeFcoKeyInfo',Data) -> 'dec_KmeFcoKeyInfo'(Data,mandatory); +decode_disp('KmeFcoKeyList',Data) -> 'dec_KmeFcoKeyList'(Data,mandatory); +decode_disp('KmeExternalSensorList',Data) -> 'dec_KmeExternalSensorList'(Data,mandatory); +decode_disp('KmeTenantSpeedDial',Data) -> 'dec_KmeTenantSpeedDial'(Data,mandatory); +decode_disp('KmeDistributionMethod',Data) -> 'dec_KmeDistributionMethod'(Data,mandatory); +decode_disp('KmePDFStart',Data) -> 'dec_KmePDFStart'(Data,mandatory); +decode_disp('KmePDFStop',Data) -> 'dec_KmePDFStop'(Data,mandatory); +decode_disp('KmePDFStatus',Data) -> 'dec_KmePDFStatus'(Data,mandatory); +decode_disp('KmePDFSrvEvt',Data) -> 'dec_KmePDFSrvEvt'(Data,mandatory); +decode_disp('KmeSvmList',Data) -> 'dec_KmeSvmList'(Data,mandatory); +decode_disp('KmeExtName',Data) -> 'dec_KmeExtName'(Data,mandatory); +decode_disp('NumberOfMsgPort',Data) -> 'dec_NumberOfMsgPort'(Data,mandatory); +decode_disp('KmeDndOverride',Data) -> 'dec_KmeDndOverride'(Data,mandatory); +decode_disp('KmeInteruptCall',Data) -> 'dec_KmeInteruptCall'(Data,mandatory); +decode_disp('KmeExternalFeatureAccess',Data) -> 'dec_KmeExternalFeatureAccess'(Data,mandatory); +decode_disp('KmeTempTollChange',Data) -> 'dec_KmeTempTollChange'(Data,mandatory); +decode_disp('KmeDoorOpen',Data) -> 'dec_KmeDoorOpen'(Data,mandatory); +decode_disp('KmeTwoWayRec',Data) -> 'dec_KmeTwoWayRec'(Data,mandatory); +decode_disp('KmeCallBackInvokeReq',Data) -> 'dec_KmeCallBackInvokeReq'(Data,mandatory); +decode_disp('KmeCallBackInvokeRsp',Data) -> 'dec_KmeCallBackInvokeRsp'(Data,mandatory); +decode_disp('CallBackNotification',Data) -> 'dec_CallBackNotification'(Data,mandatory); +decode_disp('KmeCallBackInvoke',Data) -> 'dec_KmeCallBackInvoke'(Data,mandatory); +decode_disp('KmePcRec',Data) -> 'dec_KmePcRec'(Data,mandatory); +decode_disp('KmeDeviceAgentStatus',Data) -> 'dec_KmeDeviceAgentStatus'(Data,mandatory); +decode_disp('KmeDeviceCallStatus',Data) -> 'dec_KmeDeviceCallStatus'(Data,mandatory); +decode_disp('KmeDeviceServiceStatus',Data) -> 'dec_KmeDeviceServiceStatus'(Data,mandatory); +decode_disp('KmeLineStatus',Data) -> 'dec_KmeLineStatus'(Data,mandatory); +decode_disp('KmeLineStatusSegment',Data) -> 'dec_KmeLineStatusSegment'(Data,mandatory); +decode_disp('KmeStartDeviceMonitor',Data) -> 'dec_KmeStartDeviceMonitor'(Data,mandatory); +decode_disp('KmeStopDeviceMonitor',Data) -> 'dec_KmeStopDeviceMonitor'(Data,mandatory); +decode_disp('CallMonitorEvent',Data) -> 'dec_CallMonitorEvent'(Data,mandatory); +decode_disp('KmeBroadcastGroupList',Data) -> 'dec_KmeBroadcastGroupList'(Data,mandatory); +decode_disp('KmeBroadcastGrpMembers',Data) -> 'dec_KmeBroadcastGrpMembers'(Data,mandatory); +decode_disp('KmeAlterIfSrvEvt',Data) -> 'dec_KmeAlterIfSrvEvt'(Data,mandatory); +decode_disp('KmeAlterIf',Data) -> 'dec_KmeAlterIf'(Data,mandatory); +decode_disp('KmeIfAltered',Data) -> 'dec_KmeIfAltered'(Data,mandatory); +decode_disp('IfVersion',Data) -> 'dec_IfVersion'(Data,mandatory); +decode_disp('KmeDeviceDataList',Data) -> 'dec_KmeDeviceDataList'(Data,mandatory); +decode_disp('KmePdnGMembers',Data) -> 'dec_KmePdnGMembers'(Data,mandatory); +decode_disp('KmeHotelSrvEvt',Data) -> 'dec_KmeHotelSrvEvt'(Data,mandatory); +decode_disp('KmeCheckStatusList',Data) -> 'dec_KmeCheckStatusList'(Data,mandatory); +decode_disp('KmeRoomStatus',Data) -> 'dec_KmeRoomStatus'(Data,mandatory); +decode_disp('KmeCleanUpStatus',Data) -> 'dec_KmeCleanUpStatus'(Data,mandatory); +decode_disp('KmeGetSystemDataReq',Data) -> 'dec_KmeGetSystemDataReq'(Data,mandatory); +decode_disp('KmeGetSystemDataRsp',Data) -> 'dec_KmeGetSystemDataRsp'(Data,mandatory); +decode_disp('KmeGetSystemData',Data) -> 'dec_KmeGetSystemData'(Data,mandatory); +decode_disp('KmeSetSystemData',Data) -> 'dec_KmeSetSystemData'(Data,mandatory); +decode_disp('KmeSystemDataChanged',Data) -> 'dec_KmeSystemDataChanged'(Data,mandatory); +decode_disp('KmeSystemDataLinkedReply',Data) -> 'dec_KmeSystemDataLinkedReply'(Data,mandatory); +decode_disp('KmeGetSystemDataPosAck',Data) -> 'dec_KmeGetSystemDataPosAck'(Data,mandatory); +decode_disp('KmeSystemCrossRefID',Data) -> 'dec_KmeSystemCrossRefID'(Data,mandatory); +decode_disp('KmeLockSystemData',Data) -> 'dec_KmeLockSystemData'(Data,mandatory); +decode_disp('KmeSystemDataStatus',Data) -> 'dec_KmeSystemDataStatus'(Data,mandatory); +decode_disp('KmeSystemDataRevision',Data) -> 'dec_KmeSystemDataRevision'(Data,mandatory); +decode_disp('KmeGetSystemDataRevision',Data) -> 'dec_KmeGetSystemDataRevision'(Data,mandatory); +decode_disp('KmeRevisionType',Data) -> 'dec_KmeRevisionType'(Data,mandatory); +decode_disp('ProgrammingEventOn',Data) -> 'dec_ProgrammingEventOn'(Data,mandatory); +decode_disp('KmeSetProgrammingEventOn',Data) -> 'dec_KmeSetProgrammingEventOn'(Data,mandatory); +decode_disp('KmeLocalAlerm',Data) -> 'dec_KmeLocalAlerm'(Data,mandatory); +decode_disp('KmeTrunkId',Data) -> 'dec_KmeTrunkId'(Data,mandatory); +decode_disp('KmeOtherDevice',Data) -> 'dec_KmeOtherDevice'(Data,mandatory); +decode_disp('KmeCdrConditionCode',Data) -> 'dec_KmeCdrConditionCode'(Data,mandatory); +decode_disp('KmeFeatureNumber',Data) -> 'dec_KmeFeatureNumber'(Data,mandatory); +decode_disp('KmeProprietaryChars',Data) -> 'dec_KmeProprietaryChars'(Data,mandatory); +decode_disp('KmeHoldType',Data) -> 'dec_KmeHoldType'(Data,mandatory); +decode_disp('KmeForcedAlerting',Data) -> 'dec_KmeForcedAlerting'(Data,mandatory); +decode_disp('KmeDigitsReport',Data) -> 'dec_KmeDigitsReport'(Data,mandatory); +decode_disp('KmeOgmStatus',Data) -> 'dec_KmeOgmStatus'(Data,mandatory); +decode_disp('KmeWakeupResult',Data) -> 'dec_KmeWakeupResult'(Data,mandatory); +decode_disp('KmeUnconferenced',Data) -> 'dec_KmeUnconferenced'(Data,mandatory); +decode_disp('KmeTamEnded',Data) -> 'dec_KmeTamEnded'(Data,mandatory); +decode_disp('KmePcRecEnded',Data) -> 'dec_KmePcRecEnded'(Data,mandatory); +decode_disp('KmeSwitchChannel',Data) -> 'dec_KmeSwitchChannel'(Data,mandatory); +decode_disp('KmeFreeOgmPort',Data) -> 'dec_KmeFreeOgmPort'(Data,mandatory); +decode_disp('KmeCallControlSrvEvt',Data) -> 'dec_KmeCallControlSrvEvt'(Data,mandatory); +decode_disp('KmeDeviceStatus',Data) -> 'dec_KmeDeviceStatus'(Data,mandatory); +decode_disp('KmeDeviceMonitor',Data) -> 'dec_KmeDeviceMonitor'(Data,mandatory); +decode_disp('KmeSystemData',Data) -> 'dec_KmeSystemData'(Data,mandatory); +decode_disp('KmeAdditionalData',Data) -> 'dec_KmeAdditionalData'(Data,mandatory); +decode_disp('KmePrivateEvent',Data) -> 'dec_KmePrivateEvent'(Data,mandatory); +decode_disp('KmeResourceControl',Data) -> 'dec_KmeResourceControl'(Data,mandatory); +decode_disp('KmeOgmStart',Data) -> 'dec_KmeOgmStart'(Data,mandatory); +decode_disp('KmeOgmStop',Data) -> 'dec_KmeOgmStop'(Data,mandatory); +decode_disp('KmeGenericSrvEvt',Data) -> 'dec_KmeGenericSrvEvt'(Data,mandatory); +decode_disp('KmeGenericServiceReq',Data) -> 'dec_KmeGenericServiceReq'(Data,mandatory); +decode_disp('KmeGenericServiceRsp',Data) -> 'dec_KmeGenericServiceRsp'(Data,mandatory); +decode_disp('KmeGenericEvent',Data) -> 'dec_KmeGenericEvent'(Data,mandatory); +decode_disp('KMESpecificPrivateData',Data) -> 'dec_KMESpecificPrivateData'(Data,mandatory); +decode_disp(Type,_Data) -> exit({error,{asn1,{undefined_type,Type}}}). + + + +wrap_encode(Bytes) when is_list(Bytes) -> + binary_to_list(list_to_binary(Bytes)); +wrap_encode(Bytes) when is_binary(Bytes) -> + binary_to_list(Bytes); +wrap_encode(Bytes) -> Bytes. + +wrap_decode(Bytes) when is_list(Bytes) -> + list_to_binary(Bytes); +wrap_decode(Bytes) -> Bytes. + + +info() -> + case ?MODULE:module_info() of + MI when is_list(MI) -> + case lists:keysearch(attributes,1,MI) of + {value,{_,Attributes}} when is_list(Attributes) -> + case lists:keysearch(asn1_info,1,Attributes) of + {value,{_,Info}} when is_list(Info) -> + Info; + _ -> + [] + end; + _ -> + [] + end + end. + + +%%================================ +%% KmeDeviceLock +%%================================ + +'enc_KmeDeviceLock'({'KmeDeviceLock',Val}, TagIn) -> + 'enc_KmeDeviceLock'(Val, TagIn); + +'enc_KmeDeviceLock'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +lock -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +unlock -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeDeviceLock'(Bytes, OptOrMand) -> + 'dec_KmeDeviceLock'(Bytes, OptOrMand, []). + +'dec_KmeDeviceLock'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{lock,0},{unlock,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeTimeStamp +%%================================ + +'enc_KmeTimeStamp'({'KmeTimeStamp',Val}, TagIn) -> + 'enc_KmeTimeStamp'(Val, TagIn); + +'enc_KmeTimeStamp'(Val, TagIn) -> +?RT_BER:encode_generalized_time([], Val, TagIn ++ []). + + +'dec_KmeTimeStamp'(Bytes, OptOrMand) -> + 'dec_KmeTimeStamp'(Bytes, OptOrMand, []). + +'dec_KmeTimeStamp'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_generalized_time(Bytes,[],TagIn++[], no_length, OptOrMand). + + + +%%================================ +%% KmeSpeedDialRequest +%%================================ +'enc_KmeSpeedDialRequest'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,startSerialNo), []), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_integer([], ?RT_BER:cindex(3,Val,number), []), + +%%------------------------------------------------- +%% attribute number 3 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,tenantNo) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(4,Val,tenantNo), [{tag,128,0,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeSpeedDialRequest'(Bytes, OptOrMand) -> + 'dec_KmeSpeedDialRequest'(Bytes, OptOrMand, []). + +'dec_KmeSpeedDialRequest'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,{0,999},[], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_integer(Bytes3,{1,1000},[], mandatory), + +%%------------------------------------------------- +%% attribute number 3 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<2:2,_:1,0:5,_/binary>> -> +?RT_BER:decode_integer(Bytes4,[],[{tag,128,0,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmeSpeedDialRequest', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. + + +%%================================ +%% KmeSpeedDial +%%================================ + +'enc_KmeSpeedDial'({'KmeSpeedDial',Val}, TagIn) -> + 'enc_KmeSpeedDial'(Val, TagIn); + +'enc_KmeSpeedDial'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeSpeedDial_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeSpeedDial_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeSpeedDial_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeSpeedDial_SEQOF'(H, []), + 'enc_KmeSpeedDial_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeSpeedDial_SEQOF +%%================================ +'enc_KmeSpeedDial_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,serialNumber), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,registeredDigits) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(3,Val,registeredDigits), 22, [{tag,128,1,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,callerName) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeSpeedDial_SEQOF_callerName'(?RT_BER:cindex(4,Val,callerName), [{tag,128,2,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeSpeedDial_SEQOF_callerName +%%================================ + +'enc_KmeSpeedDial_SEQOF_callerName'({'KmeSpeedDial_SEQOF_callerName',Val}, TagIn) -> + 'enc_KmeSpeedDial_SEQOF_callerName'(Val, TagIn); + +'enc_KmeSpeedDial_SEQOF_callerName'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeSpeedDial_SEQOF_callerName'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,20},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,40},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeSpeedDial_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,{0,999},[{tag,128,0,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<2:2,_:1,1:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes3,{1,32},22,[{tag,128,1,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<2:2,_:1,2:5,_/binary>> -> +'dec_KmeSpeedDial_SEQOF_callerName'(Bytes4, opt_or_default, [{tag,128,2,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmeSpeedDial_SEQOF', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. + + +'dec_KmeSpeedDial'(Bytes, OptOrMand) -> + 'dec_KmeSpeedDial'(Bytes, OptOrMand, []). + +'dec_KmeSpeedDial'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeSpeedDial_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeWakeUpTime +%%================================ +'enc_KmeWakeUpTime'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type IA5String +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(2,Val,hour), 22, [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(3,Val,minute), 22, [{tag,128,1,'EXPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeWakeUpTime'(Bytes, OptOrMand) -> + 'dec_KmeWakeUpTime'(Bytes, OptOrMand, []). + +'dec_KmeWakeUpTime'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type IA5String +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_restricted_string(Bytes2,2,22,[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_restricted_string(Bytes3,2,22,[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeWakeUpTime', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeWakeUpSchedule +%%================================ + +'enc_KmeWakeUpSchedule'({'KmeWakeUpSchedule',Val}, TagIn) -> + 'enc_KmeWakeUpSchedule'(Val, TagIn); + +'enc_KmeWakeUpSchedule'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +noSchedule -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +once -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +everyday -> ?RT_BER:encode_enumerated(2,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeWakeUpSchedule'(Bytes, OptOrMand) -> + 'dec_KmeWakeUpSchedule'(Bytes, OptOrMand, []). + +'dec_KmeWakeUpSchedule'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{noSchedule,0},{once,1},{everyday,2}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeWakeUpInfo +%%================================ +'enc_KmeWakeUpInfo'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External KME-specific-types:KmeWakeUpTime OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case ?RT_BER:cindex(2,Val,time) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeWakeUpTime'(?RT_BER:cindex(2,Val,time), [{tag,128,0,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {EncBytes2,EncLen2} = case (case ?RT_BER:cindex(3,Val,schedule) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(3,Val,schedule) end) of +noSchedule -> ?RT_BER:encode_enumerated(0,[{tag,128,1,'EXPLICIT',32}]); +once -> ?RT_BER:encode_enumerated(1,[{tag,128,1,'EXPLICIT',32}]); +everyday -> ?RT_BER:encode_enumerated(2,[{tag,128,1,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeWakeUpInfo'(Bytes, OptOrMand) -> + 'dec_KmeWakeUpInfo'(Bytes, OptOrMand, []). + +'dec_KmeWakeUpInfo'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External KME-specific-types:KmeWakeUpTime OPTIONAL +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = case Bytes2 of +<<2:2,_:1,0:5,_/binary>> -> +'dec_KmeWakeUpTime'(Bytes2, opt_or_default, [{tag,128,0,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes2, 0 } +end, + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_enumerated(Bytes3,[],[{noSchedule,0},{once,1},{everyday,2}],[{tag,128,1,'EXPLICIT',32}], mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeWakeUpInfo', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeWakeupState +%%================================ + +'enc_KmeWakeupState'({'KmeWakeupState',Val}, TagIn) -> + 'enc_KmeWakeupState'(Val, TagIn); + +'enc_KmeWakeupState'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +answered -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +noAnswer -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeWakeupState'(Bytes, OptOrMand) -> + 'dec_KmeWakeupState'(Bytes, OptOrMand, []). + +'dec_KmeWakeupState'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{answered,0},{noAnswer,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeAbsentMessage +%%================================ + +'enc_KmeAbsentMessage'({'KmeAbsentMessage',Val}, TagIn) -> + 'enc_KmeAbsentMessage'(Val, TagIn); + +'enc_KmeAbsentMessage'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeAbsentMessage'(Bytes, OptOrMand) -> + 'dec_KmeAbsentMessage'(Bytes, OptOrMand, []). + +'dec_KmeAbsentMessage'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{0,16},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{0,32},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeDnMode +%%================================ + +'enc_KmeDnMode'({'KmeDnMode',Val}, TagIn) -> + 'enc_KmeDnMode'(Val, TagIn); + +'enc_KmeDnMode'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +day -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +lunch -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +break -> ?RT_BER:encode_enumerated(2,TagIn ++ []); +night -> ?RT_BER:encode_enumerated(3,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeDnMode'(Bytes, OptOrMand) -> + 'dec_KmeDnMode'(Bytes, OptOrMand, []). + +'dec_KmeDnMode'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{day,0},{lunch,1},{break,2},{night,3}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeDayNightMode +%%================================ + +'enc_KmeDayNightMode'({'KmeDayNightMode',Val}, TagIn) -> + 'enc_KmeDayNightMode'(Val, TagIn); + +'enc_KmeDayNightMode'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeDayNightMode_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeDayNightMode_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeDayNightMode_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeDayNightMode_SEQOF'(H, []), + 'enc_KmeDayNightMode_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeDayNightMode_SEQOF +%%================================ +'enc_KmeDayNightMode_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,tenantNo), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {EncBytes2,EncLen2} = case (case ?RT_BER:cindex(3,Val,mode) of {_,Enumval2}->Enumval2;_->?RT_BER:cindex(3,Val,mode) end) of +day -> ?RT_BER:encode_enumerated(0,[{tag,128,1,'EXPLICIT',32}]); +lunch -> ?RT_BER:encode_enumerated(1,[{tag,128,1,'EXPLICIT',32}]); +break -> ?RT_BER:encode_enumerated(2,[{tag,128,1,'EXPLICIT',32}]); +night -> ?RT_BER:encode_enumerated(3,[{tag,128,1,'EXPLICIT',32}]); +Enumval3 -> exit({error,{asn1, {enumerated_not_in_range,Enumval3}}}) +end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). +'dec_KmeDayNightMode_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[{tag,128,0,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_enumerated(Bytes3,[],[{day,0},{lunch,1},{break,2},{night,3}],[{tag,128,1,'EXPLICIT',32}], mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeDayNightMode_SEQOF', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +'dec_KmeDayNightMode'(Bytes, OptOrMand) -> + 'dec_KmeDayNightMode'(Bytes, OptOrMand, []). + +'dec_KmeDayNightMode'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeDayNightMode_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeOgmPlayState +%%================================ + +'enc_KmeOgmPlayState'({'KmeOgmPlayState',Val}, TagIn) -> + 'enc_KmeOgmPlayState'(Val, TagIn); + +'enc_KmeOgmPlayState'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +started -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +ended -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeOgmPlayState'(Bytes, OptOrMand) -> + 'dec_KmeOgmPlayState'(Bytes, OptOrMand, []). + +'dec_KmeOgmPlayState'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{started,0},{ended,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeForwardType +%%================================ + +'enc_KmeForwardType'({'KmeForwardType',Val}, TagIn) -> + 'enc_KmeForwardType'(Val, TagIn); + +'enc_KmeForwardType'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +forwardImmediate -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +forwardBusy -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +forwardNoAns -> ?RT_BER:encode_enumerated(2,TagIn ++ []); +forwardBusyInt -> ?RT_BER:encode_enumerated(3,TagIn ++ []); +forwardBusyExt -> ?RT_BER:encode_enumerated(4,TagIn ++ []); +forwardNoAnsInt -> ?RT_BER:encode_enumerated(5,TagIn ++ []); +forwardNoAnsExt -> ?RT_BER:encode_enumerated(6,TagIn ++ []); +forwardImmInt -> ?RT_BER:encode_enumerated(7,TagIn ++ []); +forwardImmExt -> ?RT_BER:encode_enumerated(8,TagIn ++ []); +forwardDND -> ?RT_BER:encode_enumerated(9,TagIn ++ []); +forwardDNDInt -> ?RT_BER:encode_enumerated(10,TagIn ++ []); +forwardDNDExt -> ?RT_BER:encode_enumerated(11,TagIn ++ []); +forwardBusyNoAnswer -> ?RT_BER:encode_enumerated(12,TagIn ++ []); +forwardBusyNoAnswerInt -> ?RT_BER:encode_enumerated(13,TagIn ++ []); +forwardBusyNoAnswerExt -> ?RT_BER:encode_enumerated(14,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeForwardType'(Bytes, OptOrMand) -> + 'dec_KmeForwardType'(Bytes, OptOrMand, []). + +'dec_KmeForwardType'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{forwardImmediate,0},{forwardBusy,1},{forwardNoAns,2},{forwardBusyInt,3},{forwardBusyExt,4},{forwardNoAnsInt,5},{forwardNoAnsExt,6},{forwardImmInt,7},{forwardImmExt,8},{forwardDND,9},{forwardDNDInt,10},{forwardDNDExt,11},{forwardBusyNoAnswer,12},{forwardBusyNoAnswerInt,13},{forwardBusyNoAnswerExt,14}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeSetForwardInfo +%%================================ +'enc_KmeSetForwardInfo'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type ENUMERATED +%%------------------------------------------------- + {EncBytes1,EncLen1} = case (case ?RT_BER:cindex(2,Val,forwardingType) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(2,Val,forwardingType) end) of +forwardImmediate -> ?RT_BER:encode_enumerated(0,[{tag,128,0,'EXPLICIT',32}]); +forwardBusy -> ?RT_BER:encode_enumerated(1,[{tag,128,0,'EXPLICIT',32}]); +forwardNoAns -> ?RT_BER:encode_enumerated(2,[{tag,128,0,'EXPLICIT',32}]); +forwardBusyInt -> ?RT_BER:encode_enumerated(3,[{tag,128,0,'EXPLICIT',32}]); +forwardBusyExt -> ?RT_BER:encode_enumerated(4,[{tag,128,0,'EXPLICIT',32}]); +forwardNoAnsInt -> ?RT_BER:encode_enumerated(5,[{tag,128,0,'EXPLICIT',32}]); +forwardNoAnsExt -> ?RT_BER:encode_enumerated(6,[{tag,128,0,'EXPLICIT',32}]); +forwardImmInt -> ?RT_BER:encode_enumerated(7,[{tag,128,0,'EXPLICIT',32}]); +forwardImmExt -> ?RT_BER:encode_enumerated(8,[{tag,128,0,'EXPLICIT',32}]); +forwardDND -> ?RT_BER:encode_enumerated(9,[{tag,128,0,'EXPLICIT',32}]); +forwardDNDInt -> ?RT_BER:encode_enumerated(10,[{tag,128,0,'EXPLICIT',32}]); +forwardDNDExt -> ?RT_BER:encode_enumerated(11,[{tag,128,0,'EXPLICIT',32}]); +forwardBusyNoAnswer -> ?RT_BER:encode_enumerated(12,[{tag,128,0,'EXPLICIT',32}]); +forwardBusyNoAnswerInt -> ?RT_BER:encode_enumerated(13,[{tag,128,0,'EXPLICIT',32}]); +forwardBusyNoAnswerExt -> ?RT_BER:encode_enumerated(14,[{tag,128,0,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + +%%------------------------------------------------- +%% attribute number 2 with type BOOLEAN +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_boolean(?RT_BER:cindex(3,Val,activateForward), [{tag,128,1,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 3 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,forwardDN) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(4,Val,forwardDN), [{tag,128,2,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeSetForwardInfo'(Bytes, OptOrMand) -> + 'dec_KmeSetForwardInfo'(Bytes, OptOrMand, []). + +'dec_KmeSetForwardInfo'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type ENUMERATED +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_enumerated(Bytes2,[],[{forwardImmediate,0},{forwardBusy,1},{forwardNoAns,2},{forwardBusyInt,3},{forwardBusyExt,4},{forwardNoAnsInt,5},{forwardNoAnsExt,6},{forwardImmInt,7},{forwardImmExt,8},{forwardDND,9},{forwardDNDInt,10},{forwardDNDExt,11},{forwardBusyNoAnswer,12},{forwardBusyNoAnswerInt,13},{forwardBusyNoAnswerExt,14}],[{tag,128,0,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type BOOLEAN +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_boolean(Bytes3,[{tag,128,1,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 3 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<2:2,_:1,2:5,_/binary>> -> +'CSTA-device-identifiers':'dec_DeviceID'(Bytes4, opt_or_default, [{tag,128,2,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmeSetForwardInfo', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. + + +%%================================ +%% KmeFeatureList +%%================================ + +'enc_KmeFeatureList'({'KmeFeatureList',Val}, TagIn) -> + 'enc_KmeFeatureList'(Val, TagIn); + +'enc_KmeFeatureList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeFeatureList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeFeatureList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeFeatureList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeFeatureList_SEQOF'(H, []), + 'enc_KmeFeatureList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeFeatureList_SEQOF +%%================================ +'enc_KmeFeatureList_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,featureNo), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,featureDigits) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(3,Val,featureDigits), 22, [{tag,128,1,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). +'dec_KmeFeatureList_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[{tag,128,0,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<2:2,_:1,1:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes3,{1,6},22,[{tag,128,1,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeFeatureList_SEQOF', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +'dec_KmeFeatureList'(Bytes, OptOrMand) -> + 'dec_KmeFeatureList'(Bytes, OptOrMand, []). + +'dec_KmeFeatureList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeFeatureList_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeExtGroupEntry +%%================================ +'enc_KmeExtGroupEntry'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,name) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeExtGroupEntry_name'(?RT_BER:cindex(3,Val,name), [{tag,128,1,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 3 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes3,EncLen3} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(4,Val,devNumber), [{tag,128,2,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 4 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case ?RT_BER:cindex(5,Val,cabinetNO) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(5,Val,cabinetNO), [{tag,128,3,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 5 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case ?RT_BER:cindex(6,Val,psNo) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(6,Val,psNo), 22, [{tag,128,4,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 6 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes6,EncLen6} = case ?RT_BER:cindex(7,Val,numberOfBch) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(7,Val,numberOfBch), [{tag,128,5,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeExtGroupEntry_name +%%================================ + +'enc_KmeExtGroupEntry_name'({'KmeExtGroupEntry_name',Val}, TagIn) -> + 'enc_KmeExtGroupEntry_name'(Val, TagIn); + +'enc_KmeExtGroupEntry_name'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeExtGroupEntry_name'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,20},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,40},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +'dec_KmeExtGroupEntry'(Bytes, OptOrMand) -> + 'dec_KmeExtGroupEntry'(Bytes, OptOrMand, []). + +'dec_KmeExtGroupEntry'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<2:2,_:1,1:5,_/binary>> -> +'dec_KmeExtGroupEntry_name'(Bytes3, opt_or_default, [{tag,128,1,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + +%%------------------------------------------------- +%% attribute number 3 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes4, mandatory, [{tag,128,2,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 4 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = case Bytes5 of +<<2:2,_:1,3:5,_/binary>> -> +?RT_BER:decode_integer(Bytes5,[],[{tag,128,3,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes5, 0 } +end, + +%%------------------------------------------------- +%% attribute number 5 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term5,Bytes7,Rb6} = case Bytes6 of +<<2:2,_:1,4:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes6,{1,3},22,[{tag,128,4,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes6, 0 } +end, + +%%------------------------------------------------- +%% attribute number 6 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term6,Bytes8,Rb7} = case Bytes7 of +<<2:2,_:1,5:5,_/binary>> -> +?RT_BER:decode_integer(Bytes7,[],[{tag,128,5,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes7, 0 } +end, + + {Bytes9,Rb8} = ?RT_BER:restbytes2(RemBytes, Bytes8,noext), + {{'KmeExtGroupEntry', Term1, Term2, Term3, Term4, Term5, Term6}, Bytes9, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6+Rb7+Rb8}. + + +%%================================ +%% KmeTrkGroupEntry +%%================================ +'enc_KmeTrkGroupEntry'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,name) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeTrkGroupEntry_name'(?RT_BER:cindex(3,Val,name), [{tag,128,1,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 3 with type IA5String +%%------------------------------------------------- + {EncBytes3,EncLen3} = ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(4,Val,coNo), 22, [{tag,128,2,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 4 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case ?RT_BER:cindex(5,Val,cabinetNO) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(5,Val,cabinetNO), [{tag,128,3,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeTrkGroupEntry_name +%%================================ + +'enc_KmeTrkGroupEntry_name'({'KmeTrkGroupEntry_name',Val}, TagIn) -> + 'enc_KmeTrkGroupEntry_name'(Val, TagIn); + +'enc_KmeTrkGroupEntry_name'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeTrkGroupEntry_name'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,20},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,40},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +'dec_KmeTrkGroupEntry'(Bytes, OptOrMand) -> + 'dec_KmeTrkGroupEntry'(Bytes, OptOrMand, []). + +'dec_KmeTrkGroupEntry'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<2:2,_:1,1:5,_/binary>> -> +'dec_KmeTrkGroupEntry_name'(Bytes3, opt_or_default, [{tag,128,1,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + +%%------------------------------------------------- +%% attribute number 3 with type IA5String +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = ?RT_BER:decode_restricted_string(Bytes4,{1,3},22,[{tag,128,2,'EXPLICIT',32}], no_length, mandatory), + +%%------------------------------------------------- +%% attribute number 4 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = case Bytes5 of +<<2:2,_:1,3:5,_/binary>> -> +?RT_BER:decode_integer(Bytes5,[],[{tag,128,3,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes5, 0 } +end, + + {Bytes7,Rb6} = ?RT_BER:restbytes2(RemBytes, Bytes6,noext), + {{'KmeTrkGroupEntry', Term1, Term2, Term3, Term4}, Bytes7, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6}. + + +%%================================ +%% KmeExtMembers +%%================================ +'enc_KmeExtMembers'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,groupNo), [{tag,128,0,'IMPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type SEQUENCE OF +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeExtMembers_members'(?RT_BER:cindex(3,Val,members), [{tag,128,1,'IMPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeExtMembers_members +%%================================ + +'enc_KmeExtMembers_members'({'KmeExtMembers_members',Val}, TagIn) -> + 'enc_KmeExtMembers_members'(Val, TagIn); + +'enc_KmeExtMembers_members'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeExtMembers_members_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeExtMembers_members_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeExtMembers_members_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeExtGroupEntry'(H, []), + 'enc_KmeExtMembers_members_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + +'dec_KmeExtMembers_members'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeExtGroupEntry'/3, [], []). + + + + +'dec_KmeExtMembers'(Bytes, OptOrMand) -> + 'dec_KmeExtMembers'(Bytes, OptOrMand, []). + +'dec_KmeExtMembers'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[{tag,128,0,'IMPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type SEQUENCE OF +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeExtMembers_members'(Bytes3, mandatory, [{tag,128,1,'IMPLICIT',32}]), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeExtMembers', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeTrkMembers +%%================================ +'enc_KmeTrkMembers'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,groupNo), [{tag,128,0,'IMPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type SEQUENCE OF +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeTrkMembers_members'(?RT_BER:cindex(3,Val,members), [{tag,128,1,'IMPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeTrkMembers_members +%%================================ + +'enc_KmeTrkMembers_members'({'KmeTrkMembers_members',Val}, TagIn) -> + 'enc_KmeTrkMembers_members'(Val, TagIn); + +'enc_KmeTrkMembers_members'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeTrkMembers_members_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeTrkMembers_members_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeTrkMembers_members_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeTrkGroupEntry'(H, []), + 'enc_KmeTrkMembers_members_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + +'dec_KmeTrkMembers_members'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeTrkGroupEntry'/3, [], []). + + + + +'dec_KmeTrkMembers'(Bytes, OptOrMand) -> + 'dec_KmeTrkMembers'(Bytes, OptOrMand, []). + +'dec_KmeTrkMembers'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[{tag,128,0,'IMPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type SEQUENCE OF +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeTrkMembers_members'(Bytes3, mandatory, [{tag,128,1,'IMPLICIT',32}]), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeTrkMembers', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeExtTrkGroupList +%%================================ + +'enc_KmeExtTrkGroupList'({'KmeExtTrkGroupList',Val}, TagIn) -> + 'enc_KmeExtTrkGroupList'(Val, TagIn); + +'enc_KmeExtTrkGroupList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeExtTrkGroupList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeExtTrkGroupList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeExtTrkGroupList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeExtTrkGroupList_SEQOF'(H, []), + 'enc_KmeExtTrkGroupList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeExtTrkGroupList_SEQOF +%%================================ +'enc_KmeExtTrkGroupList_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,groupNo), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,name) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeExtTrkGroupList_SEQOF_name'(?RT_BER:cindex(3,Val,name), [{tag,128,1,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 3 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,tenantNo) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(4,Val,tenantNo), [{tag,128,2,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeExtTrkGroupList_SEQOF_name +%%================================ + +'enc_KmeExtTrkGroupList_SEQOF_name'({'KmeExtTrkGroupList_SEQOF_name',Val}, TagIn) -> + 'enc_KmeExtTrkGroupList_SEQOF_name'(Val, TagIn); + +'enc_KmeExtTrkGroupList_SEQOF_name'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeExtTrkGroupList_SEQOF_name'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,20},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,40},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeExtTrkGroupList_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[{tag,128,0,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<2:2,_:1,1:5,_/binary>> -> +'dec_KmeExtTrkGroupList_SEQOF_name'(Bytes3, opt_or_default, [{tag,128,1,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + +%%------------------------------------------------- +%% attribute number 3 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<2:2,_:1,2:5,_/binary>> -> +?RT_BER:decode_integer(Bytes4,[],[{tag,128,2,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmeExtTrkGroupList_SEQOF', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. + + +'dec_KmeExtTrkGroupList'(Bytes, OptOrMand) -> + 'dec_KmeExtTrkGroupList'(Bytes, OptOrMand, []). + +'dec_KmeExtTrkGroupList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeExtTrkGroupList_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeGroupMembers +%%================================ + +'enc_KmeGroupMembers'({'KmeGroupMembers',Val}, TagIn) -> + 'enc_KmeGroupMembers'(Val, TagIn); + +'enc_KmeGroupMembers'(Val, TagIn) -> +?RT_BER:encode_bit_string([], Val, [{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}], TagIn ++ []). + + +'dec_KmeGroupMembers'(Bytes, OptOrMand) -> + 'dec_KmeGroupMembers'(Bytes, OptOrMand, []). + +'dec_KmeGroupMembers'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_bit_string(Bytes,[],[{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}],TagIn++[], no_length, OptOrMand). + + + +%%================================ +%% KmePckPagGroupList +%%================================ + +'enc_KmePckPagGroupList'({'KmePckPagGroupList',Val}, TagIn) -> + 'enc_KmePckPagGroupList'(Val, TagIn); + +'enc_KmePckPagGroupList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmePckPagGroupList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmePckPagGroupList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmePckPagGroupList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmePckPagGroupList_SEQOF'(H, []), + 'enc_KmePckPagGroupList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmePckPagGroupList_SEQOF +%%================================ +'enc_KmePckPagGroupList_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,groupNo), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,memberList) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_bit_string([], ?RT_BER:cindex(3,Val,memberList), [{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}], [{tag,128,1,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). +'dec_KmePckPagGroupList_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[{tag,128,0,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<2:2,_:1,1:5,_/binary>> -> +?RT_BER:decode_bit_string(Bytes3,[],[{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}],[{tag,128,1,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmePckPagGroupList_SEQOF', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +'dec_KmePckPagGroupList'(Bytes, OptOrMand) -> + 'dec_KmePckPagGroupList'(Bytes, OptOrMand, []). + +'dec_KmePckPagGroupList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmePckPagGroupList_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeIcmGrpMembers +%%================================ +'enc_KmeIcmGrpMembers'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,grpDevice), [{tag,128,0,'IMPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type SEQUENCE OF +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeIcmGrpMembers_members'(?RT_BER:cindex(3,Val,members), [{tag,128,1,'IMPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeIcmGrpMembers_members +%%================================ + +'enc_KmeIcmGrpMembers_members'({'KmeIcmGrpMembers_members',Val}, TagIn) -> + 'enc_KmeIcmGrpMembers_members'(Val, TagIn); + +'enc_KmeIcmGrpMembers_members'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeIcmGrpMembers_members_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeIcmGrpMembers_members_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeIcmGrpMembers_members_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'CSTA-device-identifiers':'enc_DeviceID'(H, []), + 'enc_KmeIcmGrpMembers_members_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + +'dec_KmeIcmGrpMembers_members'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'CSTA-device-identifiers':'dec_DeviceID'/3, [], []). + + + + +'dec_KmeIcmGrpMembers'(Bytes, OptOrMand) -> + 'dec_KmeIcmGrpMembers'(Bytes, OptOrMand, []). + +'dec_KmeIcmGrpMembers'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, [{tag,128,0,'IMPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type SEQUENCE OF +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeIcmGrpMembers_members'(Bytes3, mandatory, [{tag,128,1,'IMPLICIT',32}]), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeIcmGrpMembers', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeIncomingGroupList +%%================================ + +'enc_KmeIncomingGroupList'({'KmeIncomingGroupList',Val}, TagIn) -> + 'enc_KmeIncomingGroupList'(Val, TagIn); + +'enc_KmeIncomingGroupList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeIncomingGroupList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeIncomingGroupList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeIncomingGroupList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeIncomingGroupList_SEQOF'(H, []), + 'enc_KmeIncomingGroupList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeIncomingGroupList_SEQOF +%%================================ +'enc_KmeIncomingGroupList_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,groupNo), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(3,Val,device), [{tag,128,1,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,name) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeIncomingGroupList_SEQOF_name'(?RT_BER:cindex(4,Val,name), [{tag,128,2,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 4 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case ?RT_BER:cindex(5,Val,extNo) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(5,Val,extNo), 22, [{tag,128,3,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 5 with type ENUMERATED +%%------------------------------------------------- + {EncBytes5,EncLen5} = case (case ?RT_BER:cindex(6,Val,groupType) of {_,Enumval3}->Enumval3;_->?RT_BER:cindex(6,Val,groupType) end) of +ucd -> ?RT_BER:encode_enumerated(0,[{tag,128,4,'EXPLICIT',32}]); +ring -> ?RT_BER:encode_enumerated(1,[{tag,128,4,'EXPLICIT',32}]); +hunt -> ?RT_BER:encode_enumerated(2,[{tag,128,4,'EXPLICIT',32}]); +Enumval4 -> exit({error,{asn1, {enumerated_not_in_range,Enumval4}}}) +end, + +%%------------------------------------------------- +%% attribute number 6 with type BOOLEAN +%%------------------------------------------------- + {EncBytes6,EncLen6} = ?RT_BER:encode_boolean(?RT_BER:cindex(7,Val,acdMode), [{tag,128,5,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 7 with type INTEGER +%%------------------------------------------------- + {EncBytes7,EncLen7} = ?RT_BER:encode_integer([], ?RT_BER:cindex(8,Val,ctiWaitTime), [{tag,128,6,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 8 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes8,EncLen8} = case ?RT_BER:cindex(9,Val,queueSize) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(9,Val,queueSize), [{tag,128,7,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6, EncBytes7, EncBytes8], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6 + EncLen7 + EncLen8, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeIncomingGroupList_SEQOF_name +%%================================ + +'enc_KmeIncomingGroupList_SEQOF_name'({'KmeIncomingGroupList_SEQOF_name',Val}, TagIn) -> + 'enc_KmeIncomingGroupList_SEQOF_name'(Val, TagIn); + +'enc_KmeIncomingGroupList_SEQOF_name'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeIncomingGroupList_SEQOF_name'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,20},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,40},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeIncomingGroupList_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[{tag,128,0,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes3, mandatory, [{tag,128,1,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<2:2,_:1,2:5,_/binary>> -> +'dec_KmeIncomingGroupList_SEQOF_name'(Bytes4, opt_or_default, [{tag,128,2,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + +%%------------------------------------------------- +%% attribute number 4 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = case Bytes5 of +<<2:2,_:1,3:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes5,{1,5},22,[{tag,128,3,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes5, 0 } +end, + +%%------------------------------------------------- +%% attribute number 5 with type ENUMERATED +%%------------------------------------------------- + {Term5,Bytes7,Rb6} = ?RT_BER:decode_enumerated(Bytes6,[],[{ucd,0},{ring,1},{hunt,2}],[{tag,128,4,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 6 with type BOOLEAN +%%------------------------------------------------- + {Term6,Bytes8,Rb7} = ?RT_BER:decode_boolean(Bytes7,[{tag,128,5,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 7 with type INTEGER +%%------------------------------------------------- + {Term7,Bytes9,Rb8} = ?RT_BER:decode_integer(Bytes8,[],[{tag,128,6,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 8 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term8,Bytes10,Rb9} = case Bytes9 of +<<2:2,_:1,7:5,_/binary>> -> +?RT_BER:decode_integer(Bytes9,[],[{tag,128,7,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes9, 0 } +end, + + {Bytes11,Rb10} = ?RT_BER:restbytes2(RemBytes, Bytes10,noext), + {{'KmeIncomingGroupList_SEQOF', Term1, Term2, Term3, Term4, Term5, Term6, Term7, Term8}, Bytes11, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6+Rb7+Rb8+Rb9+Rb10}. + + +'dec_KmeIncomingGroupList'(Bytes, OptOrMand) -> + 'dec_KmeIncomingGroupList'(Bytes, OptOrMand, []). + +'dec_KmeIncomingGroupList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeIncomingGroupList_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeDoorPhone +%%================================ + +'enc_KmeDoorPhone'({'KmeDoorPhone',Val}, TagIn) -> + 'enc_KmeDoorPhone'(Val, TagIn); + +'enc_KmeDoorPhone'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeDoorPhone_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeDoorPhone_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeDoorPhone_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeDoorPhone_SEQOF'(H, []), + 'enc_KmeDoorPhone_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeDoorPhone_SEQOF +%%================================ +'enc_KmeDoorPhone_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type IA5String +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(2,Val,doorPhoneNo), 22, [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(3,Val,device), [{tag,128,1,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,name) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeDoorPhone_SEQOF_name'(?RT_BER:cindex(4,Val,name), [{tag,128,2,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeDoorPhone_SEQOF_name +%%================================ + +'enc_KmeDoorPhone_SEQOF_name'({'KmeDoorPhone_SEQOF_name',Val}, TagIn) -> + 'enc_KmeDoorPhone_SEQOF_name'(Val, TagIn); + +'enc_KmeDoorPhone_SEQOF_name'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeDoorPhone_SEQOF_name'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,20},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,40},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeDoorPhone_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type IA5String +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_restricted_string(Bytes2,{1,2},22,[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes3, mandatory, [{tag,128,1,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<2:2,_:1,2:5,_/binary>> -> +'dec_KmeDoorPhone_SEQOF_name'(Bytes4, opt_or_default, [{tag,128,2,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmeDoorPhone_SEQOF', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. + + +'dec_KmeDoorPhone'(Bytes, OptOrMand) -> + 'dec_KmeDoorPhone'(Bytes, OptOrMand, []). + +'dec_KmeDoorPhone'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeDoorPhone_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeVmGroup +%%================================ + +'enc_KmeVmGroup'({'KmeVmGroup',Val}, TagIn) -> + 'enc_KmeVmGroup'(Val, TagIn); + +'enc_KmeVmGroup'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +dpt -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +dtmf -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeVmGroup'(Bytes, OptOrMand) -> + 'dec_KmeVmGroup'(Bytes, OptOrMand, []). + +'dec_KmeVmGroup'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{dpt,0},{dtmf,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeVmDtmfType +%%================================ + +'enc_KmeVmDtmfType'({'KmeVmDtmfType',Val}, TagIn) -> + 'enc_KmeVmDtmfType'(Val, TagIn); + +'enc_KmeVmDtmfType'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +aa -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +vm -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeVmDtmfType'(Bytes, OptOrMand) -> + 'dec_KmeVmDtmfType'(Bytes, OptOrMand, []). + +'dec_KmeVmDtmfType'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{aa,0},{vm,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeVmGroupList +%%================================ + +'enc_KmeVmGroupList'({'KmeVmGroupList',Val}, TagIn) -> + 'enc_KmeVmGroupList'(Val, TagIn); + +'enc_KmeVmGroupList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeVmGroupList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeVmGroupList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeVmGroupList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeVmGroupList_SEQOF'(H, []), + 'enc_KmeVmGroupList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeVmGroupList_SEQOF +%%================================ +'enc_KmeVmGroupList_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), []), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {EncBytes2,EncLen2} = case (case ?RT_BER:cindex(3,Val,vmType) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(3,Val,vmType) end) of +dpt -> ?RT_BER:encode_enumerated(0,[]); +dtmf -> ?RT_BER:encode_enumerated(1,[]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,name) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeVmGroupList_SEQOF_name'(?RT_BER:cindex(4,Val,name), []) + end, + +%%------------------------------------------------- +%% attribute number 4 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case ?RT_BER:cindex(5,Val,dtmfType) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case (case ?RT_BER:cindex(5,Val,dtmfType) of {_,Enumval3}->Enumval3;_->?RT_BER:cindex(5,Val,dtmfType) end) of +aa -> ?RT_BER:encode_enumerated(0,[]); +vm -> ?RT_BER:encode_enumerated(1,[]); +Enumval4 -> exit({error,{asn1, {enumerated_not_in_range,Enumval4}}}) +end + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeVmGroupList_SEQOF_name +%%================================ + +'enc_KmeVmGroupList_SEQOF_name'({'KmeVmGroupList_SEQOF_name',Val}, TagIn) -> + 'enc_KmeVmGroupList_SEQOF_name'(Val, TagIn); + +'enc_KmeVmGroupList_SEQOF_name'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeVmGroupList_SEQOF_name'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,20},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,40},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeVmGroupList_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_enumerated(Bytes3,[],[{dpt,0},{dtmf,1}],[], mandatory), + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case (catch 'dec_KmeVmGroupList_SEQOF_name'(Bytes4, opt_or_default, [])) of +{'EXIT',{error,{asn1,{no_optional_tag,_}}}} -> { asn1_NOVALUE, Bytes4, 0 }; +Casetmp1-> Casetmp1 +end, + +%%------------------------------------------------- +%% attribute number 4 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = case Bytes5 of +<<0:2,_:1,10:5,_/binary>> -> +?RT_BER:decode_enumerated(Bytes5,[],[{aa,0},{vm,1}],[], mandatory); +_ -> +{ asn1_NOVALUE, Bytes5, 0 } +end, + + {Bytes7,Rb6} = ?RT_BER:restbytes2(RemBytes, Bytes6,noext), + {{'KmeVmGroupList_SEQOF', Term1, Term2, Term3, Term4}, Bytes7, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6}. + + +'dec_KmeVmGroupList'(Bytes, OptOrMand) -> + 'dec_KmeVmGroupList'(Bytes, OptOrMand, []). + +'dec_KmeVmGroupList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeVmGroupList_SEQOF'/3, [], []). + + + + +%%================================ +%% KmePsGroupList +%%================================ + +'enc_KmePsGroupList'({'KmePsGroupList',Val}, TagIn) -> + 'enc_KmePsGroupList'(Val, TagIn); + +'enc_KmePsGroupList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmePsGroupList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmePsGroupList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmePsGroupList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmePsGroupList_SEQOF'(H, []), + 'enc_KmePsGroupList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmePsGroupList_SEQOF +%%================================ +'enc_KmePsGroupList_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,groupNo), []), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(3,Val,device), []), + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,name) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmePsGroupList_SEQOF_name'(?RT_BER:cindex(4,Val,name), []) + end, + +%%------------------------------------------------- +%% attribute number 4 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case ?RT_BER:cindex(5,Val,memberList) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_bit_string([], ?RT_BER:cindex(5,Val,memberList), [{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}], [{tag,128,2,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 5 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case ?RT_BER:cindex(6,Val,memberList2) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_bit_string([], ?RT_BER:cindex(6,Val,memberList2), [{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}], [{tag,128,3,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 6 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {EncBytes6,EncLen6} = case ?RT_BER:cindex(7,Val,memberList3) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_bit_string([], ?RT_BER:cindex(7,Val,memberList3), [{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}], [{tag,128,4,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 7 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {EncBytes7,EncLen7} = case ?RT_BER:cindex(8,Val,memberList4) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_bit_string([], ?RT_BER:cindex(8,Val,memberList4), [{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}], [{tag,128,5,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6, EncBytes7], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6 + EncLen7, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmePsGroupList_SEQOF_name +%%================================ + +'enc_KmePsGroupList_SEQOF_name'({'KmePsGroupList_SEQOF_name',Val}, TagIn) -> + 'enc_KmePsGroupList_SEQOF_name'(Val, TagIn); + +'enc_KmePsGroupList_SEQOF_name'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmePsGroupList_SEQOF_name'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,20},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,40},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmePsGroupList_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes3, mandatory, []), + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case (catch 'dec_KmePsGroupList_SEQOF_name'(Bytes4, opt_or_default, [])) of +{'EXIT',{error,{asn1,{no_optional_tag,_}}}} -> { asn1_NOVALUE, Bytes4, 0 }; +Casetmp1-> Casetmp1 +end, + +%%------------------------------------------------- +%% attribute number 4 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = case Bytes5 of +<<2:2,_:1,2:5,_/binary>> -> +?RT_BER:decode_bit_string(Bytes5,[],[{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}],[{tag,128,2,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes5, 0 } +end, + +%%------------------------------------------------- +%% attribute number 5 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {Term5,Bytes7,Rb6} = case Bytes6 of +<<2:2,_:1,3:5,_/binary>> -> +?RT_BER:decode_bit_string(Bytes6,[],[{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}],[{tag,128,3,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes6, 0 } +end, + +%%------------------------------------------------- +%% attribute number 6 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {Term6,Bytes8,Rb7} = case Bytes7 of +<<2:2,_:1,4:5,_/binary>> -> +?RT_BER:decode_bit_string(Bytes7,[],[{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}],[{tag,128,4,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes7, 0 } +end, + +%%------------------------------------------------- +%% attribute number 7 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {Term7,Bytes9,Rb8} = case Bytes8 of +<<2:2,_:1,5:5,_/binary>> -> +?RT_BER:decode_bit_string(Bytes8,[],[{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}],[{tag,128,5,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes8, 0 } +end, + + {Bytes10,Rb9} = ?RT_BER:restbytes2(RemBytes, Bytes9,noext), + {{'KmePsGroupList_SEQOF', Term1, Term2, Term3, Term4, Term5, Term6, Term7}, Bytes10, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6+Rb7+Rb8+Rb9}. + + +'dec_KmePsGroupList'(Bytes, OptOrMand) -> + 'dec_KmePsGroupList'(Bytes, OptOrMand, []). + +'dec_KmePsGroupList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmePsGroupList_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeChangeExtNo +%%================================ +'enc_KmeChangeExtNo'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,requestingDevice), []), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(3,Val,newExtNo), 22, []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeChangeExtNo'(Bytes, OptOrMand) -> + 'dec_KmeChangeExtNo'(Bytes, OptOrMand, []). + +'dec_KmeChangeExtNo'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_restricted_string(Bytes3,{1,5},22,[], no_length, mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeChangeExtNo', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeChangeName +%%================================ +'enc_KmeChangeName'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,requestingDevice), []), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,newName) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeChangeName_newName'(?RT_BER:cindex(3,Val,newName), []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeChangeName_newName +%%================================ + +'enc_KmeChangeName_newName'({'KmeChangeName_newName',Val}, TagIn) -> + 'enc_KmeChangeName_newName'(Val, TagIn); + +'enc_KmeChangeName_newName'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeChangeName_newName'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,20},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,40},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +'dec_KmeChangeName'(Bytes, OptOrMand) -> + 'dec_KmeChangeName'(Bytes, OptOrMand, []). + +'dec_KmeChangeName'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case (catch 'dec_KmeChangeName_newName'(Bytes3, opt_or_default, [])) of +{'EXIT',{error,{asn1,{no_optional_tag,_}}}} -> { asn1_NOVALUE, Bytes3, 0 }; +Casetmp1-> Casetmp1 +end, + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeChangeName', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeDeviceCategory +%%================================ + +'enc_KmeDeviceCategory'({'KmeDeviceCategory',Val}, TagIn) -> + 'enc_KmeDeviceCategory'(Val, TagIn); + +'enc_KmeDeviceCategory'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + standardDevice -> + case (case element(2,Val) of {_,Enumval1}->Enumval1;_->element(2,Val) end) of +acd -> ?RT_BER:encode_enumerated(0,[{tag,128,0,'EXPLICIT',32}]); +group -> ?RT_BER:encode_enumerated(1,[{tag,128,0,'EXPLICIT',32}]); +networkInterface -> ?RT_BER:encode_enumerated(2,[{tag,128,0,'EXPLICIT',32}]); +park -> ?RT_BER:encode_enumerated(3,[{tag,128,0,'EXPLICIT',32}]); +routeingDevice -> ?RT_BER:encode_enumerated(4,[{tag,128,0,'EXPLICIT',32}]); +station -> ?RT_BER:encode_enumerated(5,[{tag,128,0,'EXPLICIT',32}]); +voiceUnit -> ?RT_BER:encode_enumerated(6,[{tag,128,0,'EXPLICIT',32}]); +other -> ?RT_BER:encode_enumerated(7,[{tag,128,0,'EXPLICIT',32}]); +genericInteractiveVoice -> ?RT_BER:encode_enumerated(8,[{tag,128,0,'EXPLICIT',32}]); +listenerInteractiveVoice -> ?RT_BER:encode_enumerated(9,[{tag,128,0,'EXPLICIT',32}]); +dtmfInteractiveVoice -> ?RT_BER:encode_enumerated(10,[{tag,128,0,'EXPLICIT',32}]); +promptInteractiveVoice -> ?RT_BER:encode_enumerated(11,[{tag,128,0,'EXPLICIT',32}]); +promptQueueInteractiveVoice -> ?RT_BER:encode_enumerated(12,[{tag,128,0,'EXPLICIT',32}]); +messageInteractiveVoice -> ?RT_BER:encode_enumerated(13,[{tag,128,0,'EXPLICIT',32}]); +conference -> ?RT_BER:encode_enumerated(14,[{tag,128,0,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end; + kmeDevice -> + case (case element(2,Val) of {_,Enumval3}->Enumval3;_->element(2,Val) end) of +vm -> ?RT_BER:encode_enumerated(0,[{tag,128,1,'EXPLICIT',32}]); +doorPhone -> ?RT_BER:encode_enumerated(1,[{tag,128,1,'EXPLICIT',32}]); +disa -> ?RT_BER:encode_enumerated(2,[{tag,128,1,'EXPLICIT',32}]); +pagingGroup -> ?RT_BER:encode_enumerated(3,[{tag,128,1,'EXPLICIT',32}]); +psGruop -> ?RT_BER:encode_enumerated(4,[{tag,128,1,'EXPLICIT',32}]); +externalRinger -> ?RT_BER:encode_enumerated(5,[{tag,128,1,'EXPLICIT',32}]); +externalSensor -> ?RT_BER:encode_enumerated(6,[{tag,128,1,'EXPLICIT',32}]); +externalPager -> ?RT_BER:encode_enumerated(7,[{tag,128,1,'EXPLICIT',32}]); +modem -> ?RT_BER:encode_enumerated(8,[{tag,128,1,'EXPLICIT',32}]); +hdlc -> ?RT_BER:encode_enumerated(9,[{tag,128,1,'EXPLICIT',32}]); +pbxSystem -> ?RT_BER:encode_enumerated(10,[{tag,128,1,'EXPLICIT',32}]); +svm -> ?RT_BER:encode_enumerated(11,[{tag,128,1,'EXPLICIT',32}]); +Enumval4 -> exit({error,{asn1, {enumerated_not_in_range,Enumval4}}}) +end; + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeDeviceCategory'(Bytes, OptOrMand) -> + 'dec_KmeDeviceCategory'(Bytes, OptOrMand, []). + +'dec_KmeDeviceCategory'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'standardDevice' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{acd,0},{group,1},{networkInterface,2},{park,3},{routeingDevice,4},{station,5},{voiceUnit,6},{other,7},{genericInteractiveVoice,8},{listenerInteractiveVoice,9},{dtmfInteractiveVoice,10},{promptInteractiveVoice,11},{promptQueueInteractiveVoice,12},{messageInteractiveVoice,13},{conference,14}],[{tag,128,0,'EXPLICIT',32}], mandatory), + {{standardDevice, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeDevice' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{vm,0},{doorPhone,1},{disa,2},{pagingGroup,3},{psGruop,4},{externalRinger,5},{externalSensor,6},{externalPager,7},{modem,8},{hdlc,9},{pbxSystem,10},{svm,11}],[{tag,128,1,'EXPLICIT',32}], mandatory), + {{kmeDevice, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeRequestedDevice +%%================================ + +'enc_KmeRequestedDevice'({'KmeRequestedDevice',Val}, TagIn) -> + 'enc_KmeRequestedDevice'(Val, TagIn); + +'enc_KmeRequestedDevice'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + device -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + category -> + 'enc_KmeDeviceCategory'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeRequestedDevice'(Bytes, OptOrMand) -> + 'dec_KmeRequestedDevice'(Bytes, OptOrMand, []). + +'dec_KmeRequestedDevice'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'device' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{device, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'category' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDeviceCategory'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{category, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeChangedDeviceCategory +%%================================ + +'enc_KmeChangedDeviceCategory'({'KmeChangedDeviceCategory',Val}, TagIn) -> + 'enc_KmeChangedDeviceCategory'(Val, TagIn); + +'enc_KmeChangedDeviceCategory'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + standardDevice -> + case (case element(2,Val) of {_,Enumval1}->Enumval1;_->element(2,Val) end) of +acd -> ?RT_BER:encode_enumerated(0,[{tag,128,0,'EXPLICIT',32}]); +groupACD -> ?RT_BER:encode_enumerated(1,[{tag,128,0,'EXPLICIT',32}]); +groupHunt -> ?RT_BER:encode_enumerated(2,[{tag,128,0,'EXPLICIT',32}]); +groupPick -> ?RT_BER:encode_enumerated(3,[{tag,128,0,'EXPLICIT',32}]); +groupOther -> ?RT_BER:encode_enumerated(4,[{tag,128,0,'EXPLICIT',32}]); +networkInterface -> ?RT_BER:encode_enumerated(5,[{tag,128,0,'EXPLICIT',32}]); +park -> ?RT_BER:encode_enumerated(6,[{tag,128,0,'EXPLICIT',32}]); +routeingDevice -> ?RT_BER:encode_enumerated(7,[{tag,128,0,'EXPLICIT',32}]); +station -> ?RT_BER:encode_enumerated(8,[{tag,128,0,'EXPLICIT',32}]); +voiceUnit -> ?RT_BER:encode_enumerated(9,[{tag,128,0,'EXPLICIT',32}]); +other -> ?RT_BER:encode_enumerated(10,[{tag,128,0,'EXPLICIT',32}]); +conference -> ?RT_BER:encode_enumerated(11,[{tag,128,0,'EXPLICIT',32}]); +dtmfIV -> ?RT_BER:encode_enumerated(12,[{tag,128,0,'EXPLICIT',32}]); +genericIV -> ?RT_BER:encode_enumerated(13,[{tag,128,0,'EXPLICIT',32}]); +groupUser -> ?RT_BER:encode_enumerated(14,[{tag,128,0,'EXPLICIT',32}]); +listenerIV -> ?RT_BER:encode_enumerated(15,[{tag,128,0,'EXPLICIT',32}]); +messageIV -> ?RT_BER:encode_enumerated(16,[{tag,128,0,'EXPLICIT',32}]); +promptIV -> ?RT_BER:encode_enumerated(17,[{tag,128,0,'EXPLICIT',32}]); +promptQueue -> ?RT_BER:encode_enumerated(18,[{tag,128,0,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end; + kmeDevice -> + case (case element(2,Val) of {_,Enumval3}->Enumval3;_->element(2,Val) end) of +vm -> ?RT_BER:encode_enumerated(0,[{tag,128,1,'EXPLICIT',32}]); +doorPhone -> ?RT_BER:encode_enumerated(1,[{tag,128,1,'EXPLICIT',32}]); +disa -> ?RT_BER:encode_enumerated(2,[{tag,128,1,'EXPLICIT',32}]); +pagingGroup -> ?RT_BER:encode_enumerated(3,[{tag,128,1,'EXPLICIT',32}]); +psGruop -> ?RT_BER:encode_enumerated(4,[{tag,128,1,'EXPLICIT',32}]); +externalRinger -> ?RT_BER:encode_enumerated(5,[{tag,128,1,'EXPLICIT',32}]); +externalSensor -> ?RT_BER:encode_enumerated(6,[{tag,128,1,'EXPLICIT',32}]); +externalPager -> ?RT_BER:encode_enumerated(7,[{tag,128,1,'EXPLICIT',32}]); +modem -> ?RT_BER:encode_enumerated(8,[{tag,128,1,'EXPLICIT',32}]); +hdlc -> ?RT_BER:encode_enumerated(9,[{tag,128,1,'EXPLICIT',32}]); +pbxSystem -> ?RT_BER:encode_enumerated(10,[{tag,128,1,'EXPLICIT',32}]); +svm -> ?RT_BER:encode_enumerated(11,[{tag,128,1,'EXPLICIT',32}]); +Enumval4 -> exit({error,{asn1, {enumerated_not_in_range,Enumval4}}}) +end; + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeChangedDeviceCategory'(Bytes, OptOrMand) -> + 'dec_KmeChangedDeviceCategory'(Bytes, OptOrMand, []). + +'dec_KmeChangedDeviceCategory'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'standardDevice' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{acd,0},{groupACD,1},{groupHunt,2},{groupPick,3},{groupOther,4},{networkInterface,5},{park,6},{routeingDevice,7},{station,8},{voiceUnit,9},{other,10},{conference,11},{dtmfIV,12},{genericIV,13},{groupUser,14},{listenerIV,15},{messageIV,16},{promptIV,17},{promptQueue,18}],[{tag,128,0,'EXPLICIT',32}], mandatory), + {{standardDevice, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeDevice' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{vm,0},{doorPhone,1},{disa,2},{pagingGroup,3},{psGruop,4},{externalRinger,5},{externalSensor,6},{externalPager,7},{modem,8},{hdlc,9},{pbxSystem,10},{svm,11}],[{tag,128,1,'EXPLICIT',32}], mandatory), + {{kmeDevice, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeDeviceStateList +%%================================ + +'enc_KmeDeviceStateList'({'KmeDeviceStateList',Val}, TagIn) -> + 'enc_KmeDeviceStateList'(Val, TagIn); + +'enc_KmeDeviceStateList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeDeviceStateList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeDeviceStateList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeDeviceStateList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeDeviceStateEntry'(H, []), + 'enc_KmeDeviceStateList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +'dec_KmeDeviceStateList'(Bytes, OptOrMand) -> + 'dec_KmeDeviceStateList'(Bytes, OptOrMand, []). + +'dec_KmeDeviceStateList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeDeviceStateEntry'/3, [], []). + + + + +%%================================ +%% KmeDeviceStateEntry +%%================================ +'enc_KmeDeviceStateEntry'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), []), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,number) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(3,Val,number), 22, []) + end, + +%%------------------------------------------------- +%% attribute number 3 with type ENUMERATED +%%------------------------------------------------- + {EncBytes3,EncLen3} = case (case ?RT_BER:cindex(4,Val,status) of {_,Enumval2}->Enumval2;_->?RT_BER:cindex(4,Val,status) end) of +ins -> ?RT_BER:encode_enumerated(0,[]); +ous -> ?RT_BER:encode_enumerated(1,[]); +Enumval3 -> exit({error,{asn1, {enumerated_not_in_range,Enumval3}}}) +end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeDeviceStateEntry'(Bytes, OptOrMand) -> + 'dec_KmeDeviceStateEntry'(Bytes, OptOrMand, []). + +'dec_KmeDeviceStateEntry'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<0:2,_:1,22:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes3,{1,5},22,[], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + +%%------------------------------------------------- +%% attribute number 3 with type ENUMERATED +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = ?RT_BER:decode_enumerated(Bytes4,[],[{ins,0},{ous,1}],[], mandatory), + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmeDeviceStateEntry', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. + + +%%================================ +%% KmeDeviceState +%%================================ + +'enc_KmeDeviceState'({'KmeDeviceState',Val}, TagIn) -> + 'enc_KmeDeviceState'(Val, TagIn); + +'enc_KmeDeviceState'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +ins -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +ous -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeDeviceState'(Bytes, OptOrMand) -> + 'dec_KmeDeviceState'(Bytes, OptOrMand, []). + +'dec_KmeDeviceState'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{ins,0},{ous,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeGroupType +%%================================ + +'enc_KmeGroupType'({'KmeGroupType',Val}, TagIn) -> + 'enc_KmeGroupType'(Val, TagIn); + +'enc_KmeGroupType'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +ucd -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +ring -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +hunt -> ?RT_BER:encode_enumerated(2,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeGroupType'(Bytes, OptOrMand) -> + 'dec_KmeGroupType'(Bytes, OptOrMand, []). + +'dec_KmeGroupType'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{ucd,0},{ring,1},{hunt,2}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmePhoneProperty +%%================================ +'enc_KmePhoneProperty'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,portType), []), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_integer([], ?RT_BER:cindex(3,Val,phoneCode), []), + +%%------------------------------------------------- +%% attribute number 3 with type INTEGER +%%------------------------------------------------- + {EncBytes3,EncLen3} = ?RT_BER:encode_integer([], ?RT_BER:cindex(4,Val,lcdRows), []), + +%%------------------------------------------------- +%% attribute number 4 with type INTEGER +%%------------------------------------------------- + {EncBytes4,EncLen4} = ?RT_BER:encode_integer([], ?RT_BER:cindex(5,Val,lcdColumns), []), + +%%------------------------------------------------- +%% attribute number 5 with type INTEGER +%%------------------------------------------------- + {EncBytes5,EncLen5} = ?RT_BER:encode_integer([], ?RT_BER:cindex(6,Val,numberOfCoKeys), []), + +%%------------------------------------------------- +%% attribute number 6 with type INTEGER +%%------------------------------------------------- + {EncBytes6,EncLen6} = ?RT_BER:encode_integer([], ?RT_BER:cindex(7,Val,numberOfSoftKeys), []), + +%%------------------------------------------------- +%% attribute number 7 with type BOOLEAN +%%------------------------------------------------- + {EncBytes7,EncLen7} = ?RT_BER:encode_boolean(?RT_BER:cindex(8,Val,spPhone), []), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6, EncBytes7], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6 + EncLen7, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmePhoneProperty'(Bytes, OptOrMand) -> + 'dec_KmePhoneProperty'(Bytes, OptOrMand, []). + +'dec_KmePhoneProperty'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_integer(Bytes3,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 3 with type INTEGER +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = ?RT_BER:decode_integer(Bytes4,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 4 with type INTEGER +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = ?RT_BER:decode_integer(Bytes5,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 5 with type INTEGER +%%------------------------------------------------- + {Term5,Bytes7,Rb6} = ?RT_BER:decode_integer(Bytes6,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 6 with type INTEGER +%%------------------------------------------------- + {Term6,Bytes8,Rb7} = ?RT_BER:decode_integer(Bytes7,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 7 with type BOOLEAN +%%------------------------------------------------- + {Term7,Bytes9,Rb8} = ?RT_BER:decode_boolean(Bytes8,[], mandatory), + + {Bytes10,Rb9} = ?RT_BER:restbytes2(RemBytes, Bytes9,noext), + {{'KmePhoneProperty', Term1, Term2, Term3, Term4, Term5, Term6, Term7}, Bytes10, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6+Rb7+Rb8+Rb9}. + + +%%================================ +%% KmeDeviceExtNo +%%================================ +'enc_KmeDeviceExtNo'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,devNumber), []), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,extNo) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(3,Val,extNo), 22, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeDeviceExtNo'(Bytes, OptOrMand) -> + 'dec_KmeDeviceExtNo'(Bytes, OptOrMand, []). + +'dec_KmeDeviceExtNo'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<0:2,_:1,22:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes3,{1,5},22,[], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeDeviceExtNo', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeDeviceName +%%================================ +'enc_KmeDeviceName'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type IA5String +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(2,Val,extNo), 22, []), + +%%------------------------------------------------- +%% attribute number 2 External KME-specific-types:KmeExtName +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeExtName'(?RT_BER:cindex(3,Val,name), []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeDeviceName'(Bytes, OptOrMand) -> + 'dec_KmeDeviceName'(Bytes, OptOrMand, []). + +'dec_KmeDeviceName'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type IA5String +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_restricted_string(Bytes2,{1,5},22,[], no_length, mandatory), + +%%------------------------------------------------- +%% attribute number 2 External KME-specific-types:KmeExtName +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeExtName'(Bytes3, mandatory, []), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeDeviceName', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeFcoKeyInfo +%%================================ +'enc_KmeFcoKeyInfo'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type OCTET STRING +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_octet_string([], ?RT_BER:cindex(2,Val,button), []), + +%%------------------------------------------------- +%% attribute number 2 with type OCTET STRING +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_octet_string([], ?RT_BER:cindex(3,Val,function), []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeFcoKeyInfo'(Bytes, OptOrMand) -> + 'dec_KmeFcoKeyInfo'(Bytes, OptOrMand, []). + +'dec_KmeFcoKeyInfo'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type OCTET STRING +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_octet_string(Bytes2,[],[], no_length, mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type OCTET STRING +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_octet_string(Bytes3,1,[], no_length, mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeFcoKeyInfo', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeFcoKeyList +%%================================ + +'enc_KmeFcoKeyList'({'KmeFcoKeyList',Val}, TagIn) -> + 'enc_KmeFcoKeyList'(Val, TagIn); + +'enc_KmeFcoKeyList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeFcoKeyList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeFcoKeyList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeFcoKeyList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeFcoKeyInfo'(H, []), + 'enc_KmeFcoKeyList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + +'dec_KmeFcoKeyList'(Bytes, OptOrMand) -> + 'dec_KmeFcoKeyList'(Bytes, OptOrMand, []). + +'dec_KmeFcoKeyList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeFcoKeyInfo'/3, [], []). + + + + +%%================================ +%% KmeExternalSensorList +%%================================ + +'enc_KmeExternalSensorList'({'KmeExternalSensorList',Val}, TagIn) -> + 'enc_KmeExternalSensorList'(Val, TagIn); + +'enc_KmeExternalSensorList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeExternalSensorList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeExternalSensorList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeExternalSensorList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeExternalSensorList_SEQOF'(H, []), + 'enc_KmeExternalSensorList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeExternalSensorList_SEQOF +%%================================ +'enc_KmeExternalSensorList_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type IA5String +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(2,Val,sensorNo), 22, [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(3,Val,device), [{tag,128,1,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,name) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeExternalSensorList_SEQOF_name'(?RT_BER:cindex(4,Val,name), [{tag,128,2,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeExternalSensorList_SEQOF_name +%%================================ + +'enc_KmeExternalSensorList_SEQOF_name'({'KmeExternalSensorList_SEQOF_name',Val}, TagIn) -> + 'enc_KmeExternalSensorList_SEQOF_name'(Val, TagIn); + +'enc_KmeExternalSensorList_SEQOF_name'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeExternalSensorList_SEQOF_name'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,20},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{1,40},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeExternalSensorList_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type IA5String +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_restricted_string(Bytes2,{1,3},22,[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes3, mandatory, [{tag,128,1,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 3 with type CHOICE OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<2:2,_:1,2:5,_/binary>> -> +'dec_KmeExternalSensorList_SEQOF_name'(Bytes4, opt_or_default, [{tag,128,2,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmeExternalSensorList_SEQOF', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. + + +'dec_KmeExternalSensorList'(Bytes, OptOrMand) -> + 'dec_KmeExternalSensorList'(Bytes, OptOrMand, []). + +'dec_KmeExternalSensorList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeExternalSensorList_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeTenantSpeedDial +%%================================ +'enc_KmeTenantSpeedDial'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,tenantNo), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 External KME-specific-types:KmeSpeedDial +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeSpeedDial'(?RT_BER:cindex(3,Val,kmeSpeedDial), [{tag,128,1,'EXPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeTenantSpeedDial'(Bytes, OptOrMand) -> + 'dec_KmeTenantSpeedDial'(Bytes, OptOrMand, []). + +'dec_KmeTenantSpeedDial'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[{tag,128,0,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 External KME-specific-types:KmeSpeedDial +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeSpeedDial'(Bytes3, mandatory, [{tag,128,1,'EXPLICIT',32}]), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeTenantSpeedDial', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeDistributionMethod +%%================================ +'enc_KmeDistributionMethod'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,group), []), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {EncBytes2,EncLen2} = case (case ?RT_BER:cindex(3,Val,type) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(3,Val,type) end) of +ucd -> ?RT_BER:encode_enumerated(0,[]); +ring -> ?RT_BER:encode_enumerated(1,[]); +hunt -> ?RT_BER:encode_enumerated(2,[]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeDistributionMethod'(Bytes, OptOrMand) -> + 'dec_KmeDistributionMethod'(Bytes, OptOrMand, []). + +'dec_KmeDistributionMethod'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_enumerated(Bytes3,[],[{ucd,0},{ring,1},{hunt,2}],[], mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeDistributionMethod', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmePDFStart +%%================================ +'enc_KmePDFStart'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), []), + + BytesSoFar = [EncBytes1], + LenSoFar = EncLen1, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmePDFStart'(Bytes, OptOrMand) -> + 'dec_KmePDFStart'(Bytes, OptOrMand, []). + +'dec_KmePDFStart'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + + {Bytes4,Rb3} = ?RT_BER:restbytes2(RemBytes, Bytes3,noext), + {{'KmePDFStart', Term1}, Bytes4, Rb1+Rb2+Rb3}. + + +%%================================ +%% KmePDFStop +%%================================ + +'enc_KmePDFStop'({'KmePDFStop',Val}, TagIn) -> + 'enc_KmePDFStop'(Val, TagIn); + +'enc_KmePDFStop'(Val, TagIn) -> + 'CSTA-device-identifiers':'enc_DeviceID'(Val, TagIn ++ []). + + +'dec_KmePDFStop'(Bytes, OptOrMand) -> + 'dec_KmePDFStop'(Bytes, OptOrMand, []). + +'dec_KmePDFStop'(Bytes, OptOrMand, TagIn) -> +'CSTA-device-identifiers':'dec_DeviceID'(Bytes, OptOrMand, TagIn++[]). + + + +%%================================ +%% KmePDFStatus +%%================================ +'enc_KmePDFStatus'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,targetDevice), []), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(3,Val,originatingDevice), []), + +%%------------------------------------------------- +%% attribute number 3 with type BOOLEAN +%%------------------------------------------------- + {EncBytes3,EncLen3} = ?RT_BER:encode_boolean(?RT_BER:cindex(4,Val,status), []), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmePDFStatus'(Bytes, OptOrMand) -> + 'dec_KmePDFStatus'(Bytes, OptOrMand, []). + +'dec_KmePDFStatus'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes3, mandatory, []), + +%%------------------------------------------------- +%% attribute number 3 with type BOOLEAN +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = ?RT_BER:decode_boolean(Bytes4,[], mandatory), + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmePDFStatus', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. + + +%%================================ +%% KmePDFSrvEvt +%%================================ + +'enc_KmePDFSrvEvt'({'KmePDFSrvEvt',Val}, TagIn) -> + 'enc_KmePDFSrvEvt'(Val, TagIn); + +'enc_KmePDFSrvEvt'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + pDFStart -> + 'enc_KmePDFStart'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + pDFStop -> + 'enc_KmePDFStop'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmePDFSrvEvt'(Bytes, OptOrMand) -> + 'dec_KmePDFSrvEvt'(Bytes, OptOrMand, []). + +'dec_KmePDFSrvEvt'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'pDFStart' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmePDFStart'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{pDFStart, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'pDFStop' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmePDFStop'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{pDFStop, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeSvmList +%%================================ + +'enc_KmeSvmList'({'KmeSvmList',Val}, TagIn) -> + 'enc_KmeSvmList'(Val, TagIn); + +'enc_KmeSvmList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeSvmList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeSvmList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeSvmList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeSvmList_SEQOF'(H, []), + 'enc_KmeSvmList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeSvmList_SEQOF +%%================================ +'enc_KmeSvmList_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), []), + +%%------------------------------------------------- +%% attribute number 2 External KME-specific-types:KmeExtName OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,name) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeExtName'(?RT_BER:cindex(3,Val,name), []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). +'dec_KmeSvmList_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 External KME-specific-types:KmeExtName OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case (catch 'dec_KmeExtName'(Bytes3, opt_or_default, [])) of +{'EXIT',{error,{asn1,{no_optional_tag,_}}}} -> { asn1_NOVALUE, Bytes3, 0 }; +Casetmp1-> Casetmp1 +end, + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeSvmList_SEQOF', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +'dec_KmeSvmList'(Bytes, OptOrMand) -> + 'dec_KmeSvmList'(Bytes, OptOrMand, []). + +'dec_KmeSvmList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeSvmList_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeExtName +%%================================ + +'enc_KmeExtName'({'KmeExtName',Val}, TagIn) -> + 'enc_KmeExtName'(Val, TagIn); + +'enc_KmeExtName'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + single -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wide -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeExtName'(Bytes, OptOrMand) -> + 'dec_KmeExtName'(Bytes, OptOrMand, []). + +'dec_KmeExtName'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'single' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{0,20},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{single, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wide' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{0,40},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wide, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% NumberOfMsgPort +%%================================ +'enc_NumberOfMsgPort'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,numberOfMsgPort), []), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_integer([], ?RT_BER:cindex(3,Val,numberOfFreePort), []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_NumberOfMsgPort'(Bytes, OptOrMand) -> + 'dec_NumberOfMsgPort'(Bytes, OptOrMand, []). + +'dec_NumberOfMsgPort'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_integer(Bytes3,[],[], mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'NumberOfMsgPort', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeDndOverride +%%================================ + +'enc_KmeDndOverride'({'KmeDndOverride',Val}, TagIn) -> + 'enc_KmeDndOverride'(Val, TagIn); + +'enc_KmeDndOverride'(Val, TagIn) -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(Val, TagIn ++ []). + + +'dec_KmeDndOverride'(Bytes, OptOrMand) -> + 'dec_KmeDndOverride'(Bytes, OptOrMand, []). + +'dec_KmeDndOverride'(Bytes, OptOrMand, TagIn) -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes, OptOrMand, TagIn++[]). + + + +%%================================ +%% KmeInteruptCall +%%================================ + +'enc_KmeInteruptCall'({'KmeInteruptCall',Val}, TagIn) -> + 'enc_KmeInteruptCall'(Val, TagIn); + +'enc_KmeInteruptCall'(Val, TagIn) -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(Val, TagIn ++ []). + + +'dec_KmeInteruptCall'(Bytes, OptOrMand) -> + 'dec_KmeInteruptCall'(Bytes, OptOrMand, []). + +'dec_KmeInteruptCall'(Bytes, OptOrMand, TagIn) -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes, OptOrMand, TagIn++[]). + + + +%%================================ +%% KmeExternalFeatureAccess +%%================================ + +'enc_KmeExternalFeatureAccess'({'KmeExternalFeatureAccess',Val}, TagIn) -> + 'enc_KmeExternalFeatureAccess'(Val, TagIn); + +'enc_KmeExternalFeatureAccess'(Val, TagIn) -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(Val, TagIn ++ []). + + +'dec_KmeExternalFeatureAccess'(Bytes, OptOrMand) -> + 'dec_KmeExternalFeatureAccess'(Bytes, OptOrMand, []). + +'dec_KmeExternalFeatureAccess'(Bytes, OptOrMand, TagIn) -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes, OptOrMand, TagIn++[]). + + + +%%================================ +%% KmeTempTollChange +%%================================ +'enc_KmeTempTollChange'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-call-connection-identifiers':'enc_ConnectionID'(?RT_BER:cindex(2,Val,connection), []), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_integer([], ?RT_BER:cindex(3,Val,tollLevel), []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeTempTollChange'(Bytes, OptOrMand) -> + 'dec_KmeTempTollChange'(Bytes, OptOrMand, []). + +'dec_KmeTempTollChange'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_integer(Bytes3,[],[], mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeTempTollChange', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeDoorOpen +%%================================ + +'enc_KmeDoorOpen'({'KmeDoorOpen',Val}, TagIn) -> + 'enc_KmeDoorOpen'(Val, TagIn); + +'enc_KmeDoorOpen'(Val, TagIn) -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(Val, TagIn ++ []). + + +'dec_KmeDoorOpen'(Bytes, OptOrMand) -> + 'dec_KmeDoorOpen'(Bytes, OptOrMand, []). + +'dec_KmeDoorOpen'(Bytes, OptOrMand, TagIn) -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes, OptOrMand, TagIn++[]). + + + +%%================================ +%% KmeTwoWayRec +%%================================ +'enc_KmeTwoWayRec'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-call-connection-identifiers':'enc_ConnectionID'(?RT_BER:cindex(2,Val,connection), []), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(3,Val,vmGroupExtNo), 22, []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeTwoWayRec'(Bytes, OptOrMand) -> + 'dec_KmeTwoWayRec'(Bytes, OptOrMand, []). + +'dec_KmeTwoWayRec'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_restricted_string(Bytes3,{1,5},22,[], no_length, mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeTwoWayRec', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeCallBackInvokeReq +%%================================ +'enc_KmeCallBackInvokeReq'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type OCTET STRING +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_octet_string([], ?RT_BER:cindex(2,Val,callBackID), []), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(3,Val,requestingDevice), []), + +%%------------------------------------------------- +%% attribute number 3 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,targetDevice) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(4,Val,targetDevice), []) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeCallBackInvokeReq'(Bytes, OptOrMand) -> + 'dec_KmeCallBackInvokeReq'(Bytes, OptOrMand, []). + +'dec_KmeCallBackInvokeReq'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type OCTET STRING +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_octet_string(Bytes2,{0,4},[], no_length, mandatory), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes3, mandatory, []), + +%%------------------------------------------------- +%% attribute number 3 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<0:2,_:1,16:5,_/binary>> -> +'CSTA-device-identifiers':'dec_DeviceID'(Bytes4, opt_or_default, []); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmeCallBackInvokeReq', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. + + +%%================================ +%% KmeCallBackInvokeRsp +%%================================ + +'enc_KmeCallBackInvokeRsp'({'KmeCallBackInvokeRsp',Val}, TagIn) -> + 'enc_KmeCallBackInvokeRsp'(Val, TagIn); + +'enc_KmeCallBackInvokeRsp'(Val, TagIn) -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(Val, TagIn ++ []). + + +'dec_KmeCallBackInvokeRsp'(Bytes, OptOrMand) -> + 'dec_KmeCallBackInvokeRsp'(Bytes, OptOrMand, []). + +'dec_KmeCallBackInvokeRsp'(Bytes, OptOrMand, TagIn) -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes, OptOrMand, TagIn++[]). + + + +%%================================ +%% CallBackNotification +%%================================ +'enc_CallBackNotification'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type OCTET STRING +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_octet_string([], ?RT_BER:cindex(2,Val,callBackID), []), + +%%------------------------------------------------- +%% attribute number 2 with type BOOLEAN +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_boolean(?RT_BER:cindex(3,Val,prompted), []), + +%%------------------------------------------------- +%% attribute number 3 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes3,EncLen3} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(4,Val,requestingDevice), []), + +%%------------------------------------------------- +%% attribute number 4 External CSTA-device-identifiers:SubjectDeviceID +%%------------------------------------------------- + {EncBytes4,EncLen4} = 'CSTA-device-identifiers':'enc_SubjectDeviceID'(?RT_BER:cindex(5,Val,targetDevice), []), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_CallBackNotification'(Bytes, OptOrMand) -> + 'dec_CallBackNotification'(Bytes, OptOrMand, []). + +'dec_CallBackNotification'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type OCTET STRING +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_octet_string(Bytes2,{0,4},[], no_length, mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type BOOLEAN +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_boolean(Bytes3,[], mandatory), + +%%------------------------------------------------- +%% attribute number 3 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes4, mandatory, []), + +%%------------------------------------------------- +%% attribute number 4 External CSTA-device-identifiers:SubjectDeviceID +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = 'CSTA-device-identifiers':'dec_SubjectDeviceID'(Bytes5, mandatory, []), + + {Bytes7,Rb6} = ?RT_BER:restbytes2(RemBytes, Bytes6,noext), + {{'CallBackNotification', Term1, Term2, Term3, Term4}, Bytes7, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6}. + + +%%================================ +%% KmeCallBackInvoke +%%================================ + +'enc_KmeCallBackInvoke'({'KmeCallBackInvoke',Val}, TagIn) -> + 'enc_KmeCallBackInvoke'(Val, TagIn); + +'enc_KmeCallBackInvoke'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + request -> + 'enc_KmeCallBackInvokeReq'(element(2,Val), []); + result -> + 'enc_KmeCallBackInvokeRsp'(element(2,Val), []); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeCallBackInvoke'(Bytes, OptOrMand) -> + 'dec_KmeCallBackInvoke'(Bytes, OptOrMand, []). + +'dec_KmeCallBackInvoke'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'request' + <<0:2,_:1,16:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeCallBackInvokeReq'(Bytes1, mandatory, []), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'result' + <<1:2,_:1,11:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeCallBackInvokeRsp'(Bytes1, mandatory, []), + {{result, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmePcRec +%%================================ +'enc_KmePcRec'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-call-connection-identifiers':'enc_ConnectionID'(?RT_BER:cindex(2,Val,connection), []), + +%%------------------------------------------------- +%% attribute number 2 with type BOOLEAN +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_boolean(?RT_BER:cindex(3,Val,pcRecOn), []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmePcRec'(Bytes, OptOrMand) -> + 'dec_KmePcRec'(Bytes, OptOrMand, []). + +'dec_KmePcRec'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type BOOLEAN +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_boolean(Bytes3,[], mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmePcRec', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeDeviceAgentStatus +%%================================ +'enc_KmeDeviceAgentStatus'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {EncBytes2,EncLen2} = case (case ?RT_BER:cindex(3,Val,status) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(3,Val,status) end) of +logout -> ?RT_BER:encode_enumerated(0,[{tag,128,1,'EXPLICIT',32}]); +login -> ?RT_BER:encode_enumerated(1,[{tag,128,1,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + +%%------------------------------------------------- +%% attribute number 3 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes3,EncLen3} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(4,Val,imcomingGroup), [{tag,128,2,'EXPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeDeviceAgentStatus'(Bytes, OptOrMand) -> + 'dec_KmeDeviceAgentStatus'(Bytes, OptOrMand, []). + +'dec_KmeDeviceAgentStatus'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_enumerated(Bytes3,[],[{logout,0},{login,1}],[{tag,128,1,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 3 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes4, mandatory, [{tag,128,2,'EXPLICIT',32}]), + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmeDeviceAgentStatus', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. + + +%%================================ +%% KmeDeviceCallStatus +%%================================ + +'enc_KmeDeviceCallStatus'({'KmeDeviceCallStatus',Val}, TagIn) -> + 'enc_KmeDeviceCallStatus'(Val, TagIn); + +'enc_KmeDeviceCallStatus'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeDeviceCallStatus_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeDeviceCallStatus_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeDeviceCallStatus_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeDeviceCallStatus_SEQOF'(H, []), + 'enc_KmeDeviceCallStatus_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeDeviceCallStatus_SEQOF +%%================================ +'enc_KmeDeviceCallStatus_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeDeviceCallStatus_SEQOF_status'(?RT_BER:cindex(3,Val,status), [{tag,128,1,'EXPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeDeviceCallStatus_SEQOF_status +%%================================ + +'enc_KmeDeviceCallStatus_SEQOF_status'({'KmeDeviceCallStatus_SEQOF_status',Val}, TagIn) -> + 'enc_KmeDeviceCallStatus_SEQOF_status'(Val, TagIn); + +'enc_KmeDeviceCallStatus_SEQOF_status'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + lineStatus -> + case (case element(2,Val) of {_,Enumval1}->Enumval1;_->element(2,Val) end) of +idle -> ?RT_BER:encode_enumerated(0,[{tag,128,0,'EXPLICIT',32}]); +ring -> ?RT_BER:encode_enumerated(1,[{tag,128,0,'EXPLICIT',32}]); +busy -> ?RT_BER:encode_enumerated(2,[{tag,128,0,'EXPLICIT',32}]); +hold -> ?RT_BER:encode_enumerated(3,[{tag,128,0,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end; + parkStatus -> + 'enc_KmeDeviceCallStatus_SEQOF_status_parkStatus'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + + +%%================================ +%% KmeDeviceCallStatus_SEQOF_status_parkStatus +%%================================ +'enc_KmeDeviceCallStatus_SEQOF_status_parkStatus'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,area), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type OCTET STRING +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_octet_string([], ?RT_BER:cindex(3,Val,call), [{tag,128,1,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 3 with type ENUMERATED +%%------------------------------------------------- + {EncBytes3,EncLen3} = case (case ?RT_BER:cindex(4,Val,action) of {_,Enumval3}->Enumval3;_->?RT_BER:cindex(4,Val,action) end) of +parkin -> ?RT_BER:encode_enumerated(0,[]); +parkout -> ?RT_BER:encode_enumerated(1,[]); +Enumval4 -> exit({error,{asn1, {enumerated_not_in_range,Enumval4}}}) +end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). +'dec_KmeDeviceCallStatus_SEQOF_status_parkStatus'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,{0,999},[{tag,128,0,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type OCTET STRING +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_octet_string(Bytes3,[],[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + +%%------------------------------------------------- +%% attribute number 3 with type ENUMERATED +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = ?RT_BER:decode_enumerated(Bytes4,[],[{parkin,0},{parkout,1}],[], mandatory), + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmeDeviceCallStatus_SEQOF_status_parkStatus', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. +'dec_KmeDeviceCallStatus_SEQOF_status'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'lineStatus' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{idle,0},{ring,1},{busy,2},{hold,3}],[{tag,128,0,'EXPLICIT',32}], mandatory), + {{lineStatus, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'parkStatus' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDeviceCallStatus_SEQOF_status_parkStatus'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{parkStatus, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeDeviceCallStatus_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeDeviceCallStatus_SEQOF_status'(Bytes3, mandatory, [{tag,128,1,'EXPLICIT',32}]), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeDeviceCallStatus_SEQOF', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +'dec_KmeDeviceCallStatus'(Bytes, OptOrMand) -> + 'dec_KmeDeviceCallStatus'(Bytes, OptOrMand, []). + +'dec_KmeDeviceCallStatus'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeDeviceCallStatus_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeDeviceServiceStatus +%%================================ +'enc_KmeDeviceServiceStatus'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type CHOICE +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'enc_KmeDeviceServiceStatus_source'(?RT_BER:cindex(2,Val,source), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {EncBytes2,EncLen2} = case (case ?RT_BER:cindex(3,Val,status) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(3,Val,status) end) of +ous -> ?RT_BER:encode_enumerated(0,[{tag,128,1,'EXPLICIT',32}]); +ins -> ?RT_BER:encode_enumerated(1,[{tag,128,1,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeDeviceServiceStatus_source +%%================================ + +'enc_KmeDeviceServiceStatus_source'({'KmeDeviceServiceStatus_source',Val}, TagIn) -> + 'enc_KmeDeviceServiceStatus_source'(Val, TagIn); + +'enc_KmeDeviceServiceStatus_source'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + device -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + cabinet -> + ?RT_BER:encode_integer([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeDeviceServiceStatus_source'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'device' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{device, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'cabinet' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_integer(Bytes1,[],[{tag,128,1,'EXPLICIT',32}], mandatory), + {{cabinet, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +'dec_KmeDeviceServiceStatus'(Bytes, OptOrMand) -> + 'dec_KmeDeviceServiceStatus'(Bytes, OptOrMand, []). + +'dec_KmeDeviceServiceStatus'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type CHOICE +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'dec_KmeDeviceServiceStatus_source'(Bytes2, mandatory, [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_enumerated(Bytes3,[],[{ous,0},{ins,1}],[{tag,128,1,'EXPLICIT',32}], mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeDeviceServiceStatus', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeLineStatus +%%================================ +'enc_KmeLineStatus'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type ENUMERATED +%%------------------------------------------------- + {EncBytes1,EncLen1} = case (case ?RT_BER:cindex(2,Val,segmentId) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(2,Val,segmentId) end) of +wired1 -> ?RT_BER:encode_enumerated(0,[]); +wired2 -> ?RT_BER:encode_enumerated(1,[]); +wireless -> ?RT_BER:encode_enumerated(2,[]); +trunk -> ?RT_BER:encode_enumerated(3,[]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + +%%------------------------------------------------- +%% attribute number 2 with type OCTET STRING +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_octet_string([], ?RT_BER:cindex(3,Val,lineInformation), []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeLineStatus'(Bytes, OptOrMand) -> + 'dec_KmeLineStatus'(Bytes, OptOrMand, []). + +'dec_KmeLineStatus'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type ENUMERATED +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_enumerated(Bytes2,[],[{wired1,0},{wired2,1},{wireless,2},{trunk,3}],[], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type OCTET STRING +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_octet_string(Bytes3,{0,384},[], no_length, mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeLineStatus', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeLineStatusSegment +%%================================ + +'enc_KmeLineStatusSegment'({'KmeLineStatusSegment',Val}, TagIn) -> + 'enc_KmeLineStatusSegment'(Val, TagIn); + +'enc_KmeLineStatusSegment'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +wired1 -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +wired2 -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +wireless -> ?RT_BER:encode_enumerated(2,TagIn ++ []); +trunk -> ?RT_BER:encode_enumerated(3,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeLineStatusSegment'(Bytes, OptOrMand) -> + 'dec_KmeLineStatusSegment'(Bytes, OptOrMand, []). + +'dec_KmeLineStatusSegment'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{wired1,0},{wired2,1},{wireless,2},{trunk,3}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeStartDeviceMonitor +%%================================ + +'enc_KmeStartDeviceMonitor'({'KmeStartDeviceMonitor',Val}, TagIn) -> + 'enc_KmeStartDeviceMonitor'(Val, TagIn); + +'enc_KmeStartDeviceMonitor'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + null -> + ?RT_BER:encode_null(element(2,Val), []); + event -> + case (case element(2,Val) of {_,Enumval2}->Enumval2;_->element(2,Val) end) of +deviceCallStatus -> ?RT_BER:encode_enumerated(0,[]); +deviceLineStatus -> ?RT_BER:encode_enumerated(1,[]); +Enumval3 -> exit({error,{asn1, {enumerated_not_in_range,Enumval3}}}) +end; + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeStartDeviceMonitor'(Bytes, OptOrMand) -> + 'dec_KmeStartDeviceMonitor'(Bytes, OptOrMand, []). + +'dec_KmeStartDeviceMonitor'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'null' + <<0:2,_:1,5:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_null(Bytes1,[], mandatory), + {{null, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'event' + <<0:2,_:1,10:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{deviceCallStatus,0},{deviceLineStatus,1}],[], mandatory), + {{event, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeStopDeviceMonitor +%%================================ + +'enc_KmeStopDeviceMonitor'({'KmeStopDeviceMonitor',Val}, TagIn) -> + 'enc_KmeStopDeviceMonitor'(Val, TagIn); + +'enc_KmeStopDeviceMonitor'(Val, TagIn) -> +?RT_BER:encode_null(Val, TagIn ++ []). + + +'dec_KmeStopDeviceMonitor'(Bytes, OptOrMand) -> + 'dec_KmeStopDeviceMonitor'(Bytes, OptOrMand, []). + +'dec_KmeStopDeviceMonitor'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_null(Bytes,TagIn++[], OptOrMand). + + + +%%================================ +%% CallMonitorEvent +%%================================ + +'enc_CallMonitorEvent'({'CallMonitorEvent',Val}, TagIn) -> + 'enc_CallMonitorEvent'(Val, TagIn); + +'enc_CallMonitorEvent'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +deviceCallStatus -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +deviceLineStatus -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_CallMonitorEvent'(Bytes, OptOrMand) -> + 'dec_CallMonitorEvent'(Bytes, OptOrMand, []). + +'dec_CallMonitorEvent'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{deviceCallStatus,0},{deviceLineStatus,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeBroadcastGroupList +%%================================ + +'enc_KmeBroadcastGroupList'({'KmeBroadcastGroupList',Val}, TagIn) -> + 'enc_KmeBroadcastGroupList'(Val, TagIn); + +'enc_KmeBroadcastGroupList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeBroadcastGroupList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeBroadcastGroupList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeBroadcastGroupList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeBroadcastGroupList_SEQOF'(H, []), + 'enc_KmeBroadcastGroupList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeBroadcastGroupList_SEQOF +%%================================ +'enc_KmeBroadcastGroupList_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,groupNo), []), + +%%------------------------------------------------- +%% attribute number 2 External KME-specific-types:KmeExtName OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,name) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeExtName'(?RT_BER:cindex(3,Val,name), []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). +'dec_KmeBroadcastGroupList_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 2 External KME-specific-types:KmeExtName OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case (catch 'dec_KmeExtName'(Bytes3, opt_or_default, [])) of +{'EXIT',{error,{asn1,{no_optional_tag,_}}}} -> { asn1_NOVALUE, Bytes3, 0 }; +Casetmp1-> Casetmp1 +end, + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeBroadcastGroupList_SEQOF', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +'dec_KmeBroadcastGroupList'(Bytes, OptOrMand) -> + 'dec_KmeBroadcastGroupList'(Bytes, OptOrMand, []). + +'dec_KmeBroadcastGroupList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeBroadcastGroupList_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeBroadcastGrpMembers +%%================================ +'enc_KmeBroadcastGrpMembers'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,groupNo), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type SEQUENCE OF +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeBroadcastGrpMembers_members'(?RT_BER:cindex(3,Val,members), [{tag,128,1,'IMPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeBroadcastGrpMembers_members +%%================================ + +'enc_KmeBroadcastGrpMembers_members'({'KmeBroadcastGrpMembers_members',Val}, TagIn) -> + 'enc_KmeBroadcastGrpMembers_members'(Val, TagIn); + +'enc_KmeBroadcastGrpMembers_members'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeBroadcastGrpMembers_members_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeBroadcastGrpMembers_members_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeBroadcastGrpMembers_members_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'CSTA-device-identifiers':'enc_DeviceID'(H, []), + 'enc_KmeBroadcastGrpMembers_members_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + +'dec_KmeBroadcastGrpMembers_members'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'CSTA-device-identifiers':'dec_DeviceID'/3, [], []). + + + + +'dec_KmeBroadcastGrpMembers'(Bytes, OptOrMand) -> + 'dec_KmeBroadcastGrpMembers'(Bytes, OptOrMand, []). + +'dec_KmeBroadcastGrpMembers'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[{tag,128,0,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type SEQUENCE OF +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeBroadcastGrpMembers_members'(Bytes3, mandatory, [{tag,128,1,'IMPLICIT',32}]), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeBroadcastGrpMembers', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeAlterIfSrvEvt +%%================================ + +'enc_KmeAlterIfSrvEvt'({'KmeAlterIfSrvEvt',Val}, TagIn) -> + 'enc_KmeAlterIfSrvEvt'(Val, TagIn); + +'enc_KmeAlterIfSrvEvt'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + alterIf -> + case (case element(2,Val) of {_,Enumval1}->Enumval1;_->element(2,Val) end) of +version0 -> ?RT_BER:encode_enumerated(0,[{tag,128,0,'EXPLICIT',32}]); +version1 -> ?RT_BER:encode_enumerated(1,[{tag,128,0,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end; + ifAltered -> + case (case element(2,Val) of {_,Enumval3}->Enumval3;_->element(2,Val) end) of +version0 -> ?RT_BER:encode_enumerated(0,[{tag,128,1,'EXPLICIT',32}]); +version1 -> ?RT_BER:encode_enumerated(1,[{tag,128,1,'EXPLICIT',32}]); +Enumval4 -> exit({error,{asn1, {enumerated_not_in_range,Enumval4}}}) +end; + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeAlterIfSrvEvt'(Bytes, OptOrMand) -> + 'dec_KmeAlterIfSrvEvt'(Bytes, OptOrMand, []). + +'dec_KmeAlterIfSrvEvt'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'alterIf' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{version0,0},{version1,1}],[{tag,128,0,'EXPLICIT',32}], mandatory), + {{alterIf, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'ifAltered' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{version0,0},{version1,1}],[{tag,128,1,'EXPLICIT',32}], mandatory), + {{ifAltered, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeAlterIf +%%================================ + +'enc_KmeAlterIf'({'KmeAlterIf',Val}, TagIn) -> + 'enc_KmeAlterIf'(Val, TagIn); + +'enc_KmeAlterIf'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +version0 -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +version1 -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeAlterIf'(Bytes, OptOrMand) -> + 'dec_KmeAlterIf'(Bytes, OptOrMand, []). + +'dec_KmeAlterIf'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{version0,0},{version1,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeIfAltered +%%================================ + +'enc_KmeIfAltered'({'KmeIfAltered',Val}, TagIn) -> + 'enc_KmeIfAltered'(Val, TagIn); + +'enc_KmeIfAltered'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +version0 -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +version1 -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeIfAltered'(Bytes, OptOrMand) -> + 'dec_KmeIfAltered'(Bytes, OptOrMand, []). + +'dec_KmeIfAltered'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{version0,0},{version1,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% IfVersion +%%================================ + +'enc_IfVersion'({'IfVersion',Val}, TagIn) -> + 'enc_IfVersion'(Val, TagIn); + +'enc_IfVersion'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +version0 -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +version1 -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_IfVersion'(Bytes, OptOrMand) -> + 'dec_IfVersion'(Bytes, OptOrMand, []). + +'dec_IfVersion'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{version0,0},{version1,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeDeviceDataList +%%================================ + +'enc_KmeDeviceDataList'({'KmeDeviceDataList',Val}, TagIn) -> + 'enc_KmeDeviceDataList'(Val, TagIn); + +'enc_KmeDeviceDataList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeDeviceDataList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeDeviceDataList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeDeviceDataList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeDeviceDataList_SEQOF'(H, []), + 'enc_KmeDeviceDataList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeDeviceDataList_SEQOF +%%================================ +'enc_KmeDeviceDataList_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeDeviceDataList_SEQOF_sysData'(?RT_BER:cindex(3,Val,sysData), [{tag,128,1,'EXPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeDeviceDataList_SEQOF_sysData +%%================================ + +'enc_KmeDeviceDataList_SEQOF_sysData'({'KmeDeviceDataList_SEQOF_sysData',Val}, TagIn) -> + 'enc_KmeDeviceDataList_SEQOF_sysData'(Val, TagIn); + +'enc_KmeDeviceDataList_SEQOF_sysData'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + standardInfo -> + 'enc_KmeDeviceDataList_SEQOF_sysData_standardInfo'(element(2,Val), []); + extName -> + 'enc_KmeExtName'(element(2,Val), [{tag,128,41,'EXPLICIT',32}]); + fcoKeyList -> + 'enc_KmeFcoKeyList'(element(2,Val), [{tag,128,44,'EXPLICIT',32}]); + sxdpMaster -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,45,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + + +%%================================ +%% KmeDeviceDataList_SEQOF_sysData_standardInfo +%%================================ +'enc_KmeDeviceDataList_SEQOF_sysData_standardInfo'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External KME-specific-types:KmeWakeUpInfo OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case ?RT_BER:cindex(2,Val,wakeUp) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeWakeUpInfo'(?RT_BER:cindex(2,Val,wakeUp), [{tag,128,9,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,remoteLock) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case (case ?RT_BER:cindex(3,Val,remoteLock) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(3,Val,remoteLock) end) of +lock -> ?RT_BER:encode_enumerated(0,[{tag,128,10,'EXPLICIT',32}]); +unlock -> ?RT_BER:encode_enumerated(1,[{tag,128,10,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end + end, + +%%------------------------------------------------- +%% attribute number 3 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,callLogLock) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case (case ?RT_BER:cindex(4,Val,callLogLock) of {_,Enumval3}->Enumval3;_->?RT_BER:cindex(4,Val,callLogLock) end) of +lock -> ?RT_BER:encode_enumerated(0,[{tag,128,11,'EXPLICIT',32}]); +unlock -> ?RT_BER:encode_enumerated(1,[{tag,128,11,'EXPLICIT',32}]); +Enumval4 -> exit({error,{asn1, {enumerated_not_in_range,Enumval4}}}) +end + end, + +%%------------------------------------------------- +%% attribute number 4 External KME-specific-types:KmeAbsentMessage OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case ?RT_BER:cindex(5,Val,absentMessage) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeAbsentMessage'(?RT_BER:cindex(5,Val,absentMessage), [{tag,128,12,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 5 External CSTA-device-feature-types:ForwardList OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case ?RT_BER:cindex(6,Val,forwardDnd) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-device-feature-types':'enc_ForwardList'(?RT_BER:cindex(6,Val,forwardDnd), [{tag,128,13,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 6 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes6,EncLen6} = case ?RT_BER:cindex(7,Val,cos) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(7,Val,cos), [{tag,128,34,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 7 External KME-specific-types:KmePhoneProperty OPTIONAL +%%------------------------------------------------- + {EncBytes7,EncLen7} = case ?RT_BER:cindex(8,Val,phoneProperty) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmePhoneProperty'(?RT_BER:cindex(8,Val,phoneProperty), [{tag,128,35,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 8 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {EncBytes8,EncLen8} = case ?RT_BER:cindex(9,Val,assocIncomGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_bit_string([], ?RT_BER:cindex(9,Val,assocIncomGroup), [{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}], [{tag,128,36,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 9 with type SEQUENCE OF OPTIONAL +%%------------------------------------------------- + {EncBytes9,EncLen9} = case ?RT_BER:cindex(10,Val,messageWaiting) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting'(?RT_BER:cindex(10,Val,messageWaiting), [{tag,128,37,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 10 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes10,EncLen10} = case ?RT_BER:cindex(11,Val,assocExtGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(11,Val,assocExtGroup), [{tag,128,39,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6, EncBytes7, EncBytes8, EncBytes9, EncBytes10], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6 + EncLen7 + EncLen8 + EncLen9 + EncLen10, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting +%%================================ + +'enc_KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting'({'KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting',Val}, TagIn) -> + 'enc_KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting'(Val, TagIn); + +'enc_KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'CSTA-device-identifiers':'enc_DeviceID'(H, []), + 'enc_KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + +'dec_KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'CSTA-device-identifiers':'dec_DeviceID'/3, [], []). + + +'dec_KmeDeviceDataList_SEQOF_sysData_standardInfo'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External KME-specific-types:KmeWakeUpInfo OPTIONAL +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = case Bytes2 of +<<2:2,_:1,9:5,_/binary>> -> +'dec_KmeWakeUpInfo'(Bytes2, opt_or_default, [{tag,128,9,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes2, 0 } +end, + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<2:2,_:1,10:5,_/binary>> -> +?RT_BER:decode_enumerated(Bytes3,[],[{lock,0},{unlock,1}],[{tag,128,10,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + +%%------------------------------------------------- +%% attribute number 3 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<2:2,_:1,11:5,_/binary>> -> +?RT_BER:decode_enumerated(Bytes4,[],[{lock,0},{unlock,1}],[{tag,128,11,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + +%%------------------------------------------------- +%% attribute number 4 External KME-specific-types:KmeAbsentMessage OPTIONAL +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = case Bytes5 of +<<2:2,_:1,12:5,_/binary>> -> +'dec_KmeAbsentMessage'(Bytes5, opt_or_default, [{tag,128,12,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes5, 0 } +end, + +%%------------------------------------------------- +%% attribute number 5 External CSTA-device-feature-types:ForwardList OPTIONAL +%%------------------------------------------------- + {Term5,Bytes7,Rb6} = case Bytes6 of +<<2:2,_:1,13:5,_/binary>> -> +'CSTA-device-feature-types':'dec_ForwardList'(Bytes6, opt_or_default, [{tag,128,13,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes6, 0 } +end, + +%%------------------------------------------------- +%% attribute number 6 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term6,Bytes8,Rb7} = case Bytes7 of +<<2:2,_:1,31:5,34,_/binary>> -> +?RT_BER:decode_integer(Bytes7,[],[{tag,128,34,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes7, 0 } +end, + +%%------------------------------------------------- +%% attribute number 7 External KME-specific-types:KmePhoneProperty OPTIONAL +%%------------------------------------------------- + {Term7,Bytes9,Rb8} = case Bytes8 of +<<2:2,_:1,31:5,35,_/binary>> -> +'dec_KmePhoneProperty'(Bytes8, opt_or_default, [{tag,128,35,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes8, 0 } +end, + +%%------------------------------------------------- +%% attribute number 8 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {Term8,Bytes10,Rb9} = case Bytes9 of +<<2:2,_:1,31:5,36,_/binary>> -> +?RT_BER:decode_bit_string(Bytes9,[],[{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}],[{tag,128,36,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes9, 0 } +end, + +%%------------------------------------------------- +%% attribute number 9 with type SEQUENCE OF OPTIONAL +%%------------------------------------------------- + {Term9,Bytes11,Rb10} = case Bytes10 of +<<2:2,_:1,31:5,37,_/binary>> -> +'dec_KmeDeviceDataList_SEQOF_sysData_standardInfo_messageWaiting'(Bytes10, opt_or_default, [{tag,128,37,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes10, 0 } +end, + +%%------------------------------------------------- +%% attribute number 10 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term10,Bytes12,Rb11} = case Bytes11 of +<<2:2,_:1,31:5,39,_/binary>> -> +?RT_BER:decode_integer(Bytes11,[],[{tag,128,39,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes11, 0 } +end, + + {Bytes13,Rb12} = ?RT_BER:restbytes2(RemBytes, Bytes12,noext), + {{'KmeDeviceDataList_SEQOF_sysData_standardInfo', Term1, Term2, Term3, Term4, Term5, Term6, Term7, Term8, Term9, Term10}, Bytes13, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6+Rb7+Rb8+Rb9+Rb10+Rb11+Rb12}. +'dec_KmeDeviceDataList_SEQOF_sysData'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'standardInfo' + <<0:2,_:1,16:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDeviceDataList_SEQOF_sysData_standardInfo'(Bytes1, mandatory, []), + {{standardInfo, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'extName' + <<2:2,_:1,31:5,41,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeExtName'(Bytes1, mandatory, [{tag,128,41,'EXPLICIT',32}]), + {{extName, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'fcoKeyList' + <<2:2,_:1,31:5,44,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeFcoKeyList'(Bytes1, mandatory, [{tag,128,44,'EXPLICIT',32}]), + {{fcoKeyList, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'sxdpMaster' + <<2:2,_:1,31:5,45,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,45,'EXPLICIT',32}]), + {{sxdpMaster, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeDeviceDataList_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeDeviceDataList_SEQOF_sysData'(Bytes3, mandatory, [{tag,128,1,'EXPLICIT',32}]), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeDeviceDataList_SEQOF', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +'dec_KmeDeviceDataList'(Bytes, OptOrMand) -> + 'dec_KmeDeviceDataList'(Bytes, OptOrMand, []). + +'dec_KmeDeviceDataList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeDeviceDataList_SEQOF'/3, [], []). + + + + +%%================================ +%% KmePdnGMembers +%%================================ +'enc_KmePdnGMembers'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,groupDevice), [{tag,128,0,'IMPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type SEQUENCE OF +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmePdnGMembers_members'(?RT_BER:cindex(3,Val,members), [{tag,128,1,'IMPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmePdnGMembers_members +%%================================ + +'enc_KmePdnGMembers_members'({'KmePdnGMembers_members',Val}, TagIn) -> + 'enc_KmePdnGMembers_members'(Val, TagIn); + +'enc_KmePdnGMembers_members'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmePdnGMembers_members_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmePdnGMembers_members_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmePdnGMembers_members_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'CSTA-device-identifiers':'enc_DeviceID'(H, []), + 'enc_KmePdnGMembers_members_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + +'dec_KmePdnGMembers_members'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'CSTA-device-identifiers':'dec_DeviceID'/3, [], []). + + + + +'dec_KmePdnGMembers'(Bytes, OptOrMand) -> + 'dec_KmePdnGMembers'(Bytes, OptOrMand, []). + +'dec_KmePdnGMembers'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, [{tag,128,0,'IMPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type SEQUENCE OF +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmePdnGMembers_members'(Bytes3, mandatory, [{tag,128,1,'IMPLICIT',32}]), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmePdnGMembers', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeHotelSrvEvt +%%================================ + +'enc_KmeHotelSrvEvt'({'KmeHotelSrvEvt',Val}, TagIn) -> + 'enc_KmeHotelSrvEvt'(Val, TagIn); + +'enc_KmeHotelSrvEvt'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + guestCheckIn -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,0,'IMPLICIT',32}]); + guestCheckOut -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,1,'IMPLICIT',32}]); + checkedIn -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,2,'IMPLICIT',32}]); + checkedOut -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,3,'IMPLICIT',32}]); + cleanUp -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,4,'IMPLICIT',32}]); + cleanUpReady -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,5,'IMPLICIT',32}]); + cleanUpNotReady -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,6,'IMPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeHotelSrvEvt'(Bytes, OptOrMand) -> + 'dec_KmeHotelSrvEvt'(Bytes, OptOrMand, []). + +'dec_KmeHotelSrvEvt'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'guestCheckIn' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,0,'IMPLICIT',32}]), + {{guestCheckIn, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'guestCheckOut' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,1,'IMPLICIT',32}]), + {{guestCheckOut, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'checkedIn' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,2,'IMPLICIT',32}]), + {{checkedIn, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'checkedOut' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,3,'IMPLICIT',32}]), + {{checkedOut, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'cleanUp' + <<2:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,4,'IMPLICIT',32}]), + {{cleanUp, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'cleanUpReady' + <<2:2,_:1,5:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,5,'IMPLICIT',32}]), + {{cleanUpReady, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'cleanUpNotReady' + <<2:2,_:1,6:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,6,'IMPLICIT',32}]), + {{cleanUpNotReady, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeCheckStatusList +%%================================ + +'enc_KmeCheckStatusList'({'KmeCheckStatusList',Val}, TagIn) -> + 'enc_KmeCheckStatusList'(Val, TagIn); + +'enc_KmeCheckStatusList'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeCheckStatusList_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeCheckStatusList_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeCheckStatusList_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'enc_KmeCheckStatusList_SEQOF'(H, []), + 'enc_KmeCheckStatusList_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + + + + +%%================================ +%% KmeCheckStatusList_SEQOF +%%================================ +'enc_KmeCheckStatusList_SEQOF'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,extNo), []), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {EncBytes2,EncLen2} = case (case ?RT_BER:cindex(3,Val,status) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(3,Val,status) end) of +checkIn -> ?RT_BER:encode_enumerated(0,[]); +checkOut -> ?RT_BER:encode_enumerated(1,[]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + +%%------------------------------------------------- +%% attribute number 3 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,cleanUpStatus) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case (case ?RT_BER:cindex(4,Val,cleanUpStatus) of {_,Enumval3}->Enumval3;_->?RT_BER:cindex(4,Val,cleanUpStatus) end) of +ready -> ?RT_BER:encode_enumerated(0,[]); +notReady -> ?RT_BER:encode_enumerated(1,[]); +Enumval4 -> exit({error,{asn1, {enumerated_not_in_range,Enumval4}}}) +end + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3], + LenSoFar = EncLen1 + EncLen2 + EncLen3, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). +'dec_KmeCheckStatusList_SEQOF'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_enumerated(Bytes3,[],[{checkIn,0},{checkOut,1}],[], mandatory), + +%%------------------------------------------------- +%% attribute number 3 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<0:2,_:1,10:5,_/binary>> -> +?RT_BER:decode_enumerated(Bytes4,[],[{ready,0},{notReady,1}],[], mandatory); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + + {Bytes6,Rb5} = ?RT_BER:restbytes2(RemBytes, Bytes5,noext), + {{'KmeCheckStatusList_SEQOF', Term1, Term2, Term3}, Bytes6, Rb1+Rb2+Rb3+Rb4+Rb5}. + + +'dec_KmeCheckStatusList'(Bytes, OptOrMand) -> + 'dec_KmeCheckStatusList'(Bytes, OptOrMand, []). + +'dec_KmeCheckStatusList'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'dec_KmeCheckStatusList_SEQOF'/3, [], []). + + + + +%%================================ +%% KmeRoomStatus +%%================================ + +'enc_KmeRoomStatus'({'KmeRoomStatus',Val}, TagIn) -> + 'enc_KmeRoomStatus'(Val, TagIn); + +'enc_KmeRoomStatus'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +checkIn -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +checkOut -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeRoomStatus'(Bytes, OptOrMand) -> + 'dec_KmeRoomStatus'(Bytes, OptOrMand, []). + +'dec_KmeRoomStatus'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{checkIn,0},{checkOut,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeCleanUpStatus +%%================================ + +'enc_KmeCleanUpStatus'({'KmeCleanUpStatus',Val}, TagIn) -> + 'enc_KmeCleanUpStatus'(Val, TagIn); + +'enc_KmeCleanUpStatus'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +ready -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +notReady -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeCleanUpStatus'(Bytes, OptOrMand) -> + 'dec_KmeCleanUpStatus'(Bytes, OptOrMand, []). + +'dec_KmeCleanUpStatus'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{ready,0},{notReady,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeGetSystemDataReq +%%================================ + +'enc_KmeGetSystemDataReq'({'KmeGetSystemDataReq',Val}, TagIn) -> + 'enc_KmeGetSystemDataReq'(Val, TagIn); + +'enc_KmeGetSystemDataReq'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + systemData -> + case (case element(2,Val) of {_,Enumval1}->Enumval1;_->element(2,Val) end) of +sysTimeStamp -> ?RT_BER:encode_enumerated(0,[{tag,128,0,'EXPLICIT',32}]); +devTimeStamp -> ?RT_BER:encode_enumerated(1,[{tag,128,0,'EXPLICIT',32}]); +featureList -> ?RT_BER:encode_enumerated(2,[{tag,128,0,'EXPLICIT',32}]); +speedDial -> ?RT_BER:encode_enumerated(3,[{tag,128,0,'EXPLICIT',32}]); +trunkGroup -> ?RT_BER:encode_enumerated(4,[{tag,128,0,'EXPLICIT',32}]); +extensionGroup -> ?RT_BER:encode_enumerated(5,[{tag,128,0,'EXPLICIT',32}]); +pickupGroup -> ?RT_BER:encode_enumerated(6,[{tag,128,0,'EXPLICIT',32}]); +pagingGroup -> ?RT_BER:encode_enumerated(7,[{tag,128,0,'EXPLICIT',32}]); +incomingGroup -> ?RT_BER:encode_enumerated(8,[{tag,128,0,'EXPLICIT',32}]); +dayNightMode -> ?RT_BER:encode_enumerated(9,[{tag,128,0,'EXPLICIT',32}]); +doorPhone -> ?RT_BER:encode_enumerated(10,[{tag,128,0,'EXPLICIT',32}]); +vmGroup -> ?RT_BER:encode_enumerated(11,[{tag,128,0,'EXPLICIT',32}]); +manufacturerName -> ?RT_BER:encode_enumerated(12,[{tag,128,0,'EXPLICIT',32}]); +subdomainName -> ?RT_BER:encode_enumerated(13,[{tag,128,0,'EXPLICIT',32}]); +softwareVersion -> ?RT_BER:encode_enumerated(14,[{tag,128,0,'EXPLICIT',32}]); +ctiVersion -> ?RT_BER:encode_enumerated(15,[{tag,128,0,'EXPLICIT',32}]); +regionCode -> ?RT_BER:encode_enumerated(16,[{tag,128,0,'EXPLICIT',32}]); +systemTime -> ?RT_BER:encode_enumerated(17,[{tag,128,0,'EXPLICIT',32}]); +numberOfMsgPort -> ?RT_BER:encode_enumerated(18,[{tag,128,0,'EXPLICIT',32}]); +psGroup -> ?RT_BER:encode_enumerated(19,[{tag,128,0,'EXPLICIT',32}]); +whoAmI -> ?RT_BER:encode_enumerated(20,[{tag,128,0,'EXPLICIT',32}]); +broadcastGroup -> ?RT_BER:encode_enumerated(21,[{tag,128,0,'EXPLICIT',32}]); +pbxType -> ?RT_BER:encode_enumerated(22,[{tag,128,0,'EXPLICIT',32}]); +externalSensor -> ?RT_BER:encode_enumerated(23,[{tag,128,0,'EXPLICIT',32}]); +svm -> ?RT_BER:encode_enumerated(24,[{tag,128,0,'EXPLICIT',32}]); +pdn -> ?RT_BER:encode_enumerated(25,[{tag,128,0,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end; + deviceData -> + 'enc_KmeGetSystemDataReq_deviceData'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + trkExtGMember -> + 'enc_KmeGetSystemDataReq_trkExtGMember'(element(2,Val), [{tag,128,2,'IMPLICIT',32}]); + incomGMember -> + 'enc_KmeGetSystemDataReq_incomGMember'(element(2,Val), [{tag,128,3,'IMPLICIT',32}]); + deviceList -> + 'enc_KmeRequestedDevice'(element(2,Val), [{tag,128,4,'EXPLICIT',32}]); + vmGMember -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,5,'EXPLICIT',32}]); + speedDial -> + 'enc_KmeSpeedDialRequest'(element(2,Val), [{tag,128,6,'EXPLICIT',32}]); + broadcastGMembers -> + ?RT_BER:encode_integer([], element(2,Val), [{tag,128,7,'EXPLICIT',32}]); + guestCheckStatus -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,8,'IMPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + + +%%================================ +%% KmeGetSystemDataReq_deviceData +%%================================ +'enc_KmeGetSystemDataReq_deviceData'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeGetSystemDataReq_deviceData_sysData'(?RT_BER:cindex(3,Val,sysData), [{tag,128,1,'EXPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeGetSystemDataReq_deviceData_sysData +%%================================ + +'enc_KmeGetSystemDataReq_deviceData_sysData'({'KmeGetSystemDataReq_deviceData_sysData',Val}, TagIn) -> + 'enc_KmeGetSystemDataReq_deviceData_sysData'(Val, TagIn); + +'enc_KmeGetSystemDataReq_deviceData_sysData'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + standardInfo -> + ?RT_BER:encode_bit_string([], element(2,Val), [{wakeUp,0},{remoteStatationLock,1},{callLogLock,2},{absentMessage,3},{forwardDnd,4},{cos,5},{phoneProperty,6},{assocIncomGroup,7},{messageWating,8},{assocExtGroup,9}], []); + extName -> + ?RT_BER:encode_null(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + fcoKey -> + ?RT_BER:encode_null(element(2,Val), [{tag,128,2,'EXPLICIT',32}]); + sxdpMaster -> + ?RT_BER:encode_null(element(2,Val), [{tag,128,3,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeGetSystemDataReq_deviceData_sysData'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'standardInfo' + <<0:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_bit_string(Bytes1,[],[{wakeUp,0},{remoteStatationLock,1},{callLogLock,2},{absentMessage,3},{forwardDnd,4},{cos,5},{phoneProperty,6},{assocIncomGroup,7},{messageWating,8},{assocExtGroup,9}],[], no_length, mandatory), + {{standardInfo, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'extName' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_null(Bytes1,[{tag,128,1,'EXPLICIT',32}], mandatory), + {{extName, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'fcoKey' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_null(Bytes1,[{tag,128,2,'EXPLICIT',32}], mandatory), + {{fcoKey, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'sxdpMaster' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_null(Bytes1,[{tag,128,3,'EXPLICIT',32}], mandatory), + {{sxdpMaster, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeGetSystemDataReq_deviceData'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeGetSystemDataReq_deviceData_sysData'(Bytes3, mandatory, [{tag,128,1,'EXPLICIT',32}]), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeGetSystemDataReq_deviceData', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + + +%%================================ +%% KmeGetSystemDataReq_trkExtGMember +%%================================ +'enc_KmeGetSystemDataReq_trkExtGMember'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,groupNo), []), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {EncBytes2,EncLen2} = case (case ?RT_BER:cindex(3,Val,groupType) of {_,Enumval2}->Enumval2;_->?RT_BER:cindex(3,Val,groupType) end) of +trunkGMembers -> ?RT_BER:encode_enumerated(0,[]); +extGMembers -> ?RT_BER:encode_enumerated(1,[]); +Enumval3 -> exit({error,{asn1, {enumerated_not_in_range,Enumval3}}}) +end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). +'dec_KmeGetSystemDataReq_trkExtGMember'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_enumerated(Bytes3,[],[{trunkGMembers,0},{extGMembers,1}],[], mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeGetSystemDataReq_trkExtGMember', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + + +%%================================ +%% KmeGetSystemDataReq_incomGMember +%%================================ +'enc_KmeGetSystemDataReq_incomGMember'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,groupNo), []), + + BytesSoFar = [EncBytes1], + LenSoFar = EncLen1, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). +'dec_KmeGetSystemDataReq_incomGMember'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + + {Bytes4,Rb3} = ?RT_BER:restbytes2(RemBytes, Bytes3,noext), + {{'KmeGetSystemDataReq_incomGMember', Term1}, Bytes4, Rb1+Rb2+Rb3}. + + +'dec_KmeGetSystemDataReq'(Bytes, OptOrMand) -> + 'dec_KmeGetSystemDataReq'(Bytes, OptOrMand, []). + +'dec_KmeGetSystemDataReq'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'systemData' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{sysTimeStamp,0},{devTimeStamp,1},{featureList,2},{speedDial,3},{trunkGroup,4},{extensionGroup,5},{pickupGroup,6},{pagingGroup,7},{incomingGroup,8},{dayNightMode,9},{doorPhone,10},{vmGroup,11},{manufacturerName,12},{subdomainName,13},{softwareVersion,14},{ctiVersion,15},{regionCode,16},{systemTime,17},{numberOfMsgPort,18},{psGroup,19},{whoAmI,20},{broadcastGroup,21},{pbxType,22},{externalSensor,23},{svm,24},{pdn,25}],[{tag,128,0,'EXPLICIT',32}], mandatory), + {{systemData, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'deviceData' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq_deviceData'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{deviceData, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'trkExtGMember' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq_trkExtGMember'(Bytes1, mandatory, [{tag,128,2,'IMPLICIT',32}]), + {{trkExtGMember, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'incomGMember' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq_incomGMember'(Bytes1, mandatory, [{tag,128,3,'IMPLICIT',32}]), + {{incomGMember, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'deviceList' + <<2:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeRequestedDevice'(Bytes1, mandatory, [{tag,128,4,'EXPLICIT',32}]), + {{deviceList, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'vmGMember' + <<2:2,_:1,5:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,5,'EXPLICIT',32}]), + {{vmGMember, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'speedDial' + <<2:2,_:1,6:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSpeedDialRequest'(Bytes1, mandatory, [{tag,128,6,'EXPLICIT',32}]), + {{speedDial, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'broadcastGMembers' + <<2:2,_:1,7:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_integer(Bytes1,[],[{tag,128,7,'EXPLICIT',32}], mandatory), + {{broadcastGMembers, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'guestCheckStatus' + <<2:2,_:1,8:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,8,'IMPLICIT',32}]), + {{guestCheckStatus, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeGetSystemDataRsp +%%================================ +'enc_KmeGetSystemDataRsp'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type GeneralizedTime OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case ?RT_BER:cindex(2,Val,timeStamp) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_generalized_time([], ?RT_BER:cindex(2,Val,timeStamp), [{tag,128,0,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 2 External KME-specific-types:KmeFeatureList OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,featureList) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeFeatureList'(?RT_BER:cindex(3,Val,featureList), [{tag,128,1,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 3 External KME-specific-types:KmeSpeedDial OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,speedDial) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeSpeedDial'(?RT_BER:cindex(4,Val,speedDial), [{tag,128,2,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 4 External KME-specific-types:KmeExtTrkGroupList OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case ?RT_BER:cindex(5,Val,trunkGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeExtTrkGroupList'(?RT_BER:cindex(5,Val,trunkGroup), [{tag,128,3,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 5 External KME-specific-types:KmeExtTrkGroupList OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case ?RT_BER:cindex(6,Val,extGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeExtTrkGroupList'(?RT_BER:cindex(6,Val,extGroup), [{tag,128,4,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 6 External KME-specific-types:KmePckPagGroupList OPTIONAL +%%------------------------------------------------- + {EncBytes6,EncLen6} = case ?RT_BER:cindex(7,Val,pickGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmePckPagGroupList'(?RT_BER:cindex(7,Val,pickGroup), [{tag,128,5,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 7 External KME-specific-types:KmePckPagGroupList OPTIONAL +%%------------------------------------------------- + {EncBytes7,EncLen7} = case ?RT_BER:cindex(8,Val,pagingGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmePckPagGroupList'(?RT_BER:cindex(8,Val,pagingGroup), [{tag,128,6,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 8 External KME-specific-types:KmeIncomingGroupList OPTIONAL +%%------------------------------------------------- + {EncBytes8,EncLen8} = case ?RT_BER:cindex(9,Val,incomingGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeIncomingGroupList'(?RT_BER:cindex(9,Val,incomingGroup), [{tag,128,7,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 9 External KME-specific-types:KmeDayNightMode OPTIONAL +%%------------------------------------------------- + {EncBytes9,EncLen9} = case ?RT_BER:cindex(10,Val,dayNightMode) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeDayNightMode'(?RT_BER:cindex(10,Val,dayNightMode), [{tag,128,8,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 10 External KME-specific-types:KmeWakeUpInfo OPTIONAL +%%------------------------------------------------- + {EncBytes10,EncLen10} = case ?RT_BER:cindex(11,Val,wakeUp) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeWakeUpInfo'(?RT_BER:cindex(11,Val,wakeUp), [{tag,128,9,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 11 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes11,EncLen11} = case ?RT_BER:cindex(12,Val,remoteLock) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case (case ?RT_BER:cindex(12,Val,remoteLock) of {_,Enumval2}->Enumval2;_->?RT_BER:cindex(12,Val,remoteLock) end) of +lock -> ?RT_BER:encode_enumerated(0,[{tag,128,10,'EXPLICIT',32}]); +unlock -> ?RT_BER:encode_enumerated(1,[{tag,128,10,'EXPLICIT',32}]); +Enumval3 -> exit({error,{asn1, {enumerated_not_in_range,Enumval3}}}) +end + end, + +%%------------------------------------------------- +%% attribute number 12 External KME-specific-types:KmeAbsentMessage OPTIONAL +%%------------------------------------------------- + {EncBytes12,EncLen12} = case ?RT_BER:cindex(13,Val,callLogLock) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeAbsentMessage'(?RT_BER:cindex(13,Val,callLogLock), [{tag,128,12,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 13 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes13,EncLen13} = case ?RT_BER:cindex(14,Val,forwardDnd) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case (case ?RT_BER:cindex(14,Val,forwardDnd) of {_,Enumval4}->Enumval4;_->?RT_BER:cindex(14,Val,forwardDnd) end) of +lock -> ?RT_BER:encode_enumerated(0,[{tag,128,11,'EXPLICIT',32}]); +unlock -> ?RT_BER:encode_enumerated(1,[{tag,128,11,'EXPLICIT',32}]); +Enumval5 -> exit({error,{asn1, {enumerated_not_in_range,Enumval5}}}) +end + end, + +%%------------------------------------------------- +%% attribute number 14 External CSTA-device-feature-types:ForwardList OPTIONAL +%%------------------------------------------------- + {EncBytes14,EncLen14} = case ?RT_BER:cindex(15,Val,absentMessage) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-device-feature-types':'enc_ForwardList'(?RT_BER:cindex(15,Val,absentMessage), [{tag,128,13,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 15 External KME-specific-types:KmeTrkMembers OPTIONAL +%%------------------------------------------------- + {EncBytes15,EncLen15} = case ?RT_BER:cindex(16,Val,trkGMembers) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeTrkMembers'(?RT_BER:cindex(16,Val,trkGMembers), [{tag,128,14,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 16 External KME-specific-types:KmeExtMembers OPTIONAL +%%------------------------------------------------- + {EncBytes16,EncLen16} = case ?RT_BER:cindex(17,Val,extGMembers) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeExtMembers'(?RT_BER:cindex(17,Val,extGMembers), [{tag,128,15,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 17 External KME-specific-types:KmeIcmGrpMembers OPTIONAL +%%------------------------------------------------- + {EncBytes17,EncLen17} = case ?RT_BER:cindex(18,Val,incomGMembers) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeIcmGrpMembers'(?RT_BER:cindex(18,Val,incomGMembers), [{tag,128,16,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 18 External KME-specific-types:KmeDoorPhone OPTIONAL +%%------------------------------------------------- + {EncBytes18,EncLen18} = case ?RT_BER:cindex(19,Val,doorPhone) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeDoorPhone'(?RT_BER:cindex(19,Val,doorPhone), [{tag,128,17,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 19 External KME-specific-types:KmeVmGroupList OPTIONAL +%%------------------------------------------------- + {EncBytes19,EncLen19} = case ?RT_BER:cindex(20,Val,vmGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeVmGroupList'(?RT_BER:cindex(20,Val,vmGroup), [{tag,128,18,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 20 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes20,EncLen20} = case ?RT_BER:cindex(21,Val,manufacturerName) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(21,Val,manufacturerName), 22, [{tag,128,19,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 21 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes21,EncLen21} = case ?RT_BER:cindex(22,Val,subdomainName) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(22,Val,subdomainName), 22, [{tag,128,20,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 22 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes22,EncLen22} = case ?RT_BER:cindex(23,Val,softwareVersion) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(23,Val,softwareVersion), 22, [{tag,128,21,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 23 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes23,EncLen23} = case ?RT_BER:cindex(24,Val,ctiVersion) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(24,Val,ctiVersion), 22, [{tag,128,22,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 24 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes24,EncLen24} = case ?RT_BER:cindex(25,Val,regionCode) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(25,Val,regionCode), 22, [{tag,128,23,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 25 with type GeneralizedTime OPTIONAL +%%------------------------------------------------- + {EncBytes25,EncLen25} = case ?RT_BER:cindex(26,Val,systemTime) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_generalized_time([], ?RT_BER:cindex(26,Val,systemTime), [{tag,128,24,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 26 External KME-specific-types:NumberOfMsgPort OPTIONAL +%%------------------------------------------------- + {EncBytes26,EncLen26} = case ?RT_BER:cindex(27,Val,numberOfMsgPort) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_NumberOfMsgPort'(?RT_BER:cindex(27,Val,numberOfMsgPort), [{tag,128,25,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 27 External KME-specific-types:KmePsGroupList OPTIONAL +%%------------------------------------------------- + {EncBytes27,EncLen27} = case ?RT_BER:cindex(28,Val,psGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmePsGroupList'(?RT_BER:cindex(28,Val,psGroup), [{tag,128,26,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 28 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {EncBytes28,EncLen28} = case ?RT_BER:cindex(29,Val,youAre) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(29,Val,youAre), [{tag,128,27,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 29 External KME-specific-types:KmeSvmList OPTIONAL +%%------------------------------------------------- + {EncBytes29,EncLen29} = case ?RT_BER:cindex(30,Val,svm) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeSvmList'(?RT_BER:cindex(30,Val,svm), [{tag,128,28,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 30 External KME-specific-types:KmePdnGMembers OPTIONAL +%%------------------------------------------------- + {EncBytes30,EncLen30} = case ?RT_BER:cindex(31,Val,pdn) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmePdnGMembers'(?RT_BER:cindex(31,Val,pdn), [{tag,128,29,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 31 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes31,EncLen31} = case ?RT_BER:cindex(32,Val,cos) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(32,Val,cos), [{tag,128,34,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 32 External KME-specific-types:KmePhoneProperty OPTIONAL +%%------------------------------------------------- + {EncBytes32,EncLen32} = case ?RT_BER:cindex(33,Val,phoneProperty) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmePhoneProperty'(?RT_BER:cindex(33,Val,phoneProperty), [{tag,128,35,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 33 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {EncBytes33,EncLen33} = case ?RT_BER:cindex(34,Val,assocIncomGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_bit_string([], ?RT_BER:cindex(34,Val,assocIncomGroup), [{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}], [{tag,128,36,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 34 with type SEQUENCE OF OPTIONAL +%%------------------------------------------------- + {EncBytes34,EncLen34} = case ?RT_BER:cindex(35,Val,messageWaiting) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeGetSystemDataRsp_messageWaiting'(?RT_BER:cindex(35,Val,messageWaiting), [{tag,128,37,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 35 External KME-specific-types:KmeDeviceStateList OPTIONAL +%%------------------------------------------------- + {EncBytes35,EncLen35} = case ?RT_BER:cindex(36,Val,deviceList) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeDeviceStateList'(?RT_BER:cindex(36,Val,deviceList), [{tag,128,38,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 36 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes36,EncLen36} = case ?RT_BER:cindex(37,Val,assocExtGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(37,Val,assocExtGroup), [{tag,128,39,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 37 External KME-specific-types:KmeIcmGrpMembers OPTIONAL +%%------------------------------------------------- + {EncBytes37,EncLen37} = case ?RT_BER:cindex(38,Val,vmGMembers) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeIcmGrpMembers'(?RT_BER:cindex(38,Val,vmGMembers), [{tag,128,40,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 38 External KME-specific-types:KmeExtName OPTIONAL +%%------------------------------------------------- + {EncBytes38,EncLen38} = case ?RT_BER:cindex(39,Val,extName) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeExtName'(?RT_BER:cindex(39,Val,extName), [{tag,128,41,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 39 External KME-specific-types:KmeBroadcastGroupList OPTIONAL +%%------------------------------------------------- + {EncBytes39,EncLen39} = case ?RT_BER:cindex(40,Val,broadcastGroup) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeBroadcastGroupList'(?RT_BER:cindex(40,Val,broadcastGroup), [{tag,128,42,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 40 External KME-specific-types:KmeBroadcastGrpMembers OPTIONAL +%%------------------------------------------------- + {EncBytes40,EncLen40} = case ?RT_BER:cindex(41,Val,broadcastGMembers) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeBroadcastGrpMembers'(?RT_BER:cindex(41,Val,broadcastGMembers), [{tag,128,43,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 41 External KME-specific-types:KmeFcoKeyList OPTIONAL +%%------------------------------------------------- + {EncBytes41,EncLen41} = case ?RT_BER:cindex(42,Val,fcoKeyList) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeFcoKeyList'(?RT_BER:cindex(42,Val,fcoKeyList), [{tag,128,44,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 42 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {EncBytes42,EncLen42} = case ?RT_BER:cindex(43,Val,sxdpMaster) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(43,Val,sxdpMaster), [{tag,128,45,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 43 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes43,EncLen43} = case ?RT_BER:cindex(44,Val,pbxType) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(44,Val,pbxType), [{tag,128,46,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 44 External KME-specific-types:KmeExternalSensorList OPTIONAL +%%------------------------------------------------- + {EncBytes44,EncLen44} = case ?RT_BER:cindex(45,Val,externalSensor) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeExternalSensorList'(?RT_BER:cindex(45,Val,externalSensor), [{tag,128,47,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 45 External KME-specific-types:KmeDeviceDataList OPTIONAL +%%------------------------------------------------- + {EncBytes45,EncLen45} = case ?RT_BER:cindex(46,Val,deviceDataList) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeDeviceDataList'(?RT_BER:cindex(46,Val,deviceDataList), [{tag,128,48,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 46 External KME-specific-types:KmeCheckStatusList OPTIONAL +%%------------------------------------------------- + {EncBytes46,EncLen46} = case ?RT_BER:cindex(47,Val,guestCheckStatus) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeCheckStatusList'(?RT_BER:cindex(47,Val,guestCheckStatus), [{tag,128,49,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6, EncBytes7, EncBytes8, EncBytes9, EncBytes10, EncBytes11, EncBytes12, EncBytes13, EncBytes14, EncBytes15, EncBytes16, EncBytes17, EncBytes18, EncBytes19, EncBytes20, EncBytes21, EncBytes22, EncBytes23, EncBytes24, EncBytes25, EncBytes26, EncBytes27, EncBytes28, EncBytes29, EncBytes30, EncBytes31, EncBytes32, EncBytes33, EncBytes34, EncBytes35, EncBytes36, EncBytes37, EncBytes38, EncBytes39, EncBytes40, EncBytes41, EncBytes42, EncBytes43, EncBytes44, EncBytes45, EncBytes46], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6 + EncLen7 + EncLen8 + EncLen9 + EncLen10 + EncLen11 + EncLen12 + EncLen13 + EncLen14 + EncLen15 + EncLen16 + EncLen17 + EncLen18 + EncLen19 + EncLen20 + EncLen21 + EncLen22 + EncLen23 + EncLen24 + EncLen25 + EncLen26 + EncLen27 + EncLen28 + EncLen29 + EncLen30 + EncLen31 + EncLen32 + EncLen33 + EncLen34 + EncLen35 + EncLen36 + EncLen37 + EncLen38 + EncLen39 + EncLen40 + EncLen41 + EncLen42 + EncLen43 + EncLen44 + EncLen45 + EncLen46, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeGetSystemDataRsp_messageWaiting +%%================================ + +'enc_KmeGetSystemDataRsp_messageWaiting'({'KmeGetSystemDataRsp_messageWaiting',Val}, TagIn) -> + 'enc_KmeGetSystemDataRsp_messageWaiting'(Val, TagIn); + +'enc_KmeGetSystemDataRsp_messageWaiting'(Val, TagIn) -> + {EncBytes,EncLen} = 'enc_KmeGetSystemDataRsp_messageWaiting_components'(Val,[],0), + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], EncBytes, EncLen). + +'enc_KmeGetSystemDataRsp_messageWaiting_components'([], AccBytes, AccLen) -> + {lists:reverse(AccBytes),AccLen}; + +'enc_KmeGetSystemDataRsp_messageWaiting_components'([H|T],AccBytes, AccLen) -> + {EncBytes,EncLen} = 'CSTA-device-identifiers':'enc_DeviceID'(H, []), + 'enc_KmeGetSystemDataRsp_messageWaiting_components'(T,[EncBytes|AccBytes], AccLen + EncLen). + +'dec_KmeGetSystemDataRsp_messageWaiting'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), + ?RT_BER:decode_components(Rb1, Len, Bytes1, fun 'CSTA-device-identifiers':'dec_DeviceID'/3, [], []). + + + + +'dec_KmeGetSystemDataRsp'(Bytes, OptOrMand) -> + 'dec_KmeGetSystemDataRsp'(Bytes, OptOrMand, []). + +'dec_KmeGetSystemDataRsp'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type GeneralizedTime OPTIONAL +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = case Bytes2 of +<<2:2,_:1,0:5,_/binary>> -> +?RT_BER:decode_generalized_time(Bytes2,[],[{tag,128,0,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes2, 0 } +end, + +%%------------------------------------------------- +%% attribute number 2 External KME-specific-types:KmeFeatureList OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<2:2,_:1,1:5,_/binary>> -> +'dec_KmeFeatureList'(Bytes3, opt_or_default, [{tag,128,1,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + +%%------------------------------------------------- +%% attribute number 3 External KME-specific-types:KmeSpeedDial OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<2:2,_:1,2:5,_/binary>> -> +'dec_KmeSpeedDial'(Bytes4, opt_or_default, [{tag,128,2,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + +%%------------------------------------------------- +%% attribute number 4 External KME-specific-types:KmeExtTrkGroupList OPTIONAL +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = case Bytes5 of +<<2:2,_:1,3:5,_/binary>> -> +'dec_KmeExtTrkGroupList'(Bytes5, opt_or_default, [{tag,128,3,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes5, 0 } +end, + +%%------------------------------------------------- +%% attribute number 5 External KME-specific-types:KmeExtTrkGroupList OPTIONAL +%%------------------------------------------------- + {Term5,Bytes7,Rb6} = case Bytes6 of +<<2:2,_:1,4:5,_/binary>> -> +'dec_KmeExtTrkGroupList'(Bytes6, opt_or_default, [{tag,128,4,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes6, 0 } +end, + +%%------------------------------------------------- +%% attribute number 6 External KME-specific-types:KmePckPagGroupList OPTIONAL +%%------------------------------------------------- + {Term6,Bytes8,Rb7} = case Bytes7 of +<<2:2,_:1,5:5,_/binary>> -> +'dec_KmePckPagGroupList'(Bytes7, opt_or_default, [{tag,128,5,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes7, 0 } +end, + +%%------------------------------------------------- +%% attribute number 7 External KME-specific-types:KmePckPagGroupList OPTIONAL +%%------------------------------------------------- + {Term7,Bytes9,Rb8} = case Bytes8 of +<<2:2,_:1,6:5,_/binary>> -> +'dec_KmePckPagGroupList'(Bytes8, opt_or_default, [{tag,128,6,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes8, 0 } +end, + +%%------------------------------------------------- +%% attribute number 8 External KME-specific-types:KmeIncomingGroupList OPTIONAL +%%------------------------------------------------- + {Term8,Bytes10,Rb9} = case Bytes9 of +<<2:2,_:1,7:5,_/binary>> -> +'dec_KmeIncomingGroupList'(Bytes9, opt_or_default, [{tag,128,7,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes9, 0 } +end, + +%%------------------------------------------------- +%% attribute number 9 External KME-specific-types:KmeDayNightMode OPTIONAL +%%------------------------------------------------- + {Term9,Bytes11,Rb10} = case Bytes10 of +<<2:2,_:1,8:5,_/binary>> -> +'dec_KmeDayNightMode'(Bytes10, opt_or_default, [{tag,128,8,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes10, 0 } +end, + +%%------------------------------------------------- +%% attribute number 10 External KME-specific-types:KmeWakeUpInfo OPTIONAL +%%------------------------------------------------- + {Term10,Bytes12,Rb11} = case Bytes11 of +<<2:2,_:1,9:5,_/binary>> -> +'dec_KmeWakeUpInfo'(Bytes11, opt_or_default, [{tag,128,9,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes11, 0 } +end, + +%%------------------------------------------------- +%% attribute number 11 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {Term11,Bytes13,Rb12} = case Bytes12 of +<<2:2,_:1,10:5,_/binary>> -> +?RT_BER:decode_enumerated(Bytes12,[],[{lock,0},{unlock,1}],[{tag,128,10,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes12, 0 } +end, + +%%------------------------------------------------- +%% attribute number 12 External KME-specific-types:KmeAbsentMessage OPTIONAL +%%------------------------------------------------- + {Term12,Bytes14,Rb13} = case Bytes13 of +<<2:2,_:1,12:5,_/binary>> -> +'dec_KmeAbsentMessage'(Bytes13, opt_or_default, [{tag,128,12,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes13, 0 } +end, + +%%------------------------------------------------- +%% attribute number 13 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {Term13,Bytes15,Rb14} = case Bytes14 of +<<2:2,_:1,11:5,_/binary>> -> +?RT_BER:decode_enumerated(Bytes14,[],[{lock,0},{unlock,1}],[{tag,128,11,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes14, 0 } +end, + +%%------------------------------------------------- +%% attribute number 14 External CSTA-device-feature-types:ForwardList OPTIONAL +%%------------------------------------------------- + {Term14,Bytes16,Rb15} = case Bytes15 of +<<2:2,_:1,13:5,_/binary>> -> +'CSTA-device-feature-types':'dec_ForwardList'(Bytes15, opt_or_default, [{tag,128,13,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes15, 0 } +end, + +%%------------------------------------------------- +%% attribute number 15 External KME-specific-types:KmeTrkMembers OPTIONAL +%%------------------------------------------------- + {Term15,Bytes17,Rb16} = case Bytes16 of +<<2:2,_:1,14:5,_/binary>> -> +'dec_KmeTrkMembers'(Bytes16, opt_or_default, [{tag,128,14,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes16, 0 } +end, + +%%------------------------------------------------- +%% attribute number 16 External KME-specific-types:KmeExtMembers OPTIONAL +%%------------------------------------------------- + {Term16,Bytes18,Rb17} = case Bytes17 of +<<2:2,_:1,15:5,_/binary>> -> +'dec_KmeExtMembers'(Bytes17, opt_or_default, [{tag,128,15,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes17, 0 } +end, + +%%------------------------------------------------- +%% attribute number 17 External KME-specific-types:KmeIcmGrpMembers OPTIONAL +%%------------------------------------------------- + {Term17,Bytes19,Rb18} = case Bytes18 of +<<2:2,_:1,16:5,_/binary>> -> +'dec_KmeIcmGrpMembers'(Bytes18, opt_or_default, [{tag,128,16,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes18, 0 } +end, + +%%------------------------------------------------- +%% attribute number 18 External KME-specific-types:KmeDoorPhone OPTIONAL +%%------------------------------------------------- + {Term18,Bytes20,Rb19} = case Bytes19 of +<<2:2,_:1,17:5,_/binary>> -> +'dec_KmeDoorPhone'(Bytes19, opt_or_default, [{tag,128,17,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes19, 0 } +end, + +%%------------------------------------------------- +%% attribute number 19 External KME-specific-types:KmeVmGroupList OPTIONAL +%%------------------------------------------------- + {Term19,Bytes21,Rb20} = case Bytes20 of +<<2:2,_:1,18:5,_/binary>> -> +'dec_KmeVmGroupList'(Bytes20, opt_or_default, [{tag,128,18,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes20, 0 } +end, + +%%------------------------------------------------- +%% attribute number 20 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term20,Bytes22,Rb21} = case Bytes21 of +<<2:2,_:1,19:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes21,{0,64},22,[{tag,128,19,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes21, 0 } +end, + +%%------------------------------------------------- +%% attribute number 21 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term21,Bytes23,Rb22} = case Bytes22 of +<<2:2,_:1,20:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes22,{0,20},22,[{tag,128,20,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes22, 0 } +end, + +%%------------------------------------------------- +%% attribute number 22 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term22,Bytes24,Rb23} = case Bytes23 of +<<2:2,_:1,21:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes23,{0,32},22,[{tag,128,21,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes23, 0 } +end, + +%%------------------------------------------------- +%% attribute number 23 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term23,Bytes25,Rb24} = case Bytes24 of +<<2:2,_:1,22:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes24,{0,32},22,[{tag,128,22,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes24, 0 } +end, + +%%------------------------------------------------- +%% attribute number 24 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term24,Bytes26,Rb25} = case Bytes25 of +<<2:2,_:1,23:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes25,{0,32},22,[{tag,128,23,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes25, 0 } +end, + +%%------------------------------------------------- +%% attribute number 25 with type GeneralizedTime OPTIONAL +%%------------------------------------------------- + {Term25,Bytes27,Rb26} = case Bytes26 of +<<2:2,_:1,24:5,_/binary>> -> +?RT_BER:decode_generalized_time(Bytes26,[],[{tag,128,24,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes26, 0 } +end, + +%%------------------------------------------------- +%% attribute number 26 External KME-specific-types:NumberOfMsgPort OPTIONAL +%%------------------------------------------------- + {Term26,Bytes28,Rb27} = case Bytes27 of +<<2:2,_:1,25:5,_/binary>> -> +'dec_NumberOfMsgPort'(Bytes27, opt_or_default, [{tag,128,25,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes27, 0 } +end, + +%%------------------------------------------------- +%% attribute number 27 External KME-specific-types:KmePsGroupList OPTIONAL +%%------------------------------------------------- + {Term27,Bytes29,Rb28} = case Bytes28 of +<<2:2,_:1,26:5,_/binary>> -> +'dec_KmePsGroupList'(Bytes28, opt_or_default, [{tag,128,26,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes28, 0 } +end, + +%%------------------------------------------------- +%% attribute number 28 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {Term28,Bytes30,Rb29} = case Bytes29 of +<<2:2,_:1,27:5,_/binary>> -> +'CSTA-device-identifiers':'dec_DeviceID'(Bytes29, opt_or_default, [{tag,128,27,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes29, 0 } +end, + +%%------------------------------------------------- +%% attribute number 29 External KME-specific-types:KmeSvmList OPTIONAL +%%------------------------------------------------- + {Term29,Bytes31,Rb30} = case Bytes30 of +<<2:2,_:1,28:5,_/binary>> -> +'dec_KmeSvmList'(Bytes30, opt_or_default, [{tag,128,28,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes30, 0 } +end, + +%%------------------------------------------------- +%% attribute number 30 External KME-specific-types:KmePdnGMembers OPTIONAL +%%------------------------------------------------- + {Term30,Bytes32,Rb31} = case Bytes31 of +<<2:2,_:1,29:5,_/binary>> -> +'dec_KmePdnGMembers'(Bytes31, opt_or_default, [{tag,128,29,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes31, 0 } +end, + +%%------------------------------------------------- +%% attribute number 31 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term31,Bytes33,Rb32} = case Bytes32 of +<<2:2,_:1,31:5,34,_/binary>> -> +?RT_BER:decode_integer(Bytes32,[],[{tag,128,34,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes32, 0 } +end, + +%%------------------------------------------------- +%% attribute number 32 External KME-specific-types:KmePhoneProperty OPTIONAL +%%------------------------------------------------- + {Term32,Bytes34,Rb33} = case Bytes33 of +<<2:2,_:1,31:5,35,_/binary>> -> +'dec_KmePhoneProperty'(Bytes33, opt_or_default, [{tag,128,35,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes33, 0 } +end, + +%%------------------------------------------------- +%% attribute number 33 with type BIT STRING OPTIONAL +%%------------------------------------------------- + {Term33,Bytes35,Rb34} = case Bytes34 of +<<2:2,_:1,31:5,36,_/binary>> -> +?RT_BER:decode_bit_string(Bytes34,[],[{one,0},{two,1},{three,2},{four,3},{five,4},{six,5},{seven,6},{eight,7},{nine,8},{ten,9},{eleven,10},{twelve,11},{thirteen,12},{fourteen,13},{fifteen,14},{sixteen,15},{seventeen,16},{eighteen,17},{nineteen,18},{twenty,19},{twentyOne,20},{twentyTwo,21},{twentyThree,22},{twentyFour,23},{twentyFive,24},{twentySix,25},{twentySeven,26},{twentyEight,27},{twentyNine,28},{thirty,29},{thirtyOne,30},{thirtyTwo,31},{thirtyThree,32},{thirtyFour,33},{thirtyFive,34},{thirtySix,35},{thirtySeven,36},{thirtyEight,37},{thirtyNine,38},{fourty,39},{fourtyOne,40},{fourtyTwo,41},{fourtyThree,42},{fourtyFour,43},{fourtyFive,44},{fourtySix,45},{fourtySeven,46},{fourtyEight,47},{fourtyNine,48},{fifty,49},{fiftyOne,50},{fiftyTwo,51},{fiftyThree,52},{fiftyFour,53},{fiftyFive,54},{fiftySix,55},{fiftySeven,56},{fiftyEight,57},{fiftyNine,58},{sixty,59},{sixtyOne,60},{sixtyTwo,61},{sixtyThree,62},{sixtyFour,63},{sixtyFive,64},{sixtySix,65},{sixtySeven,66},{sixtyEight,67},{sixtyNine,68},{seventy,69},{seventyOne,70},{seventyTwo,71},{seventyThree,72},{seventyFour,73},{seventyFive,74},{seventySix,75},{seventySeven,76},{seventyEight,77},{seventyNine,78},{eighty,79},{eightyOne,80},{eightyTwo,81},{eightyThree,82},{eightyFour,83},{eightyFive,84},{eightySix,85},{eightySeven,86},{eightyEight,87},{eightyNine,88},{ninety,89},{ninetyOne,90},{ninetyTwo,91},{ninetyThree,92},{ninetyFour,93},{ninetyFive,94},{ninetySix,95},{ninetySeven,96},{ninetyEight,97},{ninetyNine,98},{oneHundred,99},{oneHundredOne,100},{oneHundredTwo,101},{oneHundredThree,102},{oneHundredFour,103},{oneHundredFive,104},{oneHundredSix,105},{oneHundredSeven,106},{oneHundredEitht,107},{oneHundredNine,108},{oneHundredTen,109},{oneHundredEleven,110},{oneHundredTwelve,111},{oneHundredThirteen,112},{oneHundredFourteen,113},{oneHundredFifteen,114},{oneHundredSixteen,115},{oneHundredSeventeen,116},{oneHundredEithteen,117},{oneHundredNineteen,118},{oneHundredTwenty,119},{oneHundredTwentyOne,120},{oneHundredTwentyTwo,121},{oneHundredTwentyThree,122},{oneHundredTwentyFour,123},{oneHundredTwentyFive,124},{oneHundredTwentySix,125},{oneHundredTwentySeven,126},{oneHundredTwentyEight,127}],[{tag,128,36,'EXPLICIT',32}], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes34, 0 } +end, + +%%------------------------------------------------- +%% attribute number 34 with type SEQUENCE OF OPTIONAL +%%------------------------------------------------- + {Term34,Bytes36,Rb35} = case Bytes35 of +<<2:2,_:1,31:5,37,_/binary>> -> +'dec_KmeGetSystemDataRsp_messageWaiting'(Bytes35, opt_or_default, [{tag,128,37,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes35, 0 } +end, + +%%------------------------------------------------- +%% attribute number 35 External KME-specific-types:KmeDeviceStateList OPTIONAL +%%------------------------------------------------- + {Term35,Bytes37,Rb36} = case Bytes36 of +<<2:2,_:1,31:5,38,_/binary>> -> +'dec_KmeDeviceStateList'(Bytes36, opt_or_default, [{tag,128,38,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes36, 0 } +end, + +%%------------------------------------------------- +%% attribute number 36 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term36,Bytes38,Rb37} = case Bytes37 of +<<2:2,_:1,31:5,39,_/binary>> -> +?RT_BER:decode_integer(Bytes37,[],[{tag,128,39,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes37, 0 } +end, + +%%------------------------------------------------- +%% attribute number 37 External KME-specific-types:KmeIcmGrpMembers OPTIONAL +%%------------------------------------------------- + {Term37,Bytes39,Rb38} = case Bytes38 of +<<2:2,_:1,31:5,40,_/binary>> -> +'dec_KmeIcmGrpMembers'(Bytes38, opt_or_default, [{tag,128,40,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes38, 0 } +end, + +%%------------------------------------------------- +%% attribute number 38 External KME-specific-types:KmeExtName OPTIONAL +%%------------------------------------------------- + {Term38,Bytes40,Rb39} = case Bytes39 of +<<2:2,_:1,31:5,41,_/binary>> -> +'dec_KmeExtName'(Bytes39, opt_or_default, [{tag,128,41,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes39, 0 } +end, + +%%------------------------------------------------- +%% attribute number 39 External KME-specific-types:KmeBroadcastGroupList OPTIONAL +%%------------------------------------------------- + {Term39,Bytes41,Rb40} = case Bytes40 of +<<2:2,_:1,31:5,42,_/binary>> -> +'dec_KmeBroadcastGroupList'(Bytes40, opt_or_default, [{tag,128,42,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes40, 0 } +end, + +%%------------------------------------------------- +%% attribute number 40 External KME-specific-types:KmeBroadcastGrpMembers OPTIONAL +%%------------------------------------------------- + {Term40,Bytes42,Rb41} = case Bytes41 of +<<2:2,_:1,31:5,43,_/binary>> -> +'dec_KmeBroadcastGrpMembers'(Bytes41, opt_or_default, [{tag,128,43,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes41, 0 } +end, + +%%------------------------------------------------- +%% attribute number 41 External KME-specific-types:KmeFcoKeyList OPTIONAL +%%------------------------------------------------- + {Term41,Bytes43,Rb42} = case Bytes42 of +<<2:2,_:1,31:5,44,_/binary>> -> +'dec_KmeFcoKeyList'(Bytes42, opt_or_default, [{tag,128,44,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes42, 0 } +end, + +%%------------------------------------------------- +%% attribute number 42 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {Term42,Bytes44,Rb43} = case Bytes43 of +<<2:2,_:1,31:5,45,_/binary>> -> +'CSTA-device-identifiers':'dec_DeviceID'(Bytes43, opt_or_default, [{tag,128,45,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes43, 0 } +end, + +%%------------------------------------------------- +%% attribute number 43 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term43,Bytes45,Rb44} = case Bytes44 of +<<2:2,_:1,31:5,46,_/binary>> -> +?RT_BER:decode_integer(Bytes44,[],[{tag,128,46,'EXPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes44, 0 } +end, + +%%------------------------------------------------- +%% attribute number 44 External KME-specific-types:KmeExternalSensorList OPTIONAL +%%------------------------------------------------- + {Term44,Bytes46,Rb45} = case Bytes45 of +<<2:2,_:1,31:5,47,_/binary>> -> +'dec_KmeExternalSensorList'(Bytes45, opt_or_default, [{tag,128,47,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes45, 0 } +end, + +%%------------------------------------------------- +%% attribute number 45 External KME-specific-types:KmeDeviceDataList OPTIONAL +%%------------------------------------------------- + {Term45,Bytes47,Rb46} = case Bytes46 of +<<2:2,_:1,31:5,48,_/binary>> -> +'dec_KmeDeviceDataList'(Bytes46, opt_or_default, [{tag,128,48,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes46, 0 } +end, + +%%------------------------------------------------- +%% attribute number 46 External KME-specific-types:KmeCheckStatusList OPTIONAL +%%------------------------------------------------- + {Term46,Bytes48,Rb47} = case Bytes47 of +<<2:2,_:1,31:5,49,_/binary>> -> +'dec_KmeCheckStatusList'(Bytes47, opt_or_default, [{tag,128,49,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes47, 0 } +end, + + {Bytes49,Rb48} = ?RT_BER:restbytes2(RemBytes, Bytes48,noext), + {{'KmeGetSystemDataRsp', Term1, Term2, Term3, Term4, Term5, Term6, Term7, Term8, Term9, Term10, Term11, Term12, Term13, Term14, Term15, Term16, Term17, Term18, Term19, Term20, Term21, Term22, Term23, Term24, Term25, Term26, Term27, Term28, Term29, Term30, Term31, Term32, Term33, Term34, Term35, Term36, Term37, Term38, Term39, Term40, Term41, Term42, Term43, Term44, Term45, Term46}, Bytes49, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6+Rb7+Rb8+Rb9+Rb10+Rb11+Rb12+Rb13+Rb14+Rb15+Rb16+Rb17+Rb18+Rb19+Rb20+Rb21+Rb22+Rb23+Rb24+Rb25+Rb26+Rb27+Rb28+Rb29+Rb30+Rb31+Rb32+Rb33+Rb34+Rb35+Rb36+Rb37+Rb38+Rb39+Rb40+Rb41+Rb42+Rb43+Rb44+Rb45+Rb46+Rb47+Rb48}. + + +%%================================ +%% KmeGetSystemData +%%================================ + +'enc_KmeGetSystemData'({'KmeGetSystemData',Val}, TagIn) -> + 'enc_KmeGetSystemData'(Val, TagIn); + +'enc_KmeGetSystemData'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + request -> + 'enc_KmeGetSystemDataReq'(element(2,Val), []); + result -> + 'enc_KmeGetSystemDataRsp'(element(2,Val), []); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeGetSystemData'(Bytes, OptOrMand) -> + 'dec_KmeGetSystemData'(Bytes, OptOrMand, []). + +'dec_KmeGetSystemData'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'request' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq'(Bytes1, mandatory, []), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq'(Bytes1, mandatory, []), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq'(Bytes1, mandatory, []), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq'(Bytes1, mandatory, []), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + <<2:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq'(Bytes1, mandatory, []), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + <<2:2,_:1,5:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq'(Bytes1, mandatory, []), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + <<2:2,_:1,6:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq'(Bytes1, mandatory, []), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + <<2:2,_:1,7:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq'(Bytes1, mandatory, []), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + <<2:2,_:1,8:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataReq'(Bytes1, mandatory, []), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'result' + <<0:2,_:1,16:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataRsp'(Bytes1, mandatory, []), + {{result, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeSetSystemData +%%================================ + +'enc_KmeSetSystemData'({'KmeSetSystemData',Val}, TagIn) -> + 'enc_KmeSetSystemData'(Val, TagIn); + +'enc_KmeSetSystemData'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + systemData -> + 'enc_KmeSetSystemData_systemData'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + deviceData -> + 'enc_KmeSetSystemData_deviceData'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + acdQueue -> + 'enc_KmeSetSystemData_acdQueue'(element(2,Val), [{tag,128,3,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + + +%%================================ +%% KmeSetSystemData_systemData +%%================================ + +'enc_KmeSetSystemData_systemData'({'KmeSetSystemData_systemData',Val}, TagIn) -> + 'enc_KmeSetSystemData_systemData'(Val, TagIn); + +'enc_KmeSetSystemData_systemData'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + speedDial -> + 'enc_KmeSpeedDial'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + dayNightMode -> + 'enc_KmeDayNightMode'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + time -> + ?RT_BER:encode_generalized_time([], element(2,Val), [{tag,128,2,'EXPLICIT',32}]); + extNo -> + 'enc_KmeChangeExtNo'(element(2,Val), [{tag,128,3,'EXPLICIT',32}]); + name -> + 'enc_KmeChangeName'(element(2,Val), [{tag,128,4,'EXPLICIT',32}]); + subdomainName -> + ?RT_BER:encode_restricted_string([], element(2,Val), 22, [{tag,128,5,'EXPLICIT',32}]); + tenantSpeedDial -> + 'enc_KmeTenantSpeedDial'(element(2,Val), [{tag,128,6,'EXPLICIT',32}]); + distributionMethod -> + 'enc_KmeDistributionMethod'(element(2,Val), [{tag,128,7,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeSetSystemData_systemData'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'speedDial' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSpeedDial'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{speedDial, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'dayNightMode' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDayNightMode'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{dayNightMode, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'time' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_generalized_time(Bytes1,[],[{tag,128,2,'EXPLICIT',32}], no_length, mandatory), + {{time, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'extNo' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeChangeExtNo'(Bytes1, mandatory, [{tag,128,3,'EXPLICIT',32}]), + {{extNo, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'name' + <<2:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeChangeName'(Bytes1, mandatory, [{tag,128,4,'EXPLICIT',32}]), + {{name, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'subdomainName' + <<2:2,_:1,5:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_restricted_string(Bytes1,{0,20},22,[{tag,128,5,'EXPLICIT',32}], no_length, mandatory), + {{subdomainName, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'tenantSpeedDial' + <<2:2,_:1,6:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeTenantSpeedDial'(Bytes1, mandatory, [{tag,128,6,'EXPLICIT',32}]), + {{tenantSpeedDial, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'distributionMethod' + <<2:2,_:1,7:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDistributionMethod'(Bytes1, mandatory, [{tag,128,7,'EXPLICIT',32}]), + {{distributionMethod, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + + +%%================================ +%% KmeSetSystemData_deviceData +%%================================ +'enc_KmeSetSystemData_deviceData'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), [{tag,128,1,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeSetSystemData_deviceData_sysData'(?RT_BER:cindex(3,Val,sysData), [{tag,128,2,'EXPLICIT',32}]), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeSetSystemData_deviceData_sysData +%%================================ + +'enc_KmeSetSystemData_deviceData_sysData'({'KmeSetSystemData_deviceData_sysData',Val}, TagIn) -> + 'enc_KmeSetSystemData_deviceData_sysData'(Val, TagIn); + +'enc_KmeSetSystemData_deviceData_sysData'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + wakeUp -> + 'enc_KmeWakeUpInfo'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + remoteLock -> + case (case element(2,Val) of {_,Enumval1}->Enumval1;_->element(2,Val) end) of +lock -> ?RT_BER:encode_enumerated(0,[{tag,128,1,'EXPLICIT',32}]); +unlock -> ?RT_BER:encode_enumerated(1,[{tag,128,1,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end; + forwardDnd -> + 'enc_KmeSetForwardInfo'(element(2,Val), [{tag,128,2,'EXPLICIT',32}]); + absentMessage -> + 'enc_KmeAbsentMessage'(element(2,Val), [{tag,128,3,'EXPLICIT',32}]); + passwordClear -> + ?RT_BER:encode_null(element(2,Val), [{tag,128,4,'EXPLICIT',32}]); + extNumber -> + ?RT_BER:encode_restricted_string([], element(2,Val), 22, [{tag,128,5,'EXPLICIT',32}]); + extName -> + 'enc_KmeExtName'(element(2,Val), [{tag,128,6,'EXPLICIT',32}]); + cos -> + ?RT_BER:encode_integer([], element(2,Val), [{tag,128,7,'EXPLICIT',32}]); + joinGroup -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,8,'EXPLICIT',32}]); + leaveGroup -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,9,'EXPLICIT',32}]); + inService -> + ?RT_BER:encode_boolean(element(2,Val), [{tag,128,10,'EXPLICIT',32}]); + fcoKey -> + 'enc_KmeFcoKeyList'(element(2,Val), [{tag,128,11,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeSetSystemData_deviceData_sysData'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'wakeUp' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeWakeUpInfo'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{wakeUp, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'remoteLock' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{lock,0},{unlock,1}],[{tag,128,1,'EXPLICIT',32}], mandatory), + {{remoteLock, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'forwardDnd' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSetForwardInfo'(Bytes1, mandatory, [{tag,128,2,'EXPLICIT',32}]), + {{forwardDnd, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'absentMessage' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeAbsentMessage'(Bytes1, mandatory, [{tag,128,3,'EXPLICIT',32}]), + {{absentMessage, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'passwordClear' + <<2:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_null(Bytes1,[{tag,128,4,'EXPLICIT',32}], mandatory), + {{passwordClear, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'extNumber' + <<2:2,_:1,5:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_restricted_string(Bytes1,{1,5},22,[{tag,128,5,'EXPLICIT',32}], no_length, mandatory), + {{extNumber, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'extName' + <<2:2,_:1,6:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeExtName'(Bytes1, mandatory, [{tag,128,6,'EXPLICIT',32}]), + {{extName, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'cos' + <<2:2,_:1,7:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_integer(Bytes1,[],[{tag,128,7,'EXPLICIT',32}], mandatory), + {{cos, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'joinGroup' + <<2:2,_:1,8:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,8,'EXPLICIT',32}]), + {{joinGroup, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'leaveGroup' + <<2:2,_:1,9:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,9,'EXPLICIT',32}]), + {{leaveGroup, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'inService' + <<2:2,_:1,10:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_boolean(Bytes1,[{tag,128,10,'EXPLICIT',32}], mandatory), + {{inService, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'fcoKey' + <<2:2,_:1,11:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeFcoKeyList'(Bytes1, mandatory, [{tag,128,11,'EXPLICIT',32}]), + {{fcoKey, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeSetSystemData_deviceData'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, [{tag,128,1,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeSetSystemData_deviceData_sysData'(Bytes3, mandatory, [{tag,128,2,'EXPLICIT',32}]), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeSetSystemData_deviceData', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + + +%%================================ +%% KmeSetSystemData_acdQueue +%%================================ +'enc_KmeSetSystemData_acdQueue'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), []), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeSetSystemData_acdQueue_attribute'(?RT_BER:cindex(3,Val,attribute), []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeSetSystemData_acdQueue_attribute +%%================================ + +'enc_KmeSetSystemData_acdQueue_attribute'({'KmeSetSystemData_acdQueue_attribute',Val}, TagIn) -> + 'enc_KmeSetSystemData_acdQueue_attribute'(Val, TagIn); + +'enc_KmeSetSystemData_acdQueue_attribute'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + groupType -> + case (case element(2,Val) of {_,Enumval1}->Enumval1;_->element(2,Val) end) of +ucd -> ?RT_BER:encode_enumerated(0,[{tag,128,1,'EXPLICIT',32}]); +ring -> ?RT_BER:encode_enumerated(1,[{tag,128,1,'EXPLICIT',32}]); +hunt -> ?RT_BER:encode_enumerated(2,[{tag,128,1,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end; + acdMode -> + ?RT_BER:encode_boolean(element(2,Val), []); + ctiWaitTime -> + ?RT_BER:encode_integer([], element(2,Val), []); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeSetSystemData_acdQueue_attribute'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'groupType' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{ucd,0},{ring,1},{hunt,2}],[{tag,128,1,'EXPLICIT',32}], mandatory), + {{groupType, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'acdMode' + <<0:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_boolean(Bytes1,[], mandatory), + {{acdMode, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'ctiWaitTime' + <<0:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_integer(Bytes1,[],[], mandatory), + {{ctiWaitTime, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeSetSystemData_acdQueue'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeSetSystemData_acdQueue_attribute'(Bytes3, mandatory, []), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeSetSystemData_acdQueue', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +'dec_KmeSetSystemData'(Bytes, OptOrMand) -> + 'dec_KmeSetSystemData'(Bytes, OptOrMand, []). + +'dec_KmeSetSystemData'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'systemData' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSetSystemData_systemData'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{systemData, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'deviceData' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSetSystemData_deviceData'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{deviceData, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'acdQueue' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSetSystemData_acdQueue'(Bytes1, mandatory, [{tag,128,3,'EXPLICIT',32}]), + {{acdQueue, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeSystemDataChanged +%%================================ + +'enc_KmeSystemDataChanged'({'KmeSystemDataChanged',Val}, TagIn) -> + 'enc_KmeSystemDataChanged'(Val, TagIn); + +'enc_KmeSystemDataChanged'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + systemData -> + case (case element(2,Val) of {_,Enumval1}->Enumval1;_->element(2,Val) end) of +featureList -> ?RT_BER:encode_enumerated(1,[{tag,128,0,'EXPLICIT',32}]); +speedDial -> ?RT_BER:encode_enumerated(2,[{tag,128,0,'EXPLICIT',32}]); +trunkGroup -> ?RT_BER:encode_enumerated(3,[{tag,128,0,'EXPLICIT',32}]); +extGroup -> ?RT_BER:encode_enumerated(4,[{tag,128,0,'EXPLICIT',32}]); +pickGroup -> ?RT_BER:encode_enumerated(5,[{tag,128,0,'EXPLICIT',32}]); +pagingGroup -> ?RT_BER:encode_enumerated(6,[{tag,128,0,'EXPLICIT',32}]); +incomingGroup -> ?RT_BER:encode_enumerated(7,[{tag,128,0,'EXPLICIT',32}]); +dayNightMode -> ?RT_BER:encode_enumerated(8,[{tag,128,0,'EXPLICIT',32}]); +doorPhone -> ?RT_BER:encode_enumerated(9,[{tag,128,0,'EXPLICIT',32}]); +vmGroup -> ?RT_BER:encode_enumerated(10,[{tag,128,0,'EXPLICIT',32}]); +systemTime -> ?RT_BER:encode_enumerated(11,[{tag,128,0,'EXPLICIT',32}]); +psGroup -> ?RT_BER:encode_enumerated(12,[{tag,128,0,'EXPLICIT',32}]); +trunkGMembers -> ?RT_BER:encode_enumerated(13,[{tag,128,0,'EXPLICIT',32}]); +incomingGMembers -> ?RT_BER:encode_enumerated(14,[{tag,128,0,'EXPLICIT',32}]); +psGMembers -> ?RT_BER:encode_enumerated(15,[{tag,128,0,'EXPLICIT',32}]); +vmGMembers -> ?RT_BER:encode_enumerated(16,[{tag,128,0,'EXPLICIT',32}]); +broadcastGroup -> ?RT_BER:encode_enumerated(17,[{tag,128,0,'EXPLICIT',32}]); +broadcastGMembers -> ?RT_BER:encode_enumerated(18,[{tag,128,0,'EXPLICIT',32}]); +subdomainName -> ?RT_BER:encode_enumerated(19,[{tag,128,0,'EXPLICIT',32}]); +externalSensor -> ?RT_BER:encode_enumerated(20,[{tag,128,0,'EXPLICIT',32}]); +svm -> ?RT_BER:encode_enumerated(21,[{tag,128,0,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end; + deviceData -> + 'enc_KmeSystemDataChanged_deviceData'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + deviceBasicInfo -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,2,'EXPLICIT',32}]); + reconfiguration -> + ?RT_BER:encode_null(element(2,Val), [{tag,128,3,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + + +%%================================ +%% KmeSystemDataChanged_deviceData +%%================================ +'enc_KmeSystemDataChanged_deviceData'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {EncBytes2,EncLen2} = case (case ?RT_BER:cindex(3,Val,sysData) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(3,Val,sysData) end) of +wakeUp -> ?RT_BER:encode_enumerated(0,[{tag,128,1,'EXPLICIT',32}]); +remoteStatationLock -> ?RT_BER:encode_enumerated(1,[{tag,128,1,'EXPLICIT',32}]); +callLogLock -> ?RT_BER:encode_enumerated(2,[{tag,128,1,'EXPLICIT',32}]); +absentMessage -> ?RT_BER:encode_enumerated(3,[{tag,128,1,'EXPLICIT',32}]); +forwardDnd -> ?RT_BER:encode_enumerated(4,[{tag,128,1,'EXPLICIT',32}]); +cos -> ?RT_BER:encode_enumerated(5,[{tag,128,1,'EXPLICIT',32}]); +extName -> ?RT_BER:encode_enumerated(6,[{tag,128,1,'EXPLICIT',32}]); +assocExtGroup -> ?RT_BER:encode_enumerated(7,[{tag,128,1,'EXPLICIT',32}]); +fcoKey -> ?RT_BER:encode_enumerated(8,[{tag,128,1,'EXPLICIT',32}]); +sxdpMaster -> ?RT_BER:encode_enumerated(9,[{tag,128,1,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). +'dec_KmeSystemDataChanged_deviceData'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_enumerated(Bytes3,[],[{wakeUp,0},{remoteStatationLock,1},{callLogLock,2},{absentMessage,3},{forwardDnd,4},{cos,5},{extName,6},{assocExtGroup,7},{fcoKey,8},{sxdpMaster,9}],[{tag,128,1,'EXPLICIT',32}], mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeSystemDataChanged_deviceData', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +'dec_KmeSystemDataChanged'(Bytes, OptOrMand) -> + 'dec_KmeSystemDataChanged'(Bytes, OptOrMand, []). + +'dec_KmeSystemDataChanged'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'systemData' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{featureList,1},{speedDial,2},{trunkGroup,3},{extGroup,4},{pickGroup,5},{pagingGroup,6},{incomingGroup,7},{dayNightMode,8},{doorPhone,9},{vmGroup,10},{systemTime,11},{psGroup,12},{trunkGMembers,13},{incomingGMembers,14},{psGMembers,15},{vmGMembers,16},{broadcastGroup,17},{broadcastGMembers,18},{subdomainName,19},{externalSensor,20},{svm,21}],[{tag,128,0,'EXPLICIT',32}], mandatory), + {{systemData, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'deviceData' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSystemDataChanged_deviceData'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{deviceData, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'deviceBasicInfo' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,2,'EXPLICIT',32}]), + {{deviceBasicInfo, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'reconfiguration' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_null(Bytes1,[{tag,128,3,'EXPLICIT',32}], mandatory), + {{reconfiguration, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeSystemDataLinkedReply +%%================================ +'enc_KmeSystemDataLinkedReply'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type OCTET STRING +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_octet_string([], ?RT_BER:cindex(2,Val,crossRefID), [{tag,128,0,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_integer([], ?RT_BER:cindex(3,Val,segmentID), [{tag,128,1,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 3 with type BOOLEAN +%%------------------------------------------------- + {EncBytes3,EncLen3} = ?RT_BER:encode_boolean(?RT_BER:cindex(4,Val,lastSegment), [{tag,128,2,'EXPLICIT',32}]), + +%%------------------------------------------------- +%% attribute number 4 External KME-specific-types:KmeGetSystemDataRsp OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case ?RT_BER:cindex(5,Val,sysData) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'enc_KmeGetSystemDataRsp'(?RT_BER:cindex(5,Val,sysData), [{tag,128,3,'EXPLICIT',32}]) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeSystemDataLinkedReply'(Bytes, OptOrMand) -> + 'dec_KmeSystemDataLinkedReply'(Bytes, OptOrMand, []). + +'dec_KmeSystemDataLinkedReply'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type OCTET STRING +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_octet_string(Bytes2,[],[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_integer(Bytes3,[],[{tag,128,1,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 3 with type BOOLEAN +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = ?RT_BER:decode_boolean(Bytes4,[{tag,128,2,'EXPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 4 External KME-specific-types:KmeGetSystemDataRsp OPTIONAL +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = case Bytes5 of +<<2:2,_:1,3:5,_/binary>> -> +'dec_KmeGetSystemDataRsp'(Bytes5, opt_or_default, [{tag,128,3,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes5, 0 } +end, + + {Bytes7,Rb6} = ?RT_BER:restbytes2(RemBytes, Bytes6,noext), + {{'KmeSystemDataLinkedReply', Term1, Term2, Term3, Term4}, Bytes7, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6}. + + +%%================================ +%% KmeGetSystemDataPosAck +%%================================ + +'enc_KmeGetSystemDataPosAck'({'KmeGetSystemDataPosAck',Val}, TagIn) -> + 'enc_KmeGetSystemDataPosAck'(Val, TagIn); + +'enc_KmeGetSystemDataPosAck'(Val, TagIn) -> +?RT_BER:encode_octet_string([], Val, TagIn ++ []). + + +'dec_KmeGetSystemDataPosAck'(Bytes, OptOrMand) -> + 'dec_KmeGetSystemDataPosAck'(Bytes, OptOrMand, []). + +'dec_KmeGetSystemDataPosAck'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_octet_string(Bytes,[],TagIn++[], no_length, OptOrMand). + + + +%%================================ +%% KmeSystemCrossRefID +%%================================ + +'enc_KmeSystemCrossRefID'({'KmeSystemCrossRefID',Val}, TagIn) -> + 'enc_KmeSystemCrossRefID'(Val, TagIn); + +'enc_KmeSystemCrossRefID'(Val, TagIn) -> +?RT_BER:encode_octet_string([], Val, TagIn ++ []). + + +'dec_KmeSystemCrossRefID'(Bytes, OptOrMand) -> + 'dec_KmeSystemCrossRefID'(Bytes, OptOrMand, []). + +'dec_KmeSystemCrossRefID'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_octet_string(Bytes,4,TagIn++[], no_length, OptOrMand). + + + +%%================================ +%% KmeLockSystemData +%%================================ + +'enc_KmeLockSystemData'({'KmeLockSystemData',Val}, TagIn) -> + 'enc_KmeLockSystemData'(Val, TagIn); + +'enc_KmeLockSystemData'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + request -> + 'enc_KmeLockSystemData_request'(element(2,Val), []); + lockResult -> + ?RT_BER:encode_octet_string([], element(2,Val), []); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + + +%%================================ +%% KmeLockSystemData_request +%%================================ +'enc_KmeLockSystemData_request'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type BOOLEAN +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_boolean(?RT_BER:cindex(2,Val,systemDataLock), []), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'enc_KmeLockSystemData_request_id'(?RT_BER:cindex(3,Val,id), []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + + +%%================================ +%% KmeLockSystemData_request_id +%%================================ + +'enc_KmeLockSystemData_request_id'({'KmeLockSystemData_request_id',Val}, TagIn) -> + 'enc_KmeLockSystemData_request_id'(Val, TagIn); + +'enc_KmeLockSystemData_request_id'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + lock -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), []); + unlock -> + ?RT_BER:encode_octet_string([], element(2,Val), []); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + +'dec_KmeLockSystemData_request_id'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'lock' + <<0:2,_:1,16:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, []), + {{lock, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'unlock' + <<0:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,4,[], no_length, mandatory), + {{unlock, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. +'dec_KmeLockSystemData_request'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type BOOLEAN +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_boolean(Bytes2,[], mandatory), + +%%------------------------------------------------- +%% attribute number 2 with type CHOICE +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'dec_KmeLockSystemData_request_id'(Bytes3, mandatory, []), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeLockSystemData_request', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +'dec_KmeLockSystemData'(Bytes, OptOrMand) -> + 'dec_KmeLockSystemData'(Bytes, OptOrMand, []). + +'dec_KmeLockSystemData'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'request' + <<0:2,_:1,16:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeLockSystemData_request'(Bytes1, mandatory, []), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'lockResult' + <<0:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,4,[], no_length, mandatory), + {{lockResult, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeSystemDataStatus +%%================================ +'enc_KmeSystemDataStatus'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type BOOLEAN +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_boolean(?RT_BER:cindex(2,Val,systemDataLock), []), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,lockingDevice) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(3,Val,lockingDevice), []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeSystemDataStatus'(Bytes, OptOrMand) -> + 'dec_KmeSystemDataStatus'(Bytes, OptOrMand, []). + +'dec_KmeSystemDataStatus'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type BOOLEAN +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_boolean(Bytes2,[], mandatory), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<0:2,_:1,16:5,_/binary>> -> +'CSTA-device-identifiers':'dec_DeviceID'(Bytes3, opt_or_default, []); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeSystemDataStatus', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeSystemDataRevision +%%================================ + +'enc_KmeSystemDataRevision'({'KmeSystemDataRevision',Val}, TagIn) -> + 'enc_KmeSystemDataRevision'(Val, TagIn); + +'enc_KmeSystemDataRevision'(Val, TagIn) -> +?RT_BER:encode_octet_string([], Val, TagIn ++ []). + + +'dec_KmeSystemDataRevision'(Bytes, OptOrMand) -> + 'dec_KmeSystemDataRevision'(Bytes, OptOrMand, []). + +'dec_KmeSystemDataRevision'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_octet_string(Bytes,{0,128},TagIn++[], no_length, OptOrMand). + + + +%%================================ +%% KmeGetSystemDataRevision +%%================================ + +'enc_KmeGetSystemDataRevision'({'KmeGetSystemDataRevision',Val}, TagIn) -> + 'enc_KmeGetSystemDataRevision'(Val, TagIn); + +'enc_KmeGetSystemDataRevision'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + request -> + case (case element(2,Val) of {_,Enumval1}->Enumval1;_->element(2,Val) end) of +systemDataRevision -> ?RT_BER:encode_enumerated(0,[]); +speedDialRevision -> ?RT_BER:encode_enumerated(1,[]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end; + result -> + ?RT_BER:encode_octet_string([], element(2,Val), []); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeGetSystemDataRevision'(Bytes, OptOrMand) -> + 'dec_KmeGetSystemDataRevision'(Bytes, OptOrMand, []). + +'dec_KmeGetSystemDataRevision'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'request' + <<0:2,_:1,10:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{systemDataRevision,0},{speedDialRevision,1}],[], mandatory), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'result' + <<0:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{0,128},[], no_length, mandatory), + {{result, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeRevisionType +%%================================ + +'enc_KmeRevisionType'({'KmeRevisionType',Val}, TagIn) -> + 'enc_KmeRevisionType'(Val, TagIn); + +'enc_KmeRevisionType'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +systemDataRevision -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +speedDialRevision -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeRevisionType'(Bytes, OptOrMand) -> + 'dec_KmeRevisionType'(Bytes, OptOrMand, []). + +'dec_KmeRevisionType'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{systemDataRevision,0},{speedDialRevision,1}],TagIn++[], OptOrMand). + + + +%%================================ +%% ProgrammingEventOn +%%================================ + +'enc_ProgrammingEventOn'({'ProgrammingEventOn',Val}, TagIn) -> + 'enc_ProgrammingEventOn'(Val, TagIn); + +'enc_ProgrammingEventOn'(Val, TagIn) -> +?RT_BER:encode_boolean(Val, TagIn ++ []). + + +'dec_ProgrammingEventOn'(Bytes, OptOrMand) -> + 'dec_ProgrammingEventOn'(Bytes, OptOrMand, []). + +'dec_ProgrammingEventOn'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_boolean(Bytes,TagIn++[], OptOrMand). + + + +%%================================ +%% KmeSetProgrammingEventOn +%%================================ + +'enc_KmeSetProgrammingEventOn'({'KmeSetProgrammingEventOn',Val}, TagIn) -> + 'enc_KmeSetProgrammingEventOn'(Val, TagIn); + +'enc_KmeSetProgrammingEventOn'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + request -> + ?RT_BER:encode_boolean(element(2,Val), []); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeSetProgrammingEventOn'(Bytes, OptOrMand) -> + 'dec_KmeSetProgrammingEventOn'(Bytes, OptOrMand, []). + +'dec_KmeSetProgrammingEventOn'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'request' + <<0:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_boolean(Bytes1,[], mandatory), + {{request, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeLocalAlerm +%%================================ + +'enc_KmeLocalAlerm'({'KmeLocalAlerm',Val}, TagIn) -> + 'enc_KmeLocalAlerm'(Val, TagIn); + +'enc_KmeLocalAlerm'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + singleMessage -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + wideMessage -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeLocalAlerm'(Bytes, OptOrMand) -> + 'dec_KmeLocalAlerm'(Bytes, OptOrMand, []). + +'dec_KmeLocalAlerm'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'singleMessage' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{0,24},[{tag,128,0,'EXPLICIT',32}], no_length, mandatory), + {{singleMessage, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wideMessage' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{0,48},[{tag,128,1,'EXPLICIT',32}], no_length, mandatory), + {{wideMessage, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeTrunkId +%%================================ + +'enc_KmeTrunkId'({'KmeTrunkId',Val}, TagIn) -> + 'enc_KmeTrunkId'(Val, TagIn); + +'enc_KmeTrunkId'(Val, TagIn) -> + 'CSTA-device-identifiers':'enc_DeviceID'(Val, TagIn ++ []). + + +'dec_KmeTrunkId'(Bytes, OptOrMand) -> + 'dec_KmeTrunkId'(Bytes, OptOrMand, []). + +'dec_KmeTrunkId'(Bytes, OptOrMand, TagIn) -> +'CSTA-device-identifiers':'dec_DeviceID'(Bytes, OptOrMand, TagIn++[]). + + + +%%================================ +%% KmeOtherDevice +%%================================ + +'enc_KmeOtherDevice'({'KmeOtherDevice',Val}, TagIn) -> + 'enc_KmeOtherDevice'(Val, TagIn); + +'enc_KmeOtherDevice'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +vm -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +doorPhone -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +disa -> ?RT_BER:encode_enumerated(2,TagIn ++ []); +pagingGroup -> ?RT_BER:encode_enumerated(3,TagIn ++ []); +psGruop -> ?RT_BER:encode_enumerated(4,TagIn ++ []); +externalRinger -> ?RT_BER:encode_enumerated(5,TagIn ++ []); +externalSensor -> ?RT_BER:encode_enumerated(6,TagIn ++ []); +externalPager -> ?RT_BER:encode_enumerated(7,TagIn ++ []); +modem -> ?RT_BER:encode_enumerated(8,TagIn ++ []); +hdlc -> ?RT_BER:encode_enumerated(9,TagIn ++ []); +pbxSystem -> ?RT_BER:encode_enumerated(10,TagIn ++ []); +svm -> ?RT_BER:encode_enumerated(11,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeOtherDevice'(Bytes, OptOrMand) -> + 'dec_KmeOtherDevice'(Bytes, OptOrMand, []). + +'dec_KmeOtherDevice'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{vm,0},{doorPhone,1},{disa,2},{pagingGroup,3},{psGruop,4},{externalRinger,5},{externalSensor,6},{externalPager,7},{modem,8},{hdlc,9},{pbxSystem,10},{svm,11}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeCdrConditionCode +%%================================ + +'enc_KmeCdrConditionCode'({'KmeCdrConditionCode',Val}, TagIn) -> + 'enc_KmeCdrConditionCode'(Val, TagIn); + +'enc_KmeCdrConditionCode'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +cl -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +tr -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +fw -> ?RT_BER:encode_enumerated(2,TagIn ++ []); +d0 -> ?RT_BER:encode_enumerated(3,TagIn ++ []); +rm -> ?RT_BER:encode_enumerated(4,TagIn ++ []); +na -> ?RT_BER:encode_enumerated(5,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeCdrConditionCode'(Bytes, OptOrMand) -> + 'dec_KmeCdrConditionCode'(Bytes, OptOrMand, []). + +'dec_KmeCdrConditionCode'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{cl,0},{tr,1},{fw,2},{d0,3},{rm,4},{na,5}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeFeatureNumber +%%================================ + +'enc_KmeFeatureNumber'({'KmeFeatureNumber',Val}, TagIn) -> + 'enc_KmeFeatureNumber'(Val, TagIn); + +'enc_KmeFeatureNumber'(Val, TagIn) -> +?RT_BER:encode_integer([], Val, TagIn ++ []). + + +'dec_KmeFeatureNumber'(Bytes, OptOrMand) -> + 'dec_KmeFeatureNumber'(Bytes, OptOrMand, []). + +'dec_KmeFeatureNumber'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_integer(Bytes,[],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeProprietaryChars +%%================================ + +'enc_KmeProprietaryChars'({'KmeProprietaryChars',Val}, TagIn) -> + 'enc_KmeProprietaryChars'(Val, TagIn); + +'enc_KmeProprietaryChars'(Val, TagIn) -> +?RT_BER:encode_octet_string([], Val, TagIn ++ []). + + +'dec_KmeProprietaryChars'(Bytes, OptOrMand) -> + 'dec_KmeProprietaryChars'(Bytes, OptOrMand, []). + +'dec_KmeProprietaryChars'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_octet_string(Bytes,{0,144},TagIn++[], no_length, OptOrMand). + + + +%%================================ +%% KmeHoldType +%%================================ + +'enc_KmeHoldType'({'KmeHoldType',Val}, TagIn) -> + 'enc_KmeHoldType'(Val, TagIn); + +'enc_KmeHoldType'(Val, TagIn) -> +case (case Val of {_,Enumval1}->Enumval1;_->Val end) of +consultation -> ?RT_BER:encode_enumerated(0,TagIn ++ []); +normal -> ?RT_BER:encode_enumerated(1,TagIn ++ []); +exclusive -> ?RT_BER:encode_enumerated(2,TagIn ++ []); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end. + + +'dec_KmeHoldType'(Bytes, OptOrMand) -> + 'dec_KmeHoldType'(Bytes, OptOrMand, []). + +'dec_KmeHoldType'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_enumerated(Bytes,[],[{consultation,0},{normal,1},{exclusive,2}],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeForcedAlerting +%%================================ + +'enc_KmeForcedAlerting'({'KmeForcedAlerting',Val}, TagIn) -> + 'enc_KmeForcedAlerting'(Val, TagIn); + +'enc_KmeForcedAlerting'(Val, TagIn) -> +?RT_BER:encode_bit_string([], Val, [{fwdDnd,0},{timer,1}], TagIn ++ []). + + +'dec_KmeForcedAlerting'(Bytes, OptOrMand) -> + 'dec_KmeForcedAlerting'(Bytes, OptOrMand, []). + +'dec_KmeForcedAlerting'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_bit_string(Bytes,[],[{fwdDnd,0},{timer,1}],TagIn++[], no_length, OptOrMand). + + + +%%================================ +%% KmeDigitsReport +%%================================ +'enc_KmeDigitsReport'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-call-connection-identifiers':'enc_ConnectionID'(?RT_BER:cindex(2,Val,connection), []), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(3,Val,digits), 22, []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeDigitsReport'(Bytes, OptOrMand) -> + 'dec_KmeDigitsReport'(Bytes, OptOrMand, []). + +'dec_KmeDigitsReport'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type IA5String +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_restricted_string(Bytes3,{0,64},22,[], no_length, mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeDigitsReport', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeOgmStatus +%%================================ +'enc_KmeOgmStatus'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-call-connection-identifiers':'enc_ConnectionID'(?RT_BER:cindex(2,Val,connection), []), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {EncBytes2,EncLen2} = case (case ?RT_BER:cindex(3,Val,state) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(3,Val,state) end) of +started -> ?RT_BER:encode_enumerated(0,[]); +ended -> ?RT_BER:encode_enumerated(1,[]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + +%%------------------------------------------------- +%% attribute number 3 with type INTEGER +%%------------------------------------------------- + {EncBytes3,EncLen3} = ?RT_BER:encode_integer([], ?RT_BER:cindex(4,Val,ogmId), []), + +%%------------------------------------------------- +%% attribute number 4 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes4,EncLen4} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(5,Val,ogmPortNumber), []), + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeOgmStatus'(Bytes, OptOrMand) -> + 'dec_KmeOgmStatus'(Bytes, OptOrMand, []). + +'dec_KmeOgmStatus'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_enumerated(Bytes3,[],[{started,0},{ended,1}],[], mandatory), + +%%------------------------------------------------- +%% attribute number 3 with type INTEGER +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = ?RT_BER:decode_integer(Bytes4,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 4 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes5, mandatory, []), + + {Bytes7,Rb6} = ?RT_BER:restbytes2(RemBytes, Bytes6,noext), + {{'KmeOgmStatus', Term1, Term2, Term3, Term4}, Bytes7, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6}. + + +%%================================ +%% KmeWakeupResult +%%================================ +'enc_KmeWakeupResult'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,device), []), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {EncBytes2,EncLen2} = case (case ?RT_BER:cindex(3,Val,state) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(3,Val,state) end) of +answered -> ?RT_BER:encode_enumerated(0,[]); +noAnswer -> ?RT_BER:encode_enumerated(1,[]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + +%%------------------------------------------------- +%% attribute number 3 External KME-specific-types:KmeWakeUpTime +%%------------------------------------------------- + {EncBytes3,EncLen3} = 'enc_KmeWakeUpTime'(?RT_BER:cindex(4,Val,wakeupTime), []), + +%%------------------------------------------------- +%% attribute number 4 with type GeneralizedTime +%%------------------------------------------------- + {EncBytes4,EncLen4} = ?RT_BER:encode_generalized_time([], ?RT_BER:cindex(5,Val,invokeTime), []), + +%%------------------------------------------------- +%% attribute number 5 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case ?RT_BER:cindex(6,Val,restOfRetry) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(6,Val,restOfRetry), []) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeWakeupResult'(Bytes, OptOrMand) -> + 'dec_KmeWakeupResult'(Bytes, OptOrMand, []). + +'dec_KmeWakeupResult'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type ENUMERATED +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_enumerated(Bytes3,[],[{answered,0},{noAnswer,1}],[], mandatory), + +%%------------------------------------------------- +%% attribute number 3 External KME-specific-types:KmeWakeUpTime +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = 'dec_KmeWakeUpTime'(Bytes4, mandatory, []), + +%%------------------------------------------------- +%% attribute number 4 with type GeneralizedTime +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = ?RT_BER:decode_generalized_time(Bytes5,[],[], no_length, mandatory), + +%%------------------------------------------------- +%% attribute number 5 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term5,Bytes7,Rb6} = case Bytes6 of +<<0:2,_:1,2:5,_/binary>> -> +?RT_BER:decode_integer(Bytes6,[],[], mandatory); +_ -> +{ asn1_NOVALUE, Bytes6, 0 } +end, + + {Bytes8,Rb7} = ?RT_BER:restbytes2(RemBytes, Bytes7,noext), + {{'KmeWakeupResult', Term1, Term2, Term3, Term4, Term5}, Bytes8, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6+Rb7}. + + +%%================================ +%% KmeUnconferenced +%%================================ +'enc_KmeUnconferenced'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(2,Val,unconferencingDevice), []), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {EncBytes2,EncLen2} = 'CSTA-call-connection-identifiers':'enc_ConnectionID'(?RT_BER:cindex(3,Val,primaryCall), []), + +%%------------------------------------------------- +%% attribute number 3 External CSTA-call-connection-identifiers:ConnectionID OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,secodaryCall) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(?RT_BER:cindex(4,Val,secodaryCall), []) + end, + +%%------------------------------------------------- +%% attribute number 4 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case ?RT_BER:cindex(5,Val,primaryNID) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(5,Val,primaryNID), [{tag,128,1,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 5 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case ?RT_BER:cindex(6,Val,secondaryNID) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(6,Val,secondaryNID), [{tag,128,2,'EXPLICIT',32}]) + end, + +%%------------------------------------------------- +%% attribute number 6 with type ENUMERATED +%%------------------------------------------------- + {EncBytes6,EncLen6} = case (case ?RT_BER:cindex(7,Val,primaryConnectionInfo) of {_,Enumval1}->Enumval1;_->?RT_BER:cindex(7,Val,primaryConnectionInfo) end) of +null -> ?RT_BER:encode_enumerated(0,[{tag,64,14,'IMPLICIT',32}]); +initiated -> ?RT_BER:encode_enumerated(1,[{tag,64,14,'IMPLICIT',32}]); +alerting -> ?RT_BER:encode_enumerated(2,[{tag,64,14,'IMPLICIT',32}]); +connected -> ?RT_BER:encode_enumerated(3,[{tag,64,14,'IMPLICIT',32}]); +hold -> ?RT_BER:encode_enumerated(4,[{tag,64,14,'IMPLICIT',32}]); +queued -> ?RT_BER:encode_enumerated(5,[{tag,64,14,'IMPLICIT',32}]); +fail -> ?RT_BER:encode_enumerated(6,[{tag,64,14,'IMPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end, + +%%------------------------------------------------- +%% attribute number 7 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes7,EncLen7} = case ?RT_BER:cindex(8,Val,secondaryConnectionInfo) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case (case ?RT_BER:cindex(8,Val,secondaryConnectionInfo) of {_,Enumval3}->Enumval3;_->?RT_BER:cindex(8,Val,secondaryConnectionInfo) end) of +null -> ?RT_BER:encode_enumerated(0,[{tag,64,14,'IMPLICIT',32}]); +initiated -> ?RT_BER:encode_enumerated(1,[{tag,64,14,'IMPLICIT',32}]); +alerting -> ?RT_BER:encode_enumerated(2,[{tag,64,14,'IMPLICIT',32}]); +connected -> ?RT_BER:encode_enumerated(3,[{tag,64,14,'IMPLICIT',32}]); +hold -> ?RT_BER:encode_enumerated(4,[{tag,64,14,'IMPLICIT',32}]); +queued -> ?RT_BER:encode_enumerated(5,[{tag,64,14,'IMPLICIT',32}]); +fail -> ?RT_BER:encode_enumerated(6,[{tag,64,14,'IMPLICIT',32}]); +Enumval4 -> exit({error,{asn1, {enumerated_not_in_range,Enumval4}}}) +end + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6, EncBytes7], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6 + EncLen7, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeUnconferenced'(Bytes, OptOrMand) -> + 'dec_KmeUnconferenced'(Bytes, OptOrMand, []). + +'dec_KmeUnconferenced'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-device-identifiers:DeviceID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = 'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes3, mandatory, []), + +%%------------------------------------------------- +%% attribute number 3 External CSTA-call-connection-identifiers:ConnectionID OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<1:2,_:1,11:5,_/binary>> -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes4, opt_or_default, []); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + +%%------------------------------------------------- +%% attribute number 4 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = case Bytes5 of +<<2:2,_:1,1:5,_/binary>> -> +'CSTA-device-identifiers':'dec_DeviceID'(Bytes5, opt_or_default, [{tag,128,1,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes5, 0 } +end, + +%%------------------------------------------------- +%% attribute number 5 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {Term5,Bytes7,Rb6} = case Bytes6 of +<<2:2,_:1,2:5,_/binary>> -> +'CSTA-device-identifiers':'dec_DeviceID'(Bytes6, opt_or_default, [{tag,128,2,'EXPLICIT',32}]); +_ -> +{ asn1_NOVALUE, Bytes6, 0 } +end, + +%%------------------------------------------------- +%% attribute number 6 with type ENUMERATED +%%------------------------------------------------- + {Term6,Bytes8,Rb7} = ?RT_BER:decode_enumerated(Bytes7,[],[{null,0},{initiated,1},{alerting,2},{connected,3},{hold,4},{queued,5},{fail,6}],[{tag,64,14,'IMPLICIT',32}], mandatory), + +%%------------------------------------------------- +%% attribute number 7 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {Term7,Bytes9,Rb8} = case Bytes8 of +<<1:2,_:1,14:5,_/binary>> -> +?RT_BER:decode_enumerated(Bytes8,[],[{null,0},{initiated,1},{alerting,2},{connected,3},{hold,4},{queued,5},{fail,6}],[{tag,64,14,'IMPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes8, 0 } +end, + + {Bytes10,Rb9} = ?RT_BER:restbytes2(RemBytes, Bytes9,noext), + {{'KmeUnconferenced', Term1, Term2, Term3, Term4, Term5, Term6, Term7}, Bytes10, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6+Rb7+Rb8+Rb9}. + + +%%================================ +%% KmeTamEnded +%%================================ + +'enc_KmeTamEnded'({'KmeTamEnded',Val}, TagIn) -> + 'enc_KmeTamEnded'(Val, TagIn); + +'enc_KmeTamEnded'(Val, TagIn) -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(Val, TagIn ++ []). + + +'dec_KmeTamEnded'(Bytes, OptOrMand) -> + 'dec_KmeTamEnded'(Bytes, OptOrMand, []). + +'dec_KmeTamEnded'(Bytes, OptOrMand, TagIn) -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes, OptOrMand, TagIn++[]). + + + +%%================================ +%% KmePcRecEnded +%%================================ + +'enc_KmePcRecEnded'({'KmePcRecEnded',Val}, TagIn) -> + 'enc_KmePcRecEnded'(Val, TagIn); + +'enc_KmePcRecEnded'(Val, TagIn) -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(Val, TagIn ++ []). + + +'dec_KmePcRecEnded'(Bytes, OptOrMand) -> + 'dec_KmePcRecEnded'(Bytes, OptOrMand, []). + +'dec_KmePcRecEnded'(Bytes, OptOrMand, TagIn) -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes, OptOrMand, TagIn++[]). + + + +%%================================ +%% KmeSwitchChannel +%%================================ + +'enc_KmeSwitchChannel'({'KmeSwitchChannel',Val}, TagIn) -> + 'enc_KmeSwitchChannel'(Val, TagIn); + +'enc_KmeSwitchChannel'(Val, TagIn) -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(Val, TagIn ++ []). + + +'dec_KmeSwitchChannel'(Bytes, OptOrMand) -> + 'dec_KmeSwitchChannel'(Bytes, OptOrMand, []). + +'dec_KmeSwitchChannel'(Bytes, OptOrMand, TagIn) -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes, OptOrMand, TagIn++[]). + + + +%%================================ +%% KmeFreeOgmPort +%%================================ + +'enc_KmeFreeOgmPort'({'KmeFreeOgmPort',Val}, TagIn) -> + 'enc_KmeFreeOgmPort'(Val, TagIn); + +'enc_KmeFreeOgmPort'(Val, TagIn) -> +?RT_BER:encode_integer([], Val, TagIn ++ []). + + +'dec_KmeFreeOgmPort'(Bytes, OptOrMand) -> + 'dec_KmeFreeOgmPort'(Bytes, OptOrMand, []). + +'dec_KmeFreeOgmPort'(Bytes, OptOrMand, TagIn) -> +?RT_BER:decode_integer(Bytes,[],TagIn++[], OptOrMand). + + + +%%================================ +%% KmeCallControlSrvEvt +%%================================ + +'enc_KmeCallControlSrvEvt'({'KmeCallControlSrvEvt',Val}, TagIn) -> + 'enc_KmeCallControlSrvEvt'(Val, TagIn); + +'enc_KmeCallControlSrvEvt'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + dndOverride -> + 'enc_KmeDndOverride'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + interuptCall -> + 'enc_KmeInteruptCall'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + eFA -> + 'enc_KmeExternalFeatureAccess'(element(2,Val), [{tag,128,2,'EXPLICIT',32}]); + tempTollChange -> + 'enc_KmeTempTollChange'(element(2,Val), [{tag,128,3,'EXPLICIT',32}]); + doorOpen -> + 'enc_KmeDoorOpen'(element(2,Val), [{tag,128,4,'EXPLICIT',32}]); + twoWayRec -> + 'enc_KmeTwoWayRec'(element(2,Val), [{tag,128,5,'EXPLICIT',32}]); + callBackInvoke -> + 'enc_KmeCallBackInvoke'(element(2,Val), [{tag,128,6,'EXPLICIT',32}]); + pcRec -> + 'enc_KmePcRec'(element(2,Val), [{tag,128,7,'EXPLICIT',32}]); + switchChannel -> + 'enc_KmeSwitchChannel'(element(2,Val), [{tag,128,8,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeCallControlSrvEvt'(Bytes, OptOrMand) -> + 'dec_KmeCallControlSrvEvt'(Bytes, OptOrMand, []). + +'dec_KmeCallControlSrvEvt'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'dndOverride' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDndOverride'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{dndOverride, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'interuptCall' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeInteruptCall'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{interuptCall, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'eFA' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeExternalFeatureAccess'(Bytes1, mandatory, [{tag,128,2,'EXPLICIT',32}]), + {{eFA, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'tempTollChange' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeTempTollChange'(Bytes1, mandatory, [{tag,128,3,'EXPLICIT',32}]), + {{tempTollChange, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'doorOpen' + <<2:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDoorOpen'(Bytes1, mandatory, [{tag,128,4,'EXPLICIT',32}]), + {{doorOpen, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'twoWayRec' + <<2:2,_:1,5:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeTwoWayRec'(Bytes1, mandatory, [{tag,128,5,'EXPLICIT',32}]), + {{twoWayRec, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'callBackInvoke' + <<2:2,_:1,6:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeCallBackInvoke'(Bytes1, mandatory, [{tag,128,6,'EXPLICIT',32}]), + {{callBackInvoke, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'pcRec' + <<2:2,_:1,7:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmePcRec'(Bytes1, mandatory, [{tag,128,7,'EXPLICIT',32}]), + {{pcRec, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'switchChannel' + <<2:2,_:1,8:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSwitchChannel'(Bytes1, mandatory, [{tag,128,8,'EXPLICIT',32}]), + {{switchChannel, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeDeviceStatus +%%================================ + +'enc_KmeDeviceStatus'({'KmeDeviceStatus',Val}, TagIn) -> + 'enc_KmeDeviceStatus'(Val, TagIn); + +'enc_KmeDeviceStatus'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + agentStatus -> + 'enc_KmeDeviceAgentStatus'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + callStatus -> + 'enc_KmeDeviceCallStatus'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + serviceStatus -> + 'enc_KmeDeviceServiceStatus'(element(2,Val), [{tag,128,2,'EXPLICIT',32}]); + lineStatus -> + 'enc_KmeLineStatus'(element(2,Val), [{tag,128,3,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeDeviceStatus'(Bytes, OptOrMand) -> + 'dec_KmeDeviceStatus'(Bytes, OptOrMand, []). + +'dec_KmeDeviceStatus'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'agentStatus' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDeviceAgentStatus'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{agentStatus, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'callStatus' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDeviceCallStatus'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{callStatus, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'serviceStatus' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDeviceServiceStatus'(Bytes1, mandatory, [{tag,128,2,'EXPLICIT',32}]), + {{serviceStatus, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'lineStatus' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeLineStatus'(Bytes1, mandatory, [{tag,128,3,'EXPLICIT',32}]), + {{lineStatus, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeDeviceMonitor +%%================================ + +'enc_KmeDeviceMonitor'({'KmeDeviceMonitor',Val}, TagIn) -> + 'enc_KmeDeviceMonitor'(Val, TagIn); + +'enc_KmeDeviceMonitor'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + startDeviceMonitor -> + 'enc_KmeStartDeviceMonitor'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + stopDeviceMonitor -> + ?RT_BER:encode_null(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeDeviceMonitor'(Bytes, OptOrMand) -> + 'dec_KmeDeviceMonitor'(Bytes, OptOrMand, []). + +'dec_KmeDeviceMonitor'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'startDeviceMonitor' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeStartDeviceMonitor'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{startDeviceMonitor, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'stopDeviceMonitor' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_null(Bytes1,[{tag,128,1,'EXPLICIT',32}], mandatory), + {{stopDeviceMonitor, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeSystemData +%%================================ + +'enc_KmeSystemData'({'KmeSystemData',Val}, TagIn) -> + 'enc_KmeSystemData'(Val, TagIn); + +'enc_KmeSystemData'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + getSystemData -> + 'enc_KmeGetSystemData'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + setSystemData -> + 'enc_KmeSetSystemData'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + systemDataChanged -> + 'enc_KmeSystemDataChanged'(element(2,Val), [{tag,128,2,'EXPLICIT',32}]); + systemDataLinkedReply -> + 'enc_KmeSystemDataLinkedReply'(element(2,Val), [{tag,128,3,'EXPLICIT',32}]); + getSystemDataPosAck -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,4,'EXPLICIT',32}]); + lockSystemData -> + 'enc_KmeLockSystemData'(element(2,Val), [{tag,128,5,'EXPLICIT',32}]); + systemDataStatus -> + 'enc_KmeSystemDataStatus'(element(2,Val), [{tag,128,6,'EXPLICIT',32}]); + dataRevisionRecord -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,7,'EXPLICIT',32}]); + getDataRevisionRecord -> + 'enc_KmeGetSystemDataRevision'(element(2,Val), [{tag,128,8,'EXPLICIT',32}]); + setprogrammingEventOn -> + 'enc_KmeSetProgrammingEventOn'(element(2,Val), [{tag,128,9,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeSystemData'(Bytes, OptOrMand) -> + 'dec_KmeSystemData'(Bytes, OptOrMand, []). + +'dec_KmeSystemData'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'getSystemData' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemData'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{getSystemData, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'setSystemData' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSetSystemData'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{setSystemData, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'systemDataChanged' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSystemDataChanged'(Bytes1, mandatory, [{tag,128,2,'EXPLICIT',32}]), + {{systemDataChanged, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'systemDataLinkedReply' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSystemDataLinkedReply'(Bytes1, mandatory, [{tag,128,3,'EXPLICIT',32}]), + {{systemDataLinkedReply, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'getSystemDataPosAck' + <<2:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,[],[{tag,128,4,'EXPLICIT',32}], no_length, mandatory), + {{getSystemDataPosAck, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'lockSystemData' + <<2:2,_:1,5:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeLockSystemData'(Bytes1, mandatory, [{tag,128,5,'EXPLICIT',32}]), + {{lockSystemData, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'systemDataStatus' + <<2:2,_:1,6:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSystemDataStatus'(Bytes1, mandatory, [{tag,128,6,'EXPLICIT',32}]), + {{systemDataStatus, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'dataRevisionRecord' + <<2:2,_:1,7:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{0,128},[{tag,128,7,'EXPLICIT',32}], no_length, mandatory), + {{dataRevisionRecord, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'getDataRevisionRecord' + <<2:2,_:1,8:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGetSystemDataRevision'(Bytes1, mandatory, [{tag,128,8,'EXPLICIT',32}]), + {{getDataRevisionRecord, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'setprogrammingEventOn' + <<2:2,_:1,9:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSetProgrammingEventOn'(Bytes1, mandatory, [{tag,128,9,'EXPLICIT',32}]), + {{setprogrammingEventOn, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeAdditionalData +%%================================ + +'enc_KmeAdditionalData'({'KmeAdditionalData',Val}, TagIn) -> + 'enc_KmeAdditionalData'(Val, TagIn); + +'enc_KmeAdditionalData'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + fowardType -> + case (case element(2,Val) of {_,Enumval1}->Enumval1;_->element(2,Val) end) of +forwardImmediate -> ?RT_BER:encode_enumerated(0,[{tag,128,1,'EXPLICIT',32}]); +forwardBusy -> ?RT_BER:encode_enumerated(1,[{tag,128,1,'EXPLICIT',32}]); +forwardNoAns -> ?RT_BER:encode_enumerated(2,[{tag,128,1,'EXPLICIT',32}]); +forwardBusyInt -> ?RT_BER:encode_enumerated(3,[{tag,128,1,'EXPLICIT',32}]); +forwardBusyExt -> ?RT_BER:encode_enumerated(4,[{tag,128,1,'EXPLICIT',32}]); +forwardNoAnsInt -> ?RT_BER:encode_enumerated(5,[{tag,128,1,'EXPLICIT',32}]); +forwardNoAnsExt -> ?RT_BER:encode_enumerated(6,[{tag,128,1,'EXPLICIT',32}]); +forwardImmInt -> ?RT_BER:encode_enumerated(7,[{tag,128,1,'EXPLICIT',32}]); +forwardImmExt -> ?RT_BER:encode_enumerated(8,[{tag,128,1,'EXPLICIT',32}]); +forwardDND -> ?RT_BER:encode_enumerated(9,[{tag,128,1,'EXPLICIT',32}]); +forwardDNDInt -> ?RT_BER:encode_enumerated(10,[{tag,128,1,'EXPLICIT',32}]); +forwardDNDExt -> ?RT_BER:encode_enumerated(11,[{tag,128,1,'EXPLICIT',32}]); +forwardBusyNoAnswer -> ?RT_BER:encode_enumerated(12,[{tag,128,1,'EXPLICIT',32}]); +forwardBusyNoAnswerInt -> ?RT_BER:encode_enumerated(13,[{tag,128,1,'EXPLICIT',32}]); +forwardBusyNoAnswerExt -> ?RT_BER:encode_enumerated(14,[{tag,128,1,'EXPLICIT',32}]); +Enumval2 -> exit({error,{asn1, {enumerated_not_in_range,Enumval2}}}) +end; + trunkId -> + 'enc_KmeTrunkId'(element(2,Val), [{tag,128,2,'EXPLICIT',32}]); + otherDevice -> + case (case element(2,Val) of {_,Enumval3}->Enumval3;_->element(2,Val) end) of +vm -> ?RT_BER:encode_enumerated(0,[{tag,128,3,'EXPLICIT',32}]); +doorPhone -> ?RT_BER:encode_enumerated(1,[{tag,128,3,'EXPLICIT',32}]); +disa -> ?RT_BER:encode_enumerated(2,[{tag,128,3,'EXPLICIT',32}]); +pagingGroup -> ?RT_BER:encode_enumerated(3,[{tag,128,3,'EXPLICIT',32}]); +psGruop -> ?RT_BER:encode_enumerated(4,[{tag,128,3,'EXPLICIT',32}]); +externalRinger -> ?RT_BER:encode_enumerated(5,[{tag,128,3,'EXPLICIT',32}]); +externalSensor -> ?RT_BER:encode_enumerated(6,[{tag,128,3,'EXPLICIT',32}]); +externalPager -> ?RT_BER:encode_enumerated(7,[{tag,128,3,'EXPLICIT',32}]); +modem -> ?RT_BER:encode_enumerated(8,[{tag,128,3,'EXPLICIT',32}]); +hdlc -> ?RT_BER:encode_enumerated(9,[{tag,128,3,'EXPLICIT',32}]); +pbxSystem -> ?RT_BER:encode_enumerated(10,[{tag,128,3,'EXPLICIT',32}]); +svm -> ?RT_BER:encode_enumerated(11,[{tag,128,3,'EXPLICIT',32}]); +Enumval4 -> exit({error,{asn1, {enumerated_not_in_range,Enumval4}}}) +end; + vmRecExtNo -> + ?RT_BER:encode_restricted_string([], element(2,Val), 22, [{tag,128,4,'EXPLICIT',32}]); + deviceCategory -> + 'enc_KmeChangedDeviceCategory'(element(2,Val), [{tag,128,5,'EXPLICIT',32}]); + device -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,6,'EXPLICIT',32}]); + featureNumber -> + ?RT_BER:encode_integer([], element(2,Val), [{tag,128,7,'EXPLICIT',32}]); + proprietaryContents -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,8,'EXPLICIT',32}]); + holdType -> + case (case element(2,Val) of {_,Enumval8}->Enumval8;_->element(2,Val) end) of +consultation -> ?RT_BER:encode_enumerated(0,[{tag,128,9,'EXPLICIT',32}]); +normal -> ?RT_BER:encode_enumerated(1,[{tag,128,9,'EXPLICIT',32}]); +exclusive -> ?RT_BER:encode_enumerated(2,[{tag,128,9,'EXPLICIT',32}]); +Enumval9 -> exit({error,{asn1, {enumerated_not_in_range,Enumval9}}}) +end; + conditionCode -> + case (case element(2,Val) of {_,Enumval10}->Enumval10;_->element(2,Val) end) of +cl -> ?RT_BER:encode_enumerated(0,[{tag,128,10,'EXPLICIT',32}]); +tr -> ?RT_BER:encode_enumerated(1,[{tag,128,10,'EXPLICIT',32}]); +fw -> ?RT_BER:encode_enumerated(2,[{tag,128,10,'EXPLICIT',32}]); +d0 -> ?RT_BER:encode_enumerated(3,[{tag,128,10,'EXPLICIT',32}]); +rm -> ?RT_BER:encode_enumerated(4,[{tag,128,10,'EXPLICIT',32}]); +na -> ?RT_BER:encode_enumerated(5,[{tag,128,10,'EXPLICIT',32}]); +Enumval11 -> exit({error,{asn1, {enumerated_not_in_range,Enumval11}}}) +end; + lockDisplay -> + ?RT_BER:encode_boolean(element(2,Val), [{tag,128,11,'EXPLICIT',32}]); + forcedAlerting -> + ?RT_BER:encode_bit_string([], element(2,Val), [{fwdDnd,0},{timer,1}], [{tag,128,12,'EXPLICIT',32}]); + callID -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,13,'EXPLICIT',32}]); + ogmContinuation -> + ?RT_BER:encode_boolean(element(2,Val), [{tag,128,14,'EXPLICIT',32}]); + broadcastGroupNo -> + ?RT_BER:encode_integer([], element(2,Val), [{tag,128,15,'EXPLICIT',32}]); + ringPattern -> + ?RT_BER:encode_integer([], element(2,Val), [{tag,128,16,'EXPLICIT',32}]); + didNo -> + 'CSTA-device-identifiers':'enc_DeviceID'(element(2,Val), [{tag,128,17,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeAdditionalData'(Bytes, OptOrMand) -> + 'dec_KmeAdditionalData'(Bytes, OptOrMand, []). + +'dec_KmeAdditionalData'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'fowardType' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{forwardImmediate,0},{forwardBusy,1},{forwardNoAns,2},{forwardBusyInt,3},{forwardBusyExt,4},{forwardNoAnsInt,5},{forwardNoAnsExt,6},{forwardImmInt,7},{forwardImmExt,8},{forwardDND,9},{forwardDNDInt,10},{forwardDNDExt,11},{forwardBusyNoAnswer,12},{forwardBusyNoAnswerInt,13},{forwardBusyNoAnswerExt,14}],[{tag,128,1,'EXPLICIT',32}], mandatory), + {{fowardType, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'trunkId' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeTrunkId'(Bytes1, mandatory, [{tag,128,2,'EXPLICIT',32}]), + {{trunkId, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'otherDevice' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{vm,0},{doorPhone,1},{disa,2},{pagingGroup,3},{psGruop,4},{externalRinger,5},{externalSensor,6},{externalPager,7},{modem,8},{hdlc,9},{pbxSystem,10},{svm,11}],[{tag,128,3,'EXPLICIT',32}], mandatory), + {{otherDevice, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'vmRecExtNo' + <<2:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_restricted_string(Bytes1,{1,5},22,[{tag,128,4,'EXPLICIT',32}], no_length, mandatory), + {{vmRecExtNo, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'deviceCategory' + <<2:2,_:1,5:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeChangedDeviceCategory'(Bytes1, mandatory, [{tag,128,5,'EXPLICIT',32}]), + {{deviceCategory, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'device' + <<2:2,_:1,6:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,6,'EXPLICIT',32}]), + {{device, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'featureNumber' + <<2:2,_:1,7:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_integer(Bytes1,[],[{tag,128,7,'EXPLICIT',32}], mandatory), + {{featureNumber, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'proprietaryContents' + <<2:2,_:1,8:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{0,144},[{tag,128,8,'EXPLICIT',32}], no_length, mandatory), + {{proprietaryContents, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'holdType' + <<2:2,_:1,9:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{consultation,0},{normal,1},{exclusive,2}],[{tag,128,9,'EXPLICIT',32}], mandatory), + {{holdType, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'conditionCode' + <<2:2,_:1,10:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_enumerated(Bytes1,[],[{cl,0},{tr,1},{fw,2},{d0,3},{rm,4},{na,5}],[{tag,128,10,'EXPLICIT',32}], mandatory), + {{conditionCode, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'lockDisplay' + <<2:2,_:1,11:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_boolean(Bytes1,[{tag,128,11,'EXPLICIT',32}], mandatory), + {{lockDisplay, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'forcedAlerting' + <<2:2,_:1,12:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_bit_string(Bytes1,[],[{fwdDnd,0},{timer,1}],[{tag,128,12,'EXPLICIT',32}], no_length, mandatory), + {{forcedAlerting, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'callID' + <<2:2,_:1,13:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,[],[{tag,128,13,'EXPLICIT',32}], no_length, mandatory), + {{callID, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'ogmContinuation' + <<2:2,_:1,14:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_boolean(Bytes1,[{tag,128,14,'EXPLICIT',32}], mandatory), + {{ogmContinuation, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'broadcastGroupNo' + <<2:2,_:1,15:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_integer(Bytes1,[],[{tag,128,15,'EXPLICIT',32}], mandatory), + {{broadcastGroupNo, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'ringPattern' + <<2:2,_:1,16:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_integer(Bytes1,[],[{tag,128,16,'EXPLICIT',32}], mandatory), + {{ringPattern, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'didNo' + <<2:2,_:1,17:5,_/binary>> -> + {Dec, Rest, RbCho} = 'CSTA-device-identifiers':'dec_DeviceID'(Bytes1, mandatory, [{tag,128,17,'EXPLICIT',32}]), + {{didNo, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmePrivateEvent +%%================================ + +'enc_KmePrivateEvent'({'KmePrivateEvent',Val}, TagIn) -> + 'enc_KmePrivateEvent'(Val, TagIn); + +'enc_KmePrivateEvent'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + digitsReport -> + 'enc_KmeDigitsReport'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + ogmStatus -> + 'enc_KmeOgmStatus'(element(2,Val), [{tag,128,2,'EXPLICIT',32}]); + wakeupResult -> + 'enc_KmeWakeupResult'(element(2,Val), [{tag,128,3,'EXPLICIT',32}]); + unconferenced -> + 'enc_KmeUnconferenced'(element(2,Val), [{tag,128,4,'EXPLICIT',32}]); + tamEnded -> + 'enc_KmeTamEnded'(element(2,Val), [{tag,128,5,'EXPLICIT',32}]); + pcRecEnded -> + 'enc_KmePcRecEnded'(element(2,Val), [{tag,128,6,'EXPLICIT',32}]); + callbackNotification -> + 'enc_CallBackNotification'(element(2,Val), [{tag,128,7,'EXPLICIT',32}]); + freeOgmPort -> + ?RT_BER:encode_integer([], element(2,Val), [{tag,128,8,'EXPLICIT',32}]); + pDFStatus -> + 'enc_KmePDFStatus'(element(2,Val), [{tag,128,9,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmePrivateEvent'(Bytes, OptOrMand) -> + 'dec_KmePrivateEvent'(Bytes, OptOrMand, []). + +'dec_KmePrivateEvent'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'digitsReport' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDigitsReport'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{digitsReport, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'ogmStatus' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeOgmStatus'(Bytes1, mandatory, [{tag,128,2,'EXPLICIT',32}]), + {{ogmStatus, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'wakeupResult' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeWakeupResult'(Bytes1, mandatory, [{tag,128,3,'EXPLICIT',32}]), + {{wakeupResult, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'unconferenced' + <<2:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeUnconferenced'(Bytes1, mandatory, [{tag,128,4,'EXPLICIT',32}]), + {{unconferenced, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'tamEnded' + <<2:2,_:1,5:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeTamEnded'(Bytes1, mandatory, [{tag,128,5,'EXPLICIT',32}]), + {{tamEnded, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'pcRecEnded' + <<2:2,_:1,6:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmePcRecEnded'(Bytes1, mandatory, [{tag,128,6,'EXPLICIT',32}]), + {{pcRecEnded, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'callbackNotification' + <<2:2,_:1,7:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_CallBackNotification'(Bytes1, mandatory, [{tag,128,7,'EXPLICIT',32}]), + {{callbackNotification, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'freeOgmPort' + <<2:2,_:1,8:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_integer(Bytes1,[],[{tag,128,8,'EXPLICIT',32}], mandatory), + {{freeOgmPort, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'pDFStatus' + <<2:2,_:1,9:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmePDFStatus'(Bytes1, mandatory, [{tag,128,9,'EXPLICIT',32}]), + {{pDFStatus, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeResourceControl +%%================================ + +'enc_KmeResourceControl'({'KmeResourceControl',Val}, TagIn) -> + 'enc_KmeResourceControl'(Val, TagIn); + +'enc_KmeResourceControl'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + ogmStart -> + 'enc_KmeOgmStart'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + ogmStop -> + 'enc_KmeOgmStop'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeResourceControl'(Bytes, OptOrMand) -> + 'dec_KmeResourceControl'(Bytes, OptOrMand, []). + +'dec_KmeResourceControl'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'ogmStart' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeOgmStart'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{ogmStart, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'ogmStop' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeOgmStop'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{ogmStop, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeOgmStart +%%================================ +'enc_KmeOgmStart'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {EncBytes1,EncLen1} = 'CSTA-call-connection-identifiers':'enc_ConnectionID'(?RT_BER:cindex(2,Val,connection), []), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {EncBytes2,EncLen2} = ?RT_BER:encode_integer([], ?RT_BER:cindex(3,Val,ogmId), []), + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeOgmStart'(Bytes, OptOrMand) -> + 'dec_KmeOgmStart'(Bytes, OptOrMand, []). + +'dec_KmeOgmStart'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 External CSTA-call-connection-identifiers:ConnectionID +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = 'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes2, mandatory, []), + +%%------------------------------------------------- +%% attribute number 2 with type INTEGER +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = ?RT_BER:decode_integer(Bytes3,[],[], mandatory), + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeOgmStart', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeOgmStop +%%================================ + +'enc_KmeOgmStop'({'KmeOgmStop',Val}, TagIn) -> + 'enc_KmeOgmStop'(Val, TagIn); + +'enc_KmeOgmStop'(Val, TagIn) -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(Val, TagIn ++ []). + + +'dec_KmeOgmStop'(Bytes, OptOrMand) -> + 'dec_KmeOgmStop'(Bytes, OptOrMand, []). + +'dec_KmeOgmStop'(Bytes, OptOrMand, TagIn) -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes, OptOrMand, TagIn++[]). + + + +%%================================ +%% KmeGenericSrvEvt +%%================================ + +'enc_KmeGenericSrvEvt'({'KmeGenericSrvEvt',Val}, TagIn) -> + 'enc_KmeGenericSrvEvt'(Val, TagIn); + +'enc_KmeGenericSrvEvt'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + serviceRequest -> + 'enc_KmeGenericServiceReq'(element(2,Val), [{tag,128,0,'EXPLICIT',32}]); + serviceResult -> + 'enc_KmeGenericServiceRsp'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + event -> + 'enc_KmeGenericEvent'(element(2,Val), [{tag,128,2,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KmeGenericSrvEvt'(Bytes, OptOrMand) -> + 'dec_KmeGenericSrvEvt'(Bytes, OptOrMand, []). + +'dec_KmeGenericSrvEvt'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'serviceRequest' + <<2:2,_:1,0:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGenericServiceReq'(Bytes1, mandatory, [{tag,128,0,'EXPLICIT',32}]), + {{serviceRequest, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'serviceResult' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGenericServiceRsp'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{serviceResult, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'event' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGenericEvent'(Bytes1, mandatory, [{tag,128,2,'EXPLICIT',32}]), + {{event, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. + + +%%================================ +%% KmeGenericServiceReq +%%================================ +'enc_KmeGenericServiceReq'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,serviceNo), []), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,device) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(3,Val,device), []) + end, + +%%------------------------------------------------- +%% attribute number 3 External CSTA-call-connection-identifiers:ConnectionID OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,connection) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(?RT_BER:cindex(4,Val,connection), []) + end, + +%%------------------------------------------------- +%% attribute number 4 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case ?RT_BER:cindex(5,Val,number) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(5,Val,number), []) + end, + +%%------------------------------------------------- +%% attribute number 5 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case ?RT_BER:cindex(6,Val,string) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(6,Val,string), 22, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeGenericServiceReq'(Bytes, OptOrMand) -> + 'dec_KmeGenericServiceReq'(Bytes, OptOrMand, []). + +'dec_KmeGenericServiceReq'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<0:2,_:1,16:5,_/binary>> -> +'CSTA-device-identifiers':'dec_DeviceID'(Bytes3, opt_or_default, []); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + +%%------------------------------------------------- +%% attribute number 3 External CSTA-call-connection-identifiers:ConnectionID OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<1:2,_:1,11:5,_/binary>> -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes4, opt_or_default, []); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + +%%------------------------------------------------- +%% attribute number 4 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = case Bytes5 of +<<0:2,_:1,2:5,_/binary>> -> +?RT_BER:decode_integer(Bytes5,[],[], mandatory); +_ -> +{ asn1_NOVALUE, Bytes5, 0 } +end, + +%%------------------------------------------------- +%% attribute number 5 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term5,Bytes7,Rb6} = case Bytes6 of +<<0:2,_:1,22:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes6,{0,128},22,[], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes6, 0 } +end, + + {Bytes8,Rb7} = ?RT_BER:restbytes2(RemBytes, Bytes7,noext), + {{'KmeGenericServiceReq', Term1, Term2, Term3, Term4, Term5}, Bytes8, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6+Rb7}. + + +%%================================ +%% KmeGenericServiceRsp +%%================================ +'enc_KmeGenericServiceRsp'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes1,EncLen1} = case ?RT_BER:cindex(2,Val,number) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,number), []) + end, + +%%------------------------------------------------- +%% attribute number 2 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,string) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(3,Val,string), 22, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2], + LenSoFar = EncLen1 + EncLen2, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeGenericServiceRsp'(Bytes, OptOrMand) -> + 'dec_KmeGenericServiceRsp'(Bytes, OptOrMand, []). + +'dec_KmeGenericServiceRsp'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = case Bytes2 of +<<0:2,_:1,2:5,_/binary>> -> +?RT_BER:decode_integer(Bytes2,[],[], mandatory); +_ -> +{ asn1_NOVALUE, Bytes2, 0 } +end, + +%%------------------------------------------------- +%% attribute number 2 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<0:2,_:1,22:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes3,{0,128},22,[], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + + {Bytes5,Rb4} = ?RT_BER:restbytes2(RemBytes, Bytes4,noext), + {{'KmeGenericServiceRsp', Term1, Term2}, Bytes5, Rb1+Rb2+Rb3+Rb4}. + + +%%================================ +%% KmeGenericEvent +%%================================ +'enc_KmeGenericEvent'(Val, TagIn) -> + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {EncBytes1,EncLen1} = ?RT_BER:encode_integer([], ?RT_BER:cindex(2,Val,eventNo), []), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {EncBytes2,EncLen2} = case ?RT_BER:cindex(3,Val,device) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-device-identifiers':'enc_DeviceID'(?RT_BER:cindex(3,Val,device), []) + end, + +%%------------------------------------------------- +%% attribute number 3 External CSTA-call-connection-identifiers:ConnectionID OPTIONAL +%%------------------------------------------------- + {EncBytes3,EncLen3} = case ?RT_BER:cindex(4,Val,connection) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + 'CSTA-call-connection-identifiers':'enc_ConnectionID'(?RT_BER:cindex(4,Val,connection), []) + end, + +%%------------------------------------------------- +%% attribute number 4 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {EncBytes4,EncLen4} = case ?RT_BER:cindex(5,Val,state) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + case (case ?RT_BER:cindex(5,Val,state) of {_,Enumval2}->Enumval2;_->?RT_BER:cindex(5,Val,state) end) of +null -> ?RT_BER:encode_enumerated(0,[{tag,64,14,'IMPLICIT',32}]); +initiated -> ?RT_BER:encode_enumerated(1,[{tag,64,14,'IMPLICIT',32}]); +alerting -> ?RT_BER:encode_enumerated(2,[{tag,64,14,'IMPLICIT',32}]); +connected -> ?RT_BER:encode_enumerated(3,[{tag,64,14,'IMPLICIT',32}]); +hold -> ?RT_BER:encode_enumerated(4,[{tag,64,14,'IMPLICIT',32}]); +queued -> ?RT_BER:encode_enumerated(5,[{tag,64,14,'IMPLICIT',32}]); +fail -> ?RT_BER:encode_enumerated(6,[{tag,64,14,'IMPLICIT',32}]); +Enumval3 -> exit({error,{asn1, {enumerated_not_in_range,Enumval3}}}) +end + end, + +%%------------------------------------------------- +%% attribute number 5 with type INTEGER OPTIONAL +%%------------------------------------------------- + {EncBytes5,EncLen5} = case ?RT_BER:cindex(6,Val,cause) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_integer([], ?RT_BER:cindex(6,Val,cause), []) + end, + +%%------------------------------------------------- +%% attribute number 6 with type IA5String OPTIONAL +%%------------------------------------------------- + {EncBytes6,EncLen6} = case ?RT_BER:cindex(7,Val,message) of + asn1_NOVALUE -> {<<>>,0}; + _ -> + ?RT_BER:encode_restricted_string([], ?RT_BER:cindex(7,Val,message), 22, []) + end, + + BytesSoFar = [EncBytes1, EncBytes2, EncBytes3, EncBytes4, EncBytes5, EncBytes6], + LenSoFar = EncLen1 + EncLen2 + EncLen3 + EncLen4 + EncLen5 + EncLen6, + ?RT_BER:encode_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], BytesSoFar, LenSoFar). + + +'dec_KmeGenericEvent'(Bytes, OptOrMand) -> + 'dec_KmeGenericEvent'(Bytes, OptOrMand, []). + +'dec_KmeGenericEvent'(Bytes, OptOrMand, TagIn) -> + %%------------------------------------------------- + %% decode tag and length + %%------------------------------------------------- + {{_,Len},Bytes1,Rb1} = ?RT_BER:check_tags(TagIn ++ [{tag,0,16,'IMPLICIT',32}], Bytes, OptOrMand), +{Bytes2,RemBytes} = ?RT_BER:split_list(Bytes1,Len), + +%%------------------------------------------------- +%% attribute number 1 with type INTEGER +%%------------------------------------------------- + {Term1,Bytes3,Rb2} = ?RT_BER:decode_integer(Bytes2,[],[], mandatory), + +%%------------------------------------------------- +%% attribute number 2 External CSTA-device-identifiers:DeviceID OPTIONAL +%%------------------------------------------------- + {Term2,Bytes4,Rb3} = case Bytes3 of +<<0:2,_:1,16:5,_/binary>> -> +'CSTA-device-identifiers':'dec_DeviceID'(Bytes3, opt_or_default, []); +_ -> +{ asn1_NOVALUE, Bytes3, 0 } +end, + +%%------------------------------------------------- +%% attribute number 3 External CSTA-call-connection-identifiers:ConnectionID OPTIONAL +%%------------------------------------------------- + {Term3,Bytes5,Rb4} = case Bytes4 of +<<1:2,_:1,11:5,_/binary>> -> +'CSTA-call-connection-identifiers':'dec_ConnectionID'(Bytes4, opt_or_default, []); +_ -> +{ asn1_NOVALUE, Bytes4, 0 } +end, + +%%------------------------------------------------- +%% attribute number 4 with type ENUMERATED OPTIONAL +%%------------------------------------------------- + {Term4,Bytes6,Rb5} = case Bytes5 of +<<1:2,_:1,14:5,_/binary>> -> +?RT_BER:decode_enumerated(Bytes5,[],[{null,0},{initiated,1},{alerting,2},{connected,3},{hold,4},{queued,5},{fail,6}],[{tag,64,14,'IMPLICIT',32}], mandatory); +_ -> +{ asn1_NOVALUE, Bytes5, 0 } +end, + +%%------------------------------------------------- +%% attribute number 5 with type INTEGER OPTIONAL +%%------------------------------------------------- + {Term5,Bytes7,Rb6} = case Bytes6 of +<<0:2,_:1,2:5,_/binary>> -> +?RT_BER:decode_integer(Bytes6,[],[], mandatory); +_ -> +{ asn1_NOVALUE, Bytes6, 0 } +end, + +%%------------------------------------------------- +%% attribute number 6 with type IA5String OPTIONAL +%%------------------------------------------------- + {Term6,Bytes8,Rb7} = case Bytes7 of +<<0:2,_:1,22:5,_/binary>> -> +?RT_BER:decode_restricted_string(Bytes7,{1,128},22,[], no_length, mandatory); +_ -> +{ asn1_NOVALUE, Bytes7, 0 } +end, + + {Bytes9,Rb8} = ?RT_BER:restbytes2(RemBytes, Bytes8,noext), + {{'KmeGenericEvent', Term1, Term2, Term3, Term4, Term5, Term6}, Bytes9, Rb1+Rb2+Rb3+Rb4+Rb5+Rb6+Rb7+Rb8}. + + +%%================================ +%% KMESpecificPrivateData +%%================================ + +'enc_KMESpecificPrivateData'({'KMESpecificPrivateData',Val}, TagIn) -> + 'enc_KMESpecificPrivateData'(Val, TagIn); + +'enc_KMESpecificPrivateData'(Val, TagIn) -> + {EncBytes,EncLen} = case element(1,Val) of + kmeCallControl -> + 'enc_KmeCallControlSrvEvt'(element(2,Val), [{tag,128,1,'EXPLICIT',32}]); + kmeDeviceStatus -> + 'enc_KmeDeviceStatus'(element(2,Val), [{tag,128,2,'EXPLICIT',32}]); + kmeDeviceMonitor -> + 'enc_KmeDeviceMonitor'(element(2,Val), [{tag,128,3,'EXPLICIT',32}]); + kmeSystemData -> + 'enc_KmeSystemData'(element(2,Val), [{tag,128,4,'EXPLICIT',32}]); + kmeLocalAlerm -> + 'enc_KmeLocalAlerm'(element(2,Val), [{tag,128,5,'EXPLICIT',32}]); + kmeAdditionalData -> + 'enc_KmeAdditionalData'(element(2,Val), [{tag,128,6,'EXPLICIT',32}]); + kmePrivateEvent -> + 'enc_KmePrivateEvent'(element(2,Val), [{tag,128,7,'EXPLICIT',32}]); + kmeResourceControl -> + 'enc_KmeResourceControl'(element(2,Val), [{tag,128,8,'EXPLICIT',32}]); + kmeGeneric -> + 'enc_KmeGenericSrvEvt'(element(2,Val), [{tag,128,9,'EXPLICIT',32}]); + kmeExtendedDataAccess -> + ?RT_BER:encode_octet_string([], element(2,Val), [{tag,128,10,'EXPLICIT',32}]); + kmePDFControl -> + 'enc_KmePDFSrvEvt'(element(2,Val), [{tag,128,11,'EXPLICIT',32}]); + kmeAlterIf -> + 'enc_KmeAlterIfSrvEvt'(element(2,Val), [{tag,128,12,'EXPLICIT',32}]); + kmeHotelControl -> + 'enc_KmeHotelSrvEvt'(element(2,Val), [{tag,128,13,'EXPLICIT',32}]); + Else -> + exit({error,{asn1,{invalid_choice_type,Else}}}) + end, + +?RT_BER:encode_tags(TagIn ++[], EncBytes, EncLen). + + + + +'dec_KMESpecificPrivateData'(Bytes, OptOrMand) -> + 'dec_KMESpecificPrivateData'(Bytes, OptOrMand, []). + +'dec_KMESpecificPrivateData'(Bytes, OptOrMand, TagIn) -> + {{_,Len},Bytes1, RbExp} = ?RT_BER:check_tags(TagIn++[], Bytes, OptOrMand), + IndefEndBytes = fun(indefinite,<<0,0,R/binary>>)-> R; (_,B)-> B end, + IndefEndRb = fun(indefinite,<<0,0,_R/binary>>)-> 2; (_,_)-> 0 end, + case Bytes1 of + +%% 'kmeCallControl' + <<2:2,_:1,1:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeCallControlSrvEvt'(Bytes1, mandatory, [{tag,128,1,'EXPLICIT',32}]), + {{kmeCallControl, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeDeviceStatus' + <<2:2,_:1,2:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDeviceStatus'(Bytes1, mandatory, [{tag,128,2,'EXPLICIT',32}]), + {{kmeDeviceStatus, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeDeviceMonitor' + <<2:2,_:1,3:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeDeviceMonitor'(Bytes1, mandatory, [{tag,128,3,'EXPLICIT',32}]), + {{kmeDeviceMonitor, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeSystemData' + <<2:2,_:1,4:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeSystemData'(Bytes1, mandatory, [{tag,128,4,'EXPLICIT',32}]), + {{kmeSystemData, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeLocalAlerm' + <<2:2,_:1,5:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeLocalAlerm'(Bytes1, mandatory, [{tag,128,5,'EXPLICIT',32}]), + {{kmeLocalAlerm, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeAdditionalData' + <<2:2,_:1,6:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeAdditionalData'(Bytes1, mandatory, [{tag,128,6,'EXPLICIT',32}]), + {{kmeAdditionalData, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmePrivateEvent' + <<2:2,_:1,7:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmePrivateEvent'(Bytes1, mandatory, [{tag,128,7,'EXPLICIT',32}]), + {{kmePrivateEvent, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeResourceControl' + <<2:2,_:1,8:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeResourceControl'(Bytes1, mandatory, [{tag,128,8,'EXPLICIT',32}]), + {{kmeResourceControl, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeGeneric' + <<2:2,_:1,9:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeGenericSrvEvt'(Bytes1, mandatory, [{tag,128,9,'EXPLICIT',32}]), + {{kmeGeneric, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeExtendedDataAccess' + <<2:2,_:1,10:5,_/binary>> -> + {Dec, Rest, RbCho} = ?RT_BER:decode_octet_string(Bytes1,{0,200},[{tag,128,10,'EXPLICIT',32}], no_length, mandatory), + {{kmeExtendedDataAccess, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmePDFControl' + <<2:2,_:1,11:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmePDFSrvEvt'(Bytes1, mandatory, [{tag,128,11,'EXPLICIT',32}]), + {{kmePDFControl, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeAlterIf' + <<2:2,_:1,12:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeAlterIfSrvEvt'(Bytes1, mandatory, [{tag,128,12,'EXPLICIT',32}]), + {{kmeAlterIf, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + +%% 'kmeHotelControl' + <<2:2,_:1,13:5,_/binary>> -> + {Dec, Rest, RbCho} = 'dec_KmeHotelSrvEvt'(Bytes1, mandatory, [{tag,128,13,'EXPLICIT',32}]), + {{kmeHotelControl, Dec}, IndefEndBytes(Len,Rest), RbExp + RbCho + IndefEndRb(Len,Rest)}; + + Else -> + case OptOrMand of + mandatory ->exit({error,{asn1,{invalid_choice_tag,Else}}}); + _ ->exit({error,{asn1,{no_optional_tag,Else}}}) + end + end. -- cgit v1.2.3