Hi All,
Recently I’ve been working on doing more iOS/Mac development, particularly related to how I can use it for FRC. My first real iOS project is going to be an app that helps monitor / troubleshoot a network used for FRC robotics. This app is somewhat inspired by the Field Monitor used at events, however since the Driver Station protocol is proprietary I do not think I will be able to test robot state or voltage without custom code being added to the robot. Do you guys think that the app should ask the user to add code to the robot to monitor enabled state and battery voltage?
Here are my current plans for it:
Monitor ping connectivity to robot as well as average ping time and dropped packet counts
Monitor ping connectivity to the robot bridge. This will not monitor ping time or dropped pings
Monitor ping connectivity to the driver station as well as average ping time and dropped packet counts
Monitor ping connectivity to the camera and display a live feed of the camera if the password is set properly, if not, it will alert the user that the password is wrong.
I plan to release this app on the appstore as soon as I’m done with it. I only have an iPad to test on so that is what it will be released for at first, but I will try to make an iPhone version as well.
This thread is going to be updated while I’m developing with progress, screenshots, and requests for advice. If anyone has any feature requests or other comments please post them. If you are interested in taking a look at the source PM me.
So now for the progress update:
I currently have a working system for pinging things, however it does not yet count the lost packets or keep track of the average ping time.
I think I will increment a counter every time a packet is sent and decrement it every time one is received for dropped packet counting.
My plan for tracking average ping time is multi part. First of all we need to get the time for each ping. The way I’m going to track that is when a packet is sent I will add an entry to a dictionary with the key being the ICMP seq number, and the value being the date object when the ping was sent. When a packet is received it the corresponding date will be retrieved and the difference will be added to a variable, and a number of received packets counter will be incremented. The average will be taken on demand.
My plan for the Camera is to use the Axis camera API to grab a new JPG every 1/30 of a second (if I can) and display that.
Attached is a screenshot of what I’ve got so far.
Let me know what you think,
Oliver