コード例 #1
0
ファイル: flash_bios_obj.c プロジェクト: SteveLinCH/skeleton
static gboolean
on_update(Flash *flash,
		GDBusMethodInvocation *invocation,
		gchar* write_file,
		gpointer user_data)
{
	int rc = 0;
	SharedResource *lock = object_get_shared_resource((Object*)user_data);
	gboolean locked = shared_resource_get_lock(lock);
	flash_set_status(flash,"Flashing");
	flash_complete_update(flash,invocation);
	if(locked)
	{
		const gchar* name = shared_resource_get_name(lock);
		printf("BIOS Flash is locked: %s\n",name);
	}
	else
	{
		printf("Flashing BIOS from: %s\n",write_file);
		flash_set_status(flash, "Flashing");
		shared_resource_set_lock(lock,true);
		shared_resource_set_name(lock,dbus_object_path);
		flash_set_filename(flash,write_file);
		const gchar* obj_path = g_dbus_object_get_object_path((GDBusObject*)user_data);
		rc = update(flash,obj_path);
		if(!rc)
		{
			shared_resource_set_lock(lock,false);
			shared_resource_set_name(lock,"");
		}
	}
	return TRUE;
}
コード例 #2
0
ファイル: flash_bios_obj.c プロジェクト: agangidi/skeleton
static void
on_download_error (GDBusConnection* connection,
               const gchar* sender_name,
               const gchar* object_path,
               const gchar* interface_name,
               const gchar* signal_name,
               GVariant* parameters,
               gpointer user_data) 
{
	Flash *flash = object_get_flash((Object*)user_data);
	SharedResource *lock = object_get_shared_resource((Object*)user_data);
	printf("ERROR: FlashBios:  Download error; clearing flash lock\n");
	shared_resource_set_lock(lock,false);
	shared_resource_set_name(lock,"");
}
コード例 #3
0
ファイル: flash_bios_obj.c プロジェクト: SteveLinCH/skeleton
static gboolean
on_error(Flash *flash,
		GDBusMethodInvocation *invocation,
		gchar* error_msg,
		gpointer user_data)
{
	SharedResource *lock = object_get_shared_resource((Object*)user_data);
	shared_resource_get_lock(lock);
	flash_set_status(flash, error_msg);
	flash_complete_error(flash,invocation);
	printf("ERROR: %s.  Clearing locks\n",error_msg);
	shared_resource_set_lock(lock,false);
	shared_resource_set_name(lock,"");

	return TRUE;
}
コード例 #4
0
ファイル: flash_bios_obj.c プロジェクト: agangidi/skeleton
static void
on_flash_done (GDBusConnection* connection,
               const gchar* sender_name,
               const gchar* object_path,
               const gchar* interface_name,
               const gchar* signal_name,
               GVariant* parameters,
               gpointer user_data) 
{
	Flash *flash = object_get_flash((Object*)user_data);
	SharedResource *lock = object_get_shared_resource((Object*)user_data);
	printf("Flash succeeded; unlocking flash\n");
	shared_resource_set_lock(lock,false);
	shared_resource_set_name(lock,"");
	flash_set_status(flash,"Flash Done");
}
コード例 #5
0
ファイル: flash_bios_obj.c プロジェクト: SteveLinCH/skeleton
static void
on_flash_progress(GDBusConnection* connection,
		const gchar* sender_name,
		const gchar* object_path,
		const gchar* interface_name,
		const gchar* signal_name,
		GVariant* parameters,
		gpointer user_data)
{
	Flash *flash = object_get_flash((Object*)user_data);
	object_get_shared_resource((Object*)user_data);
	GVariantIter *iter = g_variant_iter_new(parameters);
	g_variant_iter_next_value(iter);
	GVariant* v_progress = g_variant_iter_next_value(iter);

	uint8_t progress = g_variant_get_byte(v_progress);

	gchar *s;
	s = g_strdup_printf("Flashing: %d%%",progress);
	flash_set_status(flash,s);
	g_free(s);
}
コード例 #6
0
ファイル: flash_bios_obj.c プロジェクト: SteveLinCH/skeleton
static gboolean
on_done(Flash *flash,
		GDBusMethodInvocation *invocation,
		gpointer user_data)
{
	int rc = 0;
	SharedResource *lock = object_get_shared_resource((Object*)user_data);
	shared_resource_get_lock(lock);
	flash_set_status(flash, "Flash Done");
	flash_complete_done(flash,invocation);
	printf("Flash Done. Clearing locks\n");
	shared_resource_set_lock(lock,false);
	shared_resource_set_name(lock,"");
	const gchar* filename = flash_get_filename(flash);
	rc = unlink(filename);
	if(rc != 0 )
	{
		printf("ERROR: Unable to delete file %s (%d)\n",filename,rc);
	}

	return TRUE;
}
コード例 #7
0
ファイル: flash_bios_obj.c プロジェクト: SteveLinCH/skeleton
static gboolean
on_update_via_tftp(Flash *flash,
		GDBusMethodInvocation *invocation,
		gchar* url,
		gchar* write_file,
		gpointer user_data)
{
	SharedResource *lock = object_get_shared_resource((Object*)user_data);
	gboolean locked = shared_resource_get_lock(lock);
	flash_complete_update_via_tftp(flash,invocation);
	if(locked)
	{
		const gchar* name = shared_resource_get_name(lock);
		printf("BIOS Flash is locked: %s\n",name);
	}
	else
	{
		printf("Flashing BIOS from TFTP: %s,%s\n",url,write_file);
		flash_set_filename(flash,write_file);
		flash_emit_download(flash,url,write_file);
		flash_set_status(flash,"Downloading");
	}
	return TRUE;
}