aboutsummaryrefslogtreecommitdiff
path: root/flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2013-07-11 21:17:05 +0200
committerJakob Odersky <jodersky@gmail.com>2013-07-11 21:17:27 +0200
commit0bf948aeb62a151bd4e95045261dbd38c431fb57 (patch)
tree15c218ff66799a6c5cf85a46cb47e3cbba07c341 /flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala
parent2ae606b0ebc3074c3ae5d0be1cb0194c21f0333d (diff)
downloadakka-serial-0bf948aeb62a151bd4e95045261dbd38c431fb57.tar.gz
akka-serial-0bf948aeb62a151bd4e95045261dbd38c431fb57.tar.bz2
akka-serial-0bf948aeb62a151bd4e95045261dbd38c431fb57.zip
add terminal example
Diffstat (limited to 'flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala')
-rw-r--r--flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala46
1 files changed, 46 insertions, 0 deletions
diff --git a/flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala b/flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala
new file mode 100644
index 0000000..b8d332c
--- /dev/null
+++ b/flow-samples/terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala
@@ -0,0 +1,46 @@
+package com.github.jodersky.flow
+package samples.terminal
+
+import com.github.jodersky.flow._
+import akka.actor.ActorSystem
+import akka.actor.Props
+import akka.actor.actorRef2Scala
+import akka.util.ByteString
+
+object Main {
+
+ def defaultIfEmpty(in: String, default: String): String = if (in.isEmpty) default else in
+
+ def ask(label: String, default: String) = {
+ print(s"${label} [${default}]: ")
+ val in = Console.readLine()
+ println("")
+ defaultIfEmpty(in, default)
+ }
+
+ def main(args: Array[String]): Unit = {
+ 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)
+ println("Starting terminal, enter :q to exit.")
+
+ internal.InternalSerial.debug(true)
+ val system = ActorSystem("flow")
+ val serial = system.actorOf(Props(classOf[SerialHandler], port, baud, cs, tsb, parity), name = "serial-handler")
+
+ var continue = true
+ while (continue) {
+ val in = Console.readLine()
+ if (in == ":q") {
+ continue = false
+ serial ! "close"
+ } else {
+ serial ! ByteString(in.getBytes())
+ }
+ }
+ system.shutdown()
+ println("Stopped terminal.")
+ }
+} \ No newline at end of file