aboutsummaryrefslogtreecommitdiffstats
path: root/Software
diff options
context:
space:
mode:
authorRoy Ben-Shabat <Roy@Twine-s.com>2017-11-05 14:53:46 +0200
committerRoy Ben-Shabat <Roy@Twine-s.com>2017-11-05 14:53:46 +0200
commit4b4e1154f0f041bcfea4fa6b922c0c5c2274983c (patch)
treee5c895aedef095240adbfd63729939b3a2b491f5 /Software
parent13d10370d7f10aec71d48c5914c76208111eeb05 (diff)
downloadTango-4b4e1154f0f041bcfea4fa6b922c0c5c2274983c.tar.gz
Tango-4b4e1154f0f041bcfea4fa6b922c0c5c2274983c.zip
Added new Android Studio project.
Implemented PMR script for android studio. Added C++ support. Implemented android PMR unit testing.
Diffstat (limited to 'Software')
-rw-r--r--Software/Android-Studio/.gitignore9
-rw-r--r--Software/Android-Studio/Tango.BL/.gitignore1
-rw-r--r--Software/Android-Studio/Tango.BL/CMakeLists.txt45
-rw-r--r--Software/Android-Studio/Tango.BL/build.gradle42
-rw-r--r--Software/Android-Studio/Tango.BL/proguard-rules.pro25
-rw-r--r--Software/Android-Studio/Tango.BL/src/androidTest/java/com/twine/tango/bl/ExampleInstrumentedTest.java29
-rw-r--r--Software/Android-Studio/Tango.BL/src/main/AndroidManifest.xml2
-rw-r--r--Software/Android-Studio/Tango.BL/src/main/cpp/Android.mk0
-rw-r--r--Software/Android-Studio/Tango.BL/src/main/cpp/OtherClass.cpp9
-rw-r--r--Software/Android-Studio/Tango.BL/src/main/cpp/OtherClass.h19
-rw-r--r--Software/Android-Studio/Tango.BL/src/main/cpp/native-lib.cpp18
-rw-r--r--Software/Android-Studio/Tango.BL/src/main/java/com/twine/tango/bl/Example.java21
-rw-r--r--Software/Android-Studio/Tango.BL/src/main/res/values/strings.xml3
-rw-r--r--Software/Android-Studio/Tango.BL/src/test/java/com/twine/tango/bl/ExampleUnitTest.java17
-rw-r--r--Software/Android-Studio/Tango.PMR/.gitignore1
-rw-r--r--Software/Android-Studio/Tango.PMR/build.gradle22
-rw-r--r--Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/MessageContainerOuterClass.java602
-rw-r--r--Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/MessageTypeOuterClass.java152
-rw-r--r--Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/RGBOuterClass.java629
-rw-r--r--Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Jobs/JobOuterClass.java952
-rw-r--r--Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Jobs/SegmentOuterClass.java838
-rw-r--r--Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/dummyClass.java5
-rw-r--r--Software/Android-Studio/app/.gitignore1
-rw-r--r--Software/Android-Studio/app/CMakeLists.txt44
-rw-r--r--Software/Android-Studio/app/build.gradle41
-rw-r--r--Software/Android-Studio/app/proguard-rules.pro25
-rw-r--r--Software/Android-Studio/app/src/androidTest/java/com/twine/tango/ExampleInstrumentedTest.java29
-rw-r--r--Software/Android-Studio/app/src/main/AndroidManifest.xml21
-rw-r--r--Software/Android-Studio/app/src/main/cpp/Android.mk0
-rw-r--r--Software/Android-Studio/app/src/main/cpp/native-lib.cpp13
-rw-r--r--Software/Android-Studio/app/src/main/java/com/twine/tango/MainActivity.java34
-rw-r--r--Software/Android-Studio/app/src/main/res/drawable/ic_launcher_background.xml113
-rw-r--r--Software/Android-Studio/app/src/main/res/layout/activity_main.xml19
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml5
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml5
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher.pngbin0 -> 3358 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.pngbin0 -> 5117 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher_round.pngbin0 -> 5084 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher.pngbin0 -> 2386 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.pngbin0 -> 2652 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher_round.pngbin0 -> 3179 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher.pngbin0 -> 4648 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.pngbin0 -> 7011 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher_round.pngbin0 -> 7381 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher.pngbin0 -> 7008 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.pngbin0 -> 14578 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.pngbin0 -> 11545 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher.pngbin0 -> 9442 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.pngbin0 -> 21908 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.pngbin0 -> 16109 bytes
-rw-r--r--Software/Android-Studio/app/src/main/res/values/colors.xml6
-rw-r--r--Software/Android-Studio/app/src/main/res/values/strings.xml3
-rw-r--r--Software/Android-Studio/app/src/main/res/values/styles.xml11
-rw-r--r--Software/Android-Studio/app/src/test/java/com/twine/tango/ExampleUnitTest.java20
-rw-r--r--Software/Android-Studio/app/src/test/java/com/twine/tango/PMR_TST.java55
-rw-r--r--Software/Android-Studio/build.gradle27
-rw-r--r--Software/Android-Studio/gradle.properties17
-rw-r--r--Software/Android-Studio/gradle/wrapper/gradle-wrapper.jarbin0 -> 53636 bytes
-rw-r--r--Software/Android-Studio/gradle/wrapper/gradle-wrapper.properties6
-rw-r--r--Software/Android-Studio/gradlew160
-rw-r--r--Software/Android-Studio/gradlew.bat90
-rw-r--r--Software/Android-Studio/settings.gradle1
-rw-r--r--Software/Visual Studio/Tango.Protobuf/ProtoCompiler.cs3
-rw-r--r--Software/Visual Studio/Utilities/Tango.Protobuf.CLI/Program.cs12
64 files changed, 4196 insertions, 6 deletions
diff --git a/Software/Android-Studio/.gitignore b/Software/Android-Studio/.gitignore
new file mode 100644
index 000000000..39fb081a4
--- /dev/null
+++ b/Software/Android-Studio/.gitignore
@@ -0,0 +1,9 @@
+*.iml
+.gradle
+/local.properties
+/.idea/workspace.xml
+/.idea/libraries
+.DS_Store
+/build
+/captures
+.externalNativeBuild
diff --git a/Software/Android-Studio/Tango.BL/.gitignore b/Software/Android-Studio/Tango.BL/.gitignore
new file mode 100644
index 000000000..796b96d1c
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/Software/Android-Studio/Tango.BL/CMakeLists.txt b/Software/Android-Studio/Tango.BL/CMakeLists.txt
new file mode 100644
index 000000000..201e7c537
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/CMakeLists.txt
@@ -0,0 +1,45 @@
+# For more information about using CMake with Android Studio, read the
+# documentation: https://d.android.com/studio/projects/add-native-code.html
+
+# Sets the minimum version of CMake required to build the native library.
+
+cmake_minimum_required(VERSION 3.4.1)
+
+# Creates and names a library, sets it as either STATIC
+# or SHARED, and provides the relative paths to its source code.
+# You can define multiple libraries, and CMake builds them for you.
+# Gradle automatically packages shared libraries with your APK.
+
+add_library( # Sets the name of the library.
+ native-lib
+
+ # Sets the library as a shared library.
+ SHARED
+
+ # Provides a relative path to your source file(s).
+ src/main/cpp/native-lib.cpp
+ src/main/cpp/OtherClass.cpp )
+
+# Searches for a specified prebuilt library and stores the path as a
+# variable. Because CMake includes system libraries in the search path by
+# default, you only need to specify the name of the public NDK library
+# you want to add. CMake verifies that the library exists before
+# completing its build.
+
+find_library( # Sets the name of the path variable.
+ log-lib
+
+ # Specifies the name of the NDK library that
+ # you want CMake to locate.
+ log )
+
+# Specifies libraries CMake should link to your target library. You
+# can link multiple libraries, such as libraries you define in this
+# build script, prebuilt third-party libraries, or system libraries.
+
+target_link_libraries( # Specifies the target library.
+ native-lib
+
+ # Links the target library to the log library
+ # included in the NDK.
+ ${log-lib} ) \ No newline at end of file
diff --git a/Software/Android-Studio/Tango.BL/build.gradle b/Software/Android-Studio/Tango.BL/build.gradle
new file mode 100644
index 000000000..f93ac6d3d
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/build.gradle
@@ -0,0 +1,42 @@
+apply plugin: 'com.android.library'
+
+android {
+ compileSdkVersion 26
+ buildToolsVersion "26.0.1"
+
+
+ defaultConfig {
+ minSdkVersion 22
+ targetSdkVersion 26
+ versionCode 1
+ versionName "1.0"
+
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ externalNativeBuild {
+ cmake {
+ cppFlags "-std=c++11 -frtti -fexceptions"
+ }
+ }
+
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+ externalNativeBuild {
+ cmake {
+ path "CMakeLists.txt"
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+
+ implementation 'com.android.support:appcompat-v7:26.1.0'
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'com.android.support.test:runner:1.0.1'
+ androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
+}
diff --git a/Software/Android-Studio/Tango.BL/proguard-rules.pro b/Software/Android-Studio/Tango.BL/proguard-rules.pro
new file mode 100644
index 000000000..a0eef131a
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/proguard-rules.pro
@@ -0,0 +1,25 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in C:\Users\Roy\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/Software/Android-Studio/Tango.BL/src/androidTest/java/com/twine/tango/bl/ExampleInstrumentedTest.java b/Software/Android-Studio/Tango.BL/src/androidTest/java/com/twine/tango/bl/ExampleInstrumentedTest.java
new file mode 100644
index 000000000..53e0be06b
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/src/androidTest/java/com/twine/tango/bl/ExampleInstrumentedTest.java
@@ -0,0 +1,29 @@
+package com.twine.tango.bl;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() throws Exception {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getTargetContext();
+
+ Example e = new Example();
+ e.Do();
+
+ assertEquals("com.twine.tango.bl.test", appContext.getPackageName());
+ }
+}
diff --git a/Software/Android-Studio/Tango.BL/src/main/AndroidManifest.xml b/Software/Android-Studio/Tango.BL/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..29e67ea39
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/src/main/AndroidManifest.xml
@@ -0,0 +1,2 @@
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.twine.tango.bl" />
diff --git a/Software/Android-Studio/Tango.BL/src/main/cpp/Android.mk b/Software/Android-Studio/Tango.BL/src/main/cpp/Android.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/src/main/cpp/Android.mk
diff --git a/Software/Android-Studio/Tango.BL/src/main/cpp/OtherClass.cpp b/Software/Android-Studio/Tango.BL/src/main/cpp/OtherClass.cpp
new file mode 100644
index 000000000..50d6304dd
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/src/main/cpp/OtherClass.cpp
@@ -0,0 +1,9 @@
+//
+// Created by Roy on 11/5/2017.
+//
+
+#include "OtherClass.h"
+
+string OtherClass::getString(string str) {
+ return str;
+}
diff --git a/Software/Android-Studio/Tango.BL/src/main/cpp/OtherClass.h b/Software/Android-Studio/Tango.BL/src/main/cpp/OtherClass.h
new file mode 100644
index 000000000..0efe65b71
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/src/main/cpp/OtherClass.h
@@ -0,0 +1,19 @@
+//
+// Created by Roy on 11/5/2017.
+//
+#include <string>
+
+using namespace std;
+
+#ifndef ANDROID_STUDIO_OTHERCLASS_H
+#define ANDROID_STUDIO_OTHERCLASS_H
+
+
+class OtherClass {
+
+public:
+ string getString(string str);
+};
+
+
+#endif //ANDROID_STUDIO_OTHERCLASS_H
diff --git a/Software/Android-Studio/Tango.BL/src/main/cpp/native-lib.cpp b/Software/Android-Studio/Tango.BL/src/main/cpp/native-lib.cpp
new file mode 100644
index 000000000..c7317d615
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/src/main/cpp/native-lib.cpp
@@ -0,0 +1,18 @@
+#include <jni.h>
+#include <string>
+#include "OtherClass.h"
+
+extern "C"
+JNIEXPORT jstring
+
+JNICALL
+Java_com_twine_tango_bl_Example_getString(
+ JNIEnv *env,
+ jobject /* this */)
+{
+
+ OtherClass c;
+
+ std::string hello = "Hello from C++" + c.getString(" Some String");
+ return env->NewStringUTF(hello.c_str());
+}
diff --git a/Software/Android-Studio/Tango.BL/src/main/java/com/twine/tango/bl/Example.java b/Software/Android-Studio/Tango.BL/src/main/java/com/twine/tango/bl/Example.java
new file mode 100644
index 000000000..992ddf16f
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/src/main/java/com/twine/tango/bl/Example.java
@@ -0,0 +1,21 @@
+package com.twine.tango.bl;
+
+import android.util.Log;
+
+/**
+ * Created by Roy on 11/2/2017.
+ */
+
+public class Example {
+ public native String getString();
+
+ static {
+ System.loadLibrary("native-lib");
+ }
+
+ public void Do()
+ {
+ String a = getString();
+ Log.i("NATIVE NATIVE",a);
+ }
+}
diff --git a/Software/Android-Studio/Tango.BL/src/main/res/values/strings.xml b/Software/Android-Studio/Tango.BL/src/main/res/values/strings.xml
new file mode 100644
index 000000000..5c465ac04
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+<resources>
+ <string name="app_name">Tango.BL</string>
+</resources>
diff --git a/Software/Android-Studio/Tango.BL/src/test/java/com/twine/tango/bl/ExampleUnitTest.java b/Software/Android-Studio/Tango.BL/src/test/java/com/twine/tango/bl/ExampleUnitTest.java
new file mode 100644
index 000000000..5db76b579
--- /dev/null
+++ b/Software/Android-Studio/Tango.BL/src/test/java/com/twine/tango/bl/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package com.twine.tango.bl;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() throws Exception {
+ assertEquals(4, 2 + 2);
+ }
+} \ No newline at end of file
diff --git a/Software/Android-Studio/Tango.PMR/.gitignore b/Software/Android-Studio/Tango.PMR/.gitignore
new file mode 100644
index 000000000..796b96d1c
--- /dev/null
+++ b/Software/Android-Studio/Tango.PMR/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/Software/Android-Studio/Tango.PMR/build.gradle b/Software/Android-Studio/Tango.PMR/build.gradle
new file mode 100644
index 000000000..06435d18d
--- /dev/null
+++ b/Software/Android-Studio/Tango.PMR/build.gradle
@@ -0,0 +1,22 @@
+apply plugin: 'java-library'
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ compile 'com.google.protobuf:protobuf-java:3.4.0'
+}
+
+sourceCompatibility = "1.7"
+targetCompatibility = "1.7"
+
+task createPMR(type: Exec, description: 'Update all PMR files') {
+
+ commandLine '..\\Visual Studio\\Build\\Debug\\proto-tc.exe', '-i' , '..\\..\\PMR\\Messages', '-o', 'src\\main\\java\\Tango\\PMR', '-l', 'Java'
+
+ ext.output = {
+ return standardOutput.toString()
+ }
+}
+
+tasks.withType(JavaCompile) {
+ compileTask -> compileTask.dependsOn createPMR
+} \ No newline at end of file
diff --git a/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/MessageContainerOuterClass.java b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/MessageContainerOuterClass.java
new file mode 100644
index 000000000..331fab637
--- /dev/null
+++ b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/MessageContainerOuterClass.java
@@ -0,0 +1,602 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: MessageContainer.proto
+
+package Tango.PMR.Common;
+
+public final class MessageContainerOuterClass {
+ private MessageContainerOuterClass() {}
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistryLite registry) {
+ }
+
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistry registry) {
+ registerAllExtensions(
+ (com.google.protobuf.ExtensionRegistryLite) registry);
+ }
+ public interface MessageContainerOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:Tango.PMR.Common.MessageContainer)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <code>.Tango.PMR.Common.MessageType Type = 1;</code>
+ */
+ int getTypeValue();
+ /**
+ * <code>.Tango.PMR.Common.MessageType Type = 1;</code>
+ */
+ Tango.PMR.Common.MessageTypeOuterClass.MessageType getType();
+
+ /**
+ * <code>bytes Data = 2;</code>
+ */
+ com.google.protobuf.ByteString getData();
+ }
+ /**
+ * Protobuf type {@code Tango.PMR.Common.MessageContainer}
+ */
+ public static final class MessageContainer extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:Tango.PMR.Common.MessageContainer)
+ MessageContainerOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use MessageContainer.newBuilder() to construct.
+ private MessageContainer(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private MessageContainer() {
+ type_ = 0;
+ data_ = com.google.protobuf.ByteString.EMPTY;
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private MessageContainer(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 8: {
+ int rawValue = input.readEnum();
+
+ type_ = rawValue;
+ break;
+ }
+ case 18: {
+
+ data_ = input.readBytes();
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return Tango.PMR.Common.MessageContainerOuterClass.internal_static_Tango_PMR_Common_MessageContainer_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return Tango.PMR.Common.MessageContainerOuterClass.internal_static_Tango_PMR_Common_MessageContainer_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Tango.PMR.Common.MessageContainerOuterClass.MessageContainer.class, Tango.PMR.Common.MessageContainerOuterClass.MessageContainer.Builder.class);
+ }
+
+ public static final int TYPE_FIELD_NUMBER = 1;
+ private int type_;
+ /**
+ * <code>.Tango.PMR.Common.MessageType Type = 1;</code>
+ */
+ public int getTypeValue() {
+ return type_;
+ }
+ /**
+ * <code>.Tango.PMR.Common.MessageType Type = 1;</code>
+ */
+ public Tango.PMR.Common.MessageTypeOuterClass.MessageType getType() {
+ Tango.PMR.Common.MessageTypeOuterClass.MessageType result = Tango.PMR.Common.MessageTypeOuterClass.MessageType.valueOf(type_);
+ return result == null ? Tango.PMR.Common.MessageTypeOuterClass.MessageType.UNRECOGNIZED : result;
+ }
+
+ public static final int DATA_FIELD_NUMBER = 2;
+ private com.google.protobuf.ByteString data_;
+ /**
+ * <code>bytes Data = 2;</code>
+ */
+ public com.google.protobuf.ByteString getData() {
+ return data_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (type_ != Tango.PMR.Common.MessageTypeOuterClass.MessageType.RGB.getNumber()) {
+ output.writeEnum(1, type_);
+ }
+ if (!data_.isEmpty()) {
+ output.writeBytes(2, data_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (type_ != Tango.PMR.Common.MessageTypeOuterClass.MessageType.RGB.getNumber()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeEnumSize(1, type_);
+ }
+ if (!data_.isEmpty()) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeBytesSize(2, data_);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof Tango.PMR.Common.MessageContainerOuterClass.MessageContainer)) {
+ return super.equals(obj);
+ }
+ Tango.PMR.Common.MessageContainerOuterClass.MessageContainer other = (Tango.PMR.Common.MessageContainerOuterClass.MessageContainer) obj;
+
+ boolean result = true;
+ result = result && type_ == other.type_;
+ result = result && getData()
+ .equals(other.getData());
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + TYPE_FIELD_NUMBER;
+ hash = (53 * hash) + type_;
+ hash = (37 * hash) + DATA_FIELD_NUMBER;
+ hash = (53 * hash) + getData().hashCode();
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(Tango.PMR.Common.MessageContainerOuterClass.MessageContainer prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code Tango.PMR.Common.MessageContainer}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:Tango.PMR.Common.MessageContainer)
+ Tango.PMR.Common.MessageContainerOuterClass.MessageContainerOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return Tango.PMR.Common.MessageContainerOuterClass.internal_static_Tango_PMR_Common_MessageContainer_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return Tango.PMR.Common.MessageContainerOuterClass.internal_static_Tango_PMR_Common_MessageContainer_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Tango.PMR.Common.MessageContainerOuterClass.MessageContainer.class, Tango.PMR.Common.MessageContainerOuterClass.MessageContainer.Builder.class);
+ }
+
+ // Construct using Tango.PMR.Common.MessageContainerOuterClass.MessageContainer.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ type_ = 0;
+
+ data_ = com.google.protobuf.ByteString.EMPTY;
+
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return Tango.PMR.Common.MessageContainerOuterClass.internal_static_Tango_PMR_Common_MessageContainer_descriptor;
+ }
+
+ public Tango.PMR.Common.MessageContainerOuterClass.MessageContainer getDefaultInstanceForType() {
+ return Tango.PMR.Common.MessageContainerOuterClass.MessageContainer.getDefaultInstance();
+ }
+
+ public Tango.PMR.Common.MessageContainerOuterClass.MessageContainer build() {
+ Tango.PMR.Common.MessageContainerOuterClass.MessageContainer result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public Tango.PMR.Common.MessageContainerOuterClass.MessageContainer buildPartial() {
+ Tango.PMR.Common.MessageContainerOuterClass.MessageContainer result = new Tango.PMR.Common.MessageContainerOuterClass.MessageContainer(this);
+ result.type_ = type_;
+ result.data_ = data_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof Tango.PMR.Common.MessageContainerOuterClass.MessageContainer) {
+ return mergeFrom((Tango.PMR.Common.MessageContainerOuterClass.MessageContainer)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(Tango.PMR.Common.MessageContainerOuterClass.MessageContainer other) {
+ if (other == Tango.PMR.Common.MessageContainerOuterClass.MessageContainer.getDefaultInstance()) return this;
+ if (other.type_ != 0) {
+ setTypeValue(other.getTypeValue());
+ }
+ if (other.getData() != com.google.protobuf.ByteString.EMPTY) {
+ setData(other.getData());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ Tango.PMR.Common.MessageContainerOuterClass.MessageContainer parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (Tango.PMR.Common.MessageContainerOuterClass.MessageContainer) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private int type_ = 0;
+ /**
+ * <code>.Tango.PMR.Common.MessageType Type = 1;</code>
+ */
+ public int getTypeValue() {
+ return type_;
+ }
+ /**
+ * <code>.Tango.PMR.Common.MessageType Type = 1;</code>
+ */
+ public Builder setTypeValue(int value) {
+ type_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>.Tango.PMR.Common.MessageType Type = 1;</code>
+ */
+ public Tango.PMR.Common.MessageTypeOuterClass.MessageType getType() {
+ Tango.PMR.Common.MessageTypeOuterClass.MessageType result = Tango.PMR.Common.MessageTypeOuterClass.MessageType.valueOf(type_);
+ return result == null ? Tango.PMR.Common.MessageTypeOuterClass.MessageType.UNRECOGNIZED : result;
+ }
+ /**
+ * <code>.Tango.PMR.Common.MessageType Type = 1;</code>
+ */
+ public Builder setType(Tango.PMR.Common.MessageTypeOuterClass.MessageType value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ type_ = value.getNumber();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>.Tango.PMR.Common.MessageType Type = 1;</code>
+ */
+ public Builder clearType() {
+
+ type_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY;
+ /**
+ * <code>bytes Data = 2;</code>
+ */
+ public com.google.protobuf.ByteString getData() {
+ return data_;
+ }
+ /**
+ * <code>bytes Data = 2;</code>
+ */
+ public Builder setData(com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ data_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>bytes Data = 2;</code>
+ */
+ public Builder clearData() {
+
+ data_ = getDefaultInstance().getData();
+ onChanged();
+ return this;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:Tango.PMR.Common.MessageContainer)
+ }
+
+ // @@protoc_insertion_point(class_scope:Tango.PMR.Common.MessageContainer)
+ private static final Tango.PMR.Common.MessageContainerOuterClass.MessageContainer DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new Tango.PMR.Common.MessageContainerOuterClass.MessageContainer();
+ }
+
+ public static Tango.PMR.Common.MessageContainerOuterClass.MessageContainer getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<MessageContainer>
+ PARSER = new com.google.protobuf.AbstractParser<MessageContainer>() {
+ public MessageContainer parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new MessageContainer(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<MessageContainer> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<MessageContainer> getParserForType() {
+ return PARSER;
+ }
+
+ public Tango.PMR.Common.MessageContainerOuterClass.MessageContainer getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_Tango_PMR_Common_MessageContainer_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_Tango_PMR_Common_MessageContainer_fieldAccessorTable;
+
+ public static com.google.protobuf.Descriptors.FileDescriptor
+ getDescriptor() {
+ return descriptor;
+ }
+ private static com.google.protobuf.Descriptors.FileDescriptor
+ descriptor;
+ static {
+ java.lang.String[] descriptorData = {
+ "\n\026MessageContainer.proto\022\020Tango.PMR.Comm" +
+ "on\032\021MessageType.proto\"M\n\020MessageContaine" +
+ "r\022+\n\004Type\030\001 \001(\0162\035.Tango.PMR.Common.Messa" +
+ "geType\022\014\n\004Data\030\002 \001(\014b\006proto3"
+ };
+ com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+ new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
+ public com.google.protobuf.ExtensionRegistry assignDescriptors(
+ com.google.protobuf.Descriptors.FileDescriptor root) {
+ descriptor = root;
+ return null;
+ }
+ };
+ com.google.protobuf.Descriptors.FileDescriptor
+ .internalBuildGeneratedFileFrom(descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[] {
+ Tango.PMR.Common.MessageTypeOuterClass.getDescriptor(),
+ }, assigner);
+ internal_static_Tango_PMR_Common_MessageContainer_descriptor =
+ getDescriptor().getMessageTypes().get(0);
+ internal_static_Tango_PMR_Common_MessageContainer_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_Tango_PMR_Common_MessageContainer_descriptor,
+ new java.lang.String[] { "Type", "Data", });
+ Tango.PMR.Common.MessageTypeOuterClass.getDescriptor();
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/MessageTypeOuterClass.java b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/MessageTypeOuterClass.java
new file mode 100644
index 000000000..dcdd6b0e3
--- /dev/null
+++ b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/MessageTypeOuterClass.java
@@ -0,0 +1,152 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: MessageType.proto
+
+package Tango.PMR.Common;
+
+public final class MessageTypeOuterClass {
+ private MessageTypeOuterClass() {}
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistryLite registry) {
+ }
+
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistry registry) {
+ registerAllExtensions(
+ (com.google.protobuf.ExtensionRegistryLite) registry);
+ }
+ /**
+ * Protobuf enum {@code Tango.PMR.Common.MessageType}
+ */
+ public enum MessageType
+ implements com.google.protobuf.ProtocolMessageEnum {
+ /**
+ * <code>RGB = 0;</code>
+ */
+ RGB(0),
+ /**
+ * <code>Job = 1;</code>
+ */
+ Job(1),
+ /**
+ * <code>Segment = 2;</code>
+ */
+ Segment(2),
+ UNRECOGNIZED(-1),
+ ;
+
+ /**
+ * <code>RGB = 0;</code>
+ */
+ public static final int RGB_VALUE = 0;
+ /**
+ * <code>Job = 1;</code>
+ */
+ public static final int Job_VALUE = 1;
+ /**
+ * <code>Segment = 2;</code>
+ */
+ public static final int Segment_VALUE = 2;
+
+
+ public final int getNumber() {
+ if (this == UNRECOGNIZED) {
+ throw new java.lang.IllegalArgumentException(
+ "Can't get the number of an unknown enum value.");
+ }
+ return value;
+ }
+
+ /**
+ * @deprecated Use {@link #forNumber(int)} instead.
+ */
+ @java.lang.Deprecated
+ public static MessageType valueOf(int value) {
+ return forNumber(value);
+ }
+
+ public static MessageType forNumber(int value) {
+ switch (value) {
+ case 0: return RGB;
+ case 1: return Job;
+ case 2: return Segment;
+ default: return null;
+ }
+ }
+
+ public static com.google.protobuf.Internal.EnumLiteMap<MessageType>
+ internalGetValueMap() {
+ return internalValueMap;
+ }
+ private static final com.google.protobuf.Internal.EnumLiteMap<
+ MessageType> internalValueMap =
+ new com.google.protobuf.Internal.EnumLiteMap<MessageType>() {
+ public MessageType findValueByNumber(int number) {
+ return MessageType.forNumber(number);
+ }
+ };
+
+ public final com.google.protobuf.Descriptors.EnumValueDescriptor
+ getValueDescriptor() {
+ return getDescriptor().getValues().get(ordinal());
+ }
+ public final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptorForType() {
+ return getDescriptor();
+ }
+ public static final com.google.protobuf.Descriptors.EnumDescriptor
+ getDescriptor() {
+ return Tango.PMR.Common.MessageTypeOuterClass.getDescriptor().getEnumTypes().get(0);
+ }
+
+ private static final MessageType[] VALUES = values();
+
+ public static MessageType valueOf(
+ com.google.protobuf.Descriptors.EnumValueDescriptor desc) {
+ if (desc.getType() != getDescriptor()) {
+ throw new java.lang.IllegalArgumentException(
+ "EnumValueDescriptor is not for this type.");
+ }
+ if (desc.getIndex() == -1) {
+ return UNRECOGNIZED;
+ }
+ return VALUES[desc.getIndex()];
+ }
+
+ private final int value;
+
+ private MessageType(int value) {
+ this.value = value;
+ }
+
+ // @@protoc_insertion_point(enum_scope:Tango.PMR.Common.MessageType)
+ }
+
+
+ public static com.google.protobuf.Descriptors.FileDescriptor
+ getDescriptor() {
+ return descriptor;
+ }
+ private static com.google.protobuf.Descriptors.FileDescriptor
+ descriptor;
+ static {
+ java.lang.String[] descriptorData = {
+ "\n\021MessageType.proto\022\020Tango.PMR.Common*,\n" +
+ "\013MessageType\022\007\n\003RGB\020\000\022\007\n\003Job\020\001\022\013\n\007Segmen" +
+ "t\020\002b\006proto3"
+ };
+ com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+ new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
+ public com.google.protobuf.ExtensionRegistry assignDescriptors(
+ com.google.protobuf.Descriptors.FileDescriptor root) {
+ descriptor = root;
+ return null;
+ }
+ };
+ com.google.protobuf.Descriptors.FileDescriptor
+ .internalBuildGeneratedFileFrom(descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[] {
+ }, assigner);
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/RGBOuterClass.java b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/RGBOuterClass.java
new file mode 100644
index 000000000..7838d31f6
--- /dev/null
+++ b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Common/RGBOuterClass.java
@@ -0,0 +1,629 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: RGB.proto
+
+package Tango.PMR.Common;
+
+public final class RGBOuterClass {
+ private RGBOuterClass() {}
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistryLite registry) {
+ }
+
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistry registry) {
+ registerAllExtensions(
+ (com.google.protobuf.ExtensionRegistryLite) registry);
+ }
+ public interface RGBOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:Tango.PMR.Common.RGB)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <code>int32 R = 1;</code>
+ */
+ int getR();
+
+ /**
+ * <code>int32 G = 2;</code>
+ */
+ int getG();
+
+ /**
+ * <code>int32 B = 3;</code>
+ */
+ int getB();
+ }
+ /**
+ * Protobuf type {@code Tango.PMR.Common.RGB}
+ */
+ public static final class RGB extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:Tango.PMR.Common.RGB)
+ RGBOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use RGB.newBuilder() to construct.
+ private RGB(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private RGB() {
+ r_ = 0;
+ g_ = 0;
+ b_ = 0;
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private RGB(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 8: {
+
+ r_ = input.readInt32();
+ break;
+ }
+ case 16: {
+
+ g_ = input.readInt32();
+ break;
+ }
+ case 24: {
+
+ b_ = input.readInt32();
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return Tango.PMR.Common.RGBOuterClass.internal_static_Tango_PMR_Common_RGB_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return Tango.PMR.Common.RGBOuterClass.internal_static_Tango_PMR_Common_RGB_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Tango.PMR.Common.RGBOuterClass.RGB.class, Tango.PMR.Common.RGBOuterClass.RGB.Builder.class);
+ }
+
+ public static final int R_FIELD_NUMBER = 1;
+ private int r_;
+ /**
+ * <code>int32 R = 1;</code>
+ */
+ public int getR() {
+ return r_;
+ }
+
+ public static final int G_FIELD_NUMBER = 2;
+ private int g_;
+ /**
+ * <code>int32 G = 2;</code>
+ */
+ public int getG() {
+ return g_;
+ }
+
+ public static final int B_FIELD_NUMBER = 3;
+ private int b_;
+ /**
+ * <code>int32 B = 3;</code>
+ */
+ public int getB() {
+ return b_;
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (r_ != 0) {
+ output.writeInt32(1, r_);
+ }
+ if (g_ != 0) {
+ output.writeInt32(2, g_);
+ }
+ if (b_ != 0) {
+ output.writeInt32(3, b_);
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (r_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(1, r_);
+ }
+ if (g_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(2, g_);
+ }
+ if (b_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(3, b_);
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof Tango.PMR.Common.RGBOuterClass.RGB)) {
+ return super.equals(obj);
+ }
+ Tango.PMR.Common.RGBOuterClass.RGB other = (Tango.PMR.Common.RGBOuterClass.RGB) obj;
+
+ boolean result = true;
+ result = result && (getR()
+ == other.getR());
+ result = result && (getG()
+ == other.getG());
+ result = result && (getB()
+ == other.getB());
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + R_FIELD_NUMBER;
+ hash = (53 * hash) + getR();
+ hash = (37 * hash) + G_FIELD_NUMBER;
+ hash = (53 * hash) + getG();
+ hash = (37 * hash) + B_FIELD_NUMBER;
+ hash = (53 * hash) + getB();
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Common.RGBOuterClass.RGB parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(Tango.PMR.Common.RGBOuterClass.RGB prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code Tango.PMR.Common.RGB}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:Tango.PMR.Common.RGB)
+ Tango.PMR.Common.RGBOuterClass.RGBOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return Tango.PMR.Common.RGBOuterClass.internal_static_Tango_PMR_Common_RGB_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return Tango.PMR.Common.RGBOuterClass.internal_static_Tango_PMR_Common_RGB_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Tango.PMR.Common.RGBOuterClass.RGB.class, Tango.PMR.Common.RGBOuterClass.RGB.Builder.class);
+ }
+
+ // Construct using Tango.PMR.Common.RGBOuterClass.RGB.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ r_ = 0;
+
+ g_ = 0;
+
+ b_ = 0;
+
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return Tango.PMR.Common.RGBOuterClass.internal_static_Tango_PMR_Common_RGB_descriptor;
+ }
+
+ public Tango.PMR.Common.RGBOuterClass.RGB getDefaultInstanceForType() {
+ return Tango.PMR.Common.RGBOuterClass.RGB.getDefaultInstance();
+ }
+
+ public Tango.PMR.Common.RGBOuterClass.RGB build() {
+ Tango.PMR.Common.RGBOuterClass.RGB result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public Tango.PMR.Common.RGBOuterClass.RGB buildPartial() {
+ Tango.PMR.Common.RGBOuterClass.RGB result = new Tango.PMR.Common.RGBOuterClass.RGB(this);
+ result.r_ = r_;
+ result.g_ = g_;
+ result.b_ = b_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof Tango.PMR.Common.RGBOuterClass.RGB) {
+ return mergeFrom((Tango.PMR.Common.RGBOuterClass.RGB)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(Tango.PMR.Common.RGBOuterClass.RGB other) {
+ if (other == Tango.PMR.Common.RGBOuterClass.RGB.getDefaultInstance()) return this;
+ if (other.getR() != 0) {
+ setR(other.getR());
+ }
+ if (other.getG() != 0) {
+ setG(other.getG());
+ }
+ if (other.getB() != 0) {
+ setB(other.getB());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ Tango.PMR.Common.RGBOuterClass.RGB parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (Tango.PMR.Common.RGBOuterClass.RGB) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private int r_ ;
+ /**
+ * <code>int32 R = 1;</code>
+ */
+ public int getR() {
+ return r_;
+ }
+ /**
+ * <code>int32 R = 1;</code>
+ */
+ public Builder setR(int value) {
+
+ r_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>int32 R = 1;</code>
+ */
+ public Builder clearR() {
+
+ r_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private int g_ ;
+ /**
+ * <code>int32 G = 2;</code>
+ */
+ public int getG() {
+ return g_;
+ }
+ /**
+ * <code>int32 G = 2;</code>
+ */
+ public Builder setG(int value) {
+
+ g_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>int32 G = 2;</code>
+ */
+ public Builder clearG() {
+
+ g_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private int b_ ;
+ /**
+ * <code>int32 B = 3;</code>
+ */
+ public int getB() {
+ return b_;
+ }
+ /**
+ * <code>int32 B = 3;</code>
+ */
+ public Builder setB(int value) {
+
+ b_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>int32 B = 3;</code>
+ */
+ public Builder clearB() {
+
+ b_ = 0;
+ onChanged();
+ return this;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:Tango.PMR.Common.RGB)
+ }
+
+ // @@protoc_insertion_point(class_scope:Tango.PMR.Common.RGB)
+ private static final Tango.PMR.Common.RGBOuterClass.RGB DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new Tango.PMR.Common.RGBOuterClass.RGB();
+ }
+
+ public static Tango.PMR.Common.RGBOuterClass.RGB getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<RGB>
+ PARSER = new com.google.protobuf.AbstractParser<RGB>() {
+ public RGB parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new RGB(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<RGB> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<RGB> getParserForType() {
+ return PARSER;
+ }
+
+ public Tango.PMR.Common.RGBOuterClass.RGB getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_Tango_PMR_Common_RGB_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_Tango_PMR_Common_RGB_fieldAccessorTable;
+
+ public static com.google.protobuf.Descriptors.FileDescriptor
+ getDescriptor() {
+ return descriptor;
+ }
+ private static com.google.protobuf.Descriptors.FileDescriptor
+ descriptor;
+ static {
+ java.lang.String[] descriptorData = {
+ "\n\tRGB.proto\022\020Tango.PMR.Common\"&\n\003RGB\022\t\n\001" +
+ "R\030\001 \001(\005\022\t\n\001G\030\002 \001(\005\022\t\n\001B\030\003 \001(\005b\006proto3"
+ };
+ com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+ new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
+ public com.google.protobuf.ExtensionRegistry assignDescriptors(
+ com.google.protobuf.Descriptors.FileDescriptor root) {
+ descriptor = root;
+ return null;
+ }
+ };
+ com.google.protobuf.Descriptors.FileDescriptor
+ .internalBuildGeneratedFileFrom(descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[] {
+ }, assigner);
+ internal_static_Tango_PMR_Common_RGB_descriptor =
+ getDescriptor().getMessageTypes().get(0);
+ internal_static_Tango_PMR_Common_RGB_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_Tango_PMR_Common_RGB_descriptor,
+ new java.lang.String[] { "R", "G", "B", });
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Jobs/JobOuterClass.java b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Jobs/JobOuterClass.java
new file mode 100644
index 000000000..827ab3f95
--- /dev/null
+++ b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Jobs/JobOuterClass.java
@@ -0,0 +1,952 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: Job.proto
+
+package Tango.PMR.Jobs;
+
+public final class JobOuterClass {
+ private JobOuterClass() {}
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistryLite registry) {
+ }
+
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistry registry) {
+ registerAllExtensions(
+ (com.google.protobuf.ExtensionRegistryLite) registry);
+ }
+ public interface JobOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:Tango.PMR.Jobs.Job)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <code>string Name = 1;</code>
+ */
+ java.lang.String getName();
+ /**
+ * <code>string Name = 1;</code>
+ */
+ com.google.protobuf.ByteString
+ getNameBytes();
+
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ java.util.List<Tango.PMR.Jobs.SegmentOuterClass.Segment>
+ getSegmentsList();
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ Tango.PMR.Jobs.SegmentOuterClass.Segment getSegments(int index);
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ int getSegmentsCount();
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ java.util.List<? extends Tango.PMR.Jobs.SegmentOuterClass.SegmentOrBuilder>
+ getSegmentsOrBuilderList();
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ Tango.PMR.Jobs.SegmentOuterClass.SegmentOrBuilder getSegmentsOrBuilder(
+ int index);
+ }
+ /**
+ * Protobuf type {@code Tango.PMR.Jobs.Job}
+ */
+ public static final class Job extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:Tango.PMR.Jobs.Job)
+ JobOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use Job.newBuilder() to construct.
+ private Job(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private Job() {
+ name_ = "";
+ segments_ = java.util.Collections.emptyList();
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Job(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ java.lang.String s = input.readStringRequireUtf8();
+
+ name_ = s;
+ break;
+ }
+ case 18: {
+ if (!((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+ segments_ = new java.util.ArrayList<Tango.PMR.Jobs.SegmentOuterClass.Segment>();
+ mutable_bitField0_ |= 0x00000002;
+ }
+ segments_.add(
+ input.readMessage(Tango.PMR.Jobs.SegmentOuterClass.Segment.parser(), extensionRegistry));
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ if (((mutable_bitField0_ & 0x00000002) == 0x00000002)) {
+ segments_ = java.util.Collections.unmodifiableList(segments_);
+ }
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return Tango.PMR.Jobs.JobOuterClass.internal_static_Tango_PMR_Jobs_Job_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return Tango.PMR.Jobs.JobOuterClass.internal_static_Tango_PMR_Jobs_Job_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Tango.PMR.Jobs.JobOuterClass.Job.class, Tango.PMR.Jobs.JobOuterClass.Job.Builder.class);
+ }
+
+ private int bitField0_;
+ public static final int NAME_FIELD_NUMBER = 1;
+ private volatile java.lang.Object name_;
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public java.lang.String getName() {
+ java.lang.Object ref = name_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ name_ = s;
+ return s;
+ }
+ }
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getNameBytes() {
+ java.lang.Object ref = name_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ name_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int SEGMENTS_FIELD_NUMBER = 2;
+ private java.util.List<Tango.PMR.Jobs.SegmentOuterClass.Segment> segments_;
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public java.util.List<Tango.PMR.Jobs.SegmentOuterClass.Segment> getSegmentsList() {
+ return segments_;
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public java.util.List<? extends Tango.PMR.Jobs.SegmentOuterClass.SegmentOrBuilder>
+ getSegmentsOrBuilderList() {
+ return segments_;
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public int getSegmentsCount() {
+ return segments_.size();
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Tango.PMR.Jobs.SegmentOuterClass.Segment getSegments(int index) {
+ return segments_.get(index);
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Tango.PMR.Jobs.SegmentOuterClass.SegmentOrBuilder getSegmentsOrBuilder(
+ int index) {
+ return segments_.get(index);
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!getNameBytes().isEmpty()) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
+ }
+ for (int i = 0; i < segments_.size(); i++) {
+ output.writeMessage(2, segments_.get(i));
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!getNameBytes().isEmpty()) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
+ }
+ for (int i = 0; i < segments_.size(); i++) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(2, segments_.get(i));
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof Tango.PMR.Jobs.JobOuterClass.Job)) {
+ return super.equals(obj);
+ }
+ Tango.PMR.Jobs.JobOuterClass.Job other = (Tango.PMR.Jobs.JobOuterClass.Job) obj;
+
+ boolean result = true;
+ result = result && getName()
+ .equals(other.getName());
+ result = result && getSegmentsList()
+ .equals(other.getSegmentsList());
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getName().hashCode();
+ if (getSegmentsCount() > 0) {
+ hash = (37 * hash) + SEGMENTS_FIELD_NUMBER;
+ hash = (53 * hash) + getSegmentsList().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Jobs.JobOuterClass.Job parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(Tango.PMR.Jobs.JobOuterClass.Job prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code Tango.PMR.Jobs.Job}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:Tango.PMR.Jobs.Job)
+ Tango.PMR.Jobs.JobOuterClass.JobOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return Tango.PMR.Jobs.JobOuterClass.internal_static_Tango_PMR_Jobs_Job_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return Tango.PMR.Jobs.JobOuterClass.internal_static_Tango_PMR_Jobs_Job_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Tango.PMR.Jobs.JobOuterClass.Job.class, Tango.PMR.Jobs.JobOuterClass.Job.Builder.class);
+ }
+
+ // Construct using Tango.PMR.Jobs.JobOuterClass.Job.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ getSegmentsFieldBuilder();
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ name_ = "";
+
+ if (segmentsBuilder_ == null) {
+ segments_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000002);
+ } else {
+ segmentsBuilder_.clear();
+ }
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return Tango.PMR.Jobs.JobOuterClass.internal_static_Tango_PMR_Jobs_Job_descriptor;
+ }
+
+ public Tango.PMR.Jobs.JobOuterClass.Job getDefaultInstanceForType() {
+ return Tango.PMR.Jobs.JobOuterClass.Job.getDefaultInstance();
+ }
+
+ public Tango.PMR.Jobs.JobOuterClass.Job build() {
+ Tango.PMR.Jobs.JobOuterClass.Job result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public Tango.PMR.Jobs.JobOuterClass.Job buildPartial() {
+ Tango.PMR.Jobs.JobOuterClass.Job result = new Tango.PMR.Jobs.JobOuterClass.Job(this);
+ int from_bitField0_ = bitField0_;
+ int to_bitField0_ = 0;
+ result.name_ = name_;
+ if (segmentsBuilder_ == null) {
+ if (((bitField0_ & 0x00000002) == 0x00000002)) {
+ segments_ = java.util.Collections.unmodifiableList(segments_);
+ bitField0_ = (bitField0_ & ~0x00000002);
+ }
+ result.segments_ = segments_;
+ } else {
+ result.segments_ = segmentsBuilder_.build();
+ }
+ result.bitField0_ = to_bitField0_;
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof Tango.PMR.Jobs.JobOuterClass.Job) {
+ return mergeFrom((Tango.PMR.Jobs.JobOuterClass.Job)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(Tango.PMR.Jobs.JobOuterClass.Job other) {
+ if (other == Tango.PMR.Jobs.JobOuterClass.Job.getDefaultInstance()) return this;
+ if (!other.getName().isEmpty()) {
+ name_ = other.name_;
+ onChanged();
+ }
+ if (segmentsBuilder_ == null) {
+ if (!other.segments_.isEmpty()) {
+ if (segments_.isEmpty()) {
+ segments_ = other.segments_;
+ bitField0_ = (bitField0_ & ~0x00000002);
+ } else {
+ ensureSegmentsIsMutable();
+ segments_.addAll(other.segments_);
+ }
+ onChanged();
+ }
+ } else {
+ if (!other.segments_.isEmpty()) {
+ if (segmentsBuilder_.isEmpty()) {
+ segmentsBuilder_.dispose();
+ segmentsBuilder_ = null;
+ segments_ = other.segments_;
+ bitField0_ = (bitField0_ & ~0x00000002);
+ segmentsBuilder_ =
+ com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders ?
+ getSegmentsFieldBuilder() : null;
+ } else {
+ segmentsBuilder_.addAllMessages(other.segments_);
+ }
+ }
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ Tango.PMR.Jobs.JobOuterClass.Job parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (Tango.PMR.Jobs.JobOuterClass.Job) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+ private int bitField0_;
+
+ private java.lang.Object name_ = "";
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public java.lang.String getName() {
+ java.lang.Object ref = name_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ name_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getNameBytes() {
+ java.lang.Object ref = name_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ name_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public Builder setName(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ name_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public Builder clearName() {
+
+ name_ = getDefaultInstance().getName();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public Builder setNameBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ name_ = value;
+ onChanged();
+ return this;
+ }
+
+ private java.util.List<Tango.PMR.Jobs.SegmentOuterClass.Segment> segments_ =
+ java.util.Collections.emptyList();
+ private void ensureSegmentsIsMutable() {
+ if (!((bitField0_ & 0x00000002) == 0x00000002)) {
+ segments_ = new java.util.ArrayList<Tango.PMR.Jobs.SegmentOuterClass.Segment>(segments_);
+ bitField0_ |= 0x00000002;
+ }
+ }
+
+ private com.google.protobuf.RepeatedFieldBuilderV3<
+ Tango.PMR.Jobs.SegmentOuterClass.Segment, Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder, Tango.PMR.Jobs.SegmentOuterClass.SegmentOrBuilder> segmentsBuilder_;
+
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public java.util.List<Tango.PMR.Jobs.SegmentOuterClass.Segment> getSegmentsList() {
+ if (segmentsBuilder_ == null) {
+ return java.util.Collections.unmodifiableList(segments_);
+ } else {
+ return segmentsBuilder_.getMessageList();
+ }
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public int getSegmentsCount() {
+ if (segmentsBuilder_ == null) {
+ return segments_.size();
+ } else {
+ return segmentsBuilder_.getCount();
+ }
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Tango.PMR.Jobs.SegmentOuterClass.Segment getSegments(int index) {
+ if (segmentsBuilder_ == null) {
+ return segments_.get(index);
+ } else {
+ return segmentsBuilder_.getMessage(index);
+ }
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Builder setSegments(
+ int index, Tango.PMR.Jobs.SegmentOuterClass.Segment value) {
+ if (segmentsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureSegmentsIsMutable();
+ segments_.set(index, value);
+ onChanged();
+ } else {
+ segmentsBuilder_.setMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Builder setSegments(
+ int index, Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder builderForValue) {
+ if (segmentsBuilder_ == null) {
+ ensureSegmentsIsMutable();
+ segments_.set(index, builderForValue.build());
+ onChanged();
+ } else {
+ segmentsBuilder_.setMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Builder addSegments(Tango.PMR.Jobs.SegmentOuterClass.Segment value) {
+ if (segmentsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureSegmentsIsMutable();
+ segments_.add(value);
+ onChanged();
+ } else {
+ segmentsBuilder_.addMessage(value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Builder addSegments(
+ int index, Tango.PMR.Jobs.SegmentOuterClass.Segment value) {
+ if (segmentsBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ ensureSegmentsIsMutable();
+ segments_.add(index, value);
+ onChanged();
+ } else {
+ segmentsBuilder_.addMessage(index, value);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Builder addSegments(
+ Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder builderForValue) {
+ if (segmentsBuilder_ == null) {
+ ensureSegmentsIsMutable();
+ segments_.add(builderForValue.build());
+ onChanged();
+ } else {
+ segmentsBuilder_.addMessage(builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Builder addSegments(
+ int index, Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder builderForValue) {
+ if (segmentsBuilder_ == null) {
+ ensureSegmentsIsMutable();
+ segments_.add(index, builderForValue.build());
+ onChanged();
+ } else {
+ segmentsBuilder_.addMessage(index, builderForValue.build());
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Builder addAllSegments(
+ java.lang.Iterable<? extends Tango.PMR.Jobs.SegmentOuterClass.Segment> values) {
+ if (segmentsBuilder_ == null) {
+ ensureSegmentsIsMutable();
+ com.google.protobuf.AbstractMessageLite.Builder.addAll(
+ values, segments_);
+ onChanged();
+ } else {
+ segmentsBuilder_.addAllMessages(values);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Builder clearSegments() {
+ if (segmentsBuilder_ == null) {
+ segments_ = java.util.Collections.emptyList();
+ bitField0_ = (bitField0_ & ~0x00000002);
+ onChanged();
+ } else {
+ segmentsBuilder_.clear();
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Builder removeSegments(int index) {
+ if (segmentsBuilder_ == null) {
+ ensureSegmentsIsMutable();
+ segments_.remove(index);
+ onChanged();
+ } else {
+ segmentsBuilder_.remove(index);
+ }
+ return this;
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder getSegmentsBuilder(
+ int index) {
+ return getSegmentsFieldBuilder().getBuilder(index);
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Tango.PMR.Jobs.SegmentOuterClass.SegmentOrBuilder getSegmentsOrBuilder(
+ int index) {
+ if (segmentsBuilder_ == null) {
+ return segments_.get(index); } else {
+ return segmentsBuilder_.getMessageOrBuilder(index);
+ }
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public java.util.List<? extends Tango.PMR.Jobs.SegmentOuterClass.SegmentOrBuilder>
+ getSegmentsOrBuilderList() {
+ if (segmentsBuilder_ != null) {
+ return segmentsBuilder_.getMessageOrBuilderList();
+ } else {
+ return java.util.Collections.unmodifiableList(segments_);
+ }
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder addSegmentsBuilder() {
+ return getSegmentsFieldBuilder().addBuilder(
+ Tango.PMR.Jobs.SegmentOuterClass.Segment.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder addSegmentsBuilder(
+ int index) {
+ return getSegmentsFieldBuilder().addBuilder(
+ index, Tango.PMR.Jobs.SegmentOuterClass.Segment.getDefaultInstance());
+ }
+ /**
+ * <code>repeated .Tango.PMR.Jobs.Segment Segments = 2;</code>
+ */
+ public java.util.List<Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder>
+ getSegmentsBuilderList() {
+ return getSegmentsFieldBuilder().getBuilderList();
+ }
+ private com.google.protobuf.RepeatedFieldBuilderV3<
+ Tango.PMR.Jobs.SegmentOuterClass.Segment, Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder, Tango.PMR.Jobs.SegmentOuterClass.SegmentOrBuilder>
+ getSegmentsFieldBuilder() {
+ if (segmentsBuilder_ == null) {
+ segmentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3<
+ Tango.PMR.Jobs.SegmentOuterClass.Segment, Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder, Tango.PMR.Jobs.SegmentOuterClass.SegmentOrBuilder>(
+ segments_,
+ ((bitField0_ & 0x00000002) == 0x00000002),
+ getParentForChildren(),
+ isClean());
+ segments_ = null;
+ }
+ return segmentsBuilder_;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:Tango.PMR.Jobs.Job)
+ }
+
+ // @@protoc_insertion_point(class_scope:Tango.PMR.Jobs.Job)
+ private static final Tango.PMR.Jobs.JobOuterClass.Job DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new Tango.PMR.Jobs.JobOuterClass.Job();
+ }
+
+ public static Tango.PMR.Jobs.JobOuterClass.Job getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<Job>
+ PARSER = new com.google.protobuf.AbstractParser<Job>() {
+ public Job parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Job(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<Job> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<Job> getParserForType() {
+ return PARSER;
+ }
+
+ public Tango.PMR.Jobs.JobOuterClass.Job getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_Tango_PMR_Jobs_Job_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_Tango_PMR_Jobs_Job_fieldAccessorTable;
+
+ public static com.google.protobuf.Descriptors.FileDescriptor
+ getDescriptor() {
+ return descriptor;
+ }
+ private static com.google.protobuf.Descriptors.FileDescriptor
+ descriptor;
+ static {
+ java.lang.String[] descriptorData = {
+ "\n\tJob.proto\022\016Tango.PMR.Jobs\032\rSegment.pro" +
+ "to\">\n\003Job\022\014\n\004Name\030\001 \001(\t\022)\n\010Segments\030\002 \003(" +
+ "\0132\027.Tango.PMR.Jobs.Segmentb\006proto3"
+ };
+ com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+ new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
+ public com.google.protobuf.ExtensionRegistry assignDescriptors(
+ com.google.protobuf.Descriptors.FileDescriptor root) {
+ descriptor = root;
+ return null;
+ }
+ };
+ com.google.protobuf.Descriptors.FileDescriptor
+ .internalBuildGeneratedFileFrom(descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[] {
+ Tango.PMR.Jobs.SegmentOuterClass.getDescriptor(),
+ }, assigner);
+ internal_static_Tango_PMR_Jobs_Job_descriptor =
+ getDescriptor().getMessageTypes().get(0);
+ internal_static_Tango_PMR_Jobs_Job_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_Tango_PMR_Jobs_Job_descriptor,
+ new java.lang.String[] { "Name", "Segments", });
+ Tango.PMR.Jobs.SegmentOuterClass.getDescriptor();
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Jobs/SegmentOuterClass.java b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Jobs/SegmentOuterClass.java
new file mode 100644
index 000000000..bca42e8b0
--- /dev/null
+++ b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/Jobs/SegmentOuterClass.java
@@ -0,0 +1,838 @@
+// Generated by the protocol buffer compiler. DO NOT EDIT!
+// source: Segment.proto
+
+package Tango.PMR.Jobs;
+
+public final class SegmentOuterClass {
+ private SegmentOuterClass() {}
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistryLite registry) {
+ }
+
+ public static void registerAllExtensions(
+ com.google.protobuf.ExtensionRegistry registry) {
+ registerAllExtensions(
+ (com.google.protobuf.ExtensionRegistryLite) registry);
+ }
+ public interface SegmentOrBuilder extends
+ // @@protoc_insertion_point(interface_extends:Tango.PMR.Jobs.Segment)
+ com.google.protobuf.MessageOrBuilder {
+
+ /**
+ * <code>string Name = 1;</code>
+ */
+ java.lang.String getName();
+ /**
+ * <code>string Name = 1;</code>
+ */
+ com.google.protobuf.ByteString
+ getNameBytes();
+
+ /**
+ * <code>int32 Length = 2;</code>
+ */
+ int getLength();
+
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ boolean hasColor();
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ Tango.PMR.Common.RGBOuterClass.RGB getColor();
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ Tango.PMR.Common.RGBOuterClass.RGBOrBuilder getColorOrBuilder();
+ }
+ /**
+ * Protobuf type {@code Tango.PMR.Jobs.Segment}
+ */
+ public static final class Segment extends
+ com.google.protobuf.GeneratedMessageV3 implements
+ // @@protoc_insertion_point(message_implements:Tango.PMR.Jobs.Segment)
+ SegmentOrBuilder {
+ private static final long serialVersionUID = 0L;
+ // Use Segment.newBuilder() to construct.
+ private Segment(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+ super(builder);
+ }
+ private Segment() {
+ name_ = "";
+ length_ = 0;
+ }
+
+ @java.lang.Override
+ public final com.google.protobuf.UnknownFieldSet
+ getUnknownFields() {
+ return this.unknownFields;
+ }
+ private Segment(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ this();
+ int mutable_bitField0_ = 0;
+ com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+ com.google.protobuf.UnknownFieldSet.newBuilder();
+ try {
+ boolean done = false;
+ while (!done) {
+ int tag = input.readTag();
+ switch (tag) {
+ case 0:
+ done = true;
+ break;
+ default: {
+ if (!parseUnknownFieldProto3(
+ input, unknownFields, extensionRegistry, tag)) {
+ done = true;
+ }
+ break;
+ }
+ case 10: {
+ java.lang.String s = input.readStringRequireUtf8();
+
+ name_ = s;
+ break;
+ }
+ case 16: {
+
+ length_ = input.readInt32();
+ break;
+ }
+ case 26: {
+ Tango.PMR.Common.RGBOuterClass.RGB.Builder subBuilder = null;
+ if (color_ != null) {
+ subBuilder = color_.toBuilder();
+ }
+ color_ = input.readMessage(Tango.PMR.Common.RGBOuterClass.RGB.parser(), extensionRegistry);
+ if (subBuilder != null) {
+ subBuilder.mergeFrom(color_);
+ color_ = subBuilder.buildPartial();
+ }
+
+ break;
+ }
+ }
+ }
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw e.setUnfinishedMessage(this);
+ } catch (java.io.IOException e) {
+ throw new com.google.protobuf.InvalidProtocolBufferException(
+ e).setUnfinishedMessage(this);
+ } finally {
+ this.unknownFields = unknownFields.build();
+ makeExtensionsImmutable();
+ }
+ }
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return Tango.PMR.Jobs.SegmentOuterClass.internal_static_Tango_PMR_Jobs_Segment_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return Tango.PMR.Jobs.SegmentOuterClass.internal_static_Tango_PMR_Jobs_Segment_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Tango.PMR.Jobs.SegmentOuterClass.Segment.class, Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder.class);
+ }
+
+ public static final int NAME_FIELD_NUMBER = 1;
+ private volatile java.lang.Object name_;
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public java.lang.String getName() {
+ java.lang.Object ref = name_;
+ if (ref instanceof java.lang.String) {
+ return (java.lang.String) ref;
+ } else {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ name_ = s;
+ return s;
+ }
+ }
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getNameBytes() {
+ java.lang.Object ref = name_;
+ if (ref instanceof java.lang.String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ name_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+
+ public static final int LENGTH_FIELD_NUMBER = 2;
+ private int length_;
+ /**
+ * <code>int32 Length = 2;</code>
+ */
+ public int getLength() {
+ return length_;
+ }
+
+ public static final int COLOR_FIELD_NUMBER = 3;
+ private Tango.PMR.Common.RGBOuterClass.RGB color_;
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ public boolean hasColor() {
+ return color_ != null;
+ }
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ public Tango.PMR.Common.RGBOuterClass.RGB getColor() {
+ return color_ == null ? Tango.PMR.Common.RGBOuterClass.RGB.getDefaultInstance() : color_;
+ }
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ public Tango.PMR.Common.RGBOuterClass.RGBOrBuilder getColorOrBuilder() {
+ return getColor();
+ }
+
+ private byte memoizedIsInitialized = -1;
+ public final boolean isInitialized() {
+ byte isInitialized = memoizedIsInitialized;
+ if (isInitialized == 1) return true;
+ if (isInitialized == 0) return false;
+
+ memoizedIsInitialized = 1;
+ return true;
+ }
+
+ public void writeTo(com.google.protobuf.CodedOutputStream output)
+ throws java.io.IOException {
+ if (!getNameBytes().isEmpty()) {
+ com.google.protobuf.GeneratedMessageV3.writeString(output, 1, name_);
+ }
+ if (length_ != 0) {
+ output.writeInt32(2, length_);
+ }
+ if (color_ != null) {
+ output.writeMessage(3, getColor());
+ }
+ unknownFields.writeTo(output);
+ }
+
+ public int getSerializedSize() {
+ int size = memoizedSize;
+ if (size != -1) return size;
+
+ size = 0;
+ if (!getNameBytes().isEmpty()) {
+ size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, name_);
+ }
+ if (length_ != 0) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeInt32Size(2, length_);
+ }
+ if (color_ != null) {
+ size += com.google.protobuf.CodedOutputStream
+ .computeMessageSize(3, getColor());
+ }
+ size += unknownFields.getSerializedSize();
+ memoizedSize = size;
+ return size;
+ }
+
+ @java.lang.Override
+ public boolean equals(final java.lang.Object obj) {
+ if (obj == this) {
+ return true;
+ }
+ if (!(obj instanceof Tango.PMR.Jobs.SegmentOuterClass.Segment)) {
+ return super.equals(obj);
+ }
+ Tango.PMR.Jobs.SegmentOuterClass.Segment other = (Tango.PMR.Jobs.SegmentOuterClass.Segment) obj;
+
+ boolean result = true;
+ result = result && getName()
+ .equals(other.getName());
+ result = result && (getLength()
+ == other.getLength());
+ result = result && (hasColor() == other.hasColor());
+ if (hasColor()) {
+ result = result && getColor()
+ .equals(other.getColor());
+ }
+ result = result && unknownFields.equals(other.unknownFields);
+ return result;
+ }
+
+ @java.lang.Override
+ public int hashCode() {
+ if (memoizedHashCode != 0) {
+ return memoizedHashCode;
+ }
+ int hash = 41;
+ hash = (19 * hash) + getDescriptor().hashCode();
+ hash = (37 * hash) + NAME_FIELD_NUMBER;
+ hash = (53 * hash) + getName().hashCode();
+ hash = (37 * hash) + LENGTH_FIELD_NUMBER;
+ hash = (53 * hash) + getLength();
+ if (hasColor()) {
+ hash = (37 * hash) + COLOR_FIELD_NUMBER;
+ hash = (53 * hash) + getColor().hashCode();
+ }
+ hash = (29 * hash) + unknownFields.hashCode();
+ memoizedHashCode = hash;
+ return hash;
+ }
+
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseFrom(
+ java.nio.ByteBuffer data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseFrom(
+ java.nio.ByteBuffer data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseFrom(
+ com.google.protobuf.ByteString data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseFrom(
+ com.google.protobuf.ByteString data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseFrom(byte[] data)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data);
+ }
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseFrom(
+ byte[] data,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return PARSER.parseFrom(data, extensionRegistry);
+ }
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseDelimitedFrom(java.io.InputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseDelimitedFrom(
+ java.io.InputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseDelimitedWithIOException(PARSER, input, extensionRegistry);
+ }
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseFrom(
+ com.google.protobuf.CodedInputStream input)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input);
+ }
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment parseFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ return com.google.protobuf.GeneratedMessageV3
+ .parseWithIOException(PARSER, input, extensionRegistry);
+ }
+
+ public Builder newBuilderForType() { return newBuilder(); }
+ public static Builder newBuilder() {
+ return DEFAULT_INSTANCE.toBuilder();
+ }
+ public static Builder newBuilder(Tango.PMR.Jobs.SegmentOuterClass.Segment prototype) {
+ return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+ }
+ public Builder toBuilder() {
+ return this == DEFAULT_INSTANCE
+ ? new Builder() : new Builder().mergeFrom(this);
+ }
+
+ @java.lang.Override
+ protected Builder newBuilderForType(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ Builder builder = new Builder(parent);
+ return builder;
+ }
+ /**
+ * Protobuf type {@code Tango.PMR.Jobs.Segment}
+ */
+ public static final class Builder extends
+ com.google.protobuf.GeneratedMessageV3.Builder<Builder> implements
+ // @@protoc_insertion_point(builder_implements:Tango.PMR.Jobs.Segment)
+ Tango.PMR.Jobs.SegmentOuterClass.SegmentOrBuilder {
+ public static final com.google.protobuf.Descriptors.Descriptor
+ getDescriptor() {
+ return Tango.PMR.Jobs.SegmentOuterClass.internal_static_Tango_PMR_Jobs_Segment_descriptor;
+ }
+
+ protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internalGetFieldAccessorTable() {
+ return Tango.PMR.Jobs.SegmentOuterClass.internal_static_Tango_PMR_Jobs_Segment_fieldAccessorTable
+ .ensureFieldAccessorsInitialized(
+ Tango.PMR.Jobs.SegmentOuterClass.Segment.class, Tango.PMR.Jobs.SegmentOuterClass.Segment.Builder.class);
+ }
+
+ // Construct using Tango.PMR.Jobs.SegmentOuterClass.Segment.newBuilder()
+ private Builder() {
+ maybeForceBuilderInitialization();
+ }
+
+ private Builder(
+ com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+ super(parent);
+ maybeForceBuilderInitialization();
+ }
+ private void maybeForceBuilderInitialization() {
+ if (com.google.protobuf.GeneratedMessageV3
+ .alwaysUseFieldBuilders) {
+ }
+ }
+ public Builder clear() {
+ super.clear();
+ name_ = "";
+
+ length_ = 0;
+
+ if (colorBuilder_ == null) {
+ color_ = null;
+ } else {
+ color_ = null;
+ colorBuilder_ = null;
+ }
+ return this;
+ }
+
+ public com.google.protobuf.Descriptors.Descriptor
+ getDescriptorForType() {
+ return Tango.PMR.Jobs.SegmentOuterClass.internal_static_Tango_PMR_Jobs_Segment_descriptor;
+ }
+
+ public Tango.PMR.Jobs.SegmentOuterClass.Segment getDefaultInstanceForType() {
+ return Tango.PMR.Jobs.SegmentOuterClass.Segment.getDefaultInstance();
+ }
+
+ public Tango.PMR.Jobs.SegmentOuterClass.Segment build() {
+ Tango.PMR.Jobs.SegmentOuterClass.Segment result = buildPartial();
+ if (!result.isInitialized()) {
+ throw newUninitializedMessageException(result);
+ }
+ return result;
+ }
+
+ public Tango.PMR.Jobs.SegmentOuterClass.Segment buildPartial() {
+ Tango.PMR.Jobs.SegmentOuterClass.Segment result = new Tango.PMR.Jobs.SegmentOuterClass.Segment(this);
+ result.name_ = name_;
+ result.length_ = length_;
+ if (colorBuilder_ == null) {
+ result.color_ = color_;
+ } else {
+ result.color_ = colorBuilder_.build();
+ }
+ onBuilt();
+ return result;
+ }
+
+ public Builder clone() {
+ return (Builder) super.clone();
+ }
+ public Builder setField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.setField(field, value);
+ }
+ public Builder clearField(
+ com.google.protobuf.Descriptors.FieldDescriptor field) {
+ return (Builder) super.clearField(field);
+ }
+ public Builder clearOneof(
+ com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+ return (Builder) super.clearOneof(oneof);
+ }
+ public Builder setRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ int index, java.lang.Object value) {
+ return (Builder) super.setRepeatedField(field, index, value);
+ }
+ public Builder addRepeatedField(
+ com.google.protobuf.Descriptors.FieldDescriptor field,
+ java.lang.Object value) {
+ return (Builder) super.addRepeatedField(field, value);
+ }
+ public Builder mergeFrom(com.google.protobuf.Message other) {
+ if (other instanceof Tango.PMR.Jobs.SegmentOuterClass.Segment) {
+ return mergeFrom((Tango.PMR.Jobs.SegmentOuterClass.Segment)other);
+ } else {
+ super.mergeFrom(other);
+ return this;
+ }
+ }
+
+ public Builder mergeFrom(Tango.PMR.Jobs.SegmentOuterClass.Segment other) {
+ if (other == Tango.PMR.Jobs.SegmentOuterClass.Segment.getDefaultInstance()) return this;
+ if (!other.getName().isEmpty()) {
+ name_ = other.name_;
+ onChanged();
+ }
+ if (other.getLength() != 0) {
+ setLength(other.getLength());
+ }
+ if (other.hasColor()) {
+ mergeColor(other.getColor());
+ }
+ this.mergeUnknownFields(other.unknownFields);
+ onChanged();
+ return this;
+ }
+
+ public final boolean isInitialized() {
+ return true;
+ }
+
+ public Builder mergeFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws java.io.IOException {
+ Tango.PMR.Jobs.SegmentOuterClass.Segment parsedMessage = null;
+ try {
+ parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ parsedMessage = (Tango.PMR.Jobs.SegmentOuterClass.Segment) e.getUnfinishedMessage();
+ throw e.unwrapIOException();
+ } finally {
+ if (parsedMessage != null) {
+ mergeFrom(parsedMessage);
+ }
+ }
+ return this;
+ }
+
+ private java.lang.Object name_ = "";
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public java.lang.String getName() {
+ java.lang.Object ref = name_;
+ if (!(ref instanceof java.lang.String)) {
+ com.google.protobuf.ByteString bs =
+ (com.google.protobuf.ByteString) ref;
+ java.lang.String s = bs.toStringUtf8();
+ name_ = s;
+ return s;
+ } else {
+ return (java.lang.String) ref;
+ }
+ }
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public com.google.protobuf.ByteString
+ getNameBytes() {
+ java.lang.Object ref = name_;
+ if (ref instanceof String) {
+ com.google.protobuf.ByteString b =
+ com.google.protobuf.ByteString.copyFromUtf8(
+ (java.lang.String) ref);
+ name_ = b;
+ return b;
+ } else {
+ return (com.google.protobuf.ByteString) ref;
+ }
+ }
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public Builder setName(
+ java.lang.String value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+
+ name_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public Builder clearName() {
+
+ name_ = getDefaultInstance().getName();
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>string Name = 1;</code>
+ */
+ public Builder setNameBytes(
+ com.google.protobuf.ByteString value) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ checkByteStringIsUtf8(value);
+
+ name_ = value;
+ onChanged();
+ return this;
+ }
+
+ private int length_ ;
+ /**
+ * <code>int32 Length = 2;</code>
+ */
+ public int getLength() {
+ return length_;
+ }
+ /**
+ * <code>int32 Length = 2;</code>
+ */
+ public Builder setLength(int value) {
+
+ length_ = value;
+ onChanged();
+ return this;
+ }
+ /**
+ * <code>int32 Length = 2;</code>
+ */
+ public Builder clearLength() {
+
+ length_ = 0;
+ onChanged();
+ return this;
+ }
+
+ private Tango.PMR.Common.RGBOuterClass.RGB color_ = null;
+ private com.google.protobuf.SingleFieldBuilderV3<
+ Tango.PMR.Common.RGBOuterClass.RGB, Tango.PMR.Common.RGBOuterClass.RGB.Builder, Tango.PMR.Common.RGBOuterClass.RGBOrBuilder> colorBuilder_;
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ public boolean hasColor() {
+ return colorBuilder_ != null || color_ != null;
+ }
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ public Tango.PMR.Common.RGBOuterClass.RGB getColor() {
+ if (colorBuilder_ == null) {
+ return color_ == null ? Tango.PMR.Common.RGBOuterClass.RGB.getDefaultInstance() : color_;
+ } else {
+ return colorBuilder_.getMessage();
+ }
+ }
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ public Builder setColor(Tango.PMR.Common.RGBOuterClass.RGB value) {
+ if (colorBuilder_ == null) {
+ if (value == null) {
+ throw new NullPointerException();
+ }
+ color_ = value;
+ onChanged();
+ } else {
+ colorBuilder_.setMessage(value);
+ }
+
+ return this;
+ }
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ public Builder setColor(
+ Tango.PMR.Common.RGBOuterClass.RGB.Builder builderForValue) {
+ if (colorBuilder_ == null) {
+ color_ = builderForValue.build();
+ onChanged();
+ } else {
+ colorBuilder_.setMessage(builderForValue.build());
+ }
+
+ return this;
+ }
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ public Builder mergeColor(Tango.PMR.Common.RGBOuterClass.RGB value) {
+ if (colorBuilder_ == null) {
+ if (color_ != null) {
+ color_ =
+ Tango.PMR.Common.RGBOuterClass.RGB.newBuilder(color_).mergeFrom(value).buildPartial();
+ } else {
+ color_ = value;
+ }
+ onChanged();
+ } else {
+ colorBuilder_.mergeFrom(value);
+ }
+
+ return this;
+ }
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ public Builder clearColor() {
+ if (colorBuilder_ == null) {
+ color_ = null;
+ onChanged();
+ } else {
+ color_ = null;
+ colorBuilder_ = null;
+ }
+
+ return this;
+ }
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ public Tango.PMR.Common.RGBOuterClass.RGB.Builder getColorBuilder() {
+
+ onChanged();
+ return getColorFieldBuilder().getBuilder();
+ }
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ public Tango.PMR.Common.RGBOuterClass.RGBOrBuilder getColorOrBuilder() {
+ if (colorBuilder_ != null) {
+ return colorBuilder_.getMessageOrBuilder();
+ } else {
+ return color_ == null ?
+ Tango.PMR.Common.RGBOuterClass.RGB.getDefaultInstance() : color_;
+ }
+ }
+ /**
+ * <code>.Tango.PMR.Common.RGB Color = 3;</code>
+ */
+ private com.google.protobuf.SingleFieldBuilderV3<
+ Tango.PMR.Common.RGBOuterClass.RGB, Tango.PMR.Common.RGBOuterClass.RGB.Builder, Tango.PMR.Common.RGBOuterClass.RGBOrBuilder>
+ getColorFieldBuilder() {
+ if (colorBuilder_ == null) {
+ colorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3<
+ Tango.PMR.Common.RGBOuterClass.RGB, Tango.PMR.Common.RGBOuterClass.RGB.Builder, Tango.PMR.Common.RGBOuterClass.RGBOrBuilder>(
+ getColor(),
+ getParentForChildren(),
+ isClean());
+ color_ = null;
+ }
+ return colorBuilder_;
+ }
+ public final Builder setUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.setUnknownFieldsProto3(unknownFields);
+ }
+
+ public final Builder mergeUnknownFields(
+ final com.google.protobuf.UnknownFieldSet unknownFields) {
+ return super.mergeUnknownFields(unknownFields);
+ }
+
+
+ // @@protoc_insertion_point(builder_scope:Tango.PMR.Jobs.Segment)
+ }
+
+ // @@protoc_insertion_point(class_scope:Tango.PMR.Jobs.Segment)
+ private static final Tango.PMR.Jobs.SegmentOuterClass.Segment DEFAULT_INSTANCE;
+ static {
+ DEFAULT_INSTANCE = new Tango.PMR.Jobs.SegmentOuterClass.Segment();
+ }
+
+ public static Tango.PMR.Jobs.SegmentOuterClass.Segment getDefaultInstance() {
+ return DEFAULT_INSTANCE;
+ }
+
+ private static final com.google.protobuf.Parser<Segment>
+ PARSER = new com.google.protobuf.AbstractParser<Segment>() {
+ public Segment parsePartialFrom(
+ com.google.protobuf.CodedInputStream input,
+ com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+ throws com.google.protobuf.InvalidProtocolBufferException {
+ return new Segment(input, extensionRegistry);
+ }
+ };
+
+ public static com.google.protobuf.Parser<Segment> parser() {
+ return PARSER;
+ }
+
+ @java.lang.Override
+ public com.google.protobuf.Parser<Segment> getParserForType() {
+ return PARSER;
+ }
+
+ public Tango.PMR.Jobs.SegmentOuterClass.Segment getDefaultInstanceForType() {
+ return DEFAULT_INSTANCE;
+ }
+
+ }
+
+ private static final com.google.protobuf.Descriptors.Descriptor
+ internal_static_Tango_PMR_Jobs_Segment_descriptor;
+ private static final
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+ internal_static_Tango_PMR_Jobs_Segment_fieldAccessorTable;
+
+ public static com.google.protobuf.Descriptors.FileDescriptor
+ getDescriptor() {
+ return descriptor;
+ }
+ private static com.google.protobuf.Descriptors.FileDescriptor
+ descriptor;
+ static {
+ java.lang.String[] descriptorData = {
+ "\n\rSegment.proto\022\016Tango.PMR.Jobs\032\tRGB.pro" +
+ "to\"M\n\007Segment\022\014\n\004Name\030\001 \001(\t\022\016\n\006Length\030\002 " +
+ "\001(\005\022$\n\005Color\030\003 \001(\0132\025.Tango.PMR.Common.RG" +
+ "Bb\006proto3"
+ };
+ com.google.protobuf.Descriptors.FileDescriptor.InternalDescriptorAssigner assigner =
+ new com.google.protobuf.Descriptors.FileDescriptor. InternalDescriptorAssigner() {
+ public com.google.protobuf.ExtensionRegistry assignDescriptors(
+ com.google.protobuf.Descriptors.FileDescriptor root) {
+ descriptor = root;
+ return null;
+ }
+ };
+ com.google.protobuf.Descriptors.FileDescriptor
+ .internalBuildGeneratedFileFrom(descriptorData,
+ new com.google.protobuf.Descriptors.FileDescriptor[] {
+ Tango.PMR.Common.RGBOuterClass.getDescriptor(),
+ }, assigner);
+ internal_static_Tango_PMR_Jobs_Segment_descriptor =
+ getDescriptor().getMessageTypes().get(0);
+ internal_static_Tango_PMR_Jobs_Segment_fieldAccessorTable = new
+ com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+ internal_static_Tango_PMR_Jobs_Segment_descriptor,
+ new java.lang.String[] { "Name", "Length", "Color", });
+ Tango.PMR.Common.RGBOuterClass.getDescriptor();
+ }
+
+ // @@protoc_insertion_point(outer_class_scope)
+}
diff --git a/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/dummyClass.java b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/dummyClass.java
new file mode 100644
index 000000000..f1cfd7e74
--- /dev/null
+++ b/Software/Android-Studio/Tango.PMR/src/main/java/Tango/PMR/dummyClass.java
@@ -0,0 +1,5 @@
+package Tango.PMR;
+
+public class dummyClass {
+
+}
diff --git a/Software/Android-Studio/app/.gitignore b/Software/Android-Studio/app/.gitignore
new file mode 100644
index 000000000..796b96d1c
--- /dev/null
+++ b/Software/Android-Studio/app/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/Software/Android-Studio/app/CMakeLists.txt b/Software/Android-Studio/app/CMakeLists.txt
new file mode 100644
index 000000000..f8e6e8b3d
--- /dev/null
+++ b/Software/Android-Studio/app/CMakeLists.txt
@@ -0,0 +1,44 @@
+# For more information about using CMake with Android Studio, read the
+# documentation: https://d.android.com/studio/projects/add-native-code.html
+
+# Sets the minimum version of CMake required to build the native library.
+
+cmake_minimum_required(VERSION 3.4.1)
+
+# Creates and names a library, sets it as either STATIC
+# or SHARED, and provides the relative paths to its source code.
+# You can define multiple libraries, and CMake builds them for you.
+# Gradle automatically packages shared libraries with your APK.
+
+add_library( # Sets the name of the library.
+ native-lib
+
+ # Sets the library as a shared library.
+ SHARED
+
+ # Provides a relative path to your source file(s).
+ src/main/cpp/native-lib.cpp )
+
+# Searches for a specified prebuilt library and stores the path as a
+# variable. Because CMake includes system libraries in the search path by
+# default, you only need to specify the name of the public NDK library
+# you want to add. CMake verifies that the library exists before
+# completing its build.
+
+find_library( # Sets the name of the path variable.
+ log-lib
+
+ # Specifies the name of the NDK library that
+ # you want CMake to locate.
+ log )
+
+# Specifies libraries CMake should link to your target library. You
+# can link multiple libraries, such as libraries you define in this
+# build script, prebuilt third-party libraries, or system libraries.
+
+target_link_libraries( # Specifies the target library.
+ native-lib
+
+ # Links the target library to the log library
+ # included in the NDK.
+ ${log-lib} ) \ No newline at end of file
diff --git a/Software/Android-Studio/app/build.gradle b/Software/Android-Studio/app/build.gradle
new file mode 100644
index 000000000..ccd536141
--- /dev/null
+++ b/Software/Android-Studio/app/build.gradle
@@ -0,0 +1,41 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 26
+ buildToolsVersion "26.0.1"
+ defaultConfig {
+ applicationId "com.twine.tango"
+ minSdkVersion 22
+ targetSdkVersion 26
+ versionCode 1
+ versionName "1.0"
+ testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
+ externalNativeBuild {
+ cmake {
+ cppFlags "-std=c++11 -frtti -fexceptions"
+ }
+ }
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ }
+ }
+ externalNativeBuild {
+ cmake {
+ path "CMakeLists.txt"
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(include: ['*.jar'], dir: 'libs')
+ implementation 'com.android.support:appcompat-v7:26.1.0'
+ implementation 'com.android.support.constraint:constraint-layout:1.0.2'
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'com.android.support.test:runner:1.0.1'
+ androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
+ compile 'com.google.protobuf:protobuf-java:3.4.0'
+ implementation project(':Tango.PMR')
+}
diff --git a/Software/Android-Studio/app/proguard-rules.pro b/Software/Android-Studio/app/proguard-rules.pro
new file mode 100644
index 000000000..a0eef131a
--- /dev/null
+++ b/Software/Android-Studio/app/proguard-rules.pro
@@ -0,0 +1,25 @@
+# Add project specific ProGuard rules here.
+# By default, the flags in this file are appended to flags specified
+# in C:\Users\Roy\AppData\Local\Android\Sdk/tools/proguard/proguard-android.txt
+# You can edit the include path and order by changing the proguardFiles
+# directive in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# Add any project specific keep options here:
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/Software/Android-Studio/app/src/androidTest/java/com/twine/tango/ExampleInstrumentedTest.java b/Software/Android-Studio/app/src/androidTest/java/com/twine/tango/ExampleInstrumentedTest.java
new file mode 100644
index 000000000..bed558a6e
--- /dev/null
+++ b/Software/Android-Studio/app/src/androidTest/java/com/twine/tango/ExampleInstrumentedTest.java
@@ -0,0 +1,29 @@
+package com.twine.tango;
+
+import android.content.Context;
+import android.support.test.InstrumentationRegistry;
+import android.support.test.runner.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() throws Exception {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getTargetContext();
+
+ MainActivity a = new MainActivity();
+ a.Do();
+
+ assertEquals("com.twine.tango", appContext.getPackageName());
+ }
+}
diff --git a/Software/Android-Studio/app/src/main/AndroidManifest.xml b/Software/Android-Studio/app/src/main/AndroidManifest.xml
new file mode 100644
index 000000000..9fb70555b
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/AndroidManifest.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.twine.tango">
+
+ <application
+ android:allowBackup="true"
+ android:icon="@mipmap/ic_launcher"
+ android:label="@string/app_name"
+ android:roundIcon="@mipmap/ic_launcher_round"
+ android:supportsRtl="true"
+ android:theme="@style/AppTheme">
+ <activity android:name=".MainActivity">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest> \ No newline at end of file
diff --git a/Software/Android-Studio/app/src/main/cpp/Android.mk b/Software/Android-Studio/app/src/main/cpp/Android.mk
new file mode 100644
index 000000000..e69de29bb
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/cpp/Android.mk
diff --git a/Software/Android-Studio/app/src/main/cpp/native-lib.cpp b/Software/Android-Studio/app/src/main/cpp/native-lib.cpp
new file mode 100644
index 000000000..fa595fbae
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/cpp/native-lib.cpp
@@ -0,0 +1,13 @@
+#include <jni.h>
+#include <string>
+
+extern "C"
+JNIEXPORT jstring
+
+JNICALL
+Java_com_twine_tango_MainActivity_stringFromJNI(
+ JNIEnv *env,
+ jobject /* this */) {
+ std::string hello = "Hello from C++";
+ return env->NewStringUTF(hello.c_str());
+}
diff --git a/Software/Android-Studio/app/src/main/java/com/twine/tango/MainActivity.java b/Software/Android-Studio/app/src/main/java/com/twine/tango/MainActivity.java
new file mode 100644
index 000000000..e739c599d
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/java/com/twine/tango/MainActivity.java
@@ -0,0 +1,34 @@
+package com.twine.tango;
+
+import android.support.v7.app.AppCompatActivity;
+import android.os.Bundle;
+import android.widget.TextView;
+
+public class MainActivity extends AppCompatActivity {
+
+ // Used to load the 'native-lib' library on application startup.
+ static {
+ System.loadLibrary("native-lib");
+ }
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ // Example of a call to a native method
+ TextView tv = (TextView) findViewById(R.id.sample_text);
+ tv.setText(stringFromJNI());
+ }
+
+ public void Do()
+ {
+ stringFromJNI();
+ }
+
+ /**
+ * A native method that is implemented by the 'native-lib' native library,
+ * which is packaged with this application.
+ */
+ public native String stringFromJNI();
+}
diff --git a/Software/Android-Studio/app/src/main/res/drawable/ic_launcher_background.xml b/Software/Android-Studio/app/src/main/res/drawable/ic_launcher_background.xml
new file mode 100644
index 000000000..1cd2a3665
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/drawable/ic_launcher_background.xml
@@ -0,0 +1,113 @@
+<?xml version="1.0" encoding="utf-8"?>
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+ android:width="24dp"
+ android:height="24dp"
+ android:viewportHeight="108.0"
+ android:viewportWidth="108.0">
+ <path
+ android:fillColor="#26A69A"
+ android:pathData="M0,0h108v108h-108z"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M19,0L19,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M9,0L9,108"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M39,0L39,108"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M29,0L29,108"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M59,0L59,108"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M49,0L49,108"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M79,0L79,108"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M69,0L69,108"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M89,0L89,108"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M99,0L99,108"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,89L108,89"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,99L108,99"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,69L108,69"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,79L108,79"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,49L108,49"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,59L108,59"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,29L108,29"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,39L108,39"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,19L108,19"
+ android:strokeColor="#33FFFFFF"
+ android:strokeWidth="0.8" />
+ <path
+ android:fillColor="#00000000"
+ android:pathData="M0,9L108,9"
+ android:strokeColor="#66FFFFFF"
+ android:strokeWidth="0.8" />
+</vector>
+
diff --git a/Software/Android-Studio/app/src/main/res/layout/activity_main.xml b/Software/Android-Studio/app/src/main/res/layout/activity_main.xml
new file mode 100644
index 000000000..ef968203f
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/layout/activity_main.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context="com.twine.tango.MainActivity">
+
+ <TextView
+ android:id="@+id/sample_text"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="Hello World!"
+ app:layout_constraintBottom_toBottomOf="parent"
+ app:layout_constraintLeft_toLeftOf="parent"
+ app:layout_constraintRight_toRightOf="parent"
+ app:layout_constraintTop_toTopOf="parent" />
+
+</android.support.constraint.ConstraintLayout>
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/Software/Android-Studio/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 000000000..00f9eaaf3
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/ic_launcher_background" />
+ <foreground android:drawable="@mipmap/ic_launcher_foreground" />
+</adaptive-icon> \ No newline at end of file
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/Software/Android-Studio/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 000000000..00f9eaaf3
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@drawable/ic_launcher_background" />
+ <foreground android:drawable="@mipmap/ic_launcher_foreground" />
+</adaptive-icon> \ No newline at end of file
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher.png b/Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 000000000..550730310
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 000000000..4e526c95b
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher_round.png b/Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 000000000..8fab6a3a5
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-hdpi/ic_launcher_round.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher.png b/Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 000000000..6bc7fcd6f
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 000000000..2c38c7190
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 000000000..1eecc0e7d
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-mdpi/ic_launcher_round.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 000000000..ec87dcebe
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 000000000..072467eaa
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 000000000..05ca079ca
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 000000000..6f67f21ba
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 000000000..78a6b7a34
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 000000000..8bac0f274
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 000000000..0327e13fa
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 000000000..68ebe33fe
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 000000000..bacd3e758
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/Software/Android-Studio/app/src/main/res/values/colors.xml b/Software/Android-Studio/app/src/main/res/values/colors.xml
new file mode 100644
index 000000000..3ab3e9cbc
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="colorPrimary">#3F51B5</color>
+ <color name="colorPrimaryDark">#303F9F</color>
+ <color name="colorAccent">#FF4081</color>
+</resources>
diff --git a/Software/Android-Studio/app/src/main/res/values/strings.xml b/Software/Android-Studio/app/src/main/res/values/strings.xml
new file mode 100644
index 000000000..9bff8a19c
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+<resources>
+ <string name="app_name">Tango</string>
+</resources>
diff --git a/Software/Android-Studio/app/src/main/res/values/styles.xml b/Software/Android-Studio/app/src/main/res/values/styles.xml
new file mode 100644
index 000000000..5885930df
--- /dev/null
+++ b/Software/Android-Studio/app/src/main/res/values/styles.xml
@@ -0,0 +1,11 @@
+<resources>
+
+ <!-- Base application theme. -->
+ <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+ <!-- Customize your theme here. -->
+ <item name="colorPrimary">@color/colorPrimary</item>
+ <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+ <item name="colorAccent">@color/colorAccent</item>
+ </style>
+
+</resources>
diff --git a/Software/Android-Studio/app/src/test/java/com/twine/tango/ExampleUnitTest.java b/Software/Android-Studio/app/src/test/java/com/twine/tango/ExampleUnitTest.java
new file mode 100644
index 000000000..4ef42c6db
--- /dev/null
+++ b/Software/Android-Studio/app/src/test/java/com/twine/tango/ExampleUnitTest.java
@@ -0,0 +1,20 @@
+package com.twine.tango;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() throws Exception {
+
+ MainActivity a = new MainActivity();
+ a.Do();
+ assertEquals(4, 2 + 2);
+ }
+} \ No newline at end of file
diff --git a/Software/Android-Studio/app/src/test/java/com/twine/tango/PMR_TST.java b/Software/Android-Studio/app/src/test/java/com/twine/tango/PMR_TST.java
new file mode 100644
index 000000000..e37996343
--- /dev/null
+++ b/Software/Android-Studio/app/src/test/java/com/twine/tango/PMR_TST.java
@@ -0,0 +1,55 @@
+package com.twine.tango;
+
+import org.junit.Test;
+
+import Tango.PMR.Common.MessageContainerOuterClass.MessageContainer;
+import Tango.PMR.Common.MessageTypeOuterClass.MessageType;
+import Tango.PMR.Common.RGBOuterClass.RGB;
+import Tango.PMR.Jobs.JobOuterClass.Job;
+import Tango.PMR.Jobs.SegmentOuterClass.Segment;
+
+import static org.junit.Assert.assertEquals;
+
+/**
+ * Created by Roy on 11/2/2017.
+ */
+
+public class PMR_TST {
+ @Test
+ public void read_write_PMR() throws Exception {
+
+ MessageContainer.Builder container = MessageContainer.newBuilder();
+
+ Job.Builder job = Job.newBuilder();
+ job.setName("Test Job");
+
+ job.addSegments(
+ Segment.newBuilder().
+ setName("Segment 1").
+ setColor(RGB.newBuilder()
+ .setR(10)
+ .setG(20)
+ .setB(30))
+ .build());
+
+ job.addSegments(
+ Segment.newBuilder().
+ setName("Segment 2").
+ setColor(RGB.newBuilder()
+ .setR(100)
+ .setG(200)
+ .setB(300))
+ .build());
+
+ container.setType(MessageType.Job);
+ Job buildJob = job.build();
+ container.setData(buildJob.toByteString());
+
+ byte[] bytes = container.build().toByteArray();
+
+ MessageContainer parsed = MessageContainer.parseFrom(bytes);
+ Job parsedJob = Job.parseFrom(parsed.getData());
+
+ assertEquals(buildJob, parsedJob);
+ }
+}
diff --git a/Software/Android-Studio/build.gradle b/Software/Android-Studio/build.gradle
new file mode 100644
index 000000000..0e2d08bbb
--- /dev/null
+++ b/Software/Android-Studio/build.gradle
@@ -0,0 +1,27 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+
+ repositories {
+ google()
+ jcenter()
+ mavenCentral()
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.0.0-beta2'
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+ mavenCentral()
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/Software/Android-Studio/gradle.properties b/Software/Android-Studio/gradle.properties
new file mode 100644
index 000000000..aac7c9b46
--- /dev/null
+++ b/Software/Android-Studio/gradle.properties
@@ -0,0 +1,17 @@
+# Project-wide Gradle settings.
+
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx1536m
+
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
diff --git a/Software/Android-Studio/gradle/wrapper/gradle-wrapper.jar b/Software/Android-Studio/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 000000000..13372aef5
--- /dev/null
+++ b/Software/Android-Studio/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/Software/Android-Studio/gradle/wrapper/gradle-wrapper.properties b/Software/Android-Studio/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 000000000..d86868739
--- /dev/null
+++ b/Software/Android-Studio/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Thu Nov 02 18:59:39 IST 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/Software/Android-Studio/gradlew b/Software/Android-Studio/gradlew
new file mode 100644
index 000000000..9d82f7891
--- /dev/null
+++ b/Software/Android-Studio/gradlew
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+ echo "$*"
+}
+
+die ( ) {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+esac
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+ JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/Software/Android-Studio/gradlew.bat b/Software/Android-Studio/gradlew.bat
new file mode 100644
index 000000000..8a0b282aa
--- /dev/null
+++ b/Software/Android-Studio/gradlew.bat
@@ -0,0 +1,90 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windowz variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+if "%@eval[2+2]" == "4" goto 4NT_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+goto execute
+
+:4NT_args
+@rem Get arguments from the 4NT Shell from JP Software
+set CMD_LINE_ARGS=%$
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/Software/Android-Studio/settings.gradle b/Software/Android-Studio/settings.gradle
new file mode 100644
index 000000000..2e7f8ec0e
--- /dev/null
+++ b/Software/Android-Studio/settings.gradle
@@ -0,0 +1 @@
+include ':app', ':Tango.PMR', ':Tango.BL'
diff --git a/Software/Visual Studio/Tango.Protobuf/ProtoCompiler.cs b/Software/Visual Studio/Tango.Protobuf/ProtoCompiler.cs
index 684248209..c48ec6a70 100644
--- a/Software/Visual Studio/Tango.Protobuf/ProtoCompiler.cs
+++ b/Software/Visual Studio/Tango.Protobuf/ProtoCompiler.cs
@@ -71,6 +71,7 @@ namespace Tango.Protobuf
LogManager.Log("Compilers folder path: " + _compilersPath);
p.StartInfo.WorkingDirectory = _compilersPath;
+ String oldCurrentDirectory = Environment.CurrentDirectory;
Environment.CurrentDirectory = _compilersPath;
p.StartInfo.FileName = GetProtoCompilerName();
@@ -98,6 +99,8 @@ namespace Tango.Protobuf
p.Start();
p.WaitForExit(5000);
+ Environment.CurrentDirectory = oldCurrentDirectory;
+
String error = p.StandardError.ReadToEnd();
if (!String.IsNullOrWhiteSpace(error))
diff --git a/Software/Visual Studio/Utilities/Tango.Protobuf.CLI/Program.cs b/Software/Visual Studio/Utilities/Tango.Protobuf.CLI/Program.cs
index 96d42d10c..7232a9b6d 100644
--- a/Software/Visual Studio/Utilities/Tango.Protobuf.CLI/Program.cs
+++ b/Software/Visual Studio/Utilities/Tango.Protobuf.CLI/Program.cs
@@ -22,11 +22,11 @@ namespace Tango.Protobuf.CLI
{
if (!Directory.Exists(options.SourceFolder))
{
- return ExitError("Could not locate source folder.");
+ return ExitError("Could not locate source folder \"" + Path.GetFullPath(options.SourceFolder) + "\"");
}
if (!Directory.Exists(options.OutputFolder))
{
- return ExitError("Could not locate output folder.");
+ return ExitError("Could not locate output folder " + Path.GetFullPath(options.OutputFolder));
}
CompilerLanguage language;
@@ -38,8 +38,8 @@ namespace Tango.Protobuf.CLI
try
{
var compiler = CompilerFactory.CreateCompiler(language);
- var result = compiler.CompileFolder(options.SourceFolder);
- result.Save(options.OutputFolder);
+ var result = compiler.CompileFolder(Path.GetFullPath(options.SourceFolder));
+ result.Save(Path.GetFullPath(options.OutputFolder));
}
catch (Exception ex)
{
@@ -47,10 +47,10 @@ namespace Tango.Protobuf.CLI
}
}
- return ExitSuccess();
+ return ExitSuccess("Folder compiled to " + Path.GetFullPath(options.SourceFolder));
}
- private static int ExitSuccess()
+ private static int ExitSuccess(String text)
{
Console.WriteLine("Done!");
return 0;