You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
87 lines
1.6 KiB
87 lines
1.6 KiB
|
|
#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
|