feat: _top
This commit is contained in:
		
							parent
							
								
									25460d77cd
								
							
						
					
					
						commit
						5e5d3508f0
					
				| @ -3,6 +3,7 @@ use std::sync::Arc; | |||||||
| use crate::{ | use crate::{ | ||||||
|     commands::command_base::{CommandDeserializer, DeserializedCommand}, |     commands::command_base::{CommandDeserializer, DeserializedCommand}, | ||||||
|     enums::ProtocolVersion, |     enums::ProtocolVersion, | ||||||
|  |     state::info::{AtemCapabilites, MultiviewerInfo}, | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| pub const DESERIALIZE_TOPOLOGY_RAW_NAME: &str = "_top"; | pub const DESERIALIZE_TOPOLOGY_RAW_NAME: &str = "_top"; | ||||||
| @ -29,17 +30,43 @@ pub struct Topology { | |||||||
| 
 | 
 | ||||||
| impl DeserializedCommand for Topology { | impl DeserializedCommand for Topology { | ||||||
|     fn raw_name(&self) -> &'static str { |     fn raw_name(&self) -> &'static str { | ||||||
|         todo!() |         DESERIALIZE_TOPOLOGY_RAW_NAME | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn apply_to_state(&self, state: &mut crate::state::AtemState) { |     fn apply_to_state(&self, state: &mut crate::state::AtemState) { | ||||||
|         todo!() |         state.info.capabilities = Some(AtemCapabilites::new( | ||||||
|  |             self.mix_effects, | ||||||
|  |             self.sources, | ||||||
|  |             self.auxilliaries, | ||||||
|  |             self.mix_minus_outputs, | ||||||
|  |             self.media_players, | ||||||
|  |             self.serial_ports, | ||||||
|  |             self.max_hyperdecks, | ||||||
|  |             self.dves, | ||||||
|  |             self.stingers, | ||||||
|  |             self.super_sources, | ||||||
|  |             self.talkback_channels, | ||||||
|  |             self.downstream_keyers, | ||||||
|  |             self.camera_control, | ||||||
|  |             self.advanced_chroma_keyers, | ||||||
|  |             self.only_configurable_outputs, | ||||||
|  |         )); | ||||||
|  |         if let Some(multiviewers) = self.multiviewers { | ||||||
|  |             let window_count = if let Some(mv) = &state.info.multiviewer { | ||||||
|  |                 *mv.window_count() | ||||||
|  |             } else { | ||||||
|  |                 10 | ||||||
|  |             }; | ||||||
|  | 
 | ||||||
|  |             state.info.multiviewer = Some(MultiviewerInfo::new(multiviewers, window_count)) | ||||||
|  |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| pub struct TopologyCommandDeserializer {} | #[derive(Default)] | ||||||
|  | pub struct TopologyDeserializer {} | ||||||
| 
 | 
 | ||||||
| impl CommandDeserializer for TopologyCommandDeserializer { | impl CommandDeserializer for TopologyDeserializer { | ||||||
|     fn deserialize( |     fn deserialize( | ||||||
|         &self, |         &self, | ||||||
|         buffer: &[u8], |         buffer: &[u8], | ||||||
|  | |||||||
| @ -7,9 +7,12 @@ use crate::{ | |||||||
| 
 | 
 | ||||||
| use super::{ | use super::{ | ||||||
|     command_base::{CommandDeserializer, DeserializedCommand}, |     command_base::{CommandDeserializer, DeserializedCommand}, | ||||||
|     device_profile::product_identifier::{ |     device_profile::{ | ||||||
|  |         product_identifier::{ | ||||||
|             ProductIdentifierDeserializer, DESERIALIZE_PRODUCT_IDENTIFIER_RAW_NAME, |             ProductIdentifierDeserializer, DESERIALIZE_PRODUCT_IDENTIFIER_RAW_NAME, | ||||||
|         }, |         }, | ||||||
|  |         topology::{TopologyDeserializer, DESERIALIZE_TOPOLOGY_RAW_NAME}, | ||||||
|  |     }, | ||||||
|     init_complete::{InitCompleteDeserializer, DESERIALIZE_INIT_COMPLETE_RAW_NAME}, |     init_complete::{InitCompleteDeserializer, DESERIALIZE_INIT_COMPLETE_RAW_NAME}, | ||||||
|     mix_effects::program_input::{ProgramInputDeserializer, DESERIALIZE_PROGRAM_INPUT_RAW_NAME}, |     mix_effects::program_input::{ProgramInputDeserializer, DESERIALIZE_PROGRAM_INPUT_RAW_NAME}, | ||||||
|     tally_by_source::{TallyBySourceDeserializer, DESERIALIZE_TALLY_BY_SOURCE_RAW_NAME}, |     tally_by_source::{TallyBySourceDeserializer, DESERIALIZE_TALLY_BY_SOURCE_RAW_NAME}, | ||||||
| @ -64,6 +67,7 @@ fn command_deserializer_from_string(command_str: &str) -> Option<Box<dyn Command | |||||||
|         DESERIALIZE_PROGRAM_INPUT_RAW_NAME => Some(Box::<ProgramInputDeserializer>::default()), |         DESERIALIZE_PROGRAM_INPUT_RAW_NAME => Some(Box::<ProgramInputDeserializer>::default()), | ||||||
|         DESERIALIZE_TALLY_BY_SOURCE_RAW_NAME => Some(Box::<TallyBySourceDeserializer>::default()), |         DESERIALIZE_TALLY_BY_SOURCE_RAW_NAME => Some(Box::<TallyBySourceDeserializer>::default()), | ||||||
|         DESERIALIZE_TIME_RAW_NAME => Some(Box::<TimeDeserializer>::default()), |         DESERIALIZE_TIME_RAW_NAME => Some(Box::<TimeDeserializer>::default()), | ||||||
|  |         DESERIALIZE_TOPOLOGY_RAW_NAME => Some(Box::<TopologyDeserializer>::default()), | ||||||
|         DESERIALIZE_PRODUCT_IDENTIFIER_RAW_NAME => { |         DESERIALIZE_PRODUCT_IDENTIFIER_RAW_NAME => { | ||||||
|             Some(Box::<ProductIdentifierDeserializer>::default()) |             Some(Box::<ProductIdentifierDeserializer>::default()) | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -3,17 +3,17 @@ use crate::enums::{Model, ProtocolVersion}; | |||||||
| #[derive(Clone, PartialEq, Getters, new)] | #[derive(Clone, PartialEq, Getters, new)] | ||||||
| pub struct AtemCapabilites { | pub struct AtemCapabilites { | ||||||
|     mix_effects: u8, |     mix_effects: u8, | ||||||
|     sources: u64, |     sources: u8, | ||||||
|     auxilliaries: u64, |     auxilliaries: u8, | ||||||
|     mix_minus_outputs: u64, |     mix_minus_outputs: u8, | ||||||
|     media_players: u64, |     media_players: u8, | ||||||
|     serial_ports: u64, |     serial_ports: u8, | ||||||
|     max_hyperdecks: u64, |     max_hyperdecks: u8, | ||||||
|     dves: u64, |     dves: u8, | ||||||
|     stingers: u64, |     stingers: u8, | ||||||
|     super_sources: u64, |     super_sources: u8, | ||||||
|     talkback_channels: u64, |     talkback_channels: u8, | ||||||
|     downstream_keyers: u64, |     downstream_keyers: u8, | ||||||
|     camera_control: bool, |     camera_control: bool, | ||||||
|     advanced_chroma_keyers: bool, |     advanced_chroma_keyers: bool, | ||||||
|     only_configurable_outputs: bool, |     only_configurable_outputs: bool, | ||||||
| @ -55,8 +55,8 @@ pub struct MediaPoolInfo { | |||||||
| 
 | 
 | ||||||
| #[derive(Clone, PartialEq, Getters, new)] | #[derive(Clone, PartialEq, Getters, new)] | ||||||
| pub struct MultiviewerInfo { | pub struct MultiviewerInfo { | ||||||
|     count: u64, |     count: u8, | ||||||
|     window_count: u64, |     window_count: u8, | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| #[derive(Clone, PartialEq, new)] | #[derive(Clone, PartialEq, new)] | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user