I am searchin for any documentation on how to programmatically (C language) access the WLAN card to enable/disable, to read the list of networks, to select one, to specify the WEP key, to initiate an Ad-Hoc network, etc.

And then, there is Kismet using some ioctl calls to get/set the ESS-ID. Is there an API description available?

For the Camera, there is a PDF document from Sharp describing how to open() the decive and use read() and write() calls to set the modes and get the captured JPEGs. Is there something similar for the Zaurus?

And finally, it should be a method that is independent of the WLAN card (as long as it works with the original Sharp ROM 3.1x). Therefore, Wellenreiter does not seem to be the right starting point.

I am searchin for any documentation on how to programmatically (C language) access the WLAN card to enable/disable, to read the list of networks, to select one, to specify the WEP key, to initiate an Ad-Hoc network, etc.

This is done via the ioctl interface. The full API reference is contained in <linux/wireless.h> - it may be a bit sparse but with experimenting and looking at the source code of the wireless tools you'll learn everything.

Ugh. Don't use wlan-ng - it uses a horribly bloated and non-standardized API. Stick with the Linux standard wireless extensions.

QUOTE

And then, there is Kismet using some ioctl calls to get/set the ESS-ID. Is there an API description available?

See linux/wireless.h. To set and get SSIDs use the ioctl SIOCGIWSSID and SIOGSIWSSID.

QUOTE

And finally, it should be a method that is independent of the WLAN card (as long as it works with the original Sharp ROM 3.1x). Therefore, Wellenreiter does not seem to be the right starting point.

To get the facts straight - the Sharp ROM is the one which is NOT using the standard. The Wellenreiter author doesn't support this attitude which is why you need a patched kernel for that.
Trust me, the wireless extensions _are_ the standard method for device independent wlan operations.