Skip to content

Commit 1f0ce72

Browse files
committed
Added all missing switch statements, added compile error when statements are missing
Signed-off-by: AssemblyJohn <ioan.bogdann@gmail.com>
1 parent d1af3e2 commit 1f0ce72

19 files changed

+386
-151
lines changed

lib/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ target_compile_options(ocpp
77
#-Werror # turn warnings into errors
88
-Wimplicit-fallthrough # avoid unintended fallthroughs
99
-pedantic-errors
10+
-Werror=switch-enum
1011
)
1112

1213
target_compile_definitions(ocpp

lib/ocpp/common/evse_security.cpp

+28-25
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ ocpp::v201::GetCertificateIdUseEnum to_ocpp_v201(ocpp::CertificateType other) {
1919
return ocpp::v201::GetCertificateIdUseEnum::V2GCertificateChain;
2020
case ocpp::CertificateType::MFRootCertificate:
2121
return ocpp::v201::GetCertificateIdUseEnum::ManufacturerRootCertificate;
22-
default:
23-
throw std::runtime_error("Could not convert CertificateType to GetCertificateIdUseEnum");
2422
}
23+
24+
throw std::runtime_error("Could not convert CertificateType to GetCertificateIdUseEnum");
2525
}
2626

2727
ocpp::v201::InstallCertificateUseEnum to_ocpp_v201(ocpp::CaCertificateType other) {
@@ -34,9 +34,9 @@ ocpp::v201::InstallCertificateUseEnum to_ocpp_v201(ocpp::CaCertificateType other
3434
return ocpp::v201::InstallCertificateUseEnum::CSMSRootCertificate;
3535
case ocpp::CaCertificateType::MF:
3636
return ocpp::v201::InstallCertificateUseEnum::ManufacturerRootCertificate;
37-
default:
38-
throw std::runtime_error("Could not convert CaCertificateType to InstallCertificateUseEnum");
3937
}
38+
39+
throw std::runtime_error("Could not convert CaCertificateType to InstallCertificateUseEnum");
4040
}
4141

4242
ocpp::v201::CertificateSigningUseEnum to_ocpp_v201(ocpp::CertificateSigningUseEnum other) {
@@ -45,9 +45,13 @@ ocpp::v201::CertificateSigningUseEnum to_ocpp_v201(ocpp::CertificateSigningUseEn
4545
return ocpp::v201::CertificateSigningUseEnum::ChargingStationCertificate;
4646
case ocpp::CertificateSigningUseEnum::V2GCertificate:
4747
return ocpp::v201::CertificateSigningUseEnum::V2GCertificate;
48-
default:
49-
throw std::runtime_error("Could not convert CertificateSigningUseEnum to CertificateSigningUseEnum");
48+
case ocpp::CertificateSigningUseEnum::ManufacturerCertificate:
49+
// TODO: we don't have this value in ocpp
50+
throw std::runtime_error(
51+
"Could not convert ocpp::CertificateSigningUseEnum::ManufacturerCertificate missing type");
5052
}
53+
54+
throw std::runtime_error("Could not convert CertificateSigningUseEnum to CertificateSigningUseEnum");
5155
}
5256

5357
ocpp::v201::HashAlgorithmEnum to_ocpp_v201(ocpp::HashAlgorithmEnumType other) {
@@ -58,9 +62,9 @@ ocpp::v201::HashAlgorithmEnum to_ocpp_v201(ocpp::HashAlgorithmEnumType other) {
5862
return ocpp::v201::HashAlgorithmEnum::SHA384;
5963
case ocpp::HashAlgorithmEnumType::SHA512:
6064
return ocpp::v201::HashAlgorithmEnum::SHA512;
61-
default:
62-
throw std::runtime_error("Could not convert HashAlgorithmEnumType to HashAlgorithmEnum");
6365
}
66+
67+
throw std::runtime_error("Could not convert HashAlgorithmEnumType to HashAlgorithmEnum");
6468
}
6569

6670
ocpp::v201::InstallCertificateStatusEnum to_ocpp_v201(ocpp::InstallCertificateResult other) {
@@ -83,9 +87,9 @@ ocpp::v201::InstallCertificateStatusEnum to_ocpp_v201(ocpp::InstallCertificateRe
8387
return ocpp::v201::InstallCertificateStatusEnum::Failed;
8488
case ocpp::InstallCertificateResult::Accepted:
8589
return ocpp::v201::InstallCertificateStatusEnum::Accepted;
86-
default:
87-
throw std::runtime_error("Could not convert InstallCertificateResult to InstallCertificateStatusEnum");
8890
}
91+
92+
throw std::runtime_error("Could not convert InstallCertificateResult to InstallCertificateStatusEnum");
8993
}
9094

9195
ocpp::v201::DeleteCertificateStatusEnum to_ocpp_v201(ocpp::DeleteCertificateResult other) {
@@ -96,9 +100,9 @@ ocpp::v201::DeleteCertificateStatusEnum to_ocpp_v201(ocpp::DeleteCertificateResu
96100
return ocpp::v201::DeleteCertificateStatusEnum ::Failed;
97101
case ocpp::DeleteCertificateResult::NotFound:
98102
return ocpp::v201::DeleteCertificateStatusEnum ::NotFound;
99-
default:
100-
throw std::runtime_error("Could not convert DeleteCertificateResult to DeleteCertificateResult");
101103
}
104+
105+
throw std::runtime_error("Could not convert DeleteCertificateResult to DeleteCertificateResult");
102106
}
103107

104108
ocpp::v201::CertificateHashDataType to_ocpp_v201(ocpp::CertificateHashDataType other) {
@@ -155,9 +159,9 @@ ocpp::CertificateType from_ocpp_v201(ocpp::v201::GetCertificateIdUseEnum other)
155159
return ocpp::CertificateType::CSMSRootCertificate;
156160
case ocpp::v201::GetCertificateIdUseEnum::ManufacturerRootCertificate:
157161
return ocpp::CertificateType::MFRootCertificate;
158-
default:
159-
throw std::runtime_error("Could not convert GetCertificateIdUseEnum to CertificateType");
160162
}
163+
164+
throw std::runtime_error("Could not convert GetCertificateIdUseEnum to CertificateType");
161165
}
162166

163167
std::vector<ocpp::CertificateType> from_ocpp_v201(const std::vector<ocpp::v201::GetCertificateIdUseEnum>& other) {
@@ -178,9 +182,9 @@ ocpp::CaCertificateType from_ocpp_v201(ocpp::v201::InstallCertificateUseEnum oth
178182
return ocpp::CaCertificateType::CSMS;
179183
case ocpp::v201::InstallCertificateUseEnum::ManufacturerRootCertificate:
180184
return ocpp::CaCertificateType::MF;
181-
default:
182-
throw std::runtime_error("Could not convert CaCertificateType to InstallCertificateUseEnum");
183185
}
186+
187+
throw std::runtime_error("Could not convert CaCertificateType to InstallCertificateUseEnum");
184188
}
185189

186190
ocpp::CertificateSigningUseEnum from_ocpp_v201(ocpp::v201::CertificateSigningUseEnum other) {
@@ -189,9 +193,9 @@ ocpp::CertificateSigningUseEnum from_ocpp_v201(ocpp::v201::CertificateSigningUse
189193
return ocpp::CertificateSigningUseEnum::ChargingStationCertificate;
190194
case ocpp::v201::CertificateSigningUseEnum::V2GCertificate:
191195
return ocpp::CertificateSigningUseEnum::V2GCertificate;
192-
default:
193-
throw std::runtime_error("Could not convert CertificateSigningUseEnum to CertificateSigningUseEnum");
194196
}
197+
198+
throw std::runtime_error("Could not convert CertificateSigningUseEnum to CertificateSigningUseEnum");
195199
}
196200

197201
ocpp::HashAlgorithmEnumType from_ocpp_v201(ocpp::v201::HashAlgorithmEnum other) {
@@ -202,9 +206,9 @@ ocpp::HashAlgorithmEnumType from_ocpp_v201(ocpp::v201::HashAlgorithmEnum other)
202206
return ocpp::HashAlgorithmEnumType::SHA384;
203207
case ocpp::v201::HashAlgorithmEnum::SHA512:
204208
return ocpp::HashAlgorithmEnumType::SHA512;
205-
default:
206-
throw std::runtime_error("Could not convert HashAlgorithmEnum to HashAlgorithmEnumType");
207209
}
210+
211+
throw std::runtime_error("Could not convert HashAlgorithmEnum to HashAlgorithmEnumType");
208212
}
209213

210214
ocpp::InstallCertificateResult from_ocpp_v201(ocpp::v201::InstallCertificateStatusEnum other) {
@@ -215,10 +219,9 @@ ocpp::InstallCertificateResult from_ocpp_v201(ocpp::v201::InstallCertificateStat
215219
return ocpp::InstallCertificateResult::WriteError;
216220
case ocpp::v201::InstallCertificateStatusEnum::Accepted:
217221
return ocpp::InstallCertificateResult::Accepted;
218-
default:
219-
throw std::runtime_error(
220-
"Could not convert InstallCertificateResult to evse_security::InstallCertificateResult");
221222
}
223+
224+
throw std::runtime_error("Could not convert InstallCertificateResult to evse_security::InstallCertificateResult");
222225
}
223226

224227
ocpp::DeleteCertificateResult from_ocpp_v201(ocpp::v201::DeleteCertificateStatusEnum other) {
@@ -229,9 +232,9 @@ ocpp::DeleteCertificateResult from_ocpp_v201(ocpp::v201::DeleteCertificateStatus
229232
return ocpp::DeleteCertificateResult::Failed;
230233
case ocpp::v201::DeleteCertificateStatusEnum::NotFound:
231234
return ocpp::DeleteCertificateResult::NotFound;
232-
default:
233-
throw std::runtime_error("Could not convert DeleteCertificateResult to evse_security::DeleteCertificateResult");
234235
}
236+
237+
throw std::runtime_error("Could not convert DeleteCertificateResult to evse_security::DeleteCertificateResult");
235238
}
236239

237240
ocpp::CertificateHashDataType from_ocpp_v201(ocpp::v201::CertificateHashDataType other) {

lib/ocpp/common/evse_security_impl.cpp

+12-8
Original file line numberDiff line numberDiff line change
@@ -170,9 +170,9 @@ CaCertificateType to_ocpp(evse_security::CaCertificateType other) {
170170
return CaCertificateType::CSMS;
171171
case evse_security::CaCertificateType::MF:
172172
return CaCertificateType::MF;
173-
default:
174-
throw std::runtime_error("Could not convert evse_security::CaCertificateType to CaCertificateType");
175173
}
174+
175+
throw std::runtime_error("Could not convert evse_security::CaCertificateType to CaCertificateType");
176176
}
177177

178178
CertificateSigningUseEnum to_ocpp(evse_security::LeafCertificateType other) {
@@ -183,9 +183,12 @@ CertificateSigningUseEnum to_ocpp(evse_security::LeafCertificateType other) {
183183
return CertificateSigningUseEnum::V2GCertificate;
184184
case evse_security::LeafCertificateType::MF:
185185
return CertificateSigningUseEnum::ManufacturerCertificate;
186-
default:
187-
throw std::runtime_error("Could not convert evse_security::LeafCertificateType to CertificateSigningUseEnum");
186+
case evse_security::LeafCertificateType::MO:
187+
throw std::runtime_error(
188+
"Could not convert evse_security::LeafCertificateType to CertificateSigningUseEnum. Missing type");
188189
}
190+
191+
throw std::runtime_error("Could not convert evse_security::LeafCertificateType to CertificateSigningUseEnum");
189192
}
190193

191194
CertificateType to_ocpp(evse_security::CertificateType other) {
@@ -276,11 +279,12 @@ CertificateValidationResult to_ocpp(evse_security::CertificateValidationResult o
276279
return CertificateValidationResult::InvalidChain;
277280
case evse_security::CertificateValidationResult::Unknown:
278281
return CertificateValidationResult::Unknown;
279-
;
280-
default:
281-
throw std::runtime_error(
282-
"Could not convert evse_security::CertificateValidationResult to CertificateValidationResult");
282+
case evse_security::CertificateValidationResult::Expired:
283+
return CertificateValidationResult::Expired;
283284
}
285+
286+
throw std::runtime_error(
287+
"Could not convert evse_security::CertificateValidationResult to CertificateValidationResult");
284288
}
285289

286290
DeleteCertificateResult to_ocpp(evse_security::DeleteCertificateResult other) {

lib/ocpp/common/types.cpp

+10-2
Original file line numberDiff line numberDiff line change
@@ -1238,9 +1238,17 @@ v16::FirmwareStatus firmware_status_notification_to_firmware_status(const Firmwa
12381238
return v16::FirmwareStatus::Installing;
12391239
case FirmwareStatusNotification::Installed:
12401240
return v16::FirmwareStatus::Installed;
1241-
default:
1242-
throw std::out_of_range("Could not convert to v16::FirmwareStatus");
1241+
case FirmwareStatusNotification::DownloadScheduled:
1242+
case FirmwareStatusNotification::DownloadPaused:
1243+
case FirmwareStatusNotification::InstallRebooting:
1244+
case FirmwareStatusNotification::InstallScheduled:
1245+
case FirmwareStatusNotification::InstallVerificationFailed:
1246+
case FirmwareStatusNotification::InvalidSignature:
1247+
case FirmwareStatusNotification::SignatureVerified:
1248+
throw std::out_of_range("Could not convert FirmwareStatusNotification to v16::FirmwareStatus. Missing type");
12431249
}
1250+
1251+
throw std::out_of_range("Could not convert to v16::FirmwareStatus");
12441252
}
12451253

12461254
v16::FirmwareStatusEnumType

lib/ocpp/common/websocket/websocket_libwebsockets.cpp

+100
Original file line numberDiff line numberDiff line change
@@ -1387,6 +1387,106 @@ int WebsocketLibwebsockets::process_callback(void* wsi_ptr, int callback_reason,
13871387
case LWS_CALLBACK_CLIENT_HTTP_DROP_PROTOCOL:
13881388
break;
13891389

1390+
// TODO(ioan): do we really want this huge switches
1391+
case LWS_CALLBACK_PROTOCOL_INIT:
1392+
case LWS_CALLBACK_PROTOCOL_DESTROY:
1393+
case LWS_CALLBACK_WSI_CREATE:
1394+
case LWS_CALLBACK_WSI_TX_CREDIT_GET:
1395+
case LWS_CALLBACK_OPENSSL_LOAD_EXTRA_SERVER_VERIFY_CERTS:
1396+
case LWS_CALLBACK_OPENSSL_PERFORM_CLIENT_CERT_VERIFICATION:
1397+
case LWS_CALLBACK_SSL_INFO:
1398+
case LWS_CALLBACK_HTTP:
1399+
case LWS_CALLBACK_HTTP_BODY:
1400+
case LWS_CALLBACK_HTTP_BODY_COMPLETION:
1401+
case LWS_CALLBACK_HTTP_FILE_COMPLETION:
1402+
case LWS_CALLBACK_HTTP_WRITEABLE:
1403+
case LWS_CALLBACK_CLOSED_HTTP:
1404+
case LWS_CALLBACK_FILTER_HTTP_CONNECTION:
1405+
case LWS_CALLBACK_ADD_HEADERS:
1406+
case LWS_CALLBACK_VERIFY_BASIC_AUTHORIZATION:
1407+
case LWS_CALLBACK_CHECK_ACCESS_RIGHTS:
1408+
case LWS_CALLBACK_PROCESS_HTML:
1409+
case LWS_CALLBACK_HTTP_BIND_PROTOCOL:
1410+
case LWS_CALLBACK_HTTP_DROP_PROTOCOL:
1411+
case LWS_CALLBACK_HTTP_CONFIRM_UPGRADE:
1412+
case LWS_CALLBACK_ESTABLISHED_CLIENT_HTTP:
1413+
case LWS_CALLBACK_CLOSED_CLIENT_HTTP:
1414+
case LWS_CALLBACK_RECEIVE_CLIENT_HTTP_READ:
1415+
case LWS_CALLBACK_RECEIVE_CLIENT_HTTP:
1416+
case LWS_CALLBACK_COMPLETED_CLIENT_HTTP:
1417+
case LWS_CALLBACK_CLIENT_HTTP_WRITEABLE:
1418+
case LWS_CALLBACK_CLIENT_HTTP_REDIRECT:
1419+
case LWS_CALLBACK_CLIENT_HTTP_BIND_PROTOCOL:
1420+
case LWS_CALLBACK_ESTABLISHED:
1421+
case LWS_CALLBACK_CLOSED:
1422+
case LWS_CALLBACK_SERVER_WRITEABLE:
1423+
case LWS_CALLBACK_RECEIVE:
1424+
case LWS_CALLBACK_RECEIVE_PONG:
1425+
case LWS_CALLBACK_FILTER_PROTOCOL_CONNECTION:
1426+
case LWS_CALLBACK_CONFIRM_EXTENSION_OKAY:
1427+
case LWS_CALLBACK_WS_SERVER_BIND_PROTOCOL:
1428+
case LWS_CALLBACK_WS_SERVER_DROP_PROTOCOL:
1429+
case LWS_CALLBACK_CLIENT_CONFIRM_EXTENSION_SUPPORTED:
1430+
case LWS_CALLBACK_WS_EXT_DEFAULTS:
1431+
case LWS_CALLBACK_FILTER_NETWORK_CONNECTION:
1432+
case LWS_CALLBACK_WS_CLIENT_BIND_PROTOCOL:
1433+
case LWS_CALLBACK_GET_THREAD_ID:
1434+
case LWS_CALLBACK_ADD_POLL_FD:
1435+
case LWS_CALLBACK_DEL_POLL_FD:
1436+
case LWS_CALLBACK_CHANGE_MODE_POLL_FD:
1437+
case LWS_CALLBACK_LOCK_POLL:
1438+
case LWS_CALLBACK_UNLOCK_POLL:
1439+
case LWS_CALLBACK_CGI:
1440+
case LWS_CALLBACK_CGI_TERMINATED:
1441+
case LWS_CALLBACK_CGI_STDIN_DATA:
1442+
case LWS_CALLBACK_CGI_STDIN_COMPLETED:
1443+
case LWS_CALLBACK_CGI_PROCESS_ATTACH:
1444+
case LWS_CALLBACK_SESSION_INFO:
1445+
case LWS_CALLBACK_GS_EVENT:
1446+
case LWS_CALLBACK_HTTP_PMO:
1447+
case LWS_CALLBACK_RAW_PROXY_CLI_RX:
1448+
case LWS_CALLBACK_RAW_PROXY_SRV_RX:
1449+
case LWS_CALLBACK_RAW_PROXY_CLI_CLOSE:
1450+
case LWS_CALLBACK_RAW_PROXY_SRV_CLOSE:
1451+
case LWS_CALLBACK_RAW_PROXY_CLI_WRITEABLE:
1452+
case LWS_CALLBACK_RAW_PROXY_SRV_WRITEABLE:
1453+
case LWS_CALLBACK_RAW_PROXY_CLI_ADOPT:
1454+
case LWS_CALLBACK_RAW_PROXY_SRV_ADOPT:
1455+
case LWS_CALLBACK_RAW_PROXY_CLI_BIND_PROTOCOL:
1456+
case LWS_CALLBACK_RAW_PROXY_SRV_BIND_PROTOCOL:
1457+
case LWS_CALLBACK_RAW_PROXY_CLI_DROP_PROTOCOL:
1458+
case LWS_CALLBACK_RAW_PROXY_SRV_DROP_PROTOCOL:
1459+
case LWS_CALLBACK_RAW_RX:
1460+
case LWS_CALLBACK_RAW_CLOSE:
1461+
case LWS_CALLBACK_RAW_WRITEABLE:
1462+
case LWS_CALLBACK_RAW_ADOPT:
1463+
case LWS_CALLBACK_RAW_CONNECTED:
1464+
case LWS_CALLBACK_RAW_SKT_BIND_PROTOCOL:
1465+
case LWS_CALLBACK_RAW_SKT_DROP_PROTOCOL:
1466+
case LWS_CALLBACK_RAW_ADOPT_FILE:
1467+
case LWS_CALLBACK_RAW_RX_FILE:
1468+
case LWS_CALLBACK_RAW_WRITEABLE_FILE:
1469+
case LWS_CALLBACK_RAW_CLOSE_FILE:
1470+
case LWS_CALLBACK_RAW_FILE_BIND_PROTOCOL:
1471+
case LWS_CALLBACK_RAW_FILE_DROP_PROTOCOL:
1472+
case LWS_CALLBACK_TIMER:
1473+
case LWS_CALLBACK_CHILD_CLOSING:
1474+
case LWS_CALLBACK_VHOST_CERT_AGING:
1475+
case LWS_CALLBACK_VHOST_CERT_UPDATE:
1476+
case LWS_CALLBACK_MQTT_NEW_CLIENT_INSTANTIATED:
1477+
case LWS_CALLBACK_MQTT_IDLE:
1478+
case LWS_CALLBACK_MQTT_CLIENT_ESTABLISHED:
1479+
case LWS_CALLBACK_MQTT_SUBSCRIBED:
1480+
case LWS_CALLBACK_MQTT_CLIENT_WRITEABLE:
1481+
case LWS_CALLBACK_MQTT_CLIENT_RX:
1482+
case LWS_CALLBACK_MQTT_UNSUBSCRIBED:
1483+
case LWS_CALLBACK_MQTT_DROP_PROTOCOL:
1484+
case LWS_CALLBACK_MQTT_CLIENT_CLOSED:
1485+
case LWS_CALLBACK_MQTT_ACK:
1486+
case LWS_CALLBACK_MQTT_RESEND:
1487+
case LWS_CALLBACK_MQTT_UNSUBSCRIBE_TIMEOUT:
1488+
case LWS_CALLBACK_MQTT_SHADOW_TIMEOUT:
1489+
case LWS_CALLBACK_USER:
13901490
default:
13911491
EVLOG_debug << "Callback with unhandled reason: " << reason;
13921492
break;

0 commit comments

Comments
 (0)