FIrmware version comparison sometimes fails
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
RockWork |
New
|
Undecided
|
Unassigned |
Bug Description
The firmware version comparison code was changed recently to parse the version string as vX.Y.Z, because RockWork only offers a firmware flash if the candidate version is 'greater' than the installed version, and a lexical comparison meant that "v3.10.1" < "v3.9.1". The firmware version string isn't always that simple. I had someone report a missing Z, so I modified the logic to parse *up-to* three numbers, but then that didn't match the recovery version, which has two numbers with '-prz' at the end. That person was stuck on the recovery firmware until a fix was issued.
Rather than chase and anticipate every version possible, I would consider the firmware candidate version string coming from the server to be the current version that pebble recommends for your watch, rather than an offering that you may already be ahead of. In the unlikely event of pebble offering a lower version number than before, they'd have a good reason for it e.g. rollback because of instabilities in a previously offered version. I propose a much simpler mechanism: offering a firmware flash whenever the candidate version is different from the current watch firmware.