bool DeviceDescriptor::Declare(const struct Declaration *declaration) { bool result = (device != NULL) && (device->Declare(declaration)); if (parser.isFlarm) result = FlarmDeclare(Com, declaration) || result; return result; }
BOOL devDeclare(PDeviceDescriptor_t d, Declaration_t *decl) { BOOL result = FALSE; if (is_simulator()) return true; mutexComm.Lock(); if (d) { if ((d->Driver) && (d->Driver->Declare != NULL)) result = d->Driver->Declare(d, decl); if (NMEAParser::PortIsFlarm(d->Port)) result |= FlarmDeclare(d, decl); } mutexComm.Unlock(); return result; }
BOOL devDeclare(PDeviceDescriptor_t d, Declaration_t *decl, unsigned errBufferLen, TCHAR errBuffer[]) { BOOL result = FALSE; if (SIMMODE) return TRUE; const unsigned BUFF_LEN = 128; TCHAR buffer[BUFF_LEN]; // We must be sure we are not going to attempt task declaration // while a port reset is already in progress. If this happens, a Flarm device will not be Flarm anymore // until a Flarm nmea sentence is parsed again once. // LKTOKEN _@M1400_ = "Task declaration" // LKTOKEN _@M571_ = "START" _sntprintf(buffer, BUFF_LEN, _T("%s: %s..."), gettext(_T("_@M1400_")), gettext(_T("_@M571_"))); CreateProgressDialog(buffer); /***********************************************************/ devDirectLink(d,true); /***********************************************************/ LockComm(); if ((d != NULL) && (d->Declare != NULL)) result = d->Declare(d, decl, errBufferLen, errBuffer); else { if ((d != NULL) && NMEAParser::PortIsFlarm(d->Port)) { result |= FlarmDeclare(d, decl, errBufferLen, errBuffer); } } UnlockComm(); /***********************************************************/ devDirectLink(d,false); /***********************************************************/ CloseProgressDialog(); return result; }