コード例 #1
0
ファイル: mscommon_plugin.c プロジェクト: BMWPower/MegaTunix
/*!
  \brief initializes the MegaSquirt plugin via locating and attaching to all
  needed functions within the core MegaTunix. It also registers any 
  plugin specific enumerations, and registers/sets up any additional resources
  needed like threads, Queues, memory, etc
  \param data is a pointer to the global data container.
  */
G_MODULE_EXPORT void plugin_init(gconstpointer *data)
{
	global_data = data;
	*(void **)(&error_msg_f) = (void **)DATA_GET(global_data,"error_msg_f");
	g_assert(error_msg_f);
	*(void **)(&get_symbol_f) = (void **)DATA_GET(global_data,"get_symbol_f");
	g_assert(get_symbol_f);
	get_symbol_f("dbg_func",(void **)&dbg_func_f);
	ENTER();
	/* Initializes function pointers since on Winblows was can NOT
	   call functions within the program that loaded this DLL, so
	   we need to pass pointers over and assign them here.
	 */
	get_symbol_f("_get_sized_data",(void **)&_get_sized_data_f);
	get_symbol_f("_set_sized_data",(void **)&_set_sized_data_f);
	get_symbol_f("add_additional_rtt",(void **)&add_additional_rtt_f);
	get_symbol_f("alter_widget_state",(void **)&alter_widget_state_f);
	get_symbol_f("bind_to_lists",(void **)&bind_to_lists_f);
	get_symbol_f("c_to_k",(void **)&c_to_k_f);
	get_symbol_f("check_tab_existance",(void **)&check_tab_existance_f);
	get_symbol_f("cleanup",(void **)&cleanup_f);
	get_symbol_f("combo_set_labels",(void **)&combo_set_labels_f);
	get_symbol_f("combo_toggle_groups_linked",(void **)&combo_toggle_groups_linked_f);
	get_symbol_f("combo_toggle_labels_linked",(void **)&combo_toggle_labels_linked_f);
	get_symbol_f("convert_after_upload",(void **)&convert_after_upload_f);
	get_symbol_f("convert_before_download",(void **)&convert_before_download_f);
	get_symbol_f("create_rtv_value_change_watch",(void **)&create_rtv_value_change_watch_f);
	get_symbol_f("direct_lookup_data",(void **)&direct_lookup_data_f);
	get_symbol_f("direct_reverse_lookup",(void **)&direct_reverse_lookup_f);
	get_symbol_f("entry_changed_handler",(void **)&entry_changed_handler_f);
	get_symbol_f("evaluator_create_w",(void **)&evaluator_create_f);
	get_symbol_f("evaluator_destroy_w",(void **)&evaluator_destroy_f);
	get_symbol_f("evaluator_evaluate_x_w",(void **)&evaluator_evaluate_x_f);
	get_symbol_f("f_to_k",(void **)&f_to_k_f);
	get_symbol_f("flush_serial",(void **)&flush_serial_f);
	get_symbol_f("focus_out_handler",(void **)&focus_out_handler_f);
	get_symbol_f("get_bitshift",(void **)&get_bitshift_f);
	get_symbol_f("get_choice_count",(void **)&get_choice_count_f);
	get_symbol_f("get_colors_from_hue",(void **)&get_colors_from_hue_f);
	get_symbol_f("get_extreme_from_size",(void **)&get_extreme_from_size_f);
	get_symbol_f("get_file_api",(void **)&get_file_api_f);
	get_symbol_f("get_list",(void **)&get_list_f);
	get_symbol_f("get_multiplier",(void **)&get_multiplier_f);
	get_symbol_f("get_table",(void **)&get_table_f);
	get_symbol_f("io_cmd",(void **)&io_cmd_f);
	get_symbol_f("initialize_outputdata",(void **)&initialize_outputdata_f);
	get_symbol_f("jump_to_tab",(void **)&jump_to_tab_f);
	get_symbol_f("key_event",(void **)&key_event_f);
	get_symbol_f("lookup_current_value",(void **)&lookup_current_value_f);
	get_symbol_f("lookup_data",(void **)&lookup_data_f);
	get_symbol_f("lookup_precision",(void **)&lookup_precision_f);
	get_symbol_f("lookup_widget",(void **)&lookup_widget_f);
	get_symbol_f("mem_alloc",(void **)&mem_alloc_f);
	get_symbol_f("parse_keys",(void **)&parse_keys_f);
	get_symbol_f("process_rt_vars",(void **)&process_rt_vars_f);
	get_symbol_f("queue_function",(void **)&queue_function_f);
	get_symbol_f("read_data",(void **)&read_data_f);
	get_symbol_f("read_wrapper",(void **)&read_wrapper_f);
	get_symbol_f("recalc_table_limits",(void **)&recalc_table_limits_f);
	get_symbol_f("register_widget",(void **)&register_widget_f);
	get_symbol_f("remove_rtv_watch",(void **)&remove_rtv_watch_f);
	get_symbol_f("remove_from_lists",(void **)&remove_from_lists_f);
	get_symbol_f("reverse_lookup",(void **)&reverse_lookup_f);
	get_symbol_f("search_model",(void **)&search_model_f);
	get_symbol_f("set_file_api",(void **)&set_file_api_f);
	get_symbol_f("table_color_refresh_wrapper",(void **)&table_color_refresh_wrapper_f);
	get_symbol_f("thread_set_group_color",(void **)&thread_set_group_color_f);
	get_symbol_f("set_reqfuel_color",(void **)&set_reqfuel_color_f);
	get_symbol_f("set_title",(void **)&set_title_f);
	get_symbol_f("set_widget_labels",(void **)&set_widget_labels_f);
	get_symbol_f("set_widget_sensitive",(void **)&set_widget_sensitive_f);
	get_symbol_f("spin_button_handler",(void **)&spin_button_handler_f);
	get_symbol_f("start_restore_monitor",(void **)&start_restore_monitor_f);
	get_symbol_f("start_tickler",(void **)&start_tickler_f);
	get_symbol_f("std_entry_handler",(void **)&std_entry_handler_f);
	get_symbol_f("stop_tickler",(void **)&stop_tickler_f);
	get_symbol_f("swap_labels",(void **)&swap_labels_f);
	get_symbol_f("temp_to_ecu",(void **)&temp_to_ecu_f);
	get_symbol_f("temp_to_host",(void **)&temp_to_host_f);
	get_symbol_f("thread_refresh_widget",(void **)&thread_refresh_widget_f);
	get_symbol_f("thread_refresh_widget_range",(void **)&thread_refresh_widget_range_f);
	get_symbol_f("thread_refresh_widgets_at_offset",(void **)&thread_refresh_widgets_at_offset_f);
	get_symbol_f("thread_update_logbar",(void **)&thread_update_logbar_f);
	get_symbol_f("thread_update_widget",(void **)&thread_update_widget_f);
	get_symbol_f("thread_widget_set_sensitive",(void **)&thread_widget_set_sensitive_f);
	get_symbol_f("translate_string",(void **)&translate_string_f);
	get_symbol_f("update_current_notebook_page",(void **)&update_current_notebook_page_f);
	get_symbol_f("update_entry_color",(void **)&update_entry_color_f);
	get_symbol_f("update_logbar",(void **)&update_logbar_f);
	get_symbol_f("update_ve3d_if_necessary",(void **)&update_ve3d_if_necessary_f);
	get_symbol_f("warn_user",(void **)&warn_user_f);
	get_symbol_f("write_wrapper",(void **)&write_wrapper_f);

	register_common_enums();
	EXIT();
	return;
}
コード例 #2
0
ファイル: freeems_plugin.c プロジェクト: seank/MegaTunix
G_MODULE_EXPORT void plugin_init(gconstpointer *data)
{
    GAsyncQueue *queue = NULL;
    GCond *cond = NULL;
    GThread *thread = NULL;
    GMutex *mutex = NULL;
    GHashTable *hash = NULL;

    global_data = data;
    /* Initializes function pointers since on Winblows was can NOT
       call functions within the program that loaded this DLL, so
       we need to pass pointers over and assign them here.
     */
    error_msg_f = (void *)DATA_GET(global_data,"error_msg_f");
    g_assert(error_msg_f);
    get_symbol_f = (void *)DATA_GET(global_data,"get_symbol_f");
    g_assert(get_symbol_f);
    get_symbol_f("_get_sized_data",(void *)&_get_sized_data_f);
    get_symbol_f("_set_sized_data",(void *)&_set_sized_data_f);
    get_symbol_f("check_tab_existance",(void *)&check_tab_existance_f);
    get_symbol_f("cleanup",(void *)&cleanup_f);
    get_symbol_f("combo_set_labels",(void *)&combo_set_labels_f);
    get_symbol_f("combo_toggle_groups_linked",(void *)&combo_toggle_groups_linked_f);
    get_symbol_f("combo_toggle_labels_linked",(void *)&combo_toggle_labels_linked_f);
    get_symbol_f("convert_after_upload",(void *)&convert_after_upload_f);
    get_symbol_f("convert_before_download",(void *)&convert_before_download_f);
    get_symbol_f("dbg_func",(void *)&dbg_func_f);
    get_symbol_f("dump_output",(void *)&dump_output_f);
    get_symbol_f("evaluator_create",(void *)&evaluator_create_f);
    get_symbol_f("evaluator_destroy",(void *)&evaluator_destroy_f);
    get_symbol_f("evaluator_evaluate_x",(void *)&evaluator_evaluate_x_f);
    get_symbol_f("flush_binary_logs",(void *)&flush_binary_logs_f);
    get_symbol_f("flush_serial",(void *)&flush_serial_f);
    get_symbol_f("get_colors_from_hue",(void *)&get_colors_from_hue_f);
    get_symbol_f("get_file_api",(void *)&get_file_api_f);
    get_symbol_f("get_list",(void *)&get_list_f);
    get_symbol_f("get_multiplier",(void *)&get_multiplier_f);
    get_symbol_f("lookup_current_value",(void *)&lookup_current_value_f);
    get_symbol_f("lookup_widget",(void *)&lookup_widget_f);
    get_symbol_f("io_cmd",(void *)&io_cmd_f);
    get_symbol_f("initialize_outputdata",(void *)&initialize_outputdata_f);
    get_symbol_f("jump_to_tab",(void *)&jump_to_tab_f);
    get_symbol_f("log_inbound_data",(void *)&log_inbound_data_f);
    get_symbol_f("log_outbound_data",(void *)&log_outbound_data_f);
    get_symbol_f("mem_alloc",(void *)&mem_alloc_f);
    get_symbol_f("parse_keys",(void *)&parse_keys_f);
    get_symbol_f("queue_function",(void *)&queue_function_f);
    get_symbol_f("process_rt_vars",(void *)&process_rt_vars_f);
    get_symbol_f("read_data",(void *)&read_data_f);
    get_symbol_f("read_wrapper",(void *)&read_wrapper_f);
    get_symbol_f("recalc_table_limits",(void *)&recalc_table_limits_f);
    get_symbol_f("set_file_api",(void *)&set_file_api_f);
    get_symbol_f("set_group_color",(void *)&set_group_color_f);
    get_symbol_f("set_widget_labels",(void *)&set_widget_labels_f);
    get_symbol_f("set_widget_sensitive",(void *)&set_widget_sensitive_f);
    get_symbol_f("set_title",(void *)&set_title_f);
    get_symbol_f("swap_labels",(void *)&swap_labels_f);
    get_symbol_f("temp_to_ecu",(void *)&temp_to_ecu_f);
    get_symbol_f("temp_to_host",(void *)&temp_to_host_f);
    get_symbol_f("toggle_groups_linked",(void *)&toggle_groups_linked_f);

    get_symbol_f("thread_refresh_widget_range",(void *)&thread_refresh_widget_range_f);
    get_symbol_f("thread_refresh_widgets_at_offset",(void *)&thread_refresh_widgets_at_offset_f);
    get_symbol_f("thread_update_logbar",(void *)&thread_update_logbar_f);
    get_symbol_f("thread_update_widget",(void *)&thread_update_widget_f);
    get_symbol_f("thread_widget_set_sensitive",(void *)&thread_widget_set_sensitive_f);
    get_symbol_f("translate_string",(void *)&translate_string_f);
    get_symbol_f("update_logbar",(void *)&update_logbar_f);
    get_symbol_f("warn_user",(void *)&warn_user_f);
    get_symbol_f("write_wrapper",(void *)&write_wrapper_f);

    register_common_enums();

    /* Packet handling queue */
    cond = g_cond_new();
    DATA_SET(global_data,"serial_reader_cond",cond);
    cond = g_cond_new();
    DATA_SET(global_data,"packet_handler_cond",cond);
    /* Packet subscribers */
    hash =  g_hash_table_new(g_direct_hash,g_direct_equal);
    DATA_SET(global_data,"sequence_num_queue_hash",hash);
    hash = g_hash_table_new(g_direct_hash,g_direct_equal);
    DATA_SET(global_data,"payload_id_queue_hash",hash);
    mutex = g_mutex_new();
    DATA_SET(global_data,"queue_mutex",mutex);
    queue = g_async_queue_new();
    DATA_SET(global_data,"packet_queue",queue);
    queue = g_async_queue_new();
    register_packet_queue(PAYLOAD_ID,queue,RESPONSE_UPDATE_BLOCK_IN_RAM);
    DATA_SET(global_data,"RAM_write_queue",queue);
    queue = g_async_queue_new();
    register_packet_queue(PAYLOAD_ID,queue,RESPONSE_REPLACE_BLOCK_IN_FLASH);
    DATA_SET(global_data,"FLASH_write_queue",queue);
    queue = g_async_queue_new();
    register_packet_queue(PAYLOAD_ID,queue,RESPONSE_BURN_BLOCK_FROM_RAM_TO_FLASH);
    DATA_SET(global_data,"burn_queue",queue);
    thread = g_thread_create(packet_handler,NULL,TRUE,NULL);
    DATA_SET(global_data,"packet_handler_thread",thread);
    return;
}