Ensure only one PowerCommand and ActivePowerCommand is queued #1093
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Neither a PowerCommand nor an ActivePowerCommand shall be enqueued if another one (of the same type) is already pending.
Adding multiple
PowerCommand
s orActivePowerCommand
s is not bad in general, but suppose the following situation:ActivePowerCommand
was queued and the command state was set toCMD_PENDING
.ActivePowerCommand
is queued and the command state is set toCMD_PENDING
again.ActivePowerCommand
. The "last command state" is changed toCMD_OK
orCMD_NOK
.ActivePowerCommand
pending, but the "last command state" is notCMD_PENDING
.This check restricts one of each of the commands per inverter. It seems to me that this is a reasonable limitation.
Another possible solution might be to check the radio queue for other commands of the same type and keeping the
CMD_PENDING
state. This is computationally more expensive, but would make sure that racing commands would all be processed. The current implementation will reject a second command of the same type.