Exemplo n.º 1
0
	void flushPendingChanges() override
	{
		if (!pendingChanges())
		{
			return;
		}

		auto& self = static_cast<QmlTreeModel&>(self_);
		self.beginResetModel();
		QmlItemModelHelper::flushPendingChanges();
		self.endResetModel();
	}
Exemplo n.º 2
0
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
}