use crate::vsomeip;
use cxx::{type_id, ExternType, SharedPtr};
#[repr(transparent)]
pub struct AvailabilityHandlerFnPtr(
pub extern "C" fn(
service: crate::ffi::vsomeip_v3::service_t,
instance: crate::ffi::vsomeip_v3::instance_t,
availability: bool,
),
);
unsafe impl ExternType for AvailabilityHandlerFnPtr {
type Id = type_id!("glue::availability_handler_fn_ptr");
type Kind = cxx::kind::Trivial;
}
#[repr(transparent)]
#[derive(Debug)]
pub struct MessageHandlerFnPtr(pub extern "C" fn(&SharedPtr<vsomeip::message>));
unsafe impl ExternType for MessageHandlerFnPtr {
type Id = type_id!("glue::message_handler_fn_ptr");
type Kind = cxx::kind::Trivial;
}
#[repr(transparent)]
pub struct SubscriptionStatusHandlerFnPtr(
pub extern "C" fn(
service: crate::ffi::vsomeip_v3::service_t,
instance: crate::ffi::vsomeip_v3::instance_t,
eventgroup: crate::ffi::vsomeip_v3::eventgroup_t,
event: crate::ffi::vsomeip_v3::event_t,
status: u16, // TODO: This should really be an enum with a repr of u16: 0x00: OK or 0x7 Not OK
),
);
unsafe impl ExternType for SubscriptionStatusHandlerFnPtr {
type Id = type_id!("glue::subscription_status_handler_fn_ptr");
type Kind = cxx::kind::Trivial;
}
#[repr(transparent)]
pub struct AvailableStateHandlerFnPtr(
pub extern "C" fn(registration_state: crate::ffi::vsomeip_v3::state_type_e),
);
unsafe impl ExternType for AvailableStateHandlerFnPtr {
type Id = type_id!("glue::state_handler_fn_ptr");
type Kind = cxx::kind::Trivial;
}