Sorry for reposting this, but I sort of made a mess of the other thread. This time I have a store app, some sample code and a test case. And I have audited my code to make sure I check return codes where necessary and avoid calling methods that shouldn't be called for a given state.
SDK: CIQ 3.0.6
Device: FR935 (ROW), FW11.00
Reproduction procedure
Download the "Stop and Go" device app from the store.
https://apps.garmin.com/en-US/apps/3...8-f45584b0a117
This is a stopwatch that can record activities. (I liked the 935 stopwatch so much I thought I'd try to recreate it >_>)
1) Install app on 935.
2) Open app.
3) Press DOWN to enable recording. (The onscreen button prompt will change to "Record: On")
4) Press START twice, quickly. You should have about 250 ms on the stopwatch
5) Press BACK to save recording. The app will display a progressbar for half a second (more on this later)
6) As soon as you can, repeat Steps 4 and 5, as quickly as possible.
7) Exit app
You should now have two recorded activities of about 250 ms. Sometimes both activities will be okay. Other times, one activity will be corrupt (cannot open/delete it). Or one activity will be missing. Or the app will crash. You will probably have O_FILE.ERR in the root of the device file system.
The reason I have a hardcoded 500ms delay after saving is because I need it to avoid full device crashes. Without it, I can crash the device by doing the same "quick recording" test case as above. As explained in the other thread, I also want to avoid the case where I am unable to start the timer/recording immediately when the user presses START.
I can give you the full source code upon request, but I will excerpt it in the post below (since I'm sure the forum won't let me type it in this post.)
Thanks for reading!