git-svn-id: svn://db.shs.com.ru/pip@741 12ceb7fc-bf1f-11e4-8940-5bc7170c53b5
This commit is contained in:
@@ -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.);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user