X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Flibmarklin%2Flocomotive.cpp;h=87effa04e8e35175152bc5de2e88950532a5d55c;hb=3e9c210ddc036cd015228504cc0803c909e27f84;hp=fe236a515f0fa783dbbb0f1e92022c9b86eb0ebb;hpb=52cbe8d99669f843f8f75c51128e2748584dd03a;p=r2c2.git diff --git a/source/libmarklin/locomotive.cpp b/source/libmarklin/locomotive.cpp index fe236a5..87effa0 100644 --- a/source/libmarklin/locomotive.cpp +++ b/source/libmarklin/locomotive.cpp @@ -1,3 +1,10 @@ +/* $Id$ + +This file is part of the MSP Märklin suite +Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa +Distributed under the GPL +*/ + #include #include #include "command.h" @@ -10,7 +17,8 @@ using namespace Msp; namespace Marklin { -Locomotive::Locomotive(Control &c, unsigned a): +Locomotive::Locomotive(const LocoType &t, Control &c, unsigned a): + type(t), control(c), addr(a), speed(0), @@ -56,6 +64,8 @@ void Locomotive::set_function(unsigned func, bool state) funcs&=~(1<>i)&2) cmd[4]|=(1<(reply[0])<=1) speed=0; else - speed=(unsigned char)reply[0]*2/19+1; + speed=static_cast(reply[0])*2/19+1; reverse=(reply[1]&0x20)?false:true; funcs=(reply[1]&0xF)<<1; if(reply[1]&0x10) funcs|=1; + + for(unsigned i=0; i<5; ++i) + signal_function_changed.emit(i, (funcs>>i)&1); } }