2005-12-18 Aaron Bockover <aaron@aaronbock.net>

* njb-sharp.mdp: Updated MonoDevelop project

    * src/njb-sharp.dll.config.in: DLL Map; should remain unused directly
    in consuming applications for now, but can serve as a template for the
    end application to use

    * configure.ac: Added expanded_libdir variable and generate a DLL map

    * src/Device.cs (Dispose): Only call NJB_Close if Handle is still valid

    * src/Discoverer.cs: Added a Rescan method which may need to be used
    for rediscovering potentially new devices. Refreshes the device list
    cache. Very useful if consuming application also uses HAL for device
    notification.

    * src/Makefile.am: Added DeviceId.cs

    * src/DeviceId.cs: Simple class and static table to perform pre device
    lookup to verify if a USB device will most likely be supported by libnjb.
    Lookups to table are performed based on USB vendor and product IDs. This
    is useful for HAL-based detection, where probing Njb.Discoverer may be
    costly for each [USB] device in the system. Also maps device names to
    something more suitable for display.


svn path=/trunk/njb-sharp/; revision=54573
This commit is contained in:
Aaron Bockover 2005-12-18 08:37:59 +00:00
Родитель 6a359309a9
Коммит 8e6e943aa8
8 изменённых файлов: 162 добавлений и 4 удалений

Просмотреть файл

@ -1,3 +1,29 @@
2005-12-18 Aaron Bockover <aaron@aaronbock.net>
* njb-sharp.mdp: Updated MonoDevelop project
* src/njb-sharp.dll.config.in: DLL Map; should remain unused directly
in consuming applications for now, but can serve as a template for the
end application to use
* configure.ac: Added expanded_libdir variable and generate a DLL map
* src/Device.cs (Dispose): Only call NJB_Close if Handle is still valid
* src/Discoverer.cs: Added a Rescan method which may need to be used
for rediscovering potentially new devices. Refreshes the device list
cache. Very useful if consuming application also uses HAL for device
notification.
* src/Makefile.am: Added DeviceId.cs
* src/DeviceId.cs: Simple class and static table to perform "pre" device
lookup to verify if a USB device will most likely be supported by libnjb.
Lookups to table are performed based on USB vendor and product IDs. This
is useful for HAL-based detection, where probing Njb.Discoverer may be
costly for each [USB] device in the system. Also maps device names to
something more suitable for display.
2005-12-17 Aaron Bockover <aaron@aaronbock.net> 2005-12-17 Aaron Bockover <aaron@aaronbock.net>
* src/Device.cs: Added support for finding the USB bus and file path * src/Device.cs: Added support for finding the USB bus and file path

Просмотреть файл

@ -50,10 +50,16 @@ else
AM_CONDITIONAL(BUILD_DOCS, false) AM_CONDITIONAL(BUILD_DOCS, false)
fi fi
expanded_libdir=`( case $prefix in NONE) prefix=$ac_default_prefix ;; *) ;; esac
case $exec_prefix in NONE) exec_prefix=$prefix ;; *) ;; esac
eval echo $libdir )`
AC_SUBST(expanded_libdir)
AC_OUTPUT([ AC_OUTPUT([
Makefile Makefile
njb-sharp.pc njb-sharp.pc
src/Makefile src/Makefile
src/AssemblyInfo.cs src/AssemblyInfo.cs
src/njb-sharp.dll.config
]) ])

Просмотреть файл

@ -27,6 +27,7 @@
<File name="./src/SongFrame.cs" subtype="Code" buildaction="Compile" /> <File name="./src/SongFrame.cs" subtype="Code" buildaction="Compile" />
<File name="./src/Utility.cs" subtype="Code" buildaction="Compile" /> <File name="./src/Utility.cs" subtype="Code" buildaction="Compile" />
<File name="./src/DataFile.cs" subtype="Code" buildaction="Compile" /> <File name="./src/DataFile.cs" subtype="Code" buildaction="Compile" />
<File name="./src/DeviceId.cs" subtype="Code" buildaction="Compile" />
</Contents> </Contents>
<References> <References>
<ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" /> <ProjectReference type="Gac" localcopy="True" refto="Mono.Posix, Version=1.0.5000.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756" />

Просмотреть файл

@ -146,7 +146,9 @@ namespace Njb
public void Dispose() public void Dispose()
{ {
NJB_Close(Handle); if(Handle != IntPtr.Zero) {
NJB_Close(Handle);
}
} }
public bool Capture() public bool Capture()

110
src/DeviceId.cs Normal file
Просмотреть файл

@ -0,0 +1,110 @@
/* -*- Mode: csharp; tab-width: 4; c-basic-offset: 4; indent-tabs-mode: t -*- */
/***************************************************************************
* DeviceId.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.
*/
namespace Njb
{
public class DeviceId
{
private static DeviceId [] device_id_list = {
new DeviceId("Creative Nomad Jukebox", "Nomad Jukebox", 0x0471, 0x0222),
new DeviceId("Creative Nomad Jukebox 2", "Nomad Jukebox", 0x041e, 0x4100),
new DeviceId("Creative Nomad Jukebox 3", "Nomad Jukebox", 0x041e, 0x4101),
new DeviceId("Creative Nomad Jukebox Zen", "Zen Jukebox", 0x041e, 0x4108),
new DeviceId("Creative Nomad Jukebox Zen USB 2.0", "Zen Jukebox", 0x041e, 0x410b),
new DeviceId("Creative Nomad Jukebox Zen NX", "Zen NX Jukebox", 0x041e, 0x4109),
new DeviceId("Creative Nomad Jukebox Zen Xtra", "Zen Xtra Jukebox", 0x041e, 0x4110),
new DeviceId("Dell Digital Jukebox", "Dell Jukebox", 0x041e, 0x4111),
new DeviceId("Creative Nomad Jukebox Zen Touch", "Nomad Jukebox", 0x041e, 0x411b),
new DeviceId("Creative Zen (Zen Micro variant)", "Zen Micro", 0x041e, 0x411d),
new DeviceId("Creative Nomad Jukebox Zen Micro", "Zen Micro", 0x041e, 0x411e),
new DeviceId("Second Generation Dell Digital Jukebox", "Dell Jukebox", 0x041e, 0x4126),
new DeviceId("Dell Pocket DJ", "Dell Pocket DJ", 0x041e, 0x4127),
new DeviceId("Creative Zen Sleek", "Zen Sleek", 0x041e, 0x4136)
};
public static DeviceId [] ListAll {
get {
return device_id_list;
}
}
public static bool IsNjbDevice(short vendorId, short productId)
{
return GetDeviceId(vendorId, productId) != null;
}
public static DeviceId GetDeviceId(short vendorId, short productId)
{
foreach(DeviceId id in ListAll) {
if(id.VendorId == vendorId && id.ProductId == productId) {
return id;
}
}
return null;
}
private string name;
private string display_name;
private short vendor_id;
private short product_id;
private DeviceId(string name, string displayName, short vendorId, short productId)
{
this.name = name;
this.display_name = displayName;
this.vendor_id = vendorId;
this.product_id = productId;
}
public string Name {
get {
return name;
}
}
public string DisplayName {
get {
return display_name;
}
}
public short VendorId {
get {
return vendor_id;
}
}
public short ProductId {
get {
return product_id;
}
}
}
}

Просмотреть файл

@ -45,11 +45,15 @@ namespace Njb
private Device [] devices; private Device [] devices;
public Discoverer() public Discoverer()
{
Global.Unicode = true;
Rescan();
}
public void Rescan()
{ {
int count; int count;
Global.Unicode = true;
if(NJB_Discover(NJB_Glue_Get_Device_Array(), 0, out count) == -1) { if(NJB_Discover(NJB_Glue_Get_Device_Array(), 0, out count) == -1) {
throw new ApplicationException("Could not run NJB Discover"); throw new ApplicationException("Could not run NJB Discover");
} }

Просмотреть файл

@ -8,6 +8,7 @@ DOC_ASSEMBLER = @MDASSEMBLER@ --out njb-sharp-docs --ecma
njbdir = $(prefix)/lib/njb-sharp njbdir = $(prefix)/lib/njb-sharp
njb_SCRIPTS = $(ASSEMBLY) $(ASSEMBLY).mdb njb_SCRIPTS = $(ASSEMBLY) $(ASSEMBLY).mdb
njb_DATA = $(ASSEMBLY).config
njb_LTLIBRARIES = libnjbglue.la njb_LTLIBRARIES = libnjbglue.la
noinst_DATA = $(TESTASM) noinst_DATA = $(TESTASM)
@ -20,6 +21,7 @@ libnjbglue_la_LIBADD = $(NJB_LIBS)
ASSEMBLY_SOURCES = \ ASSEMBLY_SOURCES = \
$(srcdir)/Discoverer.cs \ $(srcdir)/Discoverer.cs \
$(srcdir)/Device.cs \ $(srcdir)/Device.cs \
$(srcdir)/DeviceId.cs \
$(srcdir)/DataFile.cs \ $(srcdir)/DataFile.cs \
$(srcdir)/Song.cs \ $(srcdir)/Song.cs \
$(srcdir)/SongFrame.cs \ $(srcdir)/SongFrame.cs \
@ -64,7 +66,8 @@ EXTRA_DIST = \
$(srcdir)/en/*.xml \ $(srcdir)/en/*.xml \
$(srcdir)/en/*/*.xml \ $(srcdir)/en/*/*.xml \
njb-sharp-docs.source \ njb-sharp-docs.source \
AssemblyInfo.cs.in AssemblyInfo.cs.in \
$(ASSEMBLY).config.in
CLEANFILES = $(ASSEMBLY) $(TESTASM) *.mdb CLEANFILES = $(ASSEMBLY) $(TESTASM) *.mdb
DISTCLEANFILES = Makefile.in njb-sharp-docs.zip njb-sharp-docs.tree DISTCLEANFILES = Makefile.in njb-sharp-docs.zip njb-sharp-docs.tree

Просмотреть файл

@ -0,0 +1,6 @@
<configuration>
<dllmap dll="libnjb" target="libnjb.so.5.1.0" />
<dllmap dll="libusb" target="libusb-0.1.so.4.4.2" />
<dllmap dll="libusb" target="@expanded_libdir@/@PACKAGE@/libnjbglue.so" />
</configuration>