Event Stream เป็นข้อกำหนดรูปแบบไฟล์ มีไว้เพื่อเป็นมาตรฐานสำหรับจัดเก็บสตรีมเหตุการณ์ และสามารถใช้เพื่อส่งเหตุการณ์ระหว่างอุปกรณ์อิเล็กทรอนิกส์ได้ ข้อกำหนดนี้รวมถึงระบบการกำหนดเวอร์ชันเพื่อให้สามารถเปลี่ยนแปลงได้มากในขณะที่ยังคงความเข้ากันได้แบบย้อนหลัง นามสกุลที่แนะนำสำหรับไฟล์ Event Stream คือ . es
สำหรับไบต์ b
, b[0]
หมายถึง LSB (บิตที่มีนัยสำคัญน้อยที่สุด) และ b[7]
หมายถึง MSB (บิตที่สำคัญที่สุด)
ไฟล์ Event Stream ทุกไฟล์เริ่มต้นด้วยส่วนหัวขนาด 15 ไบต์:
ตำแหน่ง | เนื้อหา |
---|---|
ไบต์ 0 ถึง 11 | 0x45 0x76 0x65 0x6e 0x74 0x20 0x53 0x74 0x72 0x65 0x61 0x6d ( สตรีมเหตุการณ์ ที่เข้ารหัส ASCII) |
ไบต์ 12 | รุ่นหลัก |
ไบต์ 13 | รุ่นรอง |
ไบต์ 14 | เวอร์ชั่นแพทช์ |
การกำหนดหมายเลขเวอร์ชันเป็นไปตามแบบแผนการกำหนดเวอร์ชันเชิงความหมาย ไบต์ 15 ถึงจุดสิ้นสุดขึ้นอยู่กับเวอร์ชัน คำอธิบายเนื้อหาได้รับด้านล่าง
ไฟล์สามารถแสดงสตรีมได้ห้าประเภท: เหตุการณ์ทั่วไป, เหตุการณ์ DVS, เหตุการณ์ ATIS, เหตุการณ์ Asynchronous & Modular Display และเหตุการณ์สี ประเภทจะถูกเก็บไว้ในไบต์ 15:
ไบต์ 15 | ประเภทสตรีม |
---|---|
0x00 | เหตุการณ์ทั่วไป |
0x01 | งานกิจกรรมดีวีเอส |
0x02 | งานกิจกรรมเอทิส |
0x03 | เหตุการณ์การแสดงผลแบบอะซิงโครนัสและโมดูลาร์ |
0x04 | กิจกรรมสี |
ไบต์ 16 ถึงจุดสิ้นสุดสามารถเป็นค่าใด ๆ ของ การตั้งค่า โอเวอร์ โฟลว์ ไบต์ 0 ขนาดไบต์ และ ไบต์ข้อมูล ลำดับที่เป็นไปได้ของไบต์เหล่านี้กำหนดโดยเครื่องสถานะ:
ไบต์เข้ารหัสข้อมูลต่อไปนี้:
ชื่อไบต์ | MSB | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิต 1 | แอลเอสบี |
---|---|---|---|---|---|---|---|---|
รีเซ็ต | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
ล้น | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
ไบต์ 0 | t[7] | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] |
ขนาดไบต์ | s[6] | s[5] | s[4] | s[3] | s[2] | s[1] | s[0] | is_last |
ไบต์ข้อมูล | d[7] | d[6] | d[5] | d[4] | d[3] | d[2] | d[1] | d[0] |
การรีเซ็ต เป็นการแทรกไบต์พิเศษเมื่อเห็นว่าจำเป็นเพื่อแก้ไขข้อผิดพลาดของเครื่องสถานะอันเป็นผลมาจากข้อผิดพลาดบิต
t เข้ารหัสเวลาที่ผ่านไปนับตั้งแต่เหตุการณ์ก่อนหน้าในหน่วยไมโครวินาที และไม่สามารถเป็น 0b11111110
หรือ 0b11111111
ได้ หากเวลานี้เท่ากับหรือมากกว่า 0b11111110
ไมโครวินาที จะมีการแทรกไบต์ โอเวอร์โฟลว์ หนึ่งหรือหลายไบต์ก่อนเหตุการณ์ เวลาจริงที่ผ่านไปนับตั้งแต่เหตุการณ์สุดท้ายสามารถคำนวณได้เป็นการประทับเวลาของเหตุการณ์ปัจจุบันบวก 0b11111110
ไมโครวินาที คูณด้วยจำนวนไบต์ ล้น
เพย์โหลดข้อมูลของแต่ละเหตุการณ์เริ่มต้นด้วยไบต์ขนาดหนึ่งหรือหลายไบต์ ซึ่งจะเข้ารหัสจำนวนไบต์ข้อมูลที่จะอ่าน จำนวน n
ไบต์ข้อมูลที่จะอ่านกำหนดโดย:
n = ∑ (s_i) << (7 * i)
โดยที่ s_i, i ∈ [0, k - 1]
หมายถึงค่า (i + 1) s
และ k
คือจำนวนไบต์ขนาด จำนวนไบต์ขนาดขั้นต่ำขึ้นอยู่กับจำนวนไบต์ข้อมูล เหตุการณ์ในสตรีมเดียวกันสามารถมีจำนวนไบต์ข้อมูลและจำนวนไบต์ขนาดต่างกันได้ ไบต์ข้อมูล n
ต้องมีไบต์ขนาดอย่างน้อย Γlb(n + 1) / 7⅂
โดยที่ Γ…⅂
คือฟังก์ชัน ceil และ lb(…)
คือลอการิทึมไบนารี แอปพลิเคชันหรืออุปกรณ์ที่สร้างเหตุการณ์ทั่วไปได้รับการสนับสนุนให้ใช้จำนวนขั้นต่ำนี้ แม้ว่าข้อกำหนดเฉพาะของ Event Stream จะอนุญาตให้มีไบต์ขนาดใหญ่กว่าก็ตาม
is_last
เท่ากับ 0
สำหรับไบต์ขนาดสุดท้ายก่อนไบต์ข้อมูล และ 1
อย่างอื่น
d
เข้ารหัสข้อมูลที่ผู้ใช้ให้ไว้
ไบต์ 16 ถึง 19 เข้ารหัสความกว้างและความสูงของเซ็นเซอร์:
ชื่อไบต์ | MSB | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิต 1 | แอลเอสบี |
---|---|---|---|---|---|---|---|---|
ไบต์ 16 | w[7] | w[6] | w[5] | w[4] | w[3] | w[2] | w[1] | w[0] |
ไบต์ 17 | w[15] | w[14] | w[13] | w[12] | w[11] | w[10] | w[9] | w[8] |
ไบต์ 18 | h[7] | h[6] | h[5] | h[4] | h[3] | h[2] | h[1] | h[0] |
ไบต์ 19 | h[15] | h[14] | h[13] | h[12] | h[11] | h[10] | h[9] | h[8] |
w
(ตามลำดับ h
) เข้ารหัสความกว้างของเซ็นเซอร์ (ความสูงตามลำดับ) พิกัด x (ตามลำดับ y) ของเหตุการณ์ต้องอยู่ในช่วงจำนวนเต็ม [0, w - 1]
(ตามลำดับ [0, h - 1]
)
ไบต์ที่ 20 ถึงจุดสิ้นสุดอาจเป็นค่าใดก็ได้ รีเซ็ต , โอเวอร์โฟลว์ , ไบต์ 0 , ไบต์ 1 , ไบต์ 2 , ไบต์ 3 และ ไบต์ 4 ลำดับที่เป็นไปได้ของไบต์เหล่านี้กำหนดโดยเครื่องสถานะ:
ไบต์เข้ารหัสข้อมูลต่อไปนี้:
ชื่อไบต์ | MSB | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิต 1 | แอลเอสบี |
---|---|---|---|---|---|---|---|---|
รีเซ็ต | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
ล้น | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
ไบต์ 0 | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] | is_increase |
ไบต์ 1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
ไบต์ 2 | x[15] | x[14] | x[13] | x[12] | x[11] | x[10] | x[9] | x[8] |
ไบต์ 3 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
ไบต์ 4 | y[15] | y[14] | y[13] | y[12] | y[11] | y[10] | y[9] | y[8] |
การรีเซ็ต เป็นเหตุการณ์พิเศษที่ถูกแทรกเมื่อเห็นว่าจำเป็นเพื่อแก้ไขข้อผิดพลาดของเครื่องสถานะอันเป็นผลมาจากข้อผิดพลาดบิต ควรแทรกไบต์ รีเซ็ต ครั้งละห้าไบต์ เพื่อให้อ่านอย่างน้อยหนึ่งไบต์ในขณะที่อยู่ในสถานะ ไม่ได้ใช้งาน
t
เข้ารหัสเวลาที่ผ่านไปนับตั้งแต่เหตุการณ์ก่อนหน้าในหน่วยไมโครวินาที และไม่สามารถเป็น 0b1111111
ได้ หากเวลานี้เท่ากับหรือมากกว่า 0b1111111
ไมโครวินาที ระบบจะแทรกไบต์ โอเวอร์โฟล ว์หนึ่งหรือหลายไบต์ก่อนเหตุการณ์ เวลาจริงที่ผ่านไปนับตั้งแต่เหตุการณ์สุดท้ายสามารถคำนวณได้เป็นการประทับเวลาของเหตุการณ์ปัจจุบันบวก 0b1111111
ไมโครวินาที คูณด้วยจำนวนไบต์ ล้น
is_increase
เท่ากับ 1
สำหรับเหตุการณ์การเพิ่มแสง และ 0
อย่างอื่น
x
และ y
เข้ารหัสพิกัดพิกเซลที่เกี่ยวข้องกับเหตุการณ์
ไบต์ 16 ถึง 19 เข้ารหัสความกว้างและความสูงของเซ็นเซอร์:
ชื่อไบต์ | MSB | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิต 1 | แอลเอสบี |
---|---|---|---|---|---|---|---|---|
ไบต์ 16 | w[7] | w[6] | w[5] | w[4] | w[3] | w[2] | w[1] | w[0] |
ไบต์ 17 | w[15] | w[14] | w[13] | w[12] | w[11] | w[10] | w[9] | w[8] |
ไบต์ 18 | h[7] | h[6] | h[5] | h[4] | h[3] | h[2] | h[1] | h[0] |
ไบต์ 19 | h[15] | h[14] | h[13] | h[12] | h[11] | h[10] | h[9] | h[8] |
w
(ตามลำดับ h
) เข้ารหัสความกว้างของเซ็นเซอร์ (ความสูงตามลำดับ) พิกัด x (ตามลำดับ y) ของเหตุการณ์ต้องอยู่ในช่วงจำนวนเต็ม [0, w - 1]
(ตามลำดับ [0, h - 1]
)
ไบต์ที่ 20 ถึงจุดสิ้นสุดอาจเป็นค่าใดก็ได้ รีเซ็ต , โอเวอร์โฟลว์ , ไบต์ 0 , ไบต์ 1 , ไบต์ 2 , ไบต์ 3 และ ไบต์ 4 ลำดับที่เป็นไปได้ของไบต์เหล่านี้กำหนดโดยเครื่องสถานะ:
ไบต์เข้ารหัสข้อมูลต่อไปนี้:
ชื่อไบต์ | MSB | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิต 1 | แอลเอสบี |
---|---|---|---|---|---|---|---|---|
รีเซ็ต | 1 | 1 | 1 | 1 | 1 | 1 | 0 | 0 |
ล้น | 1 | 1 | 1 | 1 | 1 | 1 | overflow[1] | overflow[0] |
ไบต์ 0 | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] | polarity | is_tc |
ไบต์ 1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
ไบต์ 2 | x[15] | x[14] | x[13] | x[12] | x[11] | x[10] | x[9] | x[8] |
ไบต์ 3 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
ไบต์ 4 | y[15] | y[14] | y[13] | y[12] | y[11] | y[10] | y[9] | y[8] |
การรีเซ็ต เป็นเหตุการณ์พิเศษที่ถูกแทรกเมื่อเห็นว่าจำเป็นเพื่อแก้ไขข้อผิดพลาดของเครื่องสถานะอันเป็นผลมาจากข้อผิดพลาดบิต ควรแทรกไบต์ รีเซ็ต ครั้งละห้าไบต์ เพื่อให้อ่านอย่างน้อยหนึ่งไบต์ในขณะที่อยู่ในสถานะ ไม่ได้ใช้งาน
t
เข้ารหัสเวลาที่ผ่านไปนับตั้งแต่เหตุการณ์ก่อนหน้าในหน่วยไมโครวินาที และไม่สามารถเป็น 0b111111
ได้ หากเวลานี้เท่ากับหรือมากกว่า 0b111111
ไมโครวินาที ระบบจะแทรกไบต์ โอเวอร์โฟล ว์หนึ่งหรือหลายไบต์ก่อนเหตุการณ์ เวลาจริงที่ผ่านไปนับตั้งแต่เหตุการณ์สุดท้ายสามารถคำนวณได้เป็นการประทับเวลาของเหตุการณ์ปัจจุบันบวก 0b111111
ไมโครวินาที คูณด้วยตัวเลขที่เข้ารหัสโดย overflow[0]
, overflow[1]
สำหรับแต่ละเหตุการณ์ ล้น
is_tc
เท่ากับ 0
สำหรับเหตุการณ์ DVS และ 1
สำหรับการข้ามเกณฑ์ (การวัดการสัมผัสครึ่งหนึ่ง) ร้านค้า polarity
is_increase
สำหรับเหตุการณ์ DVS และ is_second
สำหรับการข้ามเกณฑ์
x
และ y
เข้ารหัสพิกัดพิกเซลที่เกี่ยวข้องกับเหตุการณ์
ไบต์ 16 ถึงจุดสิ้นสุดสามารถเป็นค่าใด ๆ ก็ได้ของ reset , overflow , byte 0 , byte 1 , byte 2 และ byte_3 ลำดับที่เป็นไปได้ของไบต์เหล่านี้กำหนดโดยเครื่องสถานะ:
ไบต์เข้ารหัสข้อมูลต่อไปนี้:
ชื่อไบต์ | MSB | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิต 1 | แอลเอสบี |
---|---|---|---|---|---|---|---|---|
รีเซ็ต | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
ล้น | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
ไบต์ 0 | t[7] | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] |
ไบต์ 1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
ไบต์ 2 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
ไบต์ 3 | s[7] | s[6] | s[5] | s[4] | s[3] | s[2] | s[1] | s[0] |
การรีเซ็ต เป็นเหตุการณ์พิเศษที่ถูกแทรกเมื่อเห็นว่าจำเป็นเพื่อแก้ไขข้อผิดพลาดของเครื่องสถานะอันเป็นผลมาจากข้อผิดพลาดบิต ควรแทรกไบต์ รีเซ็ต ทีละสี่ไบต์ เพื่อให้อ่านอย่างน้อยหนึ่งไบต์ในขณะที่อยู่ในสถานะ ไม่ได้ใช้งาน
t
เข้ารหัสเวลาที่ผ่านไปนับตั้งแต่เหตุการณ์ก่อนหน้าในหน่วยไมโครวินาที และไม่สามารถเป็น 0b11111110
หรือ 0b11111111
ได้ หากเวลานี้เท่ากับหรือมากกว่า 0b11111110
ไมโครวินาที จะมีการแทรกไบต์ โอเวอร์โฟลว์ หนึ่งหรือหลายไบต์ก่อนเหตุการณ์ เวลาจริงที่ผ่านไปนับตั้งแต่เหตุการณ์สุดท้ายสามารถคำนวณได้เป็นการประทับเวลาของเหตุการณ์ปัจจุบันบวก 0b11111110
ไมโครวินาที คูณด้วยจำนวนไบต์ ล้น
x
และ y
เข้ารหัสพิกัดพิกเซลที่เกี่ยวข้องกับเหตุการณ์
s
เข้ารหัสระยะปัจจุบันในปิรามิด ภายนอกจอแสดงผล ค่าควรเป็น 0b00000000
(ดูรายละเอียดในเอกสารประกอบการแสดงผลแบบอะซิงโครนัสและโมดูลาร์)
ไบต์ 16 ถึง 19 เข้ารหัสความกว้างและความสูงของเซ็นเซอร์:
ชื่อไบต์ | MSB | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิต 1 | แอลเอสบี |
---|---|---|---|---|---|---|---|---|
ไบต์ 16 | w[7] | w[6] | w[5] | w[4] | w[3] | w[2] | w[1] | w[0] |
ไบต์ 17 | w[15] | w[14] | w[13] | w[12] | w[11] | w[10] | w[9] | w[8] |
ไบต์ 18 | h[7] | h[6] | h[5] | h[4] | h[3] | h[2] | h[1] | h[0] |
ไบต์ 19 | h[15] | h[14] | h[13] | h[12] | h[11] | h[10] | h[9] | h[8] |
w
(ตามลำดับ h
) เข้ารหัสความกว้างของเซ็นเซอร์ (ความสูงตามลำดับ) พิกัด x (ตามลำดับ y) ของเหตุการณ์ต้องอยู่ในช่วงจำนวนเต็ม [0, w - 1]
(ตามลำดับ [0, h - 1]
)
ไบต์ที่ 20 ถึงจุดสิ้นสุดอาจเป็นค่าใดก็ได้ รีเซ็ต , ล้น , ไบต์ 0 , ไบต์ 1 , ไบต์ 2 , ไบต์ 3 , ไบต์ 4 , ไบต์ 5 , ไบต์ 6 และ ไบต์ 7 ลำดับที่เป็นไปได้ของไบต์เหล่านี้กำหนดโดยเครื่องสถานะ:
ไบต์เข้ารหัสข้อมูลต่อไปนี้:
ชื่อไบต์ | MSB | บิต 6 | บิต 5 | บิต 4 | บิต 3 | บิต 2 | บิต 1 | แอลเอสบี |
---|---|---|---|---|---|---|---|---|
รีเซ็ต | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 0 |
ล้น | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
ไบต์ 0 | t[7] | t[6] | t[5] | t[4] | t[3] | t[2] | t[1] | t[0] |
ไบต์ 1 | x[7] | x[6] | x[5] | x[4] | x[3] | x[2] | x[1] | x[0] |
ไบต์ 2 | x[15] | x[14] | x[13] | x[12] | x[11] | x[10] | x[9] | x[8] |
ไบต์ 3 | y[7] | y[6] | y[5] | y[4] | y[3] | y[2] | y[1] | y[0] |
ไบต์ 4 | y[15] | y[14] | y[13] | y[12] | y[11] | y[10] | y[9] | y[8] |
ไบต์ 5 | r[7] | r[6] | r[5] | r[4] | r[3] | r[2] | r[1] | r[0] |
ไบต์ 6 | g[7] | g[6] | g[5] | g[4] | g[3] | g[2] | g[1] | g[0] |
ไบต์ 7 | b[7] | b[6] | b[5] | b[4] | b[3] | b[2] | b[1] | b[0] |
การรีเซ็ต เป็นเหตุการณ์พิเศษที่ถูกแทรกเมื่อเห็นว่าจำเป็นเพื่อแก้ไขข้อผิดพลาดของเครื่องสถานะอันเป็นผลมาจากข้อผิดพลาดบิต ไบต์ รีเซ็ต ควรแทรกความสูงในแต่ละครั้ง เพื่อให้อ่านอย่างน้อยหนึ่งไบต์ในขณะที่อยู่ในสถานะ ไม่ได้ใช้งาน
t
เข้ารหัสเวลาที่ผ่านไปนับตั้งแต่เหตุการณ์ก่อนหน้าในหน่วยไมโครวินาที และไม่สามารถเป็น 0b11111110
หรือ 0b11111111
ได้ หากเวลานี้เท่ากับหรือมากกว่า 0b11111110
ไมโครวินาที จะมีการแทรกไบต์ โอเวอร์โฟลว์ หนึ่งหรือหลายไบต์ก่อนเหตุการณ์ เวลาจริงที่ผ่านไปนับตั้งแต่เหตุการณ์สุดท้ายสามารถคำนวณได้เป็นการประทับเวลาของเหตุการณ์ปัจจุบันบวก 0b11111110
ไมโครวินาที คูณด้วยจำนวนไบต์ ล้น
x
และ y
เข้ารหัสพิกัดพิกเซลที่เกี่ยวข้องกับเหตุการณ์
r
, g
และ b
เข้ารหัสส่วนประกอบสีแดง เขียว และน้ำเงิน
ดูไฟล์ LICENSE สำหรับสิทธิ์และข้อจำกัดของใบอนุญาต (GNU GPLv3)