IV. ASN.1-спецификация протокола взаимодействия ТС ОРМ и ПУ ОРМ

IV. ASN.1-спецификация протокола взаимодействия

ТС ОРМ и ПУ ОРМ

CONTROL-MESSAGES DEFINITIONS IMPLICIT TAGS ::=

BEGIN

IMPORTS MachineID,

CellID,

MailID,

ObjectUNI,

DateAndTime,

LogicalOperation,

PostUNIItem,

PostItem,

ModuleId

FROM SORM-TYPES;

ControlMessage ::= CHOICE {

auth-request [0] AuthenticateSorm, --

команда аутентификации ПУ ОРМ на ТС ОРМ

auth-response [1] AuthenticateSormResponse, --

ответ на команду аутентификации

heartbeat [2] ChannelHeartbeat, --

команда проверки связи ПУ ОРМ с ТС ОРМ

heartbeat-response [3] ChannelHeartbeatResponse, --

ответ на команду проверки связи ПУ ОРМ с ТС ОРМ

get-time [4] GetSormTime, --

команда запроса времени ТС ОРМ

get-time-response [5] GetSormTimeResponse, --

ответ на команду запроса времени ТС ОРМ

set-time [6] SetSormTime, --

команда коррекции времени ТС ОРМ

set-time-response [7] SetSormTimeResponse, --

ответ на команду коррекции времени ТС ОРМ

start-transfer [8] StartDataTransfer, --

команда начала ввода данных с ТС ОРМ на ПУ ОРМ

start-transfer-response [9] StartDataTransferResponse, --

ответ на команду начала ввода данных с ТС ОРМ на ПУ ОРМ

stop-transfer [10] StopDataTransfer, --

команда окончания ввода данных с ТС ОРМ на ПУ ОРМ

stop-transfer-response [11] StopDataTransferResponse, --

ответ на команду окончания ввода данных с ТС ОРМ на ПУ ОРМ

create-uni [12] CreateUNI, --

команда постановки объекта на контроль

create-uni-response [13] CreateUNIResponse, --

ответ на команду постановки объекта на контроль

drop-uni [14] DropUNI, --

команда снятия объекта с контроля

drop-uni-response [15] DropUNIResponse, --

ответ на команду снятия объекта с контроля

force-uni-command [16] ForceUNIMailItemCommand, --

команда принудительного отбора отправления

force-uni-command-response [17] ForceUNIMailItemCommandResponse, --

ответ на команду принудительного отбора отправления

match-uni-notification [18] MatchUNINotification, --

извещение о срабатывании ОК для отправления

match-uni-notification-ack [19] MatchUNINotificationAck, --

подтверждение о срабатывании ОК для отправления

cancel-item-segregation [20] CancelItemSegregation, --

команда отмены решения об смене ячейки сортировки

cancel-item-segregation-ack [21] CancelItemSegregationAck, --

подтверждение команды отмены решения об смене ячейки сортировки

send-encoded-image [22] SendEncodedImage, --

команда отправки на ТС ОРМ результатов видеокодирования изображения

оператором

send-encoded-image-response [23] SendEncodedImageResponse, --

ответ на команду отправки результатов видеокодирования

segregated-item-notification [24] SegregatedMailNotification, --

извещение о завершении сортировки отправления с измененной ячейкой назначения

segregated-item-notification-ack [25] SegregatedMailNotificationAck, --

подтверждение извещения о завершении сортировки отправления с измененной

ячейкой назначения

trap [26] Trap,

trap-ack [27] TrapAck

}

AuthenticateSorm ::= SEQUENCE {

user-name UTF8String (SIZE (1..64)), -- пользователь ТС ОРМ в СО

user-password OCTET STRING (SIZE(8)) -- пользовательский пароль

}

AuthenticateSormResponse ::= BOOLEAN -- признак успешности аутентификации

ChannelHeartbeat ::= NULL

ChannelHeartbeatResponse ::= NULL

StartDataTransfer ::= NULL

StartDataTransferResponse ::= BOOLEAN -- признак успешности приема команды

начала ввода данных

StopDataTransfer ::= NULL

StopDataTransferResponse ::= BOOLEAN -- признак успешности приема команды

окончания ввода данных

GetSormTime ::= NULL

GetSormTimeResponse ::= DateAndTime

SetSormTime ::= DateAndTime

SetSormTimeResponse ::= BOOLEAN -- признак успешности коррекции времени на

всех блоках ТС ОРМ

CreateUNI ::= CHOICE {

uni-text [0] UNITextObject, -- контроль по распознанной текстовой

информации

uni-stamp [1] UNIStampObject, -- контроль по образцу штемпеля организации

uni-handwrite-sample [2] UNIHandwriteSample

}

UNITextObject ::= SEQUENCE {

machine-ids SEQUENCE OF MachineID, -- идентификатор

подключенной к ТС ОРМ СО

uni-criteria SEQUENCE OF UNITextParameter -- критерии отбора для объекта

}

UNITextParameter ::= CHOICE {

separator [0] LogicalOperation, -- логический оператор связки

find-mask [1] UNIRequestedTextIdentifiers -- параметр запроса

}

UNIRequestedTextIdentifiers ::= SEQUENCE {

uni-criteria PostUNIItem, -- критерий в

записи об отправлении для контроля

mispelling-distance INTEGER (1..10) OPTIONAL -- количество

ошибок ввода, заполняется для строковых критериев

}

UNIStampObject ::= SEQUENCE {

machine-ids SEQUENCE OF MachineID,

stamp-data SEQUENCE OF StampData -- образцы штемпеля

организации в различных разрешениях

}

StampData ::= SEQUENCE {

resolution-dpi INTEGER (0 .. 1000),

stamp-data OCTET STRING -- образец штемпеля

}

UNIHandwriteSample ::= SEQUENCE {

resolution-dpi INTEGER (0 .. 1000),

sample OCTET STRING -- образец почерка

}

CreateUNIResponse ::= SEQUENCE {

uni-created ObjectUNI,

machine-id MachineID, -- идентификатор СО, на которую установлен объект

uni-successful BOOLEAN,

-- признак успешной постановки объекта на контроль

uni-error-description UTF8String (SIZE (1 .. 256)) OPTIONAL --

краткое описание ошибки, если обнаружена

}

DropUNI ::= ObjectUNI --- идентификатор объекта для снятия с контроля

DropUNIResponse ::= SEQUENCE {

uni-dropped ObjectUNI,

uni-successful BOOLEAN, ---

признак успешного снятия объекта с контроля

uni-error-description UTF8String (SIZE (1 .. 256)) OPTIONAL ---

краткое описание ошибки, если обнаружена

}

ForceUNIMailItemCommand ::= MailID

ForceUNIMailItemCommandResponse ::= SEQUENCE {

mail-id MailID, -- идентификатор принудительно отобранного отправления

cell-id CellID, -- идентификатор выделенной ячейки для

целей ОРМ на СО, в которую сортируется отправление

successful BOOLEAN, -- признак успешной передачи команды

принудительного отбора на СО

error-description UTF8String (SIZE (1 .. 256)) OPTIONAL --- краткое

описание ошибки, если обнаружена

}

MatchUNINotification ::= SEQUENCE {

mail-id MailID,

matched-unis SEQUENCE OF ObjectUNI

}

MatchUNINotificationAck ::= NULL

CancelItemSegregation ::= MailID

CancelItemSegregationAck ::= SEQUENCE {

result BOOLEAN -- true - ПО еще не было отобрано, false

- ПО уже было отобрано

}

SendEncodedImage ::= SEQUENCE {

mail-id MailID, -- идентификатор почтового отправления

post-item PostItem, -- введенная оператором при

видеокодировании изображения информация

additional-data SEQUENCE OF AdditionalEncodedData OPTIONAL --

дополнительная полученная при видеокодировании текстовая информация по

поверхностям отправлений

}

AdditionalEncodedData ::= UTF8String (SIZE (1 .. 512))

SendEncodedImageResponse ::= NULL

SegregatedMailNotification ::= SEQUENCE {

mail-id MailID, -- идентификатор почтового

отправления для которого изменяется ячейка сортировки

last-time DateAndTime, -- дата и время завершения

сортировки отправления с измененной ячейкой назначения

matched-unis SEQUENCE OF ObjectUNI -- список объектов контроля, в

соответствии с которыми был произведен отбор

}

SegregatedMailNotificationAck ::= NULL

Trap ::= SEQUENCE {

module-id ModuleId,

description UTF8String (SIZE (1 .. 1024))

}

TrapAck ::= NULL

END

DATA-MESSAGES DEFINITIONS IMPLICIT TAGS ::=

BEGIN

IMPORTS MachineID,

MailID,

PostItem

FROM

SORM-TYPES;

DataMessage ::= CHOICE {

request [0] SormDataBlock,

response [1] SormDataBlockAck

}

SormDataBlock ::= SEQUENCE {

last-time DateAndTime, -- дата и время формирования изображения на

оборудовании СО

mail-type ENUMERATED {

mail (0), -- конверт

flat (1), -- flat

mail-parcel (2) -- посылка

},

mail-id MailID, -- идентификатор почтового отправления

direction Direction, -- направление следования ПО

mail-item-images MailItemImages, -- изображения поверхностей

почтового отправления, полученные на СО

post-item PostItem, -- результат распознавания

изображений отправления на ТС ОРМ

ocr-status OCRStatus -- статус распознавания на ТС ОРМ

}

Direction ::= ENUMERATED {

in-zone (0), -- направление в зоне обслуживания

out-zone (1) -- направление из зоны обслуживания

}

OCRStatus ::= ENUMERATED {

not-recognized (0), -- изображения сторон ПО не распознаны

partially-recognized (1), -- изображения сторон ПО частично распознаны

(требуется видеокодирование)

full-recognized (2) -- изображения сторон ПО полностью распознаны

}

MailItemImages ::= SEQUENCE {

side-0 [0] OCTET STRING OPTIONAL, -- изображение лицевой стороны

отправления

side-1 [1] OCTET STRING OPTIONAL, -- изображение обратной стороны

отправления

side-2 [2] OCTET STRING OPTIONAL, -- изображение боковой стороны

отправления (для посылок)

side-3 [3] OCTET STRING OPTIONAL -- изображение еще стороны

отправления

}

SormDataBlockAck ::= NULL

END

MANAGEMENT-MESSAGES DEFINITIONS IMPLICIT TAGS ::=

BEGIN

EXPORTS ManagementMessage;

IMPORTS ModuleId

FROM SORM-TYPES;

ManagementMessage ::= CHOICE {

request [0] ManagementRequest,

response [1] ManagementResponse

}

--- тип сообщения "команда управления ТС СОРМ"

ManagementRequest ::= CHOICE {

get-structure [0] GetStructureRequest, ---

запрос на получение структуры ТС ОРМ - КТС и модулей СПО

get-module-config [1] GetModuleConfigRequest, ---

запрос на получение конфигурации КТС/модуля СПО

set-module-config [2] SetModuleConfigRequest, ---

запрос на изменение конфигурации КТС/модуля СПО

check-module [3] CheckModuleRequest, ---

запрос на получение состояния модуля

get-module-types [4] GetModuleTypesRequest ---

запрос на получение типов модулей КТС и СПО

}

--- запрос на получение структуры ТС ОРМ - КТС и модулей СПО

GetStructureRequest ::= NULL

--- запрос на получение конфигурации КТС/модуля СПО

GetModuleConfigRequest::= CHOICE {

hw-modules-list [0] RequestedHardwareModules, ---

перечень идентификаторов узлов КТС ТС ОРМ

sw-modules-list [1] RequestedSoftwareModules ---

перечень идентификаторов модулей СПО ТС ОРМ

}

RequestedHardwareModules ::= SEQUENCE OF ModuleId --- перечень

идентификаторов узлов КТС ТС ОРМ

RequestedSoftwareModules ::= SEQUENCE OF ModuleId --- перечень

идентификаторов модулей СПО ТС ОРМ

--- запрос на изменение конфигурации КТС/модуля СПО

SetModuleConfigRequest::= SEQUENCE {

module-id ModuleId, --- идентификатор конфигурируемого модуля

module-config ConfiguratedModule --- устанавливаемая в модуль конфигурация

}

ConfiguratedModule ::= CHOICE {

sw-module [0] SormSoftwareModule, --- для узла КТС

hw-module [1] SormHardwareModule --- для узла СПО

}

--- запрос на получение состояния модуля

CheckModuleRequest::= RequestedModulesList

RequestedModulesList ::= CHOICE {

sw-modules [0] RequestedHardwareModules, ---

идентификаторы узлов КТС, для которых запрашивается состояние

hw-modules [1] RequestedSoftwareModules ---

идентификаторы модулей ТС ОРМ, для которых запрашивается состояние

}

--- запрос на получение типов модулей КТС и СПО

GetModuleTypesRequest ::= NULL

--- параметр модуля

ModuleParameter ::= SEQUENCE {

parameter-name UTF8String (SIZE (1 .. 256)), --- наименование параметра

read-only BOOLEAN, --- контролируемый или измеряемый параметр

parameter-value ParameterValue --- значение параметра

}

--- варианты значений параметров

ParameterValue ::= CHOICE {

string [0] UTF8String (SIZE (1 .. 256)),

integer [1] INTEGER (0 .. 999999999),

boolean [2] BOOLEAN

}

ModuleParameters ::= SEQUENCE OF ModuleParameter

SormSoftwareModule ::= SEQUENCE {

module-id ModuleId, --- уникальный идентификатор данного модуля

hardware-module-id ModuleId, --- идентификатор КТС, на котором работает

данный блок модуля СПО

block-name INTEGER (0 .. 1024), --- номер блока СПО модуля

module-name UTF8String (SIZE (1 .. 512)), --- наименование модуля

module-type INTEGER (1 .. 512), --- идентификатор типа модуля

module-parameters ModuleParameters, --- список параметров модуля

sub-modules-list SubmodulesList OPTIONAL --- субмодули

}

SubmodulesList ::= SEQUENCE OF SormSoftwareModule

SormHardwareModule ::= SEQUENCE {

module-id ModuleId, --- уникальный идентификатор данного модуля

block-name INTEGER (0 .. 1024), --- номер блока КТС

module-name UTF8String (SIZE (1 .. 512)), --- наименование модуля

module-parameters HwParameterGroups --- значение группы параметров КТС

}

HwParameterGroup ::= SEQUENCE {

group-name UTF8String (SIZE (1 .. 512)), --- наименование

группы параметров для КТС

module-parameters ModuleParameters --- перечень параметров для КТС

}

HwParameterGroups ::= SEQUENCE OF HwParameterGroup

SormSoftwareModules ::= SEQUENCE OF SormSoftwareModule

SormHardwareModules ::= SEQUENCE OF SormHardwareModule

--- тип сообщения "ответ на команду управления ТС ОРМ"

ManagementResponse ::= CHOICE {

get-structure [0] GetStructureResponse, ---

ответ на запрос получения структуры ТС ОРМ - КТС и модулей СПО

get-module-config [1] GetModuleConfigResponse, --- ответ на

запрос получения конфигурации КТС/модуля СПО

set-module-config [2] SetModuleConfigResponse, --- ответ на

запрос изменения конфигурации КТС/модуля СПО

check-module [3] CheckModuleResponse, ---

ответ на запрос получения состояния модуля

get-module-types [4] GetModuleTypesResponse ---

ответ на запрос получения типов модулей КТС и СПО

}

--- ответ на запрос получения структуры ТС ОРМ - КТС и модулей СПО

GetStructureResponse ::= SEQUENCE {

sw-modules SormHardwareModules, --- перечень всех узлов КТС

hw-modules SormSoftwareModules --- перечень всех модулей СПО ТС ОРМ

}

--- ответ на запрос получения конфигурации КТС/модуля СПО

GetModuleConfigResponse ::= SEQUENCE {

sw-modules SormHardwareModules, --- конфигурации запрошенных узлов КТС

hw-modules SormSoftwareModules --- конфигурации запрошенных модулей СПО

ТС ОРМ

}

--- отчет на запрос изменения конфигурации КТС/модуля СПО

SetModuleConfigResponse::= ConfiguratedModule ---

установленная в модуль конфигурация

--- ответ на запрос получения состояния модуля

CheckModuleResponse ::= CHOICE {

hw-modules [0] SormHardwareModules, ---

текущее состояние запрошенных модулей СПО ТС ОРМ

sw-modules [1] SormSoftwareModules ---

текущее состояние запрошенных узлов КТС

}

--- ответ на запрос получения типов модулей КТС и СПО

GetModuleTypesResponse ::= SEQUENCE OF ModuleType

ModuleType ::= SEQUENCE {

module-type INTEGER (1 .. 512), --- идентификатор типа модуля

type-description UTF8String (SIZE (1 .. 128)) --- расшифровка типа модуля

}

END

POST-TYPES DEFINITIONS IMPLICIT TAGS ::=

BEGIN

EXPORTS

PostItem,

PostUNIItem;

PostUNIItem ::= CHOICE {

sender-info [0] UTF8String (SIZE (1 .. 1024)), -- информация об отправителе

receiver-info [1] UTF8String (SIZE (1 .. 1024)), -- информация об адресате

почтового отправления

sender-address [4] UNIAddress, -- адрес доставки отправления

receiver-address [5] UNIAddress, -- адрес доставки отправления

post-description [6] UTF8String (SIZE (1 .. 1024)) -- заявленное

описание содержимого отправления

}

UNIAddress ::= CHOICE {

structured-address [0] UNIStructuredAddress,

country-code [1] UTF8String (SIZE (1 .. 3)),

index [2] UTF8String (SIZE (1 .. 12)),

unstructured-address [3] UTF8String (SIZE (1 .. 1024))

}

UNIStructuredAddress ::= CHOICE {

country [0] UTF8String (SIZE (1 .. 128)), --- страна

region [1] UTF8String (SIZE (1 .. 128)), --- область

zone [2] UTF8String (SIZE (1 .. 128)), --- район, муниципальный округ

city [3] UTF8String (SIZE (1 .. 128)), ---

город, поселок, деревня

street [4] UTF8String (SIZE (1 .. 128)), --- улица

building [5] UTF8String (SIZE (1 .. 128)), --- дом, строение

build-sect [6] UTF8String (SIZE (1 .. 128)), --- корпус

apartment [7] UTF8String (SIZE (1 .. 128)), --- квартира, офис

priv-box [8] UTF8String (SIZE (1 .. 128)), --- абонентный почтовый

ящик получателя

acc-addr [9] UTF8String (SIZE (1 .. 128)) --- адрес "до востребования"

получателя

}

PostItem ::= SEQUENCE {

receiver-info [0] UTF8String (SIZE (1..1024)) OPTIONAL, -- получатель ПО

receiver-address [1] PostAddress OPTIONAL, -- адрес получателя

sender-info [2] UTF8String (SIZE (1..1024)) OPTIONAL, -- отправитель ПО

sender-address [3] PostAddress OPTIONAL, -- адрес отправителя

post-info [4] PostInfo OPTIONAL, -- характеристики отправления

probability INTEGER (0 .. 100) OPTIONAL -- вероятность

распознавания данных

}

PostAddress ::= SEQUENCE {

country-code UTF8String (SIZE (1..3)), --

название страны получателя в соответствии с ISO-3166-1

index [0] UTF8String (SIZE (1..12)) OPTIONAL, -- индекс

отделения почтовой связи

unstruct-address [1] UTF8String (SIZE (1..1024)) OPTIONAL,

struct-address [2] PostAddressStructData OPTIONAL

-- адресные данные

}

-- характеристики отправления

PostInfo ::= SEQUENCE {

post-weight [0] UTF8String (SIZE (1 .. 128)) OPTIONAL, -- вес

почтового отправления

post-cost [1] UTF8String (SIZE (1 .. 10)) OPTIONAL, --

объявленная стоимость отправления

post-description [2] UTF8String (SIZE (1 .. 1024)) OPTIONAL --

заявленное описание содержимого отправления

}

PostAddressStructData ::= SEQUENCE {

country [0] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- страна

region [1] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- область

zone [2] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- район,

муниципальный округ

city [3] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- город,

поселок, деревня

street [4] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- улица

building [5] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- дом, строение

build-sect [6] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- корпус

apartment [7] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- квартира, офис

priv-box [8] UTF8String (SIZE (1 .. 128)) OPTIONAL, --- абонентный

почтовый ящик получателя

acc-addr [9] UTF8String (SIZE (1 .. 128)) OPTIONAL --- адрес "до

востребования" получателя

}

END

SORM-MESSAGES DEFINITIONS IMPLICIT TAGS ::=

BEGIN

IMPORTS MessageID,

DateAndTime

FROM SORM-TYPES

ControlMessage

FROM CONTROL-MESSAGES

DataMessage

FROM DATA-MESSAGES

ManagementMessage

FROM MANAGEMENT-MESSAGES;

Message ::= SEQUENCE {

message-time DateAndTime, -- время и дата сообщения (формируется

отправителем)

message-id MessageID, -- циклический номер сообщения, формируемый

отправителем, действующий на протяжении сетевого соединения

data Data -- блок данных

}

Data ::= CHOICE {

control-message [0] ControlMessage, -- блок канала управления

data-message [1] DataMessage, -- блок канала данных

management-message [2] ManagementMessage -- блок канала

мониторинга

}

END

SORM-TYPES DEFINITIONS IMPLICIT TAGS ::=

BEGIN

EXPORTS MachineID,

CellID,

MailID,

ObjectUNI,

MessageID,

DateAndTime,

ModuleId,

LogicalOperation;

MachineID ::= UTF8String (SIZE (1..10)) -- идентификатор СО, подключенной к

ТС ОРМ

MailID ::= SEQUENCE {

machine-id MachineID, -- идентификатор СО, выполняющей обработку отправления

stamp-id [0] UTF8String (SIZE (1..128)) OPTIONAL, -- идентификатор

почтового отправления

track-num [1] UTF8String (SIZE (1..128)) OPTIONAL -- ШПИ почтового

отправления

}

CellID ::= UTF8String (SIZE (1..64)) -- идентификатор ячейки для сортировки

ObjectUNI ::= INTEGER (0 .. 4294967295) -- идентификатор объекта контроля

MessageID :: = INTEGER (0 .. 4294967295)

DateAndTime ::= UTCTime

--- уникальный идентификатор КТС/модуля СПО ТС ОРМ

ModuleId ::= OCTET STRING (SIZE (8))

LogicalOperation ::= ENUMERATED {

operation-open-bracket (0), -- открывающая скобка - "("

operation-close-bracket (1), -- закрывающая скобка - ")"

operation-or (2), -- логическое "или"

operation-and (3), -- логическое "и"

operation-not (4) -- логическое "не"

}

END