1) Standard:
- Android only,
- using InputStickUtility is necessary (unless you want to add a lot more code to your app),
- full control of USB descriptors and requests,
- direct access to USB endpoints,
- allows you to decide, what happens in case when Bluetooth connection is lost,
- buffering mechanism, high performance (up to 800 characters/second using keyboard class).
2) Simplified:
- currently Android only, Java SE and ME (JSR-82) coming soon,
- easy to port to other platforms,
- you can use InputStickUtility or if you don't want to, you can implement entire Bluetooth communication inside your app (much easier than with standard API version),
- supports only generic USB keyboard and mouse classes,
- you cannot modify descriptors,
- no buffering, still performance should be OK for most use cases (up to 50 characters/second using keyboard class).
Why am I introducing simplified version? I've been getting questions about API availability for many different platforms: desktop Windows, Windows Mobile and even Java2ME. It also turns out that majority of people are interested only in keyboard or keyboard and mouse classes.
I'm already testing new firmware and API, so far everything looks good and since it's much simpler than standard version, it should take no more than a few days to get it ready. As soon as testing is done, I'll post more details.
What version will be used as a default one? I'm not sure yet, I still got about a month to make a final decision. As for now, it looks like majority of people only need keyboard and mouse classes, so I probably should keep it simple and use "simplified" version as a default firmware. Whatever the decision will be, anyone will be able to replace firmware at any moment using InputStickUtility app. What's more I think that people interested in "standard" version are generally more familiar with technology and should have no problem at all with this process.