pub struct drmModeConnector { /* private fields */ }Implementations§
Source§impl drmModeConnector
impl drmModeConnector
Sourcepub fn get_drm_mode_connector_properties(
&self,
fd: i32,
) -> Option<drmModeObjectProperties>
pub fn get_drm_mode_connector_properties( &self, fd: i32, ) -> Option<drmModeObjectProperties>
Examples found in repository?
examples/drm_mode.rs (line 43)
4fn main() {
5 let fd = {
6 use std::os::fd::IntoRawFd;
7
8 let f = File::open("/dev/dri/card0").unwrap();
9
10 f.into_raw_fd()
11 };
12
13 let libdrm = LibDrm::new().unwrap();
14 libdrm.set_all_client_caps(fd);
15 let drm_mode_res = libdrm.get_drm_mode_resources(fd).unwrap();
16 let current_connectors = drm_mode_res.get_drm_mode_all_connector_current(fd);
17
18 for connector in current_connectors.iter() {
19 println!(
20 "Connector {} ({}-{}), {}",
21 connector.connector_id(),
22 connector.connector_type(),
23 connector.connector_type_id(),
24 connector.connection(),
25 );
26
27 let modes = connector.get_modes();
28
29 if !modes.is_empty() {
30 println!(" Modes");
31 for mode in connector.get_modes() {
32 println!(
33 " {}x{}@{:.2}{}{}",
34 mode.vdisplay,
35 mode.hdisplay,
36 mode.refresh_rate(),
37 if mode.type_is_preferred() { " preferred" } else { "" },
38 if mode.type_is_driver() { " driver" } else { "" },
39 );
40 }
41 }
42
43 if let Some(conn_prop) = connector.get_drm_mode_connector_properties(fd) {
44 let mode_props = conn_prop.get_mode_property(fd);
45
46 for (prop, value) in mode_props {
47 let type_ = prop.property_type();
48
49 println!(
50 " {:?}, id: {}, value: {}, type: {}",
51 prop.name(),
52 prop.prop_id(),
53 value,
54 type_,
55 );
56
57 match type_ {
58 drmModePropType::RANGE => println!(" values: {:?}", prop.values()),
59 drmModePropType::ENUM => {
60 print!(" enums: [");
61 for enum_ in prop.enums().iter() {
62 print!("{:?}={}, ", enum_.name(), enum_.value);
63 }
64 println!("] ");
65 },
66 drmModePropType::BLOB => {
67 if let Some(b) = libdrm.get_drm_mode_property_blob(fd, value as u32) {
68 print!(" blob:");
69
70 for (i, byte) in b.data().iter().enumerate() {
71 if (i % 16) == 0 { print!("\n "); }
72 print!("{byte:02x}");
73 }
74
75 println!();
76 }
77 },
78 _ => {},
79 }
80 }
81 }
82 println!();
83 }
84}Source§impl drmModeConnector
impl drmModeConnector
pub fn get(fd: i32, connector_id: u32) -> Option<Self>
pub fn get_current(fd: i32, connector_id: u32) -> Option<Self>
pub fn set( fd: i32, connector_id: u32, property_id: u32, value: u64, ) -> Result<(), i32>
Sourcepub fn connection(&self) -> drmModeConnection
pub fn connection(&self) -> drmModeConnection
Examples found in repository?
examples/drm_mode.rs (line 24)
4fn main() {
5 let fd = {
6 use std::os::fd::IntoRawFd;
7
8 let f = File::open("/dev/dri/card0").unwrap();
9
10 f.into_raw_fd()
11 };
12
13 let libdrm = LibDrm::new().unwrap();
14 libdrm.set_all_client_caps(fd);
15 let drm_mode_res = libdrm.get_drm_mode_resources(fd).unwrap();
16 let current_connectors = drm_mode_res.get_drm_mode_all_connector_current(fd);
17
18 for connector in current_connectors.iter() {
19 println!(
20 "Connector {} ({}-{}), {}",
21 connector.connector_id(),
22 connector.connector_type(),
23 connector.connector_type_id(),
24 connector.connection(),
25 );
26
27 let modes = connector.get_modes();
28
29 if !modes.is_empty() {
30 println!(" Modes");
31 for mode in connector.get_modes() {
32 println!(
33 " {}x{}@{:.2}{}{}",
34 mode.vdisplay,
35 mode.hdisplay,
36 mode.refresh_rate(),
37 if mode.type_is_preferred() { " preferred" } else { "" },
38 if mode.type_is_driver() { " driver" } else { "" },
39 );
40 }
41 }
42
43 if let Some(conn_prop) = connector.get_drm_mode_connector_properties(fd) {
44 let mode_props = conn_prop.get_mode_property(fd);
45
46 for (prop, value) in mode_props {
47 let type_ = prop.property_type();
48
49 println!(
50 " {:?}, id: {}, value: {}, type: {}",
51 prop.name(),
52 prop.prop_id(),
53 value,
54 type_,
55 );
56
57 match type_ {
58 drmModePropType::RANGE => println!(" values: {:?}", prop.values()),
59 drmModePropType::ENUM => {
60 print!(" enums: [");
61 for enum_ in prop.enums().iter() {
62 print!("{:?}={}, ", enum_.name(), enum_.value);
63 }
64 println!("] ");
65 },
66 drmModePropType::BLOB => {
67 if let Some(b) = libdrm.get_drm_mode_property_blob(fd, value as u32) {
68 print!(" blob:");
69
70 for (i, byte) in b.data().iter().enumerate() {
71 if (i % 16) == 0 { print!("\n "); }
72 print!("{byte:02x}");
73 }
74
75 println!();
76 }
77 },
78 _ => {},
79 }
80 }
81 }
82 println!();
83 }
84}Sourcepub fn connector_type(&self) -> drmModeConnectorType
pub fn connector_type(&self) -> drmModeConnectorType
Examples found in repository?
examples/drm_mode.rs (line 22)
4fn main() {
5 let fd = {
6 use std::os::fd::IntoRawFd;
7
8 let f = File::open("/dev/dri/card0").unwrap();
9
10 f.into_raw_fd()
11 };
12
13 let libdrm = LibDrm::new().unwrap();
14 libdrm.set_all_client_caps(fd);
15 let drm_mode_res = libdrm.get_drm_mode_resources(fd).unwrap();
16 let current_connectors = drm_mode_res.get_drm_mode_all_connector_current(fd);
17
18 for connector in current_connectors.iter() {
19 println!(
20 "Connector {} ({}-{}), {}",
21 connector.connector_id(),
22 connector.connector_type(),
23 connector.connector_type_id(),
24 connector.connection(),
25 );
26
27 let modes = connector.get_modes();
28
29 if !modes.is_empty() {
30 println!(" Modes");
31 for mode in connector.get_modes() {
32 println!(
33 " {}x{}@{:.2}{}{}",
34 mode.vdisplay,
35 mode.hdisplay,
36 mode.refresh_rate(),
37 if mode.type_is_preferred() { " preferred" } else { "" },
38 if mode.type_is_driver() { " driver" } else { "" },
39 );
40 }
41 }
42
43 if let Some(conn_prop) = connector.get_drm_mode_connector_properties(fd) {
44 let mode_props = conn_prop.get_mode_property(fd);
45
46 for (prop, value) in mode_props {
47 let type_ = prop.property_type();
48
49 println!(
50 " {:?}, id: {}, value: {}, type: {}",
51 prop.name(),
52 prop.prop_id(),
53 value,
54 type_,
55 );
56
57 match type_ {
58 drmModePropType::RANGE => println!(" values: {:?}", prop.values()),
59 drmModePropType::ENUM => {
60 print!(" enums: [");
61 for enum_ in prop.enums().iter() {
62 print!("{:?}={}, ", enum_.name(), enum_.value);
63 }
64 println!("] ");
65 },
66 drmModePropType::BLOB => {
67 if let Some(b) = libdrm.get_drm_mode_property_blob(fd, value as u32) {
68 print!(" blob:");
69
70 for (i, byte) in b.data().iter().enumerate() {
71 if (i % 16) == 0 { print!("\n "); }
72 print!("{byte:02x}");
73 }
74
75 println!();
76 }
77 },
78 _ => {},
79 }
80 }
81 }
82 println!();
83 }
84}Sourcepub fn connector_id(&self) -> u32
pub fn connector_id(&self) -> u32
Examples found in repository?
examples/drm_mode.rs (line 21)
4fn main() {
5 let fd = {
6 use std::os::fd::IntoRawFd;
7
8 let f = File::open("/dev/dri/card0").unwrap();
9
10 f.into_raw_fd()
11 };
12
13 let libdrm = LibDrm::new().unwrap();
14 libdrm.set_all_client_caps(fd);
15 let drm_mode_res = libdrm.get_drm_mode_resources(fd).unwrap();
16 let current_connectors = drm_mode_res.get_drm_mode_all_connector_current(fd);
17
18 for connector in current_connectors.iter() {
19 println!(
20 "Connector {} ({}-{}), {}",
21 connector.connector_id(),
22 connector.connector_type(),
23 connector.connector_type_id(),
24 connector.connection(),
25 );
26
27 let modes = connector.get_modes();
28
29 if !modes.is_empty() {
30 println!(" Modes");
31 for mode in connector.get_modes() {
32 println!(
33 " {}x{}@{:.2}{}{}",
34 mode.vdisplay,
35 mode.hdisplay,
36 mode.refresh_rate(),
37 if mode.type_is_preferred() { " preferred" } else { "" },
38 if mode.type_is_driver() { " driver" } else { "" },
39 );
40 }
41 }
42
43 if let Some(conn_prop) = connector.get_drm_mode_connector_properties(fd) {
44 let mode_props = conn_prop.get_mode_property(fd);
45
46 for (prop, value) in mode_props {
47 let type_ = prop.property_type();
48
49 println!(
50 " {:?}, id: {}, value: {}, type: {}",
51 prop.name(),
52 prop.prop_id(),
53 value,
54 type_,
55 );
56
57 match type_ {
58 drmModePropType::RANGE => println!(" values: {:?}", prop.values()),
59 drmModePropType::ENUM => {
60 print!(" enums: [");
61 for enum_ in prop.enums().iter() {
62 print!("{:?}={}, ", enum_.name(), enum_.value);
63 }
64 println!("] ");
65 },
66 drmModePropType::BLOB => {
67 if let Some(b) = libdrm.get_drm_mode_property_blob(fd, value as u32) {
68 print!(" blob:");
69
70 for (i, byte) in b.data().iter().enumerate() {
71 if (i % 16) == 0 { print!("\n "); }
72 print!("{byte:02x}");
73 }
74
75 println!();
76 }
77 },
78 _ => {},
79 }
80 }
81 }
82 println!();
83 }
84}Sourcepub fn connector_type_id(&self) -> u32
pub fn connector_type_id(&self) -> u32
Examples found in repository?
examples/drm_mode.rs (line 23)
4fn main() {
5 let fd = {
6 use std::os::fd::IntoRawFd;
7
8 let f = File::open("/dev/dri/card0").unwrap();
9
10 f.into_raw_fd()
11 };
12
13 let libdrm = LibDrm::new().unwrap();
14 libdrm.set_all_client_caps(fd);
15 let drm_mode_res = libdrm.get_drm_mode_resources(fd).unwrap();
16 let current_connectors = drm_mode_res.get_drm_mode_all_connector_current(fd);
17
18 for connector in current_connectors.iter() {
19 println!(
20 "Connector {} ({}-{}), {}",
21 connector.connector_id(),
22 connector.connector_type(),
23 connector.connector_type_id(),
24 connector.connection(),
25 );
26
27 let modes = connector.get_modes();
28
29 if !modes.is_empty() {
30 println!(" Modes");
31 for mode in connector.get_modes() {
32 println!(
33 " {}x{}@{:.2}{}{}",
34 mode.vdisplay,
35 mode.hdisplay,
36 mode.refresh_rate(),
37 if mode.type_is_preferred() { " preferred" } else { "" },
38 if mode.type_is_driver() { " driver" } else { "" },
39 );
40 }
41 }
42
43 if let Some(conn_prop) = connector.get_drm_mode_connector_properties(fd) {
44 let mode_props = conn_prop.get_mode_property(fd);
45
46 for (prop, value) in mode_props {
47 let type_ = prop.property_type();
48
49 println!(
50 " {:?}, id: {}, value: {}, type: {}",
51 prop.name(),
52 prop.prop_id(),
53 value,
54 type_,
55 );
56
57 match type_ {
58 drmModePropType::RANGE => println!(" values: {:?}", prop.values()),
59 drmModePropType::ENUM => {
60 print!(" enums: [");
61 for enum_ in prop.enums().iter() {
62 print!("{:?}={}, ", enum_.name(), enum_.value);
63 }
64 println!("] ");
65 },
66 drmModePropType::BLOB => {
67 if let Some(b) = libdrm.get_drm_mode_property_blob(fd, value as u32) {
68 print!(" blob:");
69
70 for (i, byte) in b.data().iter().enumerate() {
71 if (i % 16) == 0 { print!("\n "); }
72 print!("{byte:02x}");
73 }
74
75 println!();
76 }
77 },
78 _ => {},
79 }
80 }
81 }
82 println!();
83 }
84}pub fn encoder_id(&self) -> u32
pub fn mmWidth(&self) -> u32
pub fn mmHeight(&self) -> u32
pub fn get_connector_props(&self, fd: i32) -> Option<drmModeObjectProperties>
Sourcepub fn get_modes(&self) -> Vec<drmModeModeInfo> ⓘ
pub fn get_modes(&self) -> Vec<drmModeModeInfo> ⓘ
Examples found in repository?
examples/drm_mode.rs (line 27)
4fn main() {
5 let fd = {
6 use std::os::fd::IntoRawFd;
7
8 let f = File::open("/dev/dri/card0").unwrap();
9
10 f.into_raw_fd()
11 };
12
13 let libdrm = LibDrm::new().unwrap();
14 libdrm.set_all_client_caps(fd);
15 let drm_mode_res = libdrm.get_drm_mode_resources(fd).unwrap();
16 let current_connectors = drm_mode_res.get_drm_mode_all_connector_current(fd);
17
18 for connector in current_connectors.iter() {
19 println!(
20 "Connector {} ({}-{}), {}",
21 connector.connector_id(),
22 connector.connector_type(),
23 connector.connector_type_id(),
24 connector.connection(),
25 );
26
27 let modes = connector.get_modes();
28
29 if !modes.is_empty() {
30 println!(" Modes");
31 for mode in connector.get_modes() {
32 println!(
33 " {}x{}@{:.2}{}{}",
34 mode.vdisplay,
35 mode.hdisplay,
36 mode.refresh_rate(),
37 if mode.type_is_preferred() { " preferred" } else { "" },
38 if mode.type_is_driver() { " driver" } else { "" },
39 );
40 }
41 }
42
43 if let Some(conn_prop) = connector.get_drm_mode_connector_properties(fd) {
44 let mode_props = conn_prop.get_mode_property(fd);
45
46 for (prop, value) in mode_props {
47 let type_ = prop.property_type();
48
49 println!(
50 " {:?}, id: {}, value: {}, type: {}",
51 prop.name(),
52 prop.prop_id(),
53 value,
54 type_,
55 );
56
57 match type_ {
58 drmModePropType::RANGE => println!(" values: {:?}", prop.values()),
59 drmModePropType::ENUM => {
60 print!(" enums: [");
61 for enum_ in prop.enums().iter() {
62 print!("{:?}={}, ", enum_.name(), enum_.value);
63 }
64 println!("] ");
65 },
66 drmModePropType::BLOB => {
67 if let Some(b) = libdrm.get_drm_mode_property_blob(fd, value as u32) {
68 print!(" blob:");
69
70 for (i, byte) in b.data().iter().enumerate() {
71 if (i % 16) == 0 { print!("\n "); }
72 print!("{byte:02x}");
73 }
74
75 println!();
76 }
77 },
78 _ => {},
79 }
80 }
81 }
82 println!();
83 }
84}Trait Implementations§
Source§impl Clone for drmModeConnector
impl Clone for drmModeConnector
Source§fn clone(&self) -> drmModeConnector
fn clone(&self) -> drmModeConnector
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for drmModeConnector
impl RefUnwindSafe for drmModeConnector
impl !Send for drmModeConnector
impl !Sync for drmModeConnector
impl Unpin for drmModeConnector
impl UnwindSafe for drmModeConnector
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more