예제 #1
0
int CLightDriver_TPE3000::reset(int index,std::vector<typeLedStatus> status)
{
	if (LedHandle_ < 0 || index < 0 || index >= getLedSum())
	{
		return -1;
	}

	if (status.empty())
	{
		return -1;
	}

	typeLedStatus s = status.front();
	status.erase(status.begin());

	switch(s)
	{
	case LED_ON:
		WriteLed(index,true);
		break;

	case LED_OFF:
		WriteLed(index,false);
		break;

	case LED_ON_OFF:
		BlingLed(index,1,true);
		break;

	case LED_OFF_ON:
		BlingLed(index,1,false);
		break;

	case LED_BLING:
		BlingLed(index,1);
		break;

	default:
		break;
	}

	if (!status.empty())
	{
		ResetTimerReset(index,status);
	}

	return 0;
}
예제 #2
0
/* точка входа в программу */
VOID main()
{
	USHORT anim_counter = 0; // счетчик кадров анимации
	
	for (;;)
	{
		BYTE dip = ReadDip(), // значение, считанное из дип переклбючателей 
			led = dip; // значение для записиси в регистр диодной линейки, 
					   // по умолчанию отражает состояние дип переключателей
		
		switch (dip)
		{
			case ANIM1_CODE: led = Anim1(anim_counter++); break; // если на дип переключателе установлен код запуска первой анимации, тио выведем очередной ее кадр в регистр светодиодов
			case ANIM2_CODE: led = Anim2(anim_counter++); break; // если на дип переключателе установлен код запуска второй анимации, тио выведем очередной ее кадр в регистр светодиодов
		
			default : break;
		}
		
		// запишем подготовленное значение в регистр светодиодной линейки
		WriteLed(led);
		
		// вызовем функцию задержки
		Delay(10);
	}
}
예제 #3
0
int CLightDriver_TPE3000::BlingLed(int index,int blingTimes,boost::logic::tribool blingstatus/* = boost::logic::indeterminate*/)
{
	if(LedHandle_ < 0 || index < 0 || index >= getLedSum() || blingTimes < 0)
	{
		return -1;
	}

	if (boost::logic::indeterminate(blingstatus))
	{
		int ret = ReadLed(index);
		if (ret == 0)
		{
			WriteLed(index,true);
			WriteLed(index,false);
		}
		else if (ret == 1)
		{
			WriteLed(index,false);
			WriteLed(index,true);
		}
		else
		{
			return -1;
		}
	}
	else if(blingstatus == true)
	{
		WriteLed(index,true);
		WriteLed(index,false);
	}
	else if(blingstatus == false)
	{
		WriteLed(index,false);
		WriteLed(index,true);
	}

	if (--blingTimes > 0)
	{
		ResetTimerBlingLed(index,blingTimes,blingstatus);
	}

	return 0;
}
예제 #4
0
PRIVATE VOID Int0Isr()
{
	Int0Count++;
	WriteLed(Int0Count);
}