19.03.2013 - Version 0.3.0 ported to Mac OS X

This commit is contained in:
peri4
2013-03-19 21:01:47 +04:00
parent 66c53a27fc
commit 02c629d6a8
10 changed files with 59 additions and 488 deletions

View File

@@ -1,274 +0,0 @@
####### Compiler, tools and options
TARGET = pip
CC = gcc
CXX = g++
CFLAGS = -pipe -D_REENTRANT
CXXFLAGS = $(CFLAGS)
INCPATH = -I.
LINK = g++
LFLAGS = -Wl,-O2
LIBS = -lsocket
DEL_FILE = rm -f
DEL_DIR = rmdir
####### Output directory
OBJECTS_DIR = ./
####### Files
SOURCES = main.cpp \
pibytearray.cpp \
piconfig.cpp \
piconsole.cpp \
pidir.cpp \
piethernet.cpp \
pievaluator.cpp \
pifile.cpp \
pikbdlistener.cpp \
pimath.cpp \
piprotocol.cpp \
piserial.cpp \
pistring.cpp \
pithread.cpp \
pitimer.cpp \
pivariable.cpp \
picli.cpp \
piprocess.cpp \
picodec.cpp \
pisignals.cpp \
pimonitor.cpp \
piobject.cpp \
pisystemmonitor.cpp
OBJECTS = main.o \
pibytearray.o \
piconfig.o \
piconsole.o \
pidir.o \
piethernet.o \
pievaluator.o \
pifile.o \
pikbdlistener.o \
pimath.o \
piprotocol.o \
piserial.o \
pistring.o \
pithread.o \
pitimer.o \
pivariable.o \
picli.o \
piprocess.o \
picodec.o \
pisignals.o \
pimonitor.o \
piobject.o \
pisystemmonitor.o
first: all
####### Implicit rules
.SUFFIXES: .o .c .cpp .cc .cxx .C
.cpp.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cc.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.cxx.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.C.o:
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
.c.o:
$(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
####### Build rules
all: Makefile $(TARGET)
$(TARGET): $(OBJECTS)
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(LIBS)
clean:compiler_clean
-$(DEL_FILE) $(OBJECTS)
-$(DEL_FILE) *~ core *.core
distclean: clean
-$(DEL_FILE) $(TARGET)
-$(DEL_FILE) Makefile
compiler_clean:
####### Compile
main.o: main.cpp pip.h \
pitimer.h \
pithread.h \
piincludes.h \
pimutex.h \
pivariable.h \
piconfig.h \
pifile.h \
pistring.h \
pibytearray.h \
pibitarray.h \
pichar.h \
piconsole.h \
pikbdlistener.h \
pievaluator.h \
pimath.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
pibytearray.o: pibytearray.cpp pibytearray.h \
pibitarray.h \
piincludes.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pibytearray.o pibytearray.cpp
piconfig.o: piconfig.cpp piconfig.h \
pifile.h \
piincludes.h \
pistring.h \
pibytearray.h \
pibitarray.h \
pichar.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o piconfig.o piconfig.cpp
piconsole.o: piconsole.cpp piconsole.h \
pikbdlistener.h \
pithread.h \
piincludes.h \
pimutex.h \
pistring.h \
pibytearray.h \
pibitarray.h \
pichar.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o piconsole.o piconsole.cpp
pidir.o: pidir.cpp pidir.h \
pifile.h \
piincludes.h \
pistring.h \
pibytearray.h \
pibitarray.h \
pichar.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pidir.o pidir.cpp
piethernet.o: piethernet.cpp piethernet.h \
pithread.h \
piincludes.h \
pimutex.h \
pistring.h \
pibytearray.h \
pibitarray.h \
pichar.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o piethernet.o piethernet.cpp
pievaluator.o: pievaluator.cpp pievaluator.h \
pistring.h \
pibytearray.h \
pibitarray.h \
piincludes.h \
pichar.h \
pimath.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pievaluator.o pievaluator.cpp
pifile.o: pifile.cpp pifile.h \
piincludes.h \
pistring.h \
pibytearray.h \
pibitarray.h \
pichar.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pifile.o pifile.cpp
pikbdlistener.o: pikbdlistener.cpp pikbdlistener.h \
pithread.h \
piincludes.h \
pimutex.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pikbdlistener.o pikbdlistener.cpp
pimath.o: pimath.cpp pimath.h \
piincludes.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pimath.o pimath.cpp
piprotocol.o: piprotocol.cpp piprotocol.h \
piserial.h \
pithread.h \
piincludes.h \
pimutex.h \
pistring.h \
pibytearray.h \
pibitarray.h \
pichar.h \
piethernet.h \
pitimer.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o piprotocol.o piprotocol.cpp
piserial.o: piserial.cpp piserial.h \
pithread.h \
piincludes.h \
pimutex.h \
pistring.h \
pibytearray.h \
pibitarray.h \
pichar.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o piserial.o piserial.cpp
pistring.o: pistring.cpp pistring.h \
pibytearray.h \
pibitarray.h \
piincludes.h \
pichar.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pistring.o pistring.cpp
pithread.o: pithread.cpp pithread.h \
piincludes.h \
pimutex.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pithread.o pithread.cpp
pitimer.o: pitimer.cpp pitimer.h \
pithread.h \
piincludes.h \
pimutex.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pitimer.o pitimer.cpp
pivariable.o: pivariable.cpp pivariable.h \
piconfig.h \
pifile.h \
piincludes.h \
pistring.h \
pibytearray.h \
pibitarray.h \
pichar.h
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pivariable.o pivariable.cpp
picli.o: picli.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o picli.o picli.cpp
piprocess.o: piprocess.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o piprocess.o piprocess.cpp
picodec.o: picodec.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o picodec.o picodec.cpp
pisignals.o: pisignals.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pisignals.o pisignals.cpp
pimonitor.o: pimonitor.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pimonitor.o pimonitor.cpp
piobject.o: piobject.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o piobject.o piobject.cpp
pisystemmonitor.o: pisystemmonitor.cpp
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o pisystemmonitor.o pisystemmonitor.cpp
####### Install
install: FORCE
uninstall: FORCE
FORCE:

View File

@@ -211,6 +211,31 @@ void ke(char key, void*) {
ser.setPin(p, !pins[p - 1]); ser.setPin(p, !pins[p - 1]);
} }
int main(int argc, char * argv[]) { int main(int argc, char * argv[]) {
PIKbdListener kbd;
kbd.enableExitCapture();
PICLI cli(argc, argv);
cli.addArgument("sender");
PIEthernet eth;
int i = 0;
bool _ok;
if (cli.hasArgument("sender")) {
while (!PIKbdListener::exiting) {
_ok = eth.send("234.0.2.1", 10101, &i, sizeof(i));
cout << "send " << i << " - " << (_ok ? "ok" : "fail") << endl;
i++;
msleep(100);
}
} else {
eth.setParameter(PIEthernet::Broadcast);
eth.open(":10101");
eth.joinMulticastGroup("234.0.2.1");
while (!PIKbdListener::exiting) {
eth.read(&i, sizeof(i));
cout << "receive " << i << endl;
}
}
return 0;
/*tm_.start(10.); /*tm_.start(10.);
PIConsole con(false, ke); PIConsole con(false, ke);
con.enableExitCapture(); con.enableExitCapture();

View File

@@ -1,5 +0,0 @@
#! /bin/sh
make $@
cp -vf *.h /usr/qnx630/target/qnx6/usr/include/
cp -vf lib*.so /usr/qnx630/target/qnx6/x86/lib/
cp -vf lib*.so /lib/

View File

@@ -176,6 +176,8 @@ bool PIEthernet::joinMulticastGroup(const PIString & group) {
leafs.insert(group, ret); leafs.insert(group, ret);
#else #else
# ifndef QNX # ifndef QNX
if (!params[Broadcast])
piCout << "[PIEthernet] Warning: \"Broadcast\" parameter not set, \"joinMulticastGroup(\"" << group << "\")\" may be useless!" << endl;
parseAddress(path_, &ip_, &port_); parseAddress(path_, &ip_, &port_);
struct ip_mreqn mreq; struct ip_mreqn mreq;
memset(&mreq, 0, sizeof(mreq)); memset(&mreq, 0, sizeof(mreq));

View File

@@ -52,7 +52,7 @@ public:
void setPath(const PIString & path) {path_ = path; if (opened_) openDevice();} void setPath(const PIString & path) {path_ = path; if (opened_) openDevice();}
llong size(); llong size();
llong pos() {if (!opened_) return -1; return ftell(fd);} llong pos() {if (!opened_) return -1; return ftell(fd);}
bool isEnd() {return (feof(fd) || ferror(fd));} bool isEnd() {if (!opened_) return true; return (feof(fd) || ferror(fd));}
bool isEmpty() {return (size() <= 0);} bool isEmpty() {return (size() <= 0);}
int precision() const {return prec;} int precision() const {return prec;}

View File

@@ -25,3 +25,7 @@ string ifconfigPath;
PIInit piInit; PIInit piInit;
lconv * currentLocale = std::localeconv(); lconv * currentLocale = std::localeconv();
#ifdef MAC_OS
clock_serv_t __pi_mac_clock;
#endif

View File

@@ -20,11 +20,11 @@
#ifndef PIINCLUDES_H #ifndef PIINCLUDES_H
#define PIINCLUDES_H #define PIINCLUDES_H
#define PIP_VERSION 0x000206 #define PIP_VERSION 0x000300
#define PIP_VERSION_MAJOR (PIP_VERSION & 0xFF0000) >> 16 #define PIP_VERSION_MAJOR (PIP_VERSION & 0xFF0000) >> 16
#define PIP_VERSION_MINOR (PIP_VERSION & 0xFF00) >> 8 #define PIP_VERSION_MINOR (PIP_VERSION & 0xFF00) >> 8
#define PIP_VERSION_REVISION PIP_VERSION & 0xFF #define PIP_VERSION_REVISION PIP_VERSION & 0xFF
#define PIP_VERSION_SUFFIX "_beta" #define PIP_VERSION_SUFFIX ""
#if WIN32 || WIN64 || _WIN32 || _WIN64 || __WIN32__ || __WIN64__ #if WIN32 || WIN64 || _WIN32 || _WIN64 || __WIN32__ || __WIN64__
# define WINDOWS # define WINDOWS
@@ -125,10 +125,21 @@ typedef int socklen_t;
# include <sys/ioctl.h> # include <sys/ioctl.h>
# include <net/if.h> # include <net/if.h>
#endif #endif
#ifdef MAC_OS
# include <mach/mach_traps.h>
# include <mach/mach.h>
# include <mach/clock.h>
# include <crt_externs.h>
# define environ (*_NSGetEnviron())
typedef long time_t;
extern clock_serv_t __pi_mac_clock;
#endif
#ifndef QNX #ifndef QNX
# ifndef WINDOWS # ifndef WINDOWS
# ifndef FREE_BSD # ifndef FREE_BSD
# define environ __environ # ifndef MAC_OS
# define environ __environ
# endif
# endif # endif
# endif # endif
#endif #endif
@@ -138,10 +149,6 @@ typedef int socklen_t;
#ifdef FREE_BSD #ifdef FREE_BSD
extern char ** environ; extern char ** environ;
#endif #endif
#ifdef MAC_OS
typedef long time_t;
clock_serv_t __pi_mac_clock;
#endif
#include "pimonitor.h" #include "pimonitor.h"
extern PIMonitor piMonitor; extern PIMonitor piMonitor;

View File

@@ -405,9 +405,9 @@ void PIFFT::ftbasegeneratecomplexfftplan(uint n, ftplan* plan) {
int ftbase_ftbasecffttask = 0; int ftbase_ftbasecffttask = 0;
ftbase_ftbasegenerateplanrec(n, ftbase_ftbasecffttask, plan, &plansize, &precomputedsize, &planarraysize, &tmpmemsize, &stackmemsize, stackptr); ftbase_ftbasegenerateplanrec(n, ftbase_ftbasecffttask, plan, &plansize, &precomputedsize, &planarraysize, &tmpmemsize, &stackmemsize, stackptr);
if (stackptr!=0) { return;}//ae_assert(stackptr==0, "Internal error in FTBaseGenerateComplexFFTPlan: stack ptr!"); if (stackptr!=0) { return;}//ae_assert(stackptr==0, "Internal error in FTBaseGenerateComplexFFTPlan: stack ptr!");
curplan.stackbuf.resize(piMax(stackmemsize,1));//ae_vector_set_length(&curplan.stackbuf, ae_maxint(stackmemsize, 1)); curplan.stackbuf.resize(piMax<int>(stackmemsize,1));//ae_vector_set_length(&curplan.stackbuf, ae_maxint(stackmemsize, 1));
curplan.tmpbuf.resize(piMax(tmpmemsize,1));//ae_vector_set_length(&(curplan.tmpbuf), ae_maxint(tmpmemsize, 1)); curplan.tmpbuf.resize(piMax<int>(tmpmemsize,1));//ae_vector_set_length(&(curplan.tmpbuf), ae_maxint(tmpmemsize, 1));
curplan.precomputed.resize(piMax(precomputedsize,1));//ae_vector_set_length(&curplan.precomputed, ae_maxint(precomputedsize, 1)); curplan.precomputed.resize(piMax<int>(precomputedsize,1));//ae_vector_set_length(&curplan.precomputed, ae_maxint(precomputedsize, 1));
stackptr = 0; stackptr = 0;
ftbase_ftbaseprecomputeplanrec(plan, 0, stackptr); ftbase_ftbaseprecomputeplanrec(plan, 0, stackptr);
if (stackptr!=0) { return;}//ae_assert(stackptr==0, "Internal error in FTBaseGenerateComplexFFTPlan: stack ptr!"); if (stackptr!=0) { return;}//ae_assert(stackptr==0, "Internal error in FTBaseGenerateComplexFFTPlan: stack ptr!");
@@ -475,7 +475,7 @@ void PIFFT::ftbase_ftbasegenerateplanrec(
} }
ftbasefactorize(n, &n1, &n2); ftbasefactorize(n, &n1, &n2);
if( n1!=1 ) { if( n1!=1 ) {
*tmpmemsize = piMax(*tmpmemsize, 2*n1*n2); *tmpmemsize = piMax<int>(*tmpmemsize, 2*n1*n2);
curplan.plan[entryoffset+0] = esize; curplan.plan[entryoffset+0] = esize;
curplan.plan[entryoffset+1] = n1; curplan.plan[entryoffset+1] = n1;
curplan.plan[entryoffset+2] = n2; curplan.plan[entryoffset+2] = n2;
@@ -509,7 +509,7 @@ void PIFFT::ftbase_ftbasegenerateplanrec(
} else { } else {
k = 2*n2-1; k = 2*n2-1;
m = ftbasefindsmooth(k); m = ftbasefindsmooth(k);
*tmpmemsize = piMax(*tmpmemsize, 2*m); *tmpmemsize = piMax<int>(*tmpmemsize, 2*m);
curplan.plan[entryoffset+0] = esize; curplan.plan[entryoffset+0] = esize;
curplan.plan[entryoffset+1] = n2; curplan.plan[entryoffset+1] = n2;
curplan.plan[entryoffset+2] = -1; curplan.plan[entryoffset+2] = -1;
@@ -517,7 +517,7 @@ void PIFFT::ftbase_ftbasegenerateplanrec(
curplan.plan[entryoffset+4] = m; curplan.plan[entryoffset+4] = m;
curplan.plan[entryoffset+5] = *plansize; curplan.plan[entryoffset+5] = *plansize;
stackptr = stackptr+2*2*m; stackptr = stackptr+2*2*m;
*stackmemsize = piMax(*stackmemsize, stackptr); *stackmemsize = piMax<int>(*stackmemsize, stackptr);
ftbase_ftbasegenerateplanrec(m, ftbase_ftbasecffttask, plan, plansize, precomputedsize, planarraysize, tmpmemsize, stackmemsize, stackptr); ftbase_ftbasegenerateplanrec(m, ftbase_ftbasecffttask, plan, plansize, precomputedsize, planarraysize, tmpmemsize, stackmemsize, stackptr);
stackptr = stackptr-2*2*m; stackptr = stackptr-2*2*m;
curplan.plan[entryoffset+6] = -1; curplan.plan[entryoffset+6] = -1;
@@ -638,7 +638,7 @@ Is number smooth?
*************************************************************************/ *************************************************************************/
void PIFFT::ftbase_ftbasefindsmoothrec(int n, int seed, int leastfactor, int* best) { void PIFFT::ftbase_ftbasefindsmoothrec(int n, int seed, int leastfactor, int* best) {
if( seed>=n ) { if( seed>=n ) {
*best = piMin(*best, seed); *best = piMin<int>(*best, seed);
return; return;
} }
if( leastfactor<=2 ) if( leastfactor<=2 )
@@ -672,7 +672,7 @@ void PIFFT::ftbase_fftirltrec(PIVector<double>* a, int astart, int astride, PIVe
int m1, n1; int m1, n1;
if( m==0||n==0 ) if( m==0||n==0 )
return; return;
if( piMax(m, n)<=8 ) { if( piMax<int>(m, n)<=8 ) {
for(int i=0; i<=m-1; i++) { for(int i=0; i<=m-1; i++) {
idx1 = bstart+i; idx1 = bstart+i;
idx2 = astart+i*astride; idx2 = astart+i*astride;
@@ -711,7 +711,7 @@ void PIFFT::ftbase_ffticltrec(PIVector<double>* a, int astart, int astride, PIVe
int idx1, idx2, m2, m1, n1; int idx1, idx2, m2, m1, n1;
if( m==0||n==0 ) if( m==0||n==0 )
return; return;
if( piMax(m, n)<=8 ) { if( piMax<int>(m, n)<=8 ) {
m2 = 2*bstride; m2 = 2*bstride;
for(int i=0; i<=m-1; i++) { for(int i=0; i<=m-1; i++) {
idx1 = bstart+2*i; idx1 = bstart+2*i;

View File

@@ -38,6 +38,10 @@ public:
double toMilliseconds() const {return seconds * 1.e+3 + nanoseconds / 1.e+6;} double toMilliseconds() const {return seconds * 1.e+3 + nanoseconds / 1.e+6;}
double toMicroseconds() const {return seconds * 1.e+6 + nanoseconds / 1.e+3;} double toMicroseconds() const {return seconds * 1.e+6 + nanoseconds / 1.e+3;}
double toNanoseconds() const {return seconds * 1.e+9 + double(nanoseconds);} double toNanoseconds() const {return seconds * 1.e+9 + double(nanoseconds);}
PISystemTime & addSeconds(double v) {*this += fromSeconds(v); return *this;}
PISystemTime & addMilliseconds(double v) {*this += fromMilliseconds(v); return *this;}
PISystemTime & addMicroseconds(double v) {*this += fromMicroseconds(v); return *this;}
PISystemTime & addNanoseconds(double v) {*this += fromNanoseconds(v); return *this;}
void sleep() {piUSleep(piFloord(toMicroseconds()));} // wait self value, useful to wait some dT = (t1 - t0) void sleep() {piUSleep(piFloord(toMicroseconds()));} // wait self value, useful to wait some dT = (t1 - t0)
PISystemTime abs() const {return PISystemTime(piAbsl(seconds), piAbsl(nanoseconds));} PISystemTime abs() const {return PISystemTime(piAbsl(seconds), piAbsl(nanoseconds));}
PISystemTime operator +(const PISystemTime & t) {PISystemTime tt(*this); tt.seconds += t.seconds; tt.nanoseconds += t.nanoseconds; tt.checkOverflows(); return tt;} PISystemTime operator +(const PISystemTime & t) {PISystemTime tt(*this); tt.seconds += t.seconds; tt.nanoseconds += t.nanoseconds; tt.checkOverflows(); return tt;}

View File

@@ -1,192 +0,0 @@
# Eth
#gas.receiver.ip = 192.168.5.36 #i
#gas.receiver.ip = 192.168.0.190 #i
gas.receiver.ip = 192.168.6.36 #i
gas.receiver.port = 9217 #n
gas.receiver.frequency = 100 #f
#gas.sender.ip = 192.168.5.2 #i
#gas.sender.ip = 192.168.0.190 #i
gas.sender.ip = 192.168.6.133 #i
#gas.sender.port = 1 #n
gas.sender.port = 10000 #n
gas.sender.frequency = 10 #f
gas.writeHistory = false #b
# Eth
mcp1_c.receiver.ip = 192.168.5.36 #i
#mcp1.receiver.ip = 127.0.0.1 #i
mcp1_c.receiver.port = 4012 #n
mcp1_c.receiver.frequency = 20 #f
mcp1_c.sender.ip = 192.168.5.13 #i
#mcp1.sender.ip = 127.0.0.1 #i
mcp1_c.sender.port = 4013 #n
mcp1_c.sender.frequency = 20 #f
mcp1_c.writeHistory = false #b
# Eth
mcp1_m.sender.ip = 192.168.5.13 #i
mcp1_m.sender.port = 4014 #n
mcp1_m.sender.frequency = 20 #f
mcp1_m.writeHistory = false #b
# Eth
mcp1_i.receiver.ip = 192.168.5.36 #i
mcp1_i.receiver.port = 4016 #n
mcp1_i.sender.ip = 192.168.5.13 #i
mcp1_i.sender.port = 4015 #n
mcp1_i.writeHistory = false #b
# Eth
mcp2.receiver.ip = 192.168.6.36 #i
mcp2.receiver.port = 4014 #n
mcp2.receiver.frequency = 20 #f
mcp2.sender.ip = 192.168.6.133 #i
mcp2.sender.port = 4015 #n
mcp2.sender.frequency = 20 #f
mcp2.writeHistory = false #b
# RS
#slk.receiver.ip = 192.168.0.190 #i
slk.receiver.ip = 192.168.6.36 #i
slk.receiver.port = 3108 #n
slk.receiver.frequency = 10 #f
#slk.sender.ip = 192.168.0.175 #i
slk.sender.ip = 192.168.6.133 #i
slk.sender.port = 3109 #n
slk.sender.frequency = 10 #f
slk.disconnectTimeout = 1.5 #f
slk.writeHistory = false #b
# RS
#ts.receiver.device = /dev/ttyS0
#ts.receiver.speed = 57600
#ts.receiver.parity = false
#ts.receiver.twoStopBits = false
ts.receiver.ip = 192.168.0.190 #i
ts.receiver.port = 4023 #n
ts.receiver.frequency = 23 #f
ts.sender.ip = 192.168.0.175 #i
ts.sender.port = 4023 #n
#ts.sender.frequency = 23
ts_mcp1.receiver.ip = 192.168.0.190 #i
ts_mcp1.receiver.port = 4022 #n
ts_mcp1.sender.ip = 192.168.0.175 #i
ts_mcp1.sender.port = 4022 #n
ts.writeHistory = false #b
# Eth
mv2.receiver.ip = 192.168.150.1 #i
mv2.receiver.port = 3003 #n
mv2.receiver.frequency = 20 #f
mv2.sender.ip = 192.168.150.16 #i
mv2.sender.port = 3003 #n
mv2.sender.frequency = 20 #f
mv2.writeHistory = false #b
mv2.historyID = 43079 #n
#RS422
mv2_res.device = /dev/ttyMI0 #s
mv2_res.speed = 115200 #n
mv2_res.frequency = 10 #f
mv2_res.twoStopBits = false #b
mv2_res.parity = false #b
# Eth
ki.mcp1.receiver.ip = 192.168.5.36 #i
ki.mcp1.receiver.port = 4102 #n
ki.mcp1.sender.ip = 192.168.5.13 #i
ki.mcp1.sender.port = 4101 #n
ki.mv2.receiver.ip = 192.168.150.1 #i
ki.mv2.receiver.port = 4104 #n
ki.mv2.sender.ip = 192.168.150.16 #i
ki.mv2.sender.port = 4103 #n
# Eth
kpi_mcp1.receiver.ip = 192.168.5.36 #i
kpi_mcp1.receiver.port = 4204 #n
kpi_mcp1.sender.ip = 192.168.5.13 #i
kpi_mcp1.sender.port = 4203 #n
# Eth
kpi_mcp2.receiver.ip = 192.168.6.36 #i
kpi_mcp2.receiver.port = 4206 #n
kpi_mcp2.sender.ip = 192.168.6.133 #i
kpi_mcp2.sender.port = 4205 #n
# Eth
#rud.receiver.ip = 192.168.5.36 #i
rud.receiver.ip = 192.168.6.36 #i
rud.receiver.port = 4050 #n
rud.receiver.frequency = 20 #f
# Eth
vpu.ip = 127.0.0.1 #i
vpu.receiver.port = 6001 #n
vpu.sender.port = 6000 #n
vpu.frequency = 20 #f
# Eth
#kku.receiver.ip = 192.168.6.36 #i
kku.receiver.ip = 192.168.5.36 #i
kku.receiver.port = 5011 #n
kku.receiver.frequency = 20 #f
#kku.sender.ip = 192.168.6.133 #i
kku.sender.ip = 192.168.5.133 #i
kku.sender.port = 5010 #n
kku.sender.frequency = 20 #f
# ???
sep.receiver.ip = 192.168.150.1 #i
sep.receiver.port = 4031 #n
sep.receiver.frequency = 4 #f
sep.sender.ip = 192.168.150.16 #i
sep.sender.port = 4030 #n
#sep.sender.frequency = 4 #f
# Eth
108ua.receiver.ip = 192.168.5.36 #i
108ua.receiver.port = 2002 #n
108ua.receiver.frequency = 10 #f
108ua.sender.ip = 192.168.5.36 #i
108ua.sender.port = 2011 #n
108ua.sender.frequency = 10 #f
# Eth
108ua_r.receiver.ip = 192.168.6.36 #i
108ua_r.receiver.port = 2002 #n
108ua_r.receiver.frequency = 10 #f
108ua_r.sender.ip = 192.168.6.2 #i
108ua_r.sender.port = 2011 #n
108ua_r.sender.frequency = 10 #f
# Eth
vpu_driver.ip = 127.0.0.1 #i
vpu_driver.receiver.port = 6000 #n
vpu_driver.sender.port = 6001 #n
vpu_driver.frequency = 20 #f
# Eth
tvk.mv2.receiver.ip = 192.168.150.1 #i
tvk.mv2.receiver.port = 4024 #n
tvk.mv2.sender.ip = 192.168.150.16 #i
tvk.mv2.sender.port = 4024 #n
tvk.mcp2.receiver.ip = 192.168.6.36 #i
tvk.mcp2.receiver.port = 4024 #n
tvk.mcp2.sender.ip = 192.168.6.133 #i
tvk.mcp2.sender.port = 4024 #n
#Eth
bpd.receiver.ip = 127.0.0.1 #i
bpd.receiver.port = 2012 #n
bpd.sender.ip = 127.0.0.1 #i
bpd.sender.port = 2013 #n
# Eth
astd.receiver.ip = 192.168.5.36 #i
astd.receiver.port = 5298 #n
astd.sender.ip = 192.168.5.2 #i
astd.sender.port = 1101 #n
astd.frequency = 1 #f
astd.writeHistory = false #b