aboutsummaryrefslogtreecommitdiff
path: root/scala/src/main/scala/com/github/jodersky/ace/protocol/SecureSerial.scala
blob: e229b8257f61b5c947eba0027cba5e3fadce4f20 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
package com.github.jodersky.ace.protocol

import jssc.SerialPort
import scala.concurrent.ExecutionContext.Implicits.global
import scala.util.Try

class SecureSerial(port: SerialPort) { self =>
  val physical = new PhysicalLayer(port)
  val link = new LinkLayer
  val transport = new TransportLayer
  
  val application = new ReactiveLayer[Message, String] {
    def receive(message: Message) = Console.println(message.data.mkString(""))
    def write(s: String) = writeToLower(Message(s.map(_.toInt))).map(x => s)
  }
  
  def send(s: String) = application.write(s)
  def close() = Try(port.closePort())
  
  physical connect link connect transport connect application
  physical.begin()
}