I found a very strange API bug.
The program crashes at the last call to AddDataListener in N82. But it doesn't crash in N95. However, the callback never get called afterward. The error message is E32User-CBase:42.
CRRSensorApi* aObj = CRRSensorApi::NewL();
// at some time.
// and then add the Listener again
aObj->AddDataListener(this); <<= Bane!
It seems that RemoveDataListener() doesn't call Cancel(). Anyway, you can walk around the bug if you always free the object after remove data listener and allocate the object again when you need it.
Does anyone have other solution?