Beispiel #1
0
uint8_t marqueeSendByte(MARQUEE* marquee, uint8_t byte){
	marquee_init(marquee);
	if(marquee->txt){

		if(byte=='\n'){
			// Start writing at the beginning of the line
			marquee->txt[marquee->writePos] = '\0';
			marquee->writePos = 0;
			CRITICAL_SECTION_START;
			if(!marquee->active){
				marquee->active = TRUE;
				marquee->blink = FALSE;
				marquee->readPos=0;
				scheduleJob(&marqueeUpdate,(SchedulerData)marquee,clockGetus(),marquee->delayChar);
			}
			CRITICAL_SECTION_END;
		}else if(byte!='\r'){
			// Now put the character to the buffer
			if(marquee->writePos < marquee->txtSize){
				char* put = marquee->txt + marquee->writePos;
				CRITICAL_SECTION_START;
				*put++ = byte;
				*put = '\0';
				marquee->writePos += 1;
				marquee->readPos = 0;
				CRITICAL_SECTION_END;
			}
		}
	}
	return byte;
}
Beispiel #2
0
uint8_t marqueeSendByte(MARQUEE* marquee, uint8_t byte){
	marquee_init(marquee);
	if(marquee->txt){

		if(byte=='\n'){
			// Start writing at the beginning of the line
			marquee->txt[marquee->writePos] = '\0';
			marquee->writePos = 0;
			CRITICAL_SECTION{
				if(!marquee->active){
					marquee->active = TRUE;
					marquee->blink = FALSE;
					marquee->readPos=0;
					scheduleJob(&marqueeUpdate,(SchedulerData)marquee,clockGetus(),marquee->delayChar);
				}
			}
		}else if(byte!='\r'){
/*
 * Select Marquee display. Use current flags and rate settings.
 * CMD: F0 20 40
 */
void mes_selectMarquee()
{
	marquee_init();
	mes_state = EM_MARQUEE;
}