#ifndef _INTERFACE_H_ #define _INTERFACE_H_ #include "modelbahn.h" #include "server.h" #include "UDPTCPNetwork.h" #include "json.h" #include "interface-z21.h" #define INTF_F_CONNECTED 0x0001 #define INTF_F_POWER 0x0002 #define INTF_F_STOP 0x0004 #define INTF_F_SHORT_CIRCUIT 0x0008 #define INTF_F_PROGRAMMING 0x0010 #define INTF_F_NEEDUPDATE 0x8000 // if something changes during the Loop #define INTF_T_OFF_UNKNOWN 0 #define INTF_T_Z21 1 class Interface { private: InterfaceZ21 intz21; bool needs_update; public: char name[REFERENCENAME_LEN]; char host[NET_HOSTLEN]; int flags; int type; Interface(); ~Interface(); void Connect(); void Disconnect(); void PowerOnOff(int onoff); void SetLocoSpeed(Locomotive *l, int step); void SetLocoFunction(Locomotive *l, int func, int value); void SetTurnout(Turnout *t, int active, int motoractive); bool IsConnected(); bool IsPoweron(); int Loop(); }; class Interfaces { private: Interface interfaces[INTERFACES_MAX]; int max; int changed; pthread_mutex_t mtx; int LockThread(); int UnLockThread(); // not thread safe JSONParse _GetJSON(int idx); public: Interfaces(); ~Interfaces(); bool IsChanged() { return changed; } void ClearChanged() { changed = 0; }; int Change(Interface *iface); int Delete(string name); JSONParse GetJSON(string name); void GetJSONAll(JSONParse *json); Interface GetInterfaceFromJSON(JSONParse *j); // // void PowerOnOff(int onoff); void SetLocoSpeed(Locomotive *l, int speed); void SetLocoFunction(Locomotive *l, int func, int value); void SetTurnout(Turnout *t, int active, int motoractive); void Loop(); }; #endif