void flushPendingChanges() override { if (!pendingChanges()) { return; } auto& self = static_cast<QmlTreeModel&>(self_); self.beginResetModel(); QmlItemModelHelper::flushPendingChanges(); self.endResetModel(); }
void Outputs::updateOutputs(void) { unsigned int mask = 0x01; unsigned int i; unsigned int state = _relayState ^ _inverted; unsigned int prevState = _prevRelayState ^ _inverted; unsigned int toggle = pendingChanges(); #ifndef ZERO_DETECT if ((state ^ prevState) & state) { // at least one outputs needs to be switched ON -> disable // the PWM timer16_0.match(MAT2, PWM_PERIOD);// disable the PWM _pwm_timeout.start(PWM_TIMEOUT); } #endif for(i = 0; i < NO_OF_CHANNELS; i++, mask <<= 1) { unsigned int value = state & mask; if (mask & toggle) { unsigned int pinMask = digitalPinToBitMask(outputPins[i]); if (digitalPinToPort(outputPins[i]) != 0) { if (value) _port_2_set |= pinMask; else _port_2_clr |= pinMask; } else { if (value) _port_0_set |= pinMask; else _port_0_clr |= pinMask; } } } _prevRelayState = _relayState; #ifdef ZERO_DETECT _state = 1; #else setOutputs(); clrOutputs(); #endif }