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)
|
REGISTER_DEVICE(PIBinaryLog)
|
||||||
|
|
||||||
PIBinaryLog::PIBinaryLog() {
|
PIBinaryLog::PIBinaryLog() {
|
||||||
|
#ifdef FREERTOS
|
||||||
|
setThreadedReadBufferSize(512);
|
||||||
|
#else
|
||||||
setThreadedReadBufferSize(65536);
|
setThreadedReadBufferSize(65536);
|
||||||
|
#endif
|
||||||
is_started = is_indexed = is_pause = false;
|
is_started = is_indexed = is_pause = false;
|
||||||
current_index = -1;
|
current_index = -1;
|
||||||
setPlaySpeed(1.);
|
setPlaySpeed(1.);
|
||||||
|
|||||||
@@ -263,7 +263,11 @@ void PIEthernet::construct() {
|
|||||||
setMulticastTTL(1);
|
setMulticastTTL(1);
|
||||||
server_thread_.setData(this);
|
server_thread_.setData(this);
|
||||||
server_thread_.setName("__S__server_thread");
|
server_thread_.setName("__S__server_thread");
|
||||||
|
#ifdef FREERTOS
|
||||||
|
setThreadedReadBufferSize(512);
|
||||||
|
#else
|
||||||
setThreadedReadBufferSize(65536);
|
setThreadedReadBufferSize(65536);
|
||||||
|
#endif
|
||||||
setPriority(piHigh);
|
setPriority(piHigh);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -229,7 +229,8 @@ void PIIODevice::terminate() {
|
|||||||
|
|
||||||
void PIIODevice::begin() {
|
void PIIODevice::begin() {
|
||||||
//cout << " begin\n";
|
//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!";
|
piCoutObj << "Warning: threadedReadBufferSize() == 0, read may be useless!";
|
||||||
thread_started_ = false;
|
thread_started_ = false;
|
||||||
if (!opened_) {
|
if (!opened_) {
|
||||||
@@ -275,10 +276,10 @@ PIByteArray PIIODevice::readForTime(double timeout_ms) {
|
|||||||
PIByteArray str;
|
PIByteArray str;
|
||||||
if (timeout_ms <= 0.) return str;
|
if (timeout_ms <= 0.) return str;
|
||||||
int ret;
|
int ret;
|
||||||
uchar * td = new uchar[threadedReadBufferSize()];
|
uchar * td = new uchar[threaded_read_buffer_size];
|
||||||
tm.reset();
|
tm.reset();
|
||||||
while (tm.elapsed_m() < timeout_ms) {
|
while (tm.elapsed_m() < timeout_ms) {
|
||||||
ret = read(td, threadedReadBufferSize());
|
ret = read(td, threaded_read_buffer_size);
|
||||||
if (ret <= 0) msleep(PIP_MIN_MSLEEP);
|
if (ret <= 0) msleep(PIP_MIN_MSLEEP);
|
||||||
else str.append(td, ret);
|
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()));
|
if (!ex) setReopenEnabled(em.getValue("reopenEnabled", isReopenEnabled()));
|
||||||
setReopenTimeout(ep->getValue("reopenTimeout", reopenTimeout(), &ex));
|
setReopenTimeout(ep->getValue("reopenTimeout", reopenTimeout(), &ex));
|
||||||
if (!ex) setReopenTimeout(em.getValue("reopenTimeout", reopenTimeout()));
|
if (!ex) setReopenTimeout(em.getValue("reopenTimeout", reopenTimeout()));
|
||||||
setThreadedReadBufferSize(ep->getValue("threadedReadBufferSize", int(buffer_tr.size_s()), &ex));
|
setThreadedReadBufferSize(ep->getValue("threadedReadBufferSize", int(threaded_read_buffer_size), &ex));
|
||||||
if (!ex) setThreadedReadBufferSize(em.getValue("threadedReadBufferSize", int(buffer_tr.size_s())));
|
if (!ex) setThreadedReadBufferSize(em.getValue("threadedReadBufferSize", int(threaded_read_buffer_size)));
|
||||||
} else {
|
} else {
|
||||||
setReopenEnabled(em.getValue("reopenEnabled", isReopenEnabled()));
|
setReopenEnabled(em.getValue("reopenEnabled", isReopenEnabled()));
|
||||||
setReopenTimeout(em.getValue("reopenTimeout", reopenTimeout()));
|
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);
|
return configureDevice(&em, ep);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -155,10 +155,10 @@ public:
|
|||||||
/** \brief Set size of threaded read buffer
|
/** \brief Set size of threaded read buffer
|
||||||
* \details Default size is 4096 bytes. If your device can read at single read
|
* \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 */
|
* 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
|
//! 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
|
//! Return content of threaded read buffer
|
||||||
const uchar * threadedReadBuffer() const {return buffer_tr.data();}
|
const uchar * threadedReadBuffer() const {return buffer_tr.data();}
|
||||||
@@ -260,10 +260,10 @@ public:
|
|||||||
static PIStringList availablePrefixes();
|
static PIStringList availablePrefixes();
|
||||||
|
|
||||||
|
|
||||||
EVENT_HANDLER(bool, open) {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(); 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(); 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(); 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_HANDLER(bool, close) {opened_ = !closeDevice(); if (!opened_) closed(); return !opened_;}
|
||||||
EVENT_HANDLER1(int, write, PIByteArray, data) {return writeDevice(data.data(), data.size_s());}
|
EVENT_HANDLER1(int, write, PIByteArray, data) {return writeDevice(data.data(), data.size_s());}
|
||||||
|
|
||||||
@@ -411,6 +411,7 @@ private:
|
|||||||
PIQueue<PIPair<PIByteArray, ullong> > write_queue;
|
PIQueue<PIPair<PIByteArray, ullong> > write_queue;
|
||||||
ullong tri;
|
ullong tri;
|
||||||
int readed_;
|
int readed_;
|
||||||
|
uint threaded_read_buffer_size;
|
||||||
bool init_, thread_started_, raise_threaded_read_;
|
bool init_, thread_started_, raise_threaded_read_;
|
||||||
|
|
||||||
static PIMutex nfp_mutex;
|
static PIMutex nfp_mutex;
|
||||||
|
|||||||
@@ -23,7 +23,11 @@ REGISTER_DEVICE(PISPI)
|
|||||||
|
|
||||||
|
|
||||||
PISPI::PISPI(const PIString & path, uint speed, PIIODevice::DeviceMode mode) : PIIODevice(path, mode) {
|
PISPI::PISPI(const PIString & path, uint speed, PIIODevice::DeviceMode mode) : PIIODevice(path, mode) {
|
||||||
|
#ifdef FREERTOS
|
||||||
|
setThreadedReadBufferSize(512);
|
||||||
|
#else
|
||||||
setThreadedReadBufferSize(1024);
|
setThreadedReadBufferSize(1024);
|
||||||
|
#endif
|
||||||
setPath(path);
|
setPath(path);
|
||||||
setSpeed(speed);
|
setSpeed(speed);
|
||||||
setBits(8);
|
setBits(8);
|
||||||
|
|||||||
@@ -20,7 +20,11 @@ PIBaseTransfer::PIBaseTransfer(): crc(standardCRC_16()), diag(false) {
|
|||||||
diag.setName("PIBaseTransfer");
|
diag.setName("PIBaseTransfer");
|
||||||
diag.start(50);
|
diag.start(50);
|
||||||
packets_count = 10;
|
packets_count = 10;
|
||||||
|
#ifdef FREERTOS
|
||||||
|
setPacketSize(512);
|
||||||
|
#else
|
||||||
setPacketSize(4096);
|
setPacketSize(4096);
|
||||||
|
#endif
|
||||||
randomize();
|
randomize();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -94,7 +94,11 @@ void PIPacketExtractor::construct() {
|
|||||||
ret_func_header = ret_func_footer = 0;
|
ret_func_header = ret_func_footer = 0;
|
||||||
setPayloadSize(0);
|
setPayloadSize(0);
|
||||||
setTimeout(100);
|
setTimeout(100);
|
||||||
|
#ifdef FREERTOS
|
||||||
|
setBufferSize(512);
|
||||||
|
#else
|
||||||
setBufferSize(65536);
|
setBufferSize(65536);
|
||||||
|
#endif
|
||||||
setDevice(0);
|
setDevice(0);
|
||||||
setPacketSize(0);
|
setPacketSize(0);
|
||||||
setSplitMode(None);
|
setSplitMode(None);
|
||||||
|
|||||||
@@ -224,7 +224,7 @@ bool PIThread::start(int timer_delay) {
|
|||||||
# endif
|
# endif
|
||||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||||
int ret = pthread_create(&PRIVATE->thread, &attr, thread_function, this);
|
int ret = pthread_create(&PRIVATE->thread, &attr, thread_function, this);
|
||||||
piCout << "pthread_create" << PRIVATE->thread;
|
//piCout << "pthread_create" << PRIVATE->thread;
|
||||||
pthread_attr_destroy(&attr);
|
pthread_attr_destroy(&attr);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
# ifdef MAC_OS
|
# ifdef MAC_OS
|
||||||
@@ -268,7 +268,7 @@ bool PIThread::startOnce() {
|
|||||||
# endif
|
# endif
|
||||||
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);
|
||||||
int ret = pthread_create(&(PRIVATE->thread), &attr, thread_function_once, this);
|
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);
|
pthread_attr_destroy(&attr);
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
# ifdef MAC_OS
|
# ifdef MAC_OS
|
||||||
@@ -469,7 +469,7 @@ void PIThread::__thread_func__(void * t) {
|
|||||||
ct.terminating = ct.running_ = false;
|
ct.terminating = ct.running_ = false;
|
||||||
ct.tid_ = -1;
|
ct.tid_ = -1;
|
||||||
//cout << "thread " << t << " exiting ... " << endl;
|
//cout << "thread " << t << " exiting ... " << endl;
|
||||||
piCout << "pthread_exit" << (ct.__privateinitializer__.p)->thread;
|
//piCout << "pthread_exit" << (ct.__privateinitializer__.p)->thread;
|
||||||
UNREGISTER_THREAD(&ct);
|
UNREGISTER_THREAD(&ct);
|
||||||
PIINTROSPECTION_UNREGISTER_THREAD(ct.tid());
|
PIINTROSPECTION_UNREGISTER_THREAD(ct.tid());
|
||||||
#ifndef WINDOWS
|
#ifndef WINDOWS
|
||||||
@@ -518,7 +518,7 @@ void PIThread::__thread_func_once__(void * t) {
|
|||||||
ct.terminating = ct.running_ = false;
|
ct.terminating = ct.running_ = false;
|
||||||
ct.tid_ = -1;
|
ct.tid_ = -1;
|
||||||
//cout << "thread " << t << " exiting ... " << endl;
|
//cout << "thread " << t << " exiting ... " << endl;
|
||||||
piCout << "pthread_exit" << (ct.__privateinitializer__.p)->thread;
|
//piCout << "pthread_exit" << (ct.__privateinitializer__.p)->thread;
|
||||||
UNREGISTER_THREAD(&ct);
|
UNREGISTER_THREAD(&ct);
|
||||||
PIINTROSPECTION_UNREGISTER_THREAD(ct.tid());
|
PIINTROSPECTION_UNREGISTER_THREAD(ct.tid());
|
||||||
#ifndef WINDOWS
|
#ifndef WINDOWS
|
||||||
|
|||||||
Reference in New Issue
Block a user