-
Notifications
You must be signed in to change notification settings - Fork 503
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Fix handling of ZCL Default Response #5009
Conversation
This PR adds automatic handling of ZCL Default Response to also catch cases where we currently miss sending the response. The magic happens by observing outgoing APS requests if they contain a specific ZCL response and automatically send the ZCL Default Response at the end of the APS indication processing. For this C++ RAII is used with an extra ZclDefaultResponder object which sends the response in its destructor. All manual sending of ZCL Default Responses was removed.
Hudge code. So we already can remove all
? Or need to check case by case ? |
Yes, in fact the PR removed all of these :)
No, basically the PR is made to not worry about ZCL Default Response at all anymore. |
Yes, have see it after ^^. Real improvement for me, was realy a weakness for me. |
I hope so. We have seen increasingly problems for missing ZCL Default Reponse and I guess lots of issues are related although the reason wasn't seen to be this problem, with effects like devices dropping off or rejoining etc. The PR touches lots of files but the actual code is rather minimal. |
Great stuff. From my perspective, this addresses one of the current major weaknesses and will hopefully automagically solve some issues users are experiencing. I've let the code run a bit in my test environment and made some observations so far:
Especially the latter is a bit hard to judge upon, since the device is not yet supported. Guess APS data could give some clarity. |
The OTA plugin is responsible to handle these.
Oh I need to double check this, I think the default responder shouldn't handle OTA related commands since the REST plugin is independent of the OTA plugin. |
This PR adds automatic handling of ZCL Default Response to also catch cases where we currently miss sending the response.
The magic happens by observing outgoing APS requests if they contain a specific ZCL response and automatically send the ZCL Default Response at the end of the APS indication processing. For this C++ RAII is used with an extra ZclDefaultResponder object which sends the response in its destructor.
ApsControllerWrapper
instead of plainApsController
.isSameAddress()
intoutils.h
.sendZclDefaultResponse()
from plugin.