From cfc5eed75e151095cbe2a1cb6e1416722617481c Mon Sep 17 00:00:00 2001 From: peri4 Date: Mon, 15 Oct 2012 23:36:18 +0400 Subject: [PATCH] 15.10.2012 - version 0.2.0 - PIIODevice - base of file, ethernet, serial and packets extractor. PIEthernet now support also TCP (client and server). PIConsole now can align labels in each column individually. --- .kdev4/pip.kdev4 | 21 +-- CMakeLists.txt | 5 +- main.cpp | 107 +++++++-------- pibitarray.h | 18 +-- pibytearray.cpp | 6 +- pibytearray.h | 22 +-- pichar.h | 2 +- picli.cpp | 4 +- picli.h | 2 +- picodec.cpp | 2 +- picodec.h | 16 +-- piconfig.cpp | 16 +-- piconfig.h | 23 ++-- piconsole.cpp | 197 +++++++++++++++------------ piconsole.h | 44 ++++-- picontainers.h | 247 +++++++++++++++++++++++++++++++-- pidir.cpp | 4 +- pidir.h | 2 +- piethernet.cpp | 309 +++++++++++++++++++++++------------------- piethernet.h | 83 ++++++++---- pievaluator.cpp | 2 +- pievaluator.h | 2 +- pifile.cpp | 88 ++++++------ pifile.h | 141 +++++++++---------- pigeometry.h | 2 +- piincludes.cpp | 23 ++++ piincludes.h | 11 +- piiodevice.cpp | 107 +++++++++++++++ piiodevice.h | 121 +++++++++++++++++ pikbdlistener.cpp | 7 +- pikbdlistener.h | 2 +- pimath.cpp | 2 +- pimath.h | 2 +- pimonitor.cpp | 2 +- pimonitor.h | 2 +- pimultiprotocol.cpp | 2 +- pimultiprotocol.h | 32 ++--- pimutex.h | 2 +- piobject.cpp | 2 +- piobject.h | 11 +- pip.h | 2 +- pip.kdev4 | 2 +- pipacketextractor.cpp | 75 ++++++++++ pipacketextractor.h | 71 ++++++++++ piprocess.cpp | 24 ++-- piprocess.h | 20 +-- piprotocol.cpp | 229 ++++++++++++++++++++----------- piprotocol.h | 14 +- piserial.cpp | 177 ++++++++++++------------ piserial.h | 85 +++++++----- pisignals.cpp | 2 +- pisignals.h | 12 +- pistring.cpp | 54 ++++++-- pistring.h | 21 ++- pisystemmonitor.cpp | 12 +- pisystemmonitor.h | 2 +- pithread.cpp | 47 ++++--- pithread.h | 21 ++- pitimer.cpp | 143 +++++++++++++++++-- pitimer.h | 32 +++-- pivariable.cpp | 6 +- pivariable.h | 2 +- Описание.odt | Bin 113816 -> 115746 bytes Описание.pdf | Bin 340544 -> 316722 bytes 64 files changed, 1879 insertions(+), 867 deletions(-) mode change 100644 => 100755 main.cpp mode change 100644 => 100755 pibitarray.h mode change 100644 => 100755 pibytearray.cpp mode change 100644 => 100755 pibytearray.h mode change 100644 => 100755 pichar.h mode change 100644 => 100755 picli.cpp mode change 100644 => 100755 picli.h mode change 100644 => 100755 picodec.cpp mode change 100644 => 100755 picodec.h mode change 100644 => 100755 piconfig.cpp mode change 100644 => 100755 piconfig.h mode change 100644 => 100755 piconsole.cpp mode change 100644 => 100755 piconsole.h mode change 100644 => 100755 picontainers.h mode change 100644 => 100755 pidir.cpp mode change 100644 => 100755 pidir.h mode change 100644 => 100755 piethernet.cpp mode change 100644 => 100755 piethernet.h mode change 100644 => 100755 pievaluator.cpp mode change 100644 => 100755 pievaluator.h mode change 100644 => 100755 pifile.cpp mode change 100644 => 100755 pifile.h mode change 100644 => 100755 pigeometry.h create mode 100644 piincludes.cpp mode change 100644 => 100755 piincludes.h create mode 100755 piiodevice.cpp create mode 100755 piiodevice.h mode change 100644 => 100755 pikbdlistener.cpp mode change 100644 => 100755 pikbdlistener.h mode change 100644 => 100755 pimath.cpp mode change 100644 => 100755 pimath.h mode change 100644 => 100755 pimonitor.cpp mode change 100644 => 100755 pimonitor.h mode change 100644 => 100755 pimultiprotocol.cpp mode change 100644 => 100755 pimultiprotocol.h mode change 100644 => 100755 pimutex.h mode change 100644 => 100755 piobject.cpp mode change 100644 => 100755 piobject.h mode change 100644 => 100755 pip.h create mode 100644 pipacketextractor.cpp create mode 100644 pipacketextractor.h mode change 100644 => 100755 piprocess.cpp mode change 100644 => 100755 piprocess.h mode change 100644 => 100755 piprotocol.cpp mode change 100644 => 100755 piprotocol.h mode change 100644 => 100755 piserial.cpp mode change 100644 => 100755 piserial.h mode change 100644 => 100755 pisignals.cpp mode change 100644 => 100755 pisignals.h mode change 100644 => 100755 pistring.cpp mode change 100644 => 100755 pistring.h mode change 100644 => 100755 pisystemmonitor.cpp mode change 100644 => 100755 pisystemmonitor.h mode change 100644 => 100755 pithread.cpp mode change 100644 => 100755 pithread.h mode change 100644 => 100755 pivariable.cpp mode change 100644 => 100755 pivariable.h mode change 100644 => 100755 Описание.odt mode change 100644 => 100755 Описание.pdf diff --git a/.kdev4/pip.kdev4 b/.kdev4/pip.kdev4 index 6f91f02d..00397325 100644 --- a/.kdev4/pip.kdev4 +++ b/.kdev4/pip.kdev4 @@ -2,14 +2,17 @@ BuildItems=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00p\x00i\x00p) [CMake] -BuildDirs=/home/peri4/pprojects/pip/ +Build Directory Count=1 CMakeDir=/usr/share/cmake/Modules -Current CMake Binary=file:///usr/bin/cmake -CurrentBuildDir=file:///home/peri4/pprojects/pip/ -CurrentBuildType=Debug -CurrentInstallDir= +Current Build Directory Index=0 ProjectRootRelative=./ +[CMake][CMake Build Directory 0] +Build Directory Path=file:///home/peri4/pprojects/pip/ +Build Type= +CMake Binary=file:///usr/bin/cmake +Install Directory=file:///usr/local + [Launch] Launch Configurations=Launch Configuration 0 @@ -24,15 +27,15 @@ Arguments= Dependencies=@Variant(\x00\x00\x00\t\x00\x00\x00\x00\x01\x00\x00\x00\x0b\x00\x00\x00\x00\x01\x00\x00\x00\x06\x00p\x00i\x00p) Dependency Action=Build EnvironmentGroup=default -Executable= +Executable=file:///home/peri4/pprojects/pip/pip_test External Terminal=konsole --noclose --workdir %workdir -e %exe -Project Target=pip,pip_test +Project Target= Use External Terminal=false Working Directory= -isExecutable=false +isExecutable=true [MakeBuilder] -Number Of Jobs=5 +Number Of Jobs=8 [Project] VersionControlSupport=kdevgit diff --git a/CMakeLists.txt b/CMakeLists.txt index 8eab44c7..4b95cf08 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,7 @@ project(pip) +find_package(Qt4) cmake_minimum_required(VERSION 2.6) -include_directories(${CMAKE_CURRENT_SOURCE_DIR} .) +include_directories(${CMAKE_CURRENT_SOURCE_DIR} . ${QT_INCLUDES}) file(GLOB CPPS "pi*.cpp") if (${WIN32}) add_definitions(-Wall -O2) @@ -17,5 +18,5 @@ add_executable(pip_test "main.cpp") if (${WIN32}) target_link_libraries(pip_test pthread ws2_32 pip) else (${WIN32}) - target_link_libraries(pip_test pthread rt pip) + target_link_libraries(pip_test pthread rt pip ${QT_QTCORE_LIBRARY}) endif (${WIN32}) diff --git a/main.cpp b/main.cpp old mode 100644 new mode 100755 index 81a4bd42..c7b55c43 --- a/main.cpp +++ b/main.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Test program - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -117,66 +117,67 @@ public: }; - -#pragma pack(push, 1) -struct Data { - ushort header; - int counter; - float f0; - float f1; - ushort checksum; -}; -#pragma pack(pop) - -class Prot: public PIProtocol { -public: - Prot() { - setReceiverDevice("/dev/ttyS0", PISerial::S115200, true); - setReceiverDataHeader(&rec, 2); - setReceiverData(&rec.counter, sizeof(rec) - 2); - setSenderData(&send, sizeof(send)); - setExpectedFrequency(20.f); - setSenderFrequency(20.f); - send.header = 0xAABB; - rec.header = 0xAABB; - start(); - } - - virtual bool validate() { - if (rec.checksum != PIByteArray(&rec, sizeof(rec)-2).checksumCRC16()) return false; - return true; - } - virtual bool aboutSend() { - send.counter++; - send.checksum = PIByteArray(&send, sizeof(send)-2).checksumCRC16(); - return true; - } - - Data send, rec; +struct Packet { + int from; + int to; + float data; + int cs; }; -Prot p; +bool retH(void * d, uchar * src, uchar * rec, int size) { + return (*((int*)rec)) == 1; +}; -void key(char k, void*) { - switch (k) { - case '0': p.setSenderData(&p.send, sizeof(p.send)); break; - case '1': p.setSenderData(&p.send, sizeof(p.send) - 1); break; - case '2': p.send.header = 0xAABB; break; - case '3': p.send.header = 0xACBD; break; - } -} +bool retF(void * d, uchar * data, int size) { + cout << "rec " << size << endl; + return true; +}; -PIConsole c(false, key); int main(int argc, char * argv[]) { - c.enableExitCapture(); - c.addVariable("prot", &p); - if (argc > 1) c.start(); - c.waitForFinish(); - c.stop(); + /*Packet p, mp; + p.from = mp.from = 1; + p.to = mp.to = 2; + PISerial ser("/dev/ttyS0"); + ser.setSpeed(PISerial::S115200); + ser.open(); + ser.setReadIsBlocking(true); + PIPacketExtractor pe(&ser, &mp, 8, 8); + pe.setThreadedReadSlot(retF); + pe.setHeaderCheckSlot(retH); + pe.startThreadedRead(); + ser.write(&p, sizeof(p)); + p.from = 2; + ser.write(&p, sizeof(p)); + msleep(1000); + exit(0);*/ + PICodec codec; + exit(0); +/* + vec my_v; vector stl_v; QVector qt_v; + double el; + PITimer tm; + tm.reset(); + for (uint i = 0; i < 500000; ++i) + my_v.push_back(i); + el = tm.elapsed_m(); + cout << el << endl; + tm.reset(); + for (uint i = 0; i < 500000; ++i) + stl_v.push_back(i); + el = tm.elapsed_m(); + cout << el << endl; + tm.reset(); + for (uint i = 0; i < 500000; ++i) + qt_v.append(i); + el = tm.elapsed_m(); + cout << el << endl; + + exit(0); +*/ bool r_string = true, r_thread = true, r_mutex = true, r_timer = true, r_file = true, r_eval = true, r_event = true; bool succ = true; cout << "== PIP test program ==" << endl; @@ -239,7 +240,7 @@ int main(int argc, char * argv[]) { else cout << "== Fail ==" << endl; cout << endl << "== File test ==" << endl; - PIFile file(" file_test", PIFile::New | PIFile::ReadWrite); + PIFile file(" file_test", PIIODevice::ReadWrite); cout << " file \"" << file.path() << "\" is "; if (!file.isOpened()) cout << "not "; cout << "opened" << endl; diff --git a/pibitarray.h b/pibitarray.h old mode 100644 new mode 100755 index 569557a0..f67bd600 --- a/pibitarray.h +++ b/pibitarray.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Bit array - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -31,16 +31,16 @@ public: PIBitArray(ulong val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} PIBitArray(ullong val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} PIBitArray(uchar * bytes, uint size) {resize(size * 8); memcpy(data(), bytes, size);} - + uint bitSize() const {return size_;} uint byteSize() const {return bytesInBits(size_);} PIBitArray & resize(const uint & size) {size_ = size; data_.resize(bytesInBits(size_)); return *this;} - + PIBitArray & clearBit(const uint & index) {data_[index / 8] &= ~(1 << (index % 8)); return *this;} PIBitArray & setBit(const uint & index) {data_[index / 8] |= (1 << (index % 8)); return *this;} PIBitArray & writeBit(const uint & index, const bool & value) {if (value) setBit(index); else clearBit(index); return *this;} PIBitArray & writeBit(const uint & index, const uchar & value) {return writeBit(index, value > 0);} - + PIBitArray & push_back(const bool & value) {resize(size_ + 1); writeBit(size_ - 1, value); return *this;} PIBitArray & push_back(const uchar & value) {return push_back(value > 0);} PIBitArray & insert(const uint & index, const bool & value) { @@ -71,14 +71,14 @@ public: resize(size_ - 1); return *this;} PIBitArray & append(const PIBitArray & ba) {for (uint i = 0; i < ba.bitSize(); ++i) push_back(ba[i]); return *this;} - + uchar * data() {return data_.data();} uchar toUChar() {if (size_ == 0) return 0; return data_[0];} ushort toUShort() {ushort t = 0; memcpy(&t, data(), piMin(byteSize(), sizeof(t))); return t;} uint toUInt() {uint t = 0; memcpy(&t, data(), piMin(byteSize(), sizeof(t))); return t;} ulong toULong() {ulong t = 0; memcpy(&t, data(), piMin(byteSize(), sizeof(t))); return t;} ullong toULLong() {ullong t = 0; memcpy(&t, data(), piMin(byteSize(), sizeof(t))); return t;} - + bool at(const uint & index) const {return (1 & (data_[index / 8] >> (index % 8))) == 1 ? true : false;} bool operator [](const uint & index) const {return at(index);} void operator +=(const PIBitArray & ba) {append(ba);} @@ -89,13 +89,13 @@ public: void operator =(const uint & val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} void operator =(const ulong & val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} void operator =(const ullong & val) {resize(sizeof(val) * 8); memcpy(data(), &val, sizeof(val));} - + private: uint bytesInBits(const uint & bits) const {return (bits + 7) / 8;} - + PIVector data_; uint size_; - + }; inline std::ostream & operator <<(std::ostream & s, const PIBitArray & ba) {for (uint i = 0; i < ba.bitSize(); ++i) {s << ba[i]; if (i % 8 == 7) s << ' ';} return s;} diff --git a/pibytearray.cpp b/pibytearray.cpp old mode 100644 new mode 100755 index da0bddd5..589a4b7f --- a/pibytearray.cpp +++ b/pibytearray.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Byte array - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -255,7 +255,7 @@ ushort PIByteArray::checksumCRC16() { 0x4E00, 0x8EC1, 0x8F81, 0x4F40, 0x8D01, 0x4DC0, 0x4C80, 0x8C41, 0x4400, 0x84C1, 0x8581, 0x4540, 0x8701, 0x47C0, 0x4680, 0x8641, 0x8201, 0x42C0, 0x4380, 0x8341, 0x4100, 0x81C1, 0x8081, 0x4040}; - + int sz = size_s(); uchar nTemp; ushort ret = 0xFFFF; @@ -302,7 +302,7 @@ uint PIByteArray::checksumCRC32() { 0xAED16A4A, 0xD9D65ADC, 0x40DF0B66, 0x37D83BF0, 0xA9BCAE53, 0xDEBB9EC5, 0x47B2CF7F, 0x30B5FFE9, 0xBDBDF21C, 0xCABAC28A, 0x53B39330, 0x24B4A3A6, 0xBAD03605, 0xCDD70693, 0x54DE5729, 0x23D967BF, 0xB3667A2E, 0xC4614AB8, 0x5D681B02, 0x2A6F2B94, 0xB40BBE37, 0xC30C8EA1, 0x5A05DF1B, 0x2D02EF8D}; - + int sz = size_s(); uchar nTemp; uint ret = 0xFFFFFFFF; diff --git a/pibytearray.h b/pibytearray.h old mode 100644 new mode 100755 index 120c8d31..3f607c97 --- a/pibytearray.h +++ b/pibytearray.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Byte array - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -75,7 +75,7 @@ class PIByteArray; class PIHuffman { public: PIVector compress(const PIVector & src); - + private: struct node { int freq; @@ -95,27 +95,29 @@ public: PIByteArray() {;} PIByteArray(const uint size) {resize(size);} PIByteArray(const void * data, const uint size) {for (uint i = 0; i < size; ++i) push_back(((uchar * )data)[i]);} - + + PIByteArray resized(int new_size) {PIByteArray tv(*this); tv.resize(new_size); return tv;} + PIByteArray & convertToBase64(); PIByteArray & convertFromBase64(); PIByteArray toBase64() {PIByteArray ba(*this); ba.convertToBase64(); return ba;} PIByteArray fromBase64() {PIByteArray ba(*this); ba.convertFromBase64(); return ba;} - + PIByteArray & compressRLE(uchar threshold = 192); PIByteArray & decompressRLE(uchar threshold = 192); PIByteArray compressedRLE(uchar threshold = 192) {PIByteArray ba(*this); ba.compressedRLE(threshold); return ba;} PIByteArray decompressedRLE(uchar threshold = 192) {PIByteArray ba(*this); ba.decompressedRLE(threshold); return ba;} - + PIByteArray & compressHuffman() {*this = huffman.compress(*this); return *this;} - + uchar checksumPlain8(); uint checksumPlain32(); uchar checksumCRC8(); ushort checksumCRC16(); uint checksumCRC32(); - + void operator =(const PIVector & d) {resize(d.size()); for (uint i = 0; i < size(); ++i) (*this)[i] = d[i];} - + private: union base64HelpStruct { struct { @@ -130,9 +132,9 @@ private: uchar byte2; }; }; - + static PIHuffman huffman; - + }; inline std::ostream & operator <<(std::ostream & s, const PIByteArray & ba) {for (uint i = 0; i < ba.size(); ++i) s << ba[i]; return s;} diff --git a/pichar.h b/pichar.h old mode 100644 new mode 100755 index 7521f924..65b5d262 --- a/pichar.h +++ b/pichar.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Unicode char - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/picli.cpp b/picli.cpp old mode 100644 new mode 100755 index d0eb6904..93ba9014 --- a/picli.cpp +++ b/picli.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Command-Line Parser - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -69,7 +69,7 @@ void PICLI::parse() { _args_opt << cra; continue; } - cout << "[PICli] Arguments overflow, \"" << cra << "\" ignored" << endl; + piCout << "[PICli] Arguments overflow, \"" << cra << "\" ignored" << endl; } if (last == 0 ? false : last->has_value) { last->value = cra; diff --git a/picli.h b/picli.h old mode 100644 new mode 100755 index 5108c4ff..6b835e1d --- a/picli.h +++ b/picli.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Command-Line Parser - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/picodec.cpp b/picodec.cpp old mode 100644 new mode 100755 index 4d23ada9..564dfbd5 --- a/picodec.cpp +++ b/picodec.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Text codings coder, based on "iconv" - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/picodec.h b/picodec.h old mode 100644 new mode 100755 index 6fe2e51d..6793428e --- a/picodec.h +++ b/picodec.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Text codings coder, based on "iconv" - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,26 +25,26 @@ class PICodec: private PIProcess { public: - PICodec(): PIProcess() {setGrabOutput(true); tf = PIFile::openTemporary(PIFile::New | PIFile::Read | PIFile::Write); tf.open();} - PICodec(const PIString & from, const PIString & to): PIProcess() {setCodings(from, to); tf = PIFile::openTemporary(PIFile::New | PIFile::Read | PIFile::Write);} + PICodec(): PIProcess() {setGrabOutput(true); tf = PIFile::openTemporary(PIIODevice::ReadWrite); tf.open();} + PICodec(const PIString & from, const PIString & to): PIProcess() {setCodings(from, to); tf = PIFile::openTemporary(PIIODevice::ReadWrite);} ~PICodec() {tf.remove();} - + void setFromCoding(const PIString & from) {c_from = from;} void setToCoding(const PIString & to) {c_to = to;} void setCodings(const PIString & from, const PIString & to) {c_from = from; c_to = to;} - + PIStringList availableCodecs(); PIString encode(PIString & str) {return PIString(exec_iconv(c_from, c_to, str.toByteArray()));} PIString encode(const PIByteArray & str) {return PIString(exec_iconv(c_from, c_to, str));} PIString decode(PIString & str) {return PIString(exec_iconv(c_to, c_from, str.toByteArray()));} PIString decode(const PIByteArray & str) {return PIString(exec_iconv(c_to, c_from, str));} - + private: PIByteArray exec_iconv(const PIString & from, const PIString & to, const PIByteArray & str); - + PIString c_from, c_to; PIFile tf; - + }; #endif // PICODEC_H diff --git a/piconfig.cpp b/piconfig.cpp old mode 100644 new mode 100755 index fbc70f6c..8e6e81b9 --- a/piconfig.cpp +++ b/piconfig.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Config parser - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -171,13 +171,13 @@ bool PIConfig::Entry::entryExists(const Entry * e, const PIString & name) const } -PIConfig::PIConfig(const PIString & path, PIFlags mode): PIFile(path, mode) { +PIConfig::PIConfig(const PIString & path, PIIODevice::DeviceMode mode): PIFile(path, mode) { delim = "."; root.delim = delim; empty.delim = delim; empty._parent = 0; - if (!isOpened() && (mode[Write] || mode[New])) - open(path, Read | Write | New); + if (!isOpened()) + open(path, mode); parse(); } @@ -233,7 +233,7 @@ void PIConfig::addEntry(const PIString & name, const PIString & value, const PIS } else entry = te; } PIConfig::Branch ch = entry->_children; - std::sort(ch.begin(), ch.end(), PIConfig::Entry::compare); + ch.sort(PIConfig::Entry::compare); te = (entry->isLeaf() ? 0 : ch.back()); ce = new Entry(); ce->delim = delim; @@ -249,7 +249,7 @@ void PIConfig::addEntry(const PIString & name, const PIString & value, const PIS if (toRoot) ce->_line = other.size_s() - 1; else { ch = entry->_parent->_children; - std::sort(ch.begin(), ch.end(), PIConfig::Entry::compare); + ch.sort(PIConfig::Entry::compare); ce->_line = ch.back()->_line + 1; } } @@ -369,8 +369,8 @@ void PIConfig::removeEntry(Branch & b, PIConfig::Entry * e) { if (b[i] == e) found = true; } if (!leaf) return; - e->_parent->_children.remove(e); - b.remove(e); + e->_parent->_children.removeOne(e); + b.removeOne(e); delete e; } diff --git a/piconfig.h b/piconfig.h old mode 100644 new mode 100755 index db166e9e..23de194b --- a/piconfig.h +++ b/piconfig.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Config parser - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,8 +54,8 @@ class PIConfig: public PIFile friend class Entry; friend class Branch; public: - PIConfig(const PIString & path, PIFlags mode = Read | Write); - ~PIConfig() {piForeach (Entry * i, root._children) deleteEntry(i);} + PIConfig(const PIString & path, PIIODevice::DeviceMode mode = PIIODevice::ReadWrite); + ~PIConfig() {piForeach (Entry * i, root._children) deleteEntry(i); close();} class Entry; @@ -127,7 +127,7 @@ public: Entry & setValue(const ulong value) {setValue(ultos(value)); setType("n"); return *this;} Entry & setValue(const float value) {setValue(ftos(value)); setType("f"); return *this;} Entry & setValue(const double value) {setValue(dtos(value)); setType("f"); return *this;} - + Entry & getValue(const PIString & vname, const PIString & def = PIString(), bool * exist = 0); Entry & getValue(const PIString & vname, const PIString & def = PIString(), bool * exist = 0) const {return const_cast(this)->getValue(vname, def, exist);} PICONFIG_GET_VALUE @@ -151,7 +151,8 @@ public: operator PIStringList() {return _value.split("%|%");} private: - static bool compare(const PIConfig::Entry * f, const PIConfig::Entry * s) {return f->_line < s->_line;} + typedef PIConfig::Entry * EntryPtr; + static int compare(const EntryPtr * f, const EntryPtr * s) {return (*f)->_line == (*s)->_line ? 0 : (*f)->_line < (*s)->_line ? -1 : 1;} bool entryExists(const Entry * e, const PIString & name) const; void buildLine() {_all = _tab + _full_name + " = " + _value + " #" + _type + " " + _comment;} void clear() {_children.clear(); _name = _value = _type = _comment = _all = PIString(); _line = 0; _parent = 0;} @@ -170,7 +171,7 @@ public: PIString delim; int _line; }; - + Entry & getValue(const PIString & vname, const PIString & def = PIString(), bool * exist = 0); Entry & getValue(const PIString & vname, const PIString & def = PIString(), bool * exist = 0) const {return const_cast(this)->getValue(vname, def, exist);} PICONFIG_GET_VALUE @@ -196,26 +197,26 @@ public: bool isEntryExists(const PIString & name) const {return entryExists(&root, name);} Branch allTree() {Branch b; piForeach (Entry * i, root._children) b << i; return b;} - Branch allLeaves() {Branch b; allLeaves(b, &root); std::sort(b.begin(), b.end(), Entry::compare); return b;} + Branch allLeaves() {Branch b; allLeaves(b, &root); b.sort(Entry::compare); return b;} int entryIndex(const PIString & name); PIString getName(uint number) {return entryByIndex(number)._name;} PIString getValue(uint number) {return entryByIndex(number)._value;} PIChar getType(uint number) {return entryByIndex(number)._type[0];} PIString getComment(uint number) {return entryByIndex(number)._comment;} - + void addEntry(const PIString & name, const PIString & value, const PIString & type = "s", bool write = true); void setName(uint number, const PIString & name, bool write = true); void setValue(uint number, const PIString & value, bool write = true); void setType(uint number, const PIString & type, bool write = true); void setComment(uint number, const PIString & comment, bool write = true); - + void removeEntry(const PIString & name, bool write = true); void removeEntry(uint number, bool write = true); - + void readAll(); void writeAll(); - + const PIString & delimiter() const {return delim;} void setDelimiter(const PIString & d) {delim = d; setEntryDelim(&root, d); readAll();} diff --git a/piconsole.cpp b/piconsole.cpp old mode 100644 new mode 100755 index 746d0ba0..f5d7e19f --- a/piconsole.cpp +++ b/piconsole.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Console output/input - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,6 +26,7 @@ PIConsole::PIConsole(bool startNow, KBFunc slot): PIThread() { ret_func = slot; num_format = 0; cur_tab = width = height = pwidth = pheight = my = 0; + def_align = Nothing; #ifdef WINDOWS ulcoord.X = ulcoord.Y = 0; hOut = GetStdHandle(STD_OUTPUT_HANDLE); @@ -142,7 +143,7 @@ void PIConsole::stop(bool clear) { if (clear) clearScreen(); moveTo(0, my + 4); showCursor(); - couts(fstr(Normal).stdString()); + couts(fstr(Normal)); #ifdef WINDOWS SetConsoleMode(hOut, smode); SetConsoleTextAttribute(hOut, dattr); @@ -243,7 +244,7 @@ PIString PIConsole::fstr(PIFlags f) { #define fprint(x) switch (num_format) {case (3): return printf("%e", x); break; default: return printf("%.5g", x); break;} #define dprint(x) switch (num_format) {case (3): return printf("%le", x); break; default: return printf("%.5lg", x); break;} -inline int PIConsole::couts(const string v) {return printf("%s", v.c_str());} +inline int PIConsole::couts(const PIString & v) {return printf("%s", v.data());} inline int PIConsole::couts(const char * v) {return printf("%s", v);} inline int PIConsole::couts(const bool v) {return (v ? printf("true") : printf("false"));} inline int PIConsole::couts(const char v) {return printf("%c", v);} @@ -289,14 +290,15 @@ void PIConsole::run() { } pwidth = width; pheight = height; - col_cnt = vars().size(); + col_cnt = columns().size(); col_wid = (col_cnt > 0) ? width / col_cnt : width; for (uint i = 0; i < col_cnt; ++i) { + PIVector & cvars(tabs[cur_tab].columns[i].variables); cx = col_wid * i; toUpperLeft(); - if (my < vars()[i].size()) my = vars()[i].size(); + if (my < cvars.size()) my = cvars.size(); j = 0; - piForeachC (Variable & tv, vars()[i]) { + piForeachC (Variable & tv, cvars) { if (j > height - 3) continue; j++; moveRight(cx); @@ -338,7 +340,7 @@ void PIConsole::run() { void PIConsole::fillLabels() { - uint cx, cy, my = 0; + uint cx, cy, my = 0, mx = 0, dx; #ifdef WINDOWS GetConsoleScreenBufferInfo(hOut, &sbi); width = sbi.srWindow.Right - sbi.srWindow.Left; @@ -349,21 +351,31 @@ void PIConsole::fillLabels() { width = ws.ws_col; height = ws.ws_row; #endif - col_cnt = vars().size(); + col_cnt = columns().size(); col_wid = (col_cnt > 0) ? width / col_cnt : width; for (uint i = 0; i < col_cnt; ++i) { + Column & ccol(tabs[cur_tab].columns[i]); + PIVector & cvars(ccol.variables); + if (ccol.alignment != Nothing) { + mx = 0; + piForeachC (Variable & j, cvars) + if (j.type != 0 && j.s != 0) + if (mx < j.name.size()) + mx = j.name.size(); + mx += 2; + } cx = col_wid * i; cy = 1; toUpperLeft(); - for (uint j = 0; j < vars()[i].size(); ++j) { + for (uint j = 0; j < cvars.size(); ++j) { if (int(j) > height - 3) continue; if (my < j) my = j; moveRight(cx); - tv = vars()[i][j]; - vars()[i][j].nx = cx; - vars()[i][j].ny = cy; + Variable & tv(cvars[j]); + cvars[j].nx = cx; + cvars[j].ny = cy; if (tv.name.size() == 0) { - vars()[i][j].offset = 0; + cvars[j].offset = 0; clearLine(); newLine(); cy++; @@ -371,16 +383,33 @@ void PIConsole::fillLabels() { } clearLine(); if (tv.type == 0 && tv.s == 0) { - vars()[i][j].offset = vars()[i][j].name.length(); - vars()[i][j].nx += vars()[i][j].offset; + cvars[j].offset = cvars[j].name.length(); + cvars[j].nx += cvars[j].offset; printLine(tv.name, cx, tv.format); newLine(); cy++; continue; } - vars()[i][j].offset = (tv.name + ": ").length(); - vars()[i][j].nx += vars()[i][j].offset; - printValue(tv.name + ": ", tv.format); + switch (ccol.alignment) { + case Nothing: + cvars[j].offset = (tv.name + ": ").length(); + cvars[j].nx += cvars[j].offset; + printValue(tv.name + ": ", tv.format); + break; + case Left: + cvars[j].offset = mx; + cvars[j].nx += cvars[j].offset; + printValue(tv.name + ": ", tv.format); + break; + case Right: + cvars[j].offset = mx; + cvars[j].nx += cvars[j].offset; + dx = mx - (tv.name + ": ").length(); + moveRight(dx); + printValue(tv.name + ": ", tv.format); + moveLeft(dx); + break; + } newLine(); cy++; } @@ -428,70 +457,70 @@ int PIConsole::bitsValue(void * src, int offset, int count) { return ret; } -#define ADD_VAR_BODY tv.name = name; tv.bitFrom = tv.bitCount = 0; tv.format = format; checkColumn(column); +#define ADD_VAR_BODY tv.name = name; tv.bitFrom = tv.bitCount = 0; tv.format = format; checkColumn(col); -void PIConsole::addString(const PIString & name, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 0; tv.s = 0; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, PIString* ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 0; tv.s = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, bool * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 1; tv.b = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, int * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 2; tv.i = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, long * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 3; tv.l = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, char * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 4; tv.c = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, float * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 5; tv.f = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, double * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 6; tv.d = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, short * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 7; tv.sh = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, uint * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 8; tv.ui = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, ulong * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 9; tv.ul = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, ushort * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 10; tv.ush = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, uchar * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 11; tv.uc = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, llong * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 12; tv.ll = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, ullong * ptr, int column, PIFlags format) { - ADD_VAR_BODY tv.type = 13; tv.ull = ptr; vars()[column - 1].push_back(tv);} -void PIConsole::addVariable(const PIString & name, PIProtocol * ptr, int column, PIFlags format) { - addString("protocol " + name, column, format | PIConsole::Bold); - addVariable("Rec :" + ptr->receiverDeviceName() + " ", ptr->receiverDeviceState_ptr(), column, format); - addVariable("Send:" + ptr->senderDeviceName() + " ", ptr->senderDeviceState_ptr(), column, format); - addVariable("Sended count", ptr->sendCount_ptr(), column, format); - addVariable("Received count", ptr->receiveCount_ptr(), column, format); - addVariable("Invalid count", ptr->wrongCount_ptr(), column, format); - addVariable("Missed count", ptr->missedCount_ptr(), column, format); - addVariable("Immediate Frequency, Hz", ptr->immediateFrequency_ptr(), column, format); - addVariable("Integral Frequency, Hz", ptr->integralFrequency_ptr(), column, format); - addVariable("Disconnect Timeout, s", ptr->disconnectTimeout_ptr(), column, format); - addVariable("Receiver history size", ptr->receiverHistorySize_ptr(), column, format); - addVariable("Sender history size", ptr->senderHistorySize_ptr(), column, format); - addVariable("Quality", ptr->quality_ptr(), column, format); +void PIConsole::addString(const PIString & name, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 0; tv.s = 0; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, PIString* ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 0; tv.s = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, bool * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 1; tv.b = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, int * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 2; tv.i = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, long * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 3; tv.l = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, char * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 4; tv.c = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, float * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 5; tv.f = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, double * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 6; tv.d = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, short * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 7; tv.sh = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, uint * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 8; tv.ui = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, ulong * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 9; tv.ul = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, ushort * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 10; tv.ush = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, uchar * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 11; tv.uc = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, llong * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 12; tv.ll = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, ullong * ptr, int col, PIFlags format) { + ADD_VAR_BODY tv.type = 13; tv.ull = ptr; column(col).push_back(tv);} +void PIConsole::addVariable(const PIString & name, PIProtocol * ptr, int col, PIFlags format) { + addString("protocol " + name, col, format | PIConsole::Bold); + addVariable("Rec :" + ptr->receiverDeviceName() + " ", ptr->receiverDeviceState_ptr(), col, format); + addVariable("Send:" + ptr->senderDeviceName() + " ", ptr->senderDeviceState_ptr(), col, format); + addVariable("Sended count", ptr->sendCount_ptr(), col, format); + addVariable("Received count", ptr->receiveCount_ptr(), col, format); + addVariable("Invalid count", ptr->wrongCount_ptr(), col, format); + addVariable("Missed count", ptr->missedCount_ptr(), col, format); + addVariable("Immediate Frequency, Hz", ptr->immediateFrequency_ptr(), col, format); + addVariable("Integral Frequency, Hz", ptr->integralFrequency_ptr(), col, format); + addVariable("Disconnect Timeout, s", ptr->disconnectTimeout_ptr(), col, format); + addVariable("Receiver history size", ptr->receiverHistorySize_ptr(), col, format); + addVariable("Sender history size", ptr->senderHistorySize_ptr(), col, format); + addVariable("Quality", ptr->quality_ptr(), col, format); } -void PIConsole::addVariable(const PIString & name, PISystemMonitor * ptr, int column, PIFlags format) { - addString("monitor " + name, column, format | PIConsole::Bold); - addVariable("state ", &(ptr->statistic().state), column, format); - addVariable("threads ", &(ptr->statistic().threads), column, format); - addVariable("priority", &(ptr->statistic().priority), column, format); - addVariable("memory physical", &(ptr->statistic().physical_memsize_readable), column, format); - addVariable("memory shared ", &(ptr->statistic().share_memsize_readable), column, format); - addVariable("cpu load", &(ptr->statistic().cpu_load_system), column, format); +void PIConsole::addVariable(const PIString & name, PISystemMonitor * ptr, int col, PIFlags format) { + addString("monitor " + name, col, format | PIConsole::Bold); + addVariable("state ", &(ptr->statistic().state), col, format); + addVariable("threads ", &(ptr->statistic().threads), col, format); + addVariable("priority", &(ptr->statistic().priority), col, format); + addVariable("memory physical", &(ptr->statistic().physical_memsize_readable), col, format); + addVariable("memory shared ", &(ptr->statistic().share_memsize_readable), col, format); + addVariable("cpu load", &(ptr->statistic().cpu_load_system), col, format); } -void PIConsole::addBitVariable(const PIString & name, void * ptr, int fromBit, int bitCount, int column, PIFlags format) { +void PIConsole::addBitVariable(const PIString & name, void * ptr, int fromBit, int bitCount, int col, PIFlags format) { tv.name = name; tv.bitFrom = fromBit; tv.bitCount = bitCount; tv.type = 14; tv.ptr = ptr; tv.format = format; - checkColumn(column); vars()[column - 1].push_back(tv);} -void PIConsole::addEmptyLine(int column, uint count) { + checkColumn(col); column(col).push_back(tv);} +void PIConsole::addEmptyLine(int col, uint count) { tv.name = ""; tv.type = 0; tv.d = 0; tv.format = Normal; for (uint i = 0; i < count; ++i) { - checkColumn(column); - vars()[column - 1].push_back(tv); + checkColumn(col); + column(col).push_back(tv); } } @@ -521,15 +550,15 @@ PIString PIConsole::getString(int x, int y) { PIString PIConsole::getString(const PIString & name) { - piForeachC (PIVector & i, tabs[cur_tab].variables) - piForeachC (Variable & j, i) + piForeachC (Column & i, tabs[cur_tab].columns) + piForeachC (Variable & j, i.variables) if (j.name == name) return getString(j.nx + 1, j.ny); return PIString(); } -#define PRINT_VAR_BODY couts(fstr(format).stdString()); int ret = couts(value); couts(fstr(PIConsole::Dec).stdString()); return ret; +#define PRINT_VAR_BODY couts(fstr(format)); int ret = couts(value); couts(fstr(PIConsole::Dec)); return ret; inline void PIConsole::printLine(const PIString & value, int dx, PIFlags format) { int i = width - value.length() - dx; @@ -537,15 +566,15 @@ inline void PIConsole::printLine(const PIString & value, int dx, PIFlags= 0) ts = value + PIString(i, ' '); else ts = value.left(value.size() + i); - couts(ts.stdString()); - couts(fstr(Dec).stdString()); + couts(ts); + couts(fstr(Dec)); } inline int PIConsole::printValue(const PIString & value, PIFlags format) { - couts(fstr(format).stdString()); - int ret = couts(value.stdString()); + couts(fstr(format)); + int ret = couts(value); fstr(PIConsole::Dec); return ret; } diff --git a/piconsole.h b/piconsole.h old mode 100644 new mode 100755 index 36397aac..2afd4bbf --- a/piconsole.h +++ b/piconsole.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Console output/input - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -61,6 +61,7 @@ public: Hex = 0x2000000, Oct = 0x4000000, Scientific = 0x8000000}; + enum Alignment {Nothing, Left, Right}; void addString(const PIString & name, int column = 1, PIFlags format = PIConsole::Normal); void addVariable(const PIString & name, PIString * ptr, int column = 1, PIFlags format = PIConsole::Normal); @@ -81,7 +82,7 @@ public: void addVariable(const PIString & name, PISystemMonitor * ptr, int column = 1, PIFlags format = PIConsole::Normal); void addBitVariable(const PIString & name, void * ptr, int fromBit, int bitCount, int column = 1, PIFlags format = PIConsole::Normal); void addEmptyLine(int column = 1, uint count = 1); - + PIString getString(int x, int y); short getShort(int x, int y) {return getString(x, y).toShort();} int getInt(int x, int y) {return getString(x, y).toInt();} @@ -92,7 +93,7 @@ public: int getInt(const PIString & name) {return getString(name).toInt();} float getFloat(const PIString & name) {return getString(name).toFloat();} double getDouble(const PIString & name) {return getString(name).toDouble();} - + uint tabsCount() const {return tabs.size();} PIString currentTab() const {return tabs[cur_tab].name;} int addTab(const PIString & name, char bind_key = 0); @@ -103,13 +104,17 @@ public: bool setTabBindKey(uint index, char bind_key); bool setTabBindKey(const PIString & name, char bind_key); void clearTabs(bool clearScreen = true) {if (clearScreen && isRunning()) {toUpperLeft(); clearScreenLower();} tabs.clear();} - + void addCustomStatus(const PIString & str) {tabs[cur_tab].status = str;} void clearCustomStatus() {tabs[cur_tab].status.clear();} - + Alignment defaultAlignment() const {return def_align;} + void setDefaultAlignment(Alignment align) {def_align = align;} + void setColumnAlignment(int col, Alignment align) {if (col < 0 || col >= columns().size_s()) return; column(col).alignment = align;} + void setColumnAlignmentToAll(Alignment align) {piForeach (Tab & i, tabs) piForeach (Column & j, i.columns) j.alignment = align; fillLabels();} + EVENT_HANDLER0(PIConsole, void, clearVariables) {clearVariables(true);} - EVENT_HANDLER1(PIConsole, void, clearVariables, bool, clearScreen) {if (clearScreen && isRunning()) {toUpperLeft(); clearScreenLower();} vars().clear();} - + EVENT_HANDLER1(PIConsole, void, clearVariables, bool, clearScreen) {if (clearScreen && isRunning()) {toUpperLeft(); clearScreenLower();} columns().clear();} + EVENT_HANDLER0(PIConsole, void, waitForFinish) {WAIT_FOR_EXIT} EVENT_HANDLER0(PIConsole, void, start) {start(false);} EVENT_HANDLER1(PIConsole, void, start, bool, wait) {PIThread::start(40); if (wait) waitForFinish();} @@ -156,7 +161,7 @@ private: void showCursor() {printf("\e[?25h");} #endif void status(); - void checkColumn(uint col) {if (vars().size() < col) {vars().resize(col);}} + void checkColumn(uint col) {while (columns().size() < col) columns().push_back(Column(def_align));} int bitsValue(void * src, int offset, int count); inline void printLine(const PIString & str, int dx = 0, PIFlags format = PIConsole::Normal); inline int printValue(const PIString & str, PIFlags format = PIConsole::Normal); @@ -203,21 +208,33 @@ private: void * ptr; }; void operator =(const Variable & src) {name = src.name; format = src.format; type = src.type; offset = src.offset; - bitFrom = src.bitFrom; bitCount = src.bitCount; c = src.c; nx = src.nx; ny = src.ny;} + bitFrom = src.bitFrom; bitCount = src.bitCount; ptr = src.ptr; nx = src.nx; ny = src.ny;} + }; + + struct Column { + PIVector variables; + Alignment alignment; + Column(Alignment align = PIConsole::Right) { alignment = align;} + uint size() const {return variables.size();} + Variable & operator [](int index) {return variables[index];} + const Variable & operator [](int index) const {return variables[index];} + void push_back(const Variable & v) {variables.push_back(v);} + void operator =(const Column & src) {variables = src.variables; alignment = src.alignment;} }; struct Tab { - PIVector > variables; + PIVector columns; PIString name; PIString status; char key; - Tab() {;} + Tab() {} Tab(PIString n, char k) {name = n; key = k;} ~Tab() {;} }; - PIVector > & vars() {return tabs[cur_tab].variables;} - inline int couts(const string v); + PIVector & columns() {return tabs[cur_tab].columns;} + Column & column(int index) {return tabs[cur_tab].columns[index - 1];} + inline int couts(const PIString & v); inline int couts(const char * v); inline int couts(const bool v); inline int couts(const char v); @@ -246,6 +263,7 @@ private: PIVector tabs; Variable tv; PIKbdListener * listener; + Alignment def_align; KBFunc ret_func; int width, height, pwidth, pheight, ret, col_wid, num_format; uint my; diff --git a/picontainers.h b/picontainers.h old mode 100644 new mode 100755 index 60b3d7f9..635a3540 --- a/picontainers.h +++ b/picontainers.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Generic containers, based on STL - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -124,7 +124,7 @@ template inline _PIForeachC * _PIForeachCastC(_PIForeachBase & c #define piForeachRC piForeachCR -#define piForTimes(c) for(int i = 0; i < c; ++i) +#define piForTimes(c) for(int _i##c = 0; _i##c < c; ++_i##c) template class PIFlags { @@ -133,27 +133,243 @@ public: PIFlags(Enum e): flags(e) {;} PIFlags(const PIFlags & f): flags(f.flags) {;} PIFlags(const int i): flags(i) {;} + PIFlags & setFlag(const PIFlags & f, bool on = true) {if (on) flags |= f.flags; else flags &= ~f.flags; return *this;} + PIFlags & setFlag(const Enum & e, bool on = true) {if (on) flags |= e; else flags &= ~e; return *this;} + PIFlags & setFlag(const int & i, bool on = true) {if (on) flags |= i; else flags &= ~i; return *this;} void operator =(const PIFlags & f) {flags = f.flags;} void operator =(const Enum & e) {flags = e;} void operator =(const int & i) {flags = i;} - void operator |=(const PIFlags & f) {flags = flags | f.flags;} - void operator |=(const Enum & e) {flags = flags | e;} - void operator |=(const int i) {flags = flags | i;} - void operator &=(const PIFlags & f) {flags = flags & f.flags;} - void operator &=(const Enum & e) {flags = flags & e;} - void operator &=(const int i) {flags = flags & i;} + void operator |=(const PIFlags & f) {flags |= f.flags;} + void operator |=(const Enum & e) {flags |= e;} + void operator |=(const int i) {flags |= i;} + void operator &=(const PIFlags & f) {flags &= f.flags;} + void operator &=(const Enum & e) {flags &= e;} + void operator &=(const int i) {flags &= i;} + void operator ^=(const PIFlags & f) {flags ^= f.flags;} + void operator ^=(const Enum & e) {flags ^= e;} + void operator ^=(const int i) {flags ^= i;} PIFlags operator |(PIFlags f) const {PIFlags tf(flags | f.flags); return tf;} PIFlags operator |(Enum e) const {PIFlags tf(flags | e); return tf;} PIFlags operator |(int i) const {PIFlags tf(flags | i); return tf;} PIFlags operator &(PIFlags f) const {PIFlags tf(flags & f.flags); return tf;} PIFlags operator &(Enum e) const {PIFlags tf(flags & e); return tf;} PIFlags operator &(int i) const {PIFlags tf(flags & i); return tf;} + PIFlags operator ^(PIFlags f) const {PIFlags tf(flags ^ f.flags); return tf;} + PIFlags operator ^(Enum e) const {PIFlags tf(flags ^ e); return tf;} + PIFlags operator ^(int i) const {PIFlags tf(flags ^ i); return tf;} bool operator [](Enum e) {return (flags & e) == e;} operator int() const {return flags;} private: int flags; }; +/* +template +class PIVector { +public: + PIVector(uint size = 0, const T & f = T()): data_(0), size_(0), rsize_(0) {resize(size, f);} + PIVector(T * d, uint size): data_(0), size_(0), rsize_(0) {alloc(size); for (uint i = 0; i < size; ++i) data_[i] = d[i];} + ~PIVector() {dealloc();} + typedef T value_type; + + class iterator { + friend class PIVector; + private: + iterator(PIVector * v, int p): parent(v), pos(p) {} + PIVector * parent; + int pos; + public: + iterator(): parent(0) {} + T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {++pos;} + void operator ++(int) {++pos;} + void operator --() {--pos;} + void operator --(int) {--pos;} + bool operator ==(const iterator & it) const {return (pos == it.pos);} + bool operator !=(const iterator & it) const {return (pos != it.pos);} + }; + + class const_iterator { + friend class PIVector; + private: + const_iterator(const PIVector * v, int p): parent(v), pos(p) {} + const PIVector * parent; + int pos; + public: + const_iterator(): parent(0) {} + //T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {++pos;} + void operator ++(int) {++pos;} + void operator --() {--pos;} + void operator --(int) {--pos;} + bool operator ==(const const_iterator & it) const {return (pos == it.pos);} + bool operator !=(const const_iterator & it) const {return (pos != it.pos);} + }; + + class reverse_iterator { + friend class PIVector; + private: + reverse_iterator(PIVector * v, int p): parent(v), pos(p) {} + PIVector * parent; + int pos; + public: + reverse_iterator(): parent(0) {} + T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {--pos;} + void operator ++(int) {--pos;} + void operator --() {++pos;} + void operator --(int) {++pos;} + bool operator ==(const reverse_iterator & it) const {return (pos == it.pos);} + bool operator !=(const reverse_iterator & it) const {return (pos != it.pos);} + }; + + class const_reverse_iterator { + friend class PIVector; + private: + const_reverse_iterator(const PIVector * v, int p): parent(v), pos(p) {} + const PIVector * parent; + int pos; + public: + const_reverse_iterator(): parent(0) {} + //T & operator *() {return (*parent)[pos];} + const T & operator *() const {return (*parent)[pos];} + void operator ++() {--pos;} + void operator ++(int) {--pos;} + void operator --() {++pos;} + void operator --(int) {++pos;} + bool operator ==(const const_reverse_iterator & it) const {return (pos == it.pos);} + bool operator !=(const const_reverse_iterator & it) const {return (pos != it.pos);} + }; + + iterator begin() {return iterator(this, 0);} + iterator end() {return iterator(this, size_);} + const_iterator begin() const {return const_iterator(this, 0);} + const_iterator end() const {return const_iterator(this, size_);} + reverse_iterator rbegin() {return reverse_iterator(this, size_ - 1);} + reverse_iterator rend() {return reverse_iterator(this, -1);} + const_reverse_iterator rbegin() const {return const_reverse_iterator(this, size_ - 1);} + const_reverse_iterator rend() const {return const_reverse_iterator(this, -1);} + + uint size() const {return size_;} + int size_s() const {return size_;} + int length() const {return size_;} + bool isEmpty() const {return (size_ == 0);} + + T & operator [](int index) {return data_[index];} + T & at(uint index) {return data_[index];} + const T & operator [](int index) const {return data_[index];} + const T & at(uint index) const {return data_[index];} + T & back() {return data_[size_ - 1];} + const T & back() const {return data_[size_ - 1];} + T & front() {return data_[0];} + const T & front() const {return data_[0];} + + bool operator ==(const PIVector & t) const {if (size_ != t.size_) return false; for (uint i = 0; i < size_; ++i) if (t[i] != data_[i]) return false; return true;} + bool operator !=(const PIVector & t) const {if (size_ != t.size_) return true; for (uint i = 0; i < size_; ++i) if (t[i] != data_[i]) return true; return false;} + bool contain(const T & v) const {for (uint i = 0; i < size_; ++i) if (v == data_[i]) return true; return false;} + + T * data(int index = 0) {return &(data_[index]);} + const T * data(int index = 0) const {return &(data_[index]);} + PIVector & clear() {resize(0); return *this;} + PIVector & fill(const T & f = T()) { + if (sizeof(T) == 1) memset(data_, f, size_); + else for (uint i = 0; i < size_; ++i) memcpy(&(data_[i]), &f, sizeof(T)); + return *this; + } + PIVector & assign(const T & f = T()) {return fill(f);} + PIVector & resize(uint new_size, const T & f = T()) { + if (new_size < size_) { + size_ = new_size; + return *this; + } + if (new_size > size_) { + os = size_; + alloc(new_size); + uint ds = size_ - os; + //if (sizeof(T) == 1) memset(&(data_[os]), f, ds); + for (uint i = 0; i < ds; ++i) data_[os + i] = f; + return *this; + } + return *this; + } + + PIVector & insert(int index, const T & v = T()) { + push_back(v); + if (index >= int(size_ - 1)) return *this; + os = size_ - index; + T * pd = new T[os * sizeof(T)]; + memcpy(pd, &(data_[index]), os * sizeof(T)); + memcpy(&(data_[index + 1]), pd, os * sizeof(T)); + delete[] pd; + data_[index] = v; + return *this; + } + + PIVector & remove(int index, int count = 1) { + if (index + count >= int(size_)) { + resize(index); + return *this; + } + os = size_ - index - count; + T * pd = new T[os * sizeof(T)]; + memcpy(pd, &(data_[index + count]), os * sizeof(T)); + memcpy(&(data_[index]), pd, os * sizeof(T)); + delete[] pd; + resize(size_ - count); + return *this; + } + + typedef int (*CompareFunc)(const T * , const T * ); + static int compare_func(const T * t0, const T * t1) {return (*t0) == (*t1) ? 0 : ((*t0) < (*t1) ? -1 : 1);} + PIVector & sort(CompareFunc compare = compare_func) {qsort(data_, size_, sizeof(T), (int(*)(const void * , const void * ))compare); return *this;} + + PIVector & removeOne(const T & v) {for (uint i = 0; i < size_; ++i) if (data_[i] == v) {remove(i); return *this;} return *this;} + PIVector & removeAll(const T & v) {for (uint i = 0; i < size_; ++i) if (data_[i] == v) {remove(i); --i;} return *this;} + + PIVector & push_back(const T & v) {alloc(size_ + 1); data_[size_ - 1] = v; return *this;} + PIVector & append(const T & v) {return push_back(v);} + PIVector & operator <<(const T & v) {return push_back(v);} + + PIVector & push_front(const T & v) {insert(0, v); return *this;} + PIVector & prepend(const T & v) {return push_front(v);} + //PIVector & operator <<(const T & v) {return push_back(v);} + + PIVector & pop_back() {if (size_ == 0) return *this; resize(size_ - 1); return *this;} + PIVector & pop_front() {if (size_ == 0) return *this; remove(0); return *this;} + +private: + uint asize(uint s) {if (s == 0) return 0; if (rsize_ + rsize_ >= s && rsize_ < s) return rsize_ + rsize_; uint t = 0, s_ = s - 1; while (s_ >> t) ++t; return (1 << t);} + void dealloc() {if (data_ != 0) delete[] data_; data_ = 0;} + void alloc(uint new_size) { + if (new_size <= rsize_) { + size_ = new_size; + return; + } + os = size_; + size_ = new_size; + uint as = asize(new_size); + if (as == rsize_) return; + T * pd = 0; + if (os > 0) { + pd = new T[os * sizeof(T)]; + memcpy(pd, data_, os * sizeof(T)); + } + rsize_ = as; + dealloc(); + data_ = new T[rsize_ * sizeof(T)]; + if (os > 0) { + memcpy(data_, pd, size_ * sizeof(T)); + delete[] pd; + } + } + + T * data_; + uint size_, rsize_, os; +}; +*/ template > class PIVector: public vector { typedef PIVector _CVector; @@ -172,15 +388,20 @@ public: Type * data(uint index = 0) {return &(*this)[index];} int size_s() const {return static_cast(_stlc::size());} bool isEmpty() const {return _stlc::empty();} + typedef int (*CompareFunc)(const Type * , const Type * ); + static int compare_func(const Type * t0, const Type * t1) {return (*t0) == (*t1) ? 0 : ((*t0) < (*t1) ? -1 : 1);} + _CVector & sort(CompareFunc compare = compare_func) {qsort(&at(0), _stlc::size(), sizeof(Type), (int(*)(const void * , const void * ))compare); return *this;} _CVector & fill(const Type & t) {_stlc::assign(_stlc::size(), t); return *this;} _CVector & pop_front() {_stlc::erase(_stlc::begin()); return *this;} _CVector & push_front(const Type & t) {_stlc::insert(_stlc::begin(), t); return *this;} _CVector & remove(uint num) {_stlc::erase(_stlc::begin() + num); return *this;} _CVector & remove(uint num, uint count) {_stlc::erase(_stlc::begin() + num, _stlc::begin() + num + count); return *this;} - _CVector & remove(const Type & t) {for (typename _stlc::iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (t == *i) {_stlc::erase(i); --i;} return *this;} + //_CVector & remove(const Type & t) {for (typename _stlc::iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (t == *i) {_stlc::erase(i); --i;} return *this;} + _CVector & removeOne(const Type & v) {for (typename _stlc::iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (v == *i) {_stlc::erase(i); return *this;} return *this;} + _CVector & removeAll(const Type & v) {for (typename _stlc::iterator i = _stlc::begin(); i != _stlc::end(); ++i) if (v == *i) {_stlc::erase(i); --i;} return *this;} _CVector & insert(uint pos, const Type & t) {_stlc::insert(_stlc::begin() + pos, t); return *this;} _CVector & operator <<(const Type & t) {_stlc::push_back(t); return *this;} - _CVector & operator <<(const _CVector & t) {for (typename _stlc::iterator i = t.begin(); i != t.end(); i++) _stlc::push_back(*i); return *this;} + _CVector & operator <<(const _CVector & t) {for (typename _stlc::const_iterator i = t.begin(); i != t.end(); i++) _stlc::push_back(*i); return *this;} bool operator ==(const _CVector & t) {for (uint i = 0; i < _stlc::size(); ++i) if (t[i] != at(i)) return false; return true;} bool operator !=(const _CVector & t) {for (uint i = 0; i < _stlc::size(); ++i) if (t[i] != at(i)) return true; return false;} bool contain(const Type & v) const {for (uint i = 0; i < _stlc::size(); ++i) if (v == at(i)) return true; return false;} @@ -212,7 +433,7 @@ public: _CList & remove(uint num, uint count) {_stlc::erase(_stlc::begin() + num, _stlc::begin() + num + count); return *this;} _CList & insert(uint pos, const Type & t) {_stlc::insert(_stlc::begin() + pos, t); return *this;} _CList & operator <<(const Type & t) {_stlc::push_back(t); return *this;} - PIVector toVector() {PIVector v; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) v << *i; return v;} + PIVector toVector() {PIVector v; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) v << *i; return v;} }; template, typename Allocator = std::allocator > @@ -232,7 +453,7 @@ public: _CSet & remove(uint num, uint count) {_stlc::erase(_stlc::begin() + num, _stlc::begin() + num + count); return *this;} _CSet & operator <<(const Type & t) {_stlc::insert(t); return *this;} bool operator [](const Type & t) {return _stlc::find(t);} - PIVector toVector() {PIVector v; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) v << *i; return v;} + PIVector toVector() {PIVector v; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) v << *i; return v;} }; template @@ -265,7 +486,7 @@ public: int size_s() const {return static_cast(_stlc::size());} bool isEmpty() const {return _stlc::empty();} _CDeque & operator <<(const Type & t) {_CDeque::push_back(t); return *this;} - PIVector toVector() {PIVector v; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) v << *i; return v;} + PIVector toVector() {PIVector v; for (typename _stlc::const_iterator i = _stlc::begin(); i != _stlc::end(); ++i) v << *i; return v;} }; template diff --git a/pidir.cpp b/pidir.cpp old mode 100644 new mode 100755 index d007ecca..bfde7fcb --- a/pidir.cpp +++ b/pidir.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Directory - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,7 +35,7 @@ PIDir::PIDir() { PIDir::PIDir(const PIString & dir) { - path_ = dir.stdString(); + path_ = dir; dir_ = 0; open(); } diff --git a/pidir.h b/pidir.h old mode 100644 new mode 100755 index 702f220c..c6fd7d97 --- a/pidir.h +++ b/pidir.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Directory - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/piethernet.cpp b/piethernet.cpp old mode 100644 new mode 100755 index 5b5ae6ce..1fd93494 --- a/piethernet.cpp +++ b/piethernet.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Ethernet, UDP - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,182 +20,217 @@ #include "piethernet.h" -PIEthernet::PIEthernet(PIString ip, int port, void * data_, EthernetFunc slot): PIThread() { +PIEthernet::PIEthernet(void * data, ReadRetFunc slot): PIIODevice("", ReadWrite) { piMonitor.ethernets++; setPriority(piHigh); - data = data_; - ip_ = ip_s = ip; - port_ = port_s = port; - sock = sock_s = -1; - ret_func = slot; - tries = 0; - //buffer_ = new char[BUFFER_SIZE]; + type_ = UDP; + ret_data_ = data; + ip_ = ip_s = ""; + port_ = port_s = 0; + sock = -1; + ret_func_ = slot; + connected_ = false; + server_thread_.setData(this); + setThreadedReadBufferSize(65536); +#ifdef WINDOWS + WSADATA wsaData; + WSAStartup(MAKEWORD(2, 2), &wsaData); +#endif + init(); +} + + +PIEthernet::PIEthernet(PIEthernet::Type type, void * data, ReadRetFunc slot): PIIODevice("", ReadWrite) { + piMonitor.ethernets++; + setPriority(piHigh); + type_ = type; + ret_data_ = data; + ip_ = ip_s = ""; + port_ = port_s = 0; + sock = -1; + ret_func_ = slot; + connected_ = false; + server_thread_.setData(this); + setThreadedReadBufferSize(65536); +#ifdef WINDOWS + WSADATA wsaData; + WSAStartup(MAKEWORD(2, 2), &wsaData); +#endif + init(); +} + + +PIEthernet::PIEthernet(int sock_, PIString ip_port): PIIODevice("", ReadWrite) { + piMonitor.ethernets++; + setPriority(piHigh); + type_ = TCP_Client; + parseAddress(ip_port, &ip_s, &port_s); + sock = sock_; + server_thread_.setData(this); + init_ = opened_ = connected_ = true; + setThreadedReadBufferSize(65536); #ifdef WINDOWS WSADATA wsaData; WSAStartup(MAKEWORD(2, 2), &wsaData); #endif - initSend(); } PIEthernet::~PIEthernet() { piMonitor.ethernets--; - terminate(); + if (server_thread_.isRunning()) server_thread_.terminate(); + closeSocket(sock); #ifdef WINDOWS WSACleanup(); #endif - if (sock != -1) { - shutdown(sock, SHUT_RDWR); -#ifdef WINDOWS - closesocket(sock); -#else - close(sock); -#endif - sock = -1; - } - if (sock_s != -1) { - shutdown(sock_s, SHUT_RDWR); -#ifdef WINDOWS - closesocket(sock_s); -#else - close(sock_s); -#endif - sock_s = -1; - } //if (buffer_ != 0) delete buffer_; //buffer_ = 0; } -void PIEthernet::terminate() { - if (!receiverInitialized()) return; - if (isRunning()) { - stop(); - PIThread::terminate(); - } - tries = 0; - /*if (sock != -1) { - shutdown(sock, SHUT_RDWR); - shutdown(sock, SHUT_RDWR); - close(sock); - sock = -1; - } - if (sock_s != -1) { - shutdown(sock_s, SHUT_RDWR); - close(sock_s); - sock_s = -1; - }*/ -} - - -void PIEthernet::begin() { - if (!init()) stop(); -} - - -void PIEthernet::run() { -/*#ifdef WINDOWS - int addr_len = sizeof(sockaddr); -#else - socklen_t addr_len = sizeof(sockaddr_storage); -#endif*/ - //cout << "[PIEthernet] reading from " << &addr_ << endl; - readed = recv(sock, buffer_, BUFFER_SIZE, 0/*, (sockaddr * )&addr_, &addr_len*/); - //cout << WSAGetLastError() << endl; - if (readed < 0) { - cout << "[PIEthernet] Error while reading, " << errorString() << endl; - //stop(); - //init(); - return; - } - if (ret_func != 0) ret_func(data, buffer_, readed); -} - - -void PIEthernet::end() { - terminate(); -} - - bool PIEthernet::init() { + //cout << "init " << type_ << endl; + closeSocket(sock); + int st = 0, so = 1; + if (type_ == UDP) st = SOCK_DGRAM; + if (type_ == TCP_Client || type_ == TCP_Server) st = SOCK_STREAM; + sock = socket(PF_INET, st, 0); + if (sock == -1) { + piCout << "[PIEthernet] Cant`t create socket, " << errorString() << endl; + return false; + } + setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &so, sizeof(so)); + //fcntl(sock, F_SETFL, 0/*O_NONBLOCK*/); + return true; +} + + +void PIEthernet::parseAddress(const PIString & ipp, PIString * ip, int * port) { + if (ip != 0) *ip = ipp.left(ipp.find(":")); + if (port != 0) *port = ipp.right(ipp.length() - ipp.find(":") - 1).toInt(); +} + + +bool PIEthernet::openDevice() { + if (connected_) return true; + if (sock == -1) init(); + if (sock == -1) return false; + //cout << " bind to " << path_ << " ..." <sock, (sockaddr * )&client_addr, &slen); + if (s == -1) { + piCout << "[PIEthernet] Cant`t accept new connection, " << errorString() << endl; + return; + } + PIString ip(inet_ntoa(client_addr.sin_addr)); + ip += ":" + PIString::fromNumber(htons(client_addr.sin_port)); + ce->clients_ << new PIEthernet(s, ip); + cout << "connected " << ip << endl; + //char d[256]; + //cout << " recv " << recv(s, d, 256, 0) << endl; + //cout << recv(ce->clients_.back()->sock, d, 256, 0) << endl; + } diff --git a/piethernet.h b/piethernet.h old mode 100644 new mode 100755 index cb24377b..50e95db3 --- a/piethernet.h +++ b/piethernet.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Ethernet, UDP - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,12 +20,13 @@ #ifndef PIETHERNET_H #define PIETHERNET_H -#include "pithread.h" -#include "pistring.h" +#include "pitimer.h" +#include "piiodevice.h" #ifndef WINDOWS # include # include # include +# include #else # ifdef CC_VC # include @@ -36,42 +37,66 @@ # endif #endif -#define BUFFER_SIZE 4096 - -typedef bool (*EthernetFunc)(void * , uchar * , int ); - -class PIEthernet: public PIThread +class PIEthernet: public PIIODevice { public: // slot is any function format "bool (void*, uchar*, int)" - PIEthernet(PIString ip = "", int port = 0, void * data = 0, EthernetFunc slot = 0); + PIEthernet(void * data, ReadRetFunc slot); + + enum Type {UDP, TCP_Client, TCP_Server}; + + PIEthernet(Type type = UDP, void * data = 0, ReadRetFunc slot = 0); ~PIEthernet(); - void setSlot(EthernetFunc func) {ret_func = func;} - void setData(void * d) {data = d;} - void setReadAddress(PIString ip, int port) {ip_ = ip; port_ = port;} + void setReadAddress(PIString ip, int port) {path_ = ip + ":" + PIString::fromNumber(port);} + void setReadAddress(PIString ip_port) {path_ = ip_port;} void setSendAddress(PIString ip, int port) {ip_s = ip; port_s = port;} + void setSendAddress(PIString ip_port) {parseAddress(ip_port, &ip_s, &port_s);} + + Type type() const {return type_;} + + bool connect(PIString ip, int port); + bool connect(PIString ip_port) {parseAddress(ip_port, &ip_c, &port_c); return connect(ip_c, port_c);} + bool isConnected() const {return connected_;} + + bool listen(); + bool listen(PIString ip, int port) {setReadAddress(ip, port); return listen();} + bool listen(PIString ip_port) {setReadAddress(ip_port); return listen();} + + PIEthernet * client(int index) {return clients_[index];} + int clientsCount() const {return clients_.size_s();} + PIVector clients() {return clients_;} + + bool send(PIString ip, int port, const void * data, int size) {ip_s = ip; port_s = port; return send(data, size);} + bool send(PIString ip_port, const void * data, int size) {parseAddress(ip_port, &ip_s, &port_s); return send(data, size);} + bool send(const void * data, int size) {return (write(data, size) == size);} + + int read(void * read_to, int max_size); + int write(const void * data, int max_size); + +protected: + PIEthernet(int sock, PIString ip_port); - bool send(PIString ip, int port, char * data, int size); - bool send(uchar * data, int size); bool init(); - bool initSend(); - bool receiverInitialized() const {return sock != -1;} - bool senderInitialized() const {return sock_s != -1;} - void terminate(); - const uchar * buffer() const {return buffer_;} + bool openDevice(); + bool closeDevice(); +#ifdef WINDOWS + void closeSocket(int & sd) {if (sd != -1) closesocket(sd); sd = -1;} +#else + void closeSocket(int & sd) {if (sd != -1) ::close(sd); sd = -1;} +#endif + void parseAddress(const PIString & ipp, PIString * ip, int * port); + + int sock, port_, port_s, port_c, wrote; + bool connected_; + sockaddr_in addr_, saddr_; + PIString ip_, ip_s, ip_c; + PIThread server_thread_; + PIVector clients_; + Type type_; private: - void begin(); - void run(); - void end(); - - int sock, sock_s, port_, port_s, wrote, readed, tries; - sockaddr_in addr_, saddr_; - PIString ip_, ip_s; - EthernetFunc ret_func; - void * data; - uchar buffer_[BUFFER_SIZE]; + static void server_func(void * eth); }; diff --git a/pievaluator.cpp b/pievaluator.cpp old mode 100644 new mode 100755 index b3ef9283..5bef2b45 --- a/pievaluator.cpp +++ b/pievaluator.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Evaluator designed for stream computing - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/pievaluator.h b/pievaluator.h old mode 100644 new mode 100755 index 9009c59d..545c78cd --- a/pievaluator.h +++ b/pievaluator.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Evaluator designed for stream computing - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/pifile.cpp b/pifile.cpp old mode 100644 new mode 100755 index 78b7b3aa..ac4d5cad --- a/pifile.cpp +++ b/pifile.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives File - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,35 +20,46 @@ #include "pifile.h" -bool PIFile::open(const PIString & path_, PIFlags mode_) { - cpath = path_; - cmode = mode_; - string st = cpath.stdString(); - if (cmode[New]) { - stream.open(st.c_str(), fstream::in | fstream::out | fstream::trunc | fstream::binary); - stream.close(); - cmode &= ~New; - stream.open(st.c_str(), (fstream::openmode)(int)cmode | fstream::binary); - } else stream.open(st.c_str(), (fstream::openmode)(int)cmode | fstream::binary); - return isOpened(); +bool PIFile::openDevice() { + if (opened_) close(); + if (path_.isEmpty()) return false; + //cout << "fopen " << path_.data() << ": " << strType(mode_).data() << endl; + fd = fopen(path_.data(), strType(mode_).data()); + opened_ = (fd != 0); + seekToBegin(); + return opened_; +} + + +bool PIFile::closeDevice() { + if (!opened_) return true; + return (fclose(fd) != 0); } PIString PIFile::readLine() { - char * buff = new char[4096]; - stream.getline(buff, 4096); - return PIString(buff); + PIString str; + if (!opened_) return str; + char cc; + int cp = 0; + while (!isEnd() && cp < 4095) { + cc = char(fgetc(fd)); + if (cc == '\n') break; + str.push_back(cc); + } + //cout << "readline: " << buff << endl; + return str; } llong PIFile::readAll(void * data) { llong cp = pos(), s = size(), i = -1; - stream.seekg(0); + seekToBegin(); if (s < 0) { - while (!stream.eof()) - stream.read(&(((char*)data)[++i]), 1); + while (!isEnd()) + read(&(((char*)data)[++i]), 1); } else - stream.read((char * )data, s); + read((char * )data, s); seek(cp); return s; } @@ -56,14 +67,11 @@ llong PIFile::readAll(void * data) { PIByteArray PIFile::readAll(bool forceRead) { llong cp = pos(), s = size(); - char c; PIByteArray a; if (s < 0) { if (!forceRead) return a; - while (!stream.eof()) { - stream.read(&c, 1); - a.push_back(c); - } + while (!isEnd()) + a.push_back(readChar()); seek(cp); return a; } @@ -75,12 +83,11 @@ PIByteArray PIFile::readAll(bool forceRead) { llong PIFile::size() { - if (!stream.is_open()) return -1; - llong s, cp = stream.tellg(); - stream.seekg(0, fstream::end); - s = stream.tellg(); - stream.seekg(cp, fstream::beg); - stream.clear(); + if (!opened_) return -1; + llong s, cp = pos(); + seekToEnd(); + s = pos(); + seek(cp); return s; } @@ -91,23 +98,18 @@ void PIFile::resize(llong new_size, char fill_) { if (ds > 0) { char * buff = new char[ds]; memset(buff, fill_, ds); - stream.write(buff, ds); - delete buff; + write(buff, ds); + delete[] buff; return; } - cout << "[PIFile] Downsize is not support yet :-(" << endl; + piCout << "[PIFile] Downsize is not support yet :-(" << endl; } -llong PIFile::pos() { - if (cmode[Write]) return stream.tellp(); - if (cmode[Read]) return stream.tellg(); - return -1; -} - -PIFile PIFile::openTemporary(PIFlags mode) { - char * rc; - rc = tmpnam(0); - return PIFile(PIString(rc), mode); +bool PIFile::isExists(const PIString & path) { + FILE * f = fopen(PIString(path).data(), "r"); + bool ok = (f != 0); + if (ok) fclose(f); + return ok; } diff --git a/pifile.h b/pifile.h old mode 100644 new mode 100755 index 7793f906..6c378f86 --- a/pifile.h +++ b/pifile.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives File - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,100 +20,89 @@ #ifndef PIFILE_H #define PIFILE_H -#include "piobject.h" -#include +#include "piiodevice.h" +#include -using std::fstream; - -class PIFile: public PIObject +class PIFile: public PIIODevice { public: - PIFile(): PIObject() {;} + PIFile(const PIString & path = PIString(), DeviceMode type = ReadWrite): PIIODevice(path, type) {openDevice();} - enum Mode {Read = fstream::in, Write = fstream::out, Truncate = fstream::trunc, New = fstream::app, ReadWrite = Read | Write}; + //PIFile & operator =(const PIFile & f) {path_ = f.path_; type_ = f.type_; return *this;} - PIFile(const PIString & path, PIFlags mode = ReadWrite): PIObject(path) {open(path, mode);} - PIFile(const PIFile & file): PIObject(file.cpath) {cpath = file.cpath; cmode = file.cmode;} - ~PIFile() {close();} - - PIFile & operator =(const PIFile & f) {cpath = f.cpath; cmode = f.cmode; return *this;} - - EVENT_HANDLER2(PIFile, bool, open, const PIString & , path, PIFlags, mode); - EVENT_HANDLER1(PIFile, bool, open, PIFlags, mode) {return open(cpath, mode);} - EVENT_HANDLER1(PIFile, bool, open, const PIString & , path) {return open(path, cmode);} - EVENT_HANDLER0(PIFile, bool, open) {return open(cpath, cmode);} - EVENT_HANDLER0(PIFile, void, close) {stream.clear(); stream.close();} - EVENT_HANDLER0(PIFile, void, clear) {string st = cpath.stdString(); close(); stream.open(st.c_str(), fstream::trunc | fstream::binary | (fstream::openmode)(int)cmode);} - void seek(llong position) {stream.clear(); stream.seekg(position); stream.seekp(position);} - void seekToBegin() {stream.clear(); stream.seekg(0, fstream::beg); stream.seekp(0, fstream::beg);} - void seekToEnd() {stream.clear(); stream.seekg(0, fstream::end); stream.seekp(0, fstream::end);} - void seekToLine(llong line) {stream.clear(); seekToBegin(); piForTimes (line) readLine();} // line 0 - begin of file + void flush() {fflush(fd);} + EVENT_HANDLER(PIFile, void, clear) {close(); fd = fopen(path_.data(), "w"); close(); open();} + void seek(llong position) {if (!opened_) return; fseek(fd, position, SEEK_SET); clearerr(fd);} + void seekToBegin() {if (!opened_) return; fseek(fd, 0, SEEK_SET); clearerr(fd);} + void seekToEnd() {if (!opened_) return; fseek(fd, 0, SEEK_END); clearerr(fd);} + void seekToLine(llong line) {if (!opened_) return; seekToBegin(); piForTimes (line) readLine(); clearerr(fd);} // line 0 - begin of file EVENT_HANDLER1(PIFile, void, resize, llong, new_size) {resize(new_size, 0);} EVENT_HANDLER2(PIFile, void, resize, llong, new_size, char, fill); - void fill(char c) {stream.fill(c);} - EVENT_HANDLER0(PIFile, void, flush) {stream.flush();} + //void fill(char c) {stream.fill(c);} + char readChar() {return (char)fgetc(fd);} PIString readLine(); llong readAll(void * data); PIByteArray readAll(bool forceRead = false); - EVENT_HANDLER0(PIFile, void, remove) {close(); std::remove(cpath.data());} + EVENT_HANDLER0(PIFile, void, remove) {close(); std::remove(path_.data());} - PIString path() const {return cpath;} - void setPath(const PIString & path) {cpath = path;} - PIFlags mode() const {return cmode;} + void setPath(const PIString & path) {path_ = path; if (opened_) openDevice();} llong size(); - llong pos(); - bool isOpened() {return stream.is_open();} - bool isEnd() {return stream.eof();} + llong pos() {if (!opened_) return -1; return ftell(fd);} + bool isEnd() {return (feof(fd) || ferror(fd));} bool isEmpty() {return (size() <= 0);} - PIFile & writeData(const void * data, int size_) {stream.write((char * )data, size_); return *this;} - PIFile & readData(void * data, int size_) {stream.read((char * )data, size_); return *this;} - PIFile & writeToBinLog(ushort id, const void * data, int size) {writeBinary(id).writeBinary((ushort)size).writeData(data, size); flush(); return *this;} + int read(void * read_to, int max_size) {if (!canRead()) return -1; return fread(read_to, max_size, 1, fd);} + int write(const void * data, int max_size) {if (!canWrite()) return -1; return fwrite(data, max_size, 1, fd);} + PIFile & writeToBinLog(ushort id, const void * data, int size) {if (!isWriteable()) return *this; writeBinary(id).writeBinary((ushort)size); write(data, size); flush(); return *this;} - PIFile & writeBinary(const char v) {stream.write((char * )&v, sizeof(v)); return *this;} - PIFile & writeBinary(const short v) {stream.write((char * )&v, sizeof(v)); return *this;} - PIFile & writeBinary(const int v) {stream.write((char * )&v, sizeof(v)); return *this;} - PIFile & writeBinary(const long v) {stream.write((char * )&v, sizeof(v)); return *this;} - PIFile & writeBinary(const uchar v) {stream.write((char * )&v, sizeof(v)); return *this;} - PIFile & writeBinary(const ushort v) {stream.write((char * )&v, sizeof(v)); return *this;} - PIFile & writeBinary(const uint v) {stream.write((char * )&v, sizeof(v)); return *this;} - PIFile & writeBinary(const ulong v) {stream.write((char * )&v, sizeof(v)); return *this;} - PIFile & writeBinary(const float v) {stream.write((char * )&v, sizeof(v)); return *this;} - PIFile & writeBinary(const double v) {stream.write((char * )&v, sizeof(v)); return *this;} + PIFile & writeBinary(const char v) {write(&v, sizeof(v)); return *this;} + PIFile & writeBinary(const short v) {write(&v, sizeof(v)); return *this;} + PIFile & writeBinary(const int v) {write(&v, sizeof(v)); return *this;} + PIFile & writeBinary(const long v) {write(&v, sizeof(v)); return *this;} + PIFile & writeBinary(const uchar v) {write(&v, sizeof(v)); return *this;} + PIFile & writeBinary(const ushort v) {write(&v, sizeof(v)); return *this;} + PIFile & writeBinary(const uint v) {write(&v, sizeof(v)); return *this;} + PIFile & writeBinary(const ulong v) {write(&v, sizeof(v)); return *this;} + PIFile & writeBinary(const float v) {write(&v, sizeof(v)); return *this;} + PIFile & writeBinary(const double v) {write(&v, sizeof(v)); return *this;} - PIFile & operator <<(const char & v) {stream.write(&v, 1); return *this;} - //PIFile & operator <<(const string & v) {stream.write(v.c_str(), v.size()); return *this;} - PIFile & operator <<(const PIString & v) {string s = v.stdString(); stream.write(s.c_str(), s.size()); return *this;} - PIFile & operator <<(const PIByteArray & v) {stream.write((char * )v.data(), v.size()); return *this;} - PIFile & operator <<(const short & v) {stream << v; return *this;} - PIFile & operator <<(const int & v) {stream << v; return *this;} - PIFile & operator <<(const long & v) {stream << v; return *this;} - PIFile & operator <<(const uchar & v) {stream << v; return *this;} - PIFile & operator <<(const ushort & v) {stream << v; return *this;} - PIFile & operator <<(const uint & v) {stream << v; return *this;} - PIFile & operator <<(const ulong & v) {stream << v; return *this;} - PIFile & operator <<(const float & v) {stream << v; return *this;} - PIFile & operator <<(const double & v) {stream << v; return *this;} + PIFile & operator <<(const char & v) {if (!isWriteable()) return *this; write(&v, 1); return *this;} + //PIFile & operator <<(const string & v) {write(v.c_str(), v.size()); return *this;} + PIFile & operator <<(const PIString & v) {if (!isWriteable()) return *this; write(v.data(), v.lengthAscii()); return *this;} + PIFile & operator <<(const PIByteArray & v) {if (!isWriteable()) return *this; write(v.data(), v.size()); return *this;} + PIFile & operator <<(short v) {if (!isWriteable()) return *this; fprintf(fd, "%hd", v); return *this;} + PIFile & operator <<(int v) {if (!isWriteable()) return *this; fprintf(fd, "%d", v); return *this;} + PIFile & operator <<(long v) {if (!isWriteable()) return *this; fprintf(fd, "%ld", v); return *this;} + PIFile & operator <<(uchar v) {if (!isWriteable()) return *this; fprintf(fd, "%c", v); return *this;} + PIFile & operator <<(ushort v) {if (!isWriteable()) return *this; fprintf(fd, "%hd", v); return *this;} + PIFile & operator <<(uint v) {if (!isWriteable()) return *this; fprintf(fd, "%d", v); return *this;} + PIFile & operator <<(ulong v) {if (!isWriteable()) return *this; fprintf(fd, "%ld", v); return *this;} + PIFile & operator <<(float v) {if (!isWriteable()) return *this; fprintf(fd, "%f", v); return *this;} + PIFile & operator <<(double v) {if (!isWriteable()) return *this; fprintf(fd, "%lf", v); return *this;} - PIFile & operator >>(char & v) {stream >> v; return *this;} - PIFile & operator >>(short & v) {stream >> v; return *this;} - PIFile & operator >>(int & v) {stream >> v; return *this;} - PIFile & operator >>(long & v) {stream >> v; return *this;} - PIFile & operator >>(uchar & v) {stream >> v; return *this;} - PIFile & operator >>(ushort & v) {stream >> v; return *this;} - PIFile & operator >>(uint & v) {stream >> v; return *this;} - PIFile & operator >>(ulong & v) {stream >> v; return *this;} - PIFile & operator >>(float & v) {stream >> v; return *this;} - PIFile & operator >>(double & v) {stream >> v; return *this;} - - static PIFile openTemporary(PIFlags mode = PIFile::ReadWrite); - static bool isExists(const PIString & path) {return std::ifstream(path.stdString().c_str()).good();} - static bool remove(const PIString & path) {return std::remove(path.stdString().c_str()) == 0;} + PIFile & operator >>(char & v) {if (!isWriteable()) return *this; fscanf(fd, "%hhn", &v); return *this;} + PIFile & operator >>(short & v) {if (!isWriteable()) return *this; fscanf(fd, "%hn", &v); return *this;} + PIFile & operator >>(int & v) {if (!isWriteable()) return *this; fscanf(fd, "%n", &v); return *this;} + PIFile & operator >>(long & v) {if (!isWriteable()) return *this; fscanf(fd, "%ln", &v); return *this;} + PIFile & operator >>(uchar & v) {if (!isWriteable()) return *this; fscanf(fd, "%hhn", &v); return *this;} + PIFile & operator >>(ushort & v) {if (!isWriteable()) return *this; fscanf(fd, "%hn", &v); return *this;} + PIFile & operator >>(uint & v) {if (!isWriteable()) return *this; fscanf(fd, "%n", &v); return *this;} + PIFile & operator >>(ulong & v) {if (!isWriteable()) return *this; fscanf(fd, "%ln", &v); return *this;} + PIFile & operator >>(float & v) {if (!isWriteable()) return *this; fscanf(fd, "%f", &v); return *this;} + PIFile & operator >>(double & v) {if (!isWriteable()) return *this; fscanf(fd, "%lf", &v); return *this;} + + static PIFile openTemporary(PIIODevice::DeviceMode mode = PIIODevice::ReadWrite) {return PIFile(PIString(tmpnam(0)), mode);} + static bool isExists(const PIString & path); + static bool remove(const PIString & path) {return std::remove(path.data()) == 0;} + +protected: + bool openDevice(); + bool closeDevice(); private: - fstream stream; - PIString cpath; - PIFlags cmode; + PIString strType(const PIIODevice::DeviceMode type) {switch (type) {case PIIODevice::ReadOnly: return "rb"; case WriteOnly: return "ab"; case ReadWrite: return "a+b";} return "rb";} + + FILE * fd; }; diff --git a/pigeometry.h b/pigeometry.h old mode 100644 new mode 100755 index a64fb4bc..642b559d --- a/pigeometry.h +++ b/pigeometry.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Geometry - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/piincludes.cpp b/piincludes.cpp new file mode 100644 index 00000000..35736881 --- /dev/null +++ b/piincludes.cpp @@ -0,0 +1,23 @@ +/* + PIP - Platform Independent Primitives + Global includes + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "piincludes.h" + +bool isPIInit = false; +bool piDebug = true; diff --git a/piincludes.h b/piincludes.h old mode 100644 new mode 100755 index 5f53af69..bede5cb1 --- a/piincludes.h +++ b/piincludes.h @@ -20,10 +20,11 @@ #ifndef PIINCLUDES_H #define PIINCLUDES_H -#define PIP_VERSION 0x000102 +#define PIP_VERSION 0x000200 #define PIP_VERSION_MAJOR (PIP_VERSION & 0xFF0000) >> 16 #define PIP_VERSION_MINOR (PIP_VERSION & 0xFF00) >> 8 #define PIP_VERSION_REVISION PIP_VERSION & 0xFF +#define PIP_VERSION_SUFFIX "" #if WIN32 || WIN64 || _WIN32 || _WIN64 || __WIN32__ || __WIN64__ # define WINDOWS @@ -119,13 +120,17 @@ static locale_t currentLocale_t = 0; typedef std::basic_string wstring; #endif -static bool isPIInit = false; +extern bool isPIInit; +extern bool piDebug; + +#define piCout if (piDebug) cout class PIInit { public: PIInit() { if (isPIInit) return; isPIInit = true; + //piDebug = true; #ifdef LINUX if (currentLocale_t != 0) { freelocale(currentLocale_t); @@ -215,6 +220,6 @@ inline string dtos(const double num) { #endif return string(ch); }; -inline string PIPVersion() {return itos(PIP_VERSION_MAJOR) + "." + itos(PIP_VERSION_MINOR) + "." + itos(PIP_VERSION_REVISION);} +inline string PIPVersion() {return itos(PIP_VERSION_MAJOR) + "." + itos(PIP_VERSION_MINOR) + "." + itos(PIP_VERSION_REVISION) + PIP_VERSION_SUFFIX;} #endif // PIINCLUDES_H diff --git a/piiodevice.cpp b/piiodevice.cpp new file mode 100755 index 00000000..27a78afe --- /dev/null +++ b/piiodevice.cpp @@ -0,0 +1,107 @@ +/* + PIP - Platform Independent Primitives + Abstract input/output device + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "piiodevice.h" + + +PIIODevice::PIIODevice(): PIThread() { + mode_ = ReadOnly; + opened_ = init_ = thread_started_ = false; + reopen_enabled_ = true; + reopen_timeout_ = 1000; + ret_func_ = 0; + ret_data_ = 0; + buffer_tr.resize(4096); + CONNECT2(void, void * , int, &timer, timeout, this, check_start); + init(); +} + + +PIIODevice::PIIODevice(const PIString & path, PIIODevice::DeviceMode type, bool initNow): PIThread() { + path_ = path; + mode_ = type; + opened_ = init_ = thread_started_ = false; + reopen_enabled_ = true; + reopen_timeout_ = 1000; + ret_func_ = 0; + ret_data_ = 0; + buffer_tr.resize(4096); + CONNECT2(void, void * , int, &timer, timeout, this, check_start); + if (initNow) init(); +} + + +void PIIODevice::check_start(void * data, int delim) { + //cout << "check " << tread_started_ << endl; + if (open()) { + thread_started_ = true; + timer.stop(); + } +} + + +void PIIODevice::terminate() { + thread_started_ = false; + if (!isInitialized()) return; + if (isRunning()) { + stop(); + PIThread::terminate(); + } +} + + +void PIIODevice::begin() { + //cout << " begin\n"; + thread_started_ = false; + if (!opened_) { + if (open()) { + thread_started_ = true; + //cout << " open && ok\n"; + return; + } + } else { + thread_started_ = true; + //cout << " ok\n"; + return; + } + //init(); + if (!timer.isRunning() && reopen_enabled_) timer.start(reopen_timeout_); +} + + +void PIIODevice::run() { + if (!isReadable()) { + //cout << "not readable\n"; + stop(); + return; + } + if (!thread_started_) { + msleep(1); + //cout << "not started\n"; + return; + } + + readed_ = read(buffer_tr.data(), buffer_tr.size_s()); + if (readed_ <= 0) { + msleep(10); + //cout << readed_ << ", " << errno << ", " << errorString() << endl; + return; + } + threadedRead(buffer_tr.data(), readed_); +} diff --git a/piiodevice.h b/piiodevice.h new file mode 100755 index 00000000..8fee6051 --- /dev/null +++ b/piiodevice.h @@ -0,0 +1,121 @@ +/* + PIP - Platform Independent Primitives + Abstract input/output device + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#ifndef PIIODEVICE_H +#define PIIODEVICE_H + +#include "pitimer.h" + +// function executed from threaded read, pass ThreadedReadData, readedData, sizeOfData +typedef bool (*ReadRetFunc)(void * , uchar * , int ); + +class PIIODevice: public PIThread { +public: + PIIODevice(); + + enum DeviceMode {ReadOnly = 0x01, WriteOnly = 0x02, ReadWrite = 0x03}; + + PIIODevice(const PIString & path, DeviceMode type = ReadWrite, bool initNow = true); + ~PIIODevice() {if (opened_) closeDevice();} + + + DeviceMode mode() const {return mode_;} + PIString path() const {return path_;} + bool isReadable() const {return (mode_ & ReadOnly);} + bool isWriteable() const {return (mode_ & WriteOnly);} + bool isInitialized() const {return init_;} + bool isOpened() const {return opened_;} + bool isClosed() const {return !opened_;} + bool canRead() const {return opened_ && (mode_ & ReadOnly);} + bool canWrite() const {return opened_ && (mode_ & WriteOnly);} + + + // Enable timer to periodically open device until it will be opened + void setReopenEnabled(bool yes = true) {reopen_enabled_ = yes;} + void setReopenTimeout(int msecs = 1000) {reopen_timeout_ = msecs;} + + bool isReopenEnabled() const {return reopen_enabled_;} + int reopenTimeout() {return reopen_timeout_;} + + + // set return function executed when successful read in thread + void setThreadedReadSlot(ReadRetFunc func) {ret_func_ = func;} + void setThreadedReadData(void * d) {ret_data_ = d;} + void setThreadedReadBufferSize(int new_size) {buffer_tr.resize(new_size);} + + int threadedReadBufferSize() const {return buffer_tr.size_s();} + const uchar * threadedReadBuffer() const {return buffer_tr.data();} + + void startThreadedRead() {if (!isRunning()) start();} + void startThreadedRead(ReadRetFunc func) {ret_func_ = func; if (!isRunning()) start();} + + + EVENT_HANDLER(PIIODevice, bool, open) {if (!init_) init(); opened_ = openDevice(); return opened_;} + EVENT_HANDLER1(PIIODevice, bool, open, const PIString &, _path) {path_ = _path; if (!init_) init(); opened_ = openDevice(); return opened_;} + EVENT_HANDLER1(PIIODevice, bool, open, const DeviceMode &, _type) {mode_ = _type; if (!init_) init(); opened_ = openDevice(); return opened_;} + EVENT_HANDLER2(PIIODevice, bool, open, const PIString &, _path, const DeviceMode &, _type) {path_ = _path; mode_ = _type; if (!init_) init(); opened_ = openDevice(); return opened_;} + EVENT_HANDLER(PIIODevice, bool, close) {opened_ = !closeDevice(); return !opened_;} + + // Flush device + EVENT_VHANDLER(PIIODevice, void, flush) {;} + + + // Read from device to "read_to" maximum "max_size" bytes, return readed bytes count + virtual int read(void * read_to, int max_size) {piCout << "[PIIODevice] \"read\" not implemented!" << endl; return -2;} + + // Write to device "data" maximum "max_size" bytes, return written bytes count + virtual int write(const void * data, int max_size) {piCout << "[PIIODevice] \"write\" not implemented!" << endl; return -2;} + + // Read from device maximum "max_size" bytes and return them as PIByteArray + PIByteArray read(int max_size) {buffer_in.resize(max_size); int ret = read(buffer_in.data(), max_size); if (ret < 0) return PIByteArray(); return buffer_in.resized(ret);} + + +protected: + // Function executed before first openDevice() or from constructor + virtual bool init() {return true;} + + // Functions to open and close device, return value will set to "opened_" variable + virtual bool openDevice() = 0; // use path_, type_, opened_, init_ variables + virtual bool closeDevice() {return true;} // use path_, type_, opened_, init_ variables + + // Function executed when thread read some data, default implementation execute external slot "ret_func_" + virtual bool threadedRead(uchar * readed, int size) {if (ret_func_ != 0) return ret_func_(ret_data_, readed, size); return true;} + + PIString path_; + DeviceMode mode_; + ReadRetFunc ret_func_; + bool init_, opened_, thread_started_, reopen_enabled_; + int reopen_timeout_; + void * ret_data_; + +private: + EVENT_HANDLER2(PIIODevice, void, check_start, void * , data, int, delim); + void terminate(); + + void begin(); + void run(); + void end() {terminate();} + + PITimer timer; + PIByteArray buffer_in, buffer_tr; + int readed_; + +}; + +#endif // PIIODEVICE_H diff --git a/pikbdlistener.cpp b/pikbdlistener.cpp old mode 100644 new mode 100755 index 4b3e66cb..e505eb45 --- a/pikbdlistener.cpp +++ b/pikbdlistener.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Keyboard grabber for console - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -60,7 +60,10 @@ void PIKbdListener::run() { #else ret = read(0, &rc, 1); #endif - if (exit_enabled && rc == exit_key) PIKbdListener::exiting = true; + if (exit_enabled && rc == exit_key) { + PIKbdListener::exiting = true; + return; + } if (ret_func != 0 && ret > 0) ret_func(rc, data); } diff --git a/pikbdlistener.h b/pikbdlistener.h old mode 100644 new mode 100755 index a24a3129..c8ed6b87 --- a/pikbdlistener.h +++ b/pikbdlistener.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Keyboard grabber for console - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/pimath.cpp b/pimath.cpp old mode 100644 new mode 100755 index d74bc2aa..b0107e67 --- a/pimath.cpp +++ b/pimath.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Math - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/pimath.h b/pimath.h old mode 100644 new mode 100755 index 6c13fecb..45e11f83 --- a/pimath.h +++ b/pimath.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Math - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/pimonitor.cpp b/pimonitor.cpp old mode 100644 new mode 100755 index 3e3d917d..9ded81ad --- a/pimonitor.cpp +++ b/pimonitor.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Counter of some PIP types - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/pimonitor.h b/pimonitor.h old mode 100644 new mode 100755 index 0395e847..486f86b9 --- a/pimonitor.h +++ b/pimonitor.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Counter of some PIP types - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/pimultiprotocol.cpp b/pimultiprotocol.cpp old mode 100644 new mode 100755 index e3eed978..422263cf --- a/pimultiprotocol.cpp +++ b/pimultiprotocol.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Multiprotocol - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/pimultiprotocol.h b/pimultiprotocol.h old mode 100644 new mode 100755 index c8bc7ca8..7fe7d6e7 --- a/pimultiprotocol.h +++ b/pimultiprotocol.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Multiprotocol - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -27,7 +27,7 @@ class PIMultiProtocol: public PIMultiProtocolBase public: PIMultiProtocol() {;} virtual ~PIMultiProtocol() {clear();} - + void addProtocol(PIProtocol & prot) {prots.push_back(&prot); prot.setMultiProtocolOwner(this); prot.new_mp_prot = false;} void addProtocol(PIProtocol * prot) {prots.push_back(prot); prot->setMultiProtocolOwner(this); prot->new_mp_prot = false;} void addProtocol(const PIString & config, const PIString & name, void * recHeaderPtr = 0, int recHeaderSize = 0, @@ -39,55 +39,55 @@ public: PIProtocol * protocol(const PIString & name) {piForeach (PIProtocol * i, prots) if (i->name() == name) return i; return 0;} PIProtocol * protocol(const int index) {return prots[index];} PIProtocol * operator [](const int index) {return prots[index];} - + void startSend() {piForeach (PIProtocol * i, prots) i->startSend();} void startReceive() {piForeach (PIProtocol * i, prots) i->startReceive();} void start() {piForeach (PIProtocol * i, prots) i->start();} - + void stopSend() {piForeach (PIProtocol * i, prots) i->stopSend();} void stopReceive() {piForeach (PIProtocol * i, prots) i->stopReceive();} void stop() {piForeach (PIProtocol * i, prots) i->stop();} - + PIProtocol::Quality worseQuality() const {PIProtocol::Quality cq = PIProtocol::Good; piForeachC (PIProtocol * i, prots) if (cq > i->quality()) cq = i->quality(); return cq;} PIProtocol::Quality bestQuality() const {PIProtocol::Quality cq = PIProtocol::Unknown; piForeachC (PIProtocol * i, prots) if (cq < i->quality()) cq = i->quality(); return cq;} - + int count() const {return prots.size_s();} void clear() {stop(); piForeach (PIProtocol * i, prots) if (i->new_mp_prot) delete i; prots.clear();} - + private: PIVector prots; - + }; class PIRepeater: public PIMultiProtocol { public: PIRepeater(const PIString & config, const PIString & name) { - PIConfig conf(config, PIFile::Read); + PIConfig conf(config, PIIODevice::ReadOnly); if (!conf.isOpened()) { - cout << "[PIRepeater \"" << name << "\"] Can`t open \"" << config << "\"!" << endl; + piCout << "[PIRepeater \"" << name << "\"] Can`t open \"" << config << "\"!" << endl; return; } PIConfig::Entry & b(conf.getValue(name)); if (b.childCount() != 2) { - cout << "[PIRepeater \"" << name << "\"] \"" << config << "\" should consist 2 nodes!" << endl; + piCout << "[PIRepeater \"" << name << "\"] \"" << config << "\" should consist 2 nodes!" << endl; return; } addProtocol(config, b.child(0)->fullName()); addProtocol(config, b.child(1)->fullName()); start(); } - + PIString firstChannelName() {if (count() == 2) return protocol(0)->receiverDeviceName() + " -> " + protocol(1)->senderDeviceName(); return "Config error";} PIString secondChannelName() {if (count() == 2) return protocol(1)->receiverDeviceName() + " -> " + protocol(0)->senderDeviceName(); return "Config error";} - + ullong receiveCount() {if (count() == 2) return protocol(0)->receiveCount(); return 0;} ullong * receiveCount_ptr() {if (count() == 2) return protocol(0)->receiveCount_ptr(); return 0;} ullong sendCount() {if (count() == 2) return protocol(0)->sendCount(); return 0;} ullong * sendCount_ptr() {if (count() == 2) return protocol(0)->sendCount_ptr(); return 0;} - + private: - void received(PIProtocol * prot, bool , char * data, int size) {if (prot == protocol(0)) protocol(1)->send(data, size); else protocol(0)->send(data, size);} - + void received(PIProtocol * prot, bool , uchar * data, int size) {if (prot == protocol(0)) protocol(1)->send(data, size); else protocol(0)->send(data, size);} + }; #endif // PIMULTIPROTOCOL_H diff --git a/pimutex.h b/pimutex.h old mode 100644 new mode 100755 index 87019202..dba34ec0 --- a/pimutex.h +++ b/pimutex.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Mutex - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/piobject.cpp b/piobject.cpp old mode 100644 new mode 100755 index ec2ac440..3674cdc2 --- a/piobject.cpp +++ b/piobject.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Object, base class of some PIP classes, provide EVENT -> EVENT_HANDLER mechanism - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/piobject.h b/piobject.h old mode 100644 new mode 100755 index 5aad2fa0..826e9732 --- a/piobject.h +++ b/piobject.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Object, base class of some PIP classes, provide EVENT -> EVENT_HANDLER mechanism - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,6 +39,13 @@ #define EVENT_HANDLER4(obj, ret, name, a0, n0, a1, n1, a2, n2, a3, n3) static ret __stat_##name##__(void * o, a0 n0, a1 n1, a2 n2, a3 n3) {return ((obj*)o)->name(n0, n1, n2, n3);} ret name(a0 n0, a1 n1, a2 n2, a3 n3) #define EVENT_HANDLER EVENT_HANDLER0 +#define EVENT_VHANDLER0(obj, ret, name) static ret __stat_##name##__(void * o) {return ((obj*)o)->name();} virtual ret name() +#define EVENT_VHANDLER1(obj, ret, name, a0, n0) static ret __stat_##name##__(void * o, a0 n0) {return ((obj*)o)->name(n0);} virtual ret name(a0 n0) +#define EVENT_VHANDLER2(obj, ret, name, a0, n0, a1, n1) static ret __stat_##name##__(void * o, a0 n0, a1 n1) {return ((obj*)o)->name(n0, n1);} virtual ret name(a0 n0, a1 n1) +#define EVENT_VHANDLER3(obj, ret, name, a0, n0, a1, n1, a2, n2) static ret __stat_##name##__(void * o, a0 n0, a1 n1, a2 n2) {return ((obj*)o)->name(n0, n1, n2);} virtual ret name(a0 n0, a1 n1, a2 n2) +#define EVENT_VHANDLER4(obj, ret, name, a0, n0, a1, n1, a2, n2, a3, n3) static ret __stat_##name##__(void * o, a0 n0, a1 n1, a2 n2, a3 n3) {return ((obj*)o)->name(n0, n1, n2, n3);} virtual ret name(a0 n0, a1 n1, a2 n2, a3 n3) +#define EVENT_VHANDLER EVENT_VHANDLER0 + #define CONNECT0(ret, src, event, dst, handler) PIObject::connect(src, #event, dst, (void*)(ret(*)(void*))(&(dst)->__stat_##handler##__)); #define CONNECT1(ret, a0, src, event, dst, handler) PIObject::connect(src, #event, dst, (void*)(ret(*)(void*, a0))(&(dst)->__stat_##handler##__)); #define CONNECT2(ret, a0, a1, src, event, dst, handler) PIObject::connect(src, #event, dst, (void*)(ret(*)(void*, a0, a1))(&(dst)->__stat_##handler##__)); @@ -51,7 +58,7 @@ class PIObject friend class PIObjectManager; public: PIObject(const PIString & name = PIString()) {piMonitor.objects++; setName(name); objects << this;} - ~PIObject() {piMonitor.objects--; objects.remove(this);} + ~PIObject() {piMonitor.objects--; objects.removeAll(this);} const PIString & name() const {return name_;} void setName(const PIString & name) {name_ = name;} diff --git a/pip.h b/pip.h old mode 100644 new mode 100755 index b132a014..eba95202 --- a/pip.h +++ b/pip.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives All includes - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/pip.kdev4 b/pip.kdev4 index a47a22f6..fb90c960 100644 --- a/pip.kdev4 +++ b/pip.kdev4 @@ -1,3 +1,3 @@ [Project] -Manager= +Manager=KDevCMakeManager Name=pip diff --git a/pipacketextractor.cpp b/pipacketextractor.cpp new file mode 100644 index 00000000..a68c2883 --- /dev/null +++ b/pipacketextractor.cpp @@ -0,0 +1,75 @@ +/* + PIP - Platform Independent Primitives + Packets extractor + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#include "pipacketextractor.h" + + +PIPacketExtractor::PIPacketExtractor(PIIODevice * device_, void * recHeaderPtr, int recHeaderSize, int recDataSize) { + ret_func_header = 0; + setPacketData(recHeaderPtr, recHeaderSize, recDataSize); + setBufferSize(4096); + setDevice(device_); + allReaded = addSize = curInd = 0; +} + + +void PIPacketExtractor::setDevice(PIIODevice * device_) { + dev = device_; + if (dev == 0) return; +} + + +bool PIPacketExtractor::threadedRead(uchar * readed, int size_) { + //cout << "extractor readed " << size_ << endl; + memcpy(buffer.data(allReaded), readed, size_); + allReaded += size_; + if (allReaded < packetSize + addSize) return true; + if (headerSize > 0) { + if (allReaded + curInd >= buffer_size) { + memcpy(sbuffer.data(), buffer.data(), buffer_size); + memcpy(buffer.data(), sbuffer.data(buffer_size - packetSize), allReaded); + allReaded = packetSize; + addSize = curInd = 0; + } + while (!packetHeaderValidate((uchar * )headerPtr, buffer.data(curInd), headerSize)) { + curInd++; missed++; + if (packetSize > 0) missed_packets = missed / packetSize; + if (curInd > addSize) { + addSize += packetSize; + return true; + } + } + memcpy(mheader.data(), buffer.data(curInd + headerSize), headerSize); + if (!packetValidate(buffer.data(curInd + headerSize), dataSize)) { + curInd++; missed++; + if (packetSize > 0) missed_packets = missed / packetSize; + return true; + } + memcpy(sbuffer.data(), buffer.data(), allReaded); + memcpy(buffer.data(), sbuffer.data(packetSize + curInd), allReaded); + allReaded -= packetSize + curInd; + curInd = addSize = 0; + } else { + packetValidate(buffer.data(), dataSize); + memcpy(sbuffer.data(), buffer.data(), allReaded); + memcpy(buffer.data(), sbuffer.data(packetSize), allReaded); + allReaded -= packetSize; + } + return true; +} diff --git a/pipacketextractor.h b/pipacketextractor.h new file mode 100644 index 00000000..38bdb2cb --- /dev/null +++ b/pipacketextractor.h @@ -0,0 +1,71 @@ +/* + PIP - Platform Independent Primitives + Packets extractor + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + + +#ifndef PIPACKETEXTRACTOR_H +#define PIPACKETEXTRACTOR_H + +#include "piiodevice.h" + +// Pass data, recHeaderPtr, received_data, recHeaderSize. Return true if packet is correct nor return false. +typedef bool (*HeaderCheckFunc)(void * , uchar * , uchar * , int ); + +class PIPacketExtractor: public PIIODevice +{ +public: + PIPacketExtractor(PIIODevice * device_ = 0, void * recHeaderPtr = 0, int recHeaderSize = 0, int recDataSize = 0); + + PIIODevice * device() {return dev;} + void setDevice(PIIODevice * device_); + + int bufferSize() const {return buffer_size;} + void setBufferSize(int new_size) {buffer_size = new_size; buffer.resize(buffer_size); sbuffer.resize(buffer_size);} + + void setHeaderCheckSlot(HeaderCheckFunc f) {ret_func_header = f;} + void setPacketData(void * recHeaderPtr, int recHeaderSize, int recDataSize) {headerPtr = recHeaderPtr; headerSize = recHeaderSize; dataSize = recDataSize; packetSize = headerSize + dataSize; if (headerSize > 0) mheader.resize(headerSize);} + + ullong missedBytes() const {return missed;} + ullong missedPackets() const {return missed / packetSize;} + const ullong * missedBytes_ptr() const {return &missed;} + const ullong * missedPackets_ptr() const {return &missed_packets;} + + PIByteArray lastHeader() {return mheader;} + + int read(void * read_to, int max_size) {if (dev == 0) return -1; return dev->read(read_to, max_size);} + int write(const void * data, int max_size) {if (dev == 0) return -1; return dev->write(data, max_size);} + +protected: + virtual bool packetValidate(uchar * rec, int size) {if (ret_func_ != 0) return ret_func_(ret_data_, rec, size); return true;} + virtual bool packetHeaderValidate(uchar * src, uchar * rec, int size) {if (ret_func_header != 0) return ret_func_header(ret_data_, src, rec, size); for (int i = 0; i < size; ++i) if (src[i] != rec[i]) return false; return true;} + +private: + bool threadedRead(uchar * readed, int size); + bool openDevice() {if (dev == 0) return false; return dev->isOpened();} + + PIIODevice * dev; + PIByteArray mheader, buffer, sbuffer; + HeaderCheckFunc ret_func_header; + void * headerPtr, * data; + int buffer_size, dataSize, headerSize, packetSize, allReaded, addSize, curInd; + ullong missed, missed_packets; + + +}; + +#endif // PIPACKETEXTRACTOR_H diff --git a/piprocess.cpp b/piprocess.cpp old mode 100644 new mode 100755 index 12f2cfc9..1971858b --- a/piprocess.cpp +++ b/piprocess.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Process - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -59,7 +59,7 @@ void PIProcess::run() { #ifdef WINDOWS //args.pop_front(); piForeachC (PIString & i, args) - as += i.stdString().length() + 1; + as += i.lengthAscii() + 1; char * a = new char[as]; memset(a, ' ', as - 1); as = 0; @@ -93,28 +93,28 @@ void PIProcess::run() { /// files for stdin/out/err t_in = t_out = t_err = false; if (f_in.path().isEmpty()) { - f_in = PIFile::openTemporary(PIFile::New | PIFile::Read); + f_in = PIFile::openTemporary(PIIODevice::ReadWrite); t_in = true; } - f_in.open(PIFile::New | PIFile::Read); f_in.close(); + f_in.open(PIIODevice::ReadWrite); f_in.close(); if (f_out.path().isEmpty()) { - f_out = PIFile::openTemporary(PIFile::New | PIFile::Write); + f_out = PIFile::openTemporary(PIIODevice::ReadWrite); t_out = true; } - f_out.open(PIFile::New | PIFile::Write); f_out.close(); + f_out.open(PIIODevice::WriteOnly); f_out.close(); if (f_err.path().isEmpty()) { - f_err = PIFile::openTemporary(PIFile::New | PIFile::Write); + f_err = PIFile::openTemporary(PIIODevice::ReadWrite); t_err = true; } - f_err.open(PIFile::New | PIFile::Write); f_err.close(); - + f_err.open(PIIODevice::WriteOnly); f_err.close(); + str = args.front().stdString(); is_exec = true; #ifndef WINDOWS pid = fork(); if (pid == 0) { #endif - FILE * tf; + FILE * tf = 0; //cout << "exec" << endl; //cout << f_out.path() << endl; if (g_in) tf = freopen(f_in.path().data(), "r", stdin); @@ -140,10 +140,10 @@ void PIProcess::run() { WaitForSingleObject(pi.hProcess, INFINITE); CloseHandle(pi.hProcess); } else - cout << "[PIProcess] \"CreateProcess\" error, " << errorString() << endl; + piCout << "[PIProcess] \"CreateProcess\" error, " << errorString() << endl; #else if (execve(str.c_str(), a, e) < 0) - cout << "[PIProcess] \"execve\" error, " << errorString() << endl; + piCout << "[PIProcess] \"execve\" error, " << errorString() << endl; } else { msleep(1); //cout << "wait" << endl; diff --git a/piprocess.h b/piprocess.h old mode 100644 new mode 100755 index 60fe32c2..0dd951e8 --- a/piprocess.h +++ b/piprocess.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Process - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,14 +33,14 @@ class PIProcess: private PIThread public: PIProcess(); ~PIProcess(); - + int exitCode() const {return exit_code;} #ifdef WINDOWS int pID() const {return pi.dwProcessId;} #else int pID() const {return pid;} #endif - + void setGrabInput(bool yes) {g_in = yes;} void setGrabOutput(bool yes) {g_out = yes;} void setGrabError(bool yes) {g_err = yes;} @@ -64,25 +64,25 @@ public: void terminate() {if (is_exec) kill(pid, SIGKILL); pid = 0;} #endif bool waitForFinish(int timeout_msecs = 60000) {return PIThread::waitForFinish(timeout_msecs);} - PIByteArray readOutput() {f_out.open(PIFile::Read); return f_out.readAll();} - PIByteArray readError() {f_err.open(PIFile::Read); return f_err.readAll();} - + PIByteArray readOutput() {f_out.open(PIIODevice::ReadOnly); return f_out.readAll();} + PIByteArray readError() {f_err.open(PIIODevice::ReadOnly); return f_err.readAll();} + PIStringList environment() {return env;} void clearEnvironment() {env.clear();} void removeEnvironmentVariable(const PIString & variable); void setEnvironmentVariable(const PIString & variable, const PIString & value); - + static PIStringList currentEnvironment() {PIStringList l; int i = 0; while (environ[i] != 0) {l << environ[i]; ++i;} return l;} #ifdef WINDOWS static int currentPID() {return GetCurrentProcessId();} #else static int currentPID() {return getpid();} #endif - + private: virtual void run(); void exec_(); - + PIStringList args, env; PIString wd; PIByteArray out; @@ -96,7 +96,7 @@ private: #endif int exit_code, sz; bool is_exec; - + }; #endif // PIPROCESS_H diff --git a/piprotocol.cpp b/piprotocol.cpp old mode 100644 new mode 100755 index cde5ed91..357ad9c1 --- a/piprotocol.cpp +++ b/piprotocol.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Protocol, input/output channel (COM, UDP) - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,14 +24,15 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re init(); protName = name; PIObject::setName(name); - PIConfig conf(config, PIFile::Read); + PIConfig conf(config, PIIODevice::ReadOnly); if (!conf.isOpened()) { - cout << "[PIProtocol \"" << name << "\"] Can`t open \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Can`t open \"" << config << "\"!" << endl; devReceiverState = devSenderState = "Config error"; return; } int ps, gps; bool ok, gok, flag, gflag, has_dev = false; + float freq, gfreq; PIFlags pp; PIConfig::Entry & b(conf.getValue(name)), & rb(b.getValue("receiver")), @@ -40,7 +41,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re /// receiver section if (rb.isEntryExists("ip") && rb.isEntryExists("device")) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous receiver type in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous receiver type in \"" << config << "\"!" << endl; devReceiverState = "Config error"; return; } @@ -49,7 +50,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) dev = gdev; if (gok && ok && (dev != gdev)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous receiver type in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous receiver type in \"" << config << "\"!" << endl; devReceiverState = "Config error"; return; } @@ -58,20 +59,44 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) ps = gps; if (gok && ok && (ps != gps)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous receive port in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous receive port in \"" << config << "\"!" << endl; devReceiverState = "Config error"; return; } type_rec = PIProtocol::Ethernet; - eth = new PIEthernet(dev, ps, this, receiveEvent); + eth = new PIEthernet(); + packet_ext.setDevice(eth); + //setSenderAddress(dev, ps); setReceiverAddress(dev, ps); has_dev = true; + flag = rb.getValue("reconnectEnabled", true, &ok); + gflag = b.getValue("reconnectEnabled", true, &gok); + if (ok || gok) { + if (gok && !ok) flag = gflag; + if (gok && ok && (flag != gflag)) { + piCout << "[PIProtocol \"" << name << "\"] Ambiguous \"reconnectEnabled\" flag in \"" << config << "\"!" << endl; + devReceiverState = "Config error"; + return; + } + eth->setReopenEnabled(flag); + } + freq = rb.getValue("reconnectTimeout", 1., &ok); + gfreq = b.getValue("reconnectTimeout", 1., &gok); + if (ok || gok) { + if (gok && !ok) freq = gfreq; + if (gok && ok && (freq != gfreq)) { + piCout << "[PIProtocol \"" << name << "\"] Ambiguous \"reconnectTimeout\" value in \"" << config << "\"!" << endl; + devReceiverState = "Config error"; + return; + } + eth->setReopenTimeout(freq * 1000); + } if (recDataPtr == 0) - cout << "[PIProtocol \"" << name << "\"] Warning: null receive data pointer!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: null receive data pointer!" << endl; if (recDataSize == 0) - cout << "[PIProtocol \"" << name << "\"] Warning: null receive data size!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: null receive data size!" << endl; } else { - cout << "[PIProtocol \"" << name << "\"] Can`t find \"" << name << ".receiver.port\" or \"" << name << ".port\" in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Can`t find \"" << name << ".receiver.port\" or \"" << name << ".port\" in \"" << config << "\"!" << endl; devReceiverState = "Config error"; return; } @@ -81,7 +106,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) dev = gdev; if (gok && ok && (dev != gdev)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous receiver type in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous receiver type in \"" << config << "\"!" << endl; devReceiverState = "Config error"; return; } @@ -90,7 +115,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) ps = gps; if (gok && ok && (ps != gps)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous receive \"speed\" in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous receive \"speed\" in \"" << config << "\"!" << endl; devReceiverState = "Config error"; return; } @@ -99,7 +124,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) flag = gflag; if (gok && ok && (flag != gflag)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous receive \"parity\" in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous receive \"parity\" in \"" << config << "\"!" << endl; devReceiverState = "Config error"; return; } @@ -110,7 +135,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) flag = gflag; if (gok && ok && (flag != gflag)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous receive \"twoStopBits\" parity in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous receive \"twoStopBits\" parity in \"" << config << "\"!" << endl; devReceiverState = "Config error"; return; } @@ -118,19 +143,30 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re } type_rec = PIProtocol::Serial; type_send = PIProtocol::Serial; - ser = new PISerial(dev, this, receiveEvent, headerValidateEvent); + ser = new PISerial(dev); + packet_ext.setDevice(ser); + //setSenderDevice(dev, (PISerial::Speed)ps); setReceiverDevice(dev, (PISerial::Speed)ps); - setSenderDevice(dev, (PISerial::Speed)ps); ser->setInSpeed((PISerial::Speed)ps); ser->setParameters(pp); - ser->setReadData(recHeaderPtr, recHeaderSize, recDataSize); + ps = rb.getValue("vtime", 1, &ok); + gps = b.getValue("vtime", 1, &gok); + if (ok || gok) { + if (gok && !ok) ps = gps; + if (gok && ok && (ps != gps)) { + piCout << "[PIProtocol \"" << name << "\"] Ambiguous receive \"vtime\" in \"" << config << "\"!" << endl; + devReceiverState = "Config error"; + return; + } + ser->setVTime(ps); + } has_dev = true; if (recDataPtr == 0) - cout << "[PIProtocol \"" << name << "\"] Warning: null receive data pointer!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: null receive data pointer!" << endl; if (recDataSize == 0) - cout << "[PIProtocol \"" << name << "\"] Warning: null receive data size!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: null receive data size!" << endl; } else { - cout << "[PIProtocol \"" << name << "\"] Can`t find \"" << name << ".receiver.speed\" or \"" << name << ".speed\" in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Can`t find \"" << name << ".receiver.speed\" or \"" << name << ".speed\" in \"" << config << "\"!" << endl; devReceiverState = "Config error"; return; } @@ -140,7 +176,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) history_write_rec = ghist; if (gok && ok && (history_write_rec != ghist)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous receiver history in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous receiver history in \"" << config << "\"!" << endl; devReceiverState = "Config error"; return; } @@ -151,29 +187,30 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re history_id_rec = rb.getValue("historyID", 0, &ok); if (!ok) { history_id_rec = protName.toByteArray().checksumCRC16(); - cout << "[PIProtocol \"" << name << "\"] Warning: no receiver history ID defined, write with ID = " << history_id_rec << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: no receiver history ID defined, write with ID = " << history_id_rec << endl; } - history_file_rec.open(history_path_rec, PIFile::Write | PIFile::New); + history_file_rec.open(history_path_rec, PIIODevice::WriteOnly); } } - float freq = rb.getValue("frequency", -1.f, &ok), gfreq = b.getValue("frequency", -1.f, &gok); + freq = rb.getValue("frequency", -1.f, &ok); + gfreq = b.getValue("frequency", -1.f, &gok); if (gok && !ok) freq = gfreq; if (gok && ok && (freq != gfreq)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous expected frequency in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous expected frequency in \"" << config << "\"!" << endl; devReceiverState = "Config error"; return; } if (freq > 0.f && !has_dev) - cout << "[PIProtocol \"" << name << "\"] Warning: no receiver device and not null expected frequency!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: no receiver device and not null expected frequency!" << endl; float tm = b.getValue("disconnectTimeout", 3.f); if (tm <= 0.f) - cout << "[PIProtocol \"" << name << "\"] Warning: diconnect timeout <= 0 s!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: diconnect timeout <= 0 s!" << endl; timeout_ = (tm < 0.f) ? 0.f : tm; setExpectedFrequency(freq); /// sender section if (sb.isEntryExists("ip") && sb.isEntryExists("device")) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous sender type in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous sender type in \"" << config << "\"!" << endl; devSenderState = "Config error"; return; } @@ -183,7 +220,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) dev = gdev; if (gok && ok && (dev != gdev)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous sender type in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous sender type in \"" << config << "\"!" << endl; devSenderState = "Config error"; return; } @@ -192,20 +229,43 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) ps = gps; if (gok && ok && (ps != gps)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous send port in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous send port in \"" << config << "\"!" << endl; devSenderState = "Config error"; return; } type_send = PIProtocol::Ethernet; - if (eth == 0) eth = new PIEthernet(dev, ps, this, receiveEvent); + if (eth == 0) eth = new PIEthernet(); setSenderAddress(dev, ps); + //setReceiverAddress(dev, ps); has_dev = true; + flag = sb.getValue("reconnectEnabled", true, &ok); + gflag = b.getValue("reconnectEnabled", true, &gok); + if (ok || gok) { + if (gok && !ok) flag = gflag; + if (gok && ok && (flag != gflag)) { + piCout << "[PIProtocol \"" << name << "\"] Ambiguous \"reconnectEnabled\" flag in \"" << config << "\"!" << endl; + devReceiverState = "Config error"; + return; + } + eth->setReopenEnabled(flag); + } + freq = sb.getValue("reconnectTimeout", 1., &ok); + gfreq = b.getValue("reconnectTimeout", 1., &gok); + if (ok || gok) { + if (gok && !ok) freq = gfreq; + if (gok && ok && (freq != gfreq)) { + piCout << "[PIProtocol \"" << name << "\"] Ambiguous \"reconnectTimeout\" value in \"" << config << "\"!" << endl; + devReceiverState = "Config error"; + return; + } + eth->setReopenTimeout(freq * 1000); + } if (sendDataPtr_ == 0) - cout << "[PIProtocol \"" << name << "\"] Warning: null send data pointer!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: null send data pointer!" << endl; if (sendDataSize_ == 0) - cout << "[PIProtocol \"" << name << "\"] Warning: null send data size!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: null send data size!" << endl; } else { - cout << "[PIProtocol \"" << name << "\"] Can`t find \"" << name << ".sender.port\" or \"" << name << ".port\" in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Can`t find \"" << name << ".sender.port\" or \"" << name << ".port\" in \"" << config << "\"!" << endl; devSenderState = "Config error"; return; } @@ -215,7 +275,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) dev = gdev; if (gok && ok && (dev != gdev)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous sender type in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous sender type in \"" << config << "\"!" << endl; devSenderState = "Config error"; return; } @@ -224,7 +284,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) ps = gps; if (gok && ok && (ps != gps)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous send \"speed\" in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous send \"speed\" in \"" << config << "\"!" << endl; devSenderState = "Config error"; return; } @@ -233,7 +293,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) flag = gflag; if (gok && ok && (flag != gflag)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous send \"parity\" in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous send \"parity\" in \"" << config << "\"!" << endl; devSenderState = "Config error"; return; } @@ -244,35 +304,34 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re if (ok || gok) { if (gok && !ok) flag = gflag; if (gok && ok && (flag != gflag)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous send \"twoStopBits\" parity in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous send \"twoStopBits\" parity in \"" << config << "\"!" << endl; devSenderState = "Config error"; return; } pp |= PISerial::TwoStopBits; } } else { - cout << "[PIProtocol \"" << name << "\"] Can`t find \"" << name << ".sender.speed\" or \"" << name << ".speed\" in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Can`t find \"" << name << ".sender.speed\" or \"" << name << ".speed\" in \"" << config << "\"!" << endl; devSenderState = "Config error"; return; } type_send = PIProtocol::Serial; - if (ser == 0) ser = new PISerial(dev, this, receiveEvent, headerValidateEvent); + if (ser == 0) ser = new PISerial(dev); setSenderDevice(dev, (PISerial::Speed)ps); ser->setOutSpeed((PISerial::Speed)ps); ser->setParameters(pp); - ser->setReadData(recHeaderPtr, recHeaderSize, recDataSize); has_dev = true; if (sendDataPtr_ == 0) - cout << "[PIProtocol \"" << name << "\"] Warning: null send data pointer!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: null send data pointer!" << endl; if (sendDataSize_ == 0) - cout << "[PIProtocol \"" << name << "\"] Warning: null send data size!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: null send data size!" << endl; } history_write_send = sb.getValue("writeHistory", false, &ok); ghist = b.getValue("writeHistory", false, &gok); if (ok || gok) { if (gok && !ok) history_write_send = ghist; if (gok && ok && (history_write_send != ghist)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous sender history in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous sender history in \"" << config << "\"!" << endl; devSenderState = "Config error"; return; } @@ -283,21 +342,21 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re history_id_send = sb.getValue("historyID", 0, &ok); if (!ok) { history_id_send = protName.toByteArray().checksumCRC16() + 1; - cout << "[PIProtocol \"" << name << "\"] Warning: no sender history ID defined, write with ID = " << history_id_send << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: no sender history ID defined, write with ID = " << history_id_send << endl; } - history_file_send.open(history_path_send, PIFile::Write | PIFile::New); + history_file_send.open(history_path_send, PIIODevice::WriteOnly); } } freq = sb.getValue("frequency", -1.f, &ok); gfreq = b.getValue("frequency", -1.f, &gok); if (gok && !ok) freq = gfreq; if (gok && ok && (freq != gfreq)) { - cout << "[PIProtocol \"" << name << "\"] Ambiguous sender frequency in \"" << config << "\"!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Ambiguous sender frequency in \"" << config << "\"!" << endl; devSenderState = "Config error"; return; } if (freq > 0.f && !has_dev) - cout << "[PIProtocol \"" << name << "\"] Warning: no sender device and not null send frequency!" << endl; + piCout << "[PIProtocol \"" << name << "\"] Warning: no sender device and not null send frequency!" << endl; setSenderFrequency(freq); headerPtr = (uchar * )recHeaderPtr; @@ -306,6 +365,7 @@ PIProtocol::PIProtocol(const PIString & config, const PIString & name, void * re dataSize = recDataSize; sendDataPtr = (uchar * )sendDataPtr_; sendDataSize = sendDataSize_; + packet_ext.setPacketData(recHeaderPtr, recHeaderSize, recDataSize); if (type_rec == PIProtocol::Ethernet) { if (recHeaderPtr != 0) { dataPtr = (uchar * )recHeaderPtr; @@ -341,6 +401,9 @@ PIProtocol::~PIProtocol() { void PIProtocol::init() { + packet_ext.setThreadedReadData(this); + packet_ext.setThreadedReadSlot(receiveEvent); + packet_ext.setHeaderCheckSlot(headerValidateEvent); work = new_mp_prot = history_write_rec = history_write_send = false; eth = 0; ser = 0; @@ -379,7 +442,10 @@ void PIProtocol::init() { void PIProtocol::setReceiverDevice(const PIString & device, PISerial::Speed speed, bool force) { if (force) { type_send = type_rec = PIProtocol::Serial; - if (ser == 0) ser = new PISerial("", this, receiveEvent, headerValidateEvent); + if (ser == 0) { + ser = new PISerial(); + packet_ext.setDevice(ser); + } } if (type_rec == PIProtocol::Serial && ser != 0) { ser->setDevice(device); @@ -393,7 +459,10 @@ void PIProtocol::setReceiverDevice(const PIString & device, PISerial::Speed spee void PIProtocol::setReceiverAddress(const PIString & ip, int port, bool force) { if (force) { type_rec = PIProtocol::Ethernet; - if (eth == 0) eth = new PIEthernet("", 0, this, receiveEvent); + if (eth == 0) { + eth = new PIEthernet(); + packet_ext.setDevice(eth); + } } if (type_rec == PIProtocol::Ethernet && eth != 0) { eth->setReadAddress(ip, port); @@ -406,11 +475,12 @@ void PIProtocol::setReceiverAddress(const PIString & ip, int port, bool force) { void PIProtocol::setSenderDevice(const PIString & device, PISerial::Speed speed, bool force) { if (force) { type_send = type_rec = PIProtocol::Serial; - if (ser == 0) ser = new PISerial("", this, receiveEvent, headerValidateEvent); + if (ser == 0) ser = new PISerial(); } if (type_send == PIProtocol::Serial && ser != 0) { ser->setDevice(device); ser->setSpeed(speed); + ser->open(); devSenderName = device; } } @@ -419,10 +489,11 @@ void PIProtocol::setSenderDevice(const PIString & device, PISerial::Speed speed, void PIProtocol::setSenderAddress(const PIString & ip, int port, bool force) { if (force) { type_send = PIProtocol::Ethernet; - if (eth == 0) eth = new PIEthernet("", 0, this, receiveEvent); + if (eth == 0) eth = new PIEthernet(); } if (type_send == PIProtocol::Ethernet && eth != 0) { eth->setSendAddress(ip, port); + eth->open(); if (ip.isEmpty()) devSenderName = "no ip"; else devSenderName = ip + ":" + PIString::fromNumber(port); } @@ -444,9 +515,10 @@ void PIProtocol::changeDisconnectTimeout() { void PIProtocol::startReceive(float exp_frequency) { if (exp_frequency > 0.f) exp_freq = exp_frequency; - if (type_rec == PIProtocol::Serial) ser->start(); - if (type_rec == PIProtocol::Ethernet) eth->start(); + //if (type_rec == PIProtocol::Serial) ser->start(); + //if (type_rec == PIProtocol::Ethernet) eth->start(); if (exp_freq <= 0.f) return; + packet_ext.startThreadedRead(); setExpectedFrequency(exp_freq); diagTimer->start(1000. / exp_freq); diagTimer->reset(); @@ -463,8 +535,9 @@ void PIProtocol::startSend(float frequency) { void PIProtocol::stopReceive() { - if (type_rec == PIProtocol::Serial) ser->stop(); - if (type_rec == PIProtocol::Ethernet) eth->stop(); + //if (type_rec == PIProtocol::Serial) ser->stop(); + //if (type_rec == PIProtocol::Ethernet) eth->stop(); + packet_ext.stop(); diagTimer->stop(); raiseEvent(this, "receiver stopped"); } @@ -508,7 +581,7 @@ void PIProtocol::diagEvent(void * t, int) { p->calc_freq(); p->calc_diag(); p->check_state(); - if (p->ser != 0) p->missed_count = p->ser->missedPackets(); + if (p->ser != 0) p->missed_count = p->packet_ext.missedPackets(); } @@ -558,47 +631,49 @@ void PIProtocol::calc_freq() { void PIProtocol::check_state() { if (type_rec == PIProtocol::Serial) { if (ser != 0) { - if (ser->initialized()) devReceiverState = "Initialized"; - else devReceiverState = "Uninitialized"; + if (ser->isOpened()) devReceiverState = "Opened"; + else devReceiverState = "Not opened"; } - else devReceiverState = "Uninitialized"; + else devReceiverState = "Not exists"; } if (type_rec == PIProtocol::Ethernet) { if (eth != 0) { - if (eth->receiverInitialized()) devReceiverState = "Initialized"; - else devReceiverState = "Uninitialized"; + if (eth->isOpened()) devReceiverState = "Opened"; + else devReceiverState = "Not opened"; } - else devReceiverState = "Uninitialized"; + else devReceiverState = "Not exists"; } if (type_send == PIProtocol::Serial) { if (ser != 0) { - if (ser->initialized()) devSenderState = "Initialized"; - else devSenderState = "Uninitialized"; + if (ser->isOpened()) devSenderState = "Opened"; + else devSenderState = "Not opened"; } - else devSenderState = "Uninitialized"; + else devSenderState = "Not exists"; } if (type_send == PIProtocol::Ethernet) { if (eth != 0) { - if (eth->senderInitialized()) devSenderState = "Initialized"; - else devSenderState = "Uninitialized"; + if (eth->isOpened()) devSenderState = "Opened"; + else devSenderState = "Not opened"; } - else devSenderState = "Uninitialized"; + else devSenderState = "Not exists"; } } -void PIProtocol::send(const void * data, int size) { - if (data == 0 || size == 0) return; - if (!aboutSend()) return; +void PIProtocol::send(const void * data, int size, bool direct) { + if (!direct) { + if (data == 0 || size == 0) return; + if (!aboutSend()) return; + } if (history_write_send) { history_file_send.writeToBinLog(history_id_send, data, size); history_rsize_send.setReadableSize(history_file_send.pos()); } if (type_send == PIProtocol::Serial) - if (ser->send((uchar * )data, size)) + if (ser->send(data, size)) send_count++; if (type_send == PIProtocol::Ethernet) - if (eth->send((uchar * )data, size)) + if (eth->send(data, size)) send_count++; } @@ -607,16 +682,16 @@ void PIProtocol::send() { //lock(); //memcpy(packet, sendDataPtr, sendDataSize); //unlock(); - if (sendDataPtr == 0 || sendDataSize == 0) return; if (!aboutSend()) return; + if (sendDataPtr == 0 || sendDataSize == 0) return; if (history_write_send) { history_file_send.writeToBinLog(history_id_send, sendDataPtr, sendDataSize); history_rsize_send.setReadableSize(history_file_send.pos()); } if (type_send == PIProtocol::Serial) - if (ser->send((uchar * )sendDataPtr, sendDataSize)) + if (ser->send(sendDataPtr, sendDataSize)) send_count++; if (type_send == PIProtocol::Ethernet) - if (eth->send((uchar * )sendDataPtr, sendDataSize)) + if (eth->send(sendDataPtr, sendDataSize)) send_count++; } diff --git a/piprotocol.h b/piprotocol.h old mode 100644 new mode 100755 index 479a36d8..1f512a62 --- a/piprotocol.h +++ b/piprotocol.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Protocol, input/output channel (COM, UDP) - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -22,10 +22,10 @@ #include "piserial.h" #include "piethernet.h" +#include "pipacketextractor.h" #include "pitimer.h" #include "piconfig.h" #include "math.h" -#include "piobject.h" class PIProtocol; @@ -67,8 +67,8 @@ public: EVENT_HANDLER0(PIProtocol, void, stopReceive); void setExpectedFrequency(float frequency); // for connection quality diagnostic void setReceiverDevice(const PIString & device, PISerial::Speed speed, bool force = false); // for Serial - void setReceiverData(void * dataPtr, int dataSize) {this->dataPtr = (uchar * )dataPtr; this->dataSize = dataSize; if (type_rec == PIProtocol::Serial || type_send == PIProtocol::Serial) ser->setReadData(headerPtr, headerSize, dataSize);} - void setReceiverDataHeader(void * headerPtr, int headerSize) {this->headerPtr = (uchar * )headerPtr; this->headerSize = headerSize; if (type_rec == PIProtocol::Serial || type_send == PIProtocol::Serial) ser->setReadData(headerPtr, headerSize, dataSize);} + void setReceiverData(void * dataPtr, int dataSize) {this->dataPtr = (uchar * )dataPtr; this->dataSize = dataSize; packet_ext.setPacketData(headerPtr, headerSize, dataSize);} + void setReceiverDataHeader(void * headerPtr, int headerSize) {this->headerPtr = (uchar * )headerPtr; this->headerSize = headerSize; packet_ext.setPacketData(headerPtr, headerSize, dataSize);} void setReceiverAddress(const PIString & ip, int port, bool force = false); // for Ethernet void setReceiverParameters(PIFlags parameters) {if (type_rec == PIProtocol::Serial || type_send == PIProtocol::Serial) ser->setParameters(parameters);} // for Serial void setReceiveSlot(ReceiveFunc slot) {ret_func = slot;} @@ -87,7 +87,8 @@ public: EVENT_HANDLER0(PIProtocol, void, start) {startReceive(); startSend();} EVENT_HANDLER0(PIProtocol, void, stop) {stopReceive(); stopSend();} EVENT_HANDLER0(PIProtocol, void, send); - EVENT_HANDLER2(PIProtocol, void, send, const void *, data, int, size); + EVENT_HANDLER2(PIProtocol, void, send, const void *, data, int, size) {send(data, size, false);} + EVENT_HANDLER3(PIProtocol, void, send, const void *, data, int, size, bool, direct); void setName(const PIString & name) {protName = name; PIObject::setName(name);} PIString name() const {return protName;} @@ -126,7 +127,7 @@ public: void * receiveData() {return dataPtr;} void * sendData() {return sendDataPtr;} - PIByteArray lastHeader() {if (ser != 0) return ser->lastHeader(); return PIByteArray();} + PIByteArray lastHeader() {return packet_ext.lastHeader();} protected: virtual bool receive(uchar * data, int size) {if (dataPtr != 0) memcpy(dataPtr, data, size); return true;} // executed when raw data received, break if 'false' return @@ -169,6 +170,7 @@ private: void changeDisconnectTimeout(); ReceiveFunc ret_func; + PIPacketExtractor packet_ext; PITimer * diagTimer, * sendTimer; PIMultiProtocolBase * mp_owner; PIProtocol::Type type_send, type_rec; diff --git a/piserial.cpp b/piserial.cpp old mode 100644 new mode 100755 index f00b9942..a5f90322 --- a/piserial.cpp +++ b/piserial.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives COM - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,32 +20,48 @@ #include "piserial.h" -PISerial::PISerial(PIString name, void * data_, SerialFunc slot, SerialHeaderFunc slot_header): PIThread() { +PISerial::PISerial(const PIString & device, void * data_, ReadRetFunc slot): PIIODevice(device, ReadWrite) { piMonitor.serials++; setPriority(piHigh); + path_ = device; data = data_; - devName = name; fd = -1; - missed = 0; - dataSize = headerSize = 0; headerPtr = 0; - ret_func = slot; - ret_func_header = slot_header; + params = 0; + vtime = 1; + ret_func_ = slot; #ifdef WINDOWS hCom = 0; #endif ispeed = ospeed = S115200; + init(); +} + + +PISerial::PISerial(void * data_, ReadRetFunc slot): PIIODevice("", ReadWrite) { + piMonitor.serials++; + setPriority(piHigh); + data = data_; + fd = -1; + headerPtr = 0; + params = 0; + vtime = 1; + ret_func_ = slot; +#ifdef WINDOWS + hCom = 0; +#endif + ispeed = ospeed = S115200; + init(); } PISerial::~PISerial() { piMonitor.serials--; - terminate(); } -void PISerial::terminate() { - if (!initialized()) return; +bool PISerial::closeDevice() { + if (!isInitialized()) return true; if (isRunning()) { stop(); PIThread::terminate(); @@ -60,10 +76,11 @@ void PISerial::terminate() { #else if (fd != -1) { tcsetattr(fd, TCSANOW, &sdesc); - close(fd); + ::close(fd); fd = -1; } #endif + return true; } @@ -85,79 +102,51 @@ int PISerial::convertSpeed(PISerial::Speed speed) { } -void PISerial::begin() { - allReaded = addSize = curInd = 0; - first = false; - packetSize = headerSize + dataSize; - if (headerSize > 0) mheader.resize(headerSize); - if (!init()) stop(); -} - - -void PISerial::run() { - if (dataSize == 0) return; - while (allReaded < packetSize + addSize) { -#ifdef WINDOWS - WaitCommEvent(hCom, 0, 0); - ReadFile(hCom, &buffer[allReaded], SERIAL_BUFFER_SIZE, &readed, 0); -#else - readed = read(fd, &buffer[allReaded], SERIAL_BUFFER_SIZE); -#endif - allReaded += readed; - } - if (headerSize > 0) { - if (allReaded + curInd >= SERIAL_BUFFER_SIZE) { - memcpy(sbuffer, buffer, SERIAL_BUFFER_SIZE); - memcpy(buffer, &sbuffer[SERIAL_BUFFER_SIZE - packetSize], allReaded); - allReaded = packetSize; - addSize = curInd = 0; +bool PISerial::read(void * data, int size, double timeout_ms) { + if (data == 0) return false; + int ret, all = 0; + if (timeout_ms > 0.) { + setReadIsBlocking(false); + all = ::read(fd, data, 1); + timer.reset(); + while (all < size && timer.elapsed_m() < timeout_ms) { + ret = ::read(fd, &((uchar * )data)[all], size - all); + if (ret > 0) all += ret; + else msleep(1); } - while (!ret_func_header(data, (uchar * )headerPtr, &buffer[curInd], headerSize)) { - curInd++; missed++; - if (curInd > addSize) { - addSize += packetSize; - return; - } - } - memcpy(mheader.data(), &buffer[curInd + headerSize], headerSize); - if (!ret_func(data, &buffer[curInd + headerSize], dataSize)) { - curInd++; missed++; - return; - } - memcpy(sbuffer, buffer, allReaded); - memcpy(buffer, &sbuffer[packetSize + curInd], allReaded); - allReaded -= packetSize + curInd; - curInd = addSize = 0; + return (all == size); } else { - ret_func(data, buffer, dataSize); - memcpy(sbuffer, buffer, allReaded); - memcpy(buffer, &sbuffer[packetSize], allReaded); - allReaded -= packetSize; + setReadIsBlocking(true); + all = ::read(fd, data, 1); + while (all < size) { + ret = ::read(fd, &((uchar * )data)[all], size - all); + if (ret > 0) all += ret; + } + return (all == size); } + return false; } -void PISerial::end() { - terminate(); -} - - -bool PISerial::init() { +bool PISerial::openDevice() { #ifdef WINDOWS - hCom = CreateFileA(devName.stdString().c_str(), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, 0); + DWORD da = 0, sm = 0; + if (isReadable()) {ds |= GENERIC_READ; sm |= FILE_SHARE_READ;} + if (isWriteable()) {ds |= GENERIC_WRITE; sm |= FILE_SHARE_WRITE;} + hCom = CreateFileA(path_.data(), ds, sm, 0, OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, 0); if(hCom == INVALID_HANDLE_VALUE) { - cout << "[PISerial] Unable to open \"" << devName << "\"" << endl; + piCout << "[PISerial] Unable to open \"" << path_ << "\"" << endl; return false; } fd = 0; COMMTIMEOUTS times; - times.ReadIntervalTimeout = 1; + times.ReadIntervalTimeout = vtime; times.ReadTotalTimeoutConstant = 1; times.ReadTotalTimeoutMultiplier = 0; - times.WriteTotalTimeoutConstant = 0; - times.WriteTotalTimeoutMultiplier = 1; + times.WriteTotalTimeoutConstant = 1; + times.WriteTotalTimeoutMultiplier = 0; if (SetCommTimeouts(hCom, ×) == -1) { - cout << "[PISerial] Unable to set timeouts for \"" << devName << "\"" << endl; + piCout << "[PISerial] Unable to set timeouts for \"" << path_ << "\"" << endl; CloseHandle(hCom); fd = -1; return false; @@ -175,15 +164,22 @@ bool PISerial::init() { } desc.StopBits = params[PISerial::TwoStopBits] ? TWOSTOPBITS : ONESTOPBIT; if (SetCommState(hCom, &desc) == -1) { - cout << "[PISerial] Unable to set comm state for \"" << devName << "\"" << endl; + piCout << "[PISerial] Unable to set comm state for \"" << path_ << "\"" << endl; CloseHandle(hCom); fd = -1; return false; } #else - fd = open(devName.data(), O_NOCTTY | O_RDWR); + int om = 0; + switch (mode_) { + case PIIODevice::ReadOnly: om = O_RDONLY; break; + case PIIODevice::WriteOnly: om = O_WRONLY; break; + case PIIODevice::ReadWrite: om = O_RDWR; break; + } + //cout << "init ser " << path_ << " mode " << om << endl; + fd = ::open(path_.data(), O_NOCTTY | om); if(fd == -1) { - cout << "[PISerial] Unable to open \"" << devName << "\"" << endl; + piCout << "[PISerial] Unable to open \"" << path_ << "\"" << endl; return false; } fcntl(fd, F_SETFL, 0); @@ -191,48 +187,47 @@ bool PISerial::init() { tcgetattr(fd, &desc); sdesc = desc; desc.c_iflag = desc.c_oflag = desc.c_lflag = 0; - desc.c_cflag = CLOCAL | CREAD | CSIZE; + desc.c_cflag = CLOCAL | CSIZE | CS8; + if (isReadable()) desc.c_cflag |= CREAD; if (params[PISerial::TwoStopBits]) desc.c_cflag |= CSTOPB; if (params[PISerial::ParityControl]) { desc.c_iflag |= INPCK; desc.c_cflag |= PARENB; if (params[PISerial::ParityOdd]) desc.c_cflag |= PARODD; } - desc.c_cc[VMIN] = 0; - desc.c_cc[VTIME] = 1; + desc.c_cc[VMIN] = 1; + desc.c_cc[VTIME] = vtime; cfsetispeed(&desc, convertSpeed(ispeed)); cfsetospeed(&desc, convertSpeed(ospeed)); if(tcsetattr(fd, TCSANOW, &desc) < 0) { - cout << "[PISerial] Can`t set attributes for \"" << devName << "\"" << endl; - close(fd); + piCout << "[PISerial] Can`t set attributes for \"" << path_ << "\"" << endl; + ::close(fd); return false; } tcflush(fd, TCIOFLUSH); - //cout << "[PISerial] Initialized " << devName << endl; + //piCout << "[PISerial] Initialized " << path_ << endl; #endif return true; } -bool PISerial::send(uchar * data, int size) { - //cout << "[PISerial] send size: " << sizeof(data) << endl; - if (fd == -1) { - //cout << "[PISerial] Can`t write to uninitialized COM" << endl; - return false; +int PISerial::write(const void * data, int max_size, bool wait) { + //piCout << "[PISerial] send size: " << sizeof(data) << endl; + if (fd == -1 || !canWrite()) { + //piCout << "[PISerial] Can`t write to uninitialized COM" << endl; + return -1; } #ifdef WINDOWS DWORD wrote; - WriteFile(hCom, data, size, &wrote, 0); + WriteFile(hCom, data, max_size, &wrote, 0); #else int wrote; - wrote = write(fd, data, size); + wrote = ::write(fd, data, max_size); + if (wait) tcdrain(fd); #endif - if ((int)wrote != size) { - //cout << "[PISerial] Error while sending" << endl; - return false; - } - //cout << "[PISerial] Wrote " << wrote << " bytes in " << devName << endl; - return true; + return (int)wrote; + //piCout << "[PISerial] Error while sending" << endl; + //piCout << "[PISerial] Wrote " << wrote << " bytes in " << path_ << endl; } diff --git a/piserial.h b/piserial.h old mode 100644 new mode 100755 index 2811390b..1b823831 --- a/piserial.h +++ b/piserial.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives COM - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com, Bychkov Andrey wapmobil@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,8 +20,8 @@ #ifndef PISERIAL_H #define PISERIAL_H -#include "pithread.h" -#include "pistring.h" +#include "pitimer.h" +#include "piiodevice.h" #ifndef WINDOWS # include # include @@ -42,16 +42,12 @@ # define B256000 256000 #endif -#define SERIAL_BUFFER_SIZE 4096 - -typedef bool (*SerialFunc)(void * , uchar * , int ); -typedef bool (*SerialHeaderFunc)(void * , uchar * , uchar * , int ); - -class PISerial: public PIThread { +class PISerial: public PIIODevice { public: // slot is any function format "bool (void*, uchar*, int)" // slot_header is any function format "bool (void*, uchar*, uchar*, int)" - PISerial(PIString name = "serial", void * data = 0, SerialFunc slot = 0, SerialHeaderFunc slot_header = headerValidate); + PISerial(const PIString & device, void * data = 0, ReadRetFunc slot = 0); + PISerial(void * data = 0, ReadRetFunc slot = 0); ~PISerial(); enum Parameters {ParityControl = 0x01, ParityOdd = 0x02, TwoStopBits = 0x04}; @@ -69,31 +65,59 @@ public: S115200 = 115200 }; - void setSlot(SerialFunc func) {ret_func = func;} + void setData(void * d) {data = d;} + + //void setSlot(SerialFunc func) {ret_func = func;} void setSpeed(PISerial::Speed speed) {ospeed = ispeed = speed;} void setOutSpeed(PISerial::Speed speed) {ospeed = speed;} void setInSpeed(PISerial::Speed speed) {ispeed = speed;} - void setDevice(const PIString & dev) {devName = dev;} + void setDevice(const PIString & dev) {path_ = dev;} void setParameters(PIFlags parameters) {params = parameters;} - void setData(void * d) {data = d;} - void setReadData(void * headerPtr, int headerSize, int dataSize) {this->headerPtr = headerPtr; this->headerSize = headerSize; this->dataSize = dataSize;} + void setParameter(PISerial::Parameters parameter, bool on = true) {params.setFlag(parameter, on);} + void setVTime(int t) {vtime = t;} - bool send(uchar * data, int size); - bool init(); - bool initialized() const {return fd != -1;} - void terminate(); +#ifdef WINDOWS + void setReadIsBlocking(bool yes) { + COMMTIMEOUTS times; + times.ReadIntervalTimeout = yes ? vtime : MAXDWORD; + times.ReadTotalTimeoutConstant = yes ? 1 : 0; + times.ReadTotalTimeoutMultiplier = 0; + times.WriteTotalTimeoutConstant = 1; + times.WriteTotalTimeoutMultiplier = 0; + if (isOpened()) SetCommTimeouts(hCom, ×); + } +#else + void setReadIsBlocking(bool yes) {if (isOpened()) fcntl(fd, F_SETFL, yes ? 0 : O_NONBLOCK);} +#endif - PIByteArray lastHeader() {return mheader;} - ullong missedBytes() const {return missed;} - ullong missedPackets() const {return (packetSize == 0 ? 0 : missed / packetSize);} + const PIString & device() const {return path_;} + PISerial::Speed outSpeed() const {return ospeed;} + PISerial::Speed inSpeed() const {return ispeed;} + int VTime() const {return vtime;} -private: +#ifdef WINDOWS + int read(void * read_to, int max_size) { + if (!canRead()) return -1; + WaitCommEvent(hCom, 0, 0); + ReadFile(hCom, read_to, max_size, &readed, 0); + return readed; + } +#else + int read(void * read_to, int max_size) {if (!canRead()) return -1; return ::read(fd, read_to, max_size);} +#endif + bool read(void * data, int size, double timeout_ms); + + int write(const void * data, int max_size, bool wait); + int write(const void * data, int max_size) {return write(data, max_size, false);} + bool send(const void * data, int size, bool wait = false) {return (write(data, size, wait) == size);} + + +protected: int convertSpeed(PISerial::Speed speed); static bool headerValidate(void * d, uchar * src, uchar * rec, int size) {for (int i = 0; i < size; ++i) if (src[i] != rec[i]) return false; return true;} - void begin(); - void run(); - void end(); + bool openDevice(); + bool closeDevice(); #ifdef WINDOWS DCB desc, sdesc; @@ -103,18 +127,11 @@ private: termios desc, sdesc; uint readed; #endif - int fd; + int fd, vtime; PISerial::Speed ospeed, ispeed; - PIString devName; - SerialFunc ret_func; - SerialHeaderFunc ret_func_header; - uchar buffer[SERIAL_BUFFER_SIZE], sbuffer[SERIAL_BUFFER_SIZE]; - PIByteArray mheader; + PITimer timer; void * headerPtr, * data; - int dataSize, headerSize, packetSize, allReaded, addSize, curInd; - ullong missed; PIFlags params; - bool first; }; diff --git a/pisignals.cpp b/pisignals.cpp old mode 100644 new mode 100755 index 2c955182..12f4705c --- a/pisignals.cpp +++ b/pisignals.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Signals - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/pisignals.h b/pisignals.h old mode 100644 new mode 100755 index 6fb83e45..43b58119 --- a/pisignals.h +++ b/pisignals.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Signals - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -50,23 +50,23 @@ public: #endif All = 0xFFFFF }; - + typedef void (*SignalEvent)(PISignals::Signal); // slot is any function format "void (PISignals::Signal)" static void setSlot(SignalEvent slot) {ret_func = slot;} static void grabSignals(PIFlags signals_); static void raiseSignal(PISignals::Signal signal) {raise(signalCode(signal));} - + private: PISignals() {ret_func = 0;} ~PISignals() {} - + static int signalCode(PISignals::Signal signal); static PISignals::Signal signalFromCode(int signal); static void signal_event(int signal); - + static SignalEvent ret_func; - + }; diff --git a/pistring.cpp b/pistring.cpp old mode 100644 new mode 100755 index 9689f096..cb1329a9 --- a/pistring.cpp +++ b/pistring.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives String - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -83,7 +83,7 @@ PIString & PIString::operator +=(const wchar_t * str) { break; } } - delete c; + delete[] c; return *this; } @@ -313,6 +313,30 @@ PIString PIString::toLowerCase() const { } +int PIString::lengthAscii() const { + int j = 0; + for (int i = 0; i < size_s(); ++i, ++j) + if (!at(i).isAscii()) ++j; + return j; +} + + +const char * PIString::data() const { + PIByteArray & d_(*(const_cast(&data_))); + d_.clear(); + for (int i = 0, j = 0; i < size_s(); ++i, ++j) { + if (at(i).isAscii()) + d_.push_back(uchar(at(i).toAscii())); + else { + d_.push_back((at(i).toCharPtr()[0])); ++j; + d_.push_back((at(i).toCharPtr()[1])); + } + } + d_.push_back(uchar('\0')); + return (const char * )d_.data(); +} + + string PIString::convertToStd() const { string s; if (size() > 0) { @@ -332,7 +356,7 @@ string PIString::convertToStd() const { char PIString::toChar() const { PIString s(toNativeDecimalPoints()); char v; - sscanf(s.stdString().c_str(), "%c", &v); + sscanf(s.data(), "%c", &v); return v; } @@ -340,9 +364,9 @@ char PIString::toChar() const { short PIString::toShort() const { PIString s(trimmed().toLowerCase().toNativeDecimalPoints()); short v; - if (s.left(2) == "0x") {sscanf(s.stdString().c_str(), "%hx", &v); return v;} - if (s.left(1) == "0") {sscanf(s.stdString().c_str(), "%ho", &v); return v;} - sscanf(s.stdString().c_str(), "%hd", &v); + if (s.left(2) == "0x") {sscanf(s.data(), "%hx", &v); return v;} + if (s.left(1) == "0") {sscanf(s.data(), "%ho", &v); return v;} + sscanf(s.data(), "%hd", &v); return v; } @@ -350,9 +374,9 @@ short PIString::toShort() const { int PIString::toInt() const { PIString s(trimmed().toLowerCase().toNativeDecimalPoints()); int v; - if (s.left(2) == "0x") {sscanf(s.stdString().c_str(), "%x", &v); return v;} - if (s.left(1) == "0") {sscanf(s.stdString().c_str(), "%o", &v); return v;} - sscanf(s.stdString().c_str(), "%d", &v); + if (s.left(2) == "0x") {sscanf(s.data(), "%x", &v); return v;} + if (s.left(1) == "0") {sscanf(s.data(), "%o", &v); return v;} + sscanf(s.data(), "%d", &v); return v; } @@ -360,9 +384,9 @@ int PIString::toInt() const { long PIString::toLong() const { PIString s(trimmed().toLowerCase().toNativeDecimalPoints()); long v; - if (s.left(2) == "0x") {sscanf(s.stdString().c_str(), "%lx", &v); return v;} - if (s.left(1) == "0") {sscanf(s.stdString().c_str(), "%lo", &v); return v;} - sscanf(s.stdString().c_str(), "%ld", &v); + if (s.left(2) == "0x") {sscanf(s.data(), "%lx", &v); return v;} + if (s.left(1) == "0") {sscanf(s.data(), "%lo", &v); return v;} + sscanf(s.data(), "%ld", &v); return v; } @@ -370,9 +394,9 @@ long PIString::toLong() const { llong PIString::toLLong() const { PIString s(trimmed().toLowerCase().toNativeDecimalPoints()); llong v; - if (s.left(2) == "0x") {sscanf(s.stdString().c_str(), "%llx", &v); return v;} - if (s.left(1) == "0") {sscanf(s.stdString().c_str(), "%llo", &v); return v;} - sscanf(s.stdString().c_str(), "%lld", &v); + if (s.left(2) == "0x") {sscanf(s.data(), "%llx", &v); return v;} + if (s.left(1) == "0") {sscanf(s.data(), "%llo", &v); return v;} + sscanf(s.data(), "%lld", &v); return v; } diff --git a/pistring.h b/pistring.h old mode 100644 new mode 100755 index 9aa44e80..7f1d784f --- a/pistring.h +++ b/pistring.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives String - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -126,8 +126,12 @@ public: PIString & insert(const int index, const char * c) {return insert(index, PIString(c));} PIString & expandRightTo(const int len, const PIChar & c) {if (len > length()) resize(len, c); return *this;} PIString & expandLeftTo(const int len, const PIChar & c) {if (len > length()) insert(0, PIString(len - length(), c)); return *this;} + PIString & reverse() {PIString str(*this); clear(); piForeachR (const PIChar & c, str) push_back(c); return *this;} + PIString reversed() const {PIString str(*this); str.reverse(); return str;} - const char * data() {return convertToStd().c_str();} + //const char * data() {return convertToStd().c_str();} + int lengthAscii() const; + const char * data() const; const string stdString() const {return convertToStd();} wstring stdWString() const {return convertToWString();} PIByteArray toByteArray() {string s(convertToStd()); return PIByteArray(s.c_str(), s.length());} @@ -140,7 +144,7 @@ public: #else PIString toNativeDecimalPoints() const {PIString s(*this); if (currentLocale == 0) return s; return s.replaceAll(".", currentLocale->decimal_point);} #endif - + int find(const char str, const int start = 0) const; int find(const PIString str, const int start = 0) const; int find(const char * str, const int start = 0) const {return find(PIString(str), start);} @@ -153,15 +157,15 @@ public: int length() const {return size();} bool isEmpty() const {return (size() == 0 || *this == "");} - bool toBool() const {PIString s(*this); if (atof(s.toNativeDecimalPoints().stdString().c_str()) > 0. || s.trimmed().toLowerCase() == "true") return true; return false;} + bool toBool() const {PIString s(*this); if (atof(s.toNativeDecimalPoints().data()) > 0. || s.trimmed().toLowerCase() == "true") return true; return false;} char toChar() const; short toShort() const; int toInt() const; long toLong() const; llong toLLong() const; - float toFloat() const {PIString s(*this); return (float)atof(s.toNativeDecimalPoints().stdString().c_str());} - double toDouble() const {PIString s(*this); return atof(s.toNativeDecimalPoints().stdString().c_str());} - ldouble toLDouble() const {PIString s(*this); return atof(s.toNativeDecimalPoints().stdString().c_str());} + float toFloat() const {PIString s(*this); return (float)atof(s.toNativeDecimalPoints().data());} + double toDouble() const {PIString s(*this); return atof(s.toNativeDecimalPoints().data());} + ldouble toLDouble() const {PIString s(*this); return atof(s.toNativeDecimalPoints().data());} //inline PIString & setNumber(const char value) {clear(); *this += itos(value); return *this;} PIString & setNumber(const int value) {clear(); *this += itos(value); return *this;} @@ -188,11 +192,14 @@ private: string convertToStd() const; wstring convertToWString() const {wstring s; for (int i = 0; i < length(); ++i) s.push_back(at(i).toWChar()); return s;} + PIByteArray data_; //string std_string; + //wstring std_wstring; }; inline std::ostream & operator <<(std::ostream & s, const PIString & v) {for (int i = 0; i < v.length(); ++i) s << v[i]; return s;} +inline std::istream & operator >>(std::istream & s, PIString & v) {string ss; s >> ss; v << PIString(ss); return s;} inline PIString operator +(const PIString & str, const PIString & f) {PIString s(str); s += f; return s;} diff --git a/pisystemmonitor.cpp b/pisystemmonitor.cpp old mode 100644 new mode 100755 index 0db64b1f..661ed91d --- a/pisystemmonitor.cpp +++ b/pisystemmonitor.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Process resource monitor - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -39,10 +39,10 @@ bool PISystemMonitor::startOnProcess(int pID) { stop(); pID_ = pID; #ifndef WINDOWS - file.open("/proc/" + PIString::fromNumber(pID_) + "/stat", PIFile::Read); - filem.open("/proc/" + PIString::fromNumber(pID_) + "/statm", PIFile::Read); + file.open("/proc/" + PIString::fromNumber(pID_) + "/stat", PIIODevice::ReadOnly); + filem.open("/proc/" + PIString::fromNumber(pID_) + "/statm", PIIODevice::ReadOnly); if (!file.isOpened()) { - cout << "[PISystemMonitor] Can`t find process with ID = " << pID_ << "!" << endl; + piCout << "[PISystemMonitor] Can`t find process with ID = " << pID_ << "!" << endl; return false; } cycle = -1; @@ -92,7 +92,7 @@ void PISystemMonitor::run() { } stat.priority = sl[16].toInt(); stat.threads = sl[18].toInt(); - + str = filem.readAll(true); sl = str.split(" "); if (sl.size_s() < 5) return; @@ -101,7 +101,7 @@ void PISystemMonitor::run() { stat.share_memsize = sl[2].toLong() * page_size; stat.data_memsize = sl[5].toLong() * page_size; stat.physical_memsize = stat.resident_memsize - stat.share_memsize; - + stat.physical_memsize_readable = PIString::readableSize(stat.physical_memsize); stat.resident_memsize_readable = PIString::readableSize(stat.resident_memsize); stat.share_memsize_readable = PIString::readableSize(stat.share_memsize); diff --git a/pisystemmonitor.h b/pisystemmonitor.h old mode 100644 new mode 100755 index 1f997364..d721646d --- a/pisystemmonitor.h +++ b/pisystemmonitor.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Process resource monitor - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/pithread.cpp b/pithread.cpp old mode 100644 new mode 100755 index 0ebdc930..f9d796df --- a/pithread.cpp +++ b/pithread.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Thread - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,23 +20,26 @@ #include "pithread.h" -PIThread::PIThread(bool startNow, int timer_delay): PIObject() { +PIThread::PIThread(void * data, ThreadFunc func, bool startNow, int timer_delay): PIObject() { piMonitor.threads++; + data_ = data; + ret_func = func; + running = lockRun = false; + priority_ = piNormal; + timer = timer_delay; + if (startNow) start(timer_delay); +} + + +PIThread::PIThread(bool startNow, int timer_delay): PIObject() { + piMonitor.threads++; + ret_func = 0; running = lockRun = false; priority_ = piNormal; timer = timer_delay; - /*addEvent("started"); - addEvent("stopped"); - addEventHandler(HANDLER(PIThread, start)); - addEventHandler(HANDLER(PIThread, startOnce)); - addEventHandler(HANDLER(PIThread, stop)); - addEventHandler(HANDLER(PIThread, terminate));*/ if (startNow) start(timer_delay); } -#ifndef WINDOWS -#else -#endif PIThread::~PIThread() { piMonitor.threads--; @@ -57,14 +60,17 @@ bool PIThread::start(int timer_delay) { pthread_attr_init(&attr); pthread_attr_setschedparam(&attr, &sparam); if (pthread_create(&thread, &attr, thread_function, this) == 0) { + setPriority(priority_); running = true; return true; } #else thread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)thread_function, this, 0, 0); - if (thread == 0) - return false; - setPriority(priority_); + if (thread != 0) { + setPriority(priority_); + running = true; + return true; + } #endif return false; } @@ -76,13 +82,18 @@ bool PIThread::startOnce() { pthread_attr_t attr; pthread_attr_init(&attr); pthread_attr_setschedparam(&attr, &sparam); - if (pthread_create(&thread, &attr, thread_function_once, this) == 0) + if (pthread_create(&thread, &attr, thread_function_once, this) == 0) { + setPriority(priority_); + running = true; return true; + } #else thread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)thread_function_once, this, 0, 0); - if (thread == 0) + if (thread != 0) { + setPriority(priority_); + running = true; return false; - setPriority(priority_); + } #endif return false; } @@ -110,6 +121,7 @@ void * PIThread::thread_function(void * t) { while (!ct->terminating) { if (ct->lockRun) ct->mutex_.lock(); ct->run(); + if (ct->ret_func != 0) ct->ret_func(ct->data_); if (ct->lockRun) ct->mutex_.unlock(); if (ct->timer > 0) msleep(ct->timer); } @@ -133,6 +145,7 @@ void * PIThread::thread_function_once(void * t) { raiseEvent(ct, "started"); if (ct->lockRun) ct->mutex_.lock(); ct->run(); + if (ct->ret_func != 0) ct->ret_func(ct->data_); if (ct->lockRun) ct->mutex_.unlock(); raiseEvent(ct, "stopped"); ct->end(); diff --git a/pithread.h b/pithread.h old mode 100644 new mode 100755 index 9371d335..b01d4a02 --- a/pithread.h +++ b/pithread.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Thread - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -30,8 +30,11 @@ inline void msleep(int msecs) {Sleep(msecs);} inline void msleep(int msecs) {usleep(msecs * 1000);} #endif +typedef void (*ThreadFunc)(void * ); + class PIThread: public PIObject { public: + PIThread(void * data, ThreadFunc func, bool startNow = false, int timer_delay = -1); PIThread(bool startNow = false, int timer_delay = -1); ~PIThread(); @@ -52,11 +55,16 @@ public: //bool start(int timer_delay = -1); EVENT_HANDLER0(PIThread, bool, start) {return start(-1);} EVENT_HANDLER1(PIThread, bool, start, int, timer_delay); + EVENT_HANDLER1(PIThread, bool, start, ThreadFunc, func) {ret_func = func; return start(-1);} + EVENT_HANDLER2(PIThread, bool, start, ThreadFunc, func, int, timer_delay) {ret_func = func; return start(timer_delay);} EVENT_HANDLER0(PIThread, bool, startOnce); + EVENT_HANDLER1(PIThread, bool, startOnce, ThreadFunc, func) {ret_func = func; return startOnce();} EVENT_HANDLER0(PIThread, void, stop) {stop(false);} EVENT_HANDLER1(PIThread, void, stop, bool, wait) {terminating = true; if (wait) waitForFinish();} EVENT_HANDLER0(PIThread, void, terminate) {terminate(false);} EVENT_HANDLER1(PIThread, void, terminate, bool, hard); + void setData(void * d) {data_ = d;} + void setSlot(ThreadFunc func) {ret_func = func;} void setPriority(PIThread::Priority prior); PIThread::Priority priority() const {return priority_;} bool isRunning() const {return running;} @@ -69,19 +77,20 @@ public: EVENT_HANDLER0(PIThread, void, unlock) {mutex_.unlock();} PIMutex & mutex() {return mutex_;} -private: - virtual void begin() {;} // executed at start - virtual void run() {;} // main loop - virtual void end() {;} // executed at finish - protected: static void * thread_function(void * t); static void * thread_function_once(void * t); + virtual void begin() {;} // executed at start + virtual void run() {;} // main loop executed with "timer_delay" timeout + virtual void end() {;} // executed at finish + volatile bool terminating, running, lockRun; int timer, policy; + void * data_; PIMutex mutex_; PIThread::Priority priority_; + ThreadFunc ret_func; #ifndef WINDOWS pthread_t thread; sched_param sparam; diff --git a/pitimer.cpp b/pitimer.cpp index 0071cd57..802df41d 100644 --- a/pitimer.cpp +++ b/pitimer.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Timer - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -56,11 +56,15 @@ PITimer::~PITimer() { #ifndef WINDOWS void PITimer::start(double msecs) { - if (ti == 0) return; + if (ti == 0 || msecs < 0) return; spec.it_interval.tv_nsec = ((int)(msecs * 1000) % 1000000) * 1000; spec.it_interval.tv_sec = (time_t)(msecs / 1000); spec.it_value = spec.it_interval; ti = timer_create(CLOCK_REALTIME, &se, &timer); + if (ti == -1) { + piCout << "[PITimer] Can`t create timer for " << msecs << " msecs: " << errorString() << endl; + return; + } timer_settime(timer, 0, &spec, 0); running = true; } @@ -119,11 +123,10 @@ void PITimer::run() { double PITimer::elapsed_n() { #ifdef WINDOWS t_cur = GetCurrentTime(); - return (t_cur * 1000000. - t_st * 1000000.); + return (t_cur - t_st) * 1000000.; #else clock_gettime(0, &t_cur); - return (t_cur.tv_sec * 1.e+9 + t_cur.tv_nsec) - - (t_st.tv_sec * 1.e+9 + t_st.tv_nsec); + return (t_cur.tv_sec - t_st.tv_sec) * 1.e+9 + (t_cur.tv_nsec - t_st.tv_nsec); #endif } @@ -131,11 +134,10 @@ double PITimer::elapsed_n() { double PITimer::elapsed_u() { #ifdef WINDOWS t_cur = GetCurrentTime(); - return (t_cur * 1000. - t_st * 1000.); + return (t_cur - t_st) * 1000.; #else clock_gettime(0, &t_cur); - return (t_cur.tv_sec * 1.e+6 + (t_cur.tv_nsec / 1.e+3)) - - (t_st.tv_sec * 1.e+6 + (t_st.tv_nsec / 1.e+3)); + return (t_cur.tv_sec - t_st.tv_sec) * 1.e+6 + (t_cur.tv_nsec - t_st.tv_nsec) / 1.e+3; #endif } @@ -146,8 +148,7 @@ double PITimer::elapsed_m() { return (double)(t_cur - t_st); #else clock_gettime(0, &t_cur); - return (t_cur.tv_sec * 1.e+3 + (t_cur.tv_nsec / 1.e+6)) - - (t_st.tv_sec * 1.e+3 + (t_st.tv_nsec / 1.e+6)); + return (t_cur.tv_sec - t_st.tv_sec) * 1.e+3 + (t_cur.tv_nsec - t_st.tv_nsec) / 1.e+6; #endif } @@ -155,11 +156,102 @@ double PITimer::elapsed_m() { double PITimer::elapsed_s() { #ifdef WINDOWS t_cur = GetCurrentTime(); - return (t_cur / 1000. - t_st / 1000.); + return (t_cur - t_st) / 1000.; #else clock_gettime(0, &t_cur); - return (t_cur.tv_sec + (t_cur.tv_nsec / 1.e+9)) - - (t_st.tv_sec + (t_st.tv_nsec / 1.e+9)); + return (t_cur.tv_sec - t_st.tv_sec) + (t_cur.tv_nsec - t_st.tv_nsec) / 1.e+9; +#endif +} + + +double PITimer::reset_time_n() { +#ifdef WINDOWS + t_cur = GetCurrentTime(); + return t_st * 1000000.; +#else + clock_gettime(0, &t_cur); + return t_st.tv_sec * 1.e+9 + t_st.tv_nsec; +#endif +} + + +double PITimer::reset_time_u() { +#ifdef WINDOWS + t_cur = GetCurrentTime(); + return (t_cur - t_st) * 1000.; +#else + clock_gettime(0, &t_cur); + return t_st.tv_sec * 1.e+6 + t_st.tv_nsec / 1.e+3; +#endif +} + + +double PITimer::reset_time_m() { +#ifdef WINDOWS + t_cur = GetCurrentTime(); + return (double)(t_cur - t_st); +#else + clock_gettime(0, &t_cur); + return t_st.tv_sec * 1.e+3 + t_st.tv_nsec / 1.e+6; +#endif +} + + +double PITimer::reset_time_s() { +#ifdef WINDOWS + t_cur = GetCurrentTime(); + return (t_cur - t_st) / 1000.; +#else + clock_gettime(0, &t_cur); + return t_st.tv_sec + t_st.tv_nsec / 1.e+9; +#endif +} + + +double PITimer::elapsed_system_n() { +#ifdef WINDOWS + long t_cur = GetCurrentTime(); + return (t_cur * 1000000.); +#else + timespec t_cur; + clock_gettime(0, &t_cur); + return (t_cur.tv_sec * 1.e+9 + t_cur.tv_nsec); +#endif +} + + +double PITimer::elapsed_system_u() { +#ifdef WINDOWS + long t_cur = GetCurrentTime(); + return (t_cur * 1000.); +#else + timespec t_cur; + clock_gettime(0, &t_cur); + return (t_cur.tv_sec * 1.e+6 + (t_cur.tv_nsec / 1.e+3)); +#endif +} + + +double PITimer::elapsed_system_m() { +#ifdef WINDOWS + long t_cur = GetCurrentTime(); + return (double)t_cur; +#else + timespec t_cur; + clock_gettime(0, &t_cur); + return (t_cur.tv_sec * 1.e+3 + (t_cur.tv_nsec / 1.e+6)); +#endif +} + + +double PITimer::elapsed_system_s() { +#ifdef WINDOWS + long t_cur = GetCurrentTime(); + return (t_cur / 1000.); +#else + timespec t_cur; + clock_gettime(0, &t_cur); + return (t_cur.tv_sec + (t_cur.tv_nsec / 1.e+9)); #endif } @@ -186,6 +278,31 @@ PIDate currentDate() { } +PIString PITime::toString(const PIString & format) { + PIString ts = format; + ts.replace("hh", PIString::fromNumber(hours).expandLeftTo(2, '0')); + ts.replace("h", PIString::fromNumber(hours)); + ts.replace("mm", PIString::fromNumber(minutes).expandLeftTo(2, '0')); + ts.replace("m", PIString::fromNumber(minutes)); + ts.replace("ss", PIString::fromNumber(seconds).expandLeftTo(2, '0')); + ts.replace("s", PIString::fromNumber(seconds)); + return ts; +} + + +PIString PIDate::toString(const PIString & format) { + PIString ts = format; + ts.replace("yyyy", PIString::fromNumber(year).expandLeftTo(4, '0')); + ts.replace("yy", PIString::fromNumber(year).expandLeftTo(2, '0')); + ts.replace("y", PIString::fromNumber(year)); + ts.replace("mm", PIString::fromNumber(month).expandLeftTo(2, '0')); + ts.replace("m", PIString::fromNumber(month)); + ts.replace("dd", PIString::fromNumber(day).expandLeftTo(2, '0')); + ts.replace("d", PIString::fromNumber(day)); + return ts; +} + + PIString time2string(const PITime & time, const PIString & format) { PIString ts = format; ts.replace("hh", PIString::fromNumber(time.hours).expandLeftTo(2, '0')); diff --git a/pitimer.h b/pitimer.h index 4a846ebc..8dc21ac2 100644 --- a/pitimer.h +++ b/pitimer.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Timer - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -32,12 +32,14 @@ struct PITime { int seconds; int minutes; int hours; + PIString toString(const PIString & format = "h:mm:ss"); }; struct PIDate { int day; int month; int year; // since 1900 + PIString toString(const PIString & format = "d.mm.yyyy"); }; class PITimer @@ -50,7 +52,7 @@ class PITimer public: PITimer(TimerEvent slot = 0, void * data = 0); ~PITimer(); - + void setData(void * data_) {data = data_;} void setSlot(TimerEvent slot) {ret_func = slot;} #ifdef WINDOWS @@ -76,15 +78,25 @@ public: double elapsed_u(); // microseconds double elapsed_m(); // miliseconds double elapsed_s(); // seconds - + + double reset_time_n(); // nanoseconds + double reset_time_u(); // microseconds + double reset_time_m(); // miliseconds + double reset_time_s(); // seconds + + static double elapsed_system_n(); // nanoseconds + static double elapsed_system_u(); // microseconds + static double elapsed_system_m(); // miliseconds + static double elapsed_system_s(); // seconds + private: #ifdef WINDOWS void run(); - - long int t_st, t_cur; + + long t_st, t_cur; #else static void timer_event(sigval e); - + bool running; volatile bool lockRun; PIMutex mutex_; @@ -100,16 +112,16 @@ private: int delim; int tick; }; - + void * data; TimerEvent ret_func; PIVector ret_funcs; - + }; PITime currentTime(); PIDate currentDate(); -PIString time2string(const PITime & time, const PIString & format = "h:mm:ss"); -PIString date2string(const PIDate & date, const PIString & format = "d.mm.yyyy"); +PIString time2string(const PITime & time, const PIString & format = "h:mm:ss"); // obsolete, use PITime.toString() instead +PIString date2string(const PIDate & date, const PIString & format = "d.mm.yyyy"); // obsolete, use PITime.toString() instead #endif // PITIMER_H diff --git a/pivariable.cpp b/pivariable.cpp old mode 100644 new mode 100755 index d7b7f1e3..5890ae1d --- a/pivariable.cpp +++ b/pivariable.cpp @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Variable, Struct (simple serialization) - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,6 +40,7 @@ bool PIVariant::operator ==(const PIVariant & v) const { case PIVariant::String: return vString == v.vString; case PIVariant::StringList: return vStringList == v.vStringList; }; + return false; } @@ -84,6 +85,7 @@ PIString PIVariant::stringValue() const { case PIVariant::String: return vString; case PIVariant::StringList: return vStringList.join("%|%"); }; + return vString; } @@ -214,7 +216,7 @@ void PIVariable::writeVariable(char * dest) { void PIStruct::parseFile(const PIString & file) { - PIConfig conf(file, PIFile::Read); + PIConfig conf(file, PIIODevice::ReadOnly); PIVariable var; PIString ts; uint sz = 0; diff --git a/pivariable.h b/pivariable.h old mode 100644 new mode 100755 index 32855e9d..ba35da6b --- a/pivariable.h +++ b/pivariable.h @@ -1,7 +1,7 @@ /* PIP - Platform Independent Primitives Variable, Struct (simple serialization) - Copyright (C) 2011 Ivan Pelipenko peri4ko@gmail.com + Copyright (C) 2012 Ivan Pelipenko peri4ko@gmail.com This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff --git a/Описание.odt b/Описание.odt old mode 100644 new mode 100755 index 6e0a6c27e800ea135da22b60d57551493dc09788..3ccc99e691dd8441232580fff50198747635d00f GIT binary patch delta 46603 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 delta 44591 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
`7>wTCbt>3^P&H^ZNgp2HU%|J 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 diff --git a/Описание.pdf b/Описание.pdf old mode 100644 new mode 100755 index 2a7b0ddcbdc5fc6fbf9d25eff1ac0e3f409229a0..1ed384af0bb0df06cb63183d740f1390f3a5147e GIT binary patch delta 232012 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%0A@Rwtl!}wM%;@mR+?f+h0K?PIB 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

&C2*uj{xyOr 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%0D#qS#XwE-B~{Qp)ZI=p@Fj%Qky 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�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 T#{sACAr;6WCZ@Svi{t+Ry&m?~