Changeset 18718


Ignore:
Timestamp:
01/06/17 16:03:47 (8 years ago)
Author:
(none)
Message:
1st functional version
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/FACT++_lidctrl_usb/src/lidctrl.cc

    r18717 r18718  
    11#include <functional>
    2 
    32#include <boost/bind.hpp>
     3#include <cstdlib>
    44
    55#include "Dim.h"
     
    3030class ConnectionLid : public ConnectionUSB
    3131{
    32     vector<uint8_t> fRecievedBytes;
    33     DimDescribedService fDimLid;
     32    vector<char> fRecievedBytes;
     33
     34    State::states_t state;
    3435private:
    3536
     
    3738    void HandleReceivedData(const boost::system::error_code&, size_t bytes_received, int type, int counter)
    3839    {
    39         Out() << fRecievedBytes;
    40         AsyncRead(ba::buffer(fRecievedBytes, 100), 0, 0);
    41 
     40        string search_string("system_state=");
     41        string s(fRecievedBytes.begin(), fRecievedBytes.end());
     42        Out() << s << endl << endl;
     43        int pos=s.find(search_string);
     44        string part = s.substr(pos + search_string.size(), 1);
     45        int state_number = atoi(part.c_str());       
     46        Out() << "system state = " << state_number << endl;
     47        if (state_number == 0)
     48        {
     49            state = State::kClosed;
     50        }
     51        if (state_number == 4)
     52        {
     53            state = State::kOpen;
     54        }
     55        AsyncRead(ba::buffer(fRecievedBytes, 1024), 0, 0);
    4256    }
    4357
     
    4660    void ConnectionEstablished()
    4761    {
    48         AsyncRead(ba::buffer(fRecievedBytes, 100), 0, 0);
     62        AsyncRead(ba::buffer(fRecievedBytes, 1024), 0, 0);
    4963    }
    5064
     
    5468        ConnectionUSB(ioservice, imp()),
    5569        fRecievedBytes(1024),
    56         fDimLid("LID_CTRL_USB/STUFF", "S:1","|Stuff[foo]:some text.")
     70        state(State::kOpen)
    5771    {
    5872        SetLogStream(&imp);
     
    6175    State::states_t GetStatus()
    6276    {
    63         return State::kOpen;
     77        return state;
    6478    }
    6579};
     
    95109    S fLid;
    96110
    97     int Disconnect()
    98     {
    99         fLid.PostClose(-1);
     111    int Execute()
     112    {
     113        return fLid.GetStatus();
     114    }
     115
     116
     117    int Open()
     118    {
     119        std::array<char, 1> cmd = {{'o'}};
     120        fLid.PostMessage(cmd);
    100121        return T::GetCurrentState();
    101122    }
    102 
    103     int Reconnect(const EventImp &evt)
    104     {
    105         fLid.PostClose(-1);
    106         ba::io_service::poll();
    107         fLid.PostClose(0);
     123   
     124    int Close()
     125    {
     126        std::array<char, 1> cmd = {{'c'}};
     127        fLid.PostMessage(cmd);
    108128        return T::GetCurrentState();
    109     }
    110 
    111     int Execute()
    112     {
    113         const int state = fLid.GetStatus();
    114         return state;
    115129    }
    116130
     
    156170    control.add_options()
    157171        ("no-dim,d",        po_bool(),  "Disable dim services")
    158         ("dev",             var<string>(),       "Device address of USB port to lid-arduino")
     172        ("dev",             var<string>("lid-arduino"),       "Device address of USB port to lid-arduino")
    159173        ("quiet,q",         po_bool(true),       "Disable printing contents of all received messages (except dynamic data) in clear text.")
    160174        ;
Note: See TracChangeset for help on using the changeset viewer.