I'm making an electronic rosary and I'm trying to see if Arduino Leonardo could help in an updating issue. I hope that talking about theological devices isn't against some rule on the forums. Here's my concept:
The rosary has texts, images and songs recorded on the SD card that is almost never removed. As of every year, there is a calendar showing Scriptures for every day and month and they need to be downloaded. I'm thinking of monthly or yearly updates. My concept is that the user connects the rosary to their PC and runs an app that's on the SD card, which downloads latest updates from the Church server. The updates can be firmware updates where the bootloader is invoked and loads a HEX file which is downloaded from the server through the app or SD card updates where the bootloader adds, modifies and removes files from the SD card according to the instructions from the server through the app.
The reason why I chose Leonardo is because the end-user would have trouble with COM ports so it's better to have an USB-based AVR microcontroller that does all the work. Now, the question is what kind of a device the microcontroller should display itself as. I don't want the end-user to have to install some special drivers for this and have trouble with false-alarm antivirus programs. This is why instead I've decided to use a HID library if one exists. What do you think about that?
If it's good to use the HID library, what kind of a device more specifically should the microcontroller display itself as? If the app is on the SD card, the microcontroller needs to offer to the end-user that file by displaying itself as a USB Mass Storage Device. What kind of a library should I use? Please, only permissive open-source licensed libraries. No ASF's license or GPL or ShareAlike.
The microcontroller needs to have some kind of communication with the app in order to transfer updates. What kind of communication which doesn't require special drivers should I use? A COM port is a problem because I have Sony Ericsson PC Companion Suite and it's messing with my Croduino (Arduino Duemillanove derivative) by resetting it constantly. I don't want to force people to uninstall such software from their PC. The communication needs to be uninterferable by any other program than the app. What kind of USB communications would you recommend? Could this COM port problem be bypassed somehow?
So let's say that the rosary needs a firmware update. That means that the program execution has to be in the bootloader section to do so which also means that it should not disturb the communication between the microcontroller and the SD card which is going to happen anyway due to that resetting the microcontroller and loading bootloader's global variables and stuff will corrupt the previous RAM data about the communication. I just hope that the SD card is somehow resettable in the meantime. So is it?
The reason why I don't want the updates to go through the USB Mass Storage Device thing is because it's possible that the rosary gets a virus from an infected computer which would just infect other computers. If the files go through a hidden communication system, then the virus cannot do anything. You might be asking me how does the app appear in the USB Mass Storage mode on the PC. I'm thinking that the microcontroller just spawns a flash drive icon on the PC's My Computer window and that all its contents are read-only. Do you think I'm complicating this? How would you do this?
Thank you for your time and patience.