X-Git-Url: https://gerrit.akraino.org/r/gitweb?a=blobdiff_plain;f=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fsrc%2Fanbox%2Fqemu%2Fcamera_message_processor.cpp;fp=src%2Ftype3_AndroidCloud%2Fanbox-master%2Fsrc%2Fanbox%2Fqemu%2Fcamera_message_processor.cpp;h=740fde01aeea03f0b5158d443040a747885b8c9b;hb=e26c1ec581be598521517829adba8c8dd23a768f;hp=0000000000000000000000000000000000000000;hpb=6699c1aea74eeb0eb400e6299079f0c7576f716f;p=iec.git diff --git a/src/type3_AndroidCloud/anbox-master/src/anbox/qemu/camera_message_processor.cpp b/src/type3_AndroidCloud/anbox-master/src/anbox/qemu/camera_message_processor.cpp new file mode 100644 index 0000000..740fde0 --- /dev/null +++ b/src/type3_AndroidCloud/anbox-master/src/anbox/qemu/camera_message_processor.cpp @@ -0,0 +1,64 @@ +/* + * Copyright (C) 2016 Simon Fels + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3, as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranties of + * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR + * PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + * + */ + +#include "anbox/qemu/camera_message_processor.h" +#include "anbox/logger.h" + +namespace anbox { +namespace qemu { +CameraMessageProcessor::CameraMessageProcessor( + const std::shared_ptr &messenger) + : messenger_(messenger) {} + +CameraMessageProcessor::~CameraMessageProcessor() {} + +bool CameraMessageProcessor::process_data( + const std::vector &data) { + for (const auto &byte : data) buffer_.push_back(byte); + + process_commands(); + + return true; +} + +void CameraMessageProcessor::process_commands() { + while (buffer_.size() > 0) { + size_t size = 0; + while (size < buffer_.size()) { + if (buffer_.at(size) == 0x0) break; + size++; + } + + std::string command; + command.insert(0, reinterpret_cast(buffer_.data()), size); + buffer_.erase(buffer_.begin(), buffer_.begin() + size + 1); + + handle_command(command); + } +} + +void CameraMessageProcessor::handle_command(const std::string &command) { + if (command == "list") list(); +} + +void CameraMessageProcessor::list() { + char buf[5]; + snprintf(buf, 5, "\n"); + messenger_->send(buf, strlen(buf)); +} +} // namespace qemu +} // namespace anbox