From 00b2deac9798781f4bbbf01abf84ed3f78d9658f Mon Sep 17 00:00:00 2001 From: Lukasz Mastalerz Date: Tue, 3 Jan 2023 15:56:21 +0100 Subject: [PATCH] [CP-1512] Add information allowing identification to crashdump file Add the serial number and generation timestamp to crashdump filename. --- board/linux/CMakeLists.txt | 1 + .../crashdump-serial-number/CMakeLists.txt | 13 +++++ .../crashdump_serial_number.cpp | 15 ++++++ .../crashdump_serial_number.hpp | 13 +++++ board/rt1051/CMakeLists.txt | 2 + .../crashdump-serial-number/CMakeLists.txt | 13 +++++ .../crashdump_serial_number.cpp | 21 ++++++++ .../crashdump_serial_number.hpp | 17 +++++++ board/rt1051/crashdump/crashcatcher_impl.cpp | 3 +- .../rt1051/crashdump/crashdumpwriter_vfs.cpp | 50 +++++++++++++++---- .../rt1051/crashdump/crashdumpwriter_vfs.hpp | 10 ++-- harmony_changelog.md | 1 + .../agents/settings/FactorySettings.cpp | 2 +- .../service-desktop/WorkerDesktop.cpp | 2 +- products/BellHybrid/CMakeLists.txt | 1 + .../serial-number-reader/CMakeLists.txt | 17 +++++++ .../SerialNumberReader.cpp | 30 +++++++++++ .../SerialNumberReader.hpp | 10 ++++ .../BellHybrid/services/db/CMakeLists.txt | 2 + products/BellHybrid/services/db/ServiceDB.cpp | 10 +++- .../services/desktop/endpoints/CMakeLists.txt | 1 + .../deviceInfo/DeviceInfoEndpoint.cpp | 21 ++------ products/PurePhone/services/db/CMakeLists.txt | 1 + products/PurePhone/services/db/ServiceDB.cpp | 10 +++- pure_changelog.md | 1 + 25 files changed, 229 insertions(+), 38 deletions(-) create mode 100644 board/linux/crashdump-serial-number/CMakeLists.txt create mode 100644 board/linux/crashdump-serial-number/crashdump_serial_number.cpp create mode 100644 board/linux/crashdump-serial-number/include/crashdump-serial-number/crashdump_serial_number.hpp create mode 100644 board/rt1051/crashdump-serial-number/CMakeLists.txt create mode 100644 board/rt1051/crashdump-serial-number/crashdump_serial_number.cpp create mode 100644 board/rt1051/crashdump-serial-number/include/crashdump-serial-number/crashdump_serial_number.hpp create mode 100644 products/BellHybrid/serial-number-reader/CMakeLists.txt create mode 100644 products/BellHybrid/serial-number-reader/SerialNumberReader.cpp create mode 100644 products/BellHybrid/serial-number-reader/include/serial-number-reader/SerialNumberReader.hpp diff --git a/board/linux/CMakeLists.txt b/board/linux/CMakeLists.txt index fd75e9a8e466821ed44739e16dac2d8b8aa1d50c..645592d4146f69210fb8d54812ea7075c2722f02 100644 --- a/board/linux/CMakeLists.txt +++ b/board/linux/CMakeLists.txt @@ -1,3 +1,4 @@ add_library(board INTERFACE) add_subdirectory(libiosyscalls) +add_subdirectory(crashdump-serial-number) target_compile_definitions(board-config INTERFACE PROJECT_CONFIG_USER_DYNMEM_SIZE=0) diff --git a/board/linux/crashdump-serial-number/CMakeLists.txt b/board/linux/crashdump-serial-number/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..29b825a11d0383aecbebb6cbbeac73ac1800cc38 --- /dev/null +++ b/board/linux/crashdump-serial-number/CMakeLists.txt @@ -0,0 +1,13 @@ +add_library(crashdump-serial-number STATIC) + +target_include_directories(crashdump-serial-number + PUBLIC + $/include +) + +target_sources(crashdump-serial-number + PUBLIC + crashdump_serial_number.cpp +) + + diff --git a/board/linux/crashdump-serial-number/crashdump_serial_number.cpp b/board/linux/crashdump-serial-number/crashdump_serial_number.cpp new file mode 100644 index 0000000000000000000000000000000000000000..bb30a4e6e6708ef26ced5f48a1ff21ef64e56867 --- /dev/null +++ b/board/linux/crashdump-serial-number/crashdump_serial_number.cpp @@ -0,0 +1,15 @@ +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include + +namespace crashdump +{ + void setSerialNumber(const std::string &) + {} + std::string getSerialNumber() + { + return ""; + } + +} // namespace crashdump diff --git a/board/linux/crashdump-serial-number/include/crashdump-serial-number/crashdump_serial_number.hpp b/board/linux/crashdump-serial-number/include/crashdump-serial-number/crashdump_serial_number.hpp new file mode 100644 index 0000000000000000000000000000000000000000..d76cfbe750d8b1aa204fc0207e9d0dc6b33af057 --- /dev/null +++ b/board/linux/crashdump-serial-number/include/crashdump-serial-number/crashdump_serial_number.hpp @@ -0,0 +1,13 @@ +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +// Dummy file to keep linux variant compiling. + +#pragma once +#include +namespace crashdump +{ + void setSerialNumber(const std::string &sn); + std::string getSerialNumber(); + +} // namespace crashdump diff --git a/board/rt1051/CMakeLists.txt b/board/rt1051/CMakeLists.txt index f6f7c06fdbad7e97003858d00efd192554abf157..d4ba2061839839945e6e72a60695093a62366537 100644 --- a/board/rt1051/CMakeLists.txt +++ b/board/rt1051/CMakeLists.txt @@ -2,6 +2,7 @@ add_library(board STATIC) add_subdirectory(cmsis) add_subdirectory(${BOARD}) +add_subdirectory(crashdump-serial-number) if (${MEMORY_LINKER_FILE_PATH} STREQUAL "") message(FATAL_ERROR "Linker RAM layout not provided") @@ -42,6 +43,7 @@ target_include_directories(board target_link_libraries(board PRIVATE utils-rotator + crashdump-serial-number PUBLIC fsl module-vfs diff --git a/board/rt1051/crashdump-serial-number/CMakeLists.txt b/board/rt1051/crashdump-serial-number/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..29b825a11d0383aecbebb6cbbeac73ac1800cc38 --- /dev/null +++ b/board/rt1051/crashdump-serial-number/CMakeLists.txt @@ -0,0 +1,13 @@ +add_library(crashdump-serial-number STATIC) + +target_include_directories(crashdump-serial-number + PUBLIC + $/include +) + +target_sources(crashdump-serial-number + PUBLIC + crashdump_serial_number.cpp +) + + diff --git a/board/rt1051/crashdump-serial-number/crashdump_serial_number.cpp b/board/rt1051/crashdump-serial-number/crashdump_serial_number.cpp new file mode 100644 index 0000000000000000000000000000000000000000..1d6af9a7d0cc924fd6c78943654acfd827ac2dd3 --- /dev/null +++ b/board/rt1051/crashdump-serial-number/crashdump_serial_number.cpp @@ -0,0 +1,21 @@ +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include + +namespace +{ + std::string serial_number = "0000000000000"; +} +namespace crashdump +{ + void setSerialNumber(const std::string &sn) + { + serial_number = sn; + } + std::string getSerialNumber() + { + return serial_number; + } + +} // namespace crashdump diff --git a/board/rt1051/crashdump-serial-number/include/crashdump-serial-number/crashdump_serial_number.hpp b/board/rt1051/crashdump-serial-number/include/crashdump-serial-number/crashdump_serial_number.hpp new file mode 100644 index 0000000000000000000000000000000000000000..34f8deeb6d5a36150d42523545440abfc68acff1 --- /dev/null +++ b/board/rt1051/crashdump-serial-number/include/crashdump-serial-number/crashdump_serial_number.hpp @@ -0,0 +1,17 @@ +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +// The purpose of this file is to keep the devices serial number in the memory. +// In case of any crash, the serial number could be easily added to a crash dump filename. +// It will allow to identify the crash even after it is moved or copied from the device. +// setSerialNumber() should be called during system initialization. +// getSerialNumber() is called by the crash dump writer during file creation. + +#pragma once +#include +namespace crashdump +{ + void setSerialNumber(const std::string &sn); + std::string getSerialNumber(); + +} // namespace crashdump diff --git a/board/rt1051/crashdump/crashcatcher_impl.cpp b/board/rt1051/crashdump/crashcatcher_impl.cpp index 9ed5597074ad15dac08a049a910d24102263284c..f840031b63479beac337983920180506425edf65 100644 --- a/board/rt1051/crashdump/crashcatcher_impl.cpp +++ b/board/rt1051/crashdump/crashcatcher_impl.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma GCC optimize("Og") @@ -60,6 +60,7 @@ void CrashCatcher_DumpMemory(const void *pvMemory, CrashCatcherElementSizes elem CrashCatcherReturnCodes CrashCatcher_DumpEnd(void) { cwrite.saveDump(); + cwrite.deleteOldDump(); _exit_backtrace(-1, false); return CRASH_CATCHER_EXIT; } diff --git a/board/rt1051/crashdump/crashdumpwriter_vfs.cpp b/board/rt1051/crashdump/crashdumpwriter_vfs.cpp index 726bbb4b002a1721847668eb62ca9186e950e094..cf3986f74bf584320b45635738ca25153b4f83f3 100644 --- a/board/rt1051/crashdump/crashdumpwriter_vfs.cpp +++ b/board/rt1051/crashdump/crashdumpwriter_vfs.cpp @@ -1,31 +1,46 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "crashdumpwriter_vfs.hpp" - +#include #include -#include #include #include "purefs/vfs_subsystem.hpp" #include #include +#include #include #include #include +#include +#include + +namespace +{ + constexpr inline auto suffix = "_crashdump.hex"; + + // Crashdump filename pattern: + // [serial-number]_[timestamp-in-seconds]_crashdump.hex + + inline std::string generate_crashdump_filename() + { + const auto crash_time = + std::chrono::duration_cast(std::chrono::system_clock::now().time_since_epoch()) + .count(); + auto filename = std::string("/") + crashdump::getSerialNumber() + "_" + std::to_string(crash_time) + suffix; + return filename; + } +} // namespace namespace crashdump { - constexpr inline auto crashDumpFileName = "crashdump.hex"; void CrashDumpWriterVFS::openDump() { - const auto crashDumpFilePath = purefs::dir::getCrashDumpsPath() / crashDumpFileName; + const auto crashDumpFilePath = purefs::dir::getCrashDumpsPath().string() + generate_crashdump_filename(); + LOG_INFO("Crash dump %s preparing ...", crashDumpFilePath.c_str()); - if (!rotator.rotateFile(crashDumpFilePath)) { - LOG_FATAL("Failed to rotate crash dumps errno: %i", errno); - _exit_backtrace(-1, false); - } file = std::fopen(crashDumpFilePath.c_str(), "w"); if (!file) { LOG_FATAL("Failed to open crash dump file errno %i", errno); @@ -41,6 +56,23 @@ namespace crashdump std::fclose(file); } + void CrashDumpWriterVFS::deleteOldDump() + { + std::set crashdumps{}; + for (const auto &entry : std::filesystem::directory_iterator(purefs::dir::getCrashDumpsPath())) { + std::cout << entry.path() << std::endl; + crashdumps.insert(entry.path()); + } + + if (crashdumps.size() > maxFilesCount) { + auto crashdump_to_delete = crashdumps.begin(); + LOG_INFO("Deleting %s ...", crashdump_to_delete->c_str()); + if (not std::filesystem::remove(crashdump_to_delete->c_str())) { + LOG_WARN("File: %s was not deleted.", crashdump_to_delete->c_str()); + } + } + } + void CrashDumpWriterVFS::writeBytes(const uint8_t *buff, std::size_t size) { if (std::fwrite(buff, sizeof(*buff), size, file) != size) { diff --git a/board/rt1051/crashdump/crashdumpwriter_vfs.hpp b/board/rt1051/crashdump/crashdumpwriter_vfs.hpp index c58e39e4000cdda9c4ffb7380f0120f390c33529..3a36b2d934b72d23c2f83affba85bd28b08ff016 100644 --- a/board/rt1051/crashdump/crashdumpwriter_vfs.hpp +++ b/board/rt1051/crashdump/crashdumpwriter_vfs.hpp @@ -1,10 +1,8 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #pragma once -#include - #include #include #include @@ -17,21 +15,21 @@ namespace purefs::fs namespace crashdump { - constexpr inline auto maxRotationFilesCount = 5; + constexpr inline auto maxFilesCount = 5; class CrashDumpWriterVFS { public: - CrashDumpWriterVFS() : rotator{".hex"} + CrashDumpWriterVFS() {} void openDump(); void saveDump(); + void deleteOldDump(); void writeBytes(const std::uint8_t *buff, std::size_t size); void writeHalfWords(const std::uint16_t *buff, std::size_t size); void writeWords(const std::uint32_t *buff, std::size_t size); private: - utils::Rotator rotator; std::FILE *file{}; }; diff --git a/harmony_changelog.md b/harmony_changelog.md index 841e5486486eb97b05d95144bcb5c7d749cbdf28..f4469ab0138b43a1b99546b8a0b296effa77851d 100644 --- a/harmony_changelog.md +++ b/harmony_changelog.md @@ -10,6 +10,7 @@ ### Added ### Changed +* Added serial number and timestamp to crashdump filename ## [1.8.0 2022-12-14] diff --git a/module-services/service-db/agents/settings/FactorySettings.cpp b/module-services/service-db/agents/settings/FactorySettings.cpp index c123ab95a032293ed093e7477cecab4de6ffeba2..49b477324eec548dcd413b4fc873fd315117e5b3 100644 --- a/module-services/service-db/agents/settings/FactorySettings.cpp +++ b/module-services/service-db/agents/settings/FactorySettings.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "FactorySettings.hpp" diff --git a/module-services/service-desktop/WorkerDesktop.cpp b/module-services/service-desktop/WorkerDesktop.cpp index 33334fa7995f9b86ad333a15a7f34188d9856837..93f8b6261ba905db1e3603d84d1f608c1982b355 100644 --- a/module-services/service-desktop/WorkerDesktop.cpp +++ b/module-services/service-desktop/WorkerDesktop.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include "service-desktop/ServiceDesktop.hpp" diff --git a/products/BellHybrid/CMakeLists.txt b/products/BellHybrid/CMakeLists.txt index 8c5bbcfef7bb3e6ed1010d10abc195cf5c013107..a02d00a81119ea84494e47e9b75b51253c0bf9b6 100644 --- a/products/BellHybrid/CMakeLists.txt +++ b/products/BellHybrid/CMakeLists.txt @@ -143,6 +143,7 @@ add_subdirectory(apps) add_subdirectory(keymap) add_subdirectory(services) add_subdirectory(sys) +add_subdirectory(serial-number-reader) option(CONFIG_ENABLE_TEMP "Enable displaying temperature" OFF) option(CONFIG_SHOW_MEMORY_INFO "Enable displaying memory info" OFF) diff --git a/products/BellHybrid/serial-number-reader/CMakeLists.txt b/products/BellHybrid/serial-number-reader/CMakeLists.txt new file mode 100644 index 0000000000000000000000000000000000000000..3e247bf2fda224f9b0f96cd04b876d364c1e4239 --- /dev/null +++ b/products/BellHybrid/serial-number-reader/CMakeLists.txt @@ -0,0 +1,17 @@ +add_library(serial-number-reader STATIC) + + +target_sources(serial-number-reader + PUBLIC + SerialNumberReader.cpp +) + +target_include_directories(serial-number-reader + PUBLIC + $ +) + +target_link_libraries(serial-number-reader + PRIVATE + module-vfs +) diff --git a/products/BellHybrid/serial-number-reader/SerialNumberReader.cpp b/products/BellHybrid/serial-number-reader/SerialNumberReader.cpp new file mode 100644 index 0000000000000000000000000000000000000000..b44687794c97b7a6913400cc799616238aa652fc --- /dev/null +++ b/products/BellHybrid/serial-number-reader/SerialNumberReader.cpp @@ -0,0 +1,30 @@ +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#include + +#include + +namespace +{ + constexpr auto DEVICE_NAME = "emmc0sys1"; + constexpr auto EMMC_SN_LENGTH = 13; + constexpr auto EMMC_BUFFER_SIZE = 512; + constexpr auto SECTOR_TO_READ = 2; + constexpr auto SECTOR_COUNT = 1U; + + std::string readSerialNumberFromEmmc() + { + char buffer[EMMC_BUFFER_SIZE]; + purefs::subsystem::disk_mgr()->read(DEVICE_NAME, buffer, SECTOR_TO_READ, SECTOR_COUNT); + buffer[EMMC_SN_LENGTH] = '\0'; + return std::string(buffer); + } +} // namespace +namespace serial_number_reader +{ + std::string readSerialNumber() + { + return readSerialNumberFromEmmc(); + } +} // namespace serial_number_reader diff --git a/products/BellHybrid/serial-number-reader/include/serial-number-reader/SerialNumberReader.hpp b/products/BellHybrid/serial-number-reader/include/serial-number-reader/SerialNumberReader.hpp new file mode 100644 index 0000000000000000000000000000000000000000..e1c268c8362948e402152696ebcf683f06b39658 --- /dev/null +++ b/products/BellHybrid/serial-number-reader/include/serial-number-reader/SerialNumberReader.hpp @@ -0,0 +1,10 @@ +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. +// For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md + +#pragma once +#include + +namespace serial_number_reader +{ + std::string readSerialNumber(); +} // namespace serial_number_reader diff --git a/products/BellHybrid/services/db/CMakeLists.txt b/products/BellHybrid/services/db/CMakeLists.txt index a1c1a4835c5bb1cd2c0c3e5a8c8ec8b17e795cd9..6207c713c36c0dcc481cb21632b2e882924e9c63 100644 --- a/products/BellHybrid/services/db/CMakeLists.txt +++ b/products/BellHybrid/services/db/CMakeLists.txt @@ -21,6 +21,8 @@ target_link_libraries(databases PRIVATE bell::db::meditation_stats service-db + serial-number-reader + crashdump-serial-number ) if (${ENABLE_TESTS}) diff --git a/products/BellHybrid/services/db/ServiceDB.cpp b/products/BellHybrid/services/db/ServiceDB.cpp index 898d61e905caac362f101560e8c98269ee7e07ca..253154148ae242e0993296545d9884c55618bcf8 100644 --- a/products/BellHybrid/services/db/ServiceDB.cpp +++ b/products/BellHybrid/services/db/ServiceDB.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2021, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include @@ -17,6 +17,9 @@ #include +#include +#include + ServiceDB::~ServiceDB() { eventsDB.reset(); @@ -90,6 +93,11 @@ sys::ReturnCodes ServiceDB::InitHandler() dbAgent->registerMessages(); } + LOG_INFO("Serial number: %s", serial_number_reader::readSerialNumber().c_str()); + + // Saving serial number for crashdump generation purpose. + crashdump::setSerialNumber(serial_number_reader::readSerialNumber()); + return sys::ReturnCodes::Success; } diff --git a/products/BellHybrid/services/desktop/endpoints/CMakeLists.txt b/products/BellHybrid/services/desktop/endpoints/CMakeLists.txt index 0c9d89e66aa3c84fcc91b9c33acf80bc8fba3488..2868a95b0b7c317a637e8032b0baacafe41dd2a3 100644 --- a/products/BellHybrid/services/desktop/endpoints/CMakeLists.txt +++ b/products/BellHybrid/services/desktop/endpoints/CMakeLists.txt @@ -22,6 +22,7 @@ target_link_libraries( desktop-endpoints-common PRIVATE version-header + serial-number-reader ) target_compile_definitions( diff --git a/products/BellHybrid/services/desktop/endpoints/deviceInfo/DeviceInfoEndpoint.cpp b/products/BellHybrid/services/desktop/endpoints/deviceInfo/DeviceInfoEndpoint.cpp index d574012dd586f68bb4cf25324ceff61a21a01ede..8e9c1a41f175d08abd3fa5e0e585659bbaafe222 100644 --- a/products/BellHybrid/services/desktop/endpoints/deviceInfo/DeviceInfoEndpoint.cpp +++ b/products/BellHybrid/services/desktop/endpoints/deviceInfo/DeviceInfoEndpoint.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include @@ -15,31 +15,16 @@ #include #include #include +#include #include -namespace -{ - constexpr auto DEVICE_NAME = "emmc0sys1"; - constexpr auto EMMC_SN_LENGTH = 13; - constexpr auto EMMC_BUFFER_SIZE = 512; - constexpr auto SECTOR_TO_READ = 2; - constexpr auto SECTOR_COUNT = 1U; - - std::string readSerialNumberFromEmmc() - { - char buffer[EMMC_BUFFER_SIZE]; - purefs::subsystem::disk_mgr()->read(DEVICE_NAME, buffer, SECTOR_TO_READ, SECTOR_COUNT); - buffer[EMMC_SN_LENGTH] = '\0'; - return std::string(buffer); - } -} // namespace namespace sdesktop::endpoints { auto DeviceInfoEndpoint::getSerialNumber() -> std::string { - return readSerialNumberFromEmmc(); + return serial_number_reader::readSerialNumber(); } auto DeviceInfoEndpoint::getDeviceInfo(Context &context) -> http::Code diff --git a/products/PurePhone/services/db/CMakeLists.txt b/products/PurePhone/services/db/CMakeLists.txt index f81e9e9d400ff1f93618c18c07fe88b0481e43c5..0419bfd8433f1f39b52bdd2310fd4b8dbe2153c2 100644 --- a/products/PurePhone/services/db/CMakeLists.txt +++ b/products/PurePhone/services/db/CMakeLists.txt @@ -16,4 +16,5 @@ target_link_libraries(db PRIVATE module-db service-db + crashdump-serial-number ) diff --git a/products/PurePhone/services/db/ServiceDB.cpp b/products/PurePhone/services/db/ServiceDB.cpp index 289fc1583f823c4ef94336daf6e2604e5ead2bf2..b79eefd21d83729d1b6003ee70a398378d0cd58c 100644 --- a/products/PurePhone/services/db/ServiceDB.cpp +++ b/products/PurePhone/services/db/ServiceDB.cpp @@ -1,4 +1,4 @@ -// Copyright (c) 2017-2022, Mudita Sp. z.o.o. All rights reserved. +// Copyright (c) 2017-2023, Mudita Sp. z.o.o. All rights reserved. // For licensing, see https://github.com/mudita/MuditaOS/LICENSE.md #include @@ -23,7 +23,12 @@ #include #include #include