tes

Dependencies:   NetServices mbed C027_Supports mbed-rpcx

DataProcess.h

Committer:
aldoao
Date:
2019-09-11
Revision:
1:f7d9b0530b73
Parent:
0:64967b7043c2

File content as of revision 1:f7d9b0530b73:

#ifndef DATAPROCESS_H
#define DATAPROCESS_H

#include <vector>
#include <queue>
#include <string>
#include "AruFraming.h"

class FtlMessage
{
public:
    FtlMessage();
    ~FtlMessage();

    enum msg
    {
        OK = 0,
        FAILED = -1,
        PROERROR = -2,
        NOTANSWER = -3
    }ftl_msg;

    msg checkMessage(const int &lastIdentifier, const int &identifier_);

private:

};

//-------------------------------------------------------------
class DataMessage
{
public:
    DataMessage();
    ~DataMessage();

    enum msg
    {
        OK = 0,
        FAILED = -1,
        CHANGE = 1,

        STATECHANGE = 2,

    }data_msg;

    typedef int (*_CALLBACKPTR)(const char* buf, int len, void* param);
    msg processFromSlave(int identifier_=0, std::string buf="", _CALLBACKPTR cb = NULL, void* param = NULL);

    template<class T>
    inline msg processFromSlave(int identifier_, std::string buf, int (*cb)(const char* buf, int len, T* param),
                  T* param)
    {
      return processFromSlave(identifier_, buf, (_CALLBACKPTR)cb, (void*)param);
    }

    msg checkStateMessage(const int &identifier_, const std::string &stream, int *pStep);
    msg checkOrderState(const int &identifier_, const std::string &stream, int *pStep);
    msg checkInterlock(const int &identifier_, const std::string &stream, int *pStep);
//private:

protected:

    typedef struct{ int *state;} MeterState;
    static int _cbstate(const char* buf, int len, MeterState* param);
    
    typedef struct{ int *state;} OrderState;
    static int _cbOstate(const char* buf, int len, OrderState* param);
    
    typedef struct{int *state;} InterlockState;
    static int _cbInterlock(const char* buf, int len, InterlockState* param);
};

//-------------------------------------------------------------
class DataProcess : public FtlMessage, public DataMessage
{
public:
    DataProcess();
    ~DataProcess();

    typedef enum state_
    {
        OK = 0,
        ERROR = -1,

        STAY = 0,
        STEPUP = 1,
        STEPDOWN = 2,
        STEPJUMP = 3,
        STEPEND = -1,
        STAYNOL = -2,
        FINISH = 4,
        
        NOORDER = 0,
        ORDERRCV = 2,
        PLANORDERPROC = 3,
        UNPLANORDERPROC = 4,
        ORDERFINERROR = 9,
        ORDERFINNOERROR = 10,
        
        ACCCLOSED = 0,
        ACCOPEN = 1
    }STATE;

    void CheckFtlMassage(const int &lastIdentifier, const AruFrm &frm);
    FtlMessage::msg getFtlMessage();

    void CheckDtMassage(const AruFrm &frm);
    DataMessage::msg getDtMessage();
    state_ checkState();
    state_ checkOrderState();
    state_ chackInterlock();

private:
    FtlMessage::msg FtlMsg;

    DataMessage::msg DataMsg;
    int stateTmp;
    int lastState;
    int OrderStateTmp;
    int LastOrderState;
    int InterlockState;
};

//-------------------------------------------------------------
#endif // DATAPROCESS_H