I just posted the first release of an Arduino implementation of BGLib, the binary protocol used to interface with the Bluegiga BLE112 Bluetooth Low Energy module. I also sell a breakout board for this module if you're interested in prototyping with it.
BGLib is a typical event-driven protocol; it has commands, responses, and events. All of these are documented in detail (though short on examples) in Bluegiga's API reference manual, and Bluegiga even provides a sample ANSI C implementation of BGLib. However, it is a little bit more complicated to use than I prefer, so rather than porting everything, I wrote this one to be more consistent with how I like to write libraries. It's still not commented very well, but it's pretty basic and the currently included demo sketch makes for a decent quick-start guide. Here's a basic synopsis:
Commands are pre-defined in the library. They take individual parameters according to the API docs. (I did keep the exact command names and parameter structures the same so that the Bluegiga API docs would still apply.)
Responses are defined as function pointers with no default implementation. They don't need to be defined, but you can supply your own handlers if you want. Responses typically come back right after commands are issued, but there is some tiny delay sometimes, so for ultimate efficiency they had to be implemented as callbacks (or ignored). Response callbacks left undefined are ignored whenever they occur.
Events are also defined as function pointers with no default implementation. Event function pointers which are not set to real functions are simply ignored whenever they occur. Events may happen at any time based on module configuration.
You can see the demo BGLib_scanner.ino sketch here to see this architecture in action. This demo is built for the Arduino Uno, set to have the PC connected to the hardware serial port and the BLE112 connected to a SoftwareSerial port running at 9600 baud on pins 2 and 3.