@@ -35,71 +35,66 @@ using namespace chip;
35
35
using namespace chip ::app;
36
36
using namespace chip ::app::Clusters;
37
37
38
- static EnergyEvseDelegate * gDelegate = nullptr ;
39
- static EnergyEvseManager * gInstance = nullptr ;
40
- static EVSEManufacturer * gEvseManufacturer = nullptr ;
38
+ static std::unique_ptr< EnergyEvseDelegate> gDelegate ;
39
+ static std::unique_ptr< EnergyEvseManager> gInstance ;
40
+ static std::unique_ptr< EVSEManufacturer> gEvseManufacturer ;
41
41
42
- EVSEManufacturer * GetEvseManufacturer ()
42
+ EVSEManufacturer * EnergyEvse:: GetEvseManufacturer ()
43
43
{
44
- return gEvseManufacturer ;
44
+ return gEvseManufacturer . get () ;
45
45
}
46
46
47
47
void ApplicationInit ()
48
48
{
49
49
CHIP_ERROR err;
50
50
51
- if (( gDelegate != nullptr ) || ( gInstance != nullptr ) || ( gEvseManufacturer != nullptr ) )
51
+ if (gDelegate || gInstance || gEvseManufacturer )
52
52
{
53
53
ChipLogError (AppServer, " EVSE Instance or Delegate, EvseManufacturer already exist." );
54
54
return ;
55
55
}
56
56
57
- gDelegate = new EnergyEvseDelegate ();
58
- if (gDelegate == nullptr )
57
+ gDelegate = std::make_unique< EnergyEvseDelegate> ();
58
+ if (! gDelegate )
59
59
{
60
60
ChipLogError (AppServer, " Failed to allocate memory for EnergyEvseDelegate" );
61
61
return ;
62
62
}
63
63
64
64
/* Manufacturer may optionally not support all features, commands & attributes */
65
- gInstance =
66
- new EnergyEvseManager ( EndpointId (ENERGY_EVSE_ENDPOINT), *gDelegate ,
67
- BitMask<EnergyEvse::Feature, uint32_t >(
68
- EnergyEvse::Feature::kChargingPreferences , EnergyEvse::Feature::kPlugAndCharge ,
69
- EnergyEvse::Feature:: kRfid , EnergyEvse::Feature:: kSoCReporting , EnergyEvse::Feature::kV2x ),
70
- BitMask<OptionalAttributes, uint32_t >(OptionalAttributes::kSupportsUserMaximumChargingCurrent ,
71
- OptionalAttributes::kSupportsRandomizationWindow ,
72
- OptionalAttributes::kSupportsApproximateEvEfficiency ),
73
- BitMask<OptionalCommands, uint32_t >(OptionalCommands::kSupportsStartDiagnostics ));
74
-
75
- if (gInstance == nullptr )
65
+ gInstance = std::make_unique<EnergyEvseManager>(
66
+ EndpointId (ENERGY_EVSE_ENDPOINT), *gDelegate ,
67
+ BitMask<EnergyEvse::Feature, uint32_t >(EnergyEvse::Feature:: kChargingPreferences , EnergyEvse::Feature:: kPlugAndCharge ,
68
+ EnergyEvse::Feature::kRfid , EnergyEvse::Feature::kSoCReporting ,
69
+ EnergyEvse::Feature::kV2x ),
70
+ BitMask<OptionalAttributes, uint32_t >(OptionalAttributes::kSupportsUserMaximumChargingCurrent ,
71
+ OptionalAttributes::kSupportsRandomizationWindow ,
72
+ OptionalAttributes::kSupportsApproximateEvEfficiency ),
73
+ BitMask<OptionalCommands, uint32_t >(OptionalCommands::kSupportsStartDiagnostics ));
74
+
75
+ if (! gInstance )
76
76
{
77
77
ChipLogError (AppServer, " Failed to allocate memory for EnergyEvseManager" );
78
- delete gDelegate ;
79
- gDelegate = nullptr ;
78
+ gDelegate .reset ();
80
79
return ;
81
80
}
82
81
83
82
err = gInstance ->Init (); /* Register Attribute & Command handlers */
84
83
if (err != CHIP_NO_ERROR)
85
84
{
86
85
ChipLogError (AppServer, " Init failed on gInstance" );
87
- delete gInstance ;
88
- delete gDelegate ;
89
- gInstance = nullptr ;
90
- gDelegate = nullptr ;
86
+ gInstance .reset ();
87
+ gDelegate .reset ();
91
88
return ;
92
89
}
93
90
94
91
/* Now create EVSEManufacturer*/
95
- gEvseManufacturer = new EVSEManufacturer (gInstance );
96
- if (gEvseManufacturer == nullptr )
92
+ gEvseManufacturer = std::make_unique< EVSEManufacturer> (gInstance . get () );
93
+ if (! gEvseManufacturer )
97
94
{
98
95
ChipLogError (AppServer, " Failed to allocate memory for EvseManufacturer" );
99
- delete gInstance ;
100
- delete gDelegate ;
101
- gInstance = nullptr ;
102
- gDelegate = nullptr ;
96
+ gInstance .reset ();
97
+ gDelegate .reset ();
103
98
return ;
104
99
}
105
100
@@ -108,12 +103,9 @@ void ApplicationInit()
108
103
if (err != CHIP_NO_ERROR)
109
104
{
110
105
ChipLogError (AppServer, " Init failed on gEvseManufacturer" );
111
- delete gEvseManufacturer ;
112
- delete gInstance ;
113
- delete gDelegate ;
114
- gEvseManufacturer = nullptr ;
115
- gInstance = nullptr ;
116
- gDelegate = nullptr ;
106
+ gEvseManufacturer .reset ();
107
+ gInstance .reset ();
108
+ gDelegate .reset ();
117
109
return ;
118
110
}
119
111
}
@@ -123,17 +115,12 @@ void ApplicationShutdown()
123
115
ChipLogDetail (AppServer, " Energy Management App: ApplicationShutdown()" );
124
116
125
117
/* Shutdown the EVSEManufacturer*/
126
- gEvseManufacturer ->Shutdown ();
118
+ if (gEvseManufacturer )
119
+ gEvseManufacturer ->Shutdown ();
127
120
128
121
/* Shutdown the Instance - deregister attribute & command handler */
129
- gInstance ->Shutdown ();
130
-
131
- delete gEvseManufacturer ;
132
- delete gInstance ;
133
- delete gDelegate ;
134
- gEvseManufacturer = nullptr ;
135
- gInstance = nullptr ;
136
- gDelegate = nullptr ;
122
+ if (gInstance )
123
+ gInstance ->Shutdown ();
137
124
}
138
125
139
126
int main (int argc, char * argv[])
0 commit comments