aboutsummaryrefslogtreecommitdiff
path: root/flow-samples/flow-samples-terminal
diff options
context:
space:
mode:
authorJakob Odersky <jodersky@gmail.com>2014-05-06 23:14:22 +0200
committerJakob Odersky <jodersky@gmail.com>2014-05-06 23:14:22 +0200
commit577ad5b12c54ccf250c9717b15ce0308fa19c453 (patch)
tree293a137feaa8446fb693508bddaf43ff680755c7 /flow-samples/flow-samples-terminal
parentbf6d9bfdac41dfd70c04749aa3d7efb60e9ae984 (diff)
downloadakka-serial-577ad5b12c54ccf250c9717b15ce0308fa19c453.tar.gz
akka-serial-577ad5b12c54ccf250c9717b15ce0308fa19c453.tar.bz2
akka-serial-577ad5b12c54ccf250c9717b15ce0308fa19c453.zip
make sample runnable without instralling native libries
Diffstat (limited to 'flow-samples/flow-samples-terminal')
-rw-r--r--flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/ConsoleReader.scala28
-rw-r--r--flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala33
-rw-r--r--flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Terminal.scala91
3 files changed, 0 insertions, 152 deletions
diff --git a/flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/ConsoleReader.scala b/flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/ConsoleReader.scala
deleted file mode 100644
index 8eb1f15..0000000
--- a/flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/ConsoleReader.scala
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.github.jodersky.flow.samples.terminal
-
-import akka.actor.Actor
-import akka.actor.actorRef2Scala
-
-class ConsoleReader extends Actor {
- import context._
- import ConsoleReader._
-
- def receive = {
- case Read =>
- Console.readLine() match {
- case ":q" | null => parent ! EOT
- case s => {
- parent ! ConsoleInput(s)
- }
- }
- }
-
-}
-
-object ConsoleReader {
-
- case object Read
- case object EOT
- case class ConsoleInput(in: String)
-
-} \ No newline at end of file
diff --git a/flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala b/flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala
deleted file mode 100644
index 5b17265..0000000
--- a/flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.github.jodersky.flow
-package samples.terminal
-
-import com.github.jodersky.flow.Parity
-import com.github.jodersky.flow.SerialSettings
-import com.github.jodersky.flow.internal.SerialConnection
-
-import akka.actor.ActorSystem
-
-object Main {
-
- def ask(label: String, default: String) = {
- print(label + " [" + default.toString + "]: ")
- val in = Console.readLine()
- println("")
- if (in.isEmpty) default else in
- }
-
- 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)
- val settings = SerialSettings(baud, cs, tsb, parity)
-
- println("Starting terminal system, enter :q to exit.")
- SerialConnection.debug(true)
- val system = ActorSystem("flow")
- val terminal = system.actorOf(Terminal(port, settings), name = "terminal")
- system.registerOnTermination(println("Stopped terminal system."))
- }
-} \ No newline at end of file
diff --git a/flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Terminal.scala b/flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Terminal.scala
deleted file mode 100644
index cf75d98..0000000
--- a/flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Terminal.scala
+++ /dev/null
@@ -1,91 +0,0 @@
-package com.github.jodersky.flow.samples.terminal
-
-import com.github.jodersky.flow.Serial
-import com.github.jodersky.flow.Serial.Close
-import com.github.jodersky.flow.Serial.Closed
-import com.github.jodersky.flow.Serial.CommandFailed
-import com.github.jodersky.flow.Serial.Event
-import com.github.jodersky.flow.Serial.Opened
-import com.github.jodersky.flow.Serial.Received
-import com.github.jodersky.flow.Serial.Write
-import com.github.jodersky.flow.SerialSettings
-
-import akka.actor.Actor
-import akka.actor.ActorLogging
-import akka.actor.ActorRef
-import akka.actor.Props
-import akka.actor.Terminated
-import akka.actor.actorRef2Scala
-import akka.io.IO
-import akka.util.ByteString
-
-class Terminal(port: String, settings: SerialSettings) extends Actor with ActorLogging {
- import Terminal._
- import context._
-
- val reader = actorOf(Props[ConsoleReader])
-
- log.info(s"Requesting manager to open port: ${port}, baud: ${settings.baud}")
- IO(Serial) ! Serial.Open(port, settings)
-
- override def postStop() = {
- system.shutdown()
- }
-
- def receive = {
- case CommandFailed(cmd, reason) => {
- log.error(s"Connection failed, stopping terminal. Reason: ${reason}")
- context stop self
- }
- case Opened(port) => {
- log.info(s"Port ${port} is now open.")
- val operator = sender
- context become opened(operator)
- context watch operator
- reader ! ConsoleReader.Read
- }
- }
-
- def opened(operator: ActorRef): Receive = {
-
- case Received(data) => {
- log.info(s"Received data: ${formatData(data)}")
- }
-
- case Wrote(data) => log.info(s"Wrote data: ${formatData(data)}")
-
- case Closed => {
- log.info("Operator closed normally, exiting terminal.")
- context unwatch operator
- context stop self
- }
-
- case Terminated(`operator`) => {
- log.error("Operator crashed, exiting terminal.")
- context stop self
- }
-
- case ConsoleReader.EOT => {
- log.info("Initiating close.")
- operator ! Close
- }
-
- case ConsoleReader.ConsoleInput(input) => {
- val data = ByteString(input.getBytes)
- operator ! Write(data, length => Wrote(data.take(length)))
- reader ! ConsoleReader.Read
- }
- }
-
-
-
-}
-
-object Terminal {
- case class Wrote(data: ByteString) extends Event
-
- def apply(port: String, settings: SerialSettings) = Props(classOf[Terminal], port, settings)
-
- private def formatData(data: ByteString) = data.mkString("[", ",", "]") + " " + (new String(data.toArray, "UTF-8"))
-
-} \ No newline at end of file