///////////////////////////////////////////////////////////////////////////// // This hook is called after startup to initialize the application ///////////////////////////////////////////////////////////////////////////// void APP_Init(void) { int i; // create semaphores xMIDIINSemaphore = xSemaphoreCreateRecursiveMutex(); xMIDIOUTSemaphore = xSemaphoreCreateRecursiveMutex(); // clear SysEx buffers for(i=0; i<NUM_SYSEX_BUFFERS; ++i) sysex_buffer_len[i] = 0; // install SysEx callback MIOS32_MIDI_SysExCallback_Init(APP_SYSEX_Parser); // read EEPROM content PRESETS_Init(0); // init terminal TERMINAL_Init(0); // init MIDImon MIDIMON_Init(0); // start uIP task UIP_TASK_Init(0); // initialize status LED MIOS32_BOARD_LED_Init(0xffffffff); MIOS32_BOARD_LED_Set(1, 0); led_pwm_counter[0] = LED_PWM_PERIOD; led_trigger[0] = LED_PWM_PERIOD; // trigger LED on startup for complete PWM cycle // initialize additional LEDs connected to J5A for(i=1; i<NUM_LED_TRIGGERS; ++i) { led_pwm_counter[i] = LED_PWM_PERIOD; led_trigger[i] = LED_PWM_PERIOD; // trigger LED on startup for complete PWM cycle MIOS32_BOARD_J5_PinInit(i-1, MIOS32_BOARD_PIN_MODE_OUTPUT_PP); MIOS32_BOARD_J5_PinSet(i-1, 0); } // initialize J5B/J5C pins as inputs with pull-up enabled // these pins control diagnostic options of the MIDI monitor for(i=4; i<12; ++i) MIOS32_BOARD_J5_PinInit(i, MIOS32_BOARD_PIN_MODE_INPUT_PU); // install timer function which is called each 100 uS MIOS32_TIMER_Init(0, 100, APP_Periodic_100uS, MIOS32_IRQ_PRIO_MID); // print welcome message on MIOS terminal MIOS32_MIDI_SendDebugMessage("\n"); MIOS32_MIDI_SendDebugMessage("=====================\n"); MIOS32_MIDI_SendDebugMessage("%s\n", MIOS32_LCD_BOOT_MSG_LINE1); MIOS32_MIDI_SendDebugMessage("=====================\n"); MIOS32_MIDI_SendDebugMessage("\n"); }
///////////////////////////////////////////////////////////////////////////// // This hook is called after startup to initialize the application ///////////////////////////////////////////////////////////////////////////// extern "C" void APP_Init(void) { // initialize all LEDs MIOS32_BOARD_LED_Init(0xffffffff); // initialize AOUT driver AOUT_Init(0); // initialize SID module SID_Init(0); // start tasks (differs between MIOS32 and MacOS) TASKS_Init(0); // install MIDI Rx/Tx callback functions MIOS32_MIDI_DirectRxCallback_Init((void *)&NOTIFY_MIDI_Rx); MIOS32_MIDI_DirectTxCallback_Init((void *)&NOTIFY_MIDI_Tx); // install MIDI SysEx callback function MIOS32_MIDI_SysExCallback_Init((void *)&NOTIFY_MIDI_SysEx); // install timeout callback function MIOS32_MIDI_TimeOutCallback_Init((void *)&NOTIFY_MIDI_TimeOut); // init Stopwatch APP_StopwatchInit(); // init MBNet MBNET_Init(0); MBNET_NodeIDSet(0x10); // initialize MbSidEnvironment sid_se_speed_factor = 2; mbSidEnvironment.updateSpeedFactorSet(sid_se_speed_factor); // start timer // TODO: increase once performance has been evaluated MIOS32_TIMER_Init(2, 2000 / sid_se_speed_factor, (void *)&SID_TIMER_SE_Update, MIOS32_IRQ_PRIO_MID); }