// function keys void handle_key_0(s32 val) { // load module if(val == 0) { return; } if(check_key(0)) { notify("loading..."); // don't do this! let it break? // net_clear_user_ops(); // disconnect parameters though net_disconnect_params(); files_load_dsp(*pageSelect); bfin_wait_ready(); scene_query_module(); net_report_params(); bfin_enable(); redraw_ins(); redraw_dsp(); notify("finished loading."); } show_foot(); }
void handle_key_2(s32 val) { if(check_key(2)) { bfin_disable(); net_report_params(); bfin_enable(); } }
// function keys void handle_key_0(s32 val) { // load module if(val == 0) { return; } if(check_key(0)) { region_fill(headRegion, 0x0); font_string_region_clip(headRegion, "loading DSP module...", 0, 0, 0xa, 0); headRegion->dirty = 1; render_update(); net_clear_user_ops(); files_load_dsp(*pageSelect); bfin_wait_ready(); net_report_params(); bfin_enable(); // render status to head region region_fill(headRegion, 0x0); font_string_region_clip(headRegion, "finished loading.", 0, 0, 0xa, 0); headRegion->dirty = 1; render_update(); } show_foot(); }
// this is called from main event handler u8 app_launch(u8 firstrun) { print_dbg("\r\n launching app with firstrun: "); print_dbg_ulong(firstrun); // net_print(); render_boot("BEES"); render_boot(versionString); if(firstrun) { render_boot("launching app, first run"); print_dbg("\r\n first run, writing nonvolatile data..."); ///... write param scaler data // this is done at firstrun instead of being linked statically, // so that users can tune scaler data offline without recompiling render_boot("init param scaling data..."); flash_init_scaler_data(); print_dbg("\r\n first run, try and load default DSP"); render_boot("launching default DSP..."); files_load_dsp_name("aleph-waves.ldr"); render_boot("waiting for DSP init..."); bfin_wait_ready(); // print_dbg(" requesting param report..."); render_boot("requesting DSP params"); net_report_params(); // print_dbg("\r\n enable DSP audio..."); render_boot("enabling audio"); bfin_enable(); render_boot("writing default dsp to flash..."); // files_store_default_dsp_name("aleph-waves.ldr"); } else { app_pause(); print_dbg("\r\n booting default ldr from flash... "); render_boot("booting DSP from flash"); // flash_read_ldr(); bfin_load_buf(); print_dbg("\r\n DSP booted, waiting to query params..."); render_boot("waiting for DSP init..."); /// blackfin should clear ready pin ASAP on boot. /// but give it a moment to accomplish that. delay_ms(2); bfin_wait_ready(); print_dbg(" requesting param report..."); render_boot("requesting DSP params"); net_report_params(); print_dbg("\r\n enable DSP audio..."); render_boot("enabling audio"); bfin_enable(); print_dbg("\r\n reading default scene... "); render_boot("reading default scene"); scene_read_default(); app_resume(); } // init pages (fill graphics buffers) print_dbg("\r\n pages_init..."); pages_init(); print_dbg("\r\n play_init..."); play_init(); // enable timers print_dbg("\r\n enable app timers..."); render_boot("enabling app timers..."); init_app_timers(); // pull up power control pin, enabling soft-powerdown gpio_set_gpio_pin(POWER_CTL_PIN); // assign app event handlers print_dbg("\r\n assigning handlers "); render_boot("assigning UI handlers..."); assign_bees_event_handlers(); // update page rendering and handlers pages_reselect(); // start in play mode pages_toggle_play(); return 1; }
// set current state of system from global RAM buffer void scene_read_buf(void) { s8 modName[MODULE_NAME_LEN]; const u8* src = (u8*)&(sceneData->pickle); /// FIXME: we really should be using this comparison // s8 neq = 0; // u32 i; app_pause(); // store current mod name in scene desc memcpy(modName, sceneData->desc.moduleName, MODULE_NAME_LEN); ///// always load: print_dbg("\r\n loading module name: "); print_dbg(sceneData->desc.moduleName); files_load_dsp_name(sceneData->desc.moduleName); // } bfin_wait_ready(); net_clear_user_ops(); net_report_params(); // unpickle network print_dbg("\r\n unpickling network for scene recall..."); src = net_unpickle(src); // unpickle presets print_dbg("\r\n unpickling presets for scene recall..."); src = presets_unpickle(src); print_dbg("\r\n copied stored network and presets to RAM "); /* for(i=0; i<net->numParams; i++) { */ /* print_dbg("\r\n param "); */ /* print_dbg_ulong(i); */ /* print_dbg(" : "); */ /* print_dbg(net->params[i].desc.label); */ /* print_dbg(" ; val "); */ /* print_dbg_hex((u32)net->params[i].data.value); */ /* } */ // compare module name //// is strncmp f*****g with us?? /// neq = strncmp((const char*)modName, (const char*)sceneData->desc.moduleName, MODULE_NAME_LEN); // if(neq) { // load bfin module if it doesn't match the current scene desc //... bfin_wait_ready(); //// well let's try it, actually that would explain some things.. // delay_ms(10); // update bfin parameters net_send_params(); print_dbg("\r\n sent new params"); delay_ms(5); // enable audio processing bfin_enable(); app_resume(); }