-- ASN module extracted from ITU-T X.1080.2 (10/2021)

Biology-to-Machine { joint-iso-itu-t(2) telebiometrics(42) thprot(10) part2(2) modules(0) b2m(0) version1(1)} DEFINITIONS IMPLICIT TAGS ::= BEGIN IMPORTS SupportedGenInfo, SupportedUnits FROM InfoObjects {joint-iso-itu-t(2) telebiometrics(42) thprot(10) part2(2) modules(0) infoObjects(2) version1(1)} moving-detect FROM MonitorTypes {joint-iso-itu-t(2) telebiometrics(42) thprot(10) part2(2) modules(0) monitor-types(1) monitors(0) version1(1)} ; id-telebio OBJECT IDENTIFIER ::= { joint-iso-itu-t(2) telebiometrics(42) } id-thprot OBJECT IDENTIFIER ::= { id-telebio thprot(10) } id-x1080-2 OBJECT IDENTIFIER ::= { id-thprot part2(2) } id-x1080-2-modules OBJECT IDENTIFIER ::= { id-x1080-2 modules(0) } id-mt OBJECT IDENTIFIER ::= { id-x1080-2 monitor-type(1) } id-un OBJECT IDENTIFIER ::= { id-x1080-2 unit(2) } id-gi OBJECT IDENTIFIER ::= { id-x1080-2 gen-info(3) } MONITOR-TYPE ::= TYPE-IDENTIFIER Direction ::= ENUMERATED {in(0), out(1)} DeviceInfo ::= SEQUENCE { vendor [0] UTF8String OPTIONAL, type [1] UTF8String OPTIONAL, id [2] UTF8String OPTIONAL, ... } SupportedMonitorTypes MONITOR-TYPE ::= {moving-detect} OPTIONS ::= CLASS { &Voice-options OPTIONAL, &Video-options OPTIONAL } WITH SYNTAX { [VOICE OPTIONS &Voice-options] [VIDEO OPTIONS &Video-options] } UNIT ::= CLASS { &name PrintableString, &symbol PrintableString, &quantity PrintableString OPTIONAL, &Value, &id OBJECT IDENTIFIER UNIQUE } WITH SYNTAX { NAME &name SYMBOL &symbol [QUANTITY &quantity] VALUE &Value ID &id } Unit{UNIT:SupportedUnits} ::= SEQUENCE { id UNIT.&id({SupportedUnits}), name UNIT.&name({SupportedUnits}{@id}), symbol UNIT.&symbol({SupportedUnits}{@id}), quantity [0] UNIT.&quantity({SupportedUnits}{@id}) OPTIONAL, value [1] UNIT.&Value } GEN-INFO ::= CLASS { &Type, &id OBJECT IDENTIFIER UNIQUE } WITH SYNTAX { SYNTAX &Type ID &id } Gen-Info {GEN-INFO:SupportedGenInfo} ::= SEQUENCE { type GEN-INFO.&id({SupportedGenInfo}), value GEN-INFO.&Type({SupportedGenInfo}{@type}) } B2M-protocol ::= CHOICE { b2mInitReq [0] B2MInitReq, b2mInitAcc [1] B2MInitAcc, b2mInitRej [2] B2MInitRej, b2mInitAbt [3] B2MInitAbt, b2mTranf [4] B2MDataTransfer, ... } B2MInitReq ::= SEQUENCE { version Version, requirements ENUMERATED { none (0), with-2-way-voice (1), with-reverse-video-and-2-way-voice (2), with-2-way-video-and-voice (3), ... } DEFAULT none, voice-options [0] OPTIONS.&Voice-options OPTIONAL, video-options [1] OPTIONS.&Video-options OPTIONAL, monitorTypes SEQUENCE SIZE (1..MAX) OF MONITOR-TYPE.&id ({SupportedMonitorTypes}), ... } Version ::= BIT STRING { v1 (0) -- version 1 } B2MInitAcc ::= SEQUENCE { version Version, monitorTypes SEQUENCE SIZE (1..MAX) OF MONITOR-TYPE.&id OPTIONAL, ... } B2MInitRej ::= SEQUENCE { version Version, initErr InitError, ... } InitError ::= ENUMERATED { initiation-not-allowed (0), versions-not-supported (1), voice-option-not-available (2), video-option-not-available (3), monitor-types-not-supported (4), ... } B2MInitAbt ::= SEQUENCE { version Version, accErr AccError, ... } AccError ::= ENUMERATED { only-one-version (0), unexpected-version (1), unexpected-monitorTypes (2), critical-monitorTypes-missing (3), ... } B2MDataTransfer ::= SEQUENCE { time GeneralizedTime, genInfos [0] SEQUENCE SIZE (1..MAX) OF CHOICE { genInfoType GEN-INFO.&id({SupportedGenInfo}), genInfo Gen-Info{{SupportedGenInfo}}, ... } OPTIONAL, monTypes [1] SEQUENCE SIZE (1..MAX) OF SEQUENCE SIZE (1..MAX) OF SEQUENCE { deviceInfo [1] DeviceInfo OPTIONAL, mon [2] MONITOR-TYPE.&Type ({SupportedMonitorTypes}) OPTIONAL, ... }, ... } InvokeID ::= INTEGER (0..MAX) END -- Biology-to-Machine