diff options
author | Takashi Sakamoto <o-takashi@sakamocchi.jp> | 2022-03-18 14:59:34 +0900 |
---|---|---|
committer | 坂本 貴史 <o-takashi@sakamocchi.jp> | 2022-03-18 15:15:25 +0900 |
commit | 1e5a789c75cc387eea9f7659dfdd31fbb043dca0 (patch) | |
tree | 1ac8ce66605ad4f37d581c3a3f87fd2433cced9c | |
parent | dc12db077ab0dffd1f98725b055924a4a56075bf (diff) | |
download | hinawa-rs-1e5a789c75cc387eea9f7659dfdd31fbb043dca0.tar.gz |
hinawa: move example code
This commit moves example code from README to simplify it.
Signed-off-by: Takashi Sakamoto <o-takashi@sakamocchi.jp>
-rw-r--r-- | README.rst | 42 | ||||
-rw-r--r-- | hinawa/examples/read-quadlet.rs | 33 |
2 files changed, 37 insertions, 38 deletions
@@ -36,44 +36,10 @@ Dependencies * ``glib`` >= 0.15 * FFI crate (``hinawa-sys``) -Sample code -=========== - -Read 1 quadlet from address ``0xfffff0000404`` on the node represented as ``/dev/fw0`` :: - - extern crate hinawa; - extern crate glib; - - use hinawa::FwNodeExt; - use hinawa::FwReqExtManual; - - - fn main() { - let node = hinawa::FwNode::new(); - node.open("/dev/fw0").unwrap(); - - let ctx = glib::MainContext::new(); - let src = node.create_source().unwrap(); - src.attach(Some(&ctx)); - - let dispatcher = glib::MainLoop::new(Some(&ctx), false); - let cntr = std::sync::Arc::new(dispatcher); - let d = cntr.clone(); - let th = std::thread::spawn(move|| { - d.run(); - () - }); - - let req = hinawa::FwReq::new(); - let mut frames = [0;4]; - req.transaction(&node, FwTcode::ReadQuadletRequest, 0xfffff0000404, 4, - &mut frames).unwrap(); - - assert_eq!(0x31333934, u32::from_be_bytes(frames)); - - cntr.quit(); - th.join().unwrap(); - } +Examples +======== + +See ``hinawa/examples`` directory. How to generate FFI and API crates ================================== diff --git a/hinawa/examples/read-quadlet.rs b/hinawa/examples/read-quadlet.rs new file mode 100644 index 0000000..7a044aa --- /dev/null +++ b/hinawa/examples/read-quadlet.rs @@ -0,0 +1,33 @@ +// SPDX-License-Identifier: MIT +use glib::*; +use hinawa::{traits::*, *}; + +const PATH: &str = "/dev/fw1"; +const OFFSET: u64 = 0xfffff0000404; + +fn main() { + let node = FwNode::new(); + node.open(PATH).unwrap(); + + let ctx = MainContext::new(); + let src = node.create_source().unwrap(); + src.attach(Some(&ctx)); + + let dispatcher = MainLoop::new(Some(&ctx), false); + let cntr = std::sync::Arc::new(dispatcher); + let d = cntr.clone(); + let th = std::thread::spawn(move || { + d.run(); + () + }); + + let req = hinawa::FwReq::new(); + let mut frames = [0; 4]; + req.transaction(&node, FwTcode::ReadQuadletRequest, OFFSET, 4, &mut frames) + .unwrap(); + + assert_eq!(0x31333934, u32::from_be_bytes(frames)); + + cntr.quit(); + th.join().unwrap(); +} |