aboutsummaryrefslogtreecommitdiff
path: root/samples/src/main/scala/com/github/jodersky/flow/example/SerialHandler.scala
blob: d228cb98c388c1bb7c87db220068ecc620642463 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.github.jodersky.flow.example

import com.github.jodersky.flow.Serial._
import com.github.jodersky.flow.low.{Serial => LowSerial}
import akka.actor.Actor
import akka.actor.ActorLogging
import akka.actor.ActorRef
import akka.util.ByteString

class SerialHandler extends Actor with ActorLogging {
  var operator: Option[ActorRef] = None
  
  def receive = {
    case Opened(operator) => this.operator = Some(operator)
    
    case CommandFailed(cmd, reason) =>
      println(s"command ${cmd} failed, reason: ${reason}")
      
    case Received(data) => println("received data: " + formatData(data))
      
    case Close =>
      operator.map(_ ! Close)
      
    case Closed(_) => println("port closed")
      
    case Write(data) => {
      operator.map(_ ! Write(data))
    }
    
    case Wrote(data) => println("wrote data: " + formatData(data))
    
  }
  
  private def formatData(data: ByteString) = data.mkString("[",",","]")

}