Skip to content

Commit

Permalink
Revert "[controller] Move callbacks to CommandResponseStatus since ti…
Browse files Browse the repository at this point in the history
…ming related issue is resolved. (#7060)" (#7276)

This reverts commit 46599f3.
  • Loading branch information
woody-apple authored and pull[bot] committed Aug 21, 2021
1 parent 21f73da commit fc41ed5
Showing 1 changed file with 11 additions and 6 deletions.
17 changes: 11 additions & 6 deletions src/controller/CHIPDeviceController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1459,15 +1459,17 @@ CHIP_ERROR DeviceControllerInteractionModelDelegate::CommandResponseStatus(
const uint32_t aProtocolId, const uint16_t aProtocolCode, chip::EndpointId aEndpointId, const chip::ClusterId aClusterId,
chip::CommandId aCommandId, uint8_t aCommandIndex)
{
// #6308, #6559: Invoking success Callbacks in `CommandResponseProcessed` is not desired, but this is used to met current
// requirement of current callback framework that we should be able to send another command once ResponseCallback is called. By
// resolving #6308, the app can wait for the right event, and by #6559 the app can send command in a now command sender.
VerifyOrReturnError(aProtocolCode != 0, CHIP_NO_ERROR);

// Generally IM has more detailed errors than ember library, here we always use the, the actual handling of the
// commands should implement full IMDelegate.
// #6308 By implement app side IM delegate, we should be able to accept detailed error codes.
// Note: The IMDefaultResponseCallback is a bridge to the old CallbackMgr before IM is landed, so it still accepts EmberAfStatus
// instead of IM status code.
IMDefaultResponseCallback(apCommandSender,
(aProtocolCode == 0 && aGeneralCode == Protocols::SecureChannel::GeneralStatusCode::kSuccess)
? EMBER_ZCL_STATUS_SUCCESS
: EMBER_ZCL_STATUS_FAILURE);
IMDefaultResponseCallback(apCommandSender, EMBER_ZCL_STATUS_FAILURE);

return CHIP_NO_ERROR;
}
Expand Down Expand Up @@ -1500,8 +1502,11 @@ CHIP_ERROR DeviceControllerInteractionModelDelegate::CommandResponseError(const

CHIP_ERROR DeviceControllerInteractionModelDelegate::CommandResponseProcessed(const app::CommandSender * apCommandSender)
{
// No thing is needed in this case. The success callback is called in CommandResponseStatus, and failure callback is called in
// CommandResponseStatus, CommandResponseProtocolError and CommandResponseError.
// #6308, #6559: Invoking Callbacks in `CommandResponseProcessed` is not desired, but this is used to met current requirement of
// current callback framework that we should be able to send another command once ResponseCallback is called.
// By resolving #6308, the app can wait for the right event, and by #6559 the app can send command in a now command sender.
IMDefaultResponseCallback(apCommandSender, EMBER_ZCL_STATUS_SUCCESS);

return CHIP_NO_ERROR;
}
void BasicSuccess(void * context, uint16_t val)
Expand Down

0 comments on commit fc41ed5

Please sign in to comment.