edition 2024

This commit is contained in:
Sam W 2025-06-19 00:36:38 +01:00
parent 3e1ecb0df1
commit aaa8640a96
24 changed files with 52 additions and 23 deletions

View File

@ -1,7 +1,7 @@
[package] [package]
name = "atem-connection-rs" name = "atem-connection-rs"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2024"
[dependencies] [dependencies]
derive-getters = "0.2.0" derive-getters = "0.2.0"

View File

@ -1,5 +1,5 @@
use core::{fmt::Display, str}; use core::{fmt::Display, str};
use enumflags2::{bitflags, BitFlags}; use enumflags2::{BitFlags, bitflags};
use super::atem_field::{Field, FieldParsingError, RawField}; use super::atem_field::{Field, FieldParsingError, RawField};

View File

@ -9,7 +9,7 @@ pub trait DeserializedCommand: Send + Sync + Debug {
pub trait CommandDeserializer: Send + Sync { pub trait CommandDeserializer: Send + Sync {
fn deserialize(&self, buffer: &[u8], version: &ProtocolVersion) fn deserialize(&self, buffer: &[u8], version: &ProtocolVersion)
-> Arc<dyn DeserializedCommand>; -> Arc<dyn DeserializedCommand>;
} }
pub trait SerializableCommand: Send + Sync { pub trait SerializableCommand: Send + Sync {

View File

@ -1,4 +1,5 @@
use std::sync::Arc; use std::sync::Arc;
use derive_new::new;
use crate::{ use crate::{
commands::command_base::{ commands::command_base::{

View File

@ -2,7 +2,7 @@ use std::{collections::VecDeque, sync::Arc};
use crate::{ use crate::{
atem_lib::atem_packet::{AtemPacket, RawFields}, atem_lib::atem_packet::{AtemPacket, RawFields},
commands::device_profile::version::{deserialize_version, DESERIALIZE_VERSION_RAW_NAME}, commands::device_profile::version::{DESERIALIZE_VERSION_RAW_NAME, deserialize_version},
enums::ProtocolVersion, enums::ProtocolVersion,
}; };
@ -10,20 +10,20 @@ use super::{
command_base::{CommandDeserializer, DeserializedCommand}, command_base::{CommandDeserializer, DeserializedCommand},
device_profile::{ device_profile::{
audio_mixer_config::{AudioMixerConfigDeserializer, DESERIALIZE_AUDIO_MIXER_CONFIG_NAME}, audio_mixer_config::{AudioMixerConfigDeserializer, DESERIALIZE_AUDIO_MIXER_CONFIG_NAME},
media_pool_config::{MediaPoolConfigDeserializer, DESERIALIZE_MEDIA_POOL_CONFIG_NAME}, media_pool_config::{DESERIALIZE_MEDIA_POOL_CONFIG_NAME, MediaPoolConfigDeserializer},
mix_effect_block_config::{ mix_effect_block_config::{
MixEffectBlockConfigDeserializer, DESERIALIZE_MIX_EFFECT_BLOCK_CONFIG_NAME, DESERIALIZE_MIX_EFFECT_BLOCK_CONFIG_NAME, MixEffectBlockConfigDeserializer,
}, },
multiviewer_config::{MultiviewerConfigDeserializer, DESERIALIZE_MULTIVIEWER_NAME}, multiviewer_config::{DESERIALIZE_MULTIVIEWER_NAME, MultiviewerConfigDeserializer},
product_identifier::{ product_identifier::{
ProductIdentifierDeserializer, DESERIALIZE_PRODUCT_IDENTIFIER_RAW_NAME, DESERIALIZE_PRODUCT_IDENTIFIER_RAW_NAME, ProductIdentifierDeserializer,
}, },
topology::{TopologyDeserializer, DESERIALIZE_TOPOLOGY_RAW_NAME}, topology::{DESERIALIZE_TOPOLOGY_RAW_NAME, TopologyDeserializer},
}, },
init_complete::{InitCompleteDeserializer, DESERIALIZE_INIT_COMPLETE_RAW_NAME}, init_complete::{DESERIALIZE_INIT_COMPLETE_RAW_NAME, InitCompleteDeserializer},
mix_effects::program_input::{ProgramInputDeserializer, DESERIALIZE_PROGRAM_INPUT_RAW_NAME}, mix_effects::program_input::{DESERIALIZE_PROGRAM_INPUT_RAW_NAME, ProgramInputDeserializer},
tally_by_source::{TallyBySourceDeserializer, DESERIALIZE_TALLY_BY_SOURCE_RAW_NAME}, tally_by_source::{DESERIALIZE_TALLY_BY_SOURCE_RAW_NAME, TallyBySourceDeserializer},
time::{TimeDeserializer, DESERIALIZE_TIME_RAW_NAME}, time::{DESERIALIZE_TIME_RAW_NAME, TimeDeserializer},
}; };
pub fn deserialize_commands<T: AsRef<[u8]>>( pub fn deserialize_commands<T: AsRef<[u8]>>(

View File

@ -1,3 +1,4 @@
use derive_new::new;
use std::{collections::HashMap, sync::Arc}; use std::{collections::HashMap, sync::Arc};
use crate::enums::ProtocolVersion; use crate::enums::ProtocolVersion;

View File

@ -1,7 +1,4 @@
#[macro_use]
extern crate derive_new;
#[macro_use]
extern crate derive_getters;
pub mod atem; pub mod atem;
pub mod atem_lib; pub mod atem_lib;

View File

@ -1,3 +1,5 @@
use derive_getters::Getters;
use derive_new::new;
#[derive(Clone, PartialEq, Getters, new, Default)] #[derive(Clone, PartialEq, Getters, new, Default)]
pub struct MacroPlayerState { pub struct MacroPlayerState {
pub is_running: bool, pub is_running: bool,

View File

@ -1,6 +1,8 @@
use std::collections::HashMap; use std::collections::HashMap;
use crate::enums::{AudioMixOption, AudioSourceType, ExternalPortType}; use crate::enums::{AudioMixOption, AudioSourceType, ExternalPortType};
use derive_getters::Getters;
use derive_new::new;
pub type AudioChannel = ClassicAudioChannel; pub type AudioChannel = ClassicAudioChannel;
pub type AudioMasterChannel = ClassicAudioMasterChannel; pub type AudioMasterChannel = ClassicAudioMasterChannel;

View File

@ -1,3 +1,5 @@
use derive_getters::Getters;
use derive_new::new;
#[derive(Clone, PartialEq, Getters, new)] #[derive(Clone, PartialEq, Getters, new)]
pub struct ColorGeneratorState { pub struct ColorGeneratorState {
pub hue: u64, pub hue: u64,

View File

@ -1,3 +1,5 @@
use derive_getters::Getters;
use derive_new::new;
#[derive(Clone, PartialEq, Getters, new)] #[derive(Clone, PartialEq, Getters, new)]
pub struct Timecode { pub struct Timecode {
pub hours: u64, pub hours: u64,

View File

@ -1,4 +1,6 @@
use std::collections::HashMap; use std::collections::HashMap;
use derive_getters::Getters;
use derive_new::new;
use crate::enums::{ use crate::enums::{
ExternalPortType, FairlightAnalogInputLevel, FairlightAudioMixOption, FairlightAudioSourceType, ExternalPortType, FairlightAnalogInputLevel, FairlightAudioMixOption, FairlightAudioSourceType,

View File

@ -1,4 +1,6 @@
use crate::enums::{Model, ProtocolVersion}; use crate::enums::{Model, ProtocolVersion};
use derive_getters::Getters;
use derive_new::new;
#[derive(Clone, PartialEq, Getters, new)] #[derive(Clone, PartialEq, Getters, new)]
pub struct AtemCapabilites { pub struct AtemCapabilites {

View File

@ -1,4 +1,6 @@
use crate::enums::{ExternalPortType, InternalPortType, MeAvailability, SourceAvailability}; use crate::enums::{ExternalPortType, InternalPortType, MeAvailability, SourceAvailability};
use derive_getters::Getters;
use derive_new::new;
#[derive(Clone, PartialEq, Getters, new)] #[derive(Clone, PartialEq, Getters, new)]
pub struct InputChannel { pub struct InputChannel {

View File

@ -1,4 +1,6 @@
use crate::enums; use crate::enums;
use derive_getters::Getters;
use derive_new::new;
#[derive(Clone, PartialEq, Getters, new)] #[derive(Clone, PartialEq, Getters, new)]
pub struct MediaPlayer { pub struct MediaPlayer {

View File

@ -1,3 +1,5 @@
use derive_getters::Getters;
use derive_new::new;
use std::collections::HashMap; use std::collections::HashMap;
use crate::enums::{RecordingDiskStatus, RecordingError, RecordingStatus}; use crate::enums::{RecordingDiskStatus, RecordingError, RecordingStatus};

View File

@ -1,4 +1,6 @@
use crate::enums::{MultiViewerLayout, VideoMode}; use crate::enums::{MultiViewerLayout, VideoMode};
use derive_getters::Getters;
use derive_new::new;
pub trait MultiViewerSourceState { pub trait MultiViewerSourceState {
fn get_source(&self) -> u64; fn get_source(&self) -> u64;

View File

@ -1,4 +1,6 @@
use crate::enums::{StreamingError, StreamingStatus}; use crate::enums::{StreamingError, StreamingStatus};
use derive_getters::Getters;
use derive_new::new;
use super::common::Timecode; use super::common::Timecode;

View File

@ -1,9 +1,9 @@
use crate::enums::{TransitionSelection, TransitionStyle}; use crate::enums::{TransitionSelection, TransitionStyle};
use super::{ use super::{
AtemState,
settings::MultiViewer, settings::MultiViewer,
video::{MixEffect, TransitionPosition, TransitionProperties, TransitionSettings}, video::{MixEffect, TransitionPosition, TransitionProperties, TransitionSettings},
AtemState,
}; };
pub fn create() -> AtemState { pub fn create() -> AtemState {

View File

@ -1,3 +1,5 @@
use derive_getters::Getters;
use derive_new::new;
pub trait DownstreamKeyerBase { pub trait DownstreamKeyerBase {
fn get_in_transition(&self) -> bool; fn get_in_transition(&self) -> bool;
fn get_remaining_frames(&self) -> f64; fn get_remaining_frames(&self) -> f64;

View File

@ -1,4 +1,6 @@
use crate::enums; use crate::enums;
use derive_getters::Getters;
use derive_new::new;
mod downstream_keyers; mod downstream_keyers;
mod super_source; mod super_source;

View File

@ -1,4 +1,6 @@
use crate::enums; use crate::enums;
use derive_getters::Getters;
use derive_new::new;
#[derive(Clone, PartialEq, Getters, new)] #[derive(Clone, PartialEq, Getters, new)]
pub struct SuperSourceBox { pub struct SuperSourceBox {

View File

@ -1,9 +1,7 @@
[package] [package]
name = "atem-test" name = "atem-test"
version = "0.1.0" version = "0.1.0"
edition = "2021" edition = "2024"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies] [dependencies]
atem-connection-rs = { path = "../atem-connection-rs" } atem-connection-rs = { path = "../atem-connection-rs" }

View File

@ -69,12 +69,16 @@ async fn main() {
fn setup_logging() -> Result<(), Report> { fn setup_logging() -> Result<(), Report> {
if std::env::var("RUST_LIB_BACKTRACE").is_err() { if std::env::var("RUST_LIB_BACKTRACE").is_err() {
std::env::set_var("RUST_LIB_BACKTRACE", "1"); unsafe {
std::env::set_var("RUST_LIB_BACKTRACE", "1");
}
} }
color_eyre::install()?; color_eyre::install()?;
if std::env::var("RUST_LOG").is_err() { if std::env::var("RUST_LOG").is_err() {
std::env::set_var("RUST_LOG", "debug"); unsafe {
std::env::set_var("RUST_LOG", "debug");
}
} }
env_logger::init(); env_logger::init();