Thursday 23 January 2014

Simplified firmware and API

There will be two firmware/API versions available:

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).
This version allows you to emulate many different kinds of USB devices, also to make exact "copy" of a USB device (by using the same PID, VID and even serial number) and achieve high performance, see: fast keyboard post. All of this comes at a cost of complexity: porting it to other platforms can take a while.

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).
As you can see, less functionality, but as a result porting it to other platforms should be relatively easy. There are basically two things that you can do with it: check status (USB enumeration state, keyboard LEDs) and send keyboard/mouse reports.

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.

Wednesday 15 January 2014

Campaign update

First, I would like to thank everyone who has already made a pre-order. I really appreciate the fact that you're supporting my project at this stage.

Obviously InputStick needs some promotion. Press-release is ready and should be submitted anytime now. I hope that this will draw some more attention. In next few days I will also contact some Android/technology/gadget related sites to ask them if they would be interested in receiving a pre-production sample of InputStick for a review. Today I've received several new PCBs, so I should have a few units ready by the end of the weekend. In the mean time I work on a series of posts about InputStick development, from an idea to almost completed product. Some things have already been covered on this blog, but I want to include a lot of new content.