I was working on this issue yesterday and I think the best way to do it is to have that in the client program. Frozen values wouldn't help if one wants the values for the succeeding bounces. So this highly depends on what the client programmer wants to achieve.
I am thinking about solving that with a combination of the on ground flag to "count" the bounces and try to get the values for each bounce:
- ON GND set -> Get the values of rate and g force on touchdown as long as landing has finished or ON GND is not set anymore.
- ON GND set again -> Touchdown values will be overwritten, so get the values until landing has finished or ON GND is not set anymore.
And so on...
As, as you have stated before, the on gnd flags and touchdown values get updated async, there will be a small error (in case time between two readouts is too large to cover the changes) but I think this will work for my program. It reads all the values I need about 8-10 times a second, which works pretty nice without a significant performance hit.