@@ -79,7 +79,6 @@ ReadHandler::ReadHandler(ManagementCallback & apCallback, Messaging::ExchangeCon
79
79
80
80
VerifyOrDie (observer != nullptr );
81
81
mObserver = observer;
82
- mObserver ->OnReadHandlerCreated (this );
83
82
}
84
83
85
84
#if CHIP_CONFIG_PERSIST_SUBSCRIPTIONS
@@ -92,7 +91,6 @@ ReadHandler::ReadHandler(ManagementCallback & apCallback, Observer * observer) :
92
91
93
92
VerifyOrDie (observer != nullptr );
94
93
mObserver = observer;
95
- mObserver ->OnReadHandlerCreated (this );
96
94
}
97
95
98
96
void ReadHandler::ResumeSubscription (CASESessionManager & caseSessionManager,
@@ -235,6 +233,7 @@ CHIP_ERROR ReadHandler::OnStatusResponse(Messaging::ExchangeContext * apExchange
235
233
{
236
234
appCallback->OnSubscriptionEstablished (*this );
237
235
}
236
+ mObserver ->OnSubscriptionEstablished (this );
238
237
}
239
238
}
240
239
else
@@ -246,10 +245,10 @@ CHIP_ERROR ReadHandler::OnStatusResponse(Messaging::ExchangeContext * apExchange
246
245
return CHIP_NO_ERROR;
247
246
}
248
247
249
- MoveToState (HandlerState::GeneratingReports );
248
+ MoveToState (HandlerState::CanStartReporting );
250
249
break ;
251
250
252
- case HandlerState::GeneratingReports :
251
+ case HandlerState::CanStartReporting :
253
252
case HandlerState::Idle:
254
253
default :
255
254
err = CHIP_ERROR_INCORRECT_STATE;
@@ -262,7 +261,7 @@ CHIP_ERROR ReadHandler::OnStatusResponse(Messaging::ExchangeContext * apExchange
262
261
263
262
CHIP_ERROR ReadHandler::SendStatusReport (Protocols::InteractionModel::Status aStatus)
264
263
{
265
- VerifyOrReturnLogError (mState == HandlerState::GeneratingReports , CHIP_ERROR_INCORRECT_STATE);
264
+ VerifyOrReturnLogError (mState == HandlerState::CanStartReporting , CHIP_ERROR_INCORRECT_STATE);
266
265
if (IsPriming () || IsChunkedReport ())
267
266
{
268
267
mSessionHandle .Grab (mExchangeCtx ->GetSessionHandle ());
@@ -286,7 +285,7 @@ CHIP_ERROR ReadHandler::SendStatusReport(Protocols::InteractionModel::Status aSt
286
285
287
286
CHIP_ERROR ReadHandler::SendReportData (System::PacketBufferHandle && aPayload, bool aMoreChunks)
288
287
{
289
- VerifyOrReturnLogError (mState == HandlerState::GeneratingReports , CHIP_ERROR_INCORRECT_STATE);
288
+ VerifyOrReturnLogError (mState == HandlerState::CanStartReporting , CHIP_ERROR_INCORRECT_STATE);
290
289
VerifyOrDie (!IsAwaitingReportResponse ()); // Should not be reportable!
291
290
if (IsPriming () || IsChunkedReport ())
292
291
{
@@ -335,7 +334,7 @@ CHIP_ERROR ReadHandler::SendReportData(System::PacketBufferHandle && aPayload, b
335
334
// Priming reports are handled when we send a SubscribeResponse.
336
335
if (IsType (InteractionType::Subscribe) && !IsPriming () && !IsChunkedReport ())
337
336
{
338
- mObserver ->OnSubscriptionAction (this );
337
+ mObserver ->OnSubscriptionReportSent (this );
339
338
}
340
339
}
341
340
if (!aMoreChunks)
@@ -456,7 +455,7 @@ CHIP_ERROR ReadHandler::ProcessReadRequest(System::PacketBufferHandle && aPayloa
456
455
ReturnErrorOnFailure (readRequestParser.GetIsFabricFiltered (&isFabricFiltered));
457
456
SetStateFlag (ReadHandlerFlags::FabricFiltered, isFabricFiltered);
458
457
ReturnErrorOnFailure (readRequestParser.ExitContainer ());
459
- MoveToState (HandlerState::GeneratingReports );
458
+ MoveToState (HandlerState::CanStartReporting );
460
459
461
460
mExchangeCtx ->WillSendMessage ();
462
461
@@ -574,8 +573,8 @@ const char * ReadHandler::GetStateStr() const
574
573
return " Idle" ;
575
574
case HandlerState::AwaitingDestruction:
576
575
return " AwaitingDestruction" ;
577
- case HandlerState::GeneratingReports :
578
- return " GeneratingReports " ;
576
+ case HandlerState::CanStartReporting :
577
+ return " CanStartReporting " ;
579
578
580
579
case HandlerState::AwaitingReportResponse:
581
580
return " AwaitingReportResponse" ;
@@ -603,10 +602,17 @@ void ReadHandler::MoveToState(const HandlerState aTargetState)
603
602
// If we just unblocked sending reports, let's go ahead and schedule the reporting
604
603
// engine to run to kick that off.
605
604
//
606
- if (aTargetState == HandlerState::GeneratingReports )
605
+ if (aTargetState == HandlerState::CanStartReporting )
607
606
{
608
- // mObserver will take care of scheduling the report as soon as allowed
609
- mObserver ->OnBecameReportable (this );
607
+ if (ShouldReportUnscheduled ())
608
+ {
609
+ InteractionModelEngine::GetInstance ()->GetReportingEngine ().ScheduleRun ();
610
+ }
611
+ else
612
+ {
613
+ // If we became reportable, the scheduler will schedule a run as soon as allowed
614
+ mObserver ->OnBecameReportable (this );
615
+ }
610
616
}
611
617
}
612
618
@@ -647,8 +653,6 @@ CHIP_ERROR ReadHandler::SendSubscribeResponse()
647
653
ReturnErrorOnFailure (writer.Finalize (&packet));
648
654
VerifyOrReturnLogError (mExchangeCtx , CHIP_ERROR_INCORRECT_STATE);
649
655
650
- mObserver ->OnSubscriptionAction (this );
651
-
652
656
ClearStateFlag (ReadHandlerFlags::PrimingReports);
653
657
return mExchangeCtx ->SendMessage (Protocols::InteractionModel::MsgType::SubscribeResponse, std::move (packet));
654
658
}
@@ -785,7 +789,7 @@ CHIP_ERROR ReadHandler::ProcessSubscribeRequest(System::PacketBufferHandle && aP
785
789
SetStateFlag (ReadHandlerFlags::FabricFiltered, isFabricFiltered);
786
790
ReturnErrorOnFailure (Crypto::DRBG_get_bytes (reinterpret_cast <uint8_t *>(&mSubscriptionId ), sizeof (mSubscriptionId )));
787
791
ReturnErrorOnFailure (subscribeRequestParser.ExitContainer ());
788
- MoveToState (HandlerState::GeneratingReports );
792
+ MoveToState (HandlerState::CanStartReporting );
789
793
790
794
mExchangeCtx ->WillSendMessage ();
791
795
@@ -872,11 +876,11 @@ void ReadHandler::ForceDirtyState()
872
876
873
877
void ReadHandler::SetStateFlag (ReadHandlerFlags aFlag, bool aValue)
874
878
{
875
- bool oldReportable = IsReportable ();
879
+ bool oldReportable = ShouldStartReporting ();
876
880
mFlags .Set (aFlag, aValue);
877
881
878
882
// If we became reportable, schedule a reporting run.
879
- if (!oldReportable && IsReportable ())
883
+ if (!oldReportable && ShouldStartReporting ())
880
884
{
881
885
// If we became reportable, the scheduler will schedule a run as soon as allowed
882
886
mObserver ->OnBecameReportable (this );
@@ -895,7 +899,7 @@ void ReadHandler::HandleDeviceConnected(void * context, Messaging::ExchangeManag
895
899
896
900
_this->mSessionHandle .Grab (sessionHandle);
897
901
898
- _this->MoveToState (HandlerState::GeneratingReports );
902
+ _this->MoveToState (HandlerState::CanStartReporting );
899
903
900
904
ObjectList<AttributePathParams> * attributePath = _this->mpAttributePathList ;
901
905
while (attributePath)
0 commit comments