1use crate::V5_DeviceT;
4
5#[repr(transparent)]
6#[derive(Default, Debug, Copy, Clone, Eq, PartialEq)]
7pub struct V5VisionMode(pub core::ffi::c_uchar);
8
9impl V5VisionMode {
10 pub const kVisionModeNormal: Self = Self(0);
11 pub const kVisionModeMixed: Self = Self(1);
12 pub const kVisionModeLineDetect: Self = Self(2);
13 pub const kVisionTypeTest: Self = Self(3);
14}
15
16#[repr(transparent)]
17#[derive(Default, Debug, Copy, Clone, Eq, PartialEq)]
18pub struct V5VisionBlockType(pub core::ffi::c_uchar);
19
20impl V5VisionBlockType {
21 pub const kVisionTypeNormal: Self = Self(0);
22 pub const kVisionTypeColorCode: Self = Self(1);
23 pub const kVisionTypeLineDetect: Self = Self(2);
24}
25
26#[repr(C, packed)]
27#[derive(Default, Debug, Copy, Clone, Eq, PartialEq)]
28pub struct V5_DeviceVisionObject {
29 pub signature: u16,
31 pub r#type: V5VisionBlockType,
33 pub xoffset: u16,
35 pub yoffset: u16,
37 pub width: u16,
39 pub height: u16,
41 pub angle: u16,
43}
44
45#[repr(C, packed)]
46#[derive(Default, Debug, Copy, Clone, PartialEq)]
47pub struct V5_DeviceVisionSignature {
48 pub id: u8,
49 pub flags: u8,
50 pub pad: [u8; 2],
51 pub range: f32,
52 pub uMin: i32,
53 pub uMax: i32,
54 pub uMean: i32,
55 pub vMin: i32,
56 pub vMax: i32,
57 pub vMean: i32,
58 pub mRgb: u32,
59 pub mType: u32,
60}
61
62#[repr(transparent)]
63#[derive(Default, Debug, Copy, Clone, Eq, PartialEq)]
64pub struct V5VisionWBMode(pub core::ffi::c_uchar);
65
66impl V5VisionWBMode {
67 pub const kVisionWBNormal: Self = Self(0);
68 pub const kVisionWBStart: Self = Self(1);
69 pub const kVisionWBManual: Self = Self(2);
70}
71
72#[repr(C, packed)]
73#[derive(Default, Debug, Copy, Clone, Eq, PartialEq)]
74pub struct V5_DeviceVisionRgb {
75 pub red: u8,
76 pub green: u8,
77 pub blue: u8,
78 pub brightness: u8,
79}
80
81#[repr(transparent)]
82#[derive(Default, Debug, Copy, Clone, Eq, PartialEq)]
83pub struct V5VisionLedMode(pub core::ffi::c_uchar);
84
85impl V5VisionLedMode {
86 pub const kVisionLedModeAuto: Self = Self(0);
87 pub const kVisionLedModeManual: Self = Self(1);
88}
89
90#[repr(transparent)]
91#[derive(Default, Debug, Copy, Clone, Eq, PartialEq)]
92pub struct V5VisionWifiMode(pub core::ffi::c_uchar);
93
94impl V5VisionWifiMode {
95 pub const kVisionWifiModeOff: Self = Self(0);
96 pub const kVisionWifiModeOn: Self = Self(1);
97}
98
99unsafe extern "system" {
100 pub fn vexDeviceVisionModeSet(device: V5_DeviceT, mode: V5VisionMode);
101 pub fn vexDeviceVisionModeGet(device: V5_DeviceT) -> V5VisionMode;
102 pub fn vexDeviceVisionObjectCountGet(device: V5_DeviceT) -> i32;
103 pub fn vexDeviceVisionObjectGet(
104 device: V5_DeviceT,
105 index: u32,
106 object: *mut V5_DeviceVisionObject,
107 ) -> i32;
108 pub fn vexDeviceVisionSignatureSet(
109 device: V5_DeviceT,
110 signature: *mut V5_DeviceVisionSignature,
111 );
112 pub fn vexDeviceVisionSignatureGet(
113 device: V5_DeviceT,
114 id: u32,
115 signature: *mut V5_DeviceVisionSignature,
116 ) -> bool;
117 pub fn vexDeviceVisionBrightnessSet(device: V5_DeviceT, percent: u8);
118 pub fn vexDeviceVisionBrightnessGet(device: V5_DeviceT) -> u8;
119 pub fn vexDeviceVisionWhiteBalanceModeSet(device: V5_DeviceT, mode: V5VisionWBMode);
120 pub fn vexDeviceVisionWhiteBalanceModeGet(device: V5_DeviceT) -> V5VisionWBMode;
121 pub fn vexDeviceVisionWhiteBalanceSet(device: V5_DeviceT, color: V5_DeviceVisionRgb);
122 pub fn vexDeviceVisionWhiteBalanceGet(device: V5_DeviceT) -> V5_DeviceVisionRgb;
123 pub fn vexDeviceVisionLedModeSet(device: V5_DeviceT, mode: V5VisionLedMode);
124 pub fn vexDeviceVisionLedModeGet(device: V5_DeviceT) -> V5VisionLedMode;
125 pub fn vexDeviceVisionLedBrigntnessSet(device: V5_DeviceT, percent: u8);
126 pub fn vexDeviceVisionLedBrigntnessGet(device: V5_DeviceT) -> u8;
127 pub fn vexDeviceVisionLedColorSet(device: V5_DeviceT, color: V5_DeviceVisionRgb);
128 pub fn vexDeviceVisionLedColorGet(device: V5_DeviceT) -> V5_DeviceVisionRgb;
129 pub fn vexDeviceVisionWifiModeSet(device: V5_DeviceT, mode: V5VisionWifiMode);
130 pub fn vexDeviceVisionWifiModeGet(device: V5_DeviceT) -> V5VisionWifiMode;
131}