Skip to content

Commit 16d4162

Browse files
dorezyukDima Dorezyuk
andauthored
Extend PhyVersoBSP with PpState, Temperature and OpaqueData (EVerest#687)
* Extend PhyversBSP with PpState, Temperature and OpaqueData Signed-off-by: Dima Dorezyuk <ddo@qwello.eu> * fix format Signed-off-by: Dima Dorezyuk <ddo@qwello.eu> * fix bazel Signed-off-by: Dima Dorezyuk <ddo@qwello.eu> * fix build Signed-off-by: Dima Dorezyuk <ddo@qwello.eu> * update the protobuf file Signed-off-by: Dima Dorezyuk <ddo@qwello.eu> --------- Signed-off-by: Dima Dorezyuk <ddo@qwello.eu> Co-authored-by: Dima Dorezyuk <ddo@qwello.eu>
1 parent cc8f1aa commit 16d4162

33 files changed

+796
-116
lines changed

interfaces/generic_array.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
description: This interface publishes just generic data blobs.
2+
vars:
3+
vector_of_ints:
4+
description: data blob.
5+
type: object
6+
$ref: /generic_array#/VectorOfInts
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
description: Temperatures from MCU
2+
vars:
3+
MCUTemperatures:
4+
description: Temperatures
5+
type: object
6+
$ref: /phyverso_mcu_temperature#/MCUTemperatures

modules/PhyVersoBSP/BUILD.bazel

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
load("//modules:module.bzl", "cc_everest_module")
2+
3+
IMPLS = [
4+
"connector_2",
5+
"connector_1",
6+
"rcd_1",
7+
"rcd_2",
8+
"connector_lock_1",
9+
"connector_lock_2",
10+
"phyverso_mcu_temperature",
11+
"system_specific_data_1",
12+
"system_specific_data_2",
13+
]
14+
15+
cc_everest_module(
16+
name = "PhyVersoBSP",
17+
deps = [
18+
"//modules/PhyVersoBSP/phyverso_mcu_comms",
19+
],
20+
impls = IMPLS,
21+
srcs = ["board_support_common.cpp", "board_support_common.hpp"],
22+
)

modules/PhyVersoBSP/CMakeLists.txt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ ev_setup_cpp_module()
1111
# insert your custom targets and additional config variables here
1212
add_subdirectory(phyverso_mcu_comms)
1313
add_subdirectory(phyverso_cli)
14-
add_subdirectory(phyverso_config)
1514

1615
target_include_directories(${MODULE_NAME}
1716
PRIVATE
@@ -38,6 +37,9 @@ target_sources(${MODULE_NAME}
3837
"rcd_2/ac_rcdImpl.cpp"
3938
"connector_lock_1/connector_lockImpl.cpp"
4039
"connector_lock_2/connector_lockImpl.cpp"
40+
"phyverso_mcu_temperature/phyverso_mcu_temperatureImpl.cpp"
41+
"system_specific_data_1/generic_arrayImpl.cpp"
42+
"system_specific_data_2/generic_arrayImpl.cpp"
4143
)
4244

4345
# ev@c55432ab-152c-45a9-9d2e-7281d50c69c3:v1

modules/PhyVersoBSP/PhyVersoBSP.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,9 @@ void PhyVersoBSP::init() {
2020
invoke_init(*p_rcd_2);
2121
invoke_init(*p_connector_lock_1);
2222
invoke_init(*p_connector_lock_2);
23+
invoke_init(*p_phyverso_mcu_temperature);
24+
invoke_init(*p_system_specific_data_1);
25+
invoke_init(*p_system_specific_data_2);
2326

2427
std::filesystem::path mcu_config_file = config.mcu_config_file;
2528

@@ -47,6 +50,9 @@ void PhyVersoBSP::ready() {
4750
invoke_ready(*p_rcd_2);
4851
invoke_ready(*p_connector_lock_1);
4952
invoke_ready(*p_connector_lock_2);
53+
invoke_ready(*p_phyverso_mcu_temperature);
54+
invoke_ready(*p_system_specific_data_1);
55+
invoke_ready(*p_system_specific_data_2);
5056
}
5157

5258
} // namespace module

modules/PhyVersoBSP/PhyVersoBSP.hpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
// SPDX-License-Identifier: Apache-2.0
22
// Copyright Pionix GmbH and Contributors to EVerest
3-
43
#ifndef PHY_VERSO_BSP_HPP
54
#define PHY_VERSO_BSP_HPP
65

@@ -15,6 +14,8 @@
1514
#include <generated/interfaces/ac_rcd/Implementation.hpp>
1615
#include <generated/interfaces/connector_lock/Implementation.hpp>
1716
#include <generated/interfaces/evse_board_support/Implementation.hpp>
17+
#include <generated/interfaces/generic_array/Implementation.hpp>
18+
#include <generated/interfaces/phyverso_mcu_temperature/Implementation.hpp>
1819

1920
// ev@4bf81b14-a215-475c-a1d3-0a484ae48918:v1
2021
// insert your custom include headers here
@@ -57,7 +58,10 @@ class PhyVersoBSP : public Everest::ModuleBase {
5758
std::unique_ptr<evse_board_supportImplBase> p_connector_1,
5859
std::unique_ptr<evse_board_supportImplBase> p_connector_2, std::unique_ptr<ac_rcdImplBase> p_rcd_1,
5960
std::unique_ptr<ac_rcdImplBase> p_rcd_2, std::unique_ptr<connector_lockImplBase> p_connector_lock_1,
60-
std::unique_ptr<connector_lockImplBase> p_connector_lock_2, Conf& config) :
61+
std::unique_ptr<connector_lockImplBase> p_connector_lock_2,
62+
std::unique_ptr<phyverso_mcu_temperatureImplBase> p_phyverso_mcu_temperature,
63+
std::unique_ptr<generic_arrayImplBase> p_system_specific_data_1,
64+
std::unique_ptr<generic_arrayImplBase> p_system_specific_data_2, Conf& config) :
6165
ModuleBase(info),
6266
mqtt(mqtt_provider),
6367
telemetry(telemetry),
@@ -67,6 +71,9 @@ class PhyVersoBSP : public Everest::ModuleBase {
6771
p_rcd_2(std::move(p_rcd_2)),
6872
p_connector_lock_1(std::move(p_connector_lock_1)),
6973
p_connector_lock_2(std::move(p_connector_lock_2)),
74+
p_phyverso_mcu_temperature(std::move(p_phyverso_mcu_temperature)),
75+
p_system_specific_data_1(std::move(p_system_specific_data_1)),
76+
p_system_specific_data_2(std::move(p_system_specific_data_2)),
7077
config(config){};
7178

7279
Everest::MqttProvider& mqtt;
@@ -77,6 +84,9 @@ class PhyVersoBSP : public Everest::ModuleBase {
7784
const std::unique_ptr<ac_rcdImplBase> p_rcd_2;
7885
const std::unique_ptr<connector_lockImplBase> p_connector_lock_1;
7986
const std::unique_ptr<connector_lockImplBase> p_connector_lock_2;
87+
const std::unique_ptr<phyverso_mcu_temperatureImplBase> p_phyverso_mcu_temperature;
88+
const std::unique_ptr<generic_arrayImplBase> p_system_specific_data_1;
89+
const std::unique_ptr<generic_arrayImplBase> p_system_specific_data_2;
8090
const Conf& config;
8191

8292
// ev@1fce4c5e-0ab8-41bb-90f7-14277703d2ac:v1

modules/PhyVersoBSP/connector_1/evse_board_supportImpl.cpp

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ void evse_board_supportImpl::init() {
4747
EVLOG_info << "[1] CP Voltage: " << t.cp_voltage_hi << " " << t.cp_voltage_lo;
4848
}
4949
});
50+
51+
mod->serial.signal_pp_state.connect([this](int connector, PpState s) {
52+
if (connector == 1) {
53+
EVLOG_info << "[1] PpState " << s;
54+
}
55+
last_pp_state = s;
56+
});
5057
}
5158

5259
void evse_board_supportImpl::ready() {
@@ -108,8 +115,26 @@ void evse_board_supportImpl::handle_evse_replug(int& value) {
108115
}
109116

110117
types::board_support_common::ProximityPilot evse_board_supportImpl::handle_ac_read_pp_ampacity() {
111-
// IMPLEMENT ME
112-
return {types::board_support_common::Ampacity::A_32};
118+
switch (last_pp_state) {
119+
case PpState_STATE_NC: {
120+
return {types::board_support_common::Ampacity::None};
121+
}
122+
case PpState_STATE_13A: {
123+
return {types::board_support_common::Ampacity::A_13};
124+
}
125+
case PpState_STATE_20A: {
126+
return {types::board_support_common::Ampacity::A_20};
127+
}
128+
case PpState_STATE_32A: {
129+
return {types::board_support_common::Ampacity::A_32};
130+
}
131+
case PpState_STATE_70A: {
132+
return {types::board_support_common::Ampacity::A_63_3ph_70_1ph};
133+
}
134+
default: {
135+
return {types::board_support_common::Ampacity::None};
136+
}
137+
}
113138
}
114139

115140
void evse_board_supportImpl::handle_ac_set_overcurrent_limit_A(double& value) {

modules/PhyVersoBSP/connector_1/evse_board_supportImpl.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class evse_board_supportImpl : public evse_board_supportImplBase {
6262
types::evse_board_support::HardwareCapabilities caps;
6363
std::mutex caps_mutex;
6464
CpState last_cp_state;
65+
PpState last_pp_state; ///< The last pp state received from the MCU.
6566
// ev@3370e4dd-95f4-47a9-aaec-ea76f34a66c9:v1
6667
};
6768

modules/PhyVersoBSP/connector_2/evse_board_supportImpl.cpp

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ void evse_board_supportImpl::init() {
4747
EVLOG_info << "[2] CP Voltage: " << t.cp_voltage_hi << " " << t.cp_voltage_lo;
4848
}
4949
});
50+
51+
mod->serial.signal_pp_state.connect([this](int connector, PpState s) {
52+
if (connector == 2) {
53+
EVLOG_info << "[2] PpState " << s;
54+
}
55+
last_pp_state = s;
56+
});
5057
}
5158

5259
void evse_board_supportImpl::ready() {
@@ -108,8 +115,26 @@ void evse_board_supportImpl::handle_evse_replug(int& value) {
108115
}
109116

110117
types::board_support_common::ProximityPilot evse_board_supportImpl::handle_ac_read_pp_ampacity() {
111-
// IMPLEMENT ME
112-
return {types::board_support_common::Ampacity::A_32};
118+
switch (last_pp_state) {
119+
case PpState_STATE_NC: {
120+
return {types::board_support_common::Ampacity::None};
121+
}
122+
case PpState_STATE_13A: {
123+
return {types::board_support_common::Ampacity::A_13};
124+
}
125+
case PpState_STATE_20A: {
126+
return {types::board_support_common::Ampacity::A_20};
127+
}
128+
case PpState_STATE_32A: {
129+
return {types::board_support_common::Ampacity::A_32};
130+
}
131+
case PpState_STATE_70A: {
132+
return {types::board_support_common::Ampacity::A_63_3ph_70_1ph};
133+
}
134+
default: {
135+
return {types::board_support_common::Ampacity::None};
136+
}
137+
}
113138
}
114139

115140
void evse_board_supportImpl::handle_ac_set_overcurrent_limit_A(double& value) {

modules/PhyVersoBSP/connector_2/evse_board_supportImpl.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ class evse_board_supportImpl : public evse_board_supportImplBase {
6262
types::evse_board_support::HardwareCapabilities caps;
6363
std::mutex caps_mutex;
6464
CpState last_cp_state;
65+
PpState last_pp_state; ///< The last pp state received from the MCU.
6566
// ev@3370e4dd-95f4-47a9-aaec-ea76f34a66c9:v1
6667
};
6768

0 commit comments

Comments
 (0)