From 577ad5b12c54ccf250c9717b15ce0308fa19c453 Mon Sep 17 00:00:00 2001 From: Jakob Odersky Date: Tue, 6 May 2014 23:14:22 +0200 Subject: make sample runnable without instralling native libries --- .../flow/samples/terminal/ConsoleReader.scala | 28 ------- .../jodersky/flow/samples/terminal/Main.scala | 33 -------- .../jodersky/flow/samples/terminal/Terminal.scala | 91 ---------------------- 3 files changed, 152 deletions(-) delete mode 100644 flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/ConsoleReader.scala delete mode 100644 flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala delete mode 100644 flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Terminal.scala (limited to 'flow-samples/flow-samples-terminal') 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 -- cgit v1.2.3