Skip to content

Commit 3896a4a

Browse files
committed
Move common trigger logics to GenericEventManagementTestEventTriggerHandler class.
1 parent 22b6a36 commit 3896a4a

6 files changed

+117
-39
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
/*
2+
*
3+
* Copyright (c) 2024 Project CHIP Authors
4+
* All rights reserved.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
#include "EventManagementTestEventTriggerHandler.h"
20+
21+
#include "SoftwareDiagnostics.h"
22+
23+
namespace chip {
24+
namespace DeviceLayer {
25+
namespace Infineon {
26+
namespace CYW30739 {
27+
28+
CHIP_ERROR EventManagementTestEventTriggerHandler::HandleEventTrigger(uint64_t eventTrigger)
29+
{
30+
switch (eventTrigger)
31+
{
32+
case kFillUpEventLoggingBuffer:
33+
return HandleFillUpEventLoggingBufferEventTriger();
34+
default:
35+
return CHIP_ERROR_INVALID_ARGUMENT;
36+
}
37+
}
38+
39+
void EventManagementTestEventTriggerHandler::TriggerSoftwareFaultEvent(const char * faultRecordString)
40+
{
41+
OnSoftwareFaultEventHandler(faultRecordString);
42+
}
43+
44+
} // namespace CYW30739
45+
} // namespace Infineon
46+
} // namespace DeviceLayer
47+
} // namespace chip

examples/platform/infineon/cyw30739/TestEventTriggerHandler.h renamed to examples/platform/infineon/cyw30739/EventManagementTestEventTriggerHandler.h

+3-3
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,22 @@
1818

1919
#pragma once
2020

21-
#include <app/TestEventTriggerDelegate.h>
21+
#include <app/GenericEventManagementTestEventTriggerHandler.h>
2222

2323
namespace chip {
2424
namespace DeviceLayer {
2525
namespace Infineon {
2626
namespace CYW30739 {
2727

28-
class TestEventTriggerHandler : public chip::TestEventTriggerHandler
28+
class EventManagementTestEventTriggerHandler : public app::GenericEventManagementTestEventTriggerHandler
2929
{
3030
public:
3131
static constexpr uint64_t kFillUpEventLoggingBuffer = 0xffff'ffff'1388'0000;
3232

3333
CHIP_ERROR HandleEventTrigger(uint64_t eventTrigger) override;
3434

3535
private:
36-
CHIP_ERROR HandleFillUpEventLoggingBufferEventTriger();
36+
virtual void TriggerSoftwareFaultEvent(const char * faultRecordString) override;
3737
};
3838

3939
} // namespace CYW30739

examples/platform/infineon/cyw30739/matter_config.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
#include "matter_config.h"
2121
#include "AppTask.h"
22-
#include "TestEventTriggerHandler.h"
22+
#include "EventManagementTestEventTriggerHandler.h"
2323
#ifdef BOARD_ENABLE_DISPLAY
2424
#include "GUI.h"
2525
#endif
@@ -192,10 +192,10 @@ void CYW30739MatterConfig::InitApp(void)
192192
/* Start CHIP datamodel server */
193193
static chip::SimpleTestEventTriggerDelegate sTestEventTriggerDelegate{};
194194
static chip::OTATestEventTriggerHandler sOtaTestEventTriggerHandler{};
195-
static Infineon::CYW30739::TestEventTriggerHandler sCYW30739TestEventTriggerHandler{};
195+
static Infineon::CYW30739::EventManagementTestEventTriggerHandler sEventManagementTestEventTriggerHandler{};
196196
VerifyOrDie(sTestEventTriggerDelegate.Init(chip::ByteSpan(sTestEventTriggerEnableKey)) == CHIP_NO_ERROR);
197197
VerifyOrDie(sTestEventTriggerDelegate.AddHandler(&sOtaTestEventTriggerHandler) == CHIP_NO_ERROR);
198-
VerifyOrDie(sTestEventTriggerDelegate.AddHandler(&sCYW30739TestEventTriggerHandler) == CHIP_NO_ERROR);
198+
VerifyOrDie(sTestEventTriggerDelegate.AddHandler(&sEventManagementTestEventTriggerHandler) == CHIP_NO_ERROR);
199199
// Create initParams with SDK example defaults here
200200
static chip::CommonCaseDeviceServerInitParams initParams;
201201
(void) initParams.InitializeStaticResourcesBeforeServerInit();

src/app/BUILD.gn

+2
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,8 @@ static_library("app") {
324324
"EventManagement.h",
325325
"FailSafeContext.cpp",
326326
"FailSafeContext.h",
327+
"GenericEventManagementTestEventTriggerHandler.cpp",
328+
"GenericEventManagementTestEventTriggerHandler.h",
327329
"OTAUserConsentCommon.h",
328330
"ReadHandler.cpp",
329331
"SafeAttributePersistenceProvider.h",

examples/platform/infineon/cyw30739/TestEventTriggerHandler.cpp renamed to src/app/GenericEventManagementTestEventTriggerHandler.cpp

+25-33
Original file line numberDiff line numberDiff line change
@@ -16,32 +16,18 @@
1616
* limitations under the License.
1717
*/
1818

19-
#include "TestEventTriggerHandler.h"
20-
21-
#include "SoftwareDiagnostics.h"
19+
#include "GenericEventManagementTestEventTriggerHandler.h"
2220

2321
#include <app/clusters/general-diagnostics-server/general-diagnostics-server.h>
24-
#include <platform/CHIPDeviceLayer.h>
22+
#include <platform/GeneralFaults.h>
2523

2624
namespace chip {
27-
namespace DeviceLayer {
28-
namespace Infineon {
29-
namespace CYW30739 {
25+
namespace app {
3026

27+
using namespace chip::DeviceLayer;
3128
using namespace chip::app::Clusters;
3229

33-
CHIP_ERROR TestEventTriggerHandler::HandleEventTrigger(uint64_t eventTrigger)
34-
{
35-
switch (eventTrigger)
36-
{
37-
case kFillUpEventLoggingBuffer:
38-
return HandleFillUpEventLoggingBufferEventTriger();
39-
default:
40-
return CHIP_ERROR_INVALID_ARGUMENT;
41-
}
42-
}
43-
44-
CHIP_ERROR TestEventTriggerHandler::HandleFillUpEventLoggingBufferEventTriger()
30+
CHIP_ERROR GenericEventManagementTestEventTriggerHandler::HandleFillUpEventLoggingBufferEventTriger()
4531
{
4632
/* Create a fake hardware fault list. */
4733
GeneralFaults<kMaxHardwareFaults> hardwareFaults;
@@ -58,23 +44,29 @@ CHIP_ERROR TestEventTriggerHandler::HandleFillUpEventLoggingBufferEventTriger()
5844
GeneralDiagnosticsServer::Instance().OnHardwareFaultsDetect(hardwareFaults, hardwareFaults);
5945
}
6046

61-
/* Create a fake fault message. */
62-
constexpr uint64_t kEncodingOverhead = 0x40;
63-
constexpr uint64_t kMaxEventLoggingInfoSize = CHIP_DEVICE_CONFIG_EVENT_LOGGING_INFO_BUFFER_SIZE - kEncodingOverhead;
64-
static char recordString[kMaxEventLoggingInfoSize + 1];
65-
memset(recordString, 0x55, kMaxEventLoggingInfoSize);
66-
recordString[kMaxEventLoggingInfoSize] = '\0';
47+
/* Fill up the info logging buffer. */
48+
FillUpEventLoggingBufferWithFakeSoftwareFault(CHIP_DEVICE_CONFIG_EVENT_LOGGING_INFO_BUFFER_SIZE);
6749

68-
/* Fill up the info logging buffer by a software fault. */
69-
OnSoftwareFaultEventHandler(recordString);
70-
71-
/* Fill up the debug logging buffer by a software fault. */
72-
OnSoftwareFaultEventHandler(recordString);
50+
/* Fill up the debug logging buffer. */
51+
FillUpEventLoggingBufferWithFakeSoftwareFault(CHIP_DEVICE_CONFIG_EVENT_LOGGING_DEBUG_BUFFER_SIZE);
7352

7453
return CHIP_NO_ERROR;
7554
}
7655

77-
} // namespace CYW30739
78-
} // namespace Infineon
79-
} // namespace DeviceLayer
56+
void GenericEventManagementTestEventTriggerHandler::FillUpEventLoggingBufferWithFakeSoftwareFault(size_t bufferSize)
57+
{
58+
/* Create a fake fault message. */
59+
constexpr size_t kEncodingOverhead = 0x40;
60+
const size_t recordSize = bufferSize - kEncodingOverhead;
61+
char * recordBuffer = static_cast<char *>(Platform::MemoryAlloc(recordSize));
62+
VerifyOrReturn(recordBuffer != nullptr);
63+
std::unique_ptr<char, decltype(&Platform::MemoryFree)> recordString(recordBuffer, &Platform::MemoryFree);
64+
memset(recordString.get(), 0x55, recordSize);
65+
recordString.get()[recordSize - 1] = '\0';
66+
67+
/* Fill up the logging buffer by a software fault. */
68+
TriggerSoftwareFaultEvent(recordString.get());
69+
}
70+
71+
} // namespace app
8072
} // namespace chip
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
*
3+
* Copyright (c) 2024 Project CHIP Authors
4+
* All rights reserved.
5+
*
6+
* Licensed under the Apache License, Version 2.0 (the "License");
7+
* you may not use this file except in compliance with the License.
8+
* You may obtain a copy of the License at
9+
*
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* Unless required by applicable law or agreed to in writing, software
13+
* distributed under the License is distributed on an "AS IS" BASIS,
14+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15+
* See the License for the specific language governing permissions and
16+
* limitations under the License.
17+
*/
18+
19+
#pragma once
20+
21+
#include <app/TestEventTriggerDelegate.h>
22+
23+
namespace chip {
24+
namespace app {
25+
26+
class GenericEventManagementTestEventTriggerHandler : public TestEventTriggerHandler
27+
{
28+
protected:
29+
CHIP_ERROR HandleFillUpEventLoggingBufferEventTriger();
30+
31+
private:
32+
void FillUpEventLoggingBufferWithFakeSoftwareFault(size_t bufferSize);
33+
virtual void TriggerSoftwareFaultEvent(const char * faultRecordString) = 0;
34+
};
35+
36+
} // namespace app
37+
} // namespace chip

0 commit comments

Comments
 (0)