Fix type problem with local CA channels
This commit fixes a problem introduced in Bazaar commit 12658. Local CA channels were seeing the data type of a channel as an IOC-specific (dbFldTypes.h) type value instead of the CA type value from db_access.h. We introduce a pair of dbChannel*CAType() macros which convert the dbChannel's dbr_field_type and final_type values into the CA equivalent type values, and use these macros whenever the CA encoded field type value is needed. This ensures that the meaning of the dbChannel member fields never changes (in 3.14 the addr.dbr_field_type was overwritten with the converted value when connected to by rsrv).
This commit is contained in:
@@ -159,7 +159,7 @@ void dbChannelIO::show (
|
||||
|
||||
if ( level > 0u ) {
|
||||
printf ( " type %s, element count %li, field at %p\n",
|
||||
dbf_type_to_text ( dbChannelExportType ( this->dbch ) ),
|
||||
dbf_type_to_text ( dbChannelExportCAType ( this->dbch ) ),
|
||||
dbChannelElements ( this->dbch ),
|
||||
dbChannelField ( this->dbch ) );
|
||||
if ( level > 1u ) {
|
||||
@@ -206,7 +206,7 @@ short dbChannelIO::nativeType (
|
||||
epicsGuard < epicsMutex > & guard ) const
|
||||
{
|
||||
guard.assertIdenticalMutex ( this->mutex );
|
||||
return dbChannelExportType( this->dbch );
|
||||
return dbChannelExportCAType( this->dbch );
|
||||
}
|
||||
|
||||
void * dbChannelIO::operator new ( size_t size,
|
||||
|
||||
Reference in New Issue
Block a user