Compare commits

..

5 Commits

4 changed files with 22 additions and 11 deletions

View File

@ -1,3 +1,4 @@
# Remove this file if not using the PSI build system
include /ioc/tools/driver.makefile
EXCLUDE_VERSIONS = 3.13.2
PROJECT=stream
@ -39,10 +40,7 @@ HEADERS += StreamFormatConverter.h
HEADERS += StreamBuffer.h
HEADERS += StreamError.h
ifeq (${EPICS_BASETYPE},3.13)
# old gcc needs full path for -include
CXXFLAGS += -include $(foreach d,${INCLUDES:-I%=%},$(wildcard $d/compat3_13.h))
else
ifneq (${EPICS_BASETYPE},3.13)
RECORDTYPES += calcout
endif
@ -52,7 +50,7 @@ streamReferences:
perl ../src/makeref.pl Interface $(BUSSES) > $@
perl ../src/makeref.pl Converter $(FORMATS) >> $@
# have to hack a bit to work with both versions of driver.makefile
DBDFILES = O.$${EPICSVERSION}_$${T_A}/streamSup.dbd
../O.${EPICSVERSION}_${T_A}/streamSup.dbd:
export DBDFILES = streamSup.dbd
streamSup.dbd:
@echo Creating $@
perl ../src/makedbd.pl $(RECORDTYPES) > $@

View File

@ -22,9 +22,21 @@
#include "StreamError.h"
#if defined(__vxworks) || defined(vxWorks) || defined(_WIN32) || defined(__rtems__)
// These systems have no strncasecmp
#include <epicsVersion.h>
#ifdef BASE_VERSION
// 3.13
#include <ctype.h>
static int strncasecmp(const char *s1, const char *s2, size_t n)
{
int r=0;
while (n && (r = toupper(*s1)-toupper(*s2)) == 0) { n--; s1++; s2++; };
return r;
}
#else
#include <epicsString.h>
#define strncasecmp epicsStrnCaseCmp
#endif
#endif
#include <ctype.h>
typedef unsigned int (*checksumFunc)(const unsigned char* data, unsigned int len, unsigned int init);

View File

@ -115,7 +115,6 @@ class Stream : protected StreamCore
epicsMutex mutex;
epicsEvent initDone;
#endif
StreamBuffer fieldBuffer;
int status;
int convert;
long currentValueLength;
@ -604,7 +603,7 @@ parseLink(const struct link *ioLink, char* filename,
if (items <= 0)
{
error("%s: Empty I/O link. "
"Forgot the leading '@' or confused INP with OUT ?\n",
"Forgot the leading '@' or confused INP with OUT or link is too long ?\n",
name());
return S_dev_badInitRet;
}
@ -990,6 +989,7 @@ formatValue(const StreamFormat& format, const void* fieldaddress)
{
// Format like "%([record.]field)..." has requested to get value
// from field of this or other record.
StreamBuffer fieldBuffer;
DBADDR* pdbaddr = (DBADDR*)fieldaddress;
/* Handle time stamps special. %T converter takes double. */
@ -1134,6 +1134,7 @@ matchValue(const StreamFormat& format, const void* fieldaddress)
{
// Format like "%([record.]field)..." has requested to put value
// to field of this or other record.
StreamBuffer fieldBuffer;
DBADDR* pdbaddr = (DBADDR*)fieldaddress;
long nord;
long nelem = pdbaddr->no_elements;

View File

@ -22,8 +22,8 @@
#define devStream_h
#define STREAM_MAJOR 2
#define STREAM_MINOR 6
#define STREAM_PATCHLEVEL 6
#define STREAM_MINOR 7
#define STREAM_PATCHLEVEL 1
#if defined(__vxworks) || defined(vxWorks)
#include <vxWorks.h>