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

MAIL-MESSAGES DEFINITIONS IMPLICIT TAGS ::=

BEGIN

EXPORTS;

Message ::= SEQUENCE {

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

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

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

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

сетевого соединения

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

}

Data ::= CHOICE {

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

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

}

ControlMessage ::= CHOICE {

auth-request [0] AuthenticateSorm, -- команда аутентификации ТС ОРМ на СО

auth-response [1] AuthenticateSormResponse, -- ответ на команду

аутентификации

heartbeat [2] ChannelHeartbeat, -- команда проверки связи ТС ОРМ с СО

heartbeat-response [3] ChannelHeartbeatResponse, -- ответ на команду

проверки связи ТС ОРМ с СО

start-transfer [4] StartDataTransfer, -- команда начала ввода данных СО на

ТС ОРМ

start-transfer-response [5] StartDataTransferResponse, -- ответ на

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

stop-transfer [6] StopDataTransfer, -- команда окончания ввода данных СО

на ТС ОРМ

stop-transfer-response [7] StopDataTransferResponse, -- ответ на команду

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

segregate-mail-item [8] SegregateMailItem, -- команда назначения ячейки

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

segregate-mail-item-resp [9] SegregateMailItemResponse, -- ответ на

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

cancel-item-segregation [10] CancelitemSegregation, -- команда отмены

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

cancel-item-segregation-resp [11] CancelItemSegregationAck, -- ответ на

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

mail-stat-command [12] GetLostMailStatistic, -- команда запроса количества

почтовых отправлений, информация по которым

не была передана СО на ТС ОРМ

mail-stat-response [13] GetLostMailStatisticResponse, -- ответ на команду

запроса не полученных почтовых отправлений

segregated-item-notification [14] SegregatedMailNotification, -- извещение

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

segregated-item-notification-ack [15] SegregatedMailNotificationAck --

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

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

}

DataMessage ::= CHOICE {

data-block [0] MailDataBlock, -- блок данных с изображениями отправлений

data-block-ack [1] MailDataBlockAck, -- подтверждение приема блока данных

heartbeat [2] ChannelHeartbeat, -- команда проверки связи ТС ОРМ с СО

heartbeat-response [3] ChannelHeartbeatResponse -- ответ на команду

проверки связи ТС ОРМ с СО

}

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 -- признак успешности приема команды

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

SegregateMailItem ::= SEQUENCE {

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

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

sorting-cell UTF8String (SIZE (1..64)) -- идентификатор новой ячейки

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

}

SegregateMailItemResponse ::= BOOLEAN -- подтверждение приема СО команды

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

CancelItemSegregation ::= MailID

CancelItemSegregationAck ::= BOOLEAN -- подтверждение отмены смены ячейки

сортировки

GetLostMailStatistic::= NULL

GetLostMailStatisticResponse ::= SEQUENCE {

last-time DateAndTime, -- дата и время предыдущего получения информации

lost-mail-items INTEGER (0 .. 4294967295), -- количество отправлений,

информация по которым не была передана на ТС ОРМ

partially-lost-mail-items INTEGER (0 .. 4294967295) -- количество

отправлений, информация по которым была передана на ТС ОРМ частично

}

SegregatedMailNotification ::= SEQUENCE {

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

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

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

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

}

SegregatedMailNotificationAck ::= NULL

MailDataBlock ::= SEQUENCE {

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

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

mail-type ENUMERATED {

mail (0), -- письмо

flat (1), -- flat

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

},

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

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

mail-id MailID, -- идентификатор

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

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

}

MailItemImages ::= SEQUENCE {

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

отправления

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

отправления

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

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

}

MailDataBlockAck ::= NULL

MailID ::= SEQUENCE {

machine-id UTF8String (SIZE (1..10)), -- идентификатор машины, выполняющей

обработку отправления

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

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

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

отправления

}

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 -- адрес отправителя

}

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 -- адресные данные

}

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 --- адрес

"до востребования"

}

MessageID ::= INTEGER (0 .. 4294967295)

DateAndTime ::= UTCTime

END