From 248f6c56e17a0896ddbdaa2c81fa436e1a4c5b9a Mon Sep 17 00:00:00 2001 From: SaikrishnaBairamoni Date: Wed, 12 Apr 2023 17:07:58 -0400 Subject: [PATCH 01/10] update docker-compose to point k900 images --- configuration/amd64/docker-compose.yml | 6 +++--- configuration/arm64/docker-compose.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/configuration/amd64/docker-compose.yml b/configuration/amd64/docker-compose.yml index 995c28958..ffafacc38 100755 --- a/configuration/amd64/docker-compose.yml +++ b/configuration/amd64/docker-compose.yml @@ -20,7 +20,7 @@ services: - mysql-datavolume:/var/lib/mysql php: - image: usdotfhwaops/php:7.4.0 + image: usdotfhwaops/php:k900 container_name: php network_mode: host depends_on: @@ -30,7 +30,7 @@ services: tty: true v2xhub: - image: usdotfhwaops/v2xhubamd:latest + image: usdotfhwaops/v2xhubamd:k900 container_name: v2xhub network_mode: host restart: always @@ -44,7 +44,7 @@ services: - ./logs:/var/log/tmx - ./MAP:/var/www/plugins/MAP port_drayage_webservice: - image: usdotfhwaops/port-drayage-webservice:7.4.0 + image: usdotfhwaops/port-drayage-webservice:k900 container_name: port_drayage_webservice network_mode: host secrets: diff --git a/configuration/arm64/docker-compose.yml b/configuration/arm64/docker-compose.yml index d77dc6055..38c3359c6 100644 --- a/configuration/arm64/docker-compose.yml +++ b/configuration/arm64/docker-compose.yml @@ -20,7 +20,7 @@ services: - mysql-datavolume:/var/lib/mysql php: - image: usdotfhwaops/php_arm:7.4.0 + image: usdotfhwaops/php_arm:k900 container_name: php network_mode: host depends_on: @@ -30,7 +30,7 @@ services: tty: true v2xhub: - image: usdotfhwaops/v2xhubarm:latest + image: usdotfhwaops/v2xhubarm:k900 container_name: v2xhub network_mode: host restart: always @@ -44,7 +44,7 @@ services: - ./logs:/var/log/tmx - ./MAP:/var/www/plugins/MAP port_drayage_webservice: - image: usdotfhwaops/port-drayage-webservice_arm:7.4.0 + image: usdotfhwaops/port-drayage-webservice_arm:k900 container_name: port_drayage_webservice network_mode: host secrets: From e86a930facf8b65e2265780b3124ab1956788594 Mon Sep 17 00:00:00 2001 From: dan-du-car <62157949+dan-du-car@users.noreply.github.com> Date: Mon, 17 Apr 2023 12:33:23 -0400 Subject: [PATCH 02/10] Active ERV status update (#520) # PR Details ## Description The ERV should be considered activated when all three of these, emergency response type, sirens are active, and lights are active. ## Related Issue https://github.com/usdot-fhwa-OPS/V2X-Hub/issues/517 ## Motivation and Context ERV use case ## How Has This Been Tested? NA ## Types of changes - [x] Defect fix (non-breaking change that fixes an issue) - [ ] New feature (non-breaking change that adds functionality) - [ ] Breaking change (fix or feature that cause existing functionality to change) ## Checklist: - [ ] I have added any new packages to the sonar-scanner.properties file - [ ] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. - [x] I have read the **CONTRIBUTING** document. [V2XHUB Contributing Guide](https://github.com/usdot-fhwa-OPS/V2X-Hub/blob/develop/Contributing.md) - [ ] I have added tests to cover my changes. - [ ] All new and existing tests passed. --- .../src/ERVCloudForwardingWorker.cpp | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.cpp b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.cpp index 46dd4934e..0ecfbd1db 100644 --- a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.cpp +++ b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.cpp @@ -20,9 +20,9 @@ namespace ERVCloudForwardingPlugin return xml_str; } std::stringstream route_ss; - //Add vehicle current position to the BSMRequest route point + // Add vehicle current position to the BSMRequest route point route_ss << "" << bsmPtr->coreData.lat << "" - << "" << bsmPtr->coreData.Long << ""; + << "" << bsmPtr->coreData.Long << ""; // If there is carma related regional extension value that contains the ERV route points, construct the BSM request with the points. auto bsmCarmaRegion = bsmPtr->regional->list.array[0]->regExtValue.choice.BasicSafetyMessage_addGrpCarma; for (int i = 0; i < bsmCarmaRegion.routeDestinationPoints->list.count; i++) @@ -56,20 +56,12 @@ namespace ERVCloudForwardingPlugin else { // The ERV broadcast BSM that has the PartII content, and the specical vehicle extension within the PartII has the emergency response type. - if (bsm_ptr->partII->list.count > 0 && bsm_ptr->partII->list.array[0]->partII_Value.present == BSMpartIIExtension__partII_Value_PR_SpecialVehicleExtensions ) + if (bsm_ptr->partII->list.count > 0 && bsm_ptr->partII->list.array[0]->partII_Value.present == BSMpartIIExtension__partII_Value_PR_SpecialVehicleExtensions) { - if(bsm_ptr->partII->list.array[0]->partII_Value.choice.SpecialVehicleExtensions.vehicleAlerts->responseType && *bsm_ptr->partII->list.array[0]->partII_Value.choice.SpecialVehicleExtensions.vehicleAlerts->responseType == ResponseType_emergency) + if (bsm_ptr->partII->list.array[0]->partII_Value.choice.SpecialVehicleExtensions.vehicleAlerts->responseType && *bsm_ptr->partII->list.array[0]->partII_Value.choice.SpecialVehicleExtensions.vehicleAlerts->responseType == ResponseType_emergency && bsm_ptr->partII->list.array[0]->partII_Value.choice.SpecialVehicleExtensions.vehicleAlerts->lightsUse == LightbarInUse_inUse && bsm_ptr->partII->list.array[0]->partII_Value.choice.SpecialVehicleExtensions.vehicleAlerts->sirenUse == SirenInUse_inUse) { return true; } - if(bsm_ptr->partII->list.array[0]->partII_Value.choice.SpecialVehicleExtensions.vehicleAlerts->lightsUse == LightbarInUse_inUse) - { - return true; - } - if(bsm_ptr->partII->list.array[0]->partII_Value.choice.SpecialVehicleExtensions.vehicleAlerts->sirenUse == SirenInUse_inUse) - { - return true; - } } return false; } From 53a3a21101d672dc236909f3228c2bbb641d9158 Mon Sep 17 00:00:00 2001 From: dan-du-car <62157949+dan-du-car@users.noreply.github.com> Date: Thu, 20 Apr 2023 00:24:43 -0400 Subject: [PATCH 03/10] Verification Testing: Add v2xhub port number to BSM request (#521) # PR Details ## Description Add v2xhub port number to BSM request The port number helps user to identify which RSU is sending the BSM request to carma-cloud ## Related Issue NA ## Motivation and Context Freight ERV ## How Has This Been Tested? Local integration testing ## Types of changes - [ ] Defect fix (non-breaking change that fixes an issue) - [ ] New feature (non-breaking change that adds functionality) - [ ] Breaking change (fix or feature that cause existing functionality to change) ## Checklist: - [ ] I have added any new packages to the sonar-scanner.properties file - [ ] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. - [ ] I have read the **CONTRIBUTING** document. [V2XHUB Contributing Guide](https://github.com/usdot-fhwa-OPS/V2X-Hub/blob/develop/Contributing.md) - [ ] I have added tests to cover my changes. - [ ] All new and existing tests passed. --- .../src/ERVCloudForwardingPlugin.cpp | 4 ++-- .../src/ERVCloudForwardingWorker.cpp | 4 ++-- .../src/ERVCloudForwardingWorker.h | 2 +- .../test/ERVCloudForwardingWorkerTest.cpp | 7 ++++--- 4 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp index 0118e76a3..6c1dfb96c 100644 --- a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp +++ b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp @@ -24,7 +24,7 @@ namespace ERVCloudForwardingPlugin if (ERVCloudForwardingWorker::IsBSMFromERV(msg)) { // Construct the ERV BSM and forward it to the cloud. - auto xml_str = ERVCloudForwardingWorker::constructERVBSMRequest(msg); + auto xml_str = ERVCloudForwardingWorker::constructERVBSMRequest(msg, _webPort); PLOG(logINFO) << "Forward ERV BSM to cloud: " << xml_str << endl; CloudSendAsync(xml_str, _CLOUDURL, _CLOUDBSMREQ, _POSTMETHOD); uint64_t delayEnd = std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); @@ -193,7 +193,7 @@ namespace ERVCloudForwardingPlugin if (strcmp(local_method.c_str(), "POST") == 0) { curl_easy_setopt(req, CURLOPT_POSTFIELDS, local_msg.c_str()); - curl_easy_setopt(req, CURLOPT_TIMEOUT_MS, 1000L); + curl_easy_setopt(req, CURLOPT_TIMEOUT_MS, 5000L); //Http request timeout in 5 seconds curl_easy_setopt(req, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); res = curl_easy_perform(req); if (res != CURLE_OK) diff --git a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.cpp b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.cpp index 0ecfbd1db..fcf06de42 100644 --- a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.cpp +++ b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.cpp @@ -2,7 +2,7 @@ namespace ERVCloudForwardingPlugin { - std::string ERVCloudForwardingWorker::constructERVBSMRequest(BsmMessage &msg) + std::string ERVCloudForwardingWorker::constructERVBSMRequest(BsmMessage &msg, uint16_t v2xhubPort) { char xml_str[20000]; std::string bsmHex = encodeBSMHex(msg); @@ -32,7 +32,7 @@ namespace ERVCloudForwardingPlugin route_ss << "" << latitude << "" << "" << longitude << ""; } - snprintf(xml_str, sizeof(xml_str), "%s%s", bsmHex.c_str(), route_ss.str().c_str()); + snprintf(xml_str, sizeof(xml_str), "%s%d%s", bsmHex.c_str(), v2xhubPort, route_ss.str().c_str()); return xml_str; } diff --git a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.h b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.h index b6c0fe546..0d1bcd5ce 100644 --- a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.h +++ b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingWorker.h @@ -36,7 +36,7 @@ namespace ERVCloudForwardingPlugin * @param msg The BSM object * @return The BSM request in XML format */ - static std::string constructERVBSMRequest(BsmMessage &msg); + static std::string constructERVBSMRequest(BsmMessage &msg, uint16_t v2xhubPort); /** * @brief Check whether the BSM is sent from an ERV * @param msg The BSM object diff --git a/src/v2i-hub/ERVCloudForwardingPlugin/test/ERVCloudForwardingWorkerTest.cpp b/src/v2i-hub/ERVCloudForwardingPlugin/test/ERVCloudForwardingWorkerTest.cpp index ecd8e6c49..8e75f1860 100644 --- a/src/v2i-hub/ERVCloudForwardingPlugin/test/ERVCloudForwardingWorkerTest.cpp +++ b/src/v2i-hub/ERVCloudForwardingPlugin/test/ERVCloudForwardingWorkerTest.cpp @@ -191,14 +191,15 @@ namespace unit_test TEST_F(ERVCloudForwardingWorkerTest, constructERVBSMRequest) { + uint16_t v2xhubPort = 11111; // BSM without partII - string bsmReq = ERVCloudForwardingPlugin::ERVCloudForwardingWorker::constructERVBSMRequest(*_bsmMessage); + string bsmReq = ERVCloudForwardingPlugin::ERVCloudForwardingWorker::constructERVBSMRequest(*_bsmMessage, v2xhubPort); ASSERT_EQ("", bsmReq); // ERV BSM with partII - bsmReq = ERVCloudForwardingPlugin::ERVCloudForwardingWorker::constructERVBSMRequest(*_bsmMessagePartII); + bsmReq = ERVCloudForwardingPlugin::ERVCloudForwardingWorker::constructERVBSMRequest(*_bsmMessagePartII, v2xhubPort); string expectedBSMHex = "00146e604043030280ffdbfba868b3584ec40824646400320032000c888fc834e37fff0aaa960fa0040d082408804278d693a431ad275c7c6b49d9e8d693b60e35a4f0dc6b49deef1ad27a6235a4f16b8d693e2b1ad279afc6b49f928d693d54e35a5007c6b49ee8f1ad2823235a4f93b8"; - string expectedBSMReq = "" + expectedBSMHex + "38954961-7714930312131210122312201233123012431240125312501263126012731270128312"; + string expectedBSMReq = "" + expectedBSMHex + ""+ std::to_string(v2xhubPort)+"38954961-7714930312131210122312201233123012431240125312501263126012731270128312"; ASSERT_EQ(expectedBSMReq, bsmReq); } From 9eb454a0d939b0a71cb37cbb85ee61c2461391d5 Mon Sep 17 00:00:00 2001 From: dan-du-car <62157949+dan-du-car@users.noreply.github.com> Date: Thu, 20 Apr 2023 08:44:06 -0400 Subject: [PATCH 04/10] Analysis script for Emergency Response vehicle v2xhub log (#519) # PR Details ## Description Analysis script for Emergency Response vehicle v2xhub log. The script is to extract useful information from the v2xhub log. The information should answer below questions: ![image](https://user-images.githubusercontent.com/62157949/232543415-85571577-9694-4d8d-90de-6b3167cc3370.png) ## Related Issue https://github.com/usdot-fhwa-OPS/V2X-Hub/issues/515 ## Motivation and Context ERV use case ## How Has This Been Tested? NA ## Types of changes - [ ] Defect fix (non-breaking change that fixes an issue) - [x] New feature (non-breaking change that adds functionality) - [ ] Breaking change (fix or feature that cause existing functionality to change) ## Checklist: - [ ] I have added any new packages to the sonar-scanner.properties file - [ ] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. - [x] I have read the **CONTRIBUTING** document. [V2XHUB Contributing Guide](https://github.com/usdot-fhwa-OPS/V2X-Hub/blob/develop/Contributing.md) - [ ] I have added tests to cover my changes. - [ ] All new and existing tests passed. --- scripts/requirements.txt | 1 + scripts/v2xhub_log_analysis_erv.py | 103 ++++++++++++++++++ .../src/ERVCloudForwardingPlugin.cpp | 2 +- 3 files changed, 105 insertions(+), 1 deletion(-) create mode 100644 scripts/requirements.txt create mode 100644 scripts/v2xhub_log_analysis_erv.py diff --git a/scripts/requirements.txt b/scripts/requirements.txt new file mode 100644 index 000000000..a717bf139 --- /dev/null +++ b/scripts/requirements.txt @@ -0,0 +1 @@ +openpyxl \ No newline at end of file diff --git a/scripts/v2xhub_log_analysis_erv.py b/scripts/v2xhub_log_analysis_erv.py new file mode 100644 index 000000000..88b9550bb --- /dev/null +++ b/scripts/v2xhub_log_analysis_erv.py @@ -0,0 +1,103 @@ +import sys +import pandas as pd +import xml.etree.ElementTree as ET +import argparse + +''' +Get file names +''' + + +def get_filenames(): + inputfile = '' + outputfile = '' + parser = argparse.ArgumentParser(prog="V2xHub Analysis for ERV BSM") + parser.add_argument('--input', type=str, required=True) + parser.add_argument('--output', type=str, required=True) + args = parser.parse_args() + print(f'Received log file: {args.input}; Result will be saved into file: {args.output}.xlsx') + inputfile = args.input + outputfile = args.output + return (inputfile, outputfile) +''' +Read the input logs file and search the relevant logs. Process the logs and return a dictionary of the relevant information +''' + + +def process_input_log_file(inputfile, search_keyword): + file_stream = open(inputfile, 'r') + fields_dict = {} + fields_dict["Time (UTC)"] = [] + while True: + line = file_stream.readline() + # if line is empty, end of file is reached + if not line: + break + if len(line.strip()) == 0: + continue + if len(line.strip().split(' - ')) < 2: + continue + + txt = line.strip().split(' - ')[1] + # Look for the specific metric by keyword + if search_keyword.lower().strip() in txt.lower(): + metadata_list = [x for x in line.strip().split( + ' - ')[0].split("[") if x != ''] + time = ''.join(metadata_list).split(']')[0].replace('"','').replace('log','').replace('{','').replace('{}','').replace(':','',1).replace('}','') + fields_dict["Time (UTC)"].append(time) + metric_field_value = '' + metric_field_title = '' + txt_list = [x.strip() for x in txt.strip().split(":") if x.strip() != 'INFO' if x.strip() != 'DEBUG' if x.strip() != 'ERROR' ] + if "stdout" in txt_list[1]: + metric_field_title = txt_list[0].strip().replace("stream","").replace('\\n','').replace('"','').replace(',','') + metric_field_value = txt_list[0].strip().replace("stream","").replace('\\n','').replace('"','').replace(',','').replace('\\u003e','>').replace('\\u003c','<').replace('\\','"') + else: + metric_field_title = txt_list[0].strip().replace("stream","").replace('\\n','').replace('"','').replace(',','') + metric_field_value = txt_list[1].strip().replace("stream","").replace('\\n','').replace('"','').replace(',','').replace('\\u003e','>').replace('\\u003c','<').replace('\\','"') + try: + xml = ET.fromstring(metric_field_value) + metric_field_value = xml.find("id").text + except: + pass + if metric_field_title not in fields_dict.keys(): + fields_dict[metric_field_title] = [] + fields_dict[metric_field_title].append(metric_field_value) + file_stream.close() + return fields_dict + + +''' +main entrypoint to read carmacloud.log file and search based on the metric keyworkds. +Once the relevant logs are found, it write the data into the specified excel output file. +''' + + +def main(): + inputfile, outputfile = get_filenames() + search_metric_keywords = { + 'FER-5-6': 'Incoming BSM is not from Emergency Response Vehicle (ERV)', + 'FER-9-10-11': 'Forward ERV BSM to cloud:', + 'FER-12-1': 'Received ERV BSM and forward ERV BSM to cloud delay (ms)', + 'FER-TBD-1': 'Received ERV BSM from cloud:', + 'FER-TBD-2': 'Received ERV BSM from cloud and broadcast ERV BSM delay(ms)' + } + global_fields_dict = {} + print(f'Processing log file [{inputfile}]...') + for metric_keyword_key in search_metric_keywords.keys(): + if len(inputfile) > 0 and len(outputfile) > 0: + fields_dict = process_input_log_file(inputfile=inputfile, + search_keyword=search_metric_keywords[metric_keyword_key]) + if len(fields_dict) > 0: + global_fields_dict[metric_keyword_key] = fields_dict + + # Write dictionary into excel file + if len(global_fields_dict) > 0: + with pd.ExcelWriter(outputfile+".xlsx") as writer: + for metric_keyword in global_fields_dict.keys(): + data_frame = pd.DataFrame(global_fields_dict[metric_keyword]) + data_frame.to_excel(writer, sheet_name=metric_keyword, index=False) + print(f'Generated sheet for metric: {metric_keyword}') + + +if __name__ == '__main__': + main() diff --git a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp index 6c1dfb96c..a850e5de7 100644 --- a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp +++ b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp @@ -33,7 +33,7 @@ namespace ERVCloudForwardingPlugin else { // If BSM is not from ERV, print debug log - PLOG(logDEBUG) << "Incoming BSM is not from Emergency Response Vehicle (ERV)." << endl; + PLOG(logDEBUG) << "Incoming BSM is not from Emergency Response Vehicle (ERV): " << msg << endl; } } From 27932000751bb786293eb5852aba796b4ad7b0da Mon Sep 17 00:00:00 2001 From: dan-du-car <62157949+dan-du-car@users.noreply.github.com> Date: Mon, 24 Apr 2023 21:12:26 -0400 Subject: [PATCH 05/10] Verification testing metrics: Add logs for metrics analysis (#522) # PR Details ## Description Add logs to print when v2xhub receives BSM. Add logs to print when the v2xhub successfully forward BSM to carma-cloud. ## Related Issue https://github.com/usdot-fhwa-OPS/V2X-Hub/issues/515 ## Motivation and Context ERV ## How Has This Been Tested? NA ## Types of changes - [x] Defect fix (non-breaking change that fixes an issue) - [ ] New feature (non-breaking change that adds functionality) - [ ] Breaking change (fix or feature that cause existing functionality to change) ## Checklist: - [ ] I have added any new packages to the sonar-scanner.properties file - [ ] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. - [x] I have read the **CONTRIBUTING** document. [V2XHUB Contributing Guide](https://github.com/usdot-fhwa-OPS/V2X-Hub/blob/develop/Contributing.md) - [ ] I have added tests to cover my changes. - [ ] All new and existing tests passed. --- .../ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp index a850e5de7..71bdca3c9 100644 --- a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp +++ b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp @@ -19,6 +19,7 @@ namespace ERVCloudForwardingPlugin void ERVCloudForwardingPlugin::handleBSM(BsmMessage &msg, routeable_message &routableMsg) { + PLOG(logDEBUG) << "Receive BSM: " << msg << endl; uint64_t delayStart = std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()).count(); // Check if the BSM is broadcast by an ERV (Emergency Response Vehicle) if (ERVCloudForwardingWorker::IsBSMFromERV(msg)) @@ -200,6 +201,8 @@ namespace ERVCloudForwardingPlugin { fprintf(stderr, "curl send failed: %s\n", curl_easy_strerror(res)); return EXIT_FAILURE; + }else{ + PLOG(logDEBUG) << "Successfully forward ERV BSM to cloud: " << local_msg << endl; } } curl_easy_cleanup(req); From d0cb9790c0f6cc8b12de47192d8efdf7c020448d Mon Sep 17 00:00:00 2001 From: dan-du-car <62157949+dan-du-car@users.noreply.github.com> Date: Wed, 26 Apr 2023 12:10:00 -0400 Subject: [PATCH 06/10] Add more logs for analysis (#523) # PR Details ## Description Add more terminal logs to catch http request from v2xhub to cloud. The timestamp before the request and after successfully response from the cloud. ## Related Issue https://github.com/usdot-fhwa-OPS/V2X-Hub/issues/515 ## Motivation and Context ERV verification testing metrics ## How Has This Been Tested? NA ## Types of changes - [x] Defect fix (non-breaking change that fixes an issue) - [ ] New feature (non-breaking change that adds functionality) - [ ] Breaking change (fix or feature that cause existing functionality to change) ## Checklist: - [ ] I have added any new packages to the sonar-scanner.properties file - [ ] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. - [x] I have read the **CONTRIBUTING** document. [V2XHUB Contributing Guide](https://github.com/usdot-fhwa-OPS/V2X-Hub/blob/develop/Contributing.md) - [ ] I have added tests to cover my changes. - [ ] All new and existing tests passed. --- .../ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp index 71bdca3c9..8a1d44037 100644 --- a/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp +++ b/src/v2i-hub/ERVCloudForwardingPlugin/src/ERVCloudForwardingPlugin.cpp @@ -196,13 +196,14 @@ namespace ERVCloudForwardingPlugin curl_easy_setopt(req, CURLOPT_POSTFIELDS, local_msg.c_str()); curl_easy_setopt(req, CURLOPT_TIMEOUT_MS, 5000L); //Http request timeout in 5 seconds curl_easy_setopt(req, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2); + PLOG(logDEBUG) << "Forwarding message to cloud via curl: " << local_msg << endl; res = curl_easy_perform(req); if (res != CURLE_OK) { fprintf(stderr, "curl send failed: %s\n", curl_easy_strerror(res)); return EXIT_FAILURE; }else{ - PLOG(logDEBUG) << "Successfully forward ERV BSM to cloud: " << local_msg << endl; + PLOG(logDEBUG) << "Successfully forwarded message to cloud via curl: " << local_msg << endl; } } curl_easy_cleanup(req); From 9c58fd08776cf0ea7c7c2b064da2ec09be33f51b Mon Sep 17 00:00:00 2001 From: dan-du-car <62157949+dan-du-car@users.noreply.github.com> Date: Thu, 4 May 2023 12:16:45 -0400 Subject: [PATCH 07/10] Remove ERV analysis script (#528) # PR Details ## Description The ERV analysis script is not part of the K900 release and should be removed from the release candidate branch. The script is already moved into a dedicated repos https://github.com/usdot-fhwa-stol/carma-analytics-fotda that has all the past analysis script for different use cases ## Related Issue NA ## Motivation and Context ## How Has This Been Tested? NA ## Types of changes - [x] Defect fix (non-breaking change that fixes an issue) - [ ] New feature (non-breaking change that adds functionality) - [ ] Breaking change (fix or feature that cause existing functionality to change) ## Checklist: - [ ] I have added any new packages to the sonar-scanner.properties file - [ ] My change requires a change to the documentation. - [ ] I have updated the documentation accordingly. - [x] I have read the **CONTRIBUTING** document. [V2XHUB Contributing Guide](https://github.com/usdot-fhwa-OPS/V2X-Hub/blob/develop/Contributing.md) - [ ] I have added tests to cover my changes. - [ ] All new and existing tests passed. --- scripts/requirements.txt | 1 - scripts/v2xhub_log_analysis_erv.py | 103 ----------------------------- 2 files changed, 104 deletions(-) delete mode 100644 scripts/requirements.txt delete mode 100644 scripts/v2xhub_log_analysis_erv.py diff --git a/scripts/requirements.txt b/scripts/requirements.txt deleted file mode 100644 index a717bf139..000000000 --- a/scripts/requirements.txt +++ /dev/null @@ -1 +0,0 @@ -openpyxl \ No newline at end of file diff --git a/scripts/v2xhub_log_analysis_erv.py b/scripts/v2xhub_log_analysis_erv.py deleted file mode 100644 index 88b9550bb..000000000 --- a/scripts/v2xhub_log_analysis_erv.py +++ /dev/null @@ -1,103 +0,0 @@ -import sys -import pandas as pd -import xml.etree.ElementTree as ET -import argparse - -''' -Get file names -''' - - -def get_filenames(): - inputfile = '' - outputfile = '' - parser = argparse.ArgumentParser(prog="V2xHub Analysis for ERV BSM") - parser.add_argument('--input', type=str, required=True) - parser.add_argument('--output', type=str, required=True) - args = parser.parse_args() - print(f'Received log file: {args.input}; Result will be saved into file: {args.output}.xlsx') - inputfile = args.input - outputfile = args.output - return (inputfile, outputfile) -''' -Read the input logs file and search the relevant logs. Process the logs and return a dictionary of the relevant information -''' - - -def process_input_log_file(inputfile, search_keyword): - file_stream = open(inputfile, 'r') - fields_dict = {} - fields_dict["Time (UTC)"] = [] - while True: - line = file_stream.readline() - # if line is empty, end of file is reached - if not line: - break - if len(line.strip()) == 0: - continue - if len(line.strip().split(' - ')) < 2: - continue - - txt = line.strip().split(' - ')[1] - # Look for the specific metric by keyword - if search_keyword.lower().strip() in txt.lower(): - metadata_list = [x for x in line.strip().split( - ' - ')[0].split("[") if x != ''] - time = ''.join(metadata_list).split(']')[0].replace('"','').replace('log','').replace('{','').replace('{}','').replace(':','',1).replace('}','') - fields_dict["Time (UTC)"].append(time) - metric_field_value = '' - metric_field_title = '' - txt_list = [x.strip() for x in txt.strip().split(":") if x.strip() != 'INFO' if x.strip() != 'DEBUG' if x.strip() != 'ERROR' ] - if "stdout" in txt_list[1]: - metric_field_title = txt_list[0].strip().replace("stream","").replace('\\n','').replace('"','').replace(',','') - metric_field_value = txt_list[0].strip().replace("stream","").replace('\\n','').replace('"','').replace(',','').replace('\\u003e','>').replace('\\u003c','<').replace('\\','"') - else: - metric_field_title = txt_list[0].strip().replace("stream","").replace('\\n','').replace('"','').replace(',','') - metric_field_value = txt_list[1].strip().replace("stream","").replace('\\n','').replace('"','').replace(',','').replace('\\u003e','>').replace('\\u003c','<').replace('\\','"') - try: - xml = ET.fromstring(metric_field_value) - metric_field_value = xml.find("id").text - except: - pass - if metric_field_title not in fields_dict.keys(): - fields_dict[metric_field_title] = [] - fields_dict[metric_field_title].append(metric_field_value) - file_stream.close() - return fields_dict - - -''' -main entrypoint to read carmacloud.log file and search based on the metric keyworkds. -Once the relevant logs are found, it write the data into the specified excel output file. -''' - - -def main(): - inputfile, outputfile = get_filenames() - search_metric_keywords = { - 'FER-5-6': 'Incoming BSM is not from Emergency Response Vehicle (ERV)', - 'FER-9-10-11': 'Forward ERV BSM to cloud:', - 'FER-12-1': 'Received ERV BSM and forward ERV BSM to cloud delay (ms)', - 'FER-TBD-1': 'Received ERV BSM from cloud:', - 'FER-TBD-2': 'Received ERV BSM from cloud and broadcast ERV BSM delay(ms)' - } - global_fields_dict = {} - print(f'Processing log file [{inputfile}]...') - for metric_keyword_key in search_metric_keywords.keys(): - if len(inputfile) > 0 and len(outputfile) > 0: - fields_dict = process_input_log_file(inputfile=inputfile, - search_keyword=search_metric_keywords[metric_keyword_key]) - if len(fields_dict) > 0: - global_fields_dict[metric_keyword_key] = fields_dict - - # Write dictionary into excel file - if len(global_fields_dict) > 0: - with pd.ExcelWriter(outputfile+".xlsx") as writer: - for metric_keyword in global_fields_dict.keys(): - data_frame = pd.DataFrame(global_fields_dict[metric_keyword]) - data_frame.to_excel(writer, sheet_name=metric_keyword, index=False) - print(f'Generated sheet for metric: {metric_keyword}') - - -if __name__ == '__main__': - main() From a112b6a6af9400f416ba5cd46cc3d9ba880b73d2 Mon Sep 17 00:00:00 2001 From: Cody Garver Date: Fri, 5 May 2023 11:04:01 -0400 Subject: [PATCH 08/10] Bump version 7.4.0 to 7.5.0 --- src/v2i-hub/CARMACloudPlugin/CMakeLists.txt | 2 +- src/v2i-hub/CARMAStreetsPlugin/CMakeLists.txt | 2 +- src/v2i-hub/CDASimAdapter/CMakeLists.txt | 2 +- src/v2i-hub/CommandPlugin/CMakeLists.txt | 2 +- src/v2i-hub/CswPlugin/CMakeLists.txt | 2 +- src/v2i-hub/DmsPlugin/CMakeLists.txt | 2 +- src/v2i-hub/ERVCloudForwardingPlugin/CMakeLists.txt | 2 +- src/v2i-hub/ImmediateForwardPlugin/CMakeLists.txt | 2 +- src/v2i-hub/LocationPlugin/CMakeLists.txt | 2 +- src/v2i-hub/MapPlugin/CMakeLists.txt | 2 +- src/v2i-hub/MessageLoggerPlugin/CMakeLists.txt | 2 +- src/v2i-hub/MessageReceiverPlugin/CMakeLists.txt | 2 +- src/v2i-hub/ODEForwardPlugin/CMakeLists.txt | 2 +- src/v2i-hub/PedestrianPlugin/CMakeLists.txt | 2 +- src/v2i-hub/PortDrayagePlugin/CMakeLists.txt | 2 +- src/v2i-hub/PreemptionPlugin/CMakeLists.txt | 2 +- src/v2i-hub/RtcmPlugin/CMakeLists.txt | 2 +- src/v2i-hub/SpatPlugin/CMakeLists.txt | 2 +- src/v2i-hub/TimPlugin/CMakeLists.txt | 2 +- 19 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/v2i-hub/CARMACloudPlugin/CMakeLists.txt b/src/v2i-hub/CARMACloudPlugin/CMakeLists.txt index 767f81dc7..4d4653f15 100644 --- a/src/v2i-hub/CARMACloudPlugin/CMakeLists.txt +++ b/src/v2i-hub/CARMACloudPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( CARMACloudPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( CARMACloudPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "CARMACloud") add_compile_options(-fPIC) diff --git a/src/v2i-hub/CARMAStreetsPlugin/CMakeLists.txt b/src/v2i-hub/CARMAStreetsPlugin/CMakeLists.txt index c9a2a11ee..a0bc494fb 100644 --- a/src/v2i-hub/CARMAStreetsPlugin/CMakeLists.txt +++ b/src/v2i-hub/CARMAStreetsPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( CARMAStreetsPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( CARMAStreetsPlugin VERSION 7.5.0 LANGUAGES CXX ) BuildTmxPlugin ( ) diff --git a/src/v2i-hub/CDASimAdapter/CMakeLists.txt b/src/v2i-hub/CDASimAdapter/CMakeLists.txt index 5c098053a..e8e8cd794 100755 --- a/src/v2i-hub/CDASimAdapter/CMakeLists.txt +++ b/src/v2i-hub/CDASimAdapter/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( CDASimAdapter VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( CDASimAdapter VERSION 7.5.0 LANGUAGES CXX ) set(CMAKE_CXX_STANDARD 17) FIND_PACKAGE( carma-clock ) diff --git a/src/v2i-hub/CommandPlugin/CMakeLists.txt b/src/v2i-hub/CommandPlugin/CMakeLists.txt index 27461b7e3..651e1af0a 100644 --- a/src/v2i-hub/CommandPlugin/CMakeLists.txt +++ b/src/v2i-hub/CommandPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( CommandPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( CommandPlugin VERSION 7.5.0 LANGUAGES CXX ) FIND_PACKAGE (OpenSSL REQUIRED) diff --git a/src/v2i-hub/CswPlugin/CMakeLists.txt b/src/v2i-hub/CswPlugin/CMakeLists.txt index 607a1b32c..66d0d9545 100644 --- a/src/v2i-hub/CswPlugin/CMakeLists.txt +++ b/src/v2i-hub/CswPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( CswPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( CswPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "CSW") diff --git a/src/v2i-hub/DmsPlugin/CMakeLists.txt b/src/v2i-hub/DmsPlugin/CMakeLists.txt index ac2960b0e..4508c8084 100644 --- a/src/v2i-hub/DmsPlugin/CMakeLists.txt +++ b/src/v2i-hub/DmsPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( DmsPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( DmsPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "Dynamic Message Sign") diff --git a/src/v2i-hub/ERVCloudForwardingPlugin/CMakeLists.txt b/src/v2i-hub/ERVCloudForwardingPlugin/CMakeLists.txt index aa1cca06c..56f71f571 100644 --- a/src/v2i-hub/ERVCloudForwardingPlugin/CMakeLists.txt +++ b/src/v2i-hub/ERVCloudForwardingPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT(ERVCloudForwardingPlugin VERSION 7.4.0 LANGUAGES CXX) +PROJECT(ERVCloudForwardingPlugin VERSION 7.5.0 LANGUAGES CXX) SET(TMX_PLUGIN_NAME "ERVCloudForwarding") add_compile_options(-fPIC) diff --git a/src/v2i-hub/ImmediateForwardPlugin/CMakeLists.txt b/src/v2i-hub/ImmediateForwardPlugin/CMakeLists.txt index 3b6ca7277..e3d2365a2 100644 --- a/src/v2i-hub/ImmediateForwardPlugin/CMakeLists.txt +++ b/src/v2i-hub/ImmediateForwardPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( ImmediateForwardPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( ImmediateForwardPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "Immediate Forward") diff --git a/src/v2i-hub/LocationPlugin/CMakeLists.txt b/src/v2i-hub/LocationPlugin/CMakeLists.txt index 4ec30bd65..eb929373b 100644 --- a/src/v2i-hub/LocationPlugin/CMakeLists.txt +++ b/src/v2i-hub/LocationPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -project( LocationPlugin VERSION 7.4.0 LANGUAGES CXX ) +project( LocationPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME Location) diff --git a/src/v2i-hub/MapPlugin/CMakeLists.txt b/src/v2i-hub/MapPlugin/CMakeLists.txt index 4059655d4..7cf372de0 100644 --- a/src/v2i-hub/MapPlugin/CMakeLists.txt +++ b/src/v2i-hub/MapPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( MapPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( MapPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "MAP") diff --git a/src/v2i-hub/MessageLoggerPlugin/CMakeLists.txt b/src/v2i-hub/MessageLoggerPlugin/CMakeLists.txt index 7430eef0b..b63b6d6df 100644 --- a/src/v2i-hub/MessageLoggerPlugin/CMakeLists.txt +++ b/src/v2i-hub/MessageLoggerPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( MessageLoggerPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( MessageLoggerPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "MessageLoggerPlugin") diff --git a/src/v2i-hub/MessageReceiverPlugin/CMakeLists.txt b/src/v2i-hub/MessageReceiverPlugin/CMakeLists.txt index d57b4835e..f77e4c1a3 100644 --- a/src/v2i-hub/MessageReceiverPlugin/CMakeLists.txt +++ b/src/v2i-hub/MessageReceiverPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( MessageReceiverPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( MessageReceiverPlugin VERSION 7.5.0 LANGUAGES CXX ) set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/src/v2i-hub/ODEForwardPlugin/CMakeLists.txt b/src/v2i-hub/ODEForwardPlugin/CMakeLists.txt index 065c7c432..815527534 100644 --- a/src/v2i-hub/ODEForwardPlugin/CMakeLists.txt +++ b/src/v2i-hub/ODEForwardPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( ODEForwardPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( ODEForwardPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "ODEForwardPlugin") diff --git a/src/v2i-hub/PedestrianPlugin/CMakeLists.txt b/src/v2i-hub/PedestrianPlugin/CMakeLists.txt index a369271a0..8b0ba693f 100755 --- a/src/v2i-hub/PedestrianPlugin/CMakeLists.txt +++ b/src/v2i-hub/PedestrianPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( PedestrianPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( PedestrianPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "Pedestrian") add_compile_options(-fPIC) diff --git a/src/v2i-hub/PortDrayagePlugin/CMakeLists.txt b/src/v2i-hub/PortDrayagePlugin/CMakeLists.txt index 3eb50acdc..eb069bfd7 100644 --- a/src/v2i-hub/PortDrayagePlugin/CMakeLists.txt +++ b/src/v2i-hub/PortDrayagePlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( PortDrayagePlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( PortDrayagePlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "PortDrayage") set(CMAKE_AUTOMOC ON) diff --git a/src/v2i-hub/PreemptionPlugin/CMakeLists.txt b/src/v2i-hub/PreemptionPlugin/CMakeLists.txt index 2acc89e2a..eed709d13 100644 --- a/src/v2i-hub/PreemptionPlugin/CMakeLists.txt +++ b/src/v2i-hub/PreemptionPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( PreemptionPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( PreemptionPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "Preemption") diff --git a/src/v2i-hub/RtcmPlugin/CMakeLists.txt b/src/v2i-hub/RtcmPlugin/CMakeLists.txt index adf1ba654..f10a35a31 100644 --- a/src/v2i-hub/RtcmPlugin/CMakeLists.txt +++ b/src/v2i-hub/RtcmPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( RtcmPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( RtcmPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "RTCM") diff --git a/src/v2i-hub/SpatPlugin/CMakeLists.txt b/src/v2i-hub/SpatPlugin/CMakeLists.txt index 94b51f3d4..ec48c6f14 100644 --- a/src/v2i-hub/SpatPlugin/CMakeLists.txt +++ b/src/v2i-hub/SpatPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( SpatPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( SpatPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "SPAT") diff --git a/src/v2i-hub/TimPlugin/CMakeLists.txt b/src/v2i-hub/TimPlugin/CMakeLists.txt index 5eb9c7af6..79a3ac8ca 100644 --- a/src/v2i-hub/TimPlugin/CMakeLists.txt +++ b/src/v2i-hub/TimPlugin/CMakeLists.txt @@ -1,4 +1,4 @@ -PROJECT ( TimPlugin VERSION 7.4.0 LANGUAGES CXX ) +PROJECT ( TimPlugin VERSION 7.5.0 LANGUAGES CXX ) SET (TMX_PLUGIN_NAME "TIM") add_compile_options(-fPIC) From 0ebfac5bedc0a5f00b4ec72c194158d075cda342 Mon Sep 17 00:00:00 2001 From: Saikrishna Bairamoni <84093461+SaikrishnaBairamoni@users.noreply.github.com> Date: Mon, 8 May 2023 14:54:10 -0400 Subject: [PATCH 09/10] Update Release_notes.md with 7.5.0 version --- docs/Release_notes.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/docs/Release_notes.md b/docs/Release_notes.md index c03fe51c1..3ab4842c9 100644 --- a/docs/Release_notes.md +++ b/docs/Release_notes.md @@ -1,5 +1,31 @@ V2X-Hub Release Notes --------------------------------- + +Version 7.5.0, released May 5th, 2023 +-------------------------------------------------------- + +**Summary:** +V2X Hub release 7.5.0 is comprised of the following new features: a new ERVCloudForwardingPlugin to enable BSMs from active Emergency Response Vehicles (ERVs) to be forwarded to CARMA Cloud in support of message forwarding to V2X Hub instances along an ERV’s future route when deployed along with other CARMA tools to demonstrate move-over law when an ERV is approaching a CDA vehicle from behind; new features to support CARMA Simulation integration such as simulation clock functionality; and a newly developed CARMA Simulation adaptor shell and handshake functionality to allow multiple V2X Hub instances to connect with a single CARMA Simulation platform. Along with the above enhancements, several enhancements and bug fixes are included in this release. + +**Freight Emergency Response Functionalities** + +Enhancements in this release related to Freight Emergency Response: + +- PR 460: The creation of a new ERVCloudForwardingPlugin that enables V2X Hub to register a connected RSU, along with its location information, with CARMA Cloud. Additionally, this plugin is responsible for sending received BSMs from active Emergency Response Vehicles (ERVs) to CARMA Cloud in support of message forwarding to V2X Hub instances located along the ERV’s future route. + +**Other** + +Enhancements in this release: + +- Issue 262: Updated CARMA Streets plugin to receive and decode Mobility Path messages into JSON through Kafka. +- PR 486: Updated the V2X Hub docker images to Ubuntu 22 (Jammy) which has LTS support through April 2027. This will also support new libraries created using the Carma-builds project. +- PR 487: Added some changes to allow for Docker to be installed on different Linux distros for arm64. + +Fixes in this release: + +- Issue 484: Fixed PedestrianPlugin does not update when any configuration changes are made with in Plugin, either when plugin is off or on. +- PR 494: Sets some error message in the Command Plugin for file upload operations to ERROR instead of DEBUG so they can be seen on the command line by default. + Version 7.4.0, released Feb 10th, 2023 -------------------------------------------------------- From f7d694f383c2ca289ea03beb938e74edde52251a Mon Sep 17 00:00:00 2001 From: Saikrishna Bairamoni <84093461+SaikrishnaBairamoni@users.noreply.github.com> Date: Mon, 8 May 2023 15:01:48 -0400 Subject: [PATCH 10/10] update docker compose to point latest from release images --- configuration/amd64/docker-compose.yml | 6 +++--- configuration/arm64/docker-compose.yml | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/configuration/amd64/docker-compose.yml b/configuration/amd64/docker-compose.yml index ffafacc38..6b5188297 100755 --- a/configuration/amd64/docker-compose.yml +++ b/configuration/amd64/docker-compose.yml @@ -20,7 +20,7 @@ services: - mysql-datavolume:/var/lib/mysql php: - image: usdotfhwaops/php:k900 + image: usdotfhwaops/php:latest container_name: php network_mode: host depends_on: @@ -30,7 +30,7 @@ services: tty: true v2xhub: - image: usdotfhwaops/v2xhubamd:k900 + image: usdotfhwaops/v2xhubamd:latest container_name: v2xhub network_mode: host restart: always @@ -44,7 +44,7 @@ services: - ./logs:/var/log/tmx - ./MAP:/var/www/plugins/MAP port_drayage_webservice: - image: usdotfhwaops/port-drayage-webservice:k900 + image: usdotfhwaops/port-drayage-webservice:latest container_name: port_drayage_webservice network_mode: host secrets: diff --git a/configuration/arm64/docker-compose.yml b/configuration/arm64/docker-compose.yml index 38c3359c6..a32c31fab 100644 --- a/configuration/arm64/docker-compose.yml +++ b/configuration/arm64/docker-compose.yml @@ -20,7 +20,7 @@ services: - mysql-datavolume:/var/lib/mysql php: - image: usdotfhwaops/php_arm:k900 + image: usdotfhwaops/php_arm:latest container_name: php network_mode: host depends_on: @@ -30,7 +30,7 @@ services: tty: true v2xhub: - image: usdotfhwaops/v2xhubarm:k900 + image: usdotfhwaops/v2xhubarm:latest container_name: v2xhub network_mode: host restart: always @@ -44,7 +44,7 @@ services: - ./logs:/var/log/tmx - ./MAP:/var/www/plugins/MAP port_drayage_webservice: - image: usdotfhwaops/port-drayage-webservice_arm:k900 + image: usdotfhwaops/port-drayage-webservice_arm:latest container_name: port_drayage_webservice network_mode: host secrets: