RoboDS First Test

Just ran first test of RoboDS (2015 Android Driverstation), seems to work pretty well. Buttons and joysticks work. The app still needs some work, but if I can find some free time I should have it finished in a week or so.

Would you like some volunteers to beta test before the official release?

Beta testers would be great. If anyone is interested PM me your emails and I’ll send you an APK when the app is ready (maybe a few days, maybe a week). Thanks.

Here is a brief description of my app, and a prompt for some suggestions. Currently the app supports a ‘drag n’ drop’ interface builder with ‘Basic Button’ and ‘Basic Joystick’ components. The app was designed so that new widgets of each category (joystick, button, slider, switch, throttle, etc.) can be easily added, so by the time the app is finished I hope to have a collection of widgets in different styles, and to allow users to import their own. The app’s action bar contains a voltage indicator, connection indicator, enable button, mode switch, and a menu with settings and layout editing options. When a new widget is added to the layout a dialog comes up asking for the widget settings (joystick number, axis number, size, etc.). I plan to add support for multiple layouts that can be quickly switched out, but that’ll have to wait until after the first release. Also in updated versions I’ll add support for video and hardware joysticks. Video streaming is NOT currently supported in the app.
I also plan to add indicators to the widget collection, these’ll include gauges, LEDs, and a few others. But to use these components the robot will have to include some RoboDS specific code, I don’t want to use Smart Dashboard code because I want it to be a little smaller and lighter then the full Smart Dashboard implementation.

So here is a prompt:
I prefer to use RoboDS in landscape mode since I have a tablet. I do NOT want the app to change orientation with the sensor. So does anyone want an option to set the orientation of layouts to portrait? Is it easier to use a phone in portrait?

Any other suggested features?

The source code will be put up on Github after the first APK release, so if you’d like to branch it and add your own features feel free to do so.

That sounds awesome - can’t wait to test it out. Nice Job!!!

This would be for driving at home, not connecting to the field, right?

Definitely would not be legal for competition.

In my opinion, I would rather have a bigger app that used NetworkTables (which I don’t think is that big, anyway). I would likely use your app out of convenience at events where I did not want to lug around our full driver station. I don’t think I would take the time to maintain code (even if it was useful), that wouldn’t be used that often and also wouldn’t be able to communicate with the normal DS. Also, by using NetworkTables, you would be working with a thoroughly debugged and reliable protocol. Otherwise, I think its a good idea to have custom indicators and widgets.

Unless the rules change.

You’r right, it would be convenient to use network tables; but unfortunately I don’t have much, or any, knowledge on the subject and I’m graduating this year (May), so I don’t have much time to put into researching and implementing the feature. If anyone else has the knowledge to implement this feature I’m sure it would be appreciated. I’m a young, inexpirienced, and somewhat unskilled programmer; so please don’t blame me for not wanting to “bite off more than I can chew.” Thanks for the comment; if I find the time, and no one else is willing, I’ll probably add full Smart Dashboard compatibility eventually.

NetworkTables are super easy! http://wpilib.screenstepslive.com/s/3120/m/7912/l/80205-writing-a-simple-networktables-program-in-c-and-java-with-a-java-client-pc-side

Easy to use the library, but how easy to write it?

I have the app working good with a static IP, but when I try to use DHCP with InetAdress.getForName(“roborio-2657.local”) I get an UnknownHostException. If any of you Android developers knows what the problem is please help.

I used the same code in a desktop Java app and it worked perfectly.

The INTERNET permission is declared in my manifest.

Also I’d like to include a moderate collection of widgets in the app, so if anyone wants widgets to match their teams you can send me some graphics or post them as attachements. The graphics should be PNGs with the following elements:

Joysticks: inner graphic, outer graphic, (optional) pressed inner graphic, (optional) pressed outer graphic. All graphics should be approximately square or circle shaped.

Sliders: Same as joysticks, except these should NOT be square or circular. They should be longer than they are wide.

Throttles: Same as sliders.

Buttons: Pressed and depressed graphics. Graphics should not include text since text will be dynamically added when a button is created.

Other: Give me a description of what you want.

Displays: Not yet supported.

I’m going to guess that InetAddress doesn’t look at mdns on Android, so you’ll have to take a look at this: http://developer.android.com/training/connect-devices-wirelessly/nsd.html. If you’ve installed the NI update on Windows, it sets up an mdns responder. You need to look up by mdns as well.

Edit: taking a second look at that article, it doesn’t appear to talk about mdns. Android does not appear to have an mdns responder, so you probably won’t be able to get dynamic ips working.

It seems like NSD does support mDNS. See here: http://www.dodgycoder.net/2015/02/setting-up-bonjourzeroconfmdnsnsd.html?m=1

NSD is only available in API 16 and above, but there also seems to be a library called jmDNS that might work.

Thanks, I’ll look that up.

Has anyone verified that the app works, if so please post what device you have verified.

You released the app?

I sent the apk to those who wanted to test it, but I haven’t heard back from them so I don’t know if I should release it or not.