--- branches/linux-serial/server/serialthread.cpp 2007/02/06 21:47:56 66 +++ branches/linux-serial/server/serialthread.cpp 2007/02/06 23:37:39 67 @@ -1,5 +1,6 @@ #include +#include "globalstorage.h" #include "serialthread.h" @@ -8,51 +9,54 @@ usleep(s*1000); } -SerialThread::SerialThread(CH7Serial& s, boost::mutex& m) - : mContinue(true), mStopped(true), mSerial(s), - mWriteMutex(m) +SerialThread::SerialThread() + : Thread() { } -void SerialThread::stop() -{ - mContinue = false; -} - -bool SerialThread::stopped() -{ - return mStopped; -} void SerialThread::operator()() { const int delay = 5; mStopped = false; + GlobalStorage* store = GlobalStorage::instance(); + CH7Serial& serial = store->serialPort; + while (mContinue) { - led3 = mSerial.readTarget(0); + store->led3 = serial.readTarget(0); msleep(delay); - led4 = mSerial.readTarget(1); + store->led4 = serial.readTarget(1); msleep(delay); - led5 = mSerial.readTarget(2); + store->led5 = serial.readTarget(2); msleep(delay); - switch2 = mSerial.readTarget(3); + store->switch2 = serial.readTarget(3); msleep(delay); - switch3 = mSerial.readTarget(4); + store->switch3 = serial.readTarget(4); msleep(delay); - potmeter = mSerial.readTarget(5); + store->potmeter = serial.readTarget(5); msleep(delay); - temp = mSerial.readTarget(6); - std::cout << potmeter << std::endl; + store->temp = serial.readTarget(6); + std::cout << store->potmeter << std::endl; + + boost::mutex::scoped_lock lock(store->writeMutex); + + if (! store->commands.empty() ) + { + WriteCommand cmd = store->commands.front(); + store->commands.pop(); + serial.writeTarget( cmd.target, cmd.data); + } + - msleep(250); + msleep(80); } mStopped = true; }