Compare commits
9 Commits
Author | SHA1 | Date | |
---|---|---|---|
53ea75dc80 | |||
b1f4c2a7d9 | |||
d87e9cedd2 | |||
32d93d9028 | |||
3d30827798 | |||
b688f14c22 | |||
f5da2ea6b3 | |||
4edd2f2eff | |||
846b884eb5 |
@ -73,7 +73,7 @@ public:
|
||||
{init(NULL, size);}
|
||||
|
||||
~StreamBuffer()
|
||||
{if (buffer != local) delete buffer;}
|
||||
{if (buffer != local) delete [] buffer;}
|
||||
|
||||
// operator (): get char* pointing to index
|
||||
const char* operator()(ssize_t index=0) const
|
||||
|
@ -534,11 +534,11 @@ long streamInitRecord(dbCommon* record, const struct link *ioLink,
|
||||
streamIoFunction readData, streamIoFunction writeData)
|
||||
{
|
||||
long status;
|
||||
char filename[80];
|
||||
char protocol[80];
|
||||
char busname[80];
|
||||
char filename[256];
|
||||
char protocol[256];
|
||||
char busname[256];
|
||||
int addr = -1;
|
||||
char busparam[80];
|
||||
char busparam[256];
|
||||
memset(busparam, 0 ,sizeof(busparam));
|
||||
|
||||
debug("streamInitRecord(%s): SEVR=%d\n", record->name, record->sevr);
|
||||
@ -831,7 +831,7 @@ initRecord(const char* filename, const char* protocol,
|
||||
return ERROR;
|
||||
}
|
||||
debug("Stream::initRecord %s: initialized. %s\n",
|
||||
name(), convert==2 ?
|
||||
name(), convert == DO_NOT_CONVERT ?
|
||||
"convert" : "don't convert");
|
||||
return convert;
|
||||
}
|
||||
@ -843,6 +843,7 @@ process()
|
||||
debug("Stream::process(%s)\n", name());
|
||||
if (record->pact || record->scan == SCAN_IO_EVENT)
|
||||
{
|
||||
record->proc = 0;
|
||||
if (status != NO_ALARM)
|
||||
{
|
||||
debug("Stream::process(%s) error status=%s (%d)\n",
|
||||
@ -854,7 +855,7 @@ process()
|
||||
return false;
|
||||
}
|
||||
debug("Stream::process(%s) ready. %s\n",
|
||||
name(), convert==2 ?
|
||||
name(), convert == DO_NOT_CONVERT ?
|
||||
"convert" : "don't convert");
|
||||
return true;
|
||||
}
|
||||
@ -868,11 +869,15 @@ process()
|
||||
debug("Stream::process(%s) start\n", name());
|
||||
status = NO_ALARM;
|
||||
convert = OK;
|
||||
if (!startProtocol(record->proc==2 ? StreamCore::StartInit : StreamCore::StartNormal))
|
||||
if (!startProtocol(record->proc == 2 ? StreamCore::StartInit : StreamCore::StartNormal))
|
||||
{
|
||||
debug("Stream::process(%s): could not start %sprotocol, status=%d\n",
|
||||
name(), record->proc==2 ? "@init " : "", status);
|
||||
debug("Stream::process(%s): could not start %sprotocol, status=%s (%d)\n",
|
||||
name(), record->proc == 2 ? "@init " : "",
|
||||
status >= 0 && status < ALARM_NSTATUS ?
|
||||
epicsAlarmConditionStrings[status] : "ERROR",
|
||||
status);
|
||||
(void) recGblSetSevr(record, status ? status : UDF_ALARM, INVALID_ALARM);
|
||||
record->proc = 0;
|
||||
return false;
|
||||
}
|
||||
debug("Stream::process(%s): protocol started\n", name());
|
||||
@ -920,7 +925,7 @@ scan(format_t *format, void* value, size_t maxStringSize)
|
||||
currentValueLength = scanValue(*format->priv, *(double*)value);
|
||||
break;
|
||||
case DBF_STRING:
|
||||
currentValueLength = scanValue(*format->priv, (char*)value, size);
|
||||
currentValueLength = scanValue(*format->priv, (char*)value, size);
|
||||
break;
|
||||
default:
|
||||
error("INTERNAL ERROR (%s): Illegal format type %d\n",
|
||||
|
@ -116,17 +116,11 @@ static long readData(dbCommon *record, format_t *format)
|
||||
if ((length = streamScanfN(record, format,
|
||||
(char *)aai->bptr, aai->nelm)) == ERROR)
|
||||
{
|
||||
memset(aai->bptr, 0, aai->nelm);
|
||||
return ERROR;
|
||||
}
|
||||
if (lval < (ssize_t)aai->nelm)
|
||||
if (length < (ssize_t)aai->nelm)
|
||||
{
|
||||
memset(((char*)aai->bptr)+lval , 0, aai->nelm-lval);
|
||||
lval++;
|
||||
}
|
||||
else
|
||||
{
|
||||
((char*)aai->bptr)[aai->nelm-1] = 0;
|
||||
((char*)aai->bptr)[length] = 0;
|
||||
}
|
||||
aai->nord = (long)length;
|
||||
return OK;
|
||||
|
@ -108,22 +108,16 @@ static long readData(dbCommon *record, format_t *format)
|
||||
case DBF_CHAR:
|
||||
case DBF_UCHAR:
|
||||
{
|
||||
ssize_t length;
|
||||
ssize_t length;
|
||||
aao->nord = 0;
|
||||
if ((length = streamScanfN(record, format,
|
||||
(char *)aao->bptr, aao->nelm)) == ERROR)
|
||||
{
|
||||
memset(aao->bptr, 0, aao->nelm);
|
||||
return ERROR;
|
||||
}
|
||||
if (length < (ssize_t)aao->nelm)
|
||||
{
|
||||
memset(((char*)aao->bptr)+lval , 0, aao->nelm-lval);
|
||||
lval++;
|
||||
}
|
||||
else
|
||||
{
|
||||
((char*)aao->bptr)[aao->nelm-1] = 0;
|
||||
((char*)aao->bptr)[length] = 0;
|
||||
}
|
||||
aao->nord = (long)length;
|
||||
goto end_no_check;
|
||||
|
@ -23,30 +23,27 @@
|
||||
static long readData(dbCommon *record, format_t *format)
|
||||
{
|
||||
lsiRecord *lsi = (lsiRecord *)record;
|
||||
ssize_t length;
|
||||
|
||||
if (format->type == DBF_STRING)
|
||||
if (format->type != DBF_STRING) return ERROR;
|
||||
if ((length = streamScanfN(record, format, lsi->val, (long)lsi->sizv)) == ERROR)
|
||||
{
|
||||
long len;
|
||||
if ((len = streamScanfN(record, format, lsi->val, lsi->sizv) == ERROR))
|
||||
{
|
||||
lsi->len = 0;
|
||||
return ERROR;
|
||||
}
|
||||
lsi->len = len;
|
||||
return OK;
|
||||
return ERROR;
|
||||
}
|
||||
return ERROR;
|
||||
if (length < (ssize_t)lsi->sizv)
|
||||
{
|
||||
lsi->val[length] = 0;
|
||||
}
|
||||
lsi->len = length;
|
||||
return OK;
|
||||
}
|
||||
|
||||
static long writeData(dbCommon *record, format_t *format)
|
||||
{
|
||||
lsiRecord *lsi = (lsiRecord *)record;
|
||||
|
||||
if (format->type == DBF_STRING)
|
||||
{
|
||||
return streamPrintf(record, format, lsi->val);
|
||||
}
|
||||
return ERROR;
|
||||
if (format->type != DBF_STRING) return ERROR;
|
||||
return streamPrintf(record, format, lsi->val);
|
||||
}
|
||||
|
||||
static long initRecord(dbCommon *record)
|
||||
|
@ -24,17 +24,19 @@
|
||||
static long readData(dbCommon *record, format_t *format)
|
||||
{
|
||||
lsoRecord *lso = (lsoRecord *)record;
|
||||
long len;
|
||||
ssize_t length;
|
||||
unsigned short monitor_mask;
|
||||
|
||||
if (format->type != DBF_STRING)
|
||||
return ERROR;
|
||||
if ((len = streamScanfN(record, format, lso->val, lso->sizv) == ERROR))
|
||||
if (format->type != DBF_STRING) return ERROR;
|
||||
if ((length = streamScanfN(record, format, lso->val, lso->sizv)) == ERROR)
|
||||
{
|
||||
lso->len = 0;
|
||||
return ERROR;
|
||||
}
|
||||
lso->len = len;
|
||||
if (length < (ssize_t)lso->sizv)
|
||||
{
|
||||
lso->val[length] = 0;
|
||||
}
|
||||
lso->len = length;
|
||||
if (record->pact) return OK;
|
||||
/* In @init handler, no processing, enforce monitor updates. */
|
||||
monitor_mask = recGblResetAlarms(record);
|
||||
@ -60,11 +62,8 @@ static long writeData(dbCommon *record, format_t *format)
|
||||
{
|
||||
lsoRecord *lso = (lsoRecord *)record;
|
||||
|
||||
if (format->type == DBF_STRING)
|
||||
{
|
||||
return streamPrintf(record, format, lso->val);
|
||||
}
|
||||
return ERROR;
|
||||
if (format->type != DBF_STRING) return ERROR;
|
||||
return streamPrintf(record, format, lso->val);
|
||||
}
|
||||
|
||||
static long initRecord(dbCommon *record)
|
||||
|
@ -42,7 +42,7 @@ static long readData(dbCommon *record, format_t *format)
|
||||
return OK;
|
||||
}
|
||||
case DBF_LONG:
|
||||
case DBF_UONG:
|
||||
case DBF_ULONG:
|
||||
case DBF_ENUM:
|
||||
{
|
||||
long lval;
|
||||
@ -72,7 +72,7 @@ static long writeData(dbCommon *record, format_t *format)
|
||||
return streamPrintf(record, format, sco->oval);
|
||||
}
|
||||
case DBF_LONG:
|
||||
case DBF_UONG:
|
||||
case DBF_ULONG:
|
||||
case DBF_ENUM:
|
||||
{
|
||||
return streamPrintf(record, format, (long)sco->oval);
|
||||
|
@ -117,21 +117,15 @@ static long readData(dbCommon *record, format_t *format)
|
||||
if ((length = streamScanfN(record, format,
|
||||
(char *)wf->bptr, wf->nelm)) == ERROR)
|
||||
{
|
||||
memset(wf->bptr, 0, wf->nelm);
|
||||
return ERROR;
|
||||
}
|
||||
if (length < (ssize_t)wf->nelm)
|
||||
{
|
||||
memset(((char*)wf->bptr)+lval , 0, wf->nelm-lval);
|
||||
lval++;
|
||||
}
|
||||
else
|
||||
{
|
||||
((char*)wf->bptr)[wf->nelm-1] = 0;
|
||||
((char*)wf->bptr)[length] = 0;
|
||||
}
|
||||
wf->nord = (long)length;
|
||||
return OK;
|
||||
}
|
||||
}
|
||||
default:
|
||||
errlogSevPrintf(errlogFatal,
|
||||
"readData %s: can't convert from string to %s\n",
|
||||
|
Reference in New Issue
Block a user