...
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
void GmdDebugStream::streamPoll(const int ch) {
// First check if the user created the channel
if(! _stream[ch]) {
return;
}
try {
rdLen[ch] = _stream[ch]->read(buff[ch], size, CTimeout(2000000));
}
catch (IOError &e) {
// A timeout happened
timeoutCnt ++;
timeoutCnt_perStream[ch] ++;
}
catch (CPSWError &e) {
// Don't print, as we are inside a polling. Wait for the next try, as
// rdLen[ch] will be zero.
}
if(rdLen[ch] == 0 ) {
return;
}
epicsTimeStamp time;
rdCnt++; rdCnt_perStream[ch]++;
/* extract data in stream */
stream_with_header_t *p = (stream_with_header_t *) buff[ch];
time.nsec = p->packet.time.secPastEpoch;
time.secPastEpoch = p->packet.time.nsec; /* Set PVs from extracted data */
...
/* Set your PVs with extracted data and update them */
setTimeStamp(&time);
callParamCallbacks();
} |
...