func_error_t plugin_manager_rescan (plugin_manager_t *plugin_manager_) { func_error_t err_code; inf_dbg_message ("Scanning all paths for plugins"); // clear previous buffer, if any; reset the states size_t prev_alloc = plugin_manager_->acm_sign.allocated / 2; size_t prev_step = prev_alloc / 2; if ( prev_alloc < 1024 ) prev_alloc = 1024; if ( prev_step < 1024*16 ) prev_step = 1024*16; accumulator_end (&plugin_manager_->acm_sign); accumulator_init (&plugin_manager_->acm_sign, prev_alloc ); plugin_manager_->acm_sign.step = prev_step; plugin_manager_->first_sign = ACCUMULATOR_BAD_OFFSET; plugin_manager_->sign_count = 0; // remove association for loaded plug-ins plugin_manager_foreach_plugin( plugin_manager_, plugin_manager_rem_assoc_plugin, NULL); // scan standard paths err_code = plugin_manager_scan_standard_path ( plugin_manager_, PMSTD_PROGPATH, "/plugins", sizeof("/plugins") ); char * env_path = getenv ("AITOWN_PLUGIN_DIR"); if ( env_path != NULL ) { err_code = plugin_manager_scan_a_path ( env_path, plugin_manager_); } err_code = plugin_manager_scan_standard_path ( plugin_manager_, PMSTD_HOME, "/.aitown/plugins", sizeof("/.aitown/plugins") ); err_code = plugin_manager_scan_standard_path ( plugin_manager_, PMSTD_UNIXROOT, "/usr/lib/aitown/plugins", sizeof("/usr/lib/aitown/plugins") ); err_code = plugin_manager_scan_a_path ( "/usr/lib/aitown/plugins", plugin_manager_); err_code = plugin_manager_scan_standard_path ( plugin_manager_, PMSTD_UNIXROOT, "/lib/aitown/plugins", sizeof("/lib/aitown/plugins") ); err_code = plugin_manager_scan_a_path ( "/lib/aitown/plugins", plugin_manager_); // scan custom paths err_code = linked_list_str_foreach ( plugin_manager_->user_paths_first, plugin_manager_scan_a_path, plugin_manager_); return err_code; }
void init_devices( void ) { // set the Arduino's PWM timers to 3.921 KHz, above the acoustic range TCCR3B = (TCCR3B & 0xF8) | 0x02; // pins 2,3,5 | timer 3 TCCR4B = (TCCR4B & 0xF8) | 0x02; // pins 6,7,8 | timer 4 accumulator_init( ); master_cylinder_init( ); brake_init( ); accumulator_turn_pump_off( ); master_cylinder_open( ); set_release_solenoid_duty_cycle( SOLENOID_PWM_OFF ); set_accumulator_solenoid_duty_cycle( SOLENOID_PWM_OFF ); }