From e5042ef307f7ec80f849c3d662c8d577786ebcbc Mon Sep 17 00:00:00 2001
From: Jens Getreu <getreu@web.de>
Date: Tue, 19 Sep 2017 09:59:44 +0300
Subject: [PATCH] refactor examples to work with RTFM v2

---
 examples/concurrency.rs | 25 +++++++++++++++----------
 examples/preemption.rs  | 18 ++++++++++++------
 examples/resource.rs    | 19 +++++++++++++------
 examples/roulette.rs    |  4 ++--
 4 files changed, 42 insertions(+), 24 deletions(-)

diff --git a/examples/concurrency.rs b/examples/concurrency.rs
index 77a6ebb..45739ba 100644
--- a/examples/concurrency.rs
+++ b/examples/concurrency.rs
@@ -9,15 +9,19 @@ extern crate cortex_m;
 extern crate cortex_m_rtfm as rtfm;
 extern crate f3;
 
-use cast::{usize, u8};
-use cortex_m::peripheral::SystClkSource;
+use f3::Serial;
 use f3::led::{self, LEDS};
-use f3::serial::Serial;
+use f3::prelude::*;
+use f3::serial::Event;
+use f3::time::Hertz;
+use cortex_m::peripheral::SystClkSource;
+use cast::{usize, u8};
 use rtfm::{app, Threshold};
 
 // CONFIGURATION
-const BAUD_RATE: u32 = 115_200; // bits per second
-const FREQUENCY: u32 = 4; // Hz
+const BAUD_RATE: Hertz = Hertz(115_200);
+const DIVISOR: u32 = 4;
+
 
 // TASKS & RESOURCES
 app! {
@@ -42,13 +46,14 @@ app! {
 
 // INITIALIZATION PHASE
 fn init(p: init::Peripherals, _r: init::Resources) {
-    let serial = Serial(&p.USART1);
+    led::init(p.GPIOE, p.RCC);
 
-    led::init(&p.GPIOE, &p.RCC);
-    serial.init(&p.GPIOA, &p.RCC, BAUD_RATE);
+    let serial = Serial(p.USART1);
+    serial.init(BAUD_RATE.invert(), Some(p.DMA1), p.GPIOA, p.RCC);
+    serial.listen(Event::Rxne);
 
     p.SYST.set_clock_source(SystClkSource::Core);
-    p.SYST.set_reload(8_000_000 / FREQUENCY);
+    p.SYST.set_reload(8_000_000 / DIVISOR);
     p.SYST.enable_interrupt();
     p.SYST.enable_counter();
 }
@@ -63,7 +68,7 @@ fn idle() -> ! {
 
 // TASKS
 fn loopback(_t: &mut Threshold, r: USART1_EXTI25::Resources) {
-    let serial = Serial(&r.USART1);
+    let serial = Serial(&**r.USART1);
 
     if let Ok(byte) = serial.read() {
         if serial.write(byte).is_err() {
diff --git a/examples/preemption.rs b/examples/preemption.rs
index 8e480d1..2a193e6 100644
--- a/examples/preemption.rs
+++ b/examples/preemption.rs
@@ -20,14 +20,17 @@ extern crate heapless;
 
 use cast::{usize, u8};
 use cortex_m::peripheral::SystClkSource;
+use f3::Serial;
 use f3::led::{self, LEDS};
-use f3::serial::Serial;
+use f3::prelude::*;
+use f3::serial::Event;
 use heapless::Vec;
 use rtfm::{app, Resource, Threshold};
+use f3::time::Hertz;
 
 // CONFIGURATION
-const BAUD_RATE: u32 = 115_200; // bits per second
-const FREQUENCY: u32 = 4; // Hz
+const BAUD_RATE: Hertz = Hertz(115_200);
+const DIVISOR: u32 = 4;
 
 // TASK & RESOURCES
 app!{
@@ -57,10 +60,13 @@ app!{
 // INITIALIZATION PHASE
 fn init(p: init::Peripherals, _r: init::Resources) {
     led::init(&p.GPIOE, &p.RCC);
-    Serial(&p.USART1).init(&p.GPIOA, &p.RCC, BAUD_RATE);
+
+    let serial = Serial(p.USART1);
+    serial.init(BAUD_RATE.invert(), Some(p.DMA1), p.GPIOA, p.RCC);
+    serial.listen(Event::Rxne);
 
     p.SYST.set_clock_source(SystClkSource::Core);
-    p.SYST.set_reload(8_000_000 / FREQUENCY);
+    p.SYST.set_reload(8_000_000 / DIVISOR);
     p.SYST.enable_interrupt();
     p.SYST.enable_counter();
 }
@@ -75,7 +81,7 @@ fn idle() -> ! {
 
 // TASKS
 fn receive(t: &mut Threshold, mut r: USART1_EXTI25::Resources) {
-    let serial = Serial(&r.USART1);
+    let serial = Serial(&**r.USART1);
 
     let byte = serial.read().unwrap();
     if serial.write(byte).is_err() {
diff --git a/examples/resource.rs b/examples/resource.rs
index 3959ca4..66f35ef 100644
--- a/examples/resource.rs
+++ b/examples/resource.rs
@@ -23,14 +23,17 @@ extern crate heapless;
 
 use cast::{usize, u8};
 use cortex_m::peripheral::SystClkSource;
+use f3::Serial;
 use f3::led::{self, LEDS};
-use f3::serial::Serial;
+use f3::prelude::*;
+use f3::serial::Event;
+use f3::time::Hertz;
 use heapless::Vec;
 use rtfm::{app, Threshold};
 
 // CONFIGURATION
-const BAUD_RATE: u32 = 115_200; // bits per second
-const FREQUENCY: u32 = 4; // Hz
+const BAUD_RATE: Hertz = Hertz(115_200);
+const DIVISOR: u32 = 4; 
 
 // TASKS & RESOURCES
 app! {
@@ -59,10 +62,14 @@ app! {
 // INITIALIZATION PHASE
 fn init(p: init::Peripherals, _r: init::Resources) {
     led::init(&p.GPIOE, &p.RCC);
-    Serial(&p.USART1).init(&p.GPIOA, &p.RCC, BAUD_RATE);
+
+    let serial = Serial(p.USART1);
+    serial.init(BAUD_RATE.invert(), Some(p.DMA1), p.GPIOA, p.RCC);
+    serial.listen(Event::Rxne);
+
 
     p.SYST.set_clock_source(SystClkSource::Core);
-    p.SYST.set_reload(8_000_000 / FREQUENCY);
+    p.SYST.set_reload(8_000_000 / DIVISOR);
     p.SYST.enable_interrupt();
     p.SYST.enable_counter();
 }
@@ -77,7 +84,7 @@ fn idle() -> ! {
 
 // TASKS
 fn receive(_t: &mut Threshold, r: USART1_EXTI25::Resources) {
-    let serial = Serial(&r.USART1);
+    let serial = Serial(&**r.USART1);
 
     let byte = serial.read().unwrap();
 
diff --git a/examples/roulette.rs b/examples/roulette.rs
index 346f894..c3b48c6 100644
--- a/examples/roulette.rs
+++ b/examples/roulette.rs
@@ -15,7 +15,7 @@ use f3::led::{self, LEDS};
 use rtfm::{app, Threshold};
 
 // CONFIGURATION
-const FREQUENCY: u32 = 4;
+const DIVISOR: u32 = 4;
 
 // TASKS & RESOURCES
 app! {
@@ -38,7 +38,7 @@ fn init(p: init::Peripherals, _r: init::Resources) {
     led::init(p.GPIOE, p.RCC);
 
     p.SYST.set_clock_source(SystClkSource::Core);
-    p.SYST.set_reload(8_000_000 / FREQUENCY);
+    p.SYST.set_reload(8_000_000 / DIVISOR);
     p.SYST.enable_interrupt();
     p.SYST.enable_counter();
 }
-- 
GitLab