From 119593d8e1ae8b4530d3cac7ef5998f3ff53abc6 Mon Sep 17 00:00:00 2001 From: gilteixeira Date: Fri, 31 Mar 2023 14:59:27 +0100 Subject: [PATCH] generalized the EVMessages and added evrsrm --- .vscode/settings.json | 7 ++++++- src/CMakeLists.txt | 3 ++- src/config.c | 2 +- src/{evcsnm.c => evm.c} | 22 ++++++++++++++++------ src/{evcsnm.h => evm.h} | 24 ++++++++++++------------ src/facilities.c | 21 ++++++++++++++++++--- src/facilities.h | 4 ++-- src/requests.c | 9 +++++++++ 8 files changed, 66 insertions(+), 26 deletions(-) rename src/{evcsnm.c => evm.c} (96%) rename src/{evcsnm.h => evm.h} (54%) diff --git a/.vscode/settings.json b/.vscode/settings.json index 93f6441..47993ba 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -13,6 +13,11 @@ "asn_application.h": "c", "itspduheader.h": "c", "evchargingspotnotificationpoimessage.h": "c", - "vcm.h": "c" + "vcm.h": "c", + "cam.h": "c", + "facilities.h": "c", + "indications.h": "c", + "time.h": "c", + "stdint.h": "c" } } \ No newline at end of file diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 09d3cac..ca34548 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -10,7 +10,7 @@ ADD_EXECUTABLE(it2s-itss-facilities saem.c tpm.c vcm.c - evcsnm.c + evm.c ) TARGET_LINK_LIBRARIES(it2s-itss-facilities @@ -30,6 +30,7 @@ TARGET_LINK_LIBRARIES(it2s-itss-facilities -lit2s-asn-tpm -lit2s-asn-vcm -lit2s-asn-evcsnm + -lit2s-asn-evrsrm -lit2s-asn-verco -lit2s-tender -lit2s-obd diff --git a/src/config.c b/src/config.c index 98b5617..edf0365 100644 --- a/src/config.c +++ b/src/config.c @@ -395,7 +395,7 @@ int facilities_config() { facilities.coordination.vcm_period_max = config->facilities.mcm.period_max; // EVCSNM - facilities.evcsnm_args.activate = config->facilities.evcsnm.activate; + facilities.evm_args.activate = config->facilities.evcsnm.activate; // Replay facilities.replay = config->networking.replay.activate; diff --git a/src/evcsnm.c b/src/evm.c similarity index 96% rename from src/evcsnm.c rename to src/evm.c index e68d86f..6e0887a 100644 --- a/src/evcsnm.c +++ b/src/evm.c @@ -1,4 +1,4 @@ -#include "evcsnm.h" +#include "evm.h" #include "facilities.h" #include @@ -126,12 +126,22 @@ int evcsnm_check(EvcsnPdu_t *evcsnm) return 0; } -enum EVCSNM_CHECK_R check_evcsnm(BTPPacketIndication_t *bpi, EvcsnPdu_t *evcsnm, uint8_t *ssp, uint32_t ssp_len) -{ - int rv = 0; - return rv; +int evrsrm_check(EV_RSR_t *evrsrm) +{ + return 0; } + +enum EVM_CHECK_R check_evcsnm(BTPPacketIndication_t *bpi, EvcsnPdu_t *evcsnm, uint8_t *ssp, uint32_t ssp_len) +{ + return 0; +} + +enum EVM_CHECK_R check_evrsrm(BTPPacketIndication_t *bpi, EV_RSR_t *evrsrm, uint8_t *ssp, uint32_t ssp_len) +{ + return 0; +} + void *evcsn_service() { int rv = 0; @@ -176,7 +186,7 @@ void *evcsn_service() while (!facilities.exit) { usleep(1000 * 1000); - if (facilities.evcsnm_args.activate) + if (facilities.evm_args.activate) { rv = mk_evcsnm(bpr->data.buf, (uint32_t *)&bpr->data.size); if (rv) diff --git a/src/evcsnm.h b/src/evm.h similarity index 54% rename from src/evcsnm.h rename to src/evm.h index 0ccd2fc..4e70f9f 100644 --- a/src/evcsnm.h +++ b/src/evm.h @@ -1,5 +1,5 @@ -#ifndef FACILITIES_EVCSNM_H -#define FACILITIES_EVCSNM_H +#ifndef FACILITIES_EVM_H +#define FACILITIES_EVM_H #include #include @@ -7,17 +7,15 @@ #include #include +#include #include #include -#define POS_HISTORY_MAX_LEN 24 -#define PATH_HISTORY_MAX_LEN POS_HISTORY_MAX_LEN-1 - -enum EVCSNM_CHECK_R { - EVCSNM_OK, - EVCSNM_INVALID, - EVCSNM_BAD_PERMISSIONS +enum EVM_CHECK_R { + EVM_OK, + EVM_INVALID, + EVM_BAD_PERMISSIONS }; /* @@ -25,7 +23,8 @@ enum EVCSNM_CHECK_R { * * @return A EVCSNM check code */ -enum EVCSNM_CHECK_R check_evcsnm(BTPPacketIndication_t *bpi, EvcsnPdu_t *evcsnm, uint8_t *ssp, uint32_t ssp_len); +enum EVM_CHECK_R check_evcsnm(BTPPacketIndication_t *bpi, EvcsnPdu_t *evcsnm, uint8_t *ssp, uint32_t ssp_len); +enum EVM_CHECK_R check_evrsrm(BTPPacketIndication_t *bpi, EV_RSR_t *evrsrm, uint8_t *ssp, uint32_t ssp_len); /* * @brief Main CA service @@ -40,9 +39,10 @@ void* evcsn_service(); * @return 0 on success, other value otherwise */ int evcsnm_check(EvcsnPdu_t* evcsnm); +int evrsrm_check(EV_RSR_t *evrsrm); -typedef struct evcsnm_args { +typedef struct evm_args { bool activate; -} evcsnm_args_t; +} evm_args_t; #endif diff --git a/src/facilities.c b/src/facilities.c index ae6a197..d0a7d77 100644 --- a/src/facilities.c +++ b/src/facilities.c @@ -9,7 +9,7 @@ #include "saem.h" #include "tpm.h" #include "vcm.h" -#include "evcsnm.h" +#include "evm.h" #include #include @@ -171,6 +171,14 @@ static int transport_indication(void *responder, void **security_socket, uint8_t handled_msg = true; fwd = true; break; + + case Port_evrsr: /* EVRSRM */ + its_msg_descriptor = &asn_DEF_EV_RSR; + its_msg = calloc(1, sizeof(EV_RSR_t)); + its_msg_type = messageID_evcsn; + handled_msg = true; + fwd = true; + break; default: log_debug("messsage with unhandled BTP port received (%lld), ignoring", tpi->choice.btp.destinationPort); @@ -286,12 +294,19 @@ static int transport_indication(void *responder, void **security_socket, uint8_t fwd = true; break; case Port_poi: - if (facilities.evcsnm_args.activate) + if (facilities.evm_args.activate) { evcsnm_check(its_msg); } fwd = true; break; + + case Port_evrsr: + if (facilities.evm_args.activate) + { + evrsrm_check(its_msg); + } + fwd = true; default: break; } @@ -936,7 +951,7 @@ int main() } // EVCSN - if (facilities.evcsnm_args.activate) + if (facilities.evm_args.activate) pthread_create(&facilities.evcsn_service, NULL, evcsn_service, NULL); security_socket = itss_0connect(facilities.zmq.security_address, ZMQ_REQ); diff --git a/src/facilities.h b/src/facilities.h index c4b7123..2722045 100644 --- a/src/facilities.h +++ b/src/facilities.h @@ -12,7 +12,7 @@ #include "saem.h" #include "tpm.h" #include "vcm.h" -#include "evcsnm.h" +#include "evm.h" #include #include @@ -73,7 +73,7 @@ typedef struct facilities { coordination_t coordination; // EVCSN - evcsnm_args_t evcsnm_args; + evm_args_t evm_args; // Logging struct { diff --git a/src/requests.c b/src/requests.c index 97e0fe7..c5fc7c3 100644 --- a/src/requests.c +++ b/src/requests.c @@ -4,6 +4,7 @@ #include "infrastructure.h" #include "requests.h" #include "cpm.h" +#include "evm.h" #include #include @@ -108,6 +109,14 @@ int facilities_request_single_message(void* responder, FacilitiesMessageRequest_ bpr->gn.trafficClass = 2; break; + case ItsMessageType_evrsr: + its_msg_def = &asn_DEF_EV_RSR; + its_msg = calloc(1, sizeof(EV_RSR_t)); + bpr->destinationPort = Port_evrsr; + bpr->gn.packetTransportType = PacketTransportType_shb; + bpr->gn.trafficClass = 1; + break; + default: log_error("unrecognized FR message type (%lld)", frm->itsMessageType); facilities_request_result_rejected(responder);