Fix scope and float array transfers

master
Timothy Pearson 12 years ago
parent 274a42aace
commit 20f225bd5a

@ -135,6 +135,7 @@ bool ScopePart::closeURL() {
}
void ScopePart::processLockouts() {
// Largest area
if (m_connectionActiveAndValid) {
if ((m_commHandlerMode < 2) && (m_commHandlerState < 2)) {
m_base->setEnabled(false);
@ -142,28 +143,32 @@ void ScopePart::processLockouts() {
else {
m_base->setEnabled(true);
}
if ((m_commHandlerMode < 2) && (m_commHandlerState < 50)) {
m_base->groupOscilloscopeTraceControls->setEnabled(false);
}
else {
m_base->groupOscilloscopeTraceControls->setEnabled(true);
if (stopTraceUpdate) {
m_base->acqStop->setEnabled(false);
m_base->acqStart->setEnabled(true);
m_base->waveformSave->setEnabled(true);
m_base->waveformRecall->setEnabled(true);
}
else {
m_base->acqStop->setEnabled(true);
m_base->acqStart->setEnabled(false);
m_base->waveformSave->setEnabled(false);
m_base->waveformRecall->setEnabled(false);
}
}
}
else {
m_base->setEnabled(false);
}
// Middle area
if ((m_commHandlerMode < 2) && (m_commHandlerState < 50)) {
m_base->groupOscilloscopeTraceControls->setEnabled(false);
}
else {
m_base->groupOscilloscopeTraceControls->setEnabled(true);
}
// Least area
if (stopTraceUpdate) {
m_base->acqStop->setEnabled(false);
m_base->acqStart->setEnabled(true);
m_base->waveformSave->setEnabled(true);
m_base->waveformRecall->setEnabled(true);
}
else {
m_base->acqStop->setEnabled(true);
m_base->acqStart->setEnabled(false);
m_base->waveformSave->setEnabled(false);
m_base->waveformRecall->setEnabled(false);
}
}
void ScopePart::disconnectFromServerCallback() {
@ -765,6 +770,7 @@ void ScopePart::postProcessTrace() {
void ScopePart::startDAQ() {
stopTraceUpdate = false;
EXEC_NEXT_STATE_IMMEDIATELY
}
void ScopePart::stopDAQ() {

@ -168,7 +168,6 @@ TQIODevice::Offset TDEKerberosClientSocket::at() const {
}
bool TDEKerberosClientSocket::at(TQIODevice::Offset off, int hidebasehack) {
long i;
bool ret;
Q_UNUSED(hidebasehack);
@ -339,7 +338,6 @@ void TDEKerberosClientSocket::setServerFQDN(TQString name) {
}
TQ_LONG TDEKerberosClientSocket::readBlock(char *data, TQ_ULONG maxlen) {
long i;
TQ_LONG ret;
if (kerberosStatus() == KerberosInUse) {
@ -401,7 +399,6 @@ TQ_LONG TDEKerberosClientSocket::writeBlock(const char *data, TQ_ULONG len) {
}
TQ_LONG TDEKerberosClientSocket::readLine(char *data, TQ_ULONG maxlen) {
long i;
TQ_LONG ret;
if (kerberosStatus() == KerberosInUse) {
@ -450,7 +447,6 @@ TQ_LONG TDEKerberosClientSocket::readLine(char *data, TQ_ULONG maxlen) {
}
TQString TDEKerberosClientSocket::readLine() {
long i;
TQString ret;
long maxlen;
@ -545,8 +541,9 @@ void TDEKerberosClientSocket::sendSASLDataToNetwork(const char *buffer, unsigned
len = strlen(buf);
buf[len] = '\n';
buf[len+1] = 0;
if (TQSocket::writeBlock(buf, len+1) < 0) {
printf("[WARNING] Transmitting data in base64 failed due to short write\n\r");
unsigned int ret = TQSocket::writeBlock(buf, len+1);
if (ret < (len+1)) {
printf("[WARNING] Transmitting data in base64 failed due to short write [wanted: %d wrote: %d]\n\r", len+1, ret);
}
free(buf);
@ -733,7 +730,6 @@ bool TDEKerberosClientSocket::canReadFrame() {
}
void TDEKerberosClientSocket::clearFrameTail() {
int i;
int eofLoc;
if (m_bufferLength > 0) {
eofLoc = m_buffer->buffer().find(255, m_bufferReadPointer) + 1;
@ -956,6 +952,11 @@ int TDEKerberosClientSocket::initializeKerberosInterface() {
callback->context = NULL;
++callback;
// Clear the buffer from memory
m_buffer->close();
m_buffer->open(IO_ReadWrite|IO_Truncate);
m_bufferReadPointer = 0;
// Initialize default data structures
memset(&secprops, 0L, sizeof(secprops));
secprops.maxbufsize = NET_SEC_BUF_SIZE;

@ -169,7 +169,6 @@ TQIODevice::Offset TDEKerberosServerSocket::at() const {
}
bool TDEKerberosServerSocket::at(TQIODevice::Offset off, int hidebasehack) {
long i;
bool ret;
Q_UNUSED(hidebasehack);
@ -348,7 +347,6 @@ void TDEKerberosServerSocket::setServerFQDN(TQString name) {
}
TQ_LONG TDEKerberosServerSocket::readBlock(char *data, TQ_ULONG maxlen) {
long i;
TQ_LONG ret;
if (m_kerberosRequested) {
@ -410,7 +408,6 @@ TQ_LONG TDEKerberosServerSocket::writeBlock(const char *data, TQ_ULONG len) {
}
TQ_LONG TDEKerberosServerSocket::readLine(char *data, TQ_ULONG maxlen) {
long i;
TQ_LONG ret;
if (m_kerberosRequested) {
@ -459,7 +456,6 @@ TQ_LONG TDEKerberosServerSocket::readLine(char *data, TQ_ULONG maxlen) {
}
TQString TDEKerberosServerSocket::readLine() {
long i;
TQString ret;
long maxlen;
@ -554,8 +550,9 @@ void TDEKerberosServerSocket::sendSASLDataToNetwork(const char *buffer, unsigned
len = strlen(buf);
buf[len] = '\n';
buf[len+1] = 0;
if (TQSocket::writeBlock(buf, len+1) < (len+1)) {
printf("[WARNING] Transmitting data in base64 failed due to short write\n\r");
unsigned int ret = TQSocket::writeBlock(buf, len+1);
if (ret < (len+1)) {
printf("[WARNING] Transmitting data in base64 failed due to short write [wanted: %d wrote: %d]\n\r", len+1, ret);
}
free(buf);
@ -742,7 +739,6 @@ bool TDEKerberosServerSocket::canReadFrame() {
}
void TDEKerberosServerSocket::clearFrameTail() {
int i;
int eofLoc;
if (m_bufferLength > 0) {
eofLoc = m_buffer->buffer().find(255, m_bufferReadPointer) + 1;
@ -977,6 +973,11 @@ int TDEKerberosServerSocket::initializeKerberosInterface() {
callback->context = NULL;
++callback;
// Clear the buffer from memory
m_buffer->close();
m_buffer->open(IO_ReadWrite|IO_Truncate);
m_bufferReadPointer = 0;
// Initialize default data structures
memset(&secprops, 0L, sizeof(secprops));
secprops.maxbufsize = NET_SEC_BUF_SIZE;

@ -21,6 +21,7 @@
#include "tqtrla.h"
#include <tqwidget.h>
#include <tqbuffer.h>
#include <klocale.h>
#include <kmessagebox.h>
@ -325,9 +326,30 @@ TQDataStream &operator<<( TQDataStream &s, const TQFloatArray &data ) {
TQ_UINT32 i;
TQ_UINT32 count = data.count();
s << count;
for (i=0; i<count; i++) {
s << data[i];
TQIODevice* dev = s.device();
if (dev) {
// This uses the channel efficiently by writing all the data in one large block
TQBuffer ba;
ba.open(IO_ReadWrite);
TQDataStream ds(&ba);
ds.setPrintableData(s.isPrintableData());
for (i=0; i<count; i++) {
ds << data[i];
}
ba.close();
TQByteArray buffer = ba.buffer();
dev->writeBlock(buffer.data(), buffer.size());
}
else {
// This uses the channel inefficiently by writing the data in byte-sized chunks
for (i=0; i<count; i++) {
s << data[i];
}
}
return s;
}
@ -346,9 +368,30 @@ TQDataStream &operator<<( TQDataStream &s, const TQDoubleArray &data ) {
TQ_UINT32 i;
TQ_UINT32 count = data.count();
s << count;
for (i=0; i<count; i++) {
s << data[i];
TQIODevice* dev = s.device();
if (dev) {
// This uses the channel efficiently by writing all the data in one large block
TQBuffer ba;
ba.open(IO_ReadWrite);
TQDataStream ds(&ba);
ds.setPrintableData(s.isPrintableData());
for (i=0; i<count; i++) {
ds << data[i];
}
ba.close();
TQByteArray buffer = ba.buffer();
dev->writeBlock(buffer.data(), buffer.size());
}
else {
// This uses the channel inefficiently by writing the data in byte-sized chunks
for (i=0; i<count; i++) {
s << data[i];
}
}
return s;
}

Loading…
Cancel
Save