--/////////////////////////////////////////////////////////////////////////////
--                                                                           //
-- Copyright Test Competence Center (TCC) ETH 2016                           //
--                                                                           //
-- The copyright to the computer  program(s) herein  is the property of TCC. //
-- The program(s) may be used and/or copied only with the written permission //
-- of TCC or in accordance with  the terms and conditions  stipulated in the //
-- agreement/contract under which the program(s) has been supplied.          //
--                                                                           //
--/////////////////////////////////////////////////////////////////////////////
--
--  File:               SS_Errors.asn
--  Rev:                R1B
--  Prodnr:             CNL 113 832
--  Contact:            http://ttcn.ericsson.se
--  Reference:          3GPP TS 24.080 v13.0.0

SS-Errors {
   itu-t identified-organization (4) etsi (0) mobileDomain (0) gsm-Access (2) modules (3)
   ss-Errors (1) version12 (12)}

DEFINITIONS ::=

BEGIN

IMPORTS

ERROR FROM
Remote-Operations-Information-Objects {joint-iso-itu-t remote-operations(4)
  informationObjects(5) version1(0)};

-- The MAP errors
-- unknownSubscriber, bearerServiceNotProvisioned, teleserviceNotProvisioned,
-- illegalSS-Operation, ss-ErrorStatus, ss-NotAvailable, ss-SubscriptionViolation,
-- ss-Incompatibility, systemFailure, dataMissing, unexpectedDataValue, facilityNotSupported,
-- pw-RegistrationFailure, negativePW-Check, callBarred, numberOfPW-AttemptsViolation,
-- absentSubscriber, illegalSubscriber, illegalEquipment, ussd-Busy, unknownAlphabet,
-- forwardingViolation, forwardingFailed
-- are imported from MAP-Errors in SS-Protocol module.

-- errors definition
resourcesNotAvailable  ERROR ::= {
	CODE	local:127 }
maxNumberOfMPTY-ParticipantsExceeded  ERROR ::= {
	CODE	local:126 }
invalidDeflectedToNumber  ERROR ::= {
	CODE	local:125 }
specialServiceCode  ERROR ::= {
	CODE	local:124 }
deflectionToServedSubscriber  ERROR ::= {
	CODE	local:123 }
rejectedByNetwork  ERROR ::= {
	CODE	local:122 }
rejectedByUser  ERROR ::= {
	CODE	local:121 }

END
