View Full Version : ML always fails

07-30-2003, 11:29 AM
I've installed everything properly (I think). My program compiles and links, but whenever I make the initial call to mlGetCapabilities (or mluFindDeviceByName) the function fails with "Internal error".

I'm using WinXP

08-01-2003, 09:33 AM
In order for mlGetCapabilities to work, you need to make sure a few things are setup correctly:
1) the mldaemon program is running, either in the foreground or in the background. This executable is included, pre-compiled, in the SDK, in linux/root/usr/sbin or win32/root/usr/lib (depending on the platform).
2) the mldaemon program needs to find some mlmodules. On linux, we currently distributed 3 samples modules: "ossaudio" (for audio hardware with an OSS driver), "v4l" (for video hardware with a Video-4-Linux driver), and "nullXcode" (a sample trans-coder). On Windows, we currently only supply "nullXcode". In all cases, if you have OpenML-compliant hardware, the mlmodule supplied with your board should work.

Refer to the developer's manual in the top-level directory of the SDK for more information on running the daemon, etc.

08-02-2003, 04:47 AM
Ok,I got it to work that way:

1) Put the "openml" dir in ".\SDK\ml\win32\root"
in "C:\WINNT\system32" directory.

2) Run "mldaemon -debug"

The daemon should now be running.

08-02-2003, 02:18 PM
I actually go that figured out last night while I was messing around. I can only get mldaemon to run in debug mode though. And it complains about missing an entry address.

Is there a way for anyone to write new devices?

08-06-2003, 07:16 AM
If you type "mldaemon -install", it will install itself as a Windows service. You can then go into the service manager, and start the service. You may also choose to have the service start automatically at boot-time.

Yes, anybody can write devices. The SDK comes with examples, in "oss/devices". Currently, the only example that works on Windows is the transcoder (nullXcode). However, all examples can serve as a starting point for a new device that would work on Windows.

Documentation on the calls used to write a device (module) can be found in the man pages -- see: ddConnect, ddInterrogate, mlDIIntro, mlDIQueue, mlDIid

Note that all examples provided are "user-level code" (rather than true kernel-level device drivers), and as such can not be fully compliant with the OpenML specification (in particular, the UST synchronisation will be wrong).