示例#1
0
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;
}
示例#2
0
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 );
}