git-svn-id: svn://db.shs.com.ru/pip@741 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5

This commit is contained in:
2019-02-08 16:01:53 +00:00
parent 6caa8b56bf
commit efdae74078
8 changed files with 38 additions and 16 deletions

View File

@@ -46,7 +46,11 @@
REGISTER_DEVICE(PIBinaryLog)
PIBinaryLog::PIBinaryLog() {
#ifdef FREERTOS
setThreadedReadBufferSize(512);
#else
setThreadedReadBufferSize(65536);
#endif
is_started = is_indexed = is_pause = false;
current_index = -1;
setPlaySpeed(1.);

View File

@@ -263,7 +263,11 @@ void PIEthernet::construct() {
setMulticastTTL(1);
server_thread_.setData(this);
server_thread_.setName("__S__server_thread");
#ifdef FREERTOS
setThreadedReadBufferSize(512);
#else
setThreadedReadBufferSize(65536);
#endif
setPriority(piHigh);
}

View File

@@ -229,7 +229,8 @@ void PIIODevice::terminate() {
void PIIODevice::begin() {
//cout << " begin\n";
if (threadedReadBufferSize() == 0)
buffer_tr.resize(threaded_read_buffer_size);
if (threaded_read_buffer_size == 0)
piCoutObj << "Warning: threadedReadBufferSize() == 0, read may be useless!";
thread_started_ = false;
if (!opened_) {
@@ -275,10 +276,10 @@ PIByteArray PIIODevice::readForTime(double timeout_ms) {
PIByteArray str;
if (timeout_ms <= 0.) return str;
int ret;
uchar * td = new uchar[threadedReadBufferSize()];
uchar * td = new uchar[threaded_read_buffer_size];
tm.reset();
while (tm.elapsed_m() < timeout_ms) {
ret = read(td, threadedReadBufferSize());
ret = read(td, threaded_read_buffer_size);
if (ret <= 0) msleep(PIP_MIN_MSLEEP);
else str.append(td, ret);
}
@@ -311,12 +312,12 @@ bool PIIODevice::configure(const PIString & config_file, const PIString & sectio
if (!ex) setReopenEnabled(em.getValue("reopenEnabled", isReopenEnabled()));
setReopenTimeout(ep->getValue("reopenTimeout", reopenTimeout(), &ex));
if (!ex) setReopenTimeout(em.getValue("reopenTimeout", reopenTimeout()));
setThreadedReadBufferSize(ep->getValue("threadedReadBufferSize", int(buffer_tr.size_s()), &ex));
if (!ex) setThreadedReadBufferSize(em.getValue("threadedReadBufferSize", int(buffer_tr.size_s())));
setThreadedReadBufferSize(ep->getValue("threadedReadBufferSize", int(threaded_read_buffer_size), &ex));
if (!ex) setThreadedReadBufferSize(em.getValue("threadedReadBufferSize", int(threaded_read_buffer_size)));
} else {
setReopenEnabled(em.getValue("reopenEnabled", isReopenEnabled()));
setReopenTimeout(em.getValue("reopenTimeout", reopenTimeout()));
setThreadedReadBufferSize(em.getValue("threadedReadBufferSize", int(buffer_tr.size_s())));
setThreadedReadBufferSize(em.getValue("threadedReadBufferSize", int(threaded_read_buffer_size)));
}
return configureDevice(&em, ep);
}

View File

@@ -155,10 +155,10 @@ public:
/** \brief Set size of threaded read buffer
* \details Default size is 4096 bytes. If your device can read at single read
* more than 4096 bytes you should use this function to adjust buffer size */
void setThreadedReadBufferSize(int new_size) {buffer_tr.resize(new_size); threadedReadBufferSizeChanged();}
void setThreadedReadBufferSize(int new_size) {threaded_read_buffer_size = new_size; threadedReadBufferSizeChanged();}
//! Return size of threaded read buffer
int threadedReadBufferSize() const {return buffer_tr.size_s();}
int threadedReadBufferSize() const {return threaded_read_buffer_size;}
//! Return content of threaded read buffer
const uchar * threadedReadBuffer() const {return buffer_tr.data();}
@@ -260,10 +260,10 @@ public:
static PIStringList availablePrefixes();
EVENT_HANDLER(bool, open) {if (!init_) init(); opened_ = openDevice(); if (opened_) opened(); return opened_;}
EVENT_HANDLER1(bool, open, const PIString &, _path) {setPath(_path); if (!init_) init(); opened_ = openDevice(); if (opened_) opened(); return opened_;}
bool open(DeviceMode _mode) {mode_ = _mode; if (!init_) init(); opened_ = openDevice(); if (opened_) opened(); return opened_;}
EVENT_HANDLER2(bool, open, const PIString &, _path, DeviceMode, _mode) {setPath(_path); mode_ = _mode; if (!init_) init(); opened_ = openDevice(); if (opened_) opened(); return opened_;}
EVENT_HANDLER(bool, open) {if (!init_) init(); buffer_tr.resize(threaded_read_buffer_size); opened_ = openDevice(); if (opened_) opened(); return opened_;}
EVENT_HANDLER1(bool, open, const PIString &, _path) {setPath(_path); if (!init_) init(); buffer_tr.resize(threaded_read_buffer_size); opened_ = openDevice(); if (opened_) opened(); return opened_;}
bool open(DeviceMode _mode) {mode_ = _mode; if (!init_) init(); buffer_tr.resize(threaded_read_buffer_size); opened_ = openDevice(); if (opened_) opened(); return opened_;}
EVENT_HANDLER2(bool, open, const PIString &, _path, DeviceMode, _mode) {setPath(_path); mode_ = _mode; if (!init_) init(); buffer_tr.resize(threaded_read_buffer_size); opened_ = openDevice(); if (opened_) opened(); return opened_;}
EVENT_HANDLER(bool, close) {opened_ = !closeDevice(); if (!opened_) closed(); return !opened_;}
EVENT_HANDLER1(int, write, PIByteArray, data) {return writeDevice(data.data(), data.size_s());}
@@ -411,6 +411,7 @@ private:
PIQueue<PIPair<PIByteArray, ullong> > write_queue;
ullong tri;
int readed_;
uint threaded_read_buffer_size;
bool init_, thread_started_, raise_threaded_read_;
static PIMutex nfp_mutex;

View File

@@ -23,7 +23,11 @@ REGISTER_DEVICE(PISPI)
PISPI::PISPI(const PIString & path, uint speed, PIIODevice::DeviceMode mode) : PIIODevice(path, mode) {
#ifdef FREERTOS
setThreadedReadBufferSize(512);
#else
setThreadedReadBufferSize(1024);
#endif
setPath(path);
setSpeed(speed);
setBits(8);

View File

@@ -20,7 +20,11 @@ PIBaseTransfer::PIBaseTransfer(): crc(standardCRC_16()), diag(false) {
diag.setName("PIBaseTransfer");
diag.start(50);
packets_count = 10;
#ifdef FREERTOS
setPacketSize(512);
#else
setPacketSize(4096);
#endif
randomize();
}

View File

@@ -94,7 +94,11 @@ void PIPacketExtractor::construct() {
ret_func_header = ret_func_footer = 0;
setPayloadSize(0);
setTimeout(100);
#ifdef FREERTOS
setBufferSize(512);
#else
setBufferSize(65536);
#endif
setDevice(0);
setPacketSize(0);
setSplitMode(None);

View File

@@ -224,7 +224,7 @@ bool PIThread::start(int timer_delay) {
# endif
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
int ret = pthread_create(&PRIVATE->thread, &attr, thread_function, this);
piCout << "pthread_create" << PRIVATE->thread;
//piCout << "pthread_create" << PRIVATE->thread;
pthread_attr_destroy(&attr);
if (ret == 0) {
# ifdef MAC_OS
@@ -268,7 +268,7 @@ bool PIThread::startOnce() {
# endif
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
int ret = pthread_create(&(PRIVATE->thread), &attr, thread_function_once, this);
piCout << "pthread_create" << PRIVATE->thread;
//piCout << "pthread_create" << PRIVATE->thread;
pthread_attr_destroy(&attr);
if (ret == 0) {
# ifdef MAC_OS
@@ -469,7 +469,7 @@ void PIThread::__thread_func__(void * t) {
ct.terminating = ct.running_ = false;
ct.tid_ = -1;
//cout << "thread " << t << " exiting ... " << endl;
piCout << "pthread_exit" << (ct.__privateinitializer__.p)->thread;
//piCout << "pthread_exit" << (ct.__privateinitializer__.p)->thread;
UNREGISTER_THREAD(&ct);
PIINTROSPECTION_UNREGISTER_THREAD(ct.tid());
#ifndef WINDOWS
@@ -518,7 +518,7 @@ void PIThread::__thread_func_once__(void * t) {
ct.terminating = ct.running_ = false;
ct.tid_ = -1;
//cout << "thread " << t << " exiting ... " << endl;
piCout << "pthread_exit" << (ct.__privateinitializer__.p)->thread;
//piCout << "pthread_exit" << (ct.__privateinitializer__.p)->thread;
UNREGISTER_THREAD(&ct);
PIINTROSPECTION_UNREGISTER_THREAD(ct.tid());
#ifndef WINDOWS