Example #1
0
static void Play(MIDI_MusicTrack *tracks, unsigned int nofTracks) {
  int itemNo;
  uint8_t channel;
  uint32_t currTimeMs;
  TickType_t startTicks;
  unsigned int nofFinished;

  /* init defaults */
  for(channel=0;channel<nofTracks;channel++) {
    VS1_MIDI_SetBank(channel, 0);
    VS1_MIDI_SetInstrument(channel, VS1_MIDI_INSTR_Default);
    VS1_MIDI_SetVolume(channel, 127);
  }
  startTicks = FRTOS1_xTaskGetTickCount();
  itemNo = 0;
  for(;;) { /* breaks */
    currTimeMs = (FRTOS1_xTaskGetTickCount()-startTicks)/portTICK_RATE_MS;
#if 0
    if (currTimeMs>15000) {
      break;
    }
#endif
    nofFinished = 0;
    for(channel=0;channel<nofTracks;channel++) {
      if (!PlayTrackItem(&tracks[channel], currTimeMs, channel)) {
        nofFinished++;
      }
    }
    if (nofFinished==nofTracks) { /* all finished */
      break;
    }
    FRTOS1_vTaskDelay(1/portTICK_RATE_MS);
    itemNo++;
  }
}
Example #2
0
File: Snake.c Project: sisem/intro
static int random(int min, int max) {
  TickType_t cnt;
  
  cnt = FRTOS1_xTaskGetTickCount();
  cnt &= 0xff; /* reduce to 8 bits */
  if (max>64) {
    cnt >>= 1;
  } else {
Example #3
0
static void RadioPowerUp(void) {
  /* need to ensure that we wait 100 ms after power-on of the transceiver */
  portTickType xTime;
  
  xTime = FRTOS1_xTaskGetTickCount();
  if (xTime<(100/portTICK_PERIOD_MS)) {
    /* not powered for 100 ms: wait until we can access the radio transceiver */
    xTime = (100/portTICK_PERIOD_MS)-xTime; /* remaining ticks to wait */
    FRTOS1_vTaskDelay(xTime);
  }
  (void)RNET1_PowerUp();
}
Example #4
0
static void RadioPowerUp(void) {
  /* need to ensure that we wait at least 100 ms (I use 150 ms here) after power-on of the transceiver */
  portTickType xTime;
  
  xTime = FRTOS1_xTaskGetTickCount();
  if (xTime<(150/portTICK_RATE_MS)) {
    /* not powered for 100 ms: wait until we can access the radio transceiver */
    xTime = (150/portTICK_RATE_MS)-xTime; /* remaining ticks to wait */
    FRTOS1_vTaskDelay(xTime);
  }
  (void)RADIO_PowerUp(); /* enable the transceiver */
}
Example #5
0
static void Play(MIDI_MusicTrack *tracks, unsigned int nofTracks, uint32_t tempoUS) {
  int itemNo;
  uint8_t channel;
  uint32_t currTimeMs;
  TickType_t startTicks;
  unsigned int nofFinished;
  uint32_t flags;

  /* init defaults */
  for(channel=0;channel<nofTracks;channel++) {
    FLOPPY_MIDI_SetBank(channel, 0);
    FLOPPY_MIDI_SetInstrument(channel, 0);
    FLOPPY_MIDI_SetVolume(channel, 127);
  }
  startTicks = FRTOS1_xTaskGetTickCount();
  itemNo = 0;
  for(;;) { /* breaks */
    (void)xTaskNotifyWait(0UL, MIDI_SONG_STOP, &flags, 0); /* check flags */
    if (flags&MIDI_SONG_STOP) {
      CLS1_SendStr((uint8_t*)"Stopping song!\r\n", CLS1_GetStdio()->stdOut);
      for(channel=0;channel<nofTracks;channel++) {
        FLOPPY_MIDI_AllSoundOff(channel);
      }
      break;
    }
    currTimeMs = (FRTOS1_xTaskGetTickCount()-startTicks)/portTICK_RATE_MS;
    nofFinished = 0;
    for(channel=0;channel<nofTracks;channel++) {
      if (!PlayTrackItem(&tracks[channel], currTimeMs, channel, tempoUS)) {
        nofFinished++;
      }
    }
    if (nofFinished==nofTracks) { /* all finished */
      break;
    }
    FRTOS1_vTaskDelay(1/portTICK_RATE_MS);
    itemNo++;
  }
}
Example #6
0
static void PONG_CheckLimiterButtons(void) {
  bool gameOver = FALSE;
  TickType_t currTickCount;

  currTickCount = FRTOS1_xTaskGetTickCount();
  if (EVNT1_GetClearEvent(EVNT1_BTN_LEFT_PRESSED)) {
    PONG_LeftLimiter.pressedTickCounter = currTickCount;
    PONG_SetLimiter(&PONG_LeftLimiter);
  } else if (PONG_LeftLimiter.isOn && currTickCount>PONG_LeftLimiter.pressedTickCounter+(PONG_LeftLimiter.buttonTimeoutMs/portTICK_RATE_MS)) {
    PONG_ClearLimiter(&PONG_LeftLimiter);
  }
  if (EVNT1_GetClearEvent(EVNT1_BTN_RIGHT_PRESSED)) {
    PONG_RightLimiter.pressedTickCounter = currTickCount;
    PONG_SetLimiter(&PONG_RightLimiter);
  } else if (PONG_RightLimiter.isOn && currTickCount>PONG_RightLimiter.pressedTickCounter+(PONG_RightLimiter.buttonTimeoutMs/portTICK_RATE_MS)) {
    PONG_ClearLimiter(&PONG_RightLimiter);
  }
}
Example #7
0
static bool PONG_UpdateBalls(void) {
  TickType_t currTickCount;
  bool transferPixels = FALSE;
  int i;
  bool gameOver = FALSE;

  currTickCount = FRTOS1_xTaskGetTickCount();
  PONG_CheckLimiterButtons();
  for(i=0;i<PONG_NOF_BALLS;i++) {
    if (currTickCount>=PONG_Balls[i].drawTickCounter+PONG_Balls[i].speedMs/portTICK_RATE_MS) {
      if (PONG_UpdateBall(&PONG_Balls[i])) {
        gameOver = TRUE;
      }
      transferPixels = TRUE;
    }
  }
  if (transferPixels) {
    NEO_TransferPixels();
  }
  return gameOver;
}
Example #8
0
static void PONG_DrawBall(PONG_BallT *ball) {
  (void)NEO_SetPixelColor(ball->pos, ball->color);
  ball->drawTickCounter = FRTOS1_xTaskGetTickCount();
}