-
Notifications
You must be signed in to change notification settings - Fork 2k
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
Chime server #35892
base: master
Are you sure you want to change the base?
Chime server #35892
Conversation
Review changes with SemanticDiff. Analyzed 3 of 13 files.
|
PR #35892: Size comparison from c058d60 to 3bf7248 Full report (88 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
|
PR #35892: Size comparison from cc6c773 to 6137a59 Full report (88 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
|
PR #35892: Size comparison from 9ae53c5 to 2e48f00 Full report (88 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
|
2e48f00
to
0c69f62
Compare
PR #35892: Size comparison from 965a377 to 4ba7a35 Full report (88 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
|
|
||
/* | ||
* |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
/* | |
* | |
/* |
// runs through all the Chime sounds available one by one | ||
do | ||
{ | ||
Chime::Structs::ChimeSoundStruct::Type chimeSound; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Chime::Structs::ChimeSoundStruct::Type chimeSound; | |
Structs::ChimeSoundStruct::Type chimeSound; |
do | ||
{ | ||
Chime::Structs::ChimeSoundStruct::Type chimeSound; | ||
if ((err = this->mDelegate.GetChimeSoundByIndex(index, chimeSound)) == CHIP_NO_ERROR) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So what's the ownership of the "Name" field of that struct? This code assumes that it's pointing into some callee-allocated buffer that the callee can then free ... when?
It would be better to have a struct inheriting from ChimeSoundStruct::Type
that has storage for the name so the callee can just copy into that. See what the mode base bits do for an example, or some of the thermostat bits.
}); | ||
|
||
case ActiveChimeID::Id: | ||
return aEncoder.Encode(mDelegate.GetActiveChimeId()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So if something that's not en explicit write changes the active chime id or the enabled state, the delegate is responsible for dealing with the dirty marking? See also #35729 (comment)
} | ||
} | ||
|
||
CHIP_ERROR ChimeServer::SetActiveChimeId(uint8_t soundId) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So this is a private method... who calls it?
class ChimeServer : private AttributeAccessInterface, private CommandHandlerInterface | ||
{ | ||
public: | ||
ChimeServer(EndpointId endpointId, ChimeDelegate & delegate); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So this assumes the delegate exists before this is constructed, right?
That means this will be destroyed before the delegate, and our destructor should presumably null out the pointer to us on the delegate...
* CHIP_ERROR_NOT_FOUND if the index in beyond the list of available chime sounds. | ||
*/ | ||
virtual CHIP_ERROR GetChimeSoundByIndex(uint8_t index, Chime::Structs::ChimeSoundStruct::Type & chimeSound) = 0; | ||
virtual uint8_t GetActiveChimeId() = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
virtual uint8_t GetActiveChimeId() = 0; | |
virtual uint8_t GetActiveChimeID() = 0; |
would be better to match the spec? Same for set.
* It should report Status::Success if successful and may | ||
* return other Status codes if it fails | ||
*/ | ||
virtual Protocols::InteractionModel::Status playChimeSound() = 0; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
virtual Protocols::InteractionModel::Status playChimeSound() = 0; | |
virtual Protocols::InteractionModel::Status PlayChimeSound() = 0; |
@@ -193,6 +193,7 @@ | |||
"MaxPathsPerInvoke" | |||
], | |||
"Bridged Device Basic Information": ["ProductAppearance"], | |||
"Chime": ["InstalledChimeSounds"], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not needed; lists are automatically handled.
On the other hand, you probably do want to add the two non-list attributes handled via AttributeAccessInterface here.
@@ -187,6 +187,7 @@ | |||
"MaxPathsPerInvoke" | |||
], | |||
"Bridged Device Basic Information": ["ProductAppearance"], | |||
"Chime": ["InstalledChimeSounds"], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
See above.
Server Code for Chime cluster and associated file changes