The Net is the Automation.
We bring people, systems and devices together.
NettedAutomation GmbH
Information & Communication Systems (NAICS)

back - menue - contact - search
news - solutions - standardization - seminars - marketing support
question & answers - discussion forum - glossary - links - about us


-> home > standardization > iso > tc 184 > sc5 > working group 2 > mms syntax > mms syntax iso ...

MMS Syntax (ISO 9506-2:1999)

Updated and fixed on 2006-08-11

ISO-9506-MMS-1 { iso standard 9506 part(2) mms-abstract-syntax-version1(1) }
DEFINITIONS ::= BEGIN

    -- The editor of this html document does not guarantee correctnes of the syntax.
    - Precise definition can be found in the standard 9506-2:1999

EXPORTS

IMPORTS


MMSpdu ::= CHOICE {

confirmed-RequestPDU [0] IMPLICIT Confirmed-RequestPDU,
confirmed-ResponsePDU [1] IMPLICIT Confirmed-ResponsePDU,
confirmed-ErrorPDU [2] IMPLICIT Confirmed-ErrorPDU,
unconfirmed-PDU [3] IMPLICIT Unconfirmed-PDU,
rejectPDU [4] IMPLICIT RejectPDU,
cancel-RequestPDU [5] IMPLICIT Cancel-RequestPDU,
cancel-ResponsePDU [6] IMPLICIT Cancel-ResponsePDU,
cancel-ErrorPDU [7] IMPLICIT Cancel-ErrorPDU,
initiate-RequestPDU [8] IMPLICIT Initiate-RequestPDU,
initiate-ResponsePDU [9] IMPLICIT Initiate-ResponsePDU,
initiate-ErrorPDU [10] IMPLICIT Initiate-ErrorPDU,
conclude-RequestPDU [11] IMPLICIT Conclude-RequestPDU,
conclude-ResponsePDU [12] IMPLICIT Conclude-ResponsePDU,
conclude-ErrorPDU [13] IMPLICIT Conclude-ErrorPDU
}

Confirmed-RequestPDU ::= SEQUENCE {

invokeID Unsigned32,
listOfModifiers SEQUENCE OF Modifier OPTIONAL,
service ConfirmedServiceRequest,
...,
service-ext [79] Request-Detail OPTIONAL

-- shall not be transmitted if value is the value
-- of a tagged type derived from NULL

}

ConfirmedServiceRequest ::= CHOICE {

status [0] IMPLICIT Status-Request,
getNameList [1] IMPLICIT GetNameList-Request,
identify [2] IMPLICIT Identify-Request,
rename [3] IMPLICIT Rename-Request,
read [4] IMPLICIT Read-Request,
write [5] IMPLICIT Write-Request,
getVariableAccessAttributes[6] GetVariableAccessAttributes-Request,
defineNamedVariable [7] IMPLICIT DefineNamedVariable-Request,
        -- [8] is reserved for a service defined in Annex E
defineScatteredAccess [8] IMPLICIT DefineScatteredAccess-Request,
        -- [9] is reserved for a service defined in Annex E
getScatteredAccessAttributes [9] IMPLICIT GetScatteredAccessAttributes-Request,
deleteVariableAccess [10] IMPLICIT DeleteVariableAccess-Request,
defineNamedVariableList [11] IMPLICIT DefineNamedVariableList-Request,
getNamedVariableListAttributes [12] GetNamedVariableListAttributes-Request,
deleteNamedVariableList [13] IMPLICIT DeleteNamedVariableList-Request,
defineNamedType [14] IMPLICIT DefineNamedType-Request,
getNamedTypeAttributes [15] GetNamedTypeAttributes-Request,
deleteNamedType [16] IMPLICIT DeleteNamedType-Request,
input [17] IMPLICIT Input-Request,
output [18] IMPLICIT Output-Request,
takeControl [19] IMPLICIT TakeControl-Request,
relinquishControl [20] IMPLICIT RelinquishControl-Request,
defineSemaphore [21] IMPLICIT DefineSemaphore-Request,
deleteSemaphore [22] DeleteSemaphore-Request,
reportSemaphoreStatus [23] ReportSemaphoreStatus-Request,
reportPoolSemaphoreStatus [24] IMPLICIT ReportPoolSemaphoreStatus-Request,
reportSemaphoreEntryStatus [25] IMPLICIT ReportSemaphoreEntryStatus-Request,
initiateDownloadSequence [26] IMPLICIT InitiateDownloadSequence-Request,
downloadSegment [27] IMPLICIT DownloadSegment-Request,
terminateDownloadSequence [28] IMPLICIT TerminateDownloadSequence-Request,
initiateUploadSequence [29] IMPLICIT InitiateUploadSequence-Request,
uploadSegment [30] IMPLICIT UploadSegment-Request,
terminateUploadSequence [31] IMPLICIT TerminateUploadSequence-Request,
requestDomainDownload [32] IMPLICIT RequestDomainDownload-Request,
requestDomainUpload [33] IMPLICIT RequestDomainUpload-Request,
loadDomainContent [34] IMPLICIT LoadDomainContent-Request,
storeDomainContent [35] IMPLICIT StoreDomainContent-Request,
deleteDomain [36] IMPLICIT DeleteDomain-Request,
getDomainAttributes [37] IMPLICIT GetDomainAttributes-Request,
createProgramInvocation [38] IMPLICIT CreateProgramInvocation-Request,
deleteProgramInvocation [39] IMPLICIT DeleteProgramInvocation-Request,
start [40] IMPLICIT Start-Request,
stop [41] IMPLICIT Stop-Request,
resume [42] IMPLICIT Resume-Request,
reset [43] IMPLICIT Reset-Request,
kill [44] IMPLICIT Kill-Request,
getProgramInvocationAttributes [45] IMPLICIT GetProgramInvocationAttributes-Request,
obtainFile [46] IMPLICIT ObtainFile-Request,
defineEventCondition [47] IMPLICIT DefineEventCondition-Request,
deleteEventCondition [48] DeleteEventCondition-Request,
getEventConditionAttributes [49] GetEventConditionAttributes-Request,
reportEventConditionStatus [50] ReportEventConditionStatus-Request,
alterEventConditionMonitoring [51] IMPLICIT AlterEventConditionMonitoring-Request,
triggerEvent [52] IMPLICIT TriggerEvent-Request,
defineEventAction [53] IMPLICIT DefineEventAction-Request,
deleteEventAction [54] DeleteEventAction-Request,
getEventActionAttributes [55] GetEventActionAttributes-Request,
reportEventActionStatus [56] ReportEventActionStatus-Request,
defineEventEnrollment [57] IMPLICIT DefineEventEnrollment-Request,
deleteEventEnrollment [58] DeleteEventEnrollment-Request,
alterEventEnrollment [59] IMPLICIT AlterEventEnrollment-Request,
reportEventEnrollmentStatus [60] ReportEventEnrollmentStatus-Request,
getEventEnrollmentAttributes [61] IMPLICIT GetEventEnrollmentAttributes-Request,
acknowledgeEventNotification [62] IMPLICIT AcknowledgeEventNotification-Request,
getAlarmSummary [63] IMPLICIT GetAlarmSummary-Request,
getAlarmEnrollmentSummary [64] IMPLICIT GetAlarmEnrollmentSummary-Request,
readJournal [65] IMPLICIT ReadJournal-Request,
writeJournal [66] IMPLICIT WriteJournal-Request,
initializeJournal [67] IMPLICIT InitializeJournal-Request,
reportJournalStatus [68] ReportJournalStatus-Request,
createJournal [69] IMPLICIT CreateJournal-Request,
deleteJournal [70] IMPLICIT DeleteJournal-Request,
getCapabilityList [71] IMPLICIT GetCapabilityList-Request,
        -- choices [72] through [77] are reserved for use by services
        -- defined in annex D
fileOpen [72] IMPLICIT FileOpen-Request,
fileRead [73] IMPLICIT FileRead-Request,
fileClose [74] IMPLICIT FileClose-Request,
fileRename [75] IMPLICIT FileRename-Request,
fileDelete [76] IMPLICIT FileDelete-Request,
fileDirectory [77] IMPLICIT FileDirectory-Request,
additionalService [78] AdditionalService-Request,
        -- choice [79] is reserved
getDataExchangeAttributes [80] GetDataExchangeAttributes-Request,
        -- Shall not appear in minor version 1
exchangeData [81] IMPLICIT ExchangeData-Request,
        -- Shall not appear in minor version 1
defineAccessControlList [82] IMPLICIT DefineAccessControlList-Request,
        -- Shall not appear in minor version 1 or 2
getAccessControlListAttributes [83] IMPLICIT GetAccessControlListAttributes-Request,
        -- Shall not appear in minor version 1 or 2
reportAccessControlledObjects [84] IMPLICITReportAccessControlledObjects-Request,
        -- Shall not appear in minor version 1 or 2
deleteAccessControlList [85] IMPLICIT DeleteAccessControlList-Request,
        -- Shall not appear in minor version 1 or 2
changeAccessControl [86] IMPLICIT ChangeAccessControl-Request,
        -- Shall not appear in minor version 1 or 2
...,
reconfigureProgramInvocation [87] IMPLICIT ReconfigureProgramInvocation-Request
        -- Shall not appear in minor version 1 or 2
}

AdditionalService-Request ::= CHOICE {

VMDStop [0] IMPLICIT VMDStop-Request,
vMDReset [1] IMPLICIT VMDReset-Request,
select [2] IMPLICIT Select-Request,
alterPI [3] IMPLICIT AlterProgramInvocationAttributes-Request,
initiateUCLoad [4] IMPLICIT InitiateUnitControlLoad-Request,
uCLoad [5] IMPLICIT UnitControlLoadSegment-Request,
uCUpload [6] IMPLICIT UnitControlUpload-Request,
startUC [7] IMPLICIT StartUnitControl-Request,
stopUC [8] IMPLICIT StopUnitControl-Request,
createUC [9] IMPLICIT CreateUnitControl-Request,
addToUC [10] IMPLICIT AddToUnitControl-Request,
removeFromUC [11] IMPLICIT RemoveFromUnitControl-Request,
getUCAttributes [12] IMPLICIT GetUnitControlAttributes-Request,
loadUCFromFile [13] IMPLICIT LoadUnitControlFromFile-Request,
storeUCToFile [14] IMPLICIT StoreUnitControlToFile-Request,
deleteUC [15] IMPLICIT DeleteUnitControl-Request,
defineECL [16] IMPLICIT DefineEventConditionList-Request,
deleteECL [17] IMPLICIT DeleteEventConditionList-Request,
addECLReference [18] IMPLICIT AddEventConditionListReference-Request,
removeECLReference [19] IMPLICIT RemoveEventConditionListReference-Request,
getECLAttributes [20] IMPLICIT GetEventConditionListAttributes-Request,
reportECLStatus [21] IMPLICIT ReportEventConditionListStatus-Request,
alterECLMonitoring [22] IMPLICIT AlterEventConditionListMonitoring-Request
}

Request-Detail ::= CHOICE {

-- this choice shall be selected if the tag value of the
-- ConfirmedServiceRequest does not match any of the tags below

otherRequests NULL,
createProgramInvocation [38] IMPLICIT CS-CreateProgramInvocation-Request,
start [40] IMPLICIT CS-Start-Request,
resume [42] IMPLICIT CS-Resume-Request,
defineEventCondition [47] IMPLICIT CS-DefineEventCondition-Request,
alterEventConditionMonitoring [51] IMPLICIT CS-AlterEventConditionMonitoring-Request,
defineEventEnrollment [57] IMPLICIT CS-DefineEventEnrollment-Request,
alterEventEnrollment [59] IMPLICIT CS-AlterEventEnrollment-Request
}

Unconfirmed-PDU ::= SEQUENCE {

service UnconfirmedService,
...,
service-ext [79] Unconfirmed-Detail OPTIONAL
        -- shall not be transmitted if value is the value
        -- of a tagged type derived from NULL
}

UnconfirmedService ::= CHOICE {

informationReport [0] IMPLICIT InformationReport,
unsolicitedStatus [1] IMPLICIT UnsolicitedStatus,
eventNotification [2] IMPLICIT EventNotification
}

Unconfirmed-Detail ::= CHOICE {

        -- this choice shall be selected if the tag value of the
        -- UnconfirmedService does not match any of the tags below
otherRequests NULL,
eventNotification [2] IMPLICIT CS-EventNotification
}

Confirmed-ResponsePDU ::= SEQUENCE {

invokeID Unsigned32,
service ConfirmedServiceResponse,
...,
service-ext [79] Response-Detail OPTIONAL
        -- shall not be transmitted if value is the value
        -- of a tagged type derived from NULL
}

ConfirmedServiceResponse ::= CHOICE {

status [0] IMPLICIT Status-Response,
getNameList [1] IMPLICIT GetNameList-Response,
identify [2] IMPLICIT Identify-Response,
rename [3] IMPLICIT Rename-Response,
read [4] IMPLICIT Read-Response,
write [5] IMPLICIT Write-Response,
getVariableAccessAttributes [6] IMPLICIT GetVariableAccessAttributes-Response,
defineNamedVariable [7] IMPLICIT DefineNamedVariable-Response
        -- choice [8] is reserved for a service defined in Annex E
defineScatteredAccess [8] IMPLICIT DefineScatteredAccess-Response,
        -- choice [9] is reserved for a service defined in Annex E
getScatteredAccessAttributes [9] IMPLICIT GetScatteredAccessAttributes-Response,
deleteVariableAccess [10] IMPLICIT DeleteVariableAccess-Response,
defineNamedVariableList [11] IMPLICIT DefineNamedVariableList-Response,
getNamedVariableListAttributes [12] IMPLICITGetNamedVariableListAttributes-Response,
deleteNamedVariableList [13] IMPLICIT DeleteNamedVariableList-Response,
defineNamedType [14] IMPLICIT DefineNamedType-Response,
getNamedTypeAttributes [15] IMPLICIT GetNamedTypeAttributes-Response,
deleteNamedType [16] IMPLICIT DeleteNamedType-Response,
input [17] IMPLICIT Input-Response,
output [18] IMPLICIT Output-Response,
takeControl [19] TakeControl-Response,
relinquishControl [20] IMPLICIT RelinquishControl-Response,
defineSemaphore [21] IMPLICIT DefineSemaphore-Response,
deleteSemaphore [22] IMPLICIT DeleteSemaphore-Response,
reportSemaphoreStatus [23] IMPLICIT ReportSemaphoreStatus-Response,
reportPoolSemaphoreStatus [24] IMPLICIT ReportPoolSemaphoreStatus-Response,
reportSemaphoreEntryStatus [25] IMPLICIT ReportSemaphoreEntryStatus-Response,
initiateDownloadSequence [26] IMPLICIT InitiateDownloadSequence-Response,
downloadSegment [27] IMPLICIT DownloadSegment-Response,
terminateDownloadSequence [28] IMPLICIT TerminateDownloadSequence-Response,
initiateUploadSequence [29] IMPLICIT InitiateUploadSequence-Response,
uploadSegment [30] IMPLICIT UploadSegment-Response,
terminateUploadSequence [31] IMPLICIT TerminateUploadSequence-Response,
requestDomainDownload [32] IMPLICIT RequestDomainDownload-Response,
requestDomainUpload [33] IMPLICIT RequestDomainUpload-Response,
loadDomainContent [34] IMPLICIT LoadDomainContent-Response,
storeDomainContent [35] IMPLICIT StoreDomainContent-Response,
deleteDomain [36] IMPLICIT DeleteDomain-Response,
getDomainAttributes [37] IMPLICIT GetDomainAttributes-Response,
createProgramInvocation [38] IMPLICIT CreateProgramInvocation-Response,
deleteProgramInvocation [39] IMPLICIT DeleteProgramInvocation-Response,
start [40] IMPLICIT Start-Response,
stop [41] IMPLICIT Stop-Response,
resume [42] IMPLICIT Resume-Response,
reset [43] IMPLICIT Reset-Response,
kill [44] IMPLICIT Kill-Response,
getProgramInvocationAttributes [45] IMPLICIT GetProgramInvocationAttributes-Response,
obtainFile [46] IMPLICIT ObtainFile-Response,
defineEventCondition [47] IMPLICIT DefineEventCondition-Response,
deleteEventCondition [48] IMPLICIT DeleteEventCondition-Response,
getEventConditionAttributes [49] IMPLICIT GetEventConditionAttributes-Response,
reportEventConditionStatus [50] IMPLICIT ReportEventConditionStatus-Response,
alterEventConditionMonitoring [51] IMPLICIT AlterEventConditionMonitoring-Response,
triggerEvent [52] IMPLICIT TriggerEvent-Response,
defineEventAction [53] IMPLICIT DefineEventAction-Response,
deleteEventAction [54] IMPLICIT DeleteEventAction-Response,
getEventActionAttributes [55] IMPLICIT GetEventActionAttributes-Response,
reportEventActionStatus [56] IMPLICIT ReportEventActionStatus-Response,
defineEventEnrollment [57] IMPLICIT DefineEventEnrollment-Response,
deleteEventEnrollment [58] IMPLICIT DeleteEventEnrollment-Response,
alterEventEnrollment [59] IMPLICIT AlterEventEnrollment-Response,
reportEventEnrollmentStatus [60] IMPLICIT ReportEventEnrollmentStatus-Response,
getEventEnrollmentAttributes [61] IMPLICIT GetEventEnrollmentAttributes-Response,
acknowledgeEventNotification [62] IMPLICIT AcknowledgeEventNotification-Response,
getAlarmSummary [63] IMPLICIT GetAlarmSummary-Response,
getAlarmEnrollmentSummary [64] IMPLICIT GetAlarmEnrollmentSummary-Response,
readJournal [65] IMPLICIT ReadJournal-Response,
writeJournal [66] IMPLICIT WriteJournal-Response,
initializeJournal [67] IMPLICIT InitializeJournal-Response,
reportJournalStatus [68] IMPLICIT ReportJournalStatus-Response,
createJournal [69] IMPLICIT CreateJournal-Response,
deleteJournal [70] IMPLICIT DeleteJournal-Response,
getCapabilityList [71] IMPLICIT GetCapabilityList-Response,

-- choices [72] through [77] are reserved for use by services
-- defined in annex D

fileOpen [72] IMPLICIT FileOpen-Response,
fileRead [73] IMPLICIT FileRead-Response,
fileClose [74] IMPLICIT FileClose-Response,
fileRename [75] IMPLICIT FileRename-Response,
fileDelete [76] IMPLICIT FileDelete-Response,
fileDirectory [77] IMPLICIT FileDirectory-Response,
additionalService [78] AdditionalService-Response,

-- choice [79] is reserved

getDataExchangeAttributes [80] GetDataExchangeAttributes-Response,

-- Shall not appear in minor version 1

exchangeData [81] IMPLICIT ExchangeData-Response,

-- Shall not appear in minor version 1

defineAccessControlList [82] IMPLICIT DefineAccessControlList-Response,

-- Shall not appear in minor version 1 or 2

getAccessControlListAttributes [83] IMPLICIT GetAccessControlListAttributes-Response,

-- Shall not appear in minor version 1 or 2

reportAccessControlledObjects [84] IMPLICIT ReportAccessControlledObjects-Response,

-- Shall not appear in minor version 1 or 2

deleteAccessControlList [85] IMPLICIT DeleteAccessControlList-Response,

-- Shall not appear in minor version 1 or 2

changeAccessControl [86] IMPLICIT ChangeAccessControl-Response,

-- Shall not appear in minor version 1 or 2

...,
reconfigureProgramInvocation [87] IMPLICIT ReconfigureProgramInvocation-Response

-- Shall not appear in minor version 1 or 2

}

AdditionalService-Response ::= CHOICE {

vMDStop [0] IMPLICIT VMDStop-Response,
vMDReset [1] IMPLICIT VMDReset-Response,
select [2] IMPLICIT Select-Response,
alterPI [3] IMPLICIT AlterProgramInvocationAttributes-Response,
initiateUCLoad [4] IMPLICIT InitiateUnitControlLoad-Response,
uCLoad [5] IMPLICIT UnitControlLoadSegment-Response,
uCUpload [6] IMPLICIT UnitControlUpload-Response,
startUC [7] IMPLICIT StartUnitControl-Response,
stopUC [8] IMPLICIT StopUnitControl-Response,
createUC [9] IMPLICIT CreateUnitControl-Response,
addToUC [10] IMPLICIT AddToUnitControl-Response,
removeFromUC [11] IMPLICIT RemoveFromUnitControl-Response,
getUCAttributes [12] IMPLICIT GetUnitControlAttributes-Response,
loadUCFromFile [13] IMPLICIT LoadUnitControlFromFile-Response,
storeUCToFile [14] IMPLICIT StoreUnitControlToFile-Response,
deleteUC [15] IMPLICIT DeleteUnitControl-Response,
defineECL [16] IMPLICIT DefineEventConditionList-Response,
deleteECL [17] IMPLICIT DeleteEventConditionList-Response,
addECLReference [18] IMPLICIT AddEventConditionListReference-Response,
removeECLReference [19] IMPLICIT RemoveEventConditionListReference-Response,
getECLAttributes [20] IMPLICIT GetEventConditionListAttributes-Response,
reportECLStatus [21] IMPLICIT ReportEventConditionListStatus-Response,
alterECLMonitoring [22] IMPLICIT AlterEventConditionListMonitoring-Response
}

Response-Detail ::= CHOICE {

-- this choice shall be selected if the tag value of the
-- ConfirmedServiceResponse does not match any of the tags below
otherRequests NULL,

status [0] IMPLICIT CS-Status-Response,
getProgramInvocationAttributes [45] IMPLICIT CS-GetProgramInvocationAttributes-Response,
getEventConditionAttributes [49] IMPLICIT CS-GetEventConditionAttributes-Response
}

Confirmed-ErrorPDU ::= SEQUENCE {

invokeID [0] IMPLICIT Unsigned32,
modifierPosition [1] IMPLICIT Unsigned32 OPTIONAL,
serviceError [2] IMPLICIT ServiceError
}

ServiceError ::= SEQUENCE {

errorClass [0] CHOICE {
        vmd-state [0] IMPLICIT INTEGER { -- VMD-STATE,

other (0), -- OTHER
vmd-state-conflict (1), -- VMD-STATE-CONFLICT
vmd-operational-problem (2), -- VMD-OPERATIONAL-PROBLEM
domain-transfer-problem (3), -- DOMAIN-TRANSFER-PROBLEM
state-machine-id-invalid (4) -- STATE-MACHINE-ID-INVALID

                           },
        application-reference [1] IMPLICIT INTEGER { -- APPLICATION REFERENCE

other (0), -- OTHER
application-unreachable (1), -- APPLICATION-UNREACHABLE
connection-lost (2), -- CONNECTION-LOST
application-reference-invalid (3), -- APPLICATION-REFERENCE-INVALID
context-unsupported (4) -- CONTEXT-UNSUPPORTED

                           },
        definition [2] IMPLICIT INTEGER { -- DEFINITION

other (0), -- OTHER
object-undefined (1), -- OBJECT-UNDEFINED
invalid-address (2), -- INVALID-ADDRESS
type-unsupported (3), -- TYPE-UNSUPPORTED
type-inconsistent (4), -- TYPE-INCONSISTENT
object-exists (5), -- OBJECT-EXISTS
object-attribute-inconsistent (6) -- OBJECT-ATTRIBUTE-INCONSISTENT

                           },
        resource [3] IMPLICIT INTEGER { -- RESOURCE

other (0), -- OTHER
memory-unavailable (1), -- MEMORY-UNAVAILABLE
processor-resource-unavailable (2), -- PROCESSOR-RESOURCE-UNAVAILABLE
mass-storage-unavailable (3), -- MASS-STORAGE-UNAVAILABLE
capability-unavailable (4), -- CAPABILITY-UNAVAILABLE
capability-unknown (5) -- CAPABILITY-UNKNOWN

                           },
        service [4] IMPLICIT INTEGER { -- SERVICE

other (0), -- OTHER
primitives-out-of-sequence (1), -- PRIMITIVES-OUT-OF-SEQUENCE
object-state-conflict (2), -- OBJECT-STATE-CONFLICT

-- Value 3 reserved for further definition

continuation-invalid (4), -- CONTINUATION-INVALID
object-constraint-conflict (5) -- OBJECT-CONSTRAINT-CONFLICT

                           },
        service-preempt [5] IMPLICIT INTEGER { -- SERVICE-PREEMPT

other (0), -- OTHER
timeout (1), -- TIMEOUT
deadlock (2), -- DEADLOCK
cancel (3) -- CANCEL

                           },
        time-resolution [6] IMPLICIT INTEGER { -- TIME-RESOLUTION

other (0), -- OTHER
unsupportable-time-resolution (1) -- UNSUPPORTABLE-TIME-RESOLUTION

                           },
        access [7] IMPLICIT INTEGER { -- ACCESS

other (0), -- OTHER
object-access-unsupported (1), -- OBJECT-ACCESS-UNSUPPORTED
object-non-existent (2), -- OBJECT-NON-EXISTENT
object-access-denied (3), -- OBJECT-ACCESS-DENIED
object-invalidated (4) -- OBJECT-INVALIDATED

                           },
        initiate [8] IMPLICIT INTEGER { -- INITIATE

other (0), -- OTHER

-- Values 1 and 2 are reserved for further definition

max-services-outstanding-calling-insufficient (3),

-- MAX-SERVICES-OUTSTANDING-CALLING-INSUFFICIENT

max-services-outstanding-called-insufficient (4),

-- MAX-SERVICES-OUTSTANDING-CALLED-INSUFFICIENT

service-CBB-insufficient (5), -- SERVICE-CBB-INSUFFICIENT
parameter-CBB-insufficient (6), -- PARAMETER-CBB-INSUFFICIENT
nesting-level-insufficient (7) -- NESTING-LEVEL-INSUFFICIENT

                           },
        conclude [9] IMPLICIT INTEGER { -- CONCLUDE

other (0), -- OTHER
further-communication-required (1) -- FURTHER-COMMUNICATION-REQUIRED

                           },
        cancel [10] IMPLICIT INTEGER { -- CANCEL

other (0), -- OTHER
invoke-id-unknown (1), -- INVOKE-ID-UNKNOWN
cancel-not-possible (2) -- CANCEL-NOT-POSSIBLE

                           },
        file [11] IMPLICIT INTEGER { -- FILE

other (0), -- OTHER
filename-ambiguous (1), -- FILENAME-AMBIGUOUS
file-busy (2), -- FILE-BUSY
filename-syntax-error (3), -- FILENAME-SYNTAX-ERROR
content-type-invalid (4), -- CONTENT-TYPE-INVALID
position-invalid (5), -- POSITION-INVALID
file-access-denied (6), -- FILE-ACCESS-DENIED
file-non-existent (7), -- FILE-NON-EXISTENT
duplicate-filename (8), -- DUPLICATE-FILENAME
insufficient-space-in-filestore (9) -- INSUFFICIENT-SPACE-IN-FILESTORE

                           },
        others [12] IMPLICIT INTEGER -- OTHERS
        } ,
additionalCode [1] IMPLICIT INTEGER OPTIONAL,
additionalDescription [2] IMPLICIT VisibleString OPTIONAL,
serviceSpecificInfo [3] CHOICE {
        obtainFile [0] IMPLICIT ObtainFile-Error,
        start [1] IMPLICIT Start-Error,
        stop [2] IMPLICIT Stop-Error,
        resume [3] IMPLICIT Resume-Error,
        reset [4] IMPLICIT Reset-Error,
        deleteVariableAccess [5] IMPLICIT DeleteVariableAccess-Error,
        deleteNamedVariableList [6] IMPLICIT DeleteNamedVariableList-Error,
        deleteNamedType [7] IMPLICIT DeleteNamedType-Error,
        defineEventEnrollment-Error [8] DefineEventEnrollment-Error,

            -- [9] Reserved for use by annex D

        fileRename [9] IMPLICIT FileRename-Error,
        additionalService [10] AdditionalService-Error,
        changeAccessControl [11] IMPLICIT ChangeAccessControl-Error
        } OPTIONAL
}

AdditionalService-Error ::= CHOICE {

defineEcl [0] DefineEventConditionList-Error,
addECLReference [1] AddEventConditionListReference-Error,
removeECLReference [2] RemoveEventConditionListReference-Error,
initiateUC [3] InitiateUnitControl-Error,
startUC [4] IMPLICIT StartUnitControl-Error,
stopUC [5] IMPLICIT StopUnitControl-Error,
deleteUC [6] IMPLICIT DeleteUnitControl-Error,
loadUCFromFile [7] IMPLICIT LoadUnitControlFromFile-Error
}

TimeOfDay ::= OCTET STRING (SIZE(4|6))

BasicIdentifier ::= VisibleString ( FROM

("A"|"a"|"B"|"b"|"C"|"c"|"D"|"d"|"E"|"e"|"F"|"f"|
"G"|"g"|"H"|"h"|"I"|"i"|"J"|"j"|"K"|"k"|"L"|"l"|
"M"|"m"|"N"|"n"|"O"|"o"|"P"|"p"|"Q"|"q"|"R"|"r"|
"S"|"s"|"T"|"t"|"U"|"u"|"V"|"v"|"W"|"w"|"X"|"x"|
"Y"|"y"|"Z"|"z"|"$"|"_"|"0"|"1"|"2"|"3"|"4"|"5"|
"6"|"7"|"8"|"9") ) (SIZE(1..32))

LatinIdentifier ::= VisibleString ( FROM

("A"|"a"|"þ"|"?"|"þ"|""|"þ"|"?"|"þ"|"þ"|
"?"|"""|""|"?"|"?"|"?"|
"B"|"b"|"C"|"c"|"?"|"?"|"D"|"d"|
"E"|"e"|"þ"|"?"|""|"?"|"þ"|"?"|"þ"|"?"|"F"|"f"|
"G"|"g"|"H"|"h"|"I"|"i"|"þ"|""|"þ"|"¡"|"þ"|"?"|"þ"|"?"|
"J"|"j"|"K"|"k"|"L"|"l"|"þ"|"þ"|
"M"|"m"|"N"|"n"|"þ"|"þ"|
"O"|"o"|"þ"|"?"|"þ"|"¢"|"þ"|"""|"þ"|"þ"|"™"|"""|"þ"|"þ"|
"P"|"p"|"Q"|"q"|"R"|"r"|
"S"|"s"|"á"|"T"|"t"|"U"|"u"|"þ"|"—"|"þ"|"£"|"þ"|"–"|"?"|""|
"V"|"v"|"W"|"w"|"X"|"x"|
"Y"|"y"|"þ"|"þ"|"þ"|"þ"|"þ"|"þ"|"Z"|"z"|
"$"|"_"|"0"|"1"|"2"|"3"|"4"|"5"|
"6"|"7"|"8"|"9") ) (SIZE(1..32))

UnlimitedIdentifier ::= CHARACTER STRING (SIZE(1..32))

Identifier ::= CHOICE {

basic BasicIdentifier,
extended ExtendedIdentifier
}

ExtendedIdentifier ::= CHOICE {

latin [1] IMPLICIT LatinIdentifier,
unlimited UnlimitedIdentifier
}

Integer8 ::= INTEGER(-128..127) -- range -128 <= i <= 127

Integer16 ::= INTEGER(-32768..32767) -- range -32,768 <= i <= 32,767

Integer32 ::= INTEGER(-2147483648..2147483647) -- range -2**31 <= i < 2**31

Unsigned8 ::= INTEGER(0..127) -- range 0 <= i <= 127

Unsigned16 ::= INTEGER(0..32767) -- range 0 <= i <= 32767

Unsigned32 ::= INTEGER(0..2147483647) -- range 0 <= i <= 2**31 - 1

ObjectName ::= CHOICE {

vmd-specific CHOICE {
            basicVmd-specific [0] IMPLICIT BasicIdentifier,
            extndVMD-specific [3] ExtendedIdentifier
            },
domain-specific [1] IMPLICIT SEQUENCE {
            domainID Identifier,
            itemID Identifier
            },
aa-specific CHOICE {
            basicAA-specific [2] IMPLICIT BasicIdentifier,
            extndAA-specific [4] ExtendedIdentifier
            }
}

ObjectClass ::= CHOICE {

basicObjectClass [0] IMPLICIT INTEGER {
        namedVariable (0),

-- value 1 is reserved for definition in Annex E

        scatteredAccess (1),
        namedVariableList (2),
        namedType (3),
        semaphore (4),
        eventCondition (5),
        eventAction (6),
        eventEnrollment (7),
        journal (8),
        domain (9),
        programInvocation (10),
        operatorStation (11),
        dataExchange (12), -- Shall not appear in minor version 1
        accessControlList (13) -- Shall not appear in minor version 1 or 2
        },
...,
csObjectClass [1] IMPLICIT INTEGER {
        eventConditionList (0),
        unitControl (1) }
        }

MMSString ::= CHOICE {

basic VisibleString,
extended ExtendedString
}

ExtendedString ::= CHOICE {

latin ISO10646String,
unlimited CHARACTER STRING
}

ISO10646String ::=

BMPString (FROM ( Level1 INTERSECTION(BasicLatin UNION Latin-1Supplement)))

FileName ::= SEQUENCE OF GraphicString

Initiate-RequestPDU ::= SEQUENCE {

localDetailCalling [0] IMPLICIT Integer32 OPTIONAL,
proposedMaxServOutstandingCalling [1] IMPLICIT Integer16,
proposedMaxServOutstandingCalled [2] IMPLICIT Integer16,
proposedDataStructureNestingLevel [3] IMPLICIT Integer8 OPTIONAL,
initRequestDetail [4] IMPLICIT SEQUENCE {
        proposedVersionNumber [0] IMPLICIT Integer16,
        proposedParameterCBB [1] IMPLICIT ParameterSupportOptions,
        servicesSupportedCalling [2] IMPLICIT ServiceSupportOptions ,
        ...,
        additionalSupportedCalling [3] IMPLICIT AdditionalSupportOptions,
        additionalCBBSupportedCalling [4] IMPLICIT AdditionalCBBOptions,
        privilegeClassIdentityCalling [5] MMSString
        }
}

Initiate-ResponsePDU ::= SEQUENCE {

localDetailCalled [0] IMPLICIT Integer32 OPTIONAL,
negotiatedMaxServOutstandingCalling [1] IMPLICIT Integer16,
negotiatedMaxServOutstandingCalled [2] IMPLICIT Integer16,
negotiatedDataStructureNestingLevel [3] IMPLICIT Integer8 OPTIONAL,
initResponseDetail [4] IMPLICIT SEQUENCE {
        negotiatedVersionNumber [0] IMPLICIT Integer16,
        negotiatedParameterCBB [1] IMPLICIT ParameterSupportOptions,
        servicesSupportedCalled [2] IMPLICIT ServiceSupportOptions,
        ...,
        additionalSupportedCalled [3] IMPLICIT AdditionalSupportOptions,
        additionalCBBSupportedCalled [4] IMPLICIT AdditionalCBBOptions,
        privilegeClassIdentityCalled [5] MMSString
        }
}

Initiate-ErrorPDU ::= ServiceError

Conclude-RequestPDU ::= NULL

Conclude-ResponsePDU ::= NULL

Conclude-ErrorPDU ::= ServiceError

Cancel-RequestPDU ::= Unsigned32 -- originalInvokeID

Cancel-ResponsePDU ::= Unsigned32 -- originalInvokeID

Cancel-ErrorPDU ::= SEQUENCE {

originalInvokeID [0] IMPLICIT Unsigned32,
serviceError [1] IMPLICIT ServiceError
}

RejectPDU ::= SEQUENCE {

originalInvokeID [0] IMPLICIT Unsigned32 OPTIONAL,
rejectReason CHOICE {
        confirmed-requestPDU [1] IMPLICIT INTEGER { -- CONFIRMED-REQUESTPDU
                other (0), -- OTHER
                unrecognized-service (1), -- UNRECOGNIZED-SERVICE
                unrecognized-modifier (2), -- UNRECOGNIZED-MODIFIER
                invalid-invokeID (3), -- INVALID-INVOKEID
                invalid-argument (4), -- INVALID-ARGUMENT
                invalid-modifier (5), -- INVALID-MODIFIER
                max-serv-outstanding-exceeded (6),

-- MAX-SERV-OUTSTANDING-EXCEEDED
-- Value 7 reserved for further definition

                max-recursion-exceeded (8), -- MAX-RECURSION-EXCEEDED
                value-out-of-range (9) -- VALUE-OUT-OF-RANGE
                },
        confirmed-responsePDU [2] IMPLICIT INTEGER { --CONFIRMED-RESPONSEPDU
                other (0), -- OTHER
                unrecognized-service (1), -- UNRECOGNIZED-SERVICE
                invalid-invokeID (2), -- INVALID-INVOKEID
                invalid-result (3), -- INVALID-RESULT

-- Value 4 reserved for further definition

                max-recursion-exceeded (5), -- MAX-RECURSION-EXCEEDED
                value-out-of-range (6) -- VALUE-OUT-OF-RANGE
                },
        confirmed-errorPDU [3] IMPLICIT INTEGER { -- CONFIRMED-ERRORPDU
                other (0), -- OTHER
                unrecognized-service (1), -- UNRECOGNIZED-SERVICE
                invalid-invokeID (2), -- INVALID-INVOKEID
                invalid-serviceError (3), -- INVALID-SERVICEERROR
                value-out-of-range (4) -- VALUE-OUT-OF-RANGE
                },
        unconfirmedPDU [4] IMPLICIT INTEGER { -- UNCONFIRMEDPDU
                other (0), -- OTHER
                unrecognized-service (1), -- UNRECOGNIZED-SERVICE
                invalid-argument (2), -- INVALID-ARGUMENT
                max-recursion-exceeded (3), -- MAX-RECURSION-EXCEEDED
                value-out-of-range (4) -- VALUE-OUT-OF-RANGE
                },
        pdu-error [5] IMPLICIT INTEGER { -- PDU-ERROR
                unknown-pdu-type (0), -- UNKNOWN-PDU-TYPE
                invalid-pdu (1), -- INVALID-PDU
                illegal-acse-mapping (2) -- ILLEGAL-ACSE-MAPPING
                },
        cancel-requestPDU [6] IMPLICIT INTEGER { -- CANCEL-REQUESTPDU
                other (0), -- OTHER
                invalid-invokeID (1) -- INVALID-INVOKEID
                },
        cancel-responsePDU [7] IMPLICIT INTEGER { -- CANCEL-RESPONSEPDU
                other (0), -- OTHER
                invalid-invokeID (1) -- INVALID-INVOKEID
                },
        cancel-errorPDU [8] IMPLICIT INTEGER { -- CANCEL-ERRORPDU
                other (0), -- OTHER
                invalid-invokeID (1), -- INVALID-INVOKEID
                invalid-serviceError (2), -- INVALID-SERVICEERROR
                value-out-of-range (3) -- VALUE-OUT-OF-RANGE
                },
        conclude-requestPDU [9] IMPLICIT INTEGER { -- CONCLUDE-REQUESTPDU
                other (0), -- OTHER
                invalid-argument (1) -- INVALID-ARGUMENT
                },
        conclude-responsePDU [10] IMPLICIT INTEGER { -- CONCLUDE-RESPONSEPDU
                other (0), -- OTHER
                invalid-result (1) -- INVALID-RESULT
                },
        conclude-errorPDU [11] IMPLICIT INTEGER { -- CONCLUDE-ERRORPDU
                other (0), -- OTHER
                invalid-serviceError (1), -- INVALID-SERVICEERROR
                value-out-of-range (2) -- VALUE-OUT-OF-RANGE
                }
        }
}

DefineAccessControlList-Request ::= SEQUENCE {

accessControlListName [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        },
accessControlListElements [1] IMPLICIT SEQUENCE {
        readAccessCondition [0] AccessCondition OPTIONAL,
        storeAccessCondition [1] AccessCondition OPTIONAL,
        writeAccessCondition [2] AccessCondition OPTIONAL,
        loadAccessCondition [3] AccessCondition OPTIONAL,
        executeAccessCondition [4] AccessCondition OPTIONAL,
        deleteAccessCondition [5] AccessCondition OPTIONAL,
        editAccessCondition [6] AccessCondition OPTIONAL
        }
}

DefineAccessControlList-Response ::= NULL

GetAccessControlListAttributes-Request ::= CHOICE {

accessControlListName [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        },
vMD [1] IMPLICIT NULL,
namedObject [2] IMPLICIT SEQUENCE {
        objectClass [0] ObjectClass,
        objectName [1] ObjectName
        }
}

GetAccessControlListAttributes-Response ::= SEQUENCE {

name [0] Identifier, -- Access Control List name
accessControlListElements [1] IMPLICIT SEQUENCE {
        readAccessCondition [0] AccessCondition OPTIONAL,
        storeAccessCondition [1] AccessCondition OPTIONAL,
        writeAccessCondition [2] AccessCondition OPTIONAL,
        loadAccessCondition [3] AccessCondition OPTIONAL,
        executeAccessCondition [4] AccessCondition OPTIONAL,
        deleteAccessCondition [5] AccessCondition OPTIONAL,
        editAccessCondition [6] AccessCondition OPTIONAL
        },
vMDuse [2] IMPLICIT BOOLEAN,
references [3] IMPLICIT SEQUENCE OF SEQUENCE {
        objectClass [0] ObjectClass,
        objectCount [1] IMPLICIT INTEGER
        },
accessControlList [4] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        } OPTIONAL

-- shall be included if and only if
-- aco has been negotiated

}

ReportAccessControlledObjects-Request ::= SEQUENCE {

accessControlList [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        },
objectClass [1] ObjectClass,
continueAfter [2] ObjectName OPTIONAL
}

ReportAccessControlledObjects-Response ::= SEQUENCE {

listOfNames [0] IMPLICIT SEQUENCE OF ObjectName,
moreFollows [1] IMPLICIT BOOLEAN DEFAULT FALSE
}

DeleteAccessControlList-Request ::= Identifier

-- Name of Access Control List Object

DeleteAccessControlList-Response ::= NULL

ChangeAccessControl-Request ::= SEQUENCE {

scopeOfChange CHOICE {
        vMDOnly [0] IMPLICIT NULL,
        listOfObjects [1] IMPLICIT SEQUENCE {
                objectClass [0] ObjectClass,
                objectScope [1] CHOICE {
                        specific [0] IMPLICIT SEQUENCE OF ObjectName,

    -- SPECIFIC
    -- Names of the objects (of class objectClass)
    -- whose access is to be changed

                        aa-specific [1] IMPLICIT NULL, -- AA-SPECIFIC
                        domain [2] CHOICE {
                                basic BasicIdentifier,
                                extended ExtendedIdentifier
                        }, -- DOMAIN

        -- Name of the Domain whose elements
        -- are to be changed

                vmd [3] IMPLICIT NULL -- VMD
                }
        }
},
accessControlListName [2] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
}

-- name of the AccessControlList Object that contains
-- the conditions for access control

}

ChangeAccessControl-Response ::= SEQUENCE {

numberMatched [0] IMPLICIT Unsigned32,
numberChanged [1] IMPLICIT Unsigned32
}

ChangeAccessControl-Error ::= Unsigned32 -- numberChanged

StatusResponse ::= SEQUENCE {
        vmdLogicalStatus [0] IMPLICIT INTEGER {
                state-changes-allowed (0),
                no-state-changes-allowed (1),
                limited-services-permitted (2),
                support-services-allowed (3)
                },
        vmdPhysicalStatus [1] IMPLICIT INTEGER {
                operational (0),
                partially-operational (1),
                inoperable (2),
                needs-commissioning (3)
                },
localDetail [2] IMPLICIT BIT STRING (SIZE(0..128)) OPTIONAL

-- not to exceed 128 bits in length

}

CS-Status-Response ::= CHOICE {

full SEQUENCE {
        operationState [0] IMPLICIT OperationState,
        extendedStatus [1] IMPLICIT ExtendedStatus,
        extendedStatusMask [2] IMPLICIT ExtendedStatus DEFAULT '1111'B,
        selectedProgramInvocation CHOICE {
                programInvocation [3] CHOICE {
                        basic BasicIdentifier,
                        extended ExtendedIdentifier
                        },
                noneSelected [4] IMPLICIT NULL
                }
        },
null NULL
}

OperationState ::= INTEGER {

idle (0),
loaded (1),
ready (2),
executing (3),
motion-paused (4),
manualInterventionRequired (5)
}

ExtendedStatus ::= BIT STRING {

safetyInterlocksViolated (0),
anyPhysicalResourcePowerOn (1),
allPhysicalResourcesCalibrated (2),
localControl (3) }

Status-Request ::= BOOLEAN -- Extended Derivation

Status-Response ::= StatusResponse

UnsolicitedStatus ::= StatusResponse

GetNameList-Request ::= SEQUENCE {

objectClass [0] ObjectClass,
objectScope [1] CHOICE {
        vmdSpecific [0] IMPLICIT NULL,
        domainSpecific [1] CHOICE {
                basic BasicIdentifier,
                extended ExtendedIdentifier
                },
        aaSpecific [2] IMPLICIT NULL },
        continueAfter [2] CHOICE {
                basic BasicIdentifier,
                extended ExtendedIdentifier
        } OPTIONAL
}

GetNameList-Response ::= SEQUENCE {

listOfIdentifier [0] IMPLICIT SEQUENCE OF Identifier,
moreFollows [1] IMPLICIT BOOLEAN DEFAULT TRUE
}

Identify-Request ::= NULL

Identify-Response ::= SEQUENCE {

vendorName CHOICE {
        basic [0] IMPLICIT VisibleString,
        extended [4] IMPLICIT ExtendedString
        },
modelName CHOICE {
        basic [1] IMPLICIT VisibleString,
        extended [5] IMPLICIT ExtendedString
        },
revision CHOICE {
        basic [2] IMPLICIT VisibleString,
        extended [7] IMPLICIT ExtendedString
        },
listOfAbstractSyntaxes [3] IMPLICIT SEQUENCE OF OBJECT IDENTIFIER OPTIONAL
}

Rename-Request ::= SEQUENCE {

objectClass [0] ObjectClass,
currentName [1] ObjectName,
newIdentifier [2] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        }
}

Rename-Response ::= NULL

GetCapabilityList-Request ::= SEQUENCE {

continueAfter MMSString OPTIONAL
}

GetCapabilityList-Response ::= SEQUENCE {

listOfCapabilities [0] IMPLICIT SEQUENCE OF MMSString,
moreFollows [1] IMPLICIT BOOLEAN DEFAULT TRUE
}

VMDStop-Request ::= NULL

VMDStop-Response ::= NULL

VMDReset-Request ::= BOOLEAN -- Extended Derivation

VMDReset-Response ::= StatusResponse

InitiateDownloadSequence-Request ::= SEQUENCE {

domainName [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        },
listOfCapabilities [1] IMPLICIT SEQUENCE OF MMSString,
sharable [2] IMPLICIT BOOLEAN
}

InitiateDownloadSequence-Response ::= NULL

DownloadSegment-Request ::= Identifier -- Domain Name

DownloadSegment-Response ::= SEQUENCE {

loadData LoadData,
moreFollows [1] IMPLICIT BOOLEAN DEFAULT TRUE
}

LoadData ::= CHOICE {

non-coded [0] IMPLICIT OCTET STRING,
coded EXTERNAL,
embedded EMBEDDED PDV
}

TerminateDownloadSequence-Request ::= SEQUENCE {

domainName [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        },
discard [1] IMPLICIT ServiceError OPTIONAL
}

TerminateDownloadSequence-Response ::= NULL

InitiateUploadSequence-Request ::= Identifier -- Domain Name

InitiateUploadSequence-Response ::= SEQUENCE {

ulsmID [0] IMPLICIT Integer32,
listOfCapabilities [1] IMPLICIT SEQUENCE OF MMSString
}

UploadSegment-Request ::= Integer32 -- ULSM ID

UploadSegment-Response ::= SEQUENCE {

loadData LoadData,
moreFollows [1] IMPLICIT BOOLEAN DEFAULT TRUE
}

TerminateUploadSequence-Request ::= Integer32 -- ULSM ID

TerminateUploadSequence-Response ::= NULL

RequestDomainDownload-Request ::= SEQUENCE {

domainName [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        },
listOfCapabilities [1] IMPLICIT SEQUENCE OF MMSString OPTIONAL,
sharable [2] IMPLICIT BOOLEAN,
fileName [4] IMPLICIT FileName
}

RequestDomainDownload-Response ::= NULL

RequestDomainUpload-Request ::= SEQUENCE {

domainName [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        },
fileName [1] IMPLICIT FileName
}

RequestDomainUpload-Response ::= NULL

LoadDomainContent-Request ::= SEQUENCE {

domainName [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        },
listOfCapabilities [1] IMPLICIT SEQUENCE OF MMSString OPTIONAL,
sharable [2] IMPLICIT BOOLEAN,
fileName [4] IMPLICIT FileName,
thirdParty [5] IMPLICIT ApplicationReference OPTIONAL
-- TPY
}

LoadDomainContent-Response ::= NULL

StoreDomainContent-Request ::= SEQUENCE {

domainName [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        },
fileName [1] IMPLICIT FileName,
thirdParty [2] IMPLICIT ApplicationReference OPTIONAL
-- TPY
}

StoreDomainContent-Response ::= NULL

DeleteDomain-Request ::= Identifier -- Domain Name

DeleteDomain-Response ::= NULL

GetDomainAttributes-Request ::= Identifier -- Domain Name

GetDomainAttributes-Response ::= SEQUENCE {

listOfCapabilities [0] IMPLICIT SEQUENCE OF MMSString,
state [1] IMPLICIT DomainState,
mmsDeletable [2] IMPLICIT BOOLEAN,
sharable [3] IMPLICIT BOOLEAN,
listOfProgramInvocations [4] IMPLICIT SEQUENCE OF Identifier,

-- Program Invocation Names

uploadInProgress [5] IMPLICIT Integer8,
accessControlList [6] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        } OPTIONAL

-- Shall not appear in minor version one or two

}

CreateProgramInvocation-Request ::= SEQUENCE {

programInvocationName [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        },
listOfDomainNames [1] IMPLICIT SEQUENCE OF Identifier,
reusable [2] IMPLICIT BOOLEAN DEFAULT TRUE,
monitorType [3] IMPLICIT BOOLEAN OPTIONAL

-- TRUE indicates PERMANENT monitoring,
-- FALSE indicates CURRENT monitoring

}

CreateProgramInvocation-Response ::= NULL

CS-CreateProgramInvocation-Request ::= INTEGER {

normal (0),
controlling (1),
controlled (2)
}

DeleteProgramInvocation-Request ::= Identifier

-- Program Invocation Name

DeleteProgramInvocation-Response ::= NULL

Start-Request ::= SEQUENCE {

programInvocationName [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        },
executionArgument CHOICE {
        simpleString [1] IMPLICIT MMSString,
        encodedString EXTERNAL,
        embeddedString EMBEDDED PDV
        } OPTIONAL
}

Start-Response ::= NULL

Start-Error ::= ProgramInvocationState

CS-Start-Request ::= [0] CHOICE {

normal NULL,
controlling SEQUENCE {
        startLocation [0] MMSString OPTIONAL,
        startCount [1] StartCount DEFAULT cycleCount: 1
        }
}

StartCount ::= CHOICE {

noLimit [0] IMPLICIT NULL,
cycleCount [1] IMPLICIT INTEGER,
stepCount [2] IMPLICIT INTEGER
}+

Stop-Request ::= SEQUENCE {

programInvocationName [0] CHOICE {
        basic BasicIdentifier,
        extended ExtendedIdentifier
        }
}

Stop-Response ::= NULL

Stop-Error ::= ProgramInvocationState

Resume-Request ::= SEQUENCE {

programInvocationName [0] CHOICE {