DB: Run enumeration on IQMESH RemoveBond clearing all bonds
Right now, IqrfInfo method analyzeAnyMessage checks DpaResponses to see if a request altering the topology of database has been processed and if that is the case, the enumeration thread is notified to run. The topology changes are only detected on the level specific coordinator peripheral requests.
When IQMESH RemoveBond with deviceAddr set to 255 is executed, the changes to topology are being sent out via OS batch request, which means that the changes are ignored as it is the OS peripheral. Because the DpaMessage object passed to the IqrfInfo message analyzing method is created and is empty in ResponseMessageHandler, it does not carry any of the DpaRequest information.
Initially, I attempted to extract request information from m_pendingTransaction object in ResponseMessageHandler method, which did not always work for one reason or another, notable empty objects and access issues.
The next thing that I attempted was to store request data at the beginning of executeDpaTransaction method, where the request is first seen, stored it as a member and then passed it to processAnyMessage, where if the serviceId was the IqrfInfo component, the data would be inserted into DpaRequestPacket_t.Request.PData. This worked on paper and initially, but then async packet handling errors started occuring.
The current version available in links below has additional message handler, unique to IqrfInfo and provides another typedef for IqrfInfo message handler function. IqrfInfo then checks the contents of DpaMessage buffer if there is an OS batch request, it also checks the individual requests in the batch to see if there are any topology altering requests.
IqrfInfo changes: (branch)
clibdpa changes: (branch)
https://github.com/iqrfsdk/clibdpa/commit/15dfdbbbc360395927ecf75209219f7a00acd07d