Compare commits
4 Commits
Release-2-
...
stream_2_5
Author | SHA1 | Date | |
---|---|---|---|
60d292b3ea | |||
5ce9b737cf | |||
7bcb494044 | |||
13758eb08e |
4
makefile
4
makefile
@ -34,7 +34,6 @@ SOURCES += $(FORMATS:%=src/%Converter.cc)
|
|||||||
SOURCES += $(BUSSES:%=src/%Interface.cc)
|
SOURCES += $(BUSSES:%=src/%Interface.cc)
|
||||||
SOURCES += $(wildcard src/Stream*.cc)
|
SOURCES += $(wildcard src/Stream*.cc)
|
||||||
SOURCES += src/StreamVersion.c
|
SOURCES += src/StreamVersion.c
|
||||||
SOURCES_3.14 += src/devcalcoutStream.c
|
|
||||||
|
|
||||||
HEADERS += StreamFormat.h
|
HEADERS += StreamFormat.h
|
||||||
HEADERS += StreamFormatConverter.h
|
HEADERS += StreamFormatConverter.h
|
||||||
@ -44,6 +43,9 @@ HEADERS += StreamError.h
|
|||||||
ifeq (${EPICS_BASETYPE},3.13)
|
ifeq (${EPICS_BASETYPE},3.13)
|
||||||
USR_INCLUDES += -include $(INSTALL_INCLUDE)/compat3_13.h
|
USR_INCLUDES += -include $(INSTALL_INCLUDE)/compat3_13.h
|
||||||
endif
|
endif
|
||||||
|
ifeq (${EPICS_BASETYPE},3.14)
|
||||||
|
RECORDTYPES += calcout
|
||||||
|
endif
|
||||||
|
|
||||||
StreamCore.o: streamReferences
|
StreamCore.o: streamReferences
|
||||||
|
|
||||||
|
@ -265,7 +265,7 @@ static ulong crc_0x04C11DB7(const uchar* data, ulong len, ulong crc)
|
|||||||
{
|
{
|
||||||
// x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 +
|
// x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 +
|
||||||
// x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + x^0 (0x04C11DB7)
|
// x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + x^0 (0x04C11DB7)
|
||||||
const static ulong table[] = {
|
const static unsigned int table[] = {
|
||||||
0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9,
|
0x00000000, 0x04c11db7, 0x09823b6e, 0x0d4326d9,
|
||||||
0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005,
|
0x130476dc, 0x17c56b6b, 0x1a864db2, 0x1e475005,
|
||||||
0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
|
0x2608edb8, 0x22c9f00f, 0x2f8ad6d6, 0x2b4bcb61,
|
||||||
@ -340,7 +340,7 @@ static ulong crc_0x04C11DB7_r(const uchar* data, ulong len, ulong crc)
|
|||||||
// x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 +
|
// x^32 + x^26 + x^23 + x^22 + x^16 + x^12 + x^11 + x^10 +
|
||||||
// x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + x^0 (0x04C11DB7)
|
// x^8 + x^7 + x^5 + x^4 + x^2 + x^1 + x^0 (0x04C11DB7)
|
||||||
// reflected
|
// reflected
|
||||||
const static ulong table[] = {
|
const static unsigned int table[] = {
|
||||||
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
|
0x00000000, 0x77073096, 0xee0e612c, 0x990951ba,
|
||||||
0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
|
0x076dc419, 0x706af48f, 0xe963a535, 0x9e6495a3,
|
||||||
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
|
0x0edb8832, 0x79dcb8a4, 0xe0d5e91e, 0x97d2d988,
|
||||||
@ -545,9 +545,9 @@ printPseudo(const StreamFormat& format, StreamBuffer& output)
|
|||||||
debug("ChecksumConverter %s: output to check: \"%s\"\n",
|
debug("ChecksumConverter %s: output to check: \"%s\"\n",
|
||||||
checksumMap[fnum].name, output.expand(start,length)());
|
checksumMap[fnum].name, output.expand(start,length)());
|
||||||
|
|
||||||
sum = checksumMap[fnum].xorout ^ checksumMap[fnum].func(
|
sum = (checksumMap[fnum].xorout ^ checksumMap[fnum].func(
|
||||||
reinterpret_cast<uchar*>(output(start)), length,
|
reinterpret_cast<uchar*>(output(start)), length,
|
||||||
checksumMap[fnum].init) & mask[checksumMap[fnum].bytes];
|
checksumMap[fnum].init)) & mask[checksumMap[fnum].bytes];
|
||||||
|
|
||||||
debug("ChecksumConverter %s: output checksum is 0x%lX\n",
|
debug("ChecksumConverter %s: output checksum is 0x%lX\n",
|
||||||
checksumMap[fnum].name, sum);
|
checksumMap[fnum].name, sum);
|
||||||
@ -606,9 +606,9 @@ scanPseudo(const StreamFormat& format, StreamBuffer& input, long& cursor)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
sum = checksumMap[fnum].xorout ^ checksumMap[fnum].func(
|
sum = (checksumMap[fnum].xorout ^ checksumMap[fnum].func(
|
||||||
reinterpret_cast<uchar*>(input(start)), length,
|
reinterpret_cast<uchar*>(input(start)), length,
|
||||||
checksumMap[fnum].init) & mask[checksumMap[fnum].bytes];
|
checksumMap[fnum].init)) & mask[checksumMap[fnum].bytes];
|
||||||
|
|
||||||
debug("ChecksumConverter %s: input checksum is 0x%0*lX\n",
|
debug("ChecksumConverter %s: input checksum is 0x%0*lX\n",
|
||||||
checksumMap[fnum].name, 2*checksumMap[fnum].bytes, sum);
|
checksumMap[fnum].name, 2*checksumMap[fnum].bytes, sum);
|
||||||
@ -616,6 +616,24 @@ scanPseudo(const StreamFormat& format, StreamBuffer& input, long& cursor)
|
|||||||
int i,j;
|
int i,j;
|
||||||
unsigned inchar;
|
unsigned inchar;
|
||||||
|
|
||||||
|
if (format.flags & sign_flag) // decimal
|
||||||
|
{
|
||||||
|
ulong sumin = 0;
|
||||||
|
// get number of decimal digits from number of bytes: ceil(xbytes*2.5)
|
||||||
|
j = (checksumMap[fnum].bytes+1)*25/10-2;
|
||||||
|
for (i = 0; i < j; i++)
|
||||||
|
{
|
||||||
|
inchar = input[cursor+i];
|
||||||
|
if (isdigit(inchar)) sumin = sumin*10+inchar-'0';
|
||||||
|
else break;
|
||||||
|
}
|
||||||
|
if (sumin==sum) return i;
|
||||||
|
error("Input %0*lu does not match checksum %0*lu\n",
|
||||||
|
i, sumin, j, sum);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (format.flags & alt_flag) // lsb first (little endian)
|
if (format.flags & alt_flag) // lsb first (little endian)
|
||||||
{
|
{
|
||||||
for (i = 0; i < checksumMap[fnum].bytes; i++)
|
for (i = 0; i < checksumMap[fnum].bytes; i++)
|
||||||
|
@ -742,7 +742,7 @@ Protocol(const Protocol& p, StreamBuffer& name, int _line)
|
|||||||
int i;
|
int i;
|
||||||
const char* nextparameter;
|
const char* nextparameter;
|
||||||
parameter[0] = protocolname();
|
parameter[0] = protocolname();
|
||||||
for (i = 0; i < 10; i++)
|
for (i = 0; i < 9; i++)
|
||||||
{
|
{
|
||||||
debug("StreamProtocolParser::Protocol::Protocol $%d=\"%s\"\n",
|
debug("StreamProtocolParser::Protocol::Protocol $%d=\"%s\"\n",
|
||||||
i, parameter[i]);
|
i, parameter[i]);
|
||||||
|
Reference in New Issue
Block a user