[Mono-osx] IOKit Enumeration

Joshua Perry josh at 6bit.com
Mon Apr 14 20:20:59 EDT 2008

Hey guys,

I haven't had much time to work on this the last few months, but this 
weekend I was finally able to enumerate RS232 ports using P/Invoke to 
IOKit/CoreFoundation.  This would work for enumerating any items in the 
IOKit database but I want to add support for 
System.IO.Ports.SerialPort.GetPortNames() to Mono for OSX.  This works 
quite well with any FTDI type chips that provide a virtual com-port for 
communication, which is a common method of USB enabling devices.

I do a lot of embedded development and talking to our hardware is 
important, and in future products we would like to ship software for OSX 
on Mono.

So before I start integrating this code into my local checkout, I wanted 
to ask what the best method is for adding this to the Mono codebase.  Is 
there a define for managed code on OSX builds?  I've noticed that a lot 
of places a runtime check is used against Environment.OSVersion.Platform 
to decide which logic to execute, is this the preferred method in 
managed code as opposed to conditional compilation?

Also, I have made some base classes that I use to manage reference 
counting and to make the P/Invoke to CoreFoundation objects and IOKit 
objects easier (e.g. CFString, CFMutableDictionary, IOObject).  Is there 
an OSX helper library similar to PosixHelper that this code would go in?

Thanks for any feedback,


More information about the Mono-osx mailing list