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); } } } }
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; }
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); } }