예제 #1
0
static void MidiPlayTask(void *pvParameters) {
  uint32_t flags;
  BaseType_t res;

  FLOPPY_InitDrives(); /* init */
  for(;;) {
    res = xTaskNotifyWait((uint32_t)(-1), (uint32_t)(-1), &flags, portMAX_DELAY); /* check flags */
    if (res==pdPASS && (flags&MIDI_SONG_START)) {
      FLOPPY_InitDrives();
      if (flags&MIDI_SONG_GET_READY) {
        MM_Play(MIDI_SONG_GET_READY);
      } else if (flags&MIDI_SONG_PIRATES_OF_CARIBIAN) {
        MM_Play(MIDI_SONG_PIRATES_OF_CARIBIAN);
      } else if (flags&MIDI_SONG_HADDAWAY_WHAT_IS_LOVE) {
        MM_Play(MIDI_SONG_HADDAWAY_WHAT_IS_LOVE);
      } else if (flags&MIDI_SONG_GAME_OF_THRONES) {
        MM_Play(MIDI_SONG_GAME_OF_THRONES);
      } else if (flags&MIDI_SONG_TETRIS) {
        MM_Play(MIDI_SONG_TETRIS);
      } else if (flags&MIDI_SONG_AXEL_F) {
        MM_Play(MIDI_SONG_AXEL_F);
      } else if (flags&MIDI_SONG_GHOSTBUSTERS) {
        MM_Play(MIDI_SONG_GHOSTBUSTERS);
      } else if (flags&MIDI_SONG_JAMES_BOND) {
        MM_Play(MIDI_SONG_JAMES_BOND);
      }
    }
  }
}
예제 #2
0
uint8_t MM_ParseCommand(const unsigned char *cmd, bool *handled, const CLS1_StdIOType *io) {
  const uint8_t *p;
  uint8_t res;
  int32_t tmp;

  if (UTIL1_strcmp((char*)cmd, CLS1_CMD_HELP)==0 || UTIL1_strcmp((char*)cmd, "midi help")==0) {
     CLS1_SendHelpStr((unsigned char*)"midi", (const unsigned char*)"Group of midi commands\r\n", io->stdOut);
     CLS1_SendHelpStr((unsigned char*)"  help|status", (unsigned char*)"Print help or status information\r\n", io->stdOut);
     CLS1_SendHelpStr((unsigned char*)"  play <number>", (const unsigned char*)"Play midi song (0, 1)\r\n", io->stdOut);
     *handled = TRUE;
     return ERR_OK;
   } else if ((UTIL1_strcmp((char*)cmd, CLS1_CMD_STATUS)==0) || (UTIL1_strcmp((char*)cmd, "midi status")==0)) {
     *handled = TRUE;
     return PrintStatus(io);
   } else if (UTIL1_strncmp((char*)cmd, "midi play", sizeof("midi play")-1)==0) {
     p = cmd+sizeof("midi play")-1;
     res = UTIL1_xatoi(&p, &tmp);
     if (res==ERR_OK && tmp>=0) {
       *handled = TRUE;
       if (tmp==0) {
         MM_Play();
       } else if (tmp==1) {
         MM_PlayPirate();
       }
     }
     return res;
   }
  return ERR_OK;
}
예제 #3
0
static portTASK_FUNCTION(PongTask, pvParameters) {
  (void)pvParameters; /* parameter not used */
  FRTOS1_vTaskDelay(1000/portTICK_RATE_MS); /* wait some time to mount sd card */
  PONG_gameState = PONG_GAME_STATE_INIT;
#if PL_HAS_MIDI
  VS1_LoadRealtimeMidiPlugin();
  //PlayMIDI();
  MM_Play();
#endif
  for(;;) {
#if PL_HAS_KEYS
    KEY1_ScanKeys();
#endif
    PONG_RunMachine();
    FRTOS1_vTaskDelay(5/portTICK_RATE_MS);
  }
}