aboutsummaryrefslogtreecommitdiff
path: root/flow-samples
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2016-03-11 22:37:57 -0800
committerJakob Odersky <jakob@odersky.com>2016-03-11 22:37:57 -0800
commitf514d9d013b8059adeb4e326845f0b2b5e93ab02 (patch)
tree0f046791437f1c92df7ce3bb65f923286bf8be08 /flow-samples
parent0d319d22fc77df39563b743829d969f161d40e53 (diff)
downloadakka-serial-f514d9d013b8059adeb4e326845f0b2b5e93ab02.tar.gz
akka-serial-f514d9d013b8059adeb4e326845f0b2b5e93ab02.tar.bz2
akka-serial-f514d9d013b8059adeb4e326845f0b2b5e93ab02.zip
Clean up streaming code
Closes #30
Diffstat (limited to 'flow-samples')
-rw-r--r--flow-samples/terminal-stream/src/main/scala/com/github/jodersky/flow/samples/terminalstream/Main.scala36
1 files changed, 25 insertions, 11 deletions
diff --git a/flow-samples/terminal-stream/src/main/scala/com/github/jodersky/flow/samples/terminalstream/Main.scala b/flow-samples/terminal-stream/src/main/scala/com/github/jodersky/flow/samples/terminalstream/Main.scala
index fe3ed86..411c0fd 100644
--- a/flow-samples/terminal-stream/src/main/scala/com/github/jodersky/flow/samples/terminalstream/Main.scala
+++ b/flow-samples/terminal-stream/src/main/scala/com/github/jodersky/flow/samples/terminalstream/Main.scala
@@ -1,16 +1,16 @@
package com.github.jodersky.flow
package samples.terminalstream
-import akka.actor._
-import akka.stream._
-import akka.stream.stage._
-import akka.stream.scaladsl._
-import akka.util._
-import scala.concurrent._
+import scala.concurrent.Future
import scala.concurrent.duration._
-import scala.util._
-import akka.Done
-import stream._
+import scala.io.StdIn
+
+import akka.actor.ActorSystem
+import akka.stream.ActorMaterializer
+import akka.stream.scaladsl.{Flow, Keep, Sink, Source}
+import akka.util.ByteString
+
+import stream.Serial
object Main {
@@ -19,11 +19,25 @@ object Main {
implicit val system = ActorSystem("terminal-stream")
implicit val materializer = ActorMaterializer()
+ def ask(label: String, default: String) = {
+ print(label + " [" + default.toString + "]: ")
+ val in = StdIn.readLine()
+ println("")
+ if (in.isEmpty) default else in
+ }
+
def main(args: Array[String]): Unit = {
import system.dispatcher
+ val port = ask("Device", "/dev/ttyACM0")
+ val baud = ask("Baud rate", "115200").toInt
+ val cs = ask("Char size", "8").toInt
+ val tsb = ask("Use two stop bits", "false").toBoolean
+ val parity = Parity(ask("Parity (0=None, 1=Odd, 2=Even)", "0").toInt)
+ val settings = SerialSettings(baud, cs, tsb, parity)
+
val serial: Flow[ByteString, ByteString, Future[Serial.Connection]] =
- Serial().open("/dev/ttyACM0", SerialSettings(115200))
+ Serial().open(port, settings)
val printer: Sink[ByteString, _] = Sink.foreach[ByteString]{data =>
println("server says: " + data.decodeString("UTF-8"))
@@ -40,7 +54,7 @@ object Main {
connection map { conn =>
println("Connected to " + conn.port)
- readLine("Press enter to exit")
+ StdIn.readLine("Press enter to exit")
} recover { case err =>
println("Cannot connect: " + err)
} andThen { case _ =>