void Client::yield(const unsigned time, const bool strict) const { if (strict) doYield(time); else doYield(yieldFactor_ * time); }
bool transportWaitUntilReady(const uint32_t waitingMS) { // check if transport ready TRANSPORT_DEBUG(PSTR("TSF:WUR:MS=%lu\n"), waitingMS); // timeout uint32_t enterMS = hwMillis(); bool result = false; while (!result && ( hwMillis() - enterMS < waitingMS || !waitingMS)) { transportProcess(); result = isTransportReady(); doYield(); } return result; }
// only be used inside transport bool transportWait(const uint32_t waitingMS, const uint8_t cmd, const uint8_t msgType) { const uint32_t enterMS = hwMillis(); // invalidate msg type _msg.type = !msgType; bool expectedResponse = false; while ((hwMillis() - enterMS < waitingMS) && !expectedResponse) { // process incoming messages transportProcessFIFO(); doYield(); expectedResponse = (mGetCommand(_msg) == cmd && _msg.type == msgType); } return expectedResponse; }