Example #1
0
void LedFont_Scroller(void *pdata) {
  INT8U err;
  char *p;
  short x, xStart;

  (void)pdata; /* avoid compiler warning */
  OSFlagPost(LedFont_Flags, LEDFONT_FLAG_READY, OS_FLAG_SET, &err); /* announce that we are ready */
  for(;;) { /* forever */
    while (LedFont_Text[0] == '\0') { /* no text */
      LedFont_Stop();
    }
    for(xStart=GDisp1_GetWidth()-1;;xStart--) {
      GDisp1_Clear();
      p = &LedFont_Text[0]; /* get character */
      x = xStart;
      while(*p != '\0') { /* go through the text */
        x += LedFont_PutChar(*p, x);
        p++; /* next character */
        x++; /* add a space between characters */
      }
      GDisp1_UpdateFull();
      if (x <= 0) { /* reached end of text to scroll: start over again */
        LedFont_Stop();
        break; /* start again */
      }
      (void)OSTimeDlyHMSM(0,0,0,60); /* delay specifies the scrolling speed */
      if (OSFlagQuery(LedFont_Flags, &err)&LEDFONT_FLAG_QUIT) { /* E8 pressed: quit */
        OSFlagPost(LedFont_Flags, LEDFONT_FLAG_QUIT, OS_FLAG_CLR, &err); /* clear flag */
        LedFont_Stop();
        break; /* start again */
      }
    } /* for */
  }
}
Example #2
0
void LedFont_ScrollText(char *text, bool scrollOnce, bool waitForFinish) {
  INT8U err;
  
  UTIL1_strcpy((uint8_t*)LedFont_Text, sizeof(LedFont_Text), (const unsigned char*)text);
  LedFont_ScrollOnce = scrollOnce;
  while (!(OSFlagQuery(LedFont_Flags, &err)&LEDFONT_FLAG_READY)) {
    (void)OSTimeDlyHMSM(0,0,0,100); /* wait task to be ready */
  }
  OSTaskResume(TASK_PRIO_SCROLLER);
  if (scrollOnce && waitForFinish) {
    while (!(OSFlagQuery(LedFont_Flags, &err)&LEDFONT_FLAG_FINISHED_SCROLLING)) {
      (void)OSTimeDlyHMSM(0,0,0,100); /* wait for scrolling to be finished */
    }
    OSFlagPost(LedFont_Flags, LEDFONT_FLAG_FINISHED_SCROLLING, OS_FLAG_CLR, &err); /* clear flag */
  }
}
/*FUNCTION**********************************************************************
 *
 * Function Name : OSA_EventGetFlags
 * Description   : Get event flags status.
 * Return current event flags.
 *
 *END**************************************************************************/
event_flags_t OSA_EventGetFlags(event_t *pEvent)
{
    INT8U err;
    return OSFlagQuery(pEvent->pGroup, &err);
}