зеркало из https://github.com/mono/hal-sharp.git
Version 0.2, HAL Callback/Event Support
svn path=/trunk/hal-sharp/; revision=47367
This commit is contained in:
Родитель
5b9337a20a
Коммит
15ca798e7f
|
@ -1,3 +1,12 @@
|
|||
2005-07-17 Aaron Bockover <aaron@aaronbock.net>
|
||||
|
||||
* HalTest.cs: GTK test for events using main context
|
||||
* HalContext.cs: Changed some constructors around, now defaults to
|
||||
DbusBusType.System, added event system for HAL callbacks
|
||||
* HalUnmanaged.cs: Added callback set signatures
|
||||
* HalCallbacks.cs: Contains all callback and event delegates, and
|
||||
event delegate args classes
|
||||
|
||||
2005-07-16 Aaron Bockover <aaron@aaronbock.net>
|
||||
|
||||
* hal-sharp: Version 0.1 Committed to Mono SVN
|
||||
|
|
|
@ -4,6 +4,6 @@ EXTRA_DIST = hal-sharp.pc.in hal-sharp.mds hal-sharp.mdp
|
|||
pkgconfigdir = $(libdir)/pkgconfig
|
||||
pkgconfig_DATA = hal-sharp.pc
|
||||
|
||||
DISTCLEANFILES = config.* configure INSTALL install-sh missing aclocal.m4 Makefile.in
|
||||
DISTCLEANFILES = config.* configure INSTALL install-sh missing aclocal.m4 Makefile.in *.pidb
|
||||
|
||||
|
||||
|
|
1
NEWS
1
NEWS
|
@ -1,2 +1,3 @@
|
|||
2005-07-17: hal-sharp 0.2 Committed to Mono SVN with HAL Callback Support
|
||||
2005-07-16: hal-sharp 0.1 Committed to Mono SVN
|
||||
|
||||
|
|
6
README
6
README
|
@ -1,7 +1,7 @@
|
|||
These bindings aren't complete, but for the most part are functional with
|
||||
the exception of callback support. Missing pieces are:
|
||||
These bindings aren't complete, but for the most part are functional.
|
||||
|
||||
Missing pieces are:
|
||||
|
||||
* Agent Support
|
||||
* PSI Support
|
||||
* Callback Support
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
AC_INIT(README)
|
||||
AC_CANONICAL_SYSTEM
|
||||
AM_INIT_AUTOMAKE(hal-sharp, 0.1)
|
||||
AM_INIT_AUTOMAKE(hal-sharp, 0.2)
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
AC_PROG_INSTALL
|
||||
|
|
|
@ -15,6 +15,8 @@
|
|||
</Configurations>
|
||||
<References>
|
||||
<ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />
|
||||
<ProjectReference type="Gac" localcopy="True" refto="gtk-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
|
||||
<ProjectReference type="Gac" localcopy="True" refto="glib-sharp, Version=2.0.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f" />
|
||||
</References>
|
||||
<DeploymentInformation strategy="File">
|
||||
<excludeFiles />
|
||||
|
@ -27,5 +29,6 @@
|
|||
<File name="./src/HalUnmanaged.cs" subtype="Code" buildaction="Compile" />
|
||||
<File name="./src/HalContext.cs" subtype="Code" buildaction="Compile" />
|
||||
<File name="./src/HalDefines.cs" subtype="Code" buildaction="Compile" />
|
||||
<File name="./src/HalCallbacks.cs" subtype="Code" buildaction="Compile" />
|
||||
</Contents>
|
||||
</Project>
|
|
@ -7,7 +7,7 @@
|
|||
<Entry build="True" name="hal-sharp" />
|
||||
</Configuration>
|
||||
</Configurations>
|
||||
<StartMode startupentry="Hal" single="True">
|
||||
<StartMode startupentry="hal-sharp" single="True">
|
||||
<Execute type="None" entry="hal-sharp" />
|
||||
</StartMode>
|
||||
<Entries>
|
||||
|
|
|
@ -0,0 +1,94 @@
|
|||
/***************************************************************************
|
||||
* HalCallbacks.cs
|
||||
*
|
||||
* Copyright (C) 2005 Novell
|
||||
* Written by Aaron Bockover (aaron@aaronbock.net)
|
||||
****************************************************************************/
|
||||
|
||||
/* THIS FILE IS LICENSED UNDER THE MIT LICENSE AS OUTLINED IMMEDIATELY BELOW:
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a
|
||||
* copy of this software and associated documentation files (the "Software"),
|
||||
* to deal in the Software without restriction, including without limitation
|
||||
* the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
||||
* and/or sell copies of the Software, and to permit persons to whom the
|
||||
* Software is furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in
|
||||
* all copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
* FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
* DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Hal
|
||||
{
|
||||
// Raw HAL Callbacks
|
||||
public delegate void DeviceAddedCallback(IntPtr ctx, IntPtr udi);
|
||||
public delegate void DeviceRemovedCallback(IntPtr ctx, IntPtr udi);
|
||||
public delegate void DeviceNewCapabilityCallback(IntPtr ctx, IntPtr udi,
|
||||
IntPtr capability);
|
||||
public delegate void DeviceLostCapabilityCallback(IntPtr ctx, IntPtr udi,
|
||||
IntPtr capability);
|
||||
public delegate void DevicePropertyModifiedCallback(IntPtr ctx, IntPtr udi,
|
||||
IntPtr key, bool is_removed, bool is_added);
|
||||
public delegate void DeviceConditionCallback(IntPtr ctx, IntPtr udi,
|
||||
IntPtr condition_name, IntPtr condition_details);
|
||||
|
||||
// Managed Event Handlers
|
||||
public delegate void DeviceAddedHandler(object o, DeviceAddedArgs args);
|
||||
public delegate void DeviceRemovedHandler(object o, DeviceRemovedArgs args);
|
||||
public delegate void DeviceNewCapabilityHandler(object o,
|
||||
DeviceNewCapabilityArgs args);
|
||||
public delegate void DeviceLostCapabilityHandler(object o,
|
||||
DeviceLostCapabilityArgs args);
|
||||
public delegate void DevicePropertyModifiedHandler(object o,
|
||||
DevicePropertyModifiedArgs args);
|
||||
public delegate void DeviceConditionHandler(object o,
|
||||
DeviceConditionArgs args);
|
||||
|
||||
public class DeviceAddedArgs : EventArgs
|
||||
{
|
||||
public Device Device;
|
||||
}
|
||||
|
||||
public class DeviceRemovedArgs : EventArgs
|
||||
{
|
||||
public Device Device;
|
||||
}
|
||||
|
||||
public class DeviceNewCapabilityArgs : EventArgs
|
||||
{
|
||||
public Device Device;
|
||||
public string Capability;
|
||||
}
|
||||
|
||||
public class DeviceLostCapabilityArgs : EventArgs
|
||||
{
|
||||
public Device Device;
|
||||
public string Capability;
|
||||
}
|
||||
|
||||
public class DevicePropertyModifiedArgs : EventArgs
|
||||
{
|
||||
public Device Device;
|
||||
public string Key;
|
||||
public bool IsRemoved;
|
||||
public bool IsAdded;
|
||||
}
|
||||
|
||||
public class DeviceConditionArgs : EventArgs
|
||||
{
|
||||
public Device Device;
|
||||
public string ConditionName;
|
||||
public string ConditionDetails;
|
||||
}
|
||||
}
|
|
@ -27,6 +27,7 @@
|
|||
*/
|
||||
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace Hal
|
||||
|
@ -36,17 +37,14 @@ namespace Hal
|
|||
private HandleRef ctx_handle;
|
||||
private IntPtr dbus_conn;
|
||||
private bool initialized;
|
||||
private bool mainLoopIntegrated;
|
||||
|
||||
public Context()
|
||||
public Context() : this(DbusBusType.System)
|
||||
{
|
||||
IntPtr ctx = Unmanaged.libhal_ctx_init_direct(IntPtr.Zero);
|
||||
if(ctx == IntPtr.Zero)
|
||||
throw new HalException("Could not create Direct HAL Context");
|
||||
|
||||
ctx_handle = new HandleRef(this, ctx);
|
||||
}
|
||||
|
||||
public Context(IntPtr dbus_conn)
|
||||
protected Context(IntPtr dbus_conn)
|
||||
{
|
||||
IntPtr ctx = Unmanaged.libhal_ctx_new();
|
||||
if(ctx == IntPtr.Zero)
|
||||
|
@ -59,7 +57,7 @@ namespace Hal
|
|||
public Context(DbusBusType type) :
|
||||
this(Unmanaged.dbus_bus_get(type, IntPtr.Zero))
|
||||
{
|
||||
|
||||
Initialize();
|
||||
}
|
||||
|
||||
public Context(DbusBusType type, bool initialize) : this(type)
|
||||
|
@ -99,6 +97,15 @@ namespace Hal
|
|||
return Unmanaged.libhal_ctx_free(ctx_handle);
|
||||
}
|
||||
|
||||
public void IntegrateMainLoop()
|
||||
{
|
||||
// would be nice to let user specify an optional GMainContext
|
||||
Unmanaged.dbus_connection_setup_with_g_main(dbus_conn,
|
||||
Unmanaged.g_main_context_default());
|
||||
|
||||
mainLoopIntegrated = true;
|
||||
}
|
||||
|
||||
public void Initialize()
|
||||
{
|
||||
if(!Unmanaged.libhal_ctx_init(ctx_handle, IntPtr.Zero))
|
||||
|
@ -111,8 +118,10 @@ namespace Hal
|
|||
{
|
||||
set {
|
||||
dbus_conn = value;
|
||||
if(!Unmanaged.libhal_ctx_set_dbus_connection(ctx_handle, dbus_conn))
|
||||
throw new HalException("Could not set D-Bus Connection for HAL");
|
||||
if(!Unmanaged.libhal_ctx_set_dbus_connection(ctx_handle,
|
||||
dbus_conn))
|
||||
throw new HalException(
|
||||
"Could not set D-Bus Connection for HAL");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -131,5 +140,228 @@ namespace Hal
|
|||
return ctx_handle;
|
||||
}
|
||||
}
|
||||
|
||||
// Events
|
||||
|
||||
private Hashtable EventTable = new Hashtable();
|
||||
|
||||
private bool AddEvent(Type evType, object ev)
|
||||
{
|
||||
if(EventTable[evType] == null)
|
||||
EventTable[evType] = new ArrayList();
|
||||
|
||||
(EventTable[evType] as ArrayList).Add(ev);
|
||||
|
||||
if(!mainLoopIntegrated)
|
||||
IntegrateMainLoop();
|
||||
|
||||
return (EventTable[evType] as ArrayList).Count == 1;
|
||||
}
|
||||
|
||||
private void RemoveEvent(Type evType, object ev)
|
||||
{
|
||||
if(EventTable[evType] == null)
|
||||
return;
|
||||
|
||||
(EventTable[evType] as ArrayList).Remove(ev);
|
||||
}
|
||||
|
||||
private ArrayList GetEvents(Type evType)
|
||||
{
|
||||
if(EventTable[evType] == null)
|
||||
return null;
|
||||
|
||||
return EventTable[evType] as ArrayList;
|
||||
}
|
||||
|
||||
public event DeviceAddedHandler DeviceAdded
|
||||
{
|
||||
add {
|
||||
if(AddEvent(typeof(DeviceAddedHandler), value))
|
||||
Unmanaged.libhal_ctx_set_device_added(ctx_handle,
|
||||
new DeviceAddedCallback(OnHalDeviceAdded));
|
||||
}
|
||||
|
||||
remove {
|
||||
RemoveEvent(typeof(DeviceAddedHandler), value);
|
||||
}
|
||||
}
|
||||
|
||||
public event DeviceRemovedHandler DeviceRemoved
|
||||
{
|
||||
add {
|
||||
if(AddEvent(typeof(DeviceRemovedHandler), value))
|
||||
Unmanaged.libhal_ctx_set_device_removed(ctx_handle,
|
||||
new DeviceRemovedCallback(OnHalDeviceRemoved));
|
||||
}
|
||||
|
||||
remove {
|
||||
RemoveEvent(typeof(DeviceRemovedHandler), value);
|
||||
}
|
||||
}
|
||||
|
||||
public event DeviceNewCapabilityHandler DeviceNewCapability
|
||||
{
|
||||
add {
|
||||
if(AddEvent(typeof(DeviceNewCapabilityHandler), value))
|
||||
Unmanaged.libhal_ctx_set_device_new_capability(ctx_handle,
|
||||
new DeviceNewCapabilityCallback(
|
||||
OnHalDeviceNewCapability));
|
||||
}
|
||||
|
||||
remove {
|
||||
RemoveEvent(typeof(DeviceNewCapabilityHandler), value);
|
||||
}
|
||||
}
|
||||
|
||||
public event DeviceLostCapabilityHandler DeviceLostCapability
|
||||
{
|
||||
add {
|
||||
if(AddEvent(typeof(DeviceLostCapabilityHandler), value))
|
||||
Unmanaged.libhal_ctx_set_device_lost_capability(ctx_handle,
|
||||
new DeviceLostCapabilityCallback(
|
||||
OnHalDeviceLostCapability));
|
||||
}
|
||||
|
||||
remove {
|
||||
RemoveEvent(typeof(DeviceLostCapabilityHandler), value);
|
||||
}
|
||||
}
|
||||
|
||||
public event DevicePropertyModifiedHandler DevicePropertyModified
|
||||
{
|
||||
add {
|
||||
if(AddEvent(typeof(DevicePropertyModifiedHandler), value))
|
||||
Unmanaged.libhal_ctx_set_device_property_modified(
|
||||
ctx_handle, new DevicePropertyModifiedCallback(
|
||||
OnHalDevicePropertyModified));
|
||||
}
|
||||
|
||||
remove {
|
||||
RemoveEvent(typeof(DevicePropertyModifiedHandler), value);
|
||||
}
|
||||
}
|
||||
|
||||
public event DeviceConditionHandler DeviceCondition
|
||||
{
|
||||
add {
|
||||
if(AddEvent(typeof(DeviceConditionHandler), value))
|
||||
Unmanaged.libhal_ctx_set_device_condition(ctx_handle,
|
||||
new DeviceConditionCallback(OnHalDeviceCondition));
|
||||
}
|
||||
|
||||
remove {
|
||||
RemoveEvent(typeof(DeviceConditionHandler), value);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnHalDeviceAdded(IntPtr ctx, IntPtr udiPtr)
|
||||
{
|
||||
foreach(DeviceAddedHandler addedHandler in
|
||||
GetEvents(typeof(DeviceAddedHandler))) {
|
||||
DeviceAddedHandler handler = addedHandler;
|
||||
|
||||
if(handler != null) {
|
||||
string udi = Marshal.PtrToStringAnsi(udiPtr);
|
||||
DeviceAddedArgs args = new DeviceAddedArgs();
|
||||
args.Device = new Device(this, udi);
|
||||
handler(this, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnHalDeviceRemoved(IntPtr ctx, IntPtr udiPtr)
|
||||
{
|
||||
foreach(DeviceRemovedHandler removedHandler in
|
||||
GetEvents(typeof(DeviceRemovedHandler))) {
|
||||
DeviceRemovedHandler handler = removedHandler;
|
||||
|
||||
if(handler != null) {
|
||||
string udi = Marshal.PtrToStringAnsi(udiPtr);
|
||||
DeviceRemovedArgs args = new DeviceRemovedArgs();
|
||||
args.Device = new Device(this, udi);
|
||||
handler(this, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnHalDeviceNewCapability(IntPtr ctx, IntPtr udiPtr,
|
||||
IntPtr capPtr)
|
||||
{
|
||||
foreach(DeviceNewCapabilityHandler newCapHandler in
|
||||
GetEvents(typeof(DeviceNewCapabilityHandler))) {
|
||||
DeviceNewCapabilityHandler handler = newCapHandler;
|
||||
|
||||
if(handler != null) {
|
||||
string udi = Marshal.PtrToStringAnsi(udiPtr);
|
||||
string cap = Marshal.PtrToStringAnsi(capPtr);
|
||||
DeviceNewCapabilityArgs args =
|
||||
new DeviceNewCapabilityArgs();
|
||||
args.Device = new Device(this, udi);
|
||||
args.Capability = cap;
|
||||
handler(this, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnHalDeviceLostCapability(IntPtr ctx, IntPtr udiPtr,
|
||||
IntPtr capPtr)
|
||||
{
|
||||
foreach(DeviceLostCapabilityHandler lostCapHandler in
|
||||
GetEvents(typeof(DeviceLostCapabilityHandler))) {
|
||||
DeviceLostCapabilityHandler handler = lostCapHandler;
|
||||
|
||||
if(handler != null) {
|
||||
string udi = Marshal.PtrToStringAnsi(udiPtr);
|
||||
string cap = Marshal.PtrToStringAnsi(capPtr);
|
||||
DeviceLostCapabilityArgs args =
|
||||
new DeviceLostCapabilityArgs();
|
||||
args.Device = new Device(this, udi);
|
||||
args.Capability = cap;
|
||||
handler(this, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnHalDevicePropertyModified(IntPtr ctx, IntPtr udiPtr,
|
||||
IntPtr keyPtr, bool isRemoved, bool isAdded)
|
||||
{
|
||||
foreach(DevicePropertyModifiedHandler propModHandler in
|
||||
GetEvents(typeof(DevicePropertyModifiedHandler))) {
|
||||
DevicePropertyModifiedHandler handler = propModHandler;
|
||||
|
||||
if(handler != null) {
|
||||
string udi = Marshal.PtrToStringAnsi(udiPtr);
|
||||
string key = Marshal.PtrToStringAnsi(keyPtr);
|
||||
DevicePropertyModifiedArgs args =
|
||||
new DevicePropertyModifiedArgs();
|
||||
args.Device = new Device(this, udi);
|
||||
args.Key = key;
|
||||
args.IsRemoved = isRemoved;
|
||||
args.IsAdded = isAdded;
|
||||
handler(this, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnHalDeviceCondition(IntPtr ctx, IntPtr udiPtr,
|
||||
IntPtr namePtr, IntPtr detailsPtr)
|
||||
{
|
||||
foreach(DeviceConditionHandler condHandler in
|
||||
GetEvents(typeof(DeviceConditionHandler))) {
|
||||
DeviceConditionHandler handler = condHandler;
|
||||
|
||||
if(handler != null) {
|
||||
string udi = Marshal.PtrToStringAnsi(udiPtr);
|
||||
string name = Marshal.PtrToStringAnsi(namePtr);
|
||||
string details = Marshal.PtrToStringAnsi(detailsPtr);
|
||||
DeviceConditionArgs args = new DeviceConditionArgs();
|
||||
args.Device = new Device(this, udi);
|
||||
args.ConditionName = name;
|
||||
args.ConditionDetails = details;
|
||||
handler(this, args);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,15 +28,20 @@
|
|||
|
||||
using System;
|
||||
using Hal;
|
||||
using Gtk;
|
||||
|
||||
public class Entry
|
||||
{
|
||||
public static void Main()
|
||||
{
|
||||
Context ctx = new Context(DbusBusType.System, true);
|
||||
Application.Init();
|
||||
new GtkTest();
|
||||
Application.Run();
|
||||
|
||||
foreach(Device device in Device.FindByCapability(ctx, "net"))
|
||||
device.Print();
|
||||
/* Context ctx = new Context(); */
|
||||
|
||||
/*foreach(Device device in Device.FindByCapability(ctx, "net"))
|
||||
device.Print();*/
|
||||
|
||||
/*foreach(Device device in Device.GetAll(ctx))
|
||||
device.Print();*/
|
||||
|
@ -50,3 +55,65 @@ public class Entry
|
|||
Console.WriteLine(cap);*/
|
||||
}
|
||||
}
|
||||
|
||||
public class GtkTest
|
||||
{
|
||||
private Window win;
|
||||
private Context ctx;
|
||||
|
||||
public GtkTest()
|
||||
{
|
||||
ctx = new Context();
|
||||
ctx.DeviceAdded += OnHalDeviceAdded;
|
||||
ctx.DeviceRemoved += OnHalDeviceRemoved;
|
||||
ctx.DeviceCondition += OnHalDeviceCondition;
|
||||
ctx.DeviceLostCapability += OnHalDeviceLostCapability;
|
||||
ctx.DeviceNewCapability += OnHalDeviceNewCapability;
|
||||
ctx.DevicePropertyModified += OnHalDevicePropertyModified;
|
||||
|
||||
win = new Window("HAL Event Loop Test");
|
||||
win.DeleteEvent += OnWindowDeleteEvent;
|
||||
win.ShowAll();
|
||||
}
|
||||
|
||||
public void OnHalDeviceAdded(object o, DeviceAddedArgs args)
|
||||
{
|
||||
Console.WriteLine("Device Added: " + args.Device);
|
||||
args.Device.WatchProperties = true;
|
||||
}
|
||||
|
||||
public void OnHalDeviceRemoved(object o, DeviceRemovedArgs args)
|
||||
{
|
||||
Console.WriteLine("Device Removed: " + args.Device);
|
||||
}
|
||||
|
||||
public void OnHalDeviceCondition(object o, DeviceConditionArgs args)
|
||||
{
|
||||
Console.WriteLine("Device Condition: " + args.Device);
|
||||
}
|
||||
|
||||
public void OnHalDeviceLostCapability(object o,
|
||||
DeviceLostCapabilityArgs args)
|
||||
{
|
||||
Console.WriteLine("Device Lost Capability: " + args.Device);
|
||||
}
|
||||
|
||||
public void OnHalDeviceNewCapability(object o,
|
||||
DeviceNewCapabilityArgs args)
|
||||
{
|
||||
Console.WriteLine("Device New Capability: " + args.Device);
|
||||
}
|
||||
|
||||
public void OnHalDevicePropertyModified(object o,
|
||||
DevicePropertyModifiedArgs args)
|
||||
{
|
||||
Console.WriteLine("Device Property Modified: " + args.Device +
|
||||
", Key: " + args.Key + ", Is Removed: " + args.IsRemoved +
|
||||
", Is Added: " + args.IsAdded);
|
||||
}
|
||||
|
||||
public void OnWindowDeleteEvent(object o, EventArgs args)
|
||||
{
|
||||
Application.Quit();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -59,6 +59,32 @@ namespace Hal
|
|||
[DllImport("libhal")]
|
||||
public static extern bool libhal_ctx_free(HandleRef ctx);
|
||||
|
||||
// Callback Set Functions
|
||||
|
||||
[DllImport("libhal")]
|
||||
public static extern bool libhal_ctx_set_device_added(HandleRef ctx,
|
||||
DeviceAddedCallback cb);
|
||||
|
||||
[DllImport("libhal")]
|
||||
public static extern bool libhal_ctx_set_device_removed(HandleRef ctx,
|
||||
DeviceRemovedCallback cb);
|
||||
|
||||
[DllImport("libhal")]
|
||||
public static extern bool libhal_ctx_set_device_new_capability(
|
||||
HandleRef ctx, DeviceNewCapabilityCallback cb);
|
||||
|
||||
[DllImport("libhal")]
|
||||
public static extern bool libhal_ctx_set_device_lost_capability(
|
||||
HandleRef ctx, DeviceLostCapabilityCallback cb);
|
||||
|
||||
[DllImport("libhal")]
|
||||
public static extern bool libhal_ctx_set_device_property_modified(
|
||||
HandleRef ctx, DevicePropertyModifiedCallback cb);
|
||||
|
||||
[DllImport("libhal")]
|
||||
public static extern bool libhal_ctx_set_device_condition(
|
||||
HandleRef ctx, DeviceConditionCallback cb);
|
||||
|
||||
// String Functions
|
||||
|
||||
[DllImport("libhal")]
|
||||
|
@ -225,5 +251,14 @@ namespace Hal
|
|||
[DllImport("libdbus-1")]
|
||||
public static extern IntPtr dbus_bus_get(DbusBusType bus_typed,
|
||||
IntPtr error);
|
||||
|
||||
[DllImport("libdbus-glib-1")]
|
||||
public static extern void dbus_connection_setup_with_g_main(
|
||||
IntPtr dbus_connection, IntPtr g_main_context);
|
||||
|
||||
// ughhh
|
||||
[DllImport("libglib-2.0.so")]
|
||||
public static extern IntPtr g_main_context_default();
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,7 @@ halsharpdir=$(pkglibdir)
|
|||
halsharp_SCRIPTS = hal-sharp.dll
|
||||
EXTRA_DIST = $(halsharp_sources) HalTest.cs
|
||||
CLEANFILES = hal-sharp.dll AssemblyInfo.cs
|
||||
DISTCLEANFILES = Makefile.in
|
||||
DISTCLEANFILES = Makefile.in *.exe *.mdb
|
||||
|
||||
halsharp_sources = \
|
||||
HalContext.cs \
|
||||
|
@ -10,6 +10,7 @@ halsharp_sources = \
|
|||
HalUnmanaged.cs \
|
||||
HalDefines.cs \
|
||||
HalExceptions.cs \
|
||||
HalCallbacks.cs \
|
||||
AssemblyInfo.cs
|
||||
|
||||
halsharp_build_sources = $(addprefix $(srcdir)/, $(halsharp_sources))
|
||||
|
|
Загрузка…
Ссылка в новой задаче