Complete anime diagonal gif support for GA402

This commit is contained in:
I-Al-Istannen
2022-07-10 13:23:21 +02:00
committed by Luke D. Jones
parent f3f6fadfe2
commit a2c8a226a4
10 changed files with 69 additions and 81 deletions

View File

@@ -80,8 +80,7 @@ pub struct AnimeConfigCached {
}
impl AnimeConfigCached {
pub fn init_from_config(&mut self, config: &AnimeConfig) -> Result<(), AnimeError> {
let anime_type = AnimeType::GA401; // TODO: detect
pub fn init_from_config(&mut self, config: &AnimeConfig, anime_type: AnimeType) -> Result<(), AnimeError> {
let mut sys = Vec::with_capacity(config.system.len());
for ani in config.system.iter() {
sys.push(ActionData::from_anime_action(anime_type, ani)?);

View File

@@ -11,8 +11,7 @@ use rog_anime::{
find_node, get_anime_type, pkt_for_apply, pkt_for_flush, pkt_for_set_boot, pkt_for_set_on,
pkts_for_init, PROD_ID, VENDOR_ID,
},
ActionData, AnimeDataBuffer, AnimePacketType, AnimeType, ANIME_GA401_DATA_LEN,
ANIME_GA402_DATA_LEN,
ActionData, AnimeDataBuffer, AnimePacketType, AnimeType,
};
use rog_supported::AnimeSupportedFunctions;
use rusb::{Device, DeviceHandle};
@@ -61,7 +60,7 @@ impl CtrlAnime {
info!("Device has an AniMe Matrix display");
let mut cache = AnimeConfigCached::default();
cache.init_from_config(&config)?;
cache.init_from_config(&config, anime_type)?;
let ctrl = CtrlAnime {
_node: node,
@@ -202,16 +201,10 @@ impl CtrlAnime {
}
// Clear the display on exit
if let Ok(lock) = inner.try_lock() {
let data = match anime_type {
AnimeType::GA401 => AnimeDataBuffer::from_vec(
anime_type,
[0u8; ANIME_GA401_DATA_LEN].to_vec(),
),
AnimeType::GA402 => AnimeDataBuffer::from_vec(
anime_type,
[0u8; ANIME_GA402_DATA_LEN].to_vec(),
),
};
let data = AnimeDataBuffer::from_vec(
anime_type,
vec![0u8; anime_type.data_length()],
);
lock.write_data_buffer(data);
}
// Loop ended, set the atmonics