#![allow(non_upper_case_globals)]
use crate::generated::binding::*;
use thiserror::Error;
pub type SmiResult<T> = Result<T, SmiError>;
#[derive(Debug, Error)]
pub enum SmiError {
#[error("Invalid argument error")]
InvalidArgumentError,
#[error("Null pointer error")]
NullPointerError,
#[error("Max buffer size exceeded error")]
MaxBufferSizeExceedError,
#[error("Device not found error")]
DeviceNotFoundError,
#[error("Device busy error")]
DeviceBusyError,
#[error("Io error")]
IoError,
#[error("Permission denied error")]
PermissionDeniedError,
#[error("Unknown arch error")]
UnknownArchError,
#[error("Incompatible driver error")]
IncompatibleDriverError,
#[error("Unexpected value error")]
UnexpectedValueError,
#[error("Parse error")]
ParseError,
#[error("Unknown error")]
UnknownError,
#[error("Internal error")]
InternalError,
#[error("Uninitialized error")]
UninitializedError,
#[error("Context error")]
ContextError,
#[error("Not supported error")]
NotSupportedError,
}
impl SmiError {
pub(crate) fn from(code: FuriosaSmiReturnCode) -> SmiError {
match code {
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_INVALID_ARGUMENT_ERROR => {
SmiError::InvalidArgumentError
}
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_NULL_POINTER_ERROR => {
SmiError::NullPointerError
}
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_MAX_BUFFER_SIZE_EXCEED_ERROR => {
SmiError::MaxBufferSizeExceedError
}
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_DEVICE_NOT_FOUND_ERROR => {
SmiError::DeviceNotFoundError
}
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_DEVICE_BUSY_ERROR => {
SmiError::DeviceBusyError
}
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_IO_ERROR => SmiError::IoError,
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_PERMISSION_DENIED_ERROR => {
SmiError::PermissionDeniedError
}
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_UNKNOWN_ARCH_ERROR => {
SmiError::UnknownArchError
}
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_INCOMPATIBLE_DRIVER_ERROR => {
SmiError::IncompatibleDriverError
}
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_UNEXPECTED_VALUE_ERROR => {
SmiError::UnexpectedValueError
}
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_PARSE_ERROR => SmiError::ParseError,
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_UNKNOWN_ERROR => SmiError::UnknownError,
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_INTERNAL_ERROR => SmiError::InternalError,
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_UNINITIALIZED_ERROR => {
SmiError::UninitializedError
}
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_CONTEXT_ERROR => SmiError::ContextError,
FuriosaSmiReturnCode_FURIOSA_SMI_RETURN_CODE_NOT_SUPPORTED_ERROR => {
SmiError::NotSupportedError
}
_ => panic!("unknown error code"),
}
}
}