M harmony_changelog.md => harmony_changelog.md +1 -0
@@ 12,6 12,7 @@
* Fixed missing software version in French language
* Fixed problems with displaying file names in Relaxation
* Fixed polish Meditation summary text
+* Fixed problems with copying files via Mudita Center to Relaxation
### Added
M module-services/service-appmgr/include/service-appmgr/model/ApplicationManagerCommon.hpp => module-services/service-appmgr/include/service-appmgr/model/ApplicationManagerCommon.hpp +1 -1
@@ 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
#pragma once
M module-services/service-appmgr/model/ActionsRegistry.cpp => module-services/service-appmgr/model/ActionsRegistry.cpp +1 -1
@@ 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 "ActionsRegistry.hpp"
M module-services/service-desktop/DesktopMessages.cpp => module-services/service-desktop/DesktopMessages.cpp +1 -1
@@ 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 "service-desktop/DesktopMessages.hpp"
M module-services/service-desktop/endpoints/filesystem/FS_Helper.cpp => module-services/service-desktop/endpoints/filesystem/FS_Helper.cpp +6 -9
@@ 81,7 81,6 @@ namespace sdesktop::endpoints
const auto &body = context.getBody();
auto code = http::Code::BadRequest;
ResponseContext response{};
-
if (body[json::fs::fileName].is_string() && body[json::fs::fileSize].is_number() &&
body[json::fs::fileCrc32].is_string()) {
response = startSendFile(context);
@@ 228,11 227,11 @@ namespace sdesktop::endpoints
auto FS_Helper::startSendFile(Context &context) const -> ResponseContext
{
- const auto &body = context.getBody();
- const auto filePath = body[json::fs::fileName].string_value();
- const uint32_t fileSize = body[json::fs::fileSize].int_value();
- const auto fileCrc32 = body[json::fs::fileCrc32].string_value();
- auto code = http::Code::BadRequest;
+ const auto &body = context.getBody();
+ const auto &filePath = body[json::fs::fileName].string_value();
+ const uint32_t fileSize = body[json::fs::fileSize].int_value();
+ const auto &fileCrc32 = body[json::fs::fileCrc32].string_value();
+ auto code = http::Code::BadRequest;
LOG_DEBUG("Start sending of file: %s", filePath.c_str());
@@ 289,7 288,7 @@ namespace sdesktop::endpoints
const auto &body = context.getBody();
const auto txID = body[json::fs::txID].int_value();
const auto chunkNo = body[json::fs::chunkNo].int_value();
- const auto data = body[json::fs::data].string_value();
+ const auto &data = body[json::fs::data].string_value();
if (data.empty()) {
std::ostringstream errorReason;
@@ 320,8 319,6 @@ namespace sdesktop::endpoints
auto code = http::Code::OK;
if (returnCode == sys::ReturnCodes::Success) {
- LOG_DEBUG("FileOperations::sendDataForTransmitID success");
-
response = json11::Json::object(
{{json::fs::txID, static_cast<int>(txID)}, {json::fs::chunkNo, static_cast<int>(chunkNo)}});
}
M module-services/service-desktop/endpoints/filesystem/FileContext.cpp => module-services/service-desktop/endpoints/filesystem/FileContext.cpp +3 -10
@@ 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 <endpoints/filesystem/FileContext.hpp>
@@ 34,7 34,8 @@ FileWriteContext::FileWriteContext(const std::filesystem::path &path,
std::size_t chunkSize,
std::string crc32Digest,
std::size_t offset)
- : FileContext(path, size, chunkSize, offset), crc32Digest(std::move(crc32Digest))
+ : FileContext(path, size, chunkSize, offset), crc32Digest(std::move(crc32Digest)),
+ file(path, std::ios::binary | std::ios::app)
{}
FileWriteContext::~FileWriteContext()
@@ 113,17 114,11 @@ auto FileReadContext::read() -> std::vector<std::uint8_t>
auto FileWriteContext::write(const std::vector<std::uint8_t> &data) -> void
{
- LOG_DEBUG("Sending file data");
-
- std::ofstream file(path, std::ios::binary | std::ios::app);
-
if (!file.is_open() || file.fail()) {
LOG_ERROR("File %s open error", path.c_str());
throw std::runtime_error("File open error");
}
- file.seekp(offset);
-
auto dataLeft = std::min(static_cast<std::size_t>(chunkSize), (size - offset));
file.write(reinterpret_cast<const char *>(data.data()), dataLeft);
@@ 136,8 131,6 @@ auto FileWriteContext::write(const std::vector<std::uint8_t> &data) -> void
runningCrc32Digest.add(data.data(), dataLeft);
- LOG_DEBUG("Written %u bytes", static_cast<unsigned int>(dataLeft));
-
advanceFileOffset(dataLeft);
if (reachedEOF()) {
M module-services/service-desktop/endpoints/filesystem/FileOperations.cpp => module-services/service-desktop/endpoints/filesystem/FileOperations.cpp +11 -11
@@ 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 <endpoints/filesystem/FileOperations.hpp>
@@ 115,15 115,13 @@ auto FileOperations::encodeDataAsBase64(const std::vector<std::uint8_t> &binaryD
return encodedData;
}
-auto FileOperations::decodeDataFromBase64(const std::string &encodedData) const -> std::vector<std::uint8_t>
+auto FileOperations::decodeDataFromBase64(const std::string &encodedData) -> void
{
const auto decodedDataSize = decodedSize(encodedData.length());
-
- std::vector<std::uint8_t> decodedData(decodedDataSize, 0);
-
- b64tobin(decodedData.data(), encodedData.data());
-
- return decodedData;
+ if (decodedDataSize != fileData->size()) {
+ fileData->resize(decodedDataSize, 0);
+ }
+ b64tobin(fileData->data(), encodedData.data());
}
auto FileOperations::getDataForReceiveID(transfer_id rxID, std::uint32_t chunkNo) -> DataWithCrc32
@@ 176,6 174,7 @@ auto FileOperations::createTransmitIDForFile(const std::filesystem::path &file,
LOG_DEBUG("Creating txID %u", static_cast<unsigned>(txID));
createFileWriteContextFor(file, size, Crc32, txID);
+ fileData = std::make_unique<std::vector<uint8_t>>(SingleChunkSize, 0);
return txID;
}
@@ 205,23 204,24 @@ auto FileOperations::sendDataForTransmitID(transfer_id txID, std::uint32_t chunk
return sys::ReturnCodes::Failure;
}
- auto binaryData = decodeDataFromBase64(data);
+ decodeDataFromBase64(data);
- fileCtx->write(binaryData);
+ fileCtx->write(*fileData);
if (fileCtx->reachedEOF()) {
LOG_INFO("Reached EOF for txID %u", static_cast<unsigned>(txID));
-
auto fileOK = fileCtx->crc32Matches();
if (!fileOK) {
LOG_ERROR("File CRC32 mismatch");
fileCtx->removeFile();
writeTransfers.erase(txID);
+ fileData.reset(nullptr);
throw std::runtime_error("File CRC32 mismatch");
}
writeTransfers.erase(txID);
+ fileData.reset(nullptr);
}
return returnCode;
M module-services/service-desktop/endpoints/include/endpoints/Context.hpp => module-services/service-desktop/endpoints/include/endpoints/Context.hpp +1 -1
@@ 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 once
M module-services/service-desktop/endpoints/include/endpoints/filesystem/FileContext.hpp => module-services/service-desktop/endpoints/include/endpoints/filesystem/FileContext.hpp +3 -1
@@ 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 once
@@ 77,4 77,6 @@ class FileWriteContext : public FileContext
private:
std::string crc32Digest{};
+
+ std::ofstream file{};
};
M module-services/service-desktop/endpoints/include/endpoints/filesystem/FileOperations.hpp => module-services/service-desktop/endpoints/include/endpoints/filesystem/FileOperations.hpp +3 -2
@@ 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 once
@@ 25,6 25,7 @@ class FileOperations
std::atomic<transfer_id> runningRxId{0};
std::atomic<transfer_id> runningTxId{0};
+ std::unique_ptr<std::vector<std::uint8_t>> fileData{};
auto createFileReadContextFor(const std::filesystem::path &file, std::size_t fileSize, transfer_id xfrId) -> void;
@@ 35,7 36,7 @@ class FileOperations
auto encodeDataAsBase64(const std::vector<std::uint8_t> &binaryData) const -> std::string;
- auto decodeDataFromBase64(const std::string &encodedData) const -> std::vector<std::uint8_t>;
+ auto decodeDataFromBase64(const std::string &encodedData) -> void;
auto encodedSize(std::size_t binarySize) const -> std::size_t;
M module-services/service-desktop/include/service-desktop/DesktopMessages.hpp => module-services/service-desktop/include/service-desktop/DesktopMessages.hpp +1 -1
@@ 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
#pragma once
M module-services/service-desktop/parser/MessageHandler.cpp => module-services/service-desktop/parser/MessageHandler.cpp +2 -2
@@ 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 "MessageHandler.hpp"
@@ 32,7 32,7 @@ namespace sdesktop::endpoints
{
auto context = ContextFactory::create(messageJson);
- LOG_DEBUG("[MsgHandler]\nmethod: %s\nendpoint: %s\nuuid: %d\n",
+ LOG_DEBUG("[MsgHandler]\nmethod: %s\nendpoint: %s\nuuid: %d",
magic_enum::enum_name(context->getMethod()).data(),
magic_enum::enum_name(context->getEndpoint()).data(),
context->getUuid());
M module-utils/log/CMakeLists.txt => module-utils/log/CMakeLists.txt +19 -0
@@ 26,6 26,25 @@ target_link_libraries(log
sys-service
)
+if(${PROJECT_TARGET} STREQUAL "TARGET_RT1051")
+ if(${PRODUCT} STREQUAL "PurePhone")
+ set(CIRCULAR_BUFFER_SIZE 1024)
+ elseif(${PRODUCT} STREQUAL "BellHybrid")
+ set(CIRCULAR_BUFFER_SIZE 512)
+ else()
+ message(FATAL_ERROR "Unknown product: ${PRODUCT}")
+ endif()
+elseif (${PROJECT_TARGET} STREQUAL "TARGET_Linux")
+ set(CIRCULAR_BUFFER_SIZE 1024)
+else()
+ message(FATAL_ERROR "Unknown target: ${PROJECT_TARGET}")
+endif()
+
+target_compile_definitions(log
+ PUBLIC
+ LOGGER_CIRCULAR_BUFFER_SIZE=${CIRCULAR_BUFFER_SIZE}
+ )
+
if (${ENABLE_TESTS})
add_subdirectory(tests)
endif()
M module-utils/log/LoggerBufferContainer.hpp => module-utils/log/LoggerBufferContainer.hpp +2 -2
@@ 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
#pragma once
@@ 42,7 42,7 @@ class LoggerBufferContainer
}
private:
- static constexpr size_t circularBufferSize = 1024;
+ static constexpr size_t circularBufferSize = LOGGER_CIRCULAR_BUFFER_SIZE;
static constexpr size_t numberOfBuffers = 2;
size_t currentIndex;
M products/BellHybrid/apps/application-bell-main/windows/BellMainMenuWindow.cpp => products/BellHybrid/apps/application-bell-main/windows/BellMainMenuWindow.cpp +1 -1
@@ 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 "BellMainMenuWindow.hpp"
M products/BellHybrid/serial-number-reader/SerialNumberReader.cpp => products/BellHybrid/serial-number-reader/SerialNumberReader.cpp +5 -2
@@ 4,6 4,7 @@
#include <purefs/vfs_subsystem.hpp>
#include <serial-number-reader/SerialNumberReader.hpp>
+#include <log/log.hpp>
namespace
{
@@ 20,11 21,13 @@ namespace
buffer[EMMC_SN_LENGTH] = '\0';
return std::string(buffer);
}
+
} // namespace
namespace serial_number_reader
{
- std::string readSerialNumber()
+ const std::string &readSerialNumber()
{
- return readSerialNumberFromEmmc();
+ const static std::string serialNumber = readSerialNumberFromEmmc();
+ return serialNumber;
}
} // namespace serial_number_reader
M products/BellHybrid/serial-number-reader/include/serial-number-reader/SerialNumberReader.hpp => products/BellHybrid/serial-number-reader/include/serial-number-reader/SerialNumberReader.hpp +1 -1
@@ 6,5 6,5 @@
namespace serial_number_reader
{
- std::string readSerialNumber();
+ const std::string &readSerialNumber();
} // namespace serial_number_reader
M products/BellHybrid/services/appmgr/IdleHandler.cpp => products/BellHybrid/services/appmgr/IdleHandler.cpp +1 -1
@@ 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 <appmgr/IdleHandler.hpp>
M products/BellHybrid/services/appmgr/include/appmgr/ApplicationManager.hpp => products/BellHybrid/services/appmgr/include/appmgr/ApplicationManager.hpp +1 -1
@@ 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
#pragma once
M products/BellHybrid/services/appmgr/include/appmgr/IdleHandler.hpp => products/BellHybrid/services/appmgr/include/appmgr/IdleHandler.hpp +1 -1
@@ 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 once
M products/BellHybrid/services/desktop/endpoints/deviceInfo/DeviceInfoEndpoint.cpp => products/BellHybrid/services/desktop/endpoints/deviceInfo/DeviceInfoEndpoint.cpp +1 -1
@@ 19,7 19,7 @@
namespace sdesktop::endpoints
{
- auto DeviceInfoEndpoint::getSerialNumber() -> std::string
+ auto DeviceInfoEndpoint::getSerialNumber() -> const std::string &
{
return serial_number_reader::readSerialNumber();
}
M products/BellHybrid/services/desktop/endpoints/include/endpoints/deviceInfo/DeviceInfoEndpoint.hpp => products/BellHybrid/services/desktop/endpoints/include/endpoints/deviceInfo/DeviceInfoEndpoint.hpp +1 -1
@@ 14,7 14,7 @@ namespace sdesktop::endpoints
explicit DeviceInfoEndpoint(sys::Service *ownerServicePtr) : DeviceInfoEndpointCommon(ownerServicePtr)
{}
- auto getSerialNumber() -> std::string;
+ auto getSerialNumber() -> const std::string &;
auto getOnboardingState() -> OnboardingState;
auto getDeviceInfo(Context &context) -> http::Code override;
};