/***************************************************************** * @source : ISO15784-3.ASN * @description : ±âº»±³ÅëÁ¤º¸ ±³È¯ ±â¼ú±âÁØIII(¾È) * ±¹ÅäÇØ¾çºÎ ***************************************************************** * DATE AUTHOR DESCRIPTION * --------------------------------------------------------------- * 2011/02/22 Á¶¿ë¹® ÃÖÃÊÀÛ¼º *****************************************************************/ /* 0x01 Initiate Ãʱâ Åë½Å¿¬°áÀ» À§ÇÑ °³½Ã ¿äû µ¥ÀÌÅÍ ÆÐŶ 0x02 Login ¼­¹ö¿¡ Á¢¼ÓÇϱâ À§ÇÑ Å¬¶óÀ̾ðÆ®ÀÇ ·Î±×ÀÎ µ¥ÀÌÅÍ ÆÐŶ 0x03 FrED ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀ» À¯ÁöÇϱâ À§ÇÑ È®ÀÎ µ¥ÀÌÅÍ ÆÐŶ 0x04 Terminate ¿¬°áÀ» Á¾·áÇϰíÀÚ ÇÒ ¶§, ¼­¹ö¿¡¼­ Ŭ¶óÀÌ¾ðÆ®¿¡ ¿äûÇÏ´Â µ¥ÀÌÅÍ ÆÐŶ 0x05 Logout Á¢¼ÓÀ» Á¾·áÇϱâ À§ÇÑ Å¬¶óÀ̾ðÆ®ÀÇ ·Î±×¾Æ¿ô µ¥ÀÌÅÍ ÆÐŶ 0x06 Subscription Ŭ¶óÀÌ¾ðÆ®°¡ ¼­¹ö¿¡ Á¤º¸¸¦ ¿äûÇÒ °æ¿ì ¼Û½ÅÇÏ´Â µ¥ÀÌÅÍ ÆÐŶ 0x07 TransferDone Ŭ¶óÀÌ¾ðÆ®°¡ ¿äûÇÑ Á¤º¸¸¦ ÆÄÀÏÇüÅ·ΠÁ¦°øÇϱâ À§ÇÑ µ¥ÀÌÅÍ ÆÐŶ 0x08 Accept Ŭ¶óÀ̾ðÆ®ÀÇ ¿äû¿¡ ´ëÇÑ ¼ö¿ë 0x09 Reject Ŭ¶óÀ̾ðÆ®ÀÇ ¿äû¿¡ ´ëÇÑ °ÅºÎ 0x30 Publication Ŭ¶óÀÌ¾ðÆ®°¡ ¿äûÇÑ Á¤º¸¸¦ Á¦°øÇϱâ À§ÇÑ µ¥ÀÌÅÍ ÆÐŶ 0x31 RealTimeDisplayMessage ½Ç½Ã°£Á¤º¸Ç¥Ãâ¸Þ½ÃÁö 0x32 ScheduledDisplayMessage °èȹµÈÁ¤º¸Ç¥Ãâ¸Þ½ÃÁö 0x33 DownloadGraphicDataMessage ±×·¡Çȵ¥ÀÌÅÍ ´Ù¿î·Îµå ¸Þ½ÃÁö 0x34 StatusControlMessage »óÅÂÁ¦¾î¸Þ½ÃÁö 0x35 StatusSettingMessage »óż³Á¤¸Þ½ÃÁö 0x36 GeneralStatusMessage ±âº»»óÅÂÁ¤º¸¸Þ½ÃÁö 0x37 PowerStatusMessage Àü¿ø»óÅÂÁ¤º¸¸Þ½ÃÁö 0x38 ModuleStatusMessage ¸ðµâ»óÅÂÁ¤º¸¸Þ½ÃÁö 0x39 DotStatusMessage µµÆ®»óÅÂÁ¤º¸¸Þ½ÃÁö 0x3A ScreenStatusMessage Ç¥Ãâ»óÅÂÁ¤º¸¸Þ½ÃÁö 0x3B DisplayingDataMessage Ç¥ÃâÁ¤º¸¸Þ½ÃÁö 0x3C GraphicDisplayingDataMessage µµÇü½Ä Á¤º¸Ç¥Ãâ ¸Þ½ÃÁö */ /* ÀÏ¹Ý ±¸Á¶ */ ISO14827-2 {iso(1) standard(0) std14827(14827) part2(2)} DEFINITIONS AUTOMATIC TAGS ::= BEGIN DatexDataPacket ::= SEQUENCE{ datex-Version-number ENUMERATED { experimental (0), version1 (1), ... }, datex-Data OCTET STRING, datex-Crc-nbr OCTET STRING (SIZE (2)) } C2CAuthenticatedMessage ::= SEQUENCE { datex-AuthenticationInfo-text OCTET STRING (SIZE (0..255)), datex-DataPacket-number INTEGER (0..4294967295), datex-DataPacketPriority-number INTEGER (0..10), options HeaderOptions, pdu PDUs } HeaderOptions ::= SEQUENCE { datex-Origin-text UTF8String (SIZE (0..40)) OPTIONAL, datex-OriginAddress-location OCTET STRING OPTIONAL, datex-Sender-text UTF8String (SIZE (0..40)) OPTIONAL, datex-SenderAddress-location OCTET STRING OPTIONAL, datex-Destination-text UTF8String (SIZE (0..40)) OPTIONAL, datex-DestinationAddress-location OCTET STRING OPTIONAL, datex-Cost Cost OPTIONAL, datex-DataPacket-time Time OPTIONAL } Cost ::= SEQUENCE { amount-Currency-code OCTET STRING (SIZE (3)), amount-Factor-quantity INTEGER, amount-Quantity-quantity INTEGER } /* ÇÁ·ÎÅäÄÝ µ¥ÀÌÅÍ À¯´Ö */ PDUs ::= CHOICE { datex-Initiate-null Initiate, login Login, fred FrED, terminate Terminate, logout Logout, subscripiton Subscription, publication Publication, transfer-done TransferDone, accept Accept, reject Reject } /* Initiate Data packet Structure */ Initiate ::= SEQUENCE{ datex-Sender-txt UTF8String (SIZE (0..40)), datex-Destinatin-txt UTF8String (SIZE (0..40)) } /* Login Data packet Structure */ Login ::= SEQUENCE{ datex-Sender-txt UTF8String (SIZE (0..40)), datex-Destinatin-txt UTF8String (SIZE (0..40)), datexLogin-UserName-txt OCTET STRING, datexLogin-Password-txt OCTET STRING, datexLogin-EncodingRules-id SEQUENCE OF OBJECT IDENTIFIER, datexLogin-HearteatDurationMax-qty INTEGER (0..65535), datexLogin-ResponseTimeOut-qty INTEGER (0..255), datexLogin-Initiator-cd ENUMERATED { serverInitiated, clientInitiated, ... }, datexLogin-DatagramSize-qty INTEGER (0..65535) } /* FrED Data packet Structure */ FrED ::= INTEGER (0..4294967295) -- datexFrED-ConfirmPacket-nbr /* Terminate Data packet Structure */ Terminate ::= ENUMERATED -- datexTerminate-Reason-cd { other, serverRequested, clientRequested, serverShutdown, clientShutdown, serverCommProblems, clientCommProblems, ... } /* Logout Data packet Structure */ Logout ::= ENUMERATED -- datexLogout-Reason-cd { other, serverRequested, clientRequested, serverShutdown, clientShutdown, serverCommProblems, clientCommProblems, ... } /* Subscription Data packet Structure */ Subscription ::= SEQUENCE { datexSubscribe-Serial-nbr INTEGER (0..4294967295), datexSubscribe-Type SubscriptionType, ... } SubscriptionType ::= CHOICE { subscription SubscriptionData, datexSubscribe-CancelReason-cd ENUMERATED { other, dataNotNeeded, errorsInPublication, pendingLogout, processingMgmt, bandwidthMgmt, ... } } SubscriptionData ::= SEQUENCE { datexSubscribe-Persistent-bool BOOLEAN, datexSubscribe-Status-cd ENUMERATED { new, update }, datexSubscribe-Mode SubscriptionMode, datexSubscribe-PublishFormat-cd ENUMERATED { other, ftp, tftp, dataPacket, ... }, datexSubscription-Priority-nbr INTEGER (1..10), datexSubscribe-Guarantee-bool BOOLEAN, datexSubscribe-Pdu EndApplicationMessage } SubscriptionMode ::= CHOICE { single NULL, event-driven Registered, periodic Registered } Registered::= CHOICE { continuous SEQUENCE { datexRegistered-UpdateDelay-qty INTEGER (0..424967295) DEFAULT 0, -- 0 means as soon as possible datexRegistered-StartTime Time OPTIONAL, -- defaults to immediate datexRegistered-EndTime Time OPTIONAL -- defaults to "until cancelled" }, daily SEQUENCE { datexRegistered-UpdateDelay-qty INTEGER (0..424967295) DEFAULT 0, -- 0 means as soon as possible datexRegistered-DaysOfWeek-cd BIT STRING { other (0), sunday (1), monday (2), tuesday (3), wednesday (4), thursday (5), friday (6), saturday (7) } (SIZE (8)), datexRegistered-StartDate Time OPTIONAL, -- defaults to immediate datexRegistered-EndDate Time OPTIONAL, -- defaults to "until cancelled" datexRegistered-StartTime Time OPTIONAL, -- defaults to midnight datexRegistered-Duration-qty INTEGER (0..65535) OPTIONAL -- defaults to 1440 (i.e., 24 hours) } } Time ::= SEQUENCE { time-Year-qty INTEGER (-32768..32767) OPTIONAL, -- defaults to current year unless otherwise specified time-Month-qty INTEGER (1..12) OPTIONAL, -- defaults to current month unless otherwise specified time-Day-qty INTEGER (1..31) OPTIONAL, -- defaults to current day unless otherwise specified time-Hour-qty INTEGER (0..23) DEFAULT 0, time-Minute-qty INTEGER (0..59) DEFAULT 0, time-Second-qty INTEGER (0..60) DEFAULT 0, time-SecondFractions CHOICE { deci-seconds INTEGER (0..9), centi-seconds INTEGER (0..99), milliseconds INTEGER (0..999), ... } /* DEFAULT 0 */, time-Timezone SEQUENCE { timezone-Hour-qty INTEGER (-13..13) DEFAULT 0, time-Minute-qty INTEGER (0..59) DEFAULT 0 } OPTIONAL -- defaults to UTC } /* Publication Data packet Structure */ Publication ::= SEQUENCE { datexPublish-Guaranteed-bool BOOLEAN, datexPublish-Format Publish-Format } Publish-Format ::= CHOICE { datexPublish-Data SEQUENCE OF PublicationData, datexPublish-FileName-txt UTF8String (SIZE (0..2000)) } PublicationData ::= SEQUENCE { datexPublish-SubscribeSerial-nbr INTEGER (0..4294967295), datexPublish-Serial-nbr INTEGER (0..4294967295), datexPublish-LatePublicationFlag BOOLEAN, datexPublish-Type PublicationType } PublicationType ::= CHOICE { datexPublication-Management-cd ENUMERATED { temporarilySuspended, resume, terminate-other, terminate-dataNoLongerAvailable, terminate-publicationsBeingRejected, terminate-PendingShutdown, terminate-processingMgmt, terminate-bandwidthMgmt, terminate-accessDenied, unknownRequest, ... }, datexPublish-Data EndApplicationMessage } /* Transfer Done Data packet Structure */ TransferDone ::= SEQUENCE{ datexTransferDone-Publication-nbr INTEGER (0..4294967295), datexTransferDone-FileName-txt UTF8String (SIZE (0..2000)), datexTransferDone-Sucess-bool BOOLEAN } /* Accept Data packet Structure */ Accept ::= SEQUENCE{ datexAccept-Packet-nbr INTEGER (0..4294967295), datexAccept-Type CHOICE{ logIn OBJECT IDENTIFIER, single-subscription NULL, registered-subscription INTEGER (0..4294967295), publication NULL } } /* Reject Data packet Structure */ Reject ::= SEQUENCE { datexReject-Packet-nbr INTEGER (0..4294967295), datexReject-Type RejectType, datexReject-AlternateRequest AlternateRequest OPTIONAL } RejectType ::= CHOICE { datexReject-Login-cd ENUMERATED { other, unknownDomainName, accessDenied, invalidNamePassword, timeoutTooSmall, timeoutTooLarge, heartbeatTooSmall, heartbeatTooLarge, sessionExists, maxSessionsReached, ... }, datexReject-Subscription-cd ENUMERATED { other, unknownSubscriptionNbr, invalidTimes, frequencyTooSmall, frequencyTooLarge, invalid-mode, publishFormatNotSupported, unknowSubscriptionMsgId, invalidSubscriptionMsgId, invalidSubscriptionContent, ... }, datexReject-Publication-cd ENUMERATED { other, unknownSubscription, unknownPublicationNbr, invalidPublishFormat, unknownPublicationMsgId, invalidPublicationMsgId, invalidPublicationMsgContent, repeatedPublicationNbr, ... } } /* AlternateProposal ::= SubscriptionType */ AlternateRequest ::= SubscriptionType EndApplicationMessage ::= SEQUENCE { endApplication-Message-id ISO15784-MESSAGE.&id ({Message}), endApplication-Message-msg ISO15784-MESSAGE.&MessageBody ({Message}{@endApplication-Message-id}) } ISO15784-MESSAGE ::= CLASS { &id OBJECT IDENTIFIER, &MessageBody } MessageBodyRealTimeDisplayMessage ::= SEQUENCE OF RealTimeDisplayMessage MessageBodyScheduledDisplayMessage ::= SEQUENCE OF ScheduledDisplayMessage MessageBodyDownloadGraphicDataMessage ::= SEQUENCE OF DownloadGraphicDataMessage MessageBodyStatusControlMessage ::= SEQUENCE OF StatusControlMessage MessageBodyStatusSettingMessage ::= SEQUENCE OF StatusSettingMessage MessageBodyGeneralStatusMessage ::= SEQUENCE OF GeneralStatusMessage MessageBodyPowerStatusMessage ::= SEQUENCE OF PowerStatusMessage MessageBodyModuleStatusMessage ::= SEQUENCE OF ModuleStatusMessage MessageBodyDotStatusMessage ::= SEQUENCE OF DotStatusMessage MessageBodyScreenStatusMessage ::= SEQUENCE OF ScreenStatusMessage MessageBodyDisplayingDataMessage ::= SEQUENCE OF DisplayingDataMessage /*MessageBodyGraphicDisplayingDataMessage ::= SEQUENCE OF GraphicDisplayingDataMessage*/ /* Message ISO15784-MESSAGE ::= { {&id {1 0 15784 3 0 1}, &MessageBody SEQUENCE OF RealTimeDisplayMessage} | {&id {1 0 15784 3 0 2}, &MessageBody SEQUENCE OF ScheduledDisplayMessage} | {&id {1 0 15784 3 0 3}, &MessageBody SEQUENCE OF DownloadGraphicDataMessage} | {&id {1 0 15784 3 0 4}, &MessageBody SEQUENCE OF StatusControlMessage} | {&id {1 0 15784 3 0 5}, &MessageBody SEQUENCE OF StatusSettingMessage} | {&id {1 0 15784 3 0 6}, &MessageBody SEQUENCE OF GeneralStatusMessage} | {&id {1 0 15784 3 0 7}, &MessageBody SEQUENCE OF PowerStatusMessage} | {&id {1 0 15784 3 0 8}, &MessageBody SEQUENCE OF ModuleStatusMessage} | {&id {1 0 15784 3 0 9}, &MessageBody SEQUENCE OF DotStatusMessage} | {&id {1 0 15784 3 1 0}, &MessageBody SEQUENCE OF ScreenStatusMessage} | {&id {1 0 15784 3 1 1}, &MessageBody SEQUENCE OF DisplayingDataMessage} | {&id {1 0 15784 3 1 2}, &MessageBody SEQUENCE OF GraphicDisplayingDataMessage} } */ /* EndApplicationMessage ::= SEQUENCE { endApplication-Message-id ISO14827-MESSAGE.&id, endApplication-Message-msg ISO14827-MESSAGE.&MessageBody } ISO14827-MESSAGE ::= CLASS { &name PrintableString (SIZE (0..255)), &definition PrintableString (SIZE (0..65535)), &remarks PrintableString (SIZE (0..2000)) OPTIONAL, &MessageBody, &messageType ENUMERATED { publication, subscription}, &subscriptionType ENUMERATED { single , event-driven, single-or-event, periodic, single-or-periodic, event-or-periodic, ingle-event-periodic } OPTIONAL, &initialPublication PrintableString (SIZE (0..255)) OPTIONAL, &subsequentPublications PrintableString (SIZE (0..255)) OPTIONAL, &id OBJECT IDENTIFIER } */ /* Publication */ -- 301 ½Ç½Ã°£ Á¤º¸Ç¥Ãâ¸Þ½ÃÁö(RealTime Display Message) RealTimeDisplayMessage ::= SEQUENCE{ message-serialID OCTET STRING, display-DurationQty INTEGER, display-ModeCode ENUMERATED { stationary, shift, scroll, wipe, curtain-up, curtain-down, curtain-left, curtain-right, trace, blind, blinking }, display-DirectionCode ENUMERATED{ none, up, down, left, right }, background-ColorCode ENUMERATED{ black, red, green, amber }, object-Nbr INTEGER, objects SEQUENCE OF Object } Object ::= SEQUENCE{ object-TypeCode ENUMERATED{ text-object, graphic-object, graphic-id-object }, blinking-Code ENUMERATED{ off, on }, x-Coordinate INTEGER, y-Coordinate INTEGER, data-BackgroundColor ENUMERATED{ black, red, green, amber }, object-Data ObjectData } ObjectData ::= CHOICE{ text-object-data TextObjectData, graphic-object-data GraphicObjectData, graphicID-object-data GraphicIDObjectData } TextObjectData ::= SEQUENCE{ font-ColorCode ENUMERATED{ black, red, green, amber }, font-Size INTEGER, font-TypeCode OCTET STRING, font-Thickness ENUMERATED{ normal, bold }, text-Data UTF8String } GraphicObjectData ::= SEQUENCE { graphic-Type ENUMERATED{ bitmap, gif, jpg, pcx }, graphic-Width INTEGER, graphic-Height INTEGER, graphic-Data OCTET STRING } GraphicIDObjectData ::= SEQUENCE { graphic-Type ENUMERATED{ bitmap, gif, jpg, pcx }, graphic-Width INTEGER, graphic-Height INTEGER, graphic-DataID OCTET STRING } -- 302 °èȹµÈ Á¤º¸Ç¥Ãâ¸Þ½ÃÁö(Scheduled Display Message) ScheduledDisplayMessage ::= SEQUENCE{ message-Nbr INTEGER, message-serialIDs SEQUENCE OF OCTET STRING } -- 303 ±×·¡ÇÈ´Ù¿î·Îµå¸Þ½ÃÁö(GraphicData Download Message) DownloadGraphicDataMessage ::= SEQUENCE{ download-GraphicData-ID OCTET STRING, download-GraphicData OCTET STRING } -- 304 »óÅÂÁ¦¾î¸Þ½ÃÁö(Status Control Message) StatusControlMessage ::= SEQUENCE{ modulePower-ControlCode ENUMERATED{ on, off, auto }, luminance-ControlCode INTEGER, fan-ControlCode ENUMERATED{ on, off, auto }, heater-ControlCode ENUMERATED{ on, off, auto }, externalLight-ControlCode ENUMERATED{ on, off, auto } OPTIONAL, alarmLight-ControlCode ENUMERATED{ on, off } OPTIONAL, speaker-ControlCode ENUMERATED{ on, off } OPTIONAL, controller-Reset BOOLEAN OPTIONAL, controllerTime-Reset GeneralizedTime OPTIONAL } -- 305 »óż³Á¤¸Þ½ÃÁö(Status Setting Message) StatusSettingMessage ::= SEQUENCE{ scheduledMessage-OperatingTimeQty INTEGER, module-OperatingTemperatureQty INTEGER, fan-OperatingTemperatureQty INTEGER, heater-OperatingTemperatureQty INTEGER, externalLight-OperatingLuminanceQty INTEGER OPTIONAL, module-BasicFailureRate INTEGER OPTIONAL, maximum-RetryQty INTEGER OPTIONAL, response-TimeOutQty INTEGER OPTIONAL, blinking-CycleTime INTEGER OPTIONAL } -- 306 ±âº»»óÅÂÁ¤º¸¸Þ½ÃÁö(General Status Message) GeneralStatusMessage ::= SEQUENCE{ door-StatusCode ENUMERATED{ open, closed }, modulePower-StatusCode ENUMERATED{ on, off, auto }, body-TemperatureQty INTEGER, luminance-StatusQty INTEGER, fan-StatusCode ENUMERATED{ on, off, auto }, heater-StatusCode ENUMERATED{ on, off, auto }, externalLight-StatusCode ENUMERATED{ on, off, auto } OPTIONAL, alarmLight-StatusCode ENUMERATED{ on, off } OPTIONAL, speaker-StatusCode ENUMERATED{ on, off } OPTIONAL, controller-CurrentTime GeneralizedTime OPTIONAL, scheduledmessage-OperatingTime INTEGER, module-OperatingTemperatureQty INTEGER, fan-OperatingTemperatureQty INTEGER, heater-OperatingTemperatureQty INTEGER, externalLight-OperatingLuminanceQty INTEGER OPTIONAL, module-BasicFailureRate INTEGER OPTIONAL, maximum-RetryQty INTEGER OPTIONAL, response-TimeOutQty INTEGER OPTIONAL, blinking-CycleTime INTEGER OPTIONAL } -- 307 Àü¿ø»óÅÂÁ¤º¸¸Þ½ÃÁö(Power Status Message) PowerStatusMessage ::= SEQUENCE{ power-Qty INTEGER, power-Status BIT STRING } -- 308 ¸ðµâ»óÅÂÁ¤º¸¸Þ½ÃÁö(Module Status Message) ModuleStatusMessage ::= SEQUENCE{ module-HorizontalQty INTEGER, module-VerticalQty INTEGER, module-Status BIT STRING } -- 309 µµÆ®»óÅÂÁ¤º¸¸Þ½ÃÁö(Dots Status Message) DotStatusMessage ::= SEQUENCE { dot-HorizontalQty INTEGER, dot-VerticalQty INTEGER, dots-Status BIT STRING } -- 310 ¿µ»óÁ¤º¸¸Þ½ÃÁö(Screen Status Message) ScreenStatusMessage ::= SEQUENCE{ capture-Time GeneralizedTime, screen-StatusData OCTET STRING } -- 311 Ç¥ÃâÁ¤º¸¸Þ½ÃÁö(Displaying Data Message) DisplayingDataMessage ::= RealTimeDisplayMessage -- 312 µµÇü½Ä Á¤º¸Ç¥Ãâ ¸Þ½ÃÁö(Graphic Displaying Data Message) /* GraphicDisplayingDataMessage ::= SEQUENCE{ TravelTime-DisplayFlag BOOLEAN, GraphicModule-Data SEQUENCE OF GraphicModuleDispData } GraphicModuleDispData ::= SEQUENCE { Module-number INTEGER, Display-Data INTEGER } */ END