From 27ed323fad9fca12f507a524e1788fb37e36501e Mon Sep 17 00:00:00 2001 From: Ivan Kohler Date: Wed, 9 Jan 2013 16:22:28 -0800 Subject: [PATCH] GSM TAP3.12 import format, RT#20767 --- FS/FS/Record.pm | 43 +- FS/FS/Schema.pm | 9 +- FS/FS/cdr.pm | 12 +- FS/FS/cdr/gsm_tap3_12.pm | 1563 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 1621 insertions(+), 6 deletions(-) create mode 100644 FS/FS/cdr/gsm_tap3_12.pm diff --git a/FS/FS/Record.pm b/FS/FS/Record.pm index ca68c3596..252b760bf 100644 --- a/FS/FS/Record.pm +++ b/FS/FS/Record.pm @@ -1451,6 +1451,7 @@ sub process_batch_import { format_sep_chars => $opt->{format_sep_chars}, format_fixedlength_formats => $opt->{format_fixedlength_formats}, format_xml_formats => $opt->{format_xml_formats}, + format_asn_formats => $opt->{format_asn_formats}, format_row_callbacks => $opt->{format_row_callbacks}, #per-import job => $job, @@ -1533,8 +1534,9 @@ sub batch_import { my $file = $param->{file}; my $params = $param->{params} || {}; - my( $type, $header, $sep_char, $fixedlength_format, - $xml_format, $row_callback, @fields ); + my( $type, $header, $sep_char, + $fixedlength_format, $xml_format, $asn_format, + $row_callback, @fields ); my $postinsert_callback = ''; $postinsert_callback = $param->{'postinsert_callback'} @@ -1572,6 +1574,11 @@ sub batch_import { ? $param->{'format_xml_formats'}{ $param->{'format'} } : ''; + $asn_format = + $param->{'format_asn_formats'} + ? $param->{'format_asn_formats'}{ $param->{'format'} } + : ''; + $row_callback = $param->{'format_row_callbacks'} ? $param->{'format_row_callbacks'}{ $param->{'format'} } @@ -1652,7 +1659,9 @@ sub batch_import { $count++; $row = $header || 0; + } elsif ( $type eq 'xml' ) { + # FS::pay_batch eval "use XML::Simple;"; die $@ if $@; @@ -1668,6 +1677,24 @@ sub batch_import { $rows = $rows->{$_} foreach @$xmlrow; $rows = [ $rows ] if ref($rows) ne 'ARRAY'; $count = @buffer = @$rows; + + } elsif ( $type eq 'asn.1' ) { + + eval "use Convert::ASN1"; + die $@ if $@; + + my $asn = Convert::ASN1->new; + $asn->prepare( $asn_format->{'spec'} ) or die $asn->error; + + $parser = $asn->find( $asn_format->{'macro'} ) or die $asn->error; + + my $data = slurp($file); + my $asn_output = $parser->decode( $data ) + or die "No ". $asn_format->{'macro'}. " found\n"; + + my $rows = &{ $asn_format->{'arrayref'} }( $asn_output ); + $count = @buffer = @$rows; + } else { die "Unknown file type $type\n"; } @@ -1711,6 +1738,7 @@ sub batch_import { while (1) { my @columns = (); + my %hash = %$params; if ( $type eq 'csv' ) { last unless scalar(@buffer); @@ -1747,16 +1775,25 @@ sub batch_import { #warn $z++. ": $_\n" for @columns; } elsif ( $type eq 'xml' ) { + # $parser = [ 'Column0Key', 'Column1Key' ... ] last unless scalar(@buffer); my $row = shift @buffer; @columns = @{ $row }{ @$parser }; + + } elsif ( $type eq 'asn.1' ) { + + last unless scalar(@buffer); + my $row = shift @buffer; + foreach my $key ( keys %{ $asn_format->{map} } ) { + $hash{$key} = &{ $asn_format->{map}{$key} }( $row ); + } + } else { die "Unknown file type $type\n"; } my @later = (); - my %hash = %$params; foreach my $field ( @fields ) { diff --git a/FS/FS/Schema.pm b/FS/FS/Schema.pm index cbcd27b46..69e21da68 100644 --- a/FS/FS/Schema.pm +++ b/FS/FS/Schema.pm @@ -3333,6 +3333,12 @@ sub tables_hashref { 'quantity', 'int', 'NULL', '', '', '', 'upstream_rateid', 'int', 'NULL', '', '', '', + + ### + # more fields, for GSM imports + ### + 'servicecode', 'int', 'NULL', '', '', '', + 'quantity_able', 'int', 'NULL', '', '', '', ### #and now for our own fields @@ -3341,8 +3347,9 @@ sub tables_hashref { 'cdrtypenum', 'int', 'NULL', '', '', '', 'charged_party', 'varchar', 'NULL', $char_d, '', '', + 'charged_party_imsi', 'varchar', 'NULL', $char_d, '', '', - 'upstream_price', 'decimal', 'NULL', '10,4', '', '', + 'upstream_price', 'decimal', 'NULL', '10,5', '', '', 'upstream_src_regionname', 'varchar', 'NULL', $char_d, '', '', 'upstream_dst_regionname', 'varchar', 'NULL', $char_d, '', '', diff --git a/FS/FS/cdr.pm b/FS/FS/cdr.pm index fdec921ee..fedf28aa6 100644 --- a/FS/FS/cdr.pm +++ b/FS/FS/cdr.pm @@ -11,6 +11,7 @@ use Date::Parse; use Date::Format; use Time::Local; use List::Util qw( first min ); +use Text::CSV_XS; use FS::UID qw( dbh ); use FS::Conf; use FS::Record qw( qsearch qsearchs ); @@ -325,6 +326,10 @@ sub check { $self->billsec( $self->enddate - $self->answerdate ); } + if ( ! $self->enddate && $self->startdate && $self->duration ) { + $self->enddate( $self->startdate + $self->duration ); + } + $self->set_charged_party; #check the foreign keys even? @@ -1286,8 +1291,6 @@ sub downstream_csv { #$opt{'money_char'} ||= $conf->config('money_char') || '$'; $opt{'money_char'} ||= FS::Conf->new->config('money_char') || '$'; - eval "use Text::CSV_XS;"; - die $@ if $@; my $csv = new Text::CSV_XS; my @columns = @@ -1578,6 +1581,11 @@ my %import_options = ( keys %cdr_info }, + 'format_asn_formats' => + { map { $_ => $cdr_info{$_}->{'asn_format'}; } + keys %cdr_info + }, + 'format_row_callbacks' => { map { $_ => $cdr_info{$_}->{'row_callback'}; } keys %cdr_info }, diff --git a/FS/FS/cdr/gsm_tap3_12.pm b/FS/FS/cdr/gsm_tap3_12.pm new file mode 100644 index 000000000..d1536c050 --- /dev/null +++ b/FS/FS/cdr/gsm_tap3_12.pm @@ -0,0 +1,1563 @@ +package FS::cdr::gsm_tap3_12; +use base qw( FS::cdr ); + +use strict; +use vars qw( %info ); +use Time::Local; +#use Data::Dumper; + +%info = ( + 'name' => 'GSM TAP3 release 12', + 'weight' => 50, + 'type' => 'asn.1', + 'import_fields' => [], + 'asn_format' => { + 'spec' => _asn_spec(), + 'macro' => 'TransferBatch', #XXX & skip the Notification ones? + 'arrayref' => sub { shift->{'callEventDetails'}; }, + 'map' => { + 'startdate' => sub { my $callinfo = shift->{mobileOriginatedCall}{basicCallInformation}; + my $timestamp = $callinfo->{callEventStartTimeStamp}; + my $localTimeStamp = $timestamp->{localTimeStamp}; + my $utcTimeOffsetCode = $timestamp->{utcTimeOffsetCode}; #XXX not handled, utcTimeOffsetInfo in header + $localTimeStamp =~ /^(\d{4})(\d{2})(\d{2})(\d{2})(\d{2})(\d{2})$/ or die "unparsable timestamp: $localTimeStamp\n"; #. Dumper($callinfo); + my($year, $mon, $day, $hour, $min, $sec) = ($1, $2, $3, $4, $5, $6); + timelocal($sec, $min, $hour, $day, $mon-1, $year); + }, + 'duration' => sub { shift->{mobileOriginatedCall}{basicCallInformation}{totalCallEventDuration} }, + 'billsec' => sub { shift->{mobileOriginatedCall}{basicCallInformation}{totalCallEventDuration} }, #same.. + 'src' => sub { shift->{mobileOriginatedCall}{basicCallInformation}{chargeableSubscriber}{simChargeableSubscriber}{msisdn} }, + 'charged_party_imsi' => sub { shift->{mobileOriginatedCall}{basicCallInformation}{chargeableSubscriber}{simChargeableSubscriber}{imsi} }, + 'dst' => sub { shift->{mobileOriginatedCall}{basicCallInformation}{destination}{calledNumber} }, #dialledDigits? + 'carrierid' => sub { shift->{mobileOriginatedCall}{locationInformation}{networkLocation}{recEntityCode} }, + 'userfield' => sub { shift->{mobileOriginatedCall}{operatorSpecInformation}[0] }, + 'servicecode' => sub { shift->{mobileOriginatedCall}{basicServiceUsedList}[0]{basicService}{serviceCode}{teleServiceCode} }, + 'upstream_price' => sub { sprintf('%.5f', shift->{mobileOriginatedCall}{basicServiceUsedList}[0]{chargeInformationList}[0]{chargeDetailList}[0]{charge} / 100000 ) }, #XXX numberOfDecimalPlaces in header + 'calltypenum' => sub { shift->{mobileOriginatedCall}{basicServiceUsedList}[0]{chargeInformationList}[0]{callTypeGroup}{callTypelevel1} }, + 'quantity' => sub { shift->{mobileOriginatedCall}{basicServiceUsedList}[0]{chargeInformationList}[0]{chargedUnits} }, + 'quantity_able' => sub { shift->{mobileOriginatedCall}{basicServiceUsedList}[0]{chargeInformationList}[0]{chargeableUnits} }, + }, + }, +); + +sub _asn_spec { + <<'END'; +-- +-- +-- The following ASN.1 specification defines the abstract syntax for +-- +-- Data Record Format Version 03 +-- Release 12 +-- +-- The specification is structured as follows: +-- (1) structure of the Tap batch +-- (2) definition of the individual Tap ‘records’ +-- (3) Tap data items and groups of data items used within (2) +-- (4) Common, non-Tap data types +-- (5) Tap data items for content charging +-- +-- It is mainly a translation from the logical structure +-- diagrams. Where appropriate, names used within the +-- logical structure diagrams have been shortened. +-- For repeating data items the name as used within the logical +-- structure have been extended by adding ‘list’ or ‘table’ +-- (in some instances). +-- + + +-- TAP-0312 DEFINITIONS IMPLICIT TAGS ::= + +-- BEGIN + +-- +-- Structure of a Tap batch +-- + +DataInterChange ::= CHOICE +{ + transferBatch TransferBatch, + notification Notification, +... +} + +-- Batch Control Information must always, both logically and physically, +-- be the first group/item within Transfer Batch – this ensures that the +-- TAP release version can be readily identified. Any new groups/items +-- required may be inserted at any point after Batch Control Information + +TransferBatch ::= [APPLICATION 1] SEQUENCE +{ + batchControlInfo BatchControlInfo OPTIONAL, -- *m.m. + accountingInfo AccountingInfo OPTIONAL, + networkInfo NetworkInfo OPTIONAL, -- *m.m. + messageDescriptionInfo MessageDescriptionInfoList OPTIONAL, + callEventDetails CallEventDetailList OPTIONAL, -- *m.m. + auditControlInfo AuditControlInfo OPTIONAL, -- *m.m. +... +} + +Notification ::= [APPLICATION 2] SEQUENCE +{ + sender Sender OPTIONAL, -- *m.m. + recipient Recipient OPTIONAL, -- *m.m. + fileSequenceNumber FileSequenceNumber OPTIONAL, -- *m.m. + rapFileSequenceNumber RapFileSequenceNumber OPTIONAL, + fileCreationTimeStamp FileCreationTimeStamp OPTIONAL, + fileAvailableTimeStamp FileAvailableTimeStamp OPTIONAL, -- *m.m. + transferCutOffTimeStamp TransferCutOffTimeStamp OPTIONAL, -- *m.m. + specificationVersionNumber SpecificationVersionNumber OPTIONAL, -- *m.m. + releaseVersionNumber ReleaseVersionNumber OPTIONAL, -- *m.m. + fileTypeIndicator FileTypeIndicator OPTIONAL, + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + +CallEventDetailList ::= [APPLICATION 3] SEQUENCE OF CallEventDetail + +CallEventDetail ::= CHOICE +{ + mobileOriginatedCall MobileOriginatedCall, + mobileTerminatedCall MobileTerminatedCall, + supplServiceEvent SupplServiceEvent, + serviceCentreUsage ServiceCentreUsage, + gprsCall GprsCall, + contentTransaction ContentTransaction, + locationService LocationService, + messagingEvent MessagingEvent, + mobileSession MobileSession, +... +} + +-- +-- Structure of the individual Tap records +-- + +BatchControlInfo ::= [APPLICATION 4] SEQUENCE +{ + sender Sender OPTIONAL, -- *m.m. + recipient Recipient OPTIONAL, -- *m.m. + fileSequenceNumber FileSequenceNumber OPTIONAL, -- *m.m. + fileCreationTimeStamp FileCreationTimeStamp OPTIONAL, + transferCutOffTimeStamp TransferCutOffTimeStamp OPTIONAL, -- *m.m. + fileAvailableTimeStamp FileAvailableTimeStamp OPTIONAL, -- *m.m. + specificationVersionNumber SpecificationVersionNumber OPTIONAL, -- *m.m. + releaseVersionNumber ReleaseVersionNumber OPTIONAL, -- *m.m. + fileTypeIndicator FileTypeIndicator OPTIONAL, + rapFileSequenceNumber RapFileSequenceNumber OPTIONAL, + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + +AccountingInfo ::= [APPLICATION 5] SEQUENCE +{ + taxation TaxationList OPTIONAL, + discounting DiscountingList OPTIONAL, + localCurrency LocalCurrency OPTIONAL, -- *m.m. + tapCurrency TapCurrency OPTIONAL, + currencyConversionInfo CurrencyConversionList OPTIONAL, + tapDecimalPlaces TapDecimalPlaces OPTIONAL, -- *m.m. +... +} + +NetworkInfo ::= [APPLICATION 6] SEQUENCE +{ + utcTimeOffsetInfo UtcTimeOffsetInfoList OPTIONAL, -- *m.m. + recEntityInfo RecEntityInfoList OPTIONAL, +... +} + +MessageDescriptionInfoList ::= [APPLICATION 8] SEQUENCE OF MessageDescriptionInformation + +MobileOriginatedCall ::= [APPLICATION 9] SEQUENCE +{ + basicCallInformation MoBasicCallInformation OPTIONAL, -- *m.m. + locationInformation LocationInformation OPTIONAL, -- *m.m. + equipmentIdentifier ImeiOrEsn OPTIONAL, + basicServiceUsedList BasicServiceUsedList OPTIONAL, -- *m.m. + supplServiceCode SupplServiceCode OPTIONAL, + thirdPartyInformation ThirdPartyInformation OPTIONAL, + camelServiceUsed CamelServiceUsed OPTIONAL, + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + +MobileTerminatedCall ::= [APPLICATION 10] SEQUENCE +{ + basicCallInformation MtBasicCallInformation OPTIONAL, -- *m.m. + locationInformation LocationInformation OPTIONAL, -- *m.m. + equipmentIdentifier ImeiOrEsn OPTIONAL, + basicServiceUsedList BasicServiceUsedList OPTIONAL, -- *m.m. + camelServiceUsed CamelServiceUsed OPTIONAL, + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + + +SupplServiceEvent ::= [APPLICATION 11] SEQUENCE +{ + chargeableSubscriber ChargeableSubscriber OPTIONAL, -- *m.m. + rapFileSequenceNumber RapFileSequenceNumber OPTIONAL, + locationInformation LocationInformation OPTIONAL, -- *m.m. + equipmentIdentifier ImeiOrEsn OPTIONAL, + supplServiceUsed SupplServiceUsed OPTIONAL, -- *m.m. + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + + +ServiceCentreUsage ::= [APPLICATION 12] SEQUENCE +{ + basicInformation ScuBasicInformation OPTIONAL, -- *m.m. + rapFileSequenceNumber RapFileSequenceNumber OPTIONAL, + servingNetwork ServingNetwork OPTIONAL, + recEntityCode RecEntityCode OPTIONAL, -- *m.m. + chargeInformation ChargeInformation OPTIONAL, -- *m.m. + scuChargeType ScuChargeType OPTIONAL, -- *m.m. + scuTimeStamps ScuTimeStamps OPTIONAL, -- *m.m. + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + +GprsCall ::= [APPLICATION 14] SEQUENCE +{ + gprsBasicCallInformation GprsBasicCallInformation OPTIONAL, -- *m.m. + gprsLocationInformation GprsLocationInformation OPTIONAL, -- *m.m. + equipmentIdentifier ImeiOrEsn OPTIONAL, + gprsServiceUsed GprsServiceUsed OPTIONAL, -- *m.m. + camelServiceUsed CamelServiceUsed OPTIONAL, + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + +ContentTransaction ::= [APPLICATION 17] SEQUENCE +{ + contentTransactionBasicInfo ContentTransactionBasicInfo OPTIONAL, -- *m.m. + chargedPartyInformation ChargedPartyInformation OPTIONAL, -- *m.m. + servingPartiesInformation ServingPartiesInformation OPTIONAL, -- *m.m. + contentServiceUsed ContentServiceUsedList OPTIONAL, -- *m.m. + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + +LocationService ::= [APPLICATION 297] SEQUENCE +{ + rapFileSequenceNumber RapFileSequenceNumber OPTIONAL, + recEntityCode RecEntityCode OPTIONAL, -- *m.m. + callReference CallReference OPTIONAL, + trackingCustomerInformation TrackingCustomerInformation OPTIONAL, + lCSSPInformation LCSSPInformation OPTIONAL, + trackedCustomerInformation TrackedCustomerInformation OPTIONAL, + locationServiceUsage LocationServiceUsage OPTIONAL, -- *m.m. + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + +MessagingEvent ::= [APPLICATION 433] SEQUENCE +{ + messagingEventService MessagingEventService OPTIONAL, -- *m.m. + chargedParty ChargedParty OPTIONAL, -- *m.m. + rapFileSequenceNumber RapFileSequenceNumber OPTIONAL, + simToolkitIndicator SimToolkitIndicator OPTIONAL, + geographicalLocation GeographicalLocation OPTIONAL, + eventReference EventReference OPTIONAL, -- *m.m. + + recEntityCodeList RecEntityCodeList OPTIONAL, -- *m.m. + networkElementList NetworkElementList OPTIONAL, + locationArea LocationArea OPTIONAL, + cellId CellId OPTIONAL, + serviceStartTimestamp ServiceStartTimestamp OPTIONAL, -- *m.m. + nonChargedParty NonChargedParty OPTIONAL, + exchangeRateCode ExchangeRateCode OPTIONAL, + callTypeGroup CallTypeGroup OPTIONAL, -- *m.m. + charge Charge OPTIONAL, -- *m.m. + taxInformationList TaxInformationList OPTIONAL, + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + +MobileSession ::= [APPLICATION 434] SEQUENCE +{ + mobileSessionService MobileSessionService OPTIONAL, -- *m.m. + chargedParty ChargedParty OPTIONAL, -- *m.m. + rapFileSequenceNumber RapFileSequenceNumber OPTIONAL, + simToolkitIndicator SimToolkitIndicator OPTIONAL, + geographicalLocation GeographicalLocation OPTIONAL, + locationArea LocationArea OPTIONAL, + cellId CellId OPTIONAL, + eventReference EventReference OPTIONAL, -- *m.m. + + recEntityCodeList RecEntityCodeList OPTIONAL, -- *m.m. + serviceStartTimestamp ServiceStartTimestamp OPTIONAL, -- *m.m. + causeForTerm CauseForTerm OPTIONAL, + totalCallEventDuration TotalCallEventDuration OPTIONAL, -- *m.m. + nonChargedParty NonChargedParty OPTIONAL, + sessionChargeInfoList SessionChargeInfoList OPTIONAL, -- *m.m. + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + +AuditControlInfo ::= [APPLICATION 15] SEQUENCE +{ + earliestCallTimeStamp EarliestCallTimeStamp OPTIONAL, + latestCallTimeStamp LatestCallTimeStamp OPTIONAL, + totalCharge TotalCharge OPTIONAL, -- *m.m. + totalChargeRefund TotalChargeRefund OPTIONAL, + totalTaxRefund TotalTaxRefund OPTIONAL, + totalTaxValue TotalTaxValue OPTIONAL, -- *m.m. + totalDiscountValue TotalDiscountValue OPTIONAL, -- *m.m. + totalDiscountRefund TotalDiscountRefund OPTIONAL, + totalAdvisedChargeValueList TotalAdvisedChargeValueList OPTIONAL, + callEventDetailsCount CallEventDetailsCount OPTIONAL, -- *m.m. + operatorSpecInformation OperatorSpecInfoList OPTIONAL, +... +} + + +-- +-- Tap data items and groups of data items +-- + +AccessPointNameNI ::= [APPLICATION 261] AsciiString --(SIZE(1..63)) + +AccessPointNameOI ::= [APPLICATION 262] AsciiString --(SIZE(1..37)) + +ActualDeliveryTimeStamp ::= [APPLICATION 302] DateTime + +AddressStringDigits ::= BCDString + +AdvisedCharge ::= [APPLICATION 349] Charge + +AdvisedChargeCurrency ::= [APPLICATION 348] Currency + +AdvisedChargeInformation ::= [APPLICATION 351] SEQUENCE +{ + paidIndicator PaidIndicator OPTIONAL, + paymentMethod PaymentMethod OPTIONAL, + advisedChargeCurrency AdvisedChargeCurrency OPTIONAL, + advisedCharge AdvisedCharge OPTIONAL, -- *m.m. + commission Commission OPTIONAL, +... +} + +AgeOfLocation ::= [APPLICATION 396] INTEGER + +BasicService ::= [APPLICATION 36] SEQUENCE +{ + serviceCode BasicServiceCode OPTIONAL, -- *m.m. + transparencyIndicator TransparencyIndicator OPTIONAL, + fnur Fnur OPTIONAL, + userProtocolIndicator UserProtocolIndicator OPTIONAL, + guaranteedBitRate GuaranteedBitRate OPTIONAL, + maximumBitRate MaximumBitRate OPTIONAL, +... +} + +BasicServiceCode ::= [APPLICATION 426] CHOICE +{ + teleServiceCode TeleServiceCode, + bearerServiceCode BearerServiceCode, +... +} + +BasicServiceCodeList ::= [APPLICATION 37] SEQUENCE OF BasicServiceCode + +BasicServiceUsed ::= [APPLICATION 39] SEQUENCE +{ + basicService BasicService OPTIONAL, -- *m.m. + chargingTimeStamp ChargingTimeStamp OPTIONAL, + chargeInformationList ChargeInformationList OPTIONAL, -- *m.m. + hSCSDIndicator HSCSDIndicator OPTIONAL, +... +} + +BasicServiceUsedList ::= [APPLICATION 38] SEQUENCE OF BasicServiceUsed + +BearerServiceCode ::= [APPLICATION 40] HexString --(SIZE(2)) + +EventReference ::= [APPLICATION 435] AsciiString + + +CalledNumber ::= [APPLICATION 407] AddressStringDigits + +CalledPlace ::= [APPLICATION 42] AsciiString + +CalledRegion ::= [APPLICATION 46] AsciiString + +CallEventDetailsCount ::= [APPLICATION 43] INTEGER + +CallEventStartTimeStamp ::= [APPLICATION 44] DateTime + +CallingNumber ::= [APPLICATION 405] AddressStringDigits + +CallOriginator ::= [APPLICATION 41] SEQUENCE +{ + callingNumber CallingNumber OPTIONAL, + clirIndicator ClirIndicator OPTIONAL, + sMSOriginator SMSOriginator OPTIONAL, +... +} + +CallReference ::= [APPLICATION 45] OCTET STRING --(SIZE(1..8)) + +CallTypeGroup ::= [APPLICATION 258] SEQUENCE +{ + callTypeLevel1 CallTypeLevel1 OPTIONAL, -- *m.m. + callTypeLevel2 CallTypeLevel2 OPTIONAL, -- *m.m. + callTypeLevel3 CallTypeLevel3 OPTIONAL, -- *m.m. +... +} + +CallTypeLevel1 ::= [APPLICATION 259] INTEGER + +CallTypeLevel2 ::= [APPLICATION 255] INTEGER + +CallTypeLevel3 ::= [APPLICATION 256] INTEGER + +CamelDestinationNumber ::= [APPLICATION 404] AddressStringDigits + +CamelInvocationFee ::= [APPLICATION 422] AbsoluteAmount + +CamelServiceKey ::= [APPLICATION 55] INTEGER + +CamelServiceLevel ::= [APPLICATION 56] INTEGER + +CamelServiceUsed ::= [APPLICATION 57] SEQUENCE +{ + camelServiceLevel CamelServiceLevel OPTIONAL, + camelServiceKey CamelServiceKey OPTIONAL, -- *m.m. + defaultCallHandling DefaultCallHandlingIndicator OPTIONAL, + exchangeRateCode ExchangeRateCode OPTIONAL, + taxInformation TaxInformationList OPTIONAL, + discountInformation DiscountInformation OPTIONAL, + camelInvocationFee CamelInvocationFee OPTIONAL, + threeGcamelDestination ThreeGcamelDestination OPTIONAL, + cseInformation CseInformation OPTIONAL, +... +} + +CauseForTerm ::= [APPLICATION 58] INTEGER + +CellId ::= [APPLICATION 59] INTEGER + +Charge ::= [APPLICATION 62] AbsoluteAmount + +ChargeableSubscriber ::= [APPLICATION 427] CHOICE +{ + simChargeableSubscriber SimChargeableSubscriber, + minChargeableSubscriber MinChargeableSubscriber, +... +} + +ChargeableUnits ::= [APPLICATION 65] INTEGER + +ChargeDetail ::= [APPLICATION 63] SEQUENCE +{ + chargeType ChargeType OPTIONAL, -- *m.m. + charge Charge OPTIONAL, -- *m.m. + chargeableUnits ChargeableUnits OPTIONAL, + chargedUnits ChargedUnits OPTIONAL, + chargeDetailTimeStamp ChargeDetailTimeStamp OPTIONAL, +... +} + +ChargeDetailList ::= [APPLICATION 64] SEQUENCE OF ChargeDetail + +ChargeDetailTimeStamp ::= [APPLICATION 410] ChargingTimeStamp + +ChargedItem ::= [APPLICATION 66] AsciiString --(SIZE(1)) + +ChargedParty ::= [APPLICATION 436] SEQUENCE +{ + imsi Imsi OPTIONAL, -- *m.m. + msisdn Msisdn OPTIONAL, + publicUserId PublicUserId OPTIONAL, + homeBid HomeBid OPTIONAL, + homeLocationDescription HomeLocationDescription OPTIONAL, + imei Imei OPTIONAL, +... +} + +ChargedPartyEquipment ::= [APPLICATION 323] SEQUENCE +{ + equipmentIdType EquipmentIdType OPTIONAL, -- *m.m. + equipmentId EquipmentId OPTIONAL, -- *m.m. +... +} + +ChargedPartyHomeIdentification ::= [APPLICATION 313] SEQUENCE +{ + homeIdType HomeIdType OPTIONAL, -- *m.m. + homeIdentifier HomeIdentifier OPTIONAL, -- *m.m. +... +} + +ChargedPartyHomeIdList ::= [APPLICATION 314] SEQUENCE OF + ChargedPartyHomeIdentification + +ChargedPartyIdentification ::= [APPLICATION 309] SEQUENCE +{ + chargedPartyIdType ChargedPartyIdType OPTIONAL, -- *m.m. + chargedPartyIdentifier ChargedPartyIdentifier OPTIONAL, -- *m.m. +... +} + +ChargedPartyIdentifier ::= [APPLICATION 287] AsciiString + +ChargedPartyIdList ::= [APPLICATION 310] SEQUENCE OF ChargedPartyIdentification + +ChargedPartyIdType ::= [APPLICATION 305] INTEGER + +ChargedPartyInformation ::= [APPLICATION 324] SEQUENCE +{ + chargedPartyIdList ChargedPartyIdList OPTIONAL, -- *m.m. + chargedPartyHomeIdList ChargedPartyHomeIdList OPTIONAL, + chargedPartyLocationList ChargedPartyLocationList OPTIONAL, + chargedPartyEquipment ChargedPartyEquipment OPTIONAL, +... +} + +ChargedPartyLocation ::= [APPLICATION 320] SEQUENCE +{ + locationIdType LocationIdType OPTIONAL, -- *m.m. + locationIdentifier LocationIdentifier OPTIONAL, -- *m.m. +... +} + +ChargedPartyLocationList ::= [APPLICATION 321] SEQUENCE OF ChargedPartyLocation + +ChargedPartyStatus ::= [APPLICATION 67] INTEGER + +ChargedUnits ::= [APPLICATION 68] INTEGER + +ChargeInformation ::= [APPLICATION 69] SEQUENCE +{ + chargedItem ChargedItem OPTIONAL, -- *m.m. + exchangeRateCode ExchangeRateCode OPTIONAL, + callTypeGroup CallTypeGroup OPTIONAL, + chargeDetailList ChargeDetailList OPTIONAL, -- *m.m. + taxInformation TaxInformationList OPTIONAL, + discountInformation DiscountInformation OPTIONAL, +... +} + +ChargeInformationList ::= [APPLICATION 70] SEQUENCE OF ChargeInformation + +ChargeRefundIndicator ::= [APPLICATION 344] INTEGER + +ChargeType ::= [APPLICATION 71] NumberString --(SIZE(2..3)) + +ChargingId ::= [APPLICATION 72] INTEGER + +ChargingPoint ::= [APPLICATION 73] AsciiString --(SIZE(1)) + +ChargingTimeStamp ::= [APPLICATION 74] DateTime + +ClirIndicator ::= [APPLICATION 75] INTEGER + +Commission ::= [APPLICATION 350] Charge + +CompletionTimeStamp ::= [APPLICATION 76] DateTime + +ContentChargingPoint ::= [APPLICATION 345] INTEGER + +ContentProvider ::= [APPLICATION 327] SEQUENCE +{ + contentProviderIdType ContentProviderIdType OPTIONAL, -- *m.m. + contentProviderIdentifier ContentProviderIdentifier OPTIONAL, -- *m.m. +... +} + +ContentProviderIdentifier ::= [APPLICATION 292] AsciiString + +ContentProviderIdList ::= [APPLICATION 328] SEQUENCE OF ContentProvider + +ContentProviderIdType ::= [APPLICATION 291] INTEGER + +ContentProviderName ::= [APPLICATION 334] AsciiString + +ContentServiceUsed ::= [APPLICATION 352] SEQUENCE +{ + contentTransactionCode ContentTransactionCode OPTIONAL, -- *m.m. + contentTransactionType ContentTransactionType OPTIONAL, -- *m.m. + objectType ObjectType OPTIONAL, + transactionDescriptionSupp TransactionDescriptionSupp OPTIONAL, + transactionShortDescription TransactionShortDescription OPTIONAL, -- *m.m. + transactionDetailDescription TransactionDetailDescription OPTIONAL, + transactionIdentifier TransactionIdentifier OPTIONAL, -- *m.m. + transactionAuthCode TransactionAuthCode OPTIONAL, + dataVolumeIncoming DataVolumeIncoming OPTIONAL, + dataVolumeOutgoing DataVolumeOutgoing OPTIONAL, + totalDataVolume TotalDataVolume OPTIONAL, + chargeRefundIndicator ChargeRefundIndicator OPTIONAL, + contentChargingPoint ContentChargingPoint OPTIONAL, + chargeInformationList ChargeInformationList OPTIONAL, + advisedChargeInformation AdvisedChargeInformation OPTIONAL, +... +} + +ContentServiceUsedList ::= [APPLICATION 285] SEQUENCE OF ContentServiceUsed + +ContentTransactionBasicInfo ::= [APPLICATION 304] SEQUENCE +{ + rapFileSequenceNumber RapFileSequenceNumber OPTIONAL, + orderPlacedTimeStamp OrderPlacedTimeStamp OPTIONAL, + requestedDeliveryTimeStamp RequestedDeliveryTimeStamp OPTIONAL, + actualDeliveryTimeStamp ActualDeliveryTimeStamp OPTIONAL, + totalTransactionDuration TotalTransactionDuration OPTIONAL, + transactionStatus TransactionStatus OPTIONAL, +... +} + +ContentTransactionCode ::= [APPLICATION 336] INTEGER + +ContentTransactionType ::= [APPLICATION 337] INTEGER + +CseInformation ::= [APPLICATION 79] OCTET STRING --(SIZE(1..40)) + +CurrencyConversion ::= [APPLICATION 106] SEQUENCE +{ + exchangeRateCode ExchangeRateCode OPTIONAL, -- *m.m. + numberOfDecimalPlaces NumberOfDecimalPlaces OPTIONAL, -- *m.m. + exchangeRate ExchangeRate OPTIONAL, -- *m.m. +... +} + +CurrencyConversionList ::= [APPLICATION 80] SEQUENCE OF CurrencyConversion + +CustomerIdentifier ::= [APPLICATION 364] AsciiString + +CustomerIdType ::= [APPLICATION 363] INTEGER + +DataVolume ::= INTEGER + +DataVolumeIncoming ::= [APPLICATION 250] DataVolume + +DataVolumeOutgoing ::= [APPLICATION 251] DataVolume + +-- +-- The following datatypes are used to denote timestamps. +-- Each timestamp consists of a local timestamp and a +-- corresponding UTC time offset. +-- Except for the timestamps used within the Batch Control +-- Information and the Audit Control Information +-- the UTC time offset is identified by a code referencing +-- the UtcTimeOffsetInfo. +-- + +-- +-- We start with the “short” datatype referencing the +-- UtcTimeOffsetInfo. +-- + +DateTime ::= SEQUENCE +{ + -- + -- Local timestamps are noted in the format + -- + -- CCYYMMDDhhmmss + -- + -- where CC = century (‘19’, ‘20’,...) + -- YY = year (‘00’ – ‘99’) + -- MM = month (‘01’, ‘02’, ... , ‘12’) + -- DD = day (‘01’, ‘02’, ... , ‘31’) + -- hh = hour (‘00’, ‘01’, ... , ‘23’) + -- mm = minutes (‘00’, ‘01’, ... , ‘59’) + -- ss = seconds (‘00’, ‘01’, ... , ‘59’) + -- + localTimeStamp LocalTimeStamp OPTIONAL, -- *m.m. + utcTimeOffsetCode UtcTimeOffsetCode OPTIONAL, -- *m.m. +... +} + +-- +-- The following version is the “long” datatype +-- containing the UTC time offset directly. +-- + +DateTimeLong ::= SEQUENCE +{ + localTimeStamp LocalTimeStamp OPTIONAL, -- *m.m. + utcTimeOffset UtcTimeOffset OPTIONAL, -- *m.m. +... +} + +DefaultCallHandlingIndicator ::= [APPLICATION 87] INTEGER + +DepositTimeStamp ::= [APPLICATION 88] DateTime + +Destination ::= [APPLICATION 89] SEQUENCE +{ + calledNumber CalledNumber OPTIONAL, + dialledDigits DialledDigits OPTIONAL, + calledPlace CalledPlace OPTIONAL, + calledRegion CalledRegion OPTIONAL, + sMSDestinationNumber SMSDestinationNumber OPTIONAL, +... +} + +DestinationNetwork ::= [APPLICATION 90] NetworkId + +DialledDigits ::= [APPLICATION 279] AsciiString + +Discount ::= [APPLICATION 412] DiscountValue + +DiscountableAmount ::= [APPLICATION 423] AbsoluteAmount + +DiscountApplied ::= [APPLICATION 428] CHOICE +{ + fixedDiscountValue FixedDiscountValue, + discountRate DiscountRate, +... +} + +DiscountCode ::= [APPLICATION 91] INTEGER + +DiscountInformation ::= [APPLICATION 96] SEQUENCE +{ + discountCode DiscountCode OPTIONAL, -- *m.m. + discount Discount OPTIONAL, + discountableAmount DiscountableAmount OPTIONAL, +... +} + +Discounting ::= [APPLICATION 94] SEQUENCE +{ + discountCode DiscountCode OPTIONAL, -- *m.m. + discountApplied DiscountApplied OPTIONAL, -- *m.m. +... +} + +DiscountingList ::= [APPLICATION 95] SEQUENCE OF Discounting + +DiscountRate ::= [APPLICATION 92] PercentageRate + +DiscountValue ::= AbsoluteAmount + +DistanceChargeBandCode ::= [APPLICATION 98] AsciiString --(SIZE(1)) + +EarliestCallTimeStamp ::= [APPLICATION 101] DateTimeLong + +ElementId ::= [APPLICATION 437] AsciiString + +ElementType ::= [APPLICATION 438] INTEGER + +EquipmentId ::= [APPLICATION 290] AsciiString + +EquipmentIdType ::= [APPLICATION 322] INTEGER + +Esn ::= [APPLICATION 103] NumberString + +ExchangeRate ::= [APPLICATION 104] INTEGER + +ExchangeRateCode ::= [APPLICATION 105] Code + +FileAvailableTimeStamp ::= [APPLICATION 107] DateTimeLong + +FileCreationTimeStamp ::= [APPLICATION 108] DateTimeLong + +FileSequenceNumber ::= [APPLICATION 109] NumberString --(SIZE(5)) + +FileTypeIndicator ::= [APPLICATION 110] AsciiString --(SIZE(1)) + +FixedDiscountValue ::= [APPLICATION 411] DiscountValue + +Fnur ::= [APPLICATION 111] INTEGER + +GeographicalLocation ::= [APPLICATION 113] SEQUENCE +{ + servingNetwork ServingNetwork OPTIONAL, + servingBid ServingBid OPTIONAL, + servingLocationDescription ServingLocationDescription OPTIONAL, +... +} + +GprsBasicCallInformation ::= [APPLICATION 114] SEQUENCE +{ + gprsChargeableSubscriber GprsChargeableSubscriber OPTIONAL, -- *m.m. + rapFileSequenceNumber RapFileSequenceNumber OPTIONAL, + gprsDestination GprsDestination OPTIONAL, -- *m.m. + callEventStartTimeStamp CallEventStartTimeStamp OPTIONAL, -- *m.m. + totalCallEventDuration TotalCallEventDuration OPTIONAL, -- *m.m. + causeForTerm CauseForTerm OPTIONAL, + partialTypeIndicator PartialTypeIndicator OPTIONAL, + pDPContextStartTimestamp PDPContextStartTimestamp OPTIONAL, + networkInitPDPContext NetworkInitPDPContext OPTIONAL, + chargingId ChargingId OPTIONAL, -- *m.m. +... +} + +GprsChargeableSubscriber ::= [APPLICATION 115] SEQUENCE +{ + chargeableSubscriber ChargeableSubscriber OPTIONAL, + pdpAddress PdpAddress OPTIONAL, + networkAccessIdentifier NetworkAccessIdentifier OPTIONAL, +... +} + +GprsDestination ::= [APPLICATION 116] SEQUENCE +{ + accessPointNameNI AccessPointNameNI OPTIONAL, -- *m.m. + accessPointNameOI AccessPointNameOI OPTIONAL, +... +} + +GprsLocationInformation ::= [APPLICATION 117] SEQUENCE +{ + gprsNetworkLocation GprsNetworkLocation OPTIONAL, -- *m.m. + homeLocationInformation HomeLocationInformation OPTIONAL, + geographicalLocation GeographicalLocation OPTIONAL, +... +} + +GprsNetworkLocation ::= [APPLICATION 118] SEQUENCE +{ + recEntity RecEntityCodeList OPTIONAL, -- *m.m. + locationArea LocationArea OPTIONAL, + cellId CellId OPTIONAL, +... +} + +GprsServiceUsed ::= [APPLICATION 121] SEQUENCE +{ + iMSSignallingContext IMSSignallingContext OPTIONAL, + dataVolumeIncoming DataVolumeIncoming OPTIONAL, -- *m.m. + dataVolumeOutgoing DataVolumeOutgoing OPTIONAL, -- *m.m. + chargeInformationList ChargeInformationList OPTIONAL, -- *m.m. +... +} + +GsmChargeableSubscriber ::= [APPLICATION 286] SEQUENCE +{ + imsi Imsi OPTIONAL, + msisdn Msisdn OPTIONAL, +... +} + +GuaranteedBitRate ::= [APPLICATION 420] OCTET STRING --(SIZE (1)) + +HomeBid ::= [APPLICATION 122] Bid + +HomeIdentifier ::= [APPLICATION 288] AsciiString + +HomeIdType ::= [APPLICATION 311] INTEGER + +HomeLocationDescription ::= [APPLICATION 413] LocationDescription + +HomeLocationInformation ::= [APPLICATION 123] SEQUENCE +{ + homeBid HomeBid OPTIONAL, -- *m.m. + homeLocationDescription HomeLocationDescription OPTIONAL, -- *m.m. +... +} + +HorizontalAccuracyDelivered ::= [APPLICATION 392] INTEGER + +HorizontalAccuracyRequested ::= [APPLICATION 385] INTEGER + +HSCSDIndicator ::= [APPLICATION 424] AsciiString --(SIZE(1)) + +Imei ::= [APPLICATION 128] BCDString --(SIZE(7..8)) + +ImeiOrEsn ::= [APPLICATION 429] CHOICE +{ + imei Imei, + esn Esn, +... +} + +Imsi ::= [APPLICATION 129] BCDString --(SIZE(3..8)) + +IMSSignallingContext ::= [APPLICATION 418] INTEGER + +InternetServiceProvider ::= [APPLICATION 329] SEQUENCE +{ + ispIdType IspIdType OPTIONAL, -- *m.m. + ispIdentifier IspIdentifier OPTIONAL, -- *m.m. +... +} + +InternetServiceProviderIdList ::= [APPLICATION 330] SEQUENCE OF InternetServiceProvider + +IspIdentifier ::= [APPLICATION 294] AsciiString + +IspIdType ::= [APPLICATION 293] INTEGER + +ISPList ::= [APPLICATION 378] SEQUENCE OF InternetServiceProvider + +NetworkIdType ::= [APPLICATION 331] INTEGER + +NetworkIdentifier ::= [APPLICATION 295] AsciiString + +Network ::= [APPLICATION 332] SEQUENCE +{ + networkIdType NetworkIdType OPTIONAL, -- *m.m. + networkIdentifier NetworkIdentifier OPTIONAL, -- *m.m. +... +} + +NetworkList ::= [APPLICATION 333] SEQUENCE OF Network + +LatestCallTimeStamp ::= [APPLICATION 133] DateTimeLong + +LCSQosDelivered ::= [APPLICATION 390] SEQUENCE +{ + lCSTransactionStatus LCSTransactionStatus OPTIONAL, + horizontalAccuracyDelivered HorizontalAccuracyDelivered OPTIONAL, + verticalAccuracyDelivered VerticalAccuracyDelivered OPTIONAL, + responseTime ResponseTime OPTIONAL, + positioningMethod PositioningMethod OPTIONAL, + trackingPeriod TrackingPeriod OPTIONAL, + trackingFrequency TrackingFrequency OPTIONAL, + ageOfLocation AgeOfLocation OPTIONAL, +... +} + +LCSQosRequested ::= [APPLICATION 383] SEQUENCE +{ + lCSRequestTimestamp LCSRequestTimestamp OPTIONAL, -- *m.m. + horizontalAccuracyRequested HorizontalAccuracyRequested OPTIONAL, + verticalAccuracyRequested VerticalAccuracyRequested OPTIONAL, + responseTimeCategory ResponseTimeCategory OPTIONAL, + trackingPeriod TrackingPeriod OPTIONAL, + trackingFrequency TrackingFrequency OPTIONAL, +... +} + +LCSRequestTimestamp ::= [APPLICATION 384] DateTime + +LCSSPIdentification ::= [APPLICATION 375] SEQUENCE +{ + contentProviderIdType ContentProviderIdType OPTIONAL, -- *m.m. + contentProviderIdentifier ContentProviderIdentifier OPTIONAL, -- *m.m. +... +} + +LCSSPIdentificationList ::= [APPLICATION 374] SEQUENCE OF LCSSPIdentification + +LCSSPInformation ::= [APPLICATION 373] SEQUENCE +{ + lCSSPIdentificationList LCSSPIdentificationList OPTIONAL, -- *m.m. + iSPList ISPList OPTIONAL, + networkList NetworkList OPTIONAL, +... +} + +LCSTransactionStatus ::= [APPLICATION 391] INTEGER + +LocalCurrency ::= [APPLICATION 135] Currency + +LocalTimeStamp ::= [APPLICATION 16] NumberString --(SIZE(14)) + +LocationArea ::= [APPLICATION 136] INTEGER + +LocationDescription ::= AsciiString + +LocationIdentifier ::= [APPLICATION 289] AsciiString + +LocationIdType ::= [APPLICATION 315] INTEGER + +LocationInformation ::= [APPLICATION 138] SEQUENCE +{ + networkLocation NetworkLocation OPTIONAL, -- *m.m. + homeLocationInformation HomeLocationInformation OPTIONAL, + geographicalLocation GeographicalLocation OPTIONAL, +... +} + +LocationServiceUsage ::= [APPLICATION 382] SEQUENCE +{ + lCSQosRequested LCSQosRequested OPTIONAL, -- *m.m. + lCSQosDelivered LCSQosDelivered OPTIONAL, + chargingTimeStamp ChargingTimeStamp OPTIONAL, + chargeInformationList ChargeInformationList OPTIONAL, -- *m.m. +... +} + +MaximumBitRate ::= [APPLICATION 421] OCTET STRING --(SIZE (1)) + +Mdn ::= [APPLICATION 253] NumberString + +MessageDescription ::= [APPLICATION 142] AsciiString + +MessageDescriptionCode ::= [APPLICATION 141] Code + +MessageDescriptionInformation ::= [APPLICATION 143] SEQUENCE +{ + messageDescriptionCode MessageDescriptionCode OPTIONAL, -- *m.m. + messageDescription MessageDescription OPTIONAL, -- *m.m. +... +} + +MessageStatus ::= [APPLICATION 144] INTEGER + +MessageType ::= [APPLICATION 145] INTEGER + +MessagingEventService ::= [APPLICATION 439] INTEGER + +Min ::= [APPLICATION 146] NumberString --(SIZE(2..15)) + +MinChargeableSubscriber ::= [APPLICATION 254] SEQUENCE +{ + min Min OPTIONAL, -- *m.m. + mdn Mdn OPTIONAL, +... +} + +MoBasicCallInformation ::= [APPLICATION 147] SEQUENCE +{ + chargeableSubscriber ChargeableSubscriber OPTIONAL, -- *m.m. + rapFileSequenceNumber RapFileSequenceNumber OPTIONAL, + destination Destination OPTIONAL, + destinationNetwork DestinationNetwork OPTIONAL, + callEventStartTimeStamp CallEventStartTimeStamp OPTIONAL, -- *m.m. + totalCallEventDuration TotalCallEventDuration OPTIONAL, -- *m.m. + simToolkitIndicator SimToolkitIndicator OPTIONAL, + causeForTerm CauseForTerm OPTIONAL, +... +} + +MobileSessionService ::= [APPLICATION 440] INTEGER + +Msisdn ::= [APPLICATION 152] BCDString --(SIZE(1..9)) + +MtBasicCallInformation ::= [APPLICATION 153] SEQUENCE +{ + chargeableSubscriber ChargeableSubscriber OPTIONAL, -- *m.m. + rapFileSequenceNumber RapFileSequenceNumber OPTIONAL, + callOriginator CallOriginator OPTIONAL, + originatingNetwork OriginatingNetwork OPTIONAL, + callEventStartTimeStamp CallEventStartTimeStamp OPTIONAL, -- *m.m. + totalCallEventDuration TotalCallEventDuration OPTIONAL, -- *m.m. + simToolkitIndicator SimToolkitIndicator OPTIONAL, + causeForTerm CauseForTerm OPTIONAL, +... +} + +NetworkAccessIdentifier ::= [APPLICATION 417] AsciiString + +NetworkElement ::= [APPLICATION 441] SEQUENCE +{ +elementType ElementType OPTIONAL, -- *m.m. +elementId ElementId OPTIONAL, -- *m.m. +... +} + +NetworkElementList ::= [APPLICATION 442] SEQUENCE OF NetworkElement + +NetworkId ::= AsciiString --(SIZE(1..6)) + +NetworkInitPDPContext ::= [APPLICATION 245] INTEGER + +NetworkLocation ::= [APPLICATION 156] SEQUENCE +{ + recEntityCode RecEntityCode OPTIONAL, -- *m.m. + callReference CallReference OPTIONAL, + locationArea LocationArea OPTIONAL, + cellId CellId OPTIONAL, +... +} + +NonChargedNumber ::= [APPLICATION 402] AsciiString + +NonChargedParty ::= [APPLICATION 443] SEQUENCE +{ + nonChargedPartyNumber NonChargedPartyNumber OPTIONAL, + nonChargedPublicUserId NonChargedPublicUserId OPTIONAL, +... +} + +NonChargedPartyNumber ::= [APPLICATION 444] AddressStringDigits + +NonChargedPublicUserId ::= [APPLICATION 445] AsciiString + +NumberOfDecimalPlaces ::= [APPLICATION 159] INTEGER + +ObjectType ::= [APPLICATION 281] INTEGER + +OperatorSpecInfoList ::= [APPLICATION 162] SEQUENCE OF OperatorSpecInformation + +OperatorSpecInformation ::= [APPLICATION 163] AsciiString + +OrderPlacedTimeStamp ::= [APPLICATION 300] DateTime + +OriginatingNetwork ::= [APPLICATION 164] NetworkId + +PacketDataProtocolAddress ::= [APPLICATION 165] AsciiString + +PaidIndicator ::= [APPLICATION 346] INTEGER + +PartialTypeIndicator ::= [APPLICATION 166] AsciiString --(SIZE(1)) + +PaymentMethod ::= [APPLICATION 347] INTEGER + +PdpAddress ::= [APPLICATION 167] PacketDataProtocolAddress + +PDPContextStartTimestamp ::= [APPLICATION 260] DateTime + +PlmnId ::= [APPLICATION 169] AsciiString --(SIZE(5)) + +PositioningMethod ::= [APPLICATION 395] INTEGER + +PriorityCode ::= [APPLICATION 170] INTEGER + +PublicUserId ::= [APPLICATION 446] AsciiString + +RapFileSequenceNumber ::= [APPLICATION 181] FileSequenceNumber + +RecEntityCode ::= [APPLICATION 184] Code + +RecEntityCodeList ::= [APPLICATION 185] SEQUENCE OF RecEntityCode + +RecEntityId ::= [APPLICATION 400] AsciiString + +RecEntityInfoList ::= [APPLICATION 188] SEQUENCE OF RecEntityInformation + +RecEntityInformation ::= [APPLICATION 183] SEQUENCE +{ + recEntityCode RecEntityCode OPTIONAL, -- *m.m. + recEntityType RecEntityType OPTIONAL, -- *m.m. + recEntityId RecEntityId OPTIONAL, -- *m.m. +... +} + +RecEntityType ::= [APPLICATION 186] INTEGER + +Recipient ::= [APPLICATION 182] PlmnId + +ReleaseVersionNumber ::= [APPLICATION 189] INTEGER + +RequestedDeliveryTimeStamp ::= [APPLICATION 301] DateTime + +ResponseTime ::= [APPLICATION 394] INTEGER + +ResponseTimeCategory ::= [APPLICATION 387] INTEGER + +ScuBasicInformation ::= [APPLICATION 191] SEQUENCE +{ + chargeableSubscriber ScuChargeableSubscriber OPTIONAL, -- *m.m. + chargedPartyStatus ChargedPartyStatus OPTIONAL, -- *m.m. + nonChargedNumber NonChargedNumber OPTIONAL, -- *m.m. + clirIndicator ClirIndicator OPTIONAL, + originatingNetwork OriginatingNetwork OPTIONAL, + destinationNetwork DestinationNetwork OPTIONAL, +... +} + +ScuChargeType ::= [APPLICATION 192] SEQUENCE +{ + messageStatus MessageStatus OPTIONAL, -- *m.m. + priorityCode PriorityCode OPTIONAL, -- *m.m. + distanceChargeBandCode DistanceChargeBandCode OPTIONAL, + messageType MessageType OPTIONAL, -- *m.m. + messageDescriptionCode MessageDescriptionCode OPTIONAL, -- *m.m. +... +} + +ScuTimeStamps ::= [APPLICATION 193] SEQUENCE +{ + depositTimeStamp DepositTimeStamp OPTIONAL, -- *m.m. + completionTimeStamp CompletionTimeStamp OPTIONAL, -- *m.m. + chargingPoint ChargingPoint OPTIONAL, -- *m.m. +... +} + +ScuChargeableSubscriber ::= [APPLICATION 430] CHOICE +{ + gsmChargeableSubscriber GsmChargeableSubscriber, + minChargeableSubscriber MinChargeableSubscriber, +... +} + +Sender ::= [APPLICATION 196] PlmnId + +ServiceStartTimestamp ::= [APPLICATION 447] DateTime + +ServingBid ::= [APPLICATION 198] Bid + +ServingLocationDescription ::= [APPLICATION 414] LocationDescription + +ServingNetwork ::= [APPLICATION 195] AsciiString + +ServingPartiesInformation ::= [APPLICATION 335] SEQUENCE +{ + contentProviderName ContentProviderName OPTIONAL, -- *m.m. + contentProviderIdList ContentProviderIdList OPTIONAL, + internetServiceProviderIdList InternetServiceProviderIdList OPTIONAL, + networkList NetworkList OPTIONAL, +... +} + +SessionChargeInfoList ::= [APPLICATION 448] SEQUENCE OF SessionChargeInformation + +SessionChargeInformation ::= [APPLICATION 449] SEQUENCE +{ +chargedItem ChargedItem OPTIONAL, -- *m.m. +exchangeRateCode ExchangeRateCode OPTIONAL, + callTypeGroup CallTypeGroup OPTIONAL, -- *m.m. + chargeDetailList ChargeDetailList OPTIONAL, -- *m.m. + taxInformationList TaxInformationList OPTIONAL, +... +} + +SimChargeableSubscriber ::= [APPLICATION 199] SEQUENCE +{ + imsi Imsi OPTIONAL, -- *m.m. + msisdn Msisdn OPTIONAL, +... +} + +SimToolkitIndicator ::= [APPLICATION 200] AsciiString --(SIZE(1)) + +SMSDestinationNumber ::= [APPLICATION 419] AsciiString + +SMSOriginator ::= [APPLICATION 425] AsciiString + +SpecificationVersionNumber ::= [APPLICATION 201] INTEGER + +SsParameters ::= [APPLICATION 204] AsciiString --(SIZE(1..40)) + +SupplServiceActionCode ::= [APPLICATION 208] INTEGER + +SupplServiceCode ::= [APPLICATION 209] HexString --(SIZE(2)) + +SupplServiceUsed ::= [APPLICATION 206] SEQUENCE +{ + supplServiceCode SupplServiceCode OPTIONAL, -- *m.m. + supplServiceActionCode SupplServiceActionCode OPTIONAL, -- *m.m. + ssParameters SsParameters OPTIONAL, + chargingTimeStamp ChargingTimeStamp OPTIONAL, + chargeInformation ChargeInformation OPTIONAL, + basicServiceCodeList BasicServiceCodeList OPTIONAL, +... +} + +TapCurrency ::= [APPLICATION 210] Currency + +TapDecimalPlaces ::= [APPLICATION 244] INTEGER + +TaxableAmount ::= [APPLICATION 398] AbsoluteAmount + +Taxation ::= [APPLICATION 216] SEQUENCE +{ + taxCode TaxCode OPTIONAL, -- *m.m. + taxType TaxType OPTIONAL, -- *m.m. + taxRate TaxRate OPTIONAL, + chargeType ChargeType OPTIONAL, + taxIndicator TaxIndicator OPTIONAL, +... +} + +TaxationList ::= [APPLICATION 211] SEQUENCE OF Taxation + +TaxCode ::= [APPLICATION 212] INTEGER + +TaxIndicator ::= [APPLICATION 432] AsciiString --(SIZE(1)) + +TaxInformation ::= [APPLICATION 213] SEQUENCE +{ + taxCode TaxCode OPTIONAL, -- *m.m. + taxValue TaxValue OPTIONAL, -- *m.m. + taxableAmount TaxableAmount OPTIONAL, +... +} + +TaxInformationList ::= [APPLICATION 214] SEQUENCE OF TaxInformation + +-- The TaxRate item is of a fixed length to ensure that the full 5 +-- decimal places is provided. + +TaxRate ::= [APPLICATION 215] NumberString --(SIZE(7)) + +TaxType ::= [APPLICATION 217] AsciiString --(SIZE(2)) + +TaxValue ::= [APPLICATION 397] AbsoluteAmount + +TeleServiceCode ::= [APPLICATION 218] HexString --(SIZE(2)) + +ThirdPartyInformation ::= [APPLICATION 219] SEQUENCE +{ + thirdPartyNumber ThirdPartyNumber OPTIONAL, + clirIndicator ClirIndicator OPTIONAL, +... +} + +ThirdPartyNumber ::= [APPLICATION 403] AddressStringDigits + +ThreeGcamelDestination ::= [APPLICATION 431] CHOICE +{ + camelDestinationNumber CamelDestinationNumber, + gprsDestination GprsDestination, +... +} + +TotalAdvisedCharge ::= [APPLICATION 356] AbsoluteAmount + +TotalAdvisedChargeRefund ::= [APPLICATION 357] AbsoluteAmount + +TotalAdvisedChargeValue ::= [APPLICATION 360] SEQUENCE +{ + advisedChargeCurrency AdvisedChargeCurrency OPTIONAL, + totalAdvisedCharge TotalAdvisedCharge OPTIONAL, -- *m.m. + totalAdvisedChargeRefund TotalAdvisedChargeRefund OPTIONAL, + totalCommission TotalCommission OPTIONAL, + totalCommissionRefund TotalCommissionRefund OPTIONAL, +... +} + +TotalAdvisedChargeValueList ::= [APPLICATION 361] SEQUENCE OF TotalAdvisedChargeValue + +TotalCallEventDuration ::= [APPLICATION 223] INTEGER + +TotalCharge ::= [APPLICATION 415] AbsoluteAmount + +TotalChargeRefund ::= [APPLICATION 355] AbsoluteAmount + +TotalCommission ::= [APPLICATION 358] AbsoluteAmount + +TotalCommissionRefund ::= [APPLICATION 359] AbsoluteAmount + +TotalDataVolume ::= [APPLICATION 343] DataVolume + +TotalDiscountRefund ::= [APPLICATION 354] AbsoluteAmount + +TotalDiscountValue ::= [APPLICATION 225] AbsoluteAmount + +TotalTaxRefund ::= [APPLICATION 353] AbsoluteAmount + +TotalTaxValue ::= [APPLICATION 226] AbsoluteAmount + +TotalTransactionDuration ::= [APPLICATION 416] TotalCallEventDuration + +TrackedCustomerEquipment ::= [APPLICATION 381] SEQUENCE +{ + equipmentIdType EquipmentIdType OPTIONAL, -- *m.m. + equipmentId EquipmentId OPTIONAL, -- *m.m. +... +} + +TrackedCustomerHomeId ::= [APPLICATION 377] SEQUENCE +{ + homeIdType HomeIdType OPTIONAL, -- *m.m. + homeIdentifier HomeIdentifier OPTIONAL, -- *m.m. +... +} + +TrackedCustomerHomeIdList ::= [APPLICATION 376] SEQUENCE OF TrackedCustomerHomeId + +TrackedCustomerIdentification ::= [APPLICATION 372] SEQUENCE +{ + customerIdType CustomerIdType OPTIONAL, -- *m.m. + customerIdentifier CustomerIdentifier OPTIONAL, -- *m.m. +... +} + +TrackedCustomerIdList ::= [APPLICATION 370] SEQUENCE OF TrackedCustomerIdentification + +TrackedCustomerInformation ::= [APPLICATION 367] SEQUENCE +{ + trackedCustomerIdList TrackedCustomerIdList OPTIONAL, -- *m.m. + trackedCustomerHomeIdList TrackedCustomerHomeIdList OPTIONAL, + trackedCustomerLocList TrackedCustomerLocList OPTIONAL, + trackedCustomerEquipment TrackedCustomerEquipment OPTIONAL, +... +} + +TrackedCustomerLocation ::= [APPLICATION 380] SEQUENCE +{ + locationIdType LocationIdType OPTIONAL, -- *m.m. + locationIdentifier LocationIdentifier OPTIONAL, -- *m.m. +... +} + +TrackedCustomerLocList ::= [APPLICATION 379] SEQUENCE OF TrackedCustomerLocation + +TrackingCustomerEquipment ::= [APPLICATION 371] SEQUENCE +{ + equipmentIdType EquipmentIdType OPTIONAL, -- *m.m. + equipmentId EquipmentId OPTIONAL, -- *m.m. +... +} + +TrackingCustomerHomeId ::= [APPLICATION 366] SEQUENCE +{ + homeIdType HomeIdType OPTIONAL, -- *m.m. + homeIdentifier HomeIdentifier OPTIONAL, -- *m.m. +... +} + +TrackingCustomerHomeIdList ::= [APPLICATION 365] SEQUENCE OF TrackingCustomerHomeId + +TrackingCustomerIdentification ::= [APPLICATION 362] SEQUENCE +{ + customerIdType CustomerIdType OPTIONAL, -- *m.m. + customerIdentifier CustomerIdentifier OPTIONAL, -- *m.m. +... +} + +TrackingCustomerIdList ::= [APPLICATION 299] SEQUENCE OF TrackingCustomerIdentification + +TrackingCustomerInformation ::= [APPLICATION 298] SEQUENCE +{ + trackingCustomerIdList TrackingCustomerIdList OPTIONAL, -- *m.m. + trackingCustomerHomeIdList TrackingCustomerHomeIdList OPTIONAL, + trackingCustomerLocList TrackingCustomerLocList OPTIONAL, + trackingCustomerEquipment TrackingCustomerEquipment OPTIONAL, +... +} + +TrackingCustomerLocation ::= [APPLICATION 369] SEQUENCE +{ + locationIdType LocationIdType OPTIONAL, -- *m.m. + locationIdentifier LocationIdentifier OPTIONAL, -- *m.m. +... +} + +TrackingCustomerLocList ::= [APPLICATION 368] SEQUENCE OF TrackingCustomerLocation + +TrackingFrequency ::= [APPLICATION 389] INTEGER + +TrackingPeriod ::= [APPLICATION 388] INTEGER + +TransactionAuthCode ::= [APPLICATION 342] AsciiString + +TransactionDescriptionSupp ::= [APPLICATION 338] INTEGER + +TransactionDetailDescription ::= [APPLICATION 339] AsciiString + +TransactionIdentifier ::= [APPLICATION 341] AsciiString + +TransactionShortDescription ::= [APPLICATION 340] AsciiString + +TransactionStatus ::= [APPLICATION 303] INTEGER + +TransferCutOffTimeStamp ::= [APPLICATION 227] DateTimeLong + +TransparencyIndicator ::= [APPLICATION 228] INTEGER + +UserProtocolIndicator ::= [APPLICATION 280] INTEGER + +UtcTimeOffset ::= [APPLICATION 231] AsciiString --(SIZE(5)) + +UtcTimeOffsetCode ::= [APPLICATION 232] Code + +UtcTimeOffsetInfo ::= [APPLICATION 233] SEQUENCE +{ + utcTimeOffsetCode UtcTimeOffsetCode OPTIONAL, -- *m.m. + utcTimeOffset UtcTimeOffset OPTIONAL, -- *m.m. +... +} + +UtcTimeOffsetInfoList ::= [APPLICATION 234] SEQUENCE OF UtcTimeOffsetInfo + +VerticalAccuracyDelivered ::= [APPLICATION 393] INTEGER + +VerticalAccuracyRequested ::= [APPLICATION 386] INTEGER + + +-- +-- Tagged common data types +-- + +-- +-- The AbsoluteAmount data type is used to +-- encode absolute revenue amounts. +-- The accuracy of all absolute amount values is defined +-- by the value of TapDecimalPlaces within the group +-- AccountingInfo for the entire TAP batch. +-- Note, that only amounts greater than or equal to zero are allowed. +-- The decimal number representing the amount is +-- derived from the encoded integer +-- value by division by 10^TapDecimalPlaces. +-- for example for TapDecimalPlaces = 3 the following values +-- will be derived: +-- 0 represents 0.000 +-- 12 represents 0.012 +-- 1234 represents 1.234 +-- for TapDecimalPlaces = 5 the following values will be +-- derived: +-- 0 represents 0.00000 +-- 1234 represents 0.01234 +-- 123456 represents 1.23456 +-- This data type is used to encode (total) +-- charges, (total) discount values and +-- (total) tax values. +-- +AbsoluteAmount ::= INTEGER + +Bid ::= AsciiString --(SIZE(5)) + +Code ::= INTEGER + +-- +-- Non-tagged common data types +-- +-- +-- Recommended common data types to be used for file encoding: +-- +-- The following definitions should be used for TAP file creation instead of +-- the default specifications (OCTET STRING) +-- +-- AsciiString ::= VisibleString +-- +-- Currency ::= VisibleString +-- +-- HexString ::= VisibleString +-- +-- NumberString ::= NumericString +-- +-- AsciiString contains visible ISO 646 characters. +-- Leading and trailing spaces must be discarded during processing. +-- An AsciiString cannot contain only spaces. + +AsciiString ::= OCTET STRING + +-- +-- The BCDString data type (Binary Coded Decimal String) is used to represent +-- several digits from 0 through 9, a, b, c, d, e. +-- Two digits are encoded per octet. The four leftmost bits of the octet represent +-- the first digit while the four remaining bits represent the following digit. +-- A single f must be used as a filler when the total number of digits to be +-- encoded is odd. +-- No other filler is allowed. + +BCDString ::= OCTET STRING + + +-- +-- The currency codes from ISO 4217 +-- are used to identify a currency +-- +Currency ::= OCTET STRING + +-- +-- HexString contains ISO 646 characters from 0 through 9, A, B, C, D, E, F. +-- + +HexString ::= OCTET STRING + +-- +-- NumberString contains ISO 646 characters from 0 through 9. +-- + +NumberString ::= OCTET STRING + + +-- +-- The PercentageRate data type is used to +-- encode percentage rates with an accuracy of 2 decimal places. +-- This data type is used to encode discount rates. +-- The decimal number representing the percentage +-- rate is obtained by dividing the integer value by 100 +-- Examples: +-- +-- 1500 represents 15.00 percent +-- 1 represents 0.01 percent +-- +PercentageRate ::= INTEGER + + +-- END +END +} + +1; -- 2.11.0