diff options
author | Jakob Odersky <jodersky@gmail.com> | 2014-03-27 20:19:28 +0100 |
---|---|---|
committer | Jakob Odersky <jodersky@gmail.com> | 2014-03-27 20:19:28 +0100 |
commit | b6f27be4eda4ec0e50aaca8eb3a117db60b4067e (patch) | |
tree | a0f9e2e054e8869b4db4b727d9e3e8e3a8fabd85 /flow-samples | |
parent | d3960d3748e7b83f3ad18fa226ed88c7a5b01941 (diff) | |
download | akka-serial-b6f27be4eda4ec0e50aaca8eb3a117db60b4067e.tar.gz akka-serial-b6f27be4eda4ec0e50aaca8eb3a117db60b4067e.tar.bz2 akka-serial-b6f27be4eda4ec0e50aaca8eb3a117db60b4067e.zip |
re-implement native side (TODO: direct buffers)
Diffstat (limited to 'flow-samples')
3 files changed, 55 insertions, 4 deletions
diff --git a/flow-samples/flow-samples-broadcast/src/main/scala/com/github/jodersky/flow/samples/broadcast/Main.scala b/flow-samples/flow-samples-broadcast/src/main/scala/com/github/jodersky/flow/samples/broadcast/Main.scala new file mode 100644 index 0000000..5d37021 --- /dev/null +++ b/flow-samples/flow-samples-broadcast/src/main/scala/com/github/jodersky/flow/samples/broadcast/Main.scala @@ -0,0 +1,51 @@ +package com.github.jodersky.flow.samples.broadcast + +import com.github.jodersky.flow.SerialSettings +import com.github.jodersky.flow.internal.SerialConnection +import com.github.jodersky.flow.Parity +import java.nio.ByteBuffer +import scala.concurrent._ +import scala.concurrent.ExecutionContext.Implicits.global +import scala.util.Failure + +object Main { + + def ask(label: String, default: String) = { + print(s"${label} [${default}]: ") + 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("Opening...") + + SerialConnection.debug(true) + val c = SerialConnection.open(port, settings) + + val buffer = ByteBuffer.allocate(1024) + + val read = future { + c.read(buffer) + }.onFailure{ + case ex => println(ex) + } + + println("Opened") + Console.readLine() + + c.close() + + //val system = ActorSystem("flow") + //val terminal = system.actorOf(Terminal(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/Main.scala b/flow-samples/flow-samples-terminal/src/main/scala/com/github/jodersky/flow/samples/terminal/Main.scala index 27686ce..41551d3 100644 --- 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 @@ -5,7 +5,7 @@ import com.github.jodersky.flow._ import akka.actor.ActorSystem import akka.actor.Props import akka.actor.actorRef2Scala -import akka.util.ByteString +import com.github.jodersky.flow.internal.SerialConnection object Main { @@ -23,10 +23,10 @@ object Main { 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(port, baud, cs, tsb, parity) + val settings = SerialSettings(baud, cs, tsb, parity) println("Starting terminal system, enter :q to exit.") - internal.InternalSerial.debug(true) + SerialConnection.debug(true) val system = ActorSystem("flow") val terminal = system.actorOf(Terminal(settings), name = "terminal") system.registerOnTermination(println("Stopped terminal system.")) 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 index 3c1eee6..ab9c51f 100644 --- 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 @@ -32,7 +32,7 @@ class Terminal(settings: SerialSettings) extends Actor with ActorLogging { log.error(s"Connection failed, stopping terminal. Reason: ${reason}") context stop self } - case Opened(s, _) => { + case Opened(s) => { log.info(s"Port ${s.port} is now open.") val operator = sender context become opened(operator) |