Merge "[openweave] Export the required symbols"
diff --git a/BUILD.gn b/BUILD.gn
index c7644f2..0802801 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -23,5 +23,9 @@
# Provides OpenWeave plus the minimal dependencies to build.
source_set("openweave-core-minimal") {
public_deps = [ ":openweave-core" ]
- sources = [ "src/adaptations/device-layer/PersistedStorage-Stub.cpp" ]
+ sources = [
+ "src/adaptations/device-layer/Fuchsia/minimal/CriticalSection-Stub.cpp",
+ "src/adaptations/device-layer/Fuchsia/minimal/Logging.cpp",
+ "src/adaptations/device-layer/Fuchsia/minimal/PersistedStorage-Stub.cpp",
+ ]
}
diff --git a/src/adaptations/device-layer/Fuchsia/minimal/CriticalSection-Stub.cpp b/src/adaptations/device-layer/Fuchsia/minimal/CriticalSection-Stub.cpp
new file mode 100644
index 0000000..48cf0d6
--- /dev/null
+++ b/src/adaptations/device-layer/Fuchsia/minimal/CriticalSection-Stub.cpp
@@ -0,0 +1,28 @@
+// Copyright 2021 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+namespace nl {
+namespace Weave {
+namespace Profiles {
+namespace DataManagement_Current {
+namespace Platform {
+
+// Dummy implementations of CriticalSection platform methods. When using the
+// subset of openweave that does not require CriticalSection to operate, but
+// must still satisfy the linker, these implementations can be used instead.
+//
+// NOTE: Do *NOT* use this implementation if the full functionality of
+// OpenWeave is used, this is intended only as a way to satisfy the linker
+// for uses that use a small, limited subset of OpenWeave that do not require
+// these to be implemented.
+
+void CriticalSectionEnter() {}
+void CriticalSectionExit() {}
+
+} // namespace Platform
+} // namespace DataManagement_Current
+} // namespace Profiles
+} // namespace Weave
+} // namespace nl
+
diff --git a/src/adaptations/device-layer/Fuchsia/minimal/Logging.cpp b/src/adaptations/device-layer/Fuchsia/minimal/Logging.cpp
new file mode 100644
index 0000000..ed831b2
--- /dev/null
+++ b/src/adaptations/device-layer/Fuchsia/minimal/Logging.cpp
@@ -0,0 +1,70 @@
+// Copyright 2021 The Fuchsia Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include <lib/syslog/cpp/macros.h>
+
+#include <Weave/Support/logging/WeaveLogging.h>
+
+#if WEAVE_LOGGING_STYLE_EXTERNAL
+using namespace ::nl::Weave;
+
+namespace nl {
+namespace Weave {
+namespace Logging {
+namespace {
+constexpr size_t kFormattedMessageSize = 256;
+} // namespace
+
+void Log(uint8_t module, uint8_t category, const char * file, uint32_t line, const char * msg,
+ va_list v)
+{
+ if (IsCategoryEnabled(category))
+ {
+ char formattedMsg[kFormattedMessageSize];
+ vsnprintf(formattedMsg, sizeof(formattedMsg), msg, v);
+
+ char module_name[nlWeaveLoggingModuleNameLen + 1];
+ GetModuleName(module_name, module);
+
+ syslog::LogSeverity severity = syslog::LOG_INFO;
+ switch (category)
+ {
+ case kLogCategory_Error:
+ severity = syslog::LOG_ERROR;
+ break;
+ case kLogCategory_Progress:
+ case kLogCategory_Retain:
+ case kLogCategory_Detail:
+ severity = syslog::LOG_INFO;
+ break;
+ }
+
+ const char * file_basename = strrchr(file, '/');
+ file_basename = file_basename ? file_basename + 1 : file;
+ syslog::LogMessage(severity, file_basename, line, nullptr, nullptr).stream()
+ << "[" << module_name << "] " << formattedMsg;
+ }
+}
+
+void Log(uint8_t module, uint8_t category, const char * msg, ...)
+{
+ va_list vargs;
+ va_start(vargs, msg);
+ Log(module, category, "", 0, msg, vargs);
+ va_end(vargs);
+}
+
+void Log(uint8_t module, uint8_t category, const char * file, uint32_t line, const char * msg, ...)
+{
+ va_list vargs;
+ va_start(vargs, msg);
+ Log(module, category, file, line, msg, vargs);
+ va_end(vargs);
+}
+
+} // namespace Logging
+} // namespace Weave
+} // namespace nl
+
+#endif // WEAVE_LOGGING_STYLE_EXTERNAL
diff --git a/src/adaptations/device-layer/PersistedStorage-Stub.cpp b/src/adaptations/device-layer/Fuchsia/minimal/PersistedStorage-Stub.cpp
similarity index 100%
rename from src/adaptations/device-layer/PersistedStorage-Stub.cpp
rename to src/adaptations/device-layer/Fuchsia/minimal/PersistedStorage-Stub.cpp
diff --git a/src/lib/profiles/weave-tunneling/WeaveTunnelControl.cpp b/src/lib/profiles/weave-tunneling/WeaveTunnelControl.cpp
index 2c4d656..3d06392 100644
--- a/src/lib/profiles/weave-tunneling/WeaveTunnelControl.cpp
+++ b/src/lib/profiles/weave-tunneling/WeaveTunnelControl.cpp
@@ -1204,6 +1204,8 @@
VerifyOrExit(msgBuf != NULL, err = WEAVE_ERROR_NO_MEMORY);
+ VerifyOrExit(conMgr != NULL && conMgr->mServiceCon != NULL, err = WEAVE_ERROR_INVALID_ARGUMENT);
+
// Create an ExchangeContext
err = CreateContext(conMgr->mServiceCon, onMsgRcvd);