1、 SMPTE RDD 38:2016 SMPTE REGISTERED DISCLOSURE DOCUMENT Networked Device Control Protocol Message Data Structure and Method of Communication Page 1 of 31 pages The attached document is a Registered Disclosure Document prepared by the proponent identified below. It has been examined by the appropriat
2、e SMPTE Technology Committee and is believed to contain adequate information to satisfy the objectives defined in the Scope, and to be technically consistent. This document is NOT a Standard, Recommended Practice or Engineering Guideline, and does NOT imply a finding or representation of the Society
3、. Errors in this document should be reported to the proponent identified below, with a copy to engsmpte.org. All other inquiries in respect of this document, including inquiries as to intellectual property requirements that may be attached to use of the disclosed technology, should be addressed to t
4、he proponent identified below. Proponent contact information: Satoshi Katsuo Sony Corporation 4-14-1 Asahi-cho, Atsugi Kanagawa, 243-0014 Japan Email: Satoshi.K Copyright 2016 by THE SOCIETY OF MOTION PICTURE AND TELEVISION ENGINEERS 3 Barker Avenue, White Plains, NY 10601 (914) 761-1100 Approved Ju
5、ne 30, 2016 SMPTE RDD 38:2016 Page 2 of 31 pages Table of Contents Page Introduction 3 1 Scope 3 2 Related Documents and URLs . 3 3 Terms and Definitions . 4 3.1 Big-Endian Byte Rrder . 4 3.2 Deserialization . 4 3.3 Least Significant Byte (LSB) 4 3.4 Most Significant Byte (MSB) 4 3.5 Serialization .
6、 4 4 Serialized Object Formats 4 4.1 General 4 4.2 Nil . 6 4.3 Boolean 6 4.4 Integer 6 4.5 IEEE 754 Floating Point Numbers . 10 4.6 UTF-8 String 11 4.7 Binary Data 13 4.8 Array 14 4.9 Map 15 4.10 User Defined Types . 17 5 Message Formats . 21 5.1 General 21 5.2 Request Message 21 5.3 Response Messag
7、e . 23 5.4 Notify Message 25 6 Message Sequences 28 6.1 General 28 6.2 Remote Procedure Call . 28 6.3 Notification . 28 7 Transport Protocols 29 7.1 General 29 7.2 WebSocket 29 7.3 TLS 29 7.4 TCP 29 8 Security . 30 8.1 General 30 8.2 User Authentication . 30 8.3 Client Authentication 30 8.4 Encrypti
8、on of Communication Path . 30 Annex A Reference Implementation (Informative) 31 SMPTE RDD 38:2016 Page 3 of 31 pages Introduction The phrase “IP control” covers a wide range of control functions via IP networks, from business level control (control at workflow level) to device level control (control
9、 at function level). As for the latter, it has now become common practice to control a product using a variety of controller types including portable computers, smartphones and/or tablets via wireless IP networks. In such situations, even in an IP network environment there is a requirement to realiz
10、e high speed control/response equivalent to using a conventional RS422/9-pin control device. This RDD provides a lightweight and efficient control protocol specification for this purpose. Specifically, it conforms to MessagePack and MessagePack RPC specifications, with some added definitions require
11、d for device control. These include an efficient method of message communication, and use of available transport protocols that take security into account. See Annex A for a URL to an open source reference implementation. 1 Scope This RDD provides the following specification for a protocol layer to
12、control networked devices efficiently in an IP network environment. Serialized object format Message format Message sequence Transport protocol Security 2 Related Documents and URLs IETF RFC 2617, HTTP Authentication: Basic and Digest Access Authentication IETF RFC 3629, UTF-8, a transformation form
13、at of ISO 10646 IETF RFC 5246, The Transport Layer Security (TLS) Protocol Version 1.2 IETF RFC 6455, The WebSocket Protocol The Unicode Consortium, The Unicode Standard IEEE 754, Standard for Floating Point Arithmetic MessagePack, http:/msgpack.org/ MessagePack RPC, https:/ SMPTE RDD 38:2016 Page 4
14、 of 31 pages 3 Terms and Definitions For the purposes of this document, the following terms and definitions apply. 3.1 Big-endian byte order The most significant byte of words is stored at a particular memory address and subsequent bytes are stored in the following higher memory addresses, the least
15、 significant byte thus being stored at the highest memory address. It is also called network order in the IETF RFC documents. 3.2 Deserialization The process of translating a series of bytes into application data structures or object states. 3.3 Least Significant Byte (LSB) The byte in that position
16、 of a multi-byte number which has the least potential value. 3.4 Most Significant Byte (MSB) The byte in that position of a multi-byte number which has the greatest potential value. 3.5 Serialization The process of translating data structures or object state into a series of bytes that can be stored
17、 and reconstructed later in the same or another computer environment. 4 Serialized Object Formats 4.1 General This section describes data formats of the serialized object which have an arbitrary type by a binary string. Since serialized data has both type information and a value, an application obje
18、ct can be reconstructed from it. Table 1 shows the defined types in serialized object formats. In addition to basic types defined by most programming languages, a variable length binary/string data type and container types are also defined. In order to minimize the post-serialization data size, the
19、type can be set by the actual value at the time of serialization instead of strictly serializing the type as declared by the programming language. For example, even if a type is declared as 64-bit unsigned integer by the programming language, if the value is 250, the data will be serialized into an
20、8-bit unsigned integer. As a result, the post-serialization data size is 7 bytes shorter than with serialization into a 64-bit unsigned integer. An open source reference implementation described in Annex A supports all data formats defined in this section, and also has the size reduction capability
21、described above. In the following sections, bits in a byte are labeled 7 through 0. The most significant bit is bit number 7, and the least significant bit is bit number 0. SMPTE RDD 38:2016 Page 5 of 31 pages Table 1 Defined data types in serialized object formats Type First byte (in binary) First
22、byte (in hex) Details 7-bit positive integer 0xxxxxxx 0x00 - 0x7f See 4.4.2. map in 4-bit object number 1000xxxx 0x80 - 0x8f See 4.9.2. array in 4-bit object number 1001xxxx 0x90 - 0x9f See 4.8.2. UTF-8 string in 5-bit length 101xxxxx 0xa0 - 0xbf See 4.6.2. Nil 11000000 0xc0 See 4.2. (never used) 11
23、000001 0xc1 False 11000010 0xc2 See 4.3.2. True 11000011 0xc3 See 4.3.3. binary in 8-bit length 11000100 0xc4 See 4.7.2. binary in 16-bit length 11000101 0xc5 See 4.7.3. binary in 32-bit length 11000110 0xc6 See 4.7.4. user defined type in 8-bit length 11000111 0xc7 See 4.10.2. user defined type in
24、16-bit length 11001000 0xc8 See 4.10.3. user defined type in 32-bit length 11001001 0xc9 See 4.10.4. IEEE 754 single precision floating point number 11001010 0xca See 4.5.2. IEEE 754 double precision floating point number 11001011 0xcb See 4.5.3. 8-bit unsigned integer 11001100 0xcc See 4.4.4. 16-bi
25、t unsigned integer 11001101 0xcd See 4.4.5. 32-bit unsigned integer 11001110 0xce See 4.4.6. 64-bit unsigned integer 11001111 0xcf See 4.4.7. 8-bit signed integer 11010000 0xd0 See 4.4.8. 16-bit signed integer 11010001 0xd1 See 4.4.9. 32-bit signed integer 11010010 0xd2 See 4.4.10. 64-bit signed int
26、eger 11010011 0xd3 See 4.4.11. 8-bit user defined type 11010100 0xd4 See 4.10.2. 16-bit user defined type 11010101 0xd5 See 4.10.3. 32-bit user defined type 11010110 0xd6 See 4.10.4. 64-bit user defined type 11010111 0xd7 See 4.10.5. 128-bit user defined type 11011000 0xd8 See 4.10.6. UTF-8 string i
27、n 8-bit length 11011001 0xd9 See 4.6.3. UTF-8 string in 16-bit length 11011010 0xda See 4.6.4. UTF-8 string in 32-bit length 11011011 0xdb See 4.6.5. array in 16-bit object number 11011100 0xdc See 4.8.3. array in 32-bit object number 11011101 0xdd See 4.8.4. map in 16-bit object number 11011110 0xd
28、e See 4.9.3. map in 32-bit object number 11011111 0xdf See 4.9.4. 5-bit negative integer 111xxxxx 0xe0 - 0xff See 4.4.3. SMPTE RDD 38:2016 Page 6 of 31 pages 4.2 Nil Table 2 shows a nil. In most programming language, nil refers to an empty set or a list containing no entries. Nil is also used when a
29、 value is not assigned to a variable. Table 2 nil Bit 7 6 5 4 3 2 1 0 byte 1 Type (0xc0) 1 1 0 0 0 0 0 0 4.3 Boolean 4.3.1 General Boolean data types usually have two values such as true or false. 4.3.2 false Table 3 shows a false. It is represented by 0xc2 in hexadecimal. Table 3 false Bit 7 6 5 4
30、3 2 1 0 byte 1 Type (0xc2) 1 1 0 0 0 0 1 0 4.3.3 true Table 4 shows a true. It is represented by 0xc3 in hexadecimal. Table 4 true 7 6 5 4 3 2 1 0 byte 1 Type (0xc3) 1 1 0 0 0 0 1 1 4.4 Integer 4.4.1 General An integer value is stored big-endian order in the object serialization formats. SMPTE RDD 3
31、8:2016 Page 7 of 31 pages 4.4.2 7-bit positive integer Table 5 shows the format for a positive integer value. The type field is the most significant bit of byte 1 and is stored as 0. A positive integer value should be stored as this format if the value is less than 128. Table 5 7-bit positive intege
32、r format Bit 7 6 5 4 3 2 1 0 byte 1 Type Value (0127) 0 X X X X X X X 4.4.3 5-bit negative integer Table 6 shows the format for a negative integer value. The type field in byte 1 is stored as 111 in binary. A negative integer should be stored as this format if the value is larger than -32. Table 6 5
33、-bit negative integer format Bit 7 6 5 4 3 2 1 0 byte 1 Type Value (-31-1) 1 1 1 X X X X X 4.4.4 8-bit unsigned integer Table 7 shows the format for an 8-bit unsigned integer value. The type field in byte 1 is stored as 0xcc in hexadecimal. The value field in byte 2 is stored as an 8-bit unsigned in
34、teger value. An unsigned integer value should be stored as this format if the value is within the max value of an 8-bit unsigned integer. Table 7 8-bit unsigned integer format Bit 7 6 5 4 3 2 1 0 byte 1 Type (0xcc) 1 1 0 0 1 1 0 0 byte 2 Value 4.4.5 16-bit unsigned integer Table 8 shows the format f
35、or a 16-bit unsigned integer value. The type field in byte 1 is stored as 0xcd in hexadecimal. The value field is stored as a 16-bit unsigned integer value in big-endian order. An unsigned integer value should be stored as this format if the value is within the max value of a 16-bit unsigned integer
36、. Table 8 16-bit unsigned integer format Bit 7 6 5 4 3 2 1 0 byte 1 Type (0xcd) 1 1 0 0 1 1 0 1 byte 2 Value (MSB) byte 3 Value (LSB) SMPTE RDD 38:2016 Page 8 of 31 pages 4.4.6 32-bit unsigned integer Table 9 shows the format for a 32-bit unsigned integer value. The type field in byte 1 is stored as
37、 0xce in hexadecimal. The value field is stored as a 32-bit unsigned integer value in big-endian order. An unsigned integer value should be stored as this format if the value is within the max value of a 32-bit unsigned integer. Table 9 32-bit unsigned integer format Bit 7 6 5 4 3 2 1 0 byte 1 Type
38、(0xce) 1 1 0 0 1 1 1 0 byte 2 Value (MSB) byte 3 Value (cont.) byte 4 Value (cont.) byte 5 Value (LSB) 4.4.7 64-bit unsigned integer Table 10 shows the format for a 64-bit unsigned integer value. The type field in byte 1 is stored as 0xcf in hexadecimal. The value field is stored as a 64-bit unsigne
39、d integer value in big-endian order. An unsigned integer value should be stored as this format if the value is within the max value of a 64-bit unsigned integer. Table 10 64-bit unsigned integer format Bit 7 6 5 4 3 2 1 0 byte 1 Type (0xcf) 1 1 0 0 1 1 1 1 byte 2 Value (MSB) byte 3 Value (cont.) byt
40、e 4 Value (cont.) byte 5 Value (cont.) byte 6 Value (cont.) byte 7 Value (cont.) byte 8 Value (cont.) byte 9 Value (LSB) 4.4.8 8-bit signed integer Table 11 shows the format for an 8-bit signed integer value. The type field in byte 1 is stored as 0xd0 in hexadecimal. The value field is stored as an
41、8-bit signed integer value. A signed integer value should be stored as this format if the value is within the range of an 8-bit signed integer. SMPTE RDD 38:2016 Page 9 of 31 pages Table 11 8-bit signed integer format Bit 7 6 5 4 3 2 1 0 byte 1 Type (0xd0) 1 1 0 1 0 0 0 0 byte 2 Value 4.4.9 16-bit s
42、igned integer Table 12 shows the format for a 16-bit signed integer value. The type field in byte 1 is stored as 0xd1 in hexadecimal. The value field is stored as a 16-bit signed integer value in big-endian order. A signed integer value should be stored as this format if the value is within the rang
43、e of a 16-bit signed integer. Table 12 16-bit singed integer format Bit 7 6 5 4 3 2 1 0 byte 1 Type (0xd1) 1 1 0 1 0 0 0 1 byte 2 Value (MSB) byte 3 Value (LSB) 4.4.10 32-bit signed integer Table 13 shows the format for a 32-bit signed integer value. The type field in byte 1 is stored as 0xd2 in hex
44、adecimal. The value field is stored as a 32-bit signed integer value in big-endian order. A signed integer value should be stored this format if the value is within the range of a 32-bit signed integer. Table 13 32-bit signed integer format Bit 7 6 5 4 3 2 1 0 byte 1 Type (0xd2) 1 1 0 0 1 1 1 0 byte
45、 2 Value (MSB) byte 3 Value (cont.) byte 4 Value (cont.) byte 5 Value (LSB) 4.4.11 64-bit signed integer Table 14 shows the format for a 64-bit signed integer value. The type field in byte 1 is stored as 0xd3 in hexadecimal. The value field is stored as a 64-bit signed integer value in big-endian or
46、der. A signed integer value should be stored this format if the value is within the range of a 64-bit signed integer. SMPTE RDD 38:2016 Page 10 of 31 pages Table 14 64-bit signed integer format Bit 7 6 5 4 3 2 1 0 byte 1 Type (0xd3) 1 1 0 1 0 0 1 1 byte 2 Value (MSB) byte 3 Value (cont.) byte 4 Valu
47、e (cont.) byte 5 Value (cont.) byte 6 Value (cont.) byte 7 Value (cont.) byte 8 Value (cont.) byte 9 Value (LSB) 4.5 IEEE 754 Floating Point Numbers 4.5.1 General This specification supports IEEE 754 single precision floating point number and IEEE 754 double precision floating point number. 4.5.2 Si
48、ngle precision floating point number Table 15 shows the format for the value of an IEEE 754 single precision floating point number. The type field in byte 1 is stored as 0xca in hexadecimal. The most significant bit in byte 2 stores the sign value: 0 for a positive number and 1 for a negative number
49、. The exponent field is stored as an 8-bit exponent value. The fraction field in the format is stored as a 23-bit fraction value. Table 15 IEEE 754 single precision floating point number format Bit 7 6 5 4 3 2 1 0 byte 1 Type (0xca) 1 1 0 0 1 0 1 0 byte 2 Sign Exponent byte 3 Exponent (cont.) Fraction byte 4 Fraction (cont.) byte 5 Fraction (cont.) SMPTE RDD 38:2016 Page 11 of 31 pages 4.5.3 Double precision floating point number Table 16 shows the format