Add kml location handler to webRtc library
Test: m
Change-Id: I946e6fda92f59c92f4c17b0b21f888d4d2c9a8ea
diff --git a/host/frontend/webrtc/Android.bp b/host/frontend/webrtc/Android.bp
index 89a5cbb..f85a496 100644
--- a/host/frontend/webrtc/Android.bp
+++ b/host/frontend/webrtc/Android.bp
@@ -87,6 +87,7 @@
"bluetooth_handler.cpp",
"location_handler.cpp",
"gpx_locations_handler.cpp",
+ "kml_locations_handler.cpp",
"client_server.cpp",
"connection_observer.cpp",
"cvd_video_frame_buffer.cpp",
diff --git a/host/frontend/webrtc/kml_locations_handler.cpp b/host/frontend/webrtc/kml_locations_handler.cpp
new file mode 100644
index 0000000..a181b84
--- /dev/null
+++ b/host/frontend/webrtc/kml_locations_handler.cpp
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "host/frontend/webrtc/kml_locations_handler.h"
+#include <android-base/logging.h>
+#include <unistd.h>
+#include "host/libs/config/cuttlefish_config.h"
+#include "host/libs/location/GnssClient.h"
+#include "host/libs/location/KmlParser.h"
+#include "string.h"
+
+#include <chrono>
+#include <iostream>
+#include <sstream>
+#include <thread>
+#include <vector>
+
+namespace cuttlefish {
+namespace webrtc_streaming {
+
+KmlLocationsHandler::KmlLocationsHandler(
+ std::function<void(const uint8_t *, size_t)> send_to_client) {}
+
+KmlLocationsHandler::~KmlLocationsHandler() {}
+
+void KmlLocationsHandler::HandleMessage(const uint8_t *msg, size_t len) {
+ LOG(DEBUG) << "ENTER KmlLocationsHandler handleMessage , size: " << len;
+ std::string error;
+ GpsFixArray coordinates;
+ if (!KmlParser::parseString((const char *)&msg[0], len, &coordinates,
+ &error)) {
+ LOG(ERROR) << " Parsing Error: " << error << std::endl;
+ return;
+ }
+
+ LOG(DEBUG) << "Number of parsed points: " << coordinates.size() << std::endl;
+ auto config = CuttlefishConfig::Get();
+ if (!config) {
+ LOG(ERROR) << "Failed to obtain config object";
+ return;
+ }
+ auto instance = config->ForDefaultInstance();
+ auto server_port = instance.gnss_grpc_proxy_server_port();
+ std::string socket_name =
+ std::string("localhost:") + std::to_string(server_port);
+ LOG(DEBUG) << "Server port: " << server_port << " socket: " << socket_name
+ << std::endl;
+
+
+ GnssClient gpsclient(
+ grpc::CreateChannel(socket_name, grpc::InsecureChannelCredentials()));
+
+
+ auto reply = gpsclient.SendGpsLocations(1000,coordinates);
+}
+
+} // namespace webrtc_streaming
+} // namespace cuttlefish
diff --git a/host/frontend/webrtc/kml_locations_handler.h b/host/frontend/webrtc/kml_locations_handler.h
new file mode 100644
index 0000000..d8b2ffc
--- /dev/null
+++ b/host/frontend/webrtc/kml_locations_handler.h
@@ -0,0 +1,33 @@
+/*
+ * Copyright (C) 2022 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include "common/libs/fs/shared_select.h"
+
+namespace cuttlefish {
+namespace webrtc_streaming {
+
+struct KmlLocationsHandler {
+ explicit KmlLocationsHandler(
+ std::function<void(const uint8_t *, size_t)> send_to_client);
+
+ ~KmlLocationsHandler();
+
+ void HandleMessage(const uint8_t *msg, size_t len);
+};
+} // namespace webrtc_streaming
+} // namespace cuttlefish