use crate::error::{not_implemented, OnvifError};
use crate::generated::{PTZPreset, PTZStatusResult};
use async_trait::async_trait;
#[async_trait]
pub trait PTZService: Send + Sync + 'static {
async fn relative_move(
&self,
_profile_token: &str,
_pan: f32,
_tilt: f32,
_zoom: f32,
) -> Result<(), OnvifError> {
not_implemented()
}
async fn absolute_move(
&self,
_profile_token: &str,
_pan: f32,
_tilt: f32,
_zoom: f32,
) -> Result<(), OnvifError> {
not_implemented()
}
async fn continuous_move(
&self,
_profile_token: &str,
_pan: f32,
_tilt: f32,
_zoom: f32,
) -> Result<(), OnvifError> {
not_implemented()
}
async fn stop(
&self,
_profile_token: &str,
_pan_tilt: bool,
_zoom: bool,
) -> Result<(), OnvifError> {
not_implemented()
}
async fn get_status(&self, _profile_token: &str) -> Result<PTZStatusResult, OnvifError> {
not_implemented()
}
async fn get_presets(&self, _profile_token: &str) -> Result<Vec<PTZPreset>, OnvifError> {
Ok(vec![])
}
async fn goto_preset(
&self,
_profile_token: &str,
_preset_token: &str,
) -> Result<(), OnvifError> {
not_implemented()
}
async fn set_preset(
&self,
_profile_token: &str,
_preset_name: Option<&str>,
_preset_token: Option<&str>,
) -> Result<String, OnvifError> {
not_implemented()
}
async fn remove_preset(
&self,
_profile_token: &str,
_preset_token: &str,
) -> Result<(), OnvifError> {
not_implemented()
}
}