]> git.tdb.fi Git - r2c2.git/blobdiff - source/libr2c2/arducontrol.cpp
Add helper class for processing driver options
[r2c2.git] / source / libr2c2 / arducontrol.cpp
index 2361d8540d561ccff6477836b36fc41ebba114dc..ecac7b81e69fb14b6faa435d9c3753f538d7053b 100644 (file)
@@ -18,8 +18,8 @@ ArduControl::ProtocolInfo ArduControl::protocol_info[2] =
        { 0x3FFF, 126, 15 }  // MFX
 };
 
-ArduControl::ArduControl(const string &dev):
-       serial(dev),
+ArduControl::ArduControl(const Options &opts):
+       serial(opts.get<string>(string(), "ttyUSB0")),
        debug(1),
        state_file("arducontrol.state"),
        power(false),
@@ -357,9 +357,7 @@ void ArduControl::tick()
 
                        Accessory &acc = i->second;
                        if(tag.command==Accessory::ACTIVATE)
-                       {
                                off_timeout = Time::now()+acc.active_time;
-                       }
                        else if(tag.command==Accessory::DEACTIVATE)
                        {
                                if(acc.state.commit(tag.serial))
@@ -721,11 +719,17 @@ void ArduControl::RefreshTask::advance()
 ArduControl::S88Task::S88Task(ArduControl &c):
        control(c),
        n_octets(0),
-       octets_remaining(0)
+       octets_remaining(0),
+       delay(0)
 { }
 
 bool ArduControl::S88Task::get_work(PendingCommand &cmd)
 {
+       if(delay)
+       {
+               --delay;
+               return false;
+       }
        if(octets_remaining || !n_octets)
                return false;
 
@@ -734,6 +738,8 @@ bool ArduControl::S88Task::get_work(PendingCommand &cmd)
        cmd.command[1] = octets_remaining;
        cmd.length = 2;
 
+       delay = 4;
+
        return true;
 }