@@ -17,7 +17,8 @@ ChannelIndex::ChannelIndex() :
1717 daqClass(" " ),
1818 devID(0 ),
1919 isInChn(true ),
20- chanID(0 )
20+ chanID(0 ),
21+ isLegacy(false )
2122{
2223
2324}
@@ -31,7 +32,8 @@ ChannelIndex::ChannelIndex(DAQProxy *proxy, size_t devID, size_t chanID, bool is
3132 daqClass(proxy->daqClass ()),
3233 devID(devID),
3334 isInChn(isInChn),
34- chanID(chanID)
35+ chanID(chanID),
36+ isLegacy(false )
3537{}
3638
3739ChannelIndex::ChannelIndex (ModelProxy *proxy, size_t modelID) :
@@ -42,7 +44,8 @@ ChannelIndex::ChannelIndex(ModelProxy *proxy, size_t modelID) :
4244 modelClass(proxy->modelClass ()),
4345 modelID(modelID),
4446 instID(0 ),
45- isAnalog(false )
47+ isAnalog(false ),
48+ isLegacy(false )
4649{}
4750
4851ChannelIndex::ChannelIndex (ModelProxy *proxy, size_t modelID, size_t instID) :
@@ -53,7 +56,8 @@ ChannelIndex::ChannelIndex(ModelProxy *proxy, size_t modelID, size_t instID) :
5356 modelClass(proxy->modelClass ()),
5457 modelID(modelID),
5558 instID(instID),
56- isAnalog(false )
59+ isAnalog(false ),
60+ isLegacy(false )
5761{}
5862
5963ChannelIndex ChannelIndex::toInstance (size_t instID) const
@@ -128,57 +132,6 @@ std::ostream &operator<<(std::ostream &os, const ChannelIndex &dex)
128132 return os;
129133}
130134
131- static void legacyRescue_0 (QString str, ChannelIndex &dex)
132- {
133- // Attempt legacy rescue
134- // Caveats: - inChn/outChn is unknowable; uses heuristics
135- // - Graph channels are likely to fail
136- // - Explicit NONE on pre-2016 collapses onto SG
137- bool ok = false ;
138- int ch = str.toInt (&ok);
139- if ( !ok )
140- return ;
141- DAQData *d =& DeviceManager::Register ()[LEGACY_DAQ_CLASS]->param (0 );
142- dex.daqClass = LEGACY_DAQ_CLASS;
143- dex.devID = 0 ;
144- if ( ch >= 0 && ch <= (int )(d->inChn .size ()+d->outChn .size ()+1 ) ) { // Pre-2016
145- dex.chanID = ch;
146- if ( ch < (int ) d->inChn .size () && ch < (int )d->outChn .size () ) {
147- dex.isAnalog = true ;
148- dex.isInChn = d->inChn .size () > d->outChn .size (); // Statistically...
149- } else if ( d->inChn .size () >= d->outChn .size () && ch < (int )d->inChn .size () ) {
150- dex.isAnalog = true ;
151- dex.isInChn = true ;
152- } else if ( d->inChn .size () < d->outChn .size () && ch < (int )d->outChn .size () ) {
153- dex.isAnalog = true ;
154- dex.isInChn = false ;
155- } else {
156- dex.isNone = true ;
157- }
158- dex.isValid = true ; // One hopes.
159- } else if ( ch == -1 ) { // 2016-RC1 : None
160- dex.isNone = true ;
161- dex.isValid = true ;
162- } else if ( ch == 1000 ) { // 2016-RC1 : SG
163- dex.isVirtual = true ;
164- dex.modelClass = " SG" ;
165- dex.modelID = 0 ;
166- dex.instID = 0 ;
167- dex.isValid = true ;
168- } else if ( ch >= 1100000000 ) { // 2016-RC1 : HH Proto
169- dex.isPrototype = true ;
170- dex.modelClass = " HH" ;
171- dex.modelID = ((ch - 1100000000 ) / 100000 ) - 1 ;
172- dex.isValid = true ;
173- } else if ( ch >= 100000000 ) { // 2016-RC1 : HH Inst
174- dex.isVirtual = true ;
175- dex.modelClass = " HH" ;
176- dex.modelID = ((ch - 100000000 ) / 100000 ) - 1 ;
177- dex.instID = ch % 100000 ;
178- dex.isValid = true ;
179- }
180- }
181-
182135std::istream &operator >>(std::istream &is, ChannelIndex &dex)
183136{
184137 ChannelIndex blank;
@@ -236,7 +189,8 @@ std::istream &operator>>(std::istream &is, ChannelIndex &dex)
236189 dex.instID = parts.at (3 ).toUInt ();
237190 dex.isValid = true ;
238191 } else if ( parts.size () == 1 && LOADED_PROTOCOL_VERSION == 0 ) {
239- legacyRescue_0 (str, dex);
192+ dex.isLegacy = true ;
193+ dex.chanID = parts.at (0 ).toInt ();
240194 } else if ( parts.size () == 1 && LOADED_PROTOCOL_VERSION < 3 ) {
241195 if ( !parts.at (0 ).compare (" SpikeGen" , Qt::CaseInsensitive) ) {
242196 dex.isVirtual = true ;
@@ -258,5 +212,6 @@ bool operator==(ChannelIndex const& a, ChannelIndex const& b)
258212 (!a.isPrototype || (a.modelClass ==b.modelClass && a.modelID ==b.modelID )) &&
259213 (!a.isVirtual || (a.modelClass ==b.modelClass && a.modelID ==b.modelID && a.instID ==b.instID )) &&
260214 a.isAnalog ==b.isAnalog &&
261- (!a.isAnalog || (a.daqClass ==b.daqClass && a.devID ==b.devID && a.isInChn ==b.isInChn && a.chanID ==b.chanID ));
215+ (!a.isAnalog || (a.daqClass ==b.daqClass && a.devID ==b.devID && a.isInChn ==b.isInChn && a.chanID ==b.chanID )) &&
216+ a.isLegacy == b.isLegacy ;
262217}
0 commit comments