From 914f4db513477d9aff726546bac47545195a3e37 Mon Sep 17 00:00:00 2001 From: Roy Ben-Shabat Date: Thu, 16 Nov 2017 13:38:56 +0200 Subject: Rename "Visual Studio" to "Visual_Studio" Rename "External Repositories" to "External_Repositories". --- Software/Android_Studio/.gitignore | 9 + Software/Android_Studio/Tango.BL/.gitignore | 1 + Software/Android_Studio/Tango.BL/CMakeLists.txt | 45 + Software/Android_Studio/Tango.BL/build.gradle | 42 + .../Android_Studio/Tango.BL/proguard-rules.pro | 25 + .../twine/tango/bl/ExampleInstrumentedTest.java | 29 + .../Tango.BL/src/main/AndroidManifest.xml | 2 + .../Tango.BL/src/main/cpp/Android.mk | 0 .../Tango.BL/src/main/cpp/OtherClass.cpp | 9 + .../Tango.BL/src/main/cpp/OtherClass.h | 19 + .../Tango.BL/src/main/cpp/native-lib.cpp | 18 + .../src/main/java/com/twine/tango/bl/Example.java | 21 + .../Tango.BL/src/main/res/values/strings.xml | 3 + .../java/com/twine/tango/bl/ExampleUnitTest.java | 17 + Software/Android_Studio/Tango.Core/.gitignore | 1 + Software/Android_Studio/Tango.Core/build.gradle | 32 + .../Android_Studio/Tango.Core/proguard-rules.pro | 25 + .../twine/tango/core/ExampleInstrumentedTest.java | 26 + .../Tango.Core/src/main/AndroidManifest.xml | 2 + .../src/main/java/com/twine/tango/core/Action.java | 11 + .../java/com/twine/tango/core/ContextFactory.java | 22 + .../java/com/twine/tango/core/EventHandler.java | 11 + .../src/main/java/com/twine/tango/core/Func.java | 11 + .../java/com/twine/tango/core/IDisposable.java | 15 + .../twine/tango/core/ObjectDisposedException.java | 12 + .../com/twine/tango/core/ObservableCollection.java | 213 +++++ .../java/com/twine/tango/core/Reflections.java | 40 + .../Tango.Core/src/main/res/values/strings.xml | 3 + .../java/com/twine/tango/core/ExampleUnitTest.java | 17 + Software/Android_Studio/Tango.DAL/.gitignore | 1 + Software/Android_Studio/Tango.DAL/build.gradle | 8 + .../src/main/java/com/twine/tango/dal/myClass.java | 4 + .../Android_Studio/Tango.Integration/.gitignore | 1 + .../Android_Studio/Tango.Integration/build.gradle | 46 + .../Tango.Integration/proguard-rules.pro | 25 + .../tango/integration/ExampleInstrumentedTest.java | 26 + .../Tango.Integration/src/main/AndroidManifest.xml | 6 + .../tango/integration/adapters/SerialAdapter.java | 20 + .../tango/integration/adapters/TcpAdapter.java | 92 ++ .../tango/integration/machine/MachineOperator.java | 244 ++++++ .../machine/MachineOperatorInterface.java | 19 + .../tango/integration/machine/MessageBase.java | 24 + .../tango/integration/machine/RequestMessage.java | 59 ++ .../tango/integration/machine/ResponseMessage.java | 37 + .../src/main/res/values/strings.xml | 3 + .../twine/tango/integration/ExampleUnitTest.java | 17 + Software/Android_Studio/Tango.Models/.gitignore | 1 + Software/Android_Studio/Tango.Models/build.gradle | 41 + .../Android_Studio/Tango.Models/proguard-rules.pro | 25 + .../tango/models/ExampleInstrumentedTest.java | 26 + .../Tango.Models/src/main/AndroidManifest.xml | 2 + .../src/main/java/com/twine/tango/models/User.java | 39 + .../Tango.Models/src/main/res/values/strings.xml | 3 + .../com/twine/tango/models/ExampleUnitTest.java | 17 + Software/Android_Studio/Tango.PMR/.gitignore | 1 + Software/Android_Studio/Tango.PMR/build.gradle | 65 ++ .../Android_Studio/Tango.PMR/proguard-rules.pro | 25 + .../twine/tango/pmr/ExampleInstrumentedTest.java | 26 + .../Tango.PMR/src/main/AndroidManifest.xml | 2 + .../java/com/twine/tango/pmr/MessageFactory.java | 163 ++++ .../java/com/twine/tango/pmr/TangoMessage.java | 91 ++ .../pmr/common/MessageContainerOuterClass.java | 869 +++++++++++++++++++ .../tango/pmr/common/MessageTypeOuterClass.java | 191 +++++ .../com/twine/tango/pmr/common/RGBOuterClass.java | 630 ++++++++++++++ .../com/twine/tango/pmr/jobs/JobOuterClass.java | 953 +++++++++++++++++++++ .../twine/tango/pmr/jobs/SegmentOuterClass.java | 838 ++++++++++++++++++ .../pmr/stubs/CalculateRequestOuterClass.java | 573 +++++++++++++ .../pmr/stubs/CalculateResponseOuterClass.java | 507 +++++++++++ .../tango/pmr/stubs/ProgressRequestOuterClass.java | 440 ++++++++++ .../pmr/stubs/ProgressResponseOuterClass.java | 507 +++++++++++ .../Tango.PMR/src/main/res/raw/packages.txt | 3 + .../Tango.PMR/src/main/res/values/strings.xml | 3 + .../java/com/twine/tango/pmr/ExampleUnitTest.java | 35 + Software/Android_Studio/Tango.SharedUI/.gitignore | 1 + .../Android_Studio/Tango.SharedUI/build.gradle | 49 ++ .../Tango.SharedUI/proguard-rules.pro | 25 + .../tango/sharedui/ExampleInstrumentedTest.java | 26 + .../Tango.SharedUI/src/main/AndroidManifest.xml | 2 + .../sharedui/binding_adapters/BindingAdapters.java | 34 + .../tango/sharedui/containers/ActivityBase.java | 121 +++ .../containers/ActivityCallbackEngine.java | 55 ++ .../tango/sharedui/containers/FragmentBase.java | 111 +++ .../tango/sharedui/containers/FragmentBaseV4.java | 107 +++ .../tango/sharedui/mvvm/BindingConverters.java | 19 + .../tango/sharedui/mvvm/DependencyProperty.java | 49 ++ .../com/twine/tango/sharedui/mvvm/FieldUtils.java | 68 ++ .../twine/tango/sharedui/mvvm/ReadOnlyField.java | 74 ++ .../twine/tango/sharedui/mvvm/RelayCommand.java | 68 ++ .../twine/tango/sharedui/mvvm/ViewContract.java | 8 + .../twine/tango/sharedui/mvvm/ViewModelBase.java | 21 + .../notifications/AndroidNotificationProvider.java | 22 + .../notifications/NotificationProvider.java | 11 + .../twine/tango/sharedui/paging/PagerAdapter.java | 61 ++ .../tango/sharedui/paging/PagerZoomTransform.java | 44 + .../tango/sharedui/validation/ViewValidator.java | 23 + .../Tango.SharedUI/src/main/res/values/strings.xml | 3 + .../com/twine/tango/sharedui/ExampleUnitTest.java | 17 + Software/Android_Studio/Tango.Stubs.UI/.gitignore | 1 + .../Android_Studio/Tango.Stubs.UI/build.gradle | 68 ++ .../Tango.Stubs.UI/proguard-rules.pro | 25 + .../tango/stubs/ui/ExampleInstrumentedTest.java | 26 + .../Tango.Stubs.UI/src/main/AndroidManifest.xml | 26 + .../main/java/com/twine/tango/stubs/ui/App.java | 91 ++ .../twine/tango/stubs/ui/Events/LoginEvent.java | 24 + .../tango/stubs/ui/Events/StubSelectedEvent.java | 24 + .../stubs/ui/dagger/ApplicationComponent.java | 33 + .../tango/stubs/ui/dagger/ApplicationModule.java | 30 + .../tango/stubs/ui/dagger/EventBusModule.java | 24 + .../tango/stubs/ui/dagger/NotificationModule.java | 27 + .../tango/stubs/ui/dagger/ServicesModule.java | 8 + .../tango/stubs/ui/dagger/TransportModule.java | 33 + .../tango/stubs/ui/dagger/ViewModelsModule.java | 62 ++ .../tango/stubs/ui/views/login/LoginFragment.java | 46 + .../ui/views/login/LoginFragmentContract.java | 10 + .../stubs/ui/views/login/LoginFragmentVM.java | 51 ++ .../tango/stubs/ui/views/main/MainActivity.java | 80 ++ .../stubs/ui/views/main/MainActivityContract.java | 18 + .../tango/stubs/ui/views/main/MainActivityVM.java | 37 + .../ui/views/selection/SelectionFragment.java | 49 ++ .../views/selection/SelectionFragmentContract.java | 18 + .../ui/views/selection/SelectionFragmentVM.java | 23 + .../tango/stubs/ui/views/stub/StubActivity.java | 19 + .../stubs/ui/views/stub/StubActivityContract.java | 10 + .../tango/stubs/ui/views/stub/StubActivityVM.java | 78 ++ .../tango/stubs/ui/views/stubs/StubsActivity.java | 25 + .../ui/views/stubs/StubsActivityContract.java | 13 + .../stubs/ui/views/stubs/StubsActivityVM.java | 60 ++ .../src/main/res/drawable/database.png | Bin 0 -> 2304 bytes .../src/main/res/drawable/ic_database.xml | 17 + .../main/res/drawable/ic_launcher_background.xml | 113 +++ .../src/main/res/drawable/ic_play.xml | 9 + .../src/main/res/drawable/ic_stop.xml | 4 + .../src/main/res/drawable/ic_stubs.xml | 6 + .../src/main/res/drawable/list_view_selectable.xml | 4 + .../Tango.Stubs.UI/src/main/res/drawable/stubs.png | Bin 0 -> 2543 bytes .../Tango.Stubs.UI/src/main/res/drawable/user.png | Bin 0 -> 9817 bytes .../src/main/res/layout/activity_main.xml | 54 ++ .../src/main/res/layout/activity_stub.xml | 146 ++++ .../src/main/res/layout/activity_stubs.xml | 31 + .../src/main/res/layout/fragment_login.xml | 67 ++ .../src/main/res/layout/fragment_selection.xml | 63 ++ .../src/main/res/layout/stubs_listview_item.xml | 30 + .../src/main/res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../res/mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3358 bytes .../res/mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 5117 bytes .../src/main/res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5084 bytes .../src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2386 bytes .../res/mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 2652 bytes .../src/main/res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3179 bytes .../src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4648 bytes .../res/mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 7011 bytes .../main/res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7381 bytes .../src/main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7008 bytes .../res/mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 14578 bytes .../main/res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11545 bytes .../src/main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9442 bytes .../res/mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 21908 bytes .../main/res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16109 bytes .../Tango.Stubs.UI/src/main/res/values/colors.xml | 8 + .../Tango.Stubs.UI/src/main/res/values/strings.xml | 6 + .../Tango.Stubs.UI/src/main/res/values/styles.xml | 11 + .../com/twine/tango/stubs/ui/ExampleUnitTest.java | 17 + Software/Android_Studio/Tango.Stubs/.gitignore | 1 + Software/Android_Studio/Tango.Stubs/build.gradle | 61 ++ .../Android_Studio/Tango.Stubs/proguard-rules.pro | 25 + .../twine/tango/stubs/ExampleInstrumentedTest.java | 26 + .../Tango.Stubs/src/main/AndroidManifest.xml | 2 + .../java/com/twine/tango/stubs/AvailableStub.java | 66 ++ .../src/main/java/com/twine/tango/stubs/IStub.java | 16 + .../java/com/twine/tango/stubs/StubAttribute.java | 21 + .../main/java/com/twine/tango/stubs/StubBase.java | 100 +++ .../java/com/twine/tango/stubs/StubDirection.java | 11 + .../main/java/com/twine/tango/stubs/StubState.java | 13 + .../com/twine/tango/stubs/stubs/Calculate.java | 44 + .../java/com/twine/tango/stubs/stubs/Progress.java | 39 + .../Tango.Stubs/src/main/res/raw/stubs.txt | 2 + .../Tango.Stubs/src/main/res/values/strings.xml | 3 + .../com/twine/tango/stubs/ExampleUnitTest.java | 17 + Software/Android_Studio/Tango.Transport/.gitignore | 1 + .../Android_Studio/Tango.Transport/build.gradle | 56 ++ .../Tango.Transport/proguard-rules.pro | 25 + .../tango/transport/ExampleInstrumentedTest.java | 26 + .../Tango.Transport/src/main/AndroidManifest.xml | 2 + .../twine/tango/transport/ITransportAdapter.java | 43 + .../twine/tango/transport/ITransportComponent.java | 42 + .../com/twine/tango/transport/ITransporter.java | 43 + .../com/twine/tango/transport/PendingResponse.java | 63 ++ .../tango/transport/TransportAdapterBase.java | 94 ++ .../tango/transport/TransportComponentState.java | 25 + .../twine/tango/transport/TransportMessage.java | 37 + .../tango/transport/TransportMessageBase.java | 91 ++ .../tango/transport/TransportMessageDirection.java | 10 + .../com/twine/tango/transport/TransporterBase.java | 566 ++++++++++++ .../transport/adapters/TcpTransportAdapter.java | 205 +++++ .../transport/transporters/ProtoTransporter.java | 18 + .../src/main/res/values/strings.xml | 3 + .../com/twine/tango/transport/ExampleUnitTest.java | 17 + Software/Android_Studio/app/.gitignore | 1 + Software/Android_Studio/app/CMakeLists.txt | 44 + Software/Android_Studio/app/build.gradle | 41 + Software/Android_Studio/app/proguard-rules.pro | 25 + .../com/twine/tango/ExampleInstrumentedTest.java | 29 + .../app/src/main/AndroidManifest.xml | 21 + .../Android_Studio/app/src/main/cpp/Android.mk | 0 .../Android_Studio/app/src/main/cpp/native-lib.cpp | 13 + .../main/java/com/twine/tango/MainActivity.java | 34 + .../main/res/drawable/ic_launcher_background.xml | 113 +++ .../app/src/main/res/layout/activity_main.xml | 19 + .../src/main/res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../res/mipmap-anydpi-v26/ic_launcher_round.xml | 5 + .../app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 3358 bytes .../res/mipmap-hdpi/ic_launcher_foreground.png | Bin 0 -> 5117 bytes .../src/main/res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 5084 bytes .../app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 2386 bytes .../res/mipmap-mdpi/ic_launcher_foreground.png | Bin 0 -> 2652 bytes .../src/main/res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 3179 bytes .../app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 4648 bytes .../res/mipmap-xhdpi/ic_launcher_foreground.png | Bin 0 -> 7011 bytes .../main/res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 7381 bytes .../app/src/main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 7008 bytes .../res/mipmap-xxhdpi/ic_launcher_foreground.png | Bin 0 -> 14578 bytes .../main/res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 11545 bytes .../src/main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 9442 bytes .../res/mipmap-xxxhdpi/ic_launcher_foreground.png | Bin 0 -> 21908 bytes .../main/res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 16109 bytes .../app/src/main/res/values/colors.xml | 6 + .../app/src/main/res/values/strings.xml | 3 + .../app/src/main/res/values/styles.xml | 11 + .../test/java/com/twine/tango/ExampleUnitTest.java | 20 + .../app/src/test/java/com/twine/tango/PMR_TST.java | 73 ++ Software/Android_Studio/build.gradle | 41 + Software/Android_Studio/gradle.properties | 17 + .../gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 53636 bytes .../gradle/wrapper/gradle-wrapper.properties | 6 + Software/Android_Studio/gradlew | 160 ++++ Software/Android_Studio/gradlew.bat | 90 ++ Software/Android_Studio/settings.gradle | 1 + 238 files changed, 12635 insertions(+) create mode 100644 Software/Android_Studio/.gitignore create mode 100644 Software/Android_Studio/Tango.BL/.gitignore create mode 100644 Software/Android_Studio/Tango.BL/CMakeLists.txt create mode 100644 Software/Android_Studio/Tango.BL/build.gradle create mode 100644 Software/Android_Studio/Tango.BL/proguard-rules.pro create mode 100644 Software/Android_Studio/Tango.BL/src/androidTest/java/com/twine/tango/bl/ExampleInstrumentedTest.java create mode 100644 Software/Android_Studio/Tango.BL/src/main/AndroidManifest.xml create mode 100644 Software/Android_Studio/Tango.BL/src/main/cpp/Android.mk create mode 100644 Software/Android_Studio/Tango.BL/src/main/cpp/OtherClass.cpp create mode 100644 Software/Android_Studio/Tango.BL/src/main/cpp/OtherClass.h create mode 100644 Software/Android_Studio/Tango.BL/src/main/cpp/native-lib.cpp create mode 100644 Software/Android_Studio/Tango.BL/src/main/java/com/twine/tango/bl/Example.java create mode 100644 Software/Android_Studio/Tango.BL/src/main/res/values/strings.xml create mode 100644 Software/Android_Studio/Tango.BL/src/test/java/com/twine/tango/bl/ExampleUnitTest.java create mode 100644 Software/Android_Studio/Tango.Core/.gitignore create mode 100644 Software/Android_Studio/Tango.Core/build.gradle create mode 100644 Software/Android_Studio/Tango.Core/proguard-rules.pro create mode 100644 Software/Android_Studio/Tango.Core/src/androidTest/java/com/twine/tango/core/ExampleInstrumentedTest.java create mode 100644 Software/Android_Studio/Tango.Core/src/main/AndroidManifest.xml create mode 100644 Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Action.java create mode 100644 Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ContextFactory.java create mode 100644 Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/EventHandler.java create mode 100644 Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Func.java create mode 100644 Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/IDisposable.java create mode 100644 Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ObjectDisposedException.java create mode 100644 Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ObservableCollection.java create mode 100644 Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Reflections.java create mode 100644 Software/Android_Studio/Tango.Core/src/main/res/values/strings.xml create mode 100644 Software/Android_Studio/Tango.Core/src/test/java/com/twine/tango/core/ExampleUnitTest.java create mode 100644 Software/Android_Studio/Tango.DAL/.gitignore create mode 100644 Software/Android_Studio/Tango.DAL/build.gradle create mode 100644 Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/myClass.java create mode 100644 Software/Android_Studio/Tango.Integration/.gitignore create mode 100644 Software/Android_Studio/Tango.Integration/build.gradle create mode 100644 Software/Android_Studio/Tango.Integration/proguard-rules.pro create mode 100644 Software/Android_Studio/Tango.Integration/src/androidTest/java/com/twine/tango/integration/ExampleInstrumentedTest.java create mode 100644 Software/Android_Studio/Tango.Integration/src/main/AndroidManifest.xml create mode 100644 Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/adapters/SerialAdapter.java create mode 100644 Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/adapters/TcpAdapter.java create mode 100644 Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MachineOperator.java create mode 100644 Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MachineOperatorInterface.java create mode 100644 Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MessageBase.java create mode 100644 Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/RequestMessage.java create mode 100644 Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/ResponseMessage.java create mode 100644 Software/Android_Studio/Tango.Integration/src/main/res/values/strings.xml create mode 100644 Software/Android_Studio/Tango.Integration/src/test/java/com/twine/tango/integration/ExampleUnitTest.java create mode 100644 Software/Android_Studio/Tango.Models/.gitignore create mode 100644 Software/Android_Studio/Tango.Models/build.gradle create mode 100644 Software/Android_Studio/Tango.Models/proguard-rules.pro create mode 100644 Software/Android_Studio/Tango.Models/src/androidTest/java/com/twine/tango/models/ExampleInstrumentedTest.java create mode 100644 Software/Android_Studio/Tango.Models/src/main/AndroidManifest.xml create mode 100644 Software/Android_Studio/Tango.Models/src/main/java/com/twine/tango/models/User.java create mode 100644 Software/Android_Studio/Tango.Models/src/main/res/values/strings.xml create mode 100644 Software/Android_Studio/Tango.Models/src/test/java/com/twine/tango/models/ExampleUnitTest.java create mode 100644 Software/Android_Studio/Tango.PMR/.gitignore create mode 100644 Software/Android_Studio/Tango.PMR/build.gradle create mode 100644 Software/Android_Studio/Tango.PMR/proguard-rules.pro create mode 100644 Software/Android_Studio/Tango.PMR/src/androidTest/java/com/twine/tango/pmr/ExampleInstrumentedTest.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/AndroidManifest.xml create mode 100644 Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/MessageFactory.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/TangoMessage.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/common/MessageContainerOuterClass.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/common/MessageTypeOuterClass.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/common/RGBOuterClass.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/jobs/JobOuterClass.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/jobs/SegmentOuterClass.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/CalculateRequestOuterClass.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/CalculateResponseOuterClass.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/ProgressRequestOuterClass.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/ProgressResponseOuterClass.java create mode 100644 Software/Android_Studio/Tango.PMR/src/main/res/raw/packages.txt create mode 100644 Software/Android_Studio/Tango.PMR/src/main/res/values/strings.xml create mode 100644 Software/Android_Studio/Tango.PMR/src/test/java/com/twine/tango/pmr/ExampleUnitTest.java create mode 100644 Software/Android_Studio/Tango.SharedUI/.gitignore create mode 100644 Software/Android_Studio/Tango.SharedUI/build.gradle create mode 100644 Software/Android_Studio/Tango.SharedUI/proguard-rules.pro create mode 100644 Software/Android_Studio/Tango.SharedUI/src/androidTest/java/com/twine/tango/sharedui/ExampleInstrumentedTest.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/AndroidManifest.xml create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_adapters/BindingAdapters.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityBase.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityCallbackEngine.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBase.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBaseV4.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/BindingConverters.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/DependencyProperty.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/FieldUtils.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ReadOnlyField.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/RelayCommand.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewContract.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewModelBase.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/AndroidNotificationProvider.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/NotificationProvider.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerAdapter.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerZoomTransform.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/validation/ViewValidator.java create mode 100644 Software/Android_Studio/Tango.SharedUI/src/main/res/values/strings.xml create mode 100644 Software/Android_Studio/Tango.SharedUI/src/test/java/com/twine/tango/sharedui/ExampleUnitTest.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/.gitignore create mode 100644 Software/Android_Studio/Tango.Stubs.UI/build.gradle create mode 100644 Software/Android_Studio/Tango.Stubs.UI/proguard-rules.pro create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/androidTest/java/com/twine/tango/stubs/ui/ExampleInstrumentedTest.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/AndroidManifest.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/App.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/Events/LoginEvent.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/Events/StubSelectedEvent.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ApplicationComponent.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ApplicationModule.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/EventBusModule.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/NotificationModule.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ServicesModule.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/TransportModule.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ViewModelsModule.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragment.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragmentContract.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragmentVM.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivity.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivityContract.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivityVM.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragment.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragmentContract.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragmentVM.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivity.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivityContract.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivityVM.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivity.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivityContract.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivityVM.java create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/database.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_database.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_launcher_background.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_play.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_stop.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_stubs.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/list_view_selectable.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/stubs.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/user.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_main.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_stub.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_stubs.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/fragment_login.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/fragment_selection.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/stubs_listview_item.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/values/colors.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/values/strings.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/main/res/values/styles.xml create mode 100644 Software/Android_Studio/Tango.Stubs.UI/src/test/java/com/twine/tango/stubs/ui/ExampleUnitTest.java create mode 100644 Software/Android_Studio/Tango.Stubs/.gitignore create mode 100644 Software/Android_Studio/Tango.Stubs/build.gradle create mode 100644 Software/Android_Studio/Tango.Stubs/proguard-rules.pro create mode 100644 Software/Android_Studio/Tango.Stubs/src/androidTest/java/com/twine/tango/stubs/ExampleInstrumentedTest.java create mode 100644 Software/Android_Studio/Tango.Stubs/src/main/AndroidManifest.xml create mode 100644 Software/Android_Studio/Tango.Stubs/src/main/java/com/twine/tango/stubs/AvailableStub.java create mode 100644 Software/Android_Studio/Tango.Stubs/src/main/java/com/twine/tango/stubs/IStub.java create mode 100644 Software/Android_Studio/Tango.Stubs/src/main/java/com/twine/tango/stubs/StubAttribute.java create mode 100644 Software/Android_Studio/Tango.Stubs/src/main/java/com/twine/tango/stubs/StubBase.java create mode 100644 Software/Android_Studio/Tango.Stubs/src/main/java/com/twine/tango/stubs/StubDirection.java create mode 100644 Software/Android_Studio/Tango.Stubs/src/main/java/com/twine/tango/stubs/StubState.java create mode 100644 Software/Android_Studio/Tango.Stubs/src/main/java/com/twine/tango/stubs/stubs/Calculate.java create mode 100644 Software/Android_Studio/Tango.Stubs/src/main/java/com/twine/tango/stubs/stubs/Progress.java create mode 100644 Software/Android_Studio/Tango.Stubs/src/main/res/raw/stubs.txt create mode 100644 Software/Android_Studio/Tango.Stubs/src/main/res/values/strings.xml create mode 100644 Software/Android_Studio/Tango.Stubs/src/test/java/com/twine/tango/stubs/ExampleUnitTest.java create mode 100644 Software/Android_Studio/Tango.Transport/.gitignore create mode 100644 Software/Android_Studio/Tango.Transport/build.gradle create mode 100644 Software/Android_Studio/Tango.Transport/proguard-rules.pro create mode 100644 Software/Android_Studio/Tango.Transport/src/androidTest/java/com/twine/tango/transport/ExampleInstrumentedTest.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/AndroidManifest.xml create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/ITransportAdapter.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/ITransportComponent.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/ITransporter.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/PendingResponse.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportAdapterBase.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportComponentState.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessage.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessageBase.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransportMessageDirection.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/TransporterBase.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/adapters/TcpTransportAdapter.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/java/com/twine/tango/transport/transporters/ProtoTransporter.java create mode 100644 Software/Android_Studio/Tango.Transport/src/main/res/values/strings.xml create mode 100644 Software/Android_Studio/Tango.Transport/src/test/java/com/twine/tango/transport/ExampleUnitTest.java create mode 100644 Software/Android_Studio/app/.gitignore create mode 100644 Software/Android_Studio/app/CMakeLists.txt create mode 100644 Software/Android_Studio/app/build.gradle create mode 100644 Software/Android_Studio/app/proguard-rules.pro create mode 100644 Software/Android_Studio/app/src/androidTest/java/com/twine/tango/ExampleInstrumentedTest.java create mode 100644 Software/Android_Studio/app/src/main/AndroidManifest.xml create mode 100644 Software/Android_Studio/app/src/main/cpp/Android.mk create mode 100644 Software/Android_Studio/app/src/main/cpp/native-lib.cpp create mode 100644 Software/Android_Studio/app/src/main/java/com/twine/tango/MainActivity.java create mode 100644 Software/Android_Studio/app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 Software/Android_Studio/app/src/main/res/layout/activity_main.xml create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png create mode 100644 Software/Android_Studio/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 Software/Android_Studio/app/src/main/res/values/colors.xml create mode 100644 Software/Android_Studio/app/src/main/res/values/strings.xml create mode 100644 Software/Android_Studio/app/src/main/res/values/styles.xml create mode 100644 Software/Android_Studio/app/src/test/java/com/twine/tango/ExampleUnitTest.java create mode 100644 Software/Android_Studio/app/src/test/java/com/twine/tango/PMR_TST.java create mode 100644 Software/Android_Studio/build.gradle create mode 100644 Software/Android_Studio/gradle.properties create mode 100644 Software/Android_Studio/gradle/wrapper/gradle-wrapper.jar create mode 100644 Software/Android_Studio/gradle/wrapper/gradle-wrapper.properties create mode 100644 Software/Android_Studio/gradlew create mode 100644 Software/Android_Studio/gradlew.bat create mode 100644 Software/Android_Studio/settings.gradle (limited to 'Software/Android_Studio') 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 Testing documentation + */ +@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 @@ + 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 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 + +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 +#include +#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 @@ + + Tango.BL + 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 Testing documentation + */ +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.Core/.gitignore b/Software/Android_Studio/Tango.Core/.gitignore new file mode 100644 index 000000000..796b96d1c --- /dev/null +++ b/Software/Android_Studio/Tango.Core/.gitignore @@ -0,0 +1 @@ +/build diff --git a/Software/Android_Studio/Tango.Core/build.gradle b/Software/Android_Studio/Tango.Core/build.gradle new file mode 100644 index 000000000..36a8dfafb --- /dev/null +++ b/Software/Android_Studio/Tango.Core/build.gradle @@ -0,0 +1,32 @@ +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" + + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +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.Core/proguard-rules.pro b/Software/Android_Studio/Tango.Core/proguard-rules.pro new file mode 100644 index 000000000..a0eef131a --- /dev/null +++ b/Software/Android_Studio/Tango.Core/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.Core/src/androidTest/java/com/twine/tango/core/ExampleInstrumentedTest.java b/Software/Android_Studio/Tango.Core/src/androidTest/java/com/twine/tango/core/ExampleInstrumentedTest.java new file mode 100644 index 000000000..dd94a8561 --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/androidTest/java/com/twine/tango/core/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.twine.tango.core; + +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 Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.twine.tango.core.test", appContext.getPackageName()); + } +} diff --git a/Software/Android_Studio/Tango.Core/src/main/AndroidManifest.xml b/Software/Android_Studio/Tango.Core/src/main/AndroidManifest.xml new file mode 100644 index 000000000..ac8559e1a --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Action.java b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Action.java new file mode 100644 index 000000000..570c30c43 --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Action.java @@ -0,0 +1,11 @@ +package com.twine.tango.core; + +/** + * Created by Roy on 11/13/2017. + */ + +public interface Action { + + void invoke(T e); + +} diff --git a/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ContextFactory.java b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ContextFactory.java new file mode 100644 index 000000000..e3a08dad1 --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ContextFactory.java @@ -0,0 +1,22 @@ +package com.twine.tango.core; + +import android.content.Context; + +/** + * Created by Roy on 11/14/2017. + */ + +public class ContextFactory +{ + private static Context appContext; + + public static void init(Context context) + { + appContext = context; + } + + public static Context getApplicationContext() + { + return appContext; + } +} diff --git a/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/EventHandler.java b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/EventHandler.java new file mode 100644 index 000000000..cb455ab4e --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/EventHandler.java @@ -0,0 +1,11 @@ +package com.twine.tango.core; + +/** + * Created by Roy on 11/13/2017. + */ + +public interface EventHandler { + + void invoke(Object sender,T e); + +} diff --git a/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Func.java b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Func.java new file mode 100644 index 000000000..a0df10ed6 --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Func.java @@ -0,0 +1,11 @@ +package com.twine.tango.core; + +/** + * Created by Roy on 11/13/2017. + */ + +public interface Func { + + TOut invoke(); + +} diff --git a/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/IDisposable.java b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/IDisposable.java new file mode 100644 index 000000000..109f4e23b --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/IDisposable.java @@ -0,0 +1,15 @@ +package com.twine.tango.core; + + +/** + * Represents a disposable object. + */ +public interface IDisposable { + + + /** + * Release any resources which are occupied by this object. + */ + void dispose(); + +} diff --git a/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ObjectDisposedException.java b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ObjectDisposedException.java new file mode 100644 index 000000000..5cd676c7e --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ObjectDisposedException.java @@ -0,0 +1,12 @@ +package com.twine.tango.core; + +/** + * Created by Roy on 11/13/2017. + */ + +public class ObjectDisposedException extends IllegalAccessException { + + public ObjectDisposedException(String s) { + super(s); + } +} diff --git a/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ObservableCollection.java b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ObservableCollection.java new file mode 100644 index 000000000..7775a55ee --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/ObservableCollection.java @@ -0,0 +1,213 @@ +package com.twine.tango.core; + +import android.support.annotation.NonNull; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; + + +/** + * Represents an observable collection with change notification. + * + * @param the type parameter + */ +public class ObservableCollection implements List { + + /** + * The interface On changed listener. + */ + public interface OnChangedListener { + /** + * On change. + */ + void onChange(); + } + + private List list; + private OnChangedListener onChangedListener; + + /** + * Sets on change listener. + * + * @param listener the listener + */ + public void setOnChangeListener(OnChangedListener listener) { + this.onChangedListener = listener; + } + + + /** + * Clear on change listener. + */ + public void clearOnChangeListener() + { + this.onChangedListener = null; + } + + /** + * On change. + */ + protected void onChange() { + if (this.onChangedListener != null) { + this.onChangedListener.onChange(); + } + } + + /** + * Instantiates a new Observable collection. + */ + public ObservableCollection() { + list = new ArrayList<>(); + } + + @Override + public int size() { + return list.size(); + } + + @Override + public boolean isEmpty() { + return list.isEmpty(); + } + + @Override + public boolean contains(Object o) { + return list.contains(o); + } + + @NonNull + @Override + public Iterator iterator() { + return list.iterator(); + } + + @NonNull + @Override + public Object[] toArray() { + return list.toArray(); + } + + @NonNull + @Override + public T1[] toArray(@NonNull T1[] t1s) { + return list.toArray(t1s); + } + + @Override + public boolean add(T t) { + boolean result = list.add(t); + onChange(); + return result; + } + + @Override + public boolean remove(Object o) { + boolean result = list.remove(o); + onChange(); + return result; + } + + @Override + public boolean containsAll(@NonNull Collection collection) { + return list.containsAll(collection); + } + + @Override + public boolean addAll(@NonNull Collection collection) { + boolean result = list.addAll(collection); + onChange(); + return result; + } + + @Override + public boolean addAll(int i, @NonNull Collection collection) { + boolean result = list.addAll(i, collection); + onChange(); + return result; + } + + @Override + public boolean removeAll(@NonNull Collection collection) { + boolean result = list.removeAll(collection); + onChange(); + return result; + } + + @Override + public boolean retainAll(@NonNull Collection collection) { + boolean result = list.retainAll(collection); + onChange(); + return result; + } + + @Override + public void clear() { + list.clear(); + onChange(); + } + + @Override + public boolean equals(Object o) { + return list.equals(o); + } + + @Override + public int hashCode() { + return list.hashCode(); + } + + @Override + public T get(int i) { + return list.get(i); + } + + @Override + public T set(int i, T t) { + T result = list.set(i, t); + onChange(); + return result; + } + + @Override + public void add(int i, T t) { + list.add(i,t); + onChange(); + } + + @Override + public T remove(int i) { + T result = list.remove(i); + onChange(); + return result; + } + + @Override + public int indexOf(Object o) { + return list.indexOf(o); + } + + @Override + public int lastIndexOf(Object o) { + return list.lastIndexOf(o); + } + + @NonNull + @Override + public ListIterator listIterator() { + return listIterator(); + } + + @NonNull + @Override + public ListIterator listIterator(int i) { + return listIterator(i); + } + + @NonNull + @Override + public List subList(int i, int i1) { + return list.subList(i,i1); + } +} diff --git a/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Reflections.java b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Reflections.java new file mode 100644 index 000000000..a986d6e80 --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/main/java/com/twine/tango/core/Reflections.java @@ -0,0 +1,40 @@ +package com.twine.tango.core; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Roy on 11/13/2017. + */ + +public class Reflections { + + public static List getReflectionListFromResource(int id) + { + List list = new ArrayList<>(); + + BufferedReader inputStream = new BufferedReader(new InputStreamReader(ContextFactory.getApplicationContext().getResources().openRawResource(id))); + + String line; + + try + { + while ((line = inputStream.readLine()) != null) + { + if (!line.isEmpty()) + { + list.add(line); + } + } + } catch (IOException e) + { + e.printStackTrace(); + } + + return list; + } + +} diff --git a/Software/Android_Studio/Tango.Core/src/main/res/values/strings.xml b/Software/Android_Studio/Tango.Core/src/main/res/values/strings.xml new file mode 100644 index 000000000..fd639f5b6 --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Tango.Core + diff --git a/Software/Android_Studio/Tango.Core/src/test/java/com/twine/tango/core/ExampleUnitTest.java b/Software/Android_Studio/Tango.Core/src/test/java/com/twine/tango/core/ExampleUnitTest.java new file mode 100644 index 000000000..b6f700635 --- /dev/null +++ b/Software/Android_Studio/Tango.Core/src/test/java/com/twine/tango/core/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.twine.tango.core; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +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.DAL/.gitignore b/Software/Android_Studio/Tango.DAL/.gitignore new file mode 100644 index 000000000..796b96d1c --- /dev/null +++ b/Software/Android_Studio/Tango.DAL/.gitignore @@ -0,0 +1 @@ +/build diff --git a/Software/Android_Studio/Tango.DAL/build.gradle b/Software/Android_Studio/Tango.DAL/build.gradle new file mode 100644 index 000000000..dd45e60cd --- /dev/null +++ b/Software/Android_Studio/Tango.DAL/build.gradle @@ -0,0 +1,8 @@ +apply plugin: 'java-library' + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) +} + +sourceCompatibility = "1.7" +targetCompatibility = "1.7" diff --git a/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/myClass.java b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/myClass.java new file mode 100644 index 000000000..1e28b85bb --- /dev/null +++ b/Software/Android_Studio/Tango.DAL/src/main/java/com/twine/tango/dal/myClass.java @@ -0,0 +1,4 @@ +package com.twine.tango.dal; + +public class myClass { +} diff --git a/Software/Android_Studio/Tango.Integration/.gitignore b/Software/Android_Studio/Tango.Integration/.gitignore new file mode 100644 index 000000000..796b96d1c --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/.gitignore @@ -0,0 +1 @@ +/build diff --git a/Software/Android_Studio/Tango.Integration/build.gradle b/Software/Android_Studio/Tango.Integration/build.gradle new file mode 100644 index 000000000..dc482d641 --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/build.gradle @@ -0,0 +1,46 @@ +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" + + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + dexOptions { + preDexLibraries = false + } +} + +dependencies { + implementation fileTree(include: ['*.jar'], dir: 'libs') + 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' + compile globalDependencies.rxJavaAndroid + compile globalDependencies.rxJava + compile globalDependencies.logging + compile globalDependencies.dagger + compile globalDependencies.daggerAndroid + implementation project(':Tango.PMR') +} diff --git a/Software/Android_Studio/Tango.Integration/proguard-rules.pro b/Software/Android_Studio/Tango.Integration/proguard-rules.pro new file mode 100644 index 000000000..a0eef131a --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/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.Integration/src/androidTest/java/com/twine/tango/integration/ExampleInstrumentedTest.java b/Software/Android_Studio/Tango.Integration/src/androidTest/java/com/twine/tango/integration/ExampleInstrumentedTest.java new file mode 100644 index 000000000..52db49c5f --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/src/androidTest/java/com/twine/tango/integration/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.twine.tango.integration; + +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 Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.twine.tango.integration.test", appContext.getPackageName()); + } +} diff --git a/Software/Android_Studio/Tango.Integration/src/main/AndroidManifest.xml b/Software/Android_Studio/Tango.Integration/src/main/AndroidManifest.xml new file mode 100644 index 000000000..b57dcb665 --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/src/main/AndroidManifest.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/adapters/SerialAdapter.java b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/adapters/SerialAdapter.java new file mode 100644 index 000000000..5224a0729 --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/adapters/SerialAdapter.java @@ -0,0 +1,20 @@ +package com.twine.tango.integration.adapters; + +import java.io.IOException; + +import io.reactivex.Observable; + +/** + * Created by Roy on 11/8/2017. + */ + +public interface SerialAdapter { + + void setAddress(String address); + String getAddress(); + void open() throws IOException; + void close() throws IOException; + void write(byte[] data) throws IOException; + Observable registerReceiveListener(); + boolean getIsOpen(); +} diff --git a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/adapters/TcpAdapter.java b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/adapters/TcpAdapter.java new file mode 100644 index 000000000..3858b2c5f --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/adapters/TcpAdapter.java @@ -0,0 +1,92 @@ +package com.twine.tango.integration.adapters; + +import android.os.SystemClock; +import com.elvishew.xlog.XLog; +import java.io.IOException; +import java.io.InputStream; +import java.net.Socket; +import io.reactivex.Observable; +import io.reactivex.schedulers.Schedulers; +import io.reactivex.subjects.PublishSubject; + +/** + * Created by Roy on 11/8/2017. + */ + +public class TcpAdapter implements SerialAdapter { + + private Socket socket; + private String address; + private boolean isOpen; + private static final int port = 9999; + private Thread receiveThread; + private PublishSubject subject; + + public TcpAdapter(String address) { + this.address = address; + } + + @Override + public void setAddress(String address) { + this.address = address; + } + + @Override + public String getAddress() { + return this.address; + } + + @Override + public void open() throws IOException { + socket = new Socket(address, port); + isOpen = true; + receiveThread = new Thread(this::receiveThreadMethod); + receiveThread.start(); + } + + @Override + public void close() throws IOException { + socket.close(); + isOpen = false; + } + + @Override + public void write(byte[] data) throws IOException { + socket.getOutputStream().write(data); + } + + @Override + public Observable registerReceiveListener() { + subject = PublishSubject.create(); + return subject.observeOn(Schedulers.io()); + } + + @Override + public boolean getIsOpen() { + return isOpen; + } + + private void receiveThreadMethod() { + while (isOpen) { + + try { + + InputStream stream = socket.getInputStream(); + + if (stream.available() > 0) + { + byte[] data = new byte[stream.available()]; + int read = stream.read(data); + if (subject != null && read > 0) subject.onNext(data); + } + + } catch (Exception e) { + isOpen = false; + XLog.e(e); + if (subject != null) subject.onError(e); + } + + SystemClock.sleep(10); + } + } +} diff --git a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MachineOperator.java b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MachineOperator.java new file mode 100644 index 000000000..33a7d40ff --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MachineOperator.java @@ -0,0 +1,244 @@ +package com.twine.tango.integration.machine; + +import android.os.SystemClock; +import com.elvishew.xlog.XLog; +import com.google.protobuf.GeneratedMessageV3; +import com.google.protobuf.InvalidProtocolBufferException; +import com.twine.tango.integration.adapters.SerialAdapter; +import com.twine.tango.pmr.MessageFactory; +import com.twine.tango.pmr.TangoMessage; +import com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer; +import java.io.IOException; +import java.text.DateFormat; +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Calendar; +import java.util.List; +import java.util.Locale; +import java.util.UUID; +import java.util.concurrent.ConcurrentLinkedQueue; + +import javax.inject.Inject; + +import io.reactivex.Observable; +import io.reactivex.Scheduler; +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; +import io.reactivex.subjects.PublishSubject; + +/** + * Created by Roy on 11/8/2017. + */ + +public class MachineOperator implements MachineOperatorInterface { + + private SerialAdapter channel; + private Calendar calendar; + private DateFormat dateFormatter; + private ConcurrentLinkedQueue requestsQueue; + private List pendingRequests; + private ConcurrentLinkedQueue responsesQueue; + private PublishSubject receiveDataSubject; + private Thread pushThread; + private Thread pullThread; + private boolean isConnected; + private Scheduler ioScheduler; + private Scheduler uiScheduler; + + @Inject + public MachineOperator(SerialAdapter channel) { + + ioScheduler = Schedulers.io(); + uiScheduler = AndroidSchedulers.mainThread(); + calendar = Calendar.getInstance(); + dateFormatter = new SimpleDateFormat("HH:mm:ss.SSS", Locale.US); + requestsQueue = new ConcurrentLinkedQueue<>(); + pendingRequests = new ArrayList<>(); + responsesQueue = new ConcurrentLinkedQueue<>(); + + setCommunicationChannel(channel); + + connect().subscribe(); + } + + private void setCommunicationChannel(SerialAdapter channel) { + if (channel.getIsOpen()) { + try { + channel.close(); + } catch (IOException e) { + XLog.e(e); + } + } + + boolean reconnect = false; + + if (isConnected) { + reconnect = true; + disconnect(); + } + + this.channel = channel; + this.channel.registerReceiveListener().subscribe((data) -> + { + + try { + MessageContainer container = MessageContainer.parseFrom(data); + + RequestMessage pendingRequest = Observable.fromIterable(pendingRequests).filter(x -> x.getToken().equals(container.getToken())).blockingFirst(null); + + if (pendingRequest != null) { + pendingRequests.remove(pendingRequest); + responsesQueue.add(new ResponseMessage(pendingRequest.getSubject(), pendingRequest.getResponseClass(), data)); + } else { + XLog.w("Could not find matching request for response: %s", container.getType().toString()); + } + } catch (InvalidProtocolBufferException e) { + XLog.e(e); + } + + if (receiveDataSubject != null) + { + receiveDataSubject.onNext(data); + } + + }); + + if (reconnect) { + connect(); + } + } + + public Observable send(TangoMessage message, Class className) { + + PublishSubject subject = PublishSubject.create(); + requestsQueue.add(new RequestMessage<>(subject, message, className, UUID.randomUUID().toString(), calendar.getTime())); + return subject.subscribeOn(ioScheduler).observeOn(uiScheduler); + } + + + @Override + public Observable connect() { + + return Observable.create((x) -> + { + try { + channel.open(); + isConnected = true; + startThreads(); + x.onComplete(); + } catch (Exception e) { + XLog.e("Could not connect to Tango machine.", e); + x.onError(e); + } + + }).subscribeOn(ioScheduler).observeOn(uiScheduler); + + } + + @Override + public Observable disconnect() { + + return Observable.create((x) -> + { + try { + channel.close(); + isConnected = false; + x.onComplete(); + stopThreads(); + } catch (Exception e) { + XLog.e("Could not disconnect from Tango machine.", e); + x.onError(e); + } + + }).subscribeOn(ioScheduler).observeOn(uiScheduler); + + } + + private void startThreads() { + pushThread = new Thread(this::pushThreadMethod, "Push Thread"); + pushThread.start(); + + pullThread = new Thread(this::pullThreadMethod, "Pull Thread"); + pullThread.start(); + } + + private void stopThreads() { + isConnected = false; + pullThread.interrupt(); + pushThread.interrupt(); + } + + public void writeData(byte[] data) + { + try { + channel.write(data); + } catch (IOException e) { + XLog.e(e); + } + } + + @Override + public Observable receiveData() { + receiveDataSubject = PublishSubject.create(); + return receiveDataSubject.observeOn(uiScheduler).subscribeOn(ioScheduler); + } + + private void pushThreadMethod() { + + while (isConnected) { + + if (requestsQueue.size() > 0) { + RequestMessage request = requestsQueue.poll(); + if (request != null) { + pendingRequests.add(request); + try { + channel.write(request.getMessage().toBytes()); + } catch (IOException e) { + isConnected = false; + XLog.e(e); + } + } + } + + SystemClock.sleep(10); + } + } + + private void pullThreadMethod() { + while (isConnected) { + + if (responsesQueue.size() > 0) { + ResponseMessage response = responsesQueue.poll(); + if (response != null) { + + try { + TangoMessage message = MessageFactory.parseTangoMessage(response.getData()); + response.getSubject().onNext(message); + response.getSubject().onComplete(); + } catch (Exception e) { + response.getSubject().onError(e); + XLog.e("Could not parse response.", e); + } + + } + } + + SystemClock.sleep(10); + } + } + + private void postRequest(RequestMessage request) { + +// SystemClock.sleep(5000); +// +// TangoMessage jobTangoMessage = MessageFactory.createTangoMessage(Job.class); +// +// jobTangoMessage.setMessage(Job.newBuilder().setName("Result Job").build()); +// +// XLog.d("Posting result for request: %s TIME: %s", request.token, dateFormatter.format(request.dateTime)); +// +// request.subject.onNext(jobTangoMessage.getMessage()); +// +// request.subject.onComplete(); + } +} diff --git a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MachineOperatorInterface.java b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MachineOperatorInterface.java new file mode 100644 index 000000000..39e7e31d7 --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MachineOperatorInterface.java @@ -0,0 +1,19 @@ +package com.twine.tango.integration.machine; + +import com.google.protobuf.GeneratedMessageV3; +import com.twine.tango.pmr.TangoMessage; + +import io.reactivex.Observable; + +/** + * Created by Roy on 11/8/2017. + */ + +public interface MachineOperatorInterface { + + Observable send(TangoMessage message,Class className); + Observable connect(); + Observable disconnect(); + void writeData(byte[] data); + Observable receiveData(); +} diff --git a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MessageBase.java b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MessageBase.java new file mode 100644 index 000000000..c34e3653a --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/MessageBase.java @@ -0,0 +1,24 @@ +package com.twine.tango.integration.machine; + +import io.reactivex.subjects.PublishSubject; + +/** + * Created by Roy on 11/8/2017. + */ + +public class MessageBase { + + private PublishSubject subject; + + public PublishSubject getSubject() { + return subject; + } + + public void setSubject(PublishSubject subject) { + this.subject = subject; + } + + public MessageBase(PublishSubject subject) { + this.subject = subject; + } +} diff --git a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/RequestMessage.java b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/RequestMessage.java new file mode 100644 index 000000000..dde1ff765 --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/RequestMessage.java @@ -0,0 +1,59 @@ +package com.twine.tango.integration.machine; + +import com.google.protobuf.GeneratedMessageV3; +import com.twine.tango.pmr.TangoMessage; + +import java.util.Date; + +import io.reactivex.subjects.PublishSubject; + +/** + * Created by Roy on 11/8/2017. + */ +public class RequestMessage extends MessageBase { + + private String token; + private Date dateTime; + private TangoMessage message; + private Class responseClass; + + public String getToken() { + return token; + } + + public void setToken(String token) { + this.token = token; + } + + public Date getDateTime() { + return dateTime; + } + + public void setDateTime(Date dateTime) { + this.dateTime = dateTime; + } + + public TangoMessage getMessage() { + return message; + } + + public void setMessage(TangoMessage message) { + this.message = message; + } + + public Class getResponseClass() { + return responseClass; + } + + public void setResponseClass(Class responseClass) { + this.responseClass = responseClass; + } + + public RequestMessage(PublishSubject subject, TangoMessage message, Class responseClass, String token, Date time) { + super(subject); + this.message = message; + this.token = token; + this.dateTime = time; + this.responseClass = responseClass; + } +} diff --git a/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/ResponseMessage.java b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/ResponseMessage.java new file mode 100644 index 000000000..13de24286 --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/src/main/java/com/twine/tango/integration/machine/ResponseMessage.java @@ -0,0 +1,37 @@ +package com.twine.tango.integration.machine; + +import com.twine.tango.pmr.TangoMessage; + +import io.reactivex.subjects.PublishSubject; + +/** + * Created by Roy on 11/8/2017. + */ + +public class ResponseMessage extends MessageBase { + + private byte[] data; + private Class responseClass; + + public byte[] getData() { + return data; + } + + public void setData(byte[] data) { + this.data = data; + } + + public Class getResponseClass() { + return responseClass; + } + + public void setResponseClass(Class responseClass) { + this.responseClass = responseClass; + } + + public ResponseMessage(PublishSubject subject, Class responseClass, byte[] data) { + super(subject); + this.data = data; + this.responseClass = responseClass; + } +} diff --git a/Software/Android_Studio/Tango.Integration/src/main/res/values/strings.xml b/Software/Android_Studio/Tango.Integration/src/main/res/values/strings.xml new file mode 100644 index 000000000..58ea29ec7 --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Tango.Integration + diff --git a/Software/Android_Studio/Tango.Integration/src/test/java/com/twine/tango/integration/ExampleUnitTest.java b/Software/Android_Studio/Tango.Integration/src/test/java/com/twine/tango/integration/ExampleUnitTest.java new file mode 100644 index 000000000..3bba564e2 --- /dev/null +++ b/Software/Android_Studio/Tango.Integration/src/test/java/com/twine/tango/integration/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.twine.tango.integration; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +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.Models/.gitignore b/Software/Android_Studio/Tango.Models/.gitignore new file mode 100644 index 000000000..796b96d1c --- /dev/null +++ b/Software/Android_Studio/Tango.Models/.gitignore @@ -0,0 +1 @@ +/build diff --git a/Software/Android_Studio/Tango.Models/build.gradle b/Software/Android_Studio/Tango.Models/build.gradle new file mode 100644 index 000000000..127943df7 --- /dev/null +++ b/Software/Android_Studio/Tango.Models/build.gradle @@ -0,0 +1,41 @@ +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" + + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + dataBinding { + enabled = true + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } +} + +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.Models/proguard-rules.pro b/Software/Android_Studio/Tango.Models/proguard-rules.pro new file mode 100644 index 000000000..a0eef131a --- /dev/null +++ b/Software/Android_Studio/Tango.Models/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.Models/src/androidTest/java/com/twine/tango/models/ExampleInstrumentedTest.java b/Software/Android_Studio/Tango.Models/src/androidTest/java/com/twine/tango/models/ExampleInstrumentedTest.java new file mode 100644 index 000000000..ffdb40c47 --- /dev/null +++ b/Software/Android_Studio/Tango.Models/src/androidTest/java/com/twine/tango/models/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.twine.tango.models; + +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 Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.twine.tango.models.test", appContext.getPackageName()); + } +} diff --git a/Software/Android_Studio/Tango.Models/src/main/AndroidManifest.xml b/Software/Android_Studio/Tango.Models/src/main/AndroidManifest.xml new file mode 100644 index 000000000..85096ec75 --- /dev/null +++ b/Software/Android_Studio/Tango.Models/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/Software/Android_Studio/Tango.Models/src/main/java/com/twine/tango/models/User.java b/Software/Android_Studio/Tango.Models/src/main/java/com/twine/tango/models/User.java new file mode 100644 index 000000000..41ea672e4 --- /dev/null +++ b/Software/Android_Studio/Tango.Models/src/main/java/com/twine/tango/models/User.java @@ -0,0 +1,39 @@ +package com.twine.tango.models; + +import android.databinding.BaseObservable; +import android.databinding.Bindable; + +/** + * Created by Roy on 11/7/2017. + */ + +public class User extends BaseObservable { + + private String email; + private String password; + + public User(String email, String password) { + this.email = email; + this.password = password; + } + + @Bindable + public String getEmail() { + return email; + } + + public void setEmail(String email) { + this.email = email; + notifyPropertyChanged(BR.email); + } + + @Bindable + public String getPassword() { + return password; + } + + public void setPassword(String password) { + this.password = password; + notifyPropertyChanged(BR.password); + } +} diff --git a/Software/Android_Studio/Tango.Models/src/main/res/values/strings.xml b/Software/Android_Studio/Tango.Models/src/main/res/values/strings.xml new file mode 100644 index 000000000..8caa8d0fd --- /dev/null +++ b/Software/Android_Studio/Tango.Models/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Tango.Models + diff --git a/Software/Android_Studio/Tango.Models/src/test/java/com/twine/tango/models/ExampleUnitTest.java b/Software/Android_Studio/Tango.Models/src/test/java/com/twine/tango/models/ExampleUnitTest.java new file mode 100644 index 000000000..f00a91cc0 --- /dev/null +++ b/Software/Android_Studio/Tango.Models/src/test/java/com/twine/tango/models/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.twine.tango.models; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +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..8fc6f67db --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/build.gradle @@ -0,0 +1,65 @@ +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" + + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } +} + +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' + + compile globalDependencies.protobuf + compile globalDependencies.logging + compile project(path: ':Tango.Core') +} + +task createPMR(type: Exec, description: 'Update all PMR files') { + + commandLine '..\\Visual Studio\\Build\\Debug\\proto-tc.exe', '-i', '..\\..\\PMR\\Messages', '-o', 'src\\main\\java', '-l', 'Java' + + ext.output = { + return standardOutput.toString() + } +} + +task reflectPMR() << { + def file = new File("$projectDir/src\\main\\res\\raw\\packages.txt") + + file.newWriter().withWriter { w -> + def pmrDir = new File("Tango.PMR\\src\\main\\java\\com\\twine\\tango\\pmr") + + pmrDir.eachDirRecurse { dir -> + w << dir.name + "\r\n" + } + } +} + +tasks.withType(JavaCompile) { + compileTask -> compileTask.dependsOn createPMR +} + +tasks.withType(JavaCompile) { + compileTask -> compileTask.dependsOn reflectPMR +} diff --git a/Software/Android_Studio/Tango.PMR/proguard-rules.pro b/Software/Android_Studio/Tango.PMR/proguard-rules.pro new file mode 100644 index 000000000..a0eef131a --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/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.PMR/src/androidTest/java/com/twine/tango/pmr/ExampleInstrumentedTest.java b/Software/Android_Studio/Tango.PMR/src/androidTest/java/com/twine/tango/pmr/ExampleInstrumentedTest.java new file mode 100644 index 000000000..9b208f17f --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/androidTest/java/com/twine/tango/pmr/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.twine.tango.pmr; + +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 Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.twine.tango.pmr.test", appContext.getPackageName()); + } +} diff --git a/Software/Android_Studio/Tango.PMR/src/main/AndroidManifest.xml b/Software/Android_Studio/Tango.PMR/src/main/AndroidManifest.xml new file mode 100644 index 000000000..aa1bf8a98 --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/MessageFactory.java b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/MessageFactory.java new file mode 100644 index 000000000..04acf5248 --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/MessageFactory.java @@ -0,0 +1,163 @@ +package com.twine.tango.pmr; + +import android.content.Context; + +import com.elvishew.xlog.XLog; +import com.google.protobuf.InvalidProtocolBufferException; +import com.google.protobuf.Parser; +import com.twine.tango.core.Reflections; +import com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer; +import com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * Contains helper method for generating {@link TangoMessage} messages. + */ +public class MessageFactory +{ + private static boolean initialized; + private static List packages; + private static Map knownClasses; + + + public static void init() + { + if (!initialized) + { + packages = new ArrayList<>(); + knownClasses = new HashMap<>(); + + List names = Reflections.getReflectionListFromResource(R.raw.packages); + + for (String name : names) + { + packages.add("com.twine.tango.pmr." + name); + } + + initialized = true; + } + } + + private static Class getClassForName(String name) + { + init(); + + Class knownClass = knownClasses.get(name); + if (knownClass != null) return knownClass; + + for (String p : packages) + { + try + { + Class cls = Class.forName(p + "." + name + "OuterClass$" + name); + knownClasses.put(name, cls); + return cls; + } catch (ClassNotFoundException e) + { + e.printStackTrace(); + } + } + + + XLog.e("Could not find PMR message class for " + name, new ClassNotFoundException()); + return null; + } + + /** + * Creates a new {@link TangoMessage} message wrapper. + * + * @param typeName The inner message class. + * @param Type of message. + * @return New instance of {@link TangoMessage}. + */ + public static TangoMessage createTangoMessage(Class typeName) + { + try + { + String a = typeName.getSimpleName(); + + Method newBuilder = typeName.getMethod("newBuilder"); + Object builder = newBuilder.invoke(null); + + Method build = builder.getClass().getMethod("build"); + Object instance = build.invoke(builder); + + TangoMessage tangoMessage = new TangoMessage<>((T) instance, MessageType.valueOf(typeName.getSimpleName())); + return tangoMessage; + } catch (Exception e) + { + e.printStackTrace(); + return null; + } + } + + public static TangoMessage createTangoMessage(Class typeName, T message) + { + TangoMessage tangoMessage = createTangoMessage(typeName); + tangoMessage.setMessage(message); + return tangoMessage; + } + + public static TangoMessage createTangoMessage(Class typeName, String token) + { + TangoMessage tangoMessage = createTangoMessage(typeName); + tangoMessage.getContainer().setToken(token); + return tangoMessage; + } + + /** + * Parses a {@link MessageContainer} byte array to a new {@link TangoMessage}. + * + * @param data MessageContainer bytes. + * @param Type of expected inner message. + * @return New instance of {@link TangoMessage}. + */ + @SuppressWarnings("unchecked") + public static TangoMessage parseTangoMessage(byte[] data) + { + try + { + MessageContainer container = MessageContainer.parseFrom(data); + + Class type = getClassForName(container.getType().toString()); + Parser parser = (Parser) type.getMethod("parser").invoke(null); + TangoMessage tangoMessage = new TangoMessage<>(parser.parseFrom(container.getData()), container.getType()); + return tangoMessage; + } catch (Exception e) + { + e.printStackTrace(); + return null; + } + } + + public static T parseMessageFromContainer(MessageContainer container) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, InvalidProtocolBufferException + { + + Class type = getClassForName(container.getType().toString()); + Parser parser = (Parser) type.getMethod("parser").invoke(null); + return (T) parser.parseFrom(container.getData()); + } + + public static com.google.protobuf.GeneratedMessageV3 parseMessageFromContainerAgnostic(MessageContainer container) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, InvalidProtocolBufferException + { + Class type = getClassForName(container.getType().toString()); + Parser parser = (Parser) type.getMethod("parser").invoke(null); + return (com.google.protobuf.GeneratedMessageV3) parser.parseFrom(container.getData()); + } + + public static MessageContainer parseContainer(byte[] data) throws InvalidProtocolBufferException + { + MessageContainer container = MessageContainer.parseFrom(data); + return container; + } + +} diff --git a/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/TangoMessage.java b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/TangoMessage.java new file mode 100644 index 000000000..48422575d --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/TangoMessage.java @@ -0,0 +1,91 @@ +package com.twine.tango.pmr; + +import com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer; +import com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType; + +import java.lang.reflect.ParameterizedType; +import java.lang.reflect.Type; +import java.util.UUID; + +/** + * Generic Tango message wrapper. + * @param + */ +public class TangoMessage { + + private T message; + private MessageType type; + private MessageContainer.Builder container; + + /** + * Initialize a new instance of Tango message. + * @param message The message. + * @param type The message type. + */ + public TangoMessage(T message, MessageType type) { + this.message = message; + this.type = type; + + this.container = MessageContainer.newBuilder() + .setToken(UUID.randomUUID().toString()) + .setType(type); + } + + /** + * Gets the inner message. + * @return The inner message. + */ + public T getMessage() { + return message; + } + + /** + * Sets the inner message. + * @param message The inner message. + */ + public void setMessage(T message) { + this.message = message; + } + + /** + * Gets the inner message type. + * @return The inner message type. + */ + public MessageType getType() { + return type; + } + + /** + * Sets the inner message type. + * @param type Inner message type. + */ + public void setType(MessageType type) { + this.type = type; + } + + /** + * Gets the message container. + * @return the message container. + */ + public MessageContainer.Builder getContainer() { + return container; + } + + /** + * Sets the message container. + * @param container + */ + public void setContainer(MessageContainer.Builder container) { + this.container = container; + } + + /** + * Serializes the container and message to byte array. + * @return Container and message byte array. + */ + public byte[] toBytes() + { + container.setData(message.toByteString()); + return container.build().toByteArray(); + } +} diff --git a/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/common/MessageContainerOuterClass.java b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/common/MessageContainerOuterClass.java new file mode 100644 index 000000000..c4919dae3 --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/common/MessageContainerOuterClass.java @@ -0,0 +1,869 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: MessageContainer.proto + +package com.twine.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 { + + /** + * .Tango.PMR.Common.MessageType Type = 1; + */ + int getTypeValue(); + /** + * .Tango.PMR.Common.MessageType Type = 1; + */ + com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType getType(); + + /** + * string Token = 2; + */ + java.lang.String getToken(); + /** + * string Token = 2; + */ + com.google.protobuf.ByteString + getTokenBytes(); + + /** + * bool Continuous = 3; + */ + boolean getContinuous(); + + /** + * bool Completed = 4; + */ + boolean getCompleted(); + + /** + * bytes Data = 5; + */ + 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; + token_ = ""; + continuous_ = false; + completed_ = false; + 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: { + java.lang.String s = input.readStringRequireUtf8(); + + token_ = s; + break; + } + case 24: { + + continuous_ = input.readBool(); + break; + } + case 32: { + + completed_ = input.readBool(); + break; + } + case 42: { + + 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 com.twine.tango.pmr.common.MessageContainerOuterClass.internal_static_Tango_PMR_Common_MessageContainer_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.common.MessageContainerOuterClass.internal_static_Tango_PMR_Common_MessageContainer_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer.class, com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer.Builder.class); + } + + public static final int TYPE_FIELD_NUMBER = 1; + private int type_; + /** + * .Tango.PMR.Common.MessageType Type = 1; + */ + public int getTypeValue() { + return type_; + } + /** + * .Tango.PMR.Common.MessageType Type = 1; + */ + public com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType getType() { + com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType result = com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType.valueOf(type_); + return result == null ? com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType.UNRECOGNIZED : result; + } + + public static final int TOKEN_FIELD_NUMBER = 2; + private volatile java.lang.Object token_; + /** + * string Token = 2; + */ + public java.lang.String getToken() { + java.lang.Object ref = token_; + 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(); + token_ = s; + return s; + } + } + /** + * string Token = 2; + */ + public com.google.protobuf.ByteString + getTokenBytes() { + java.lang.Object ref = token_; + if (ref instanceof java.lang.String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + token_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + + public static final int CONTINUOUS_FIELD_NUMBER = 3; + private boolean continuous_; + /** + * bool Continuous = 3; + */ + public boolean getContinuous() { + return continuous_; + } + + public static final int COMPLETED_FIELD_NUMBER = 4; + private boolean completed_; + /** + * bool Completed = 4; + */ + public boolean getCompleted() { + return completed_; + } + + public static final int DATA_FIELD_NUMBER = 5; + private com.google.protobuf.ByteString data_; + /** + * bytes Data = 5; + */ + 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_ != com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType.RGB.getNumber()) { + output.writeEnum(1, type_); + } + if (!getTokenBytes().isEmpty()) { + com.google.protobuf.GeneratedMessageV3.writeString(output, 2, token_); + } + if (continuous_ != false) { + output.writeBool(3, continuous_); + } + if (completed_ != false) { + output.writeBool(4, completed_); + } + if (!data_.isEmpty()) { + output.writeBytes(5, data_); + } + unknownFields.writeTo(output); + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (type_ != com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType.RGB.getNumber()) { + size += com.google.protobuf.CodedOutputStream + .computeEnumSize(1, type_); + } + if (!getTokenBytes().isEmpty()) { + size += com.google.protobuf.GeneratedMessageV3.computeStringSize(2, token_); + } + if (continuous_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(3, continuous_); + } + if (completed_ != false) { + size += com.google.protobuf.CodedOutputStream + .computeBoolSize(4, completed_); + } + if (!data_.isEmpty()) { + size += com.google.protobuf.CodedOutputStream + .computeBytesSize(5, 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 com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer)) { + return super.equals(obj); + } + com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer other = (com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer) obj; + + boolean result = true; + result = result && type_ == other.type_; + result = result && getToken() + .equals(other.getToken()); + result = result && (getContinuous() + == other.getContinuous()); + result = result && (getCompleted() + == other.getCompleted()); + 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) + TOKEN_FIELD_NUMBER; + hash = (53 * hash) + getToken().hashCode(); + hash = (37 * hash) + CONTINUOUS_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getContinuous()); + hash = (37 * hash) + COMPLETED_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashBoolean( + getCompleted()); + hash = (37 * hash) + DATA_FIELD_NUMBER; + hash = (53 * hash) + getData().hashCode(); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.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 com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static com.twine.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 com.twine.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 com.twine.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(com.twine.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 implements + // @@protoc_insertion_point(builder_implements:Tango.PMR.Common.MessageContainer) + com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainerOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.twine.tango.pmr.common.MessageContainerOuterClass.internal_static_Tango_PMR_Common_MessageContainer_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.common.MessageContainerOuterClass.internal_static_Tango_PMR_Common_MessageContainer_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer.class, com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer.Builder.class); + } + + // Construct using com.twine.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; + + token_ = ""; + + continuous_ = false; + + completed_ = false; + + data_ = com.google.protobuf.ByteString.EMPTY; + + return this; + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.twine.tango.pmr.common.MessageContainerOuterClass.internal_static_Tango_PMR_Common_MessageContainer_descriptor; + } + + public com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer getDefaultInstanceForType() { + return com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer.getDefaultInstance(); + } + + public com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer build() { + com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer buildPartial() { + com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer result = new com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer(this); + result.type_ = type_; + result.token_ = token_; + result.continuous_ = continuous_; + result.completed_ = completed_; + 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 com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer) { + return mergeFrom((com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer other) { + if (other == com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer.getDefaultInstance()) return this; + if (other.type_ != 0) { + setTypeValue(other.getTypeValue()); + } + if (!other.getToken().isEmpty()) { + token_ = other.token_; + onChanged(); + } + if (other.getContinuous() != false) { + setContinuous(other.getContinuous()); + } + if (other.getCompleted() != false) { + setCompleted(other.getCompleted()); + } + 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 { + com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int type_ = 0; + /** + * .Tango.PMR.Common.MessageType Type = 1; + */ + public int getTypeValue() { + return type_; + } + /** + * .Tango.PMR.Common.MessageType Type = 1; + */ + public Builder setTypeValue(int value) { + type_ = value; + onChanged(); + return this; + } + /** + * .Tango.PMR.Common.MessageType Type = 1; + */ + public com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType getType() { + com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType result = com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType.valueOf(type_); + return result == null ? com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType.UNRECOGNIZED : result; + } + /** + * .Tango.PMR.Common.MessageType Type = 1; + */ + public Builder setType(com.twine.tango.pmr.common.MessageTypeOuterClass.MessageType value) { + if (value == null) { + throw new NullPointerException(); + } + + type_ = value.getNumber(); + onChanged(); + return this; + } + /** + * .Tango.PMR.Common.MessageType Type = 1; + */ + public Builder clearType() { + + type_ = 0; + onChanged(); + return this; + } + + private java.lang.Object token_ = ""; + /** + * string Token = 2; + */ + public java.lang.String getToken() { + java.lang.Object ref = token_; + if (!(ref instanceof java.lang.String)) { + com.google.protobuf.ByteString bs = + (com.google.protobuf.ByteString) ref; + java.lang.String s = bs.toStringUtf8(); + token_ = s; + return s; + } else { + return (java.lang.String) ref; + } + } + /** + * string Token = 2; + */ + public com.google.protobuf.ByteString + getTokenBytes() { + java.lang.Object ref = token_; + if (ref instanceof String) { + com.google.protobuf.ByteString b = + com.google.protobuf.ByteString.copyFromUtf8( + (java.lang.String) ref); + token_ = b; + return b; + } else { + return (com.google.protobuf.ByteString) ref; + } + } + /** + * string Token = 2; + */ + public Builder setToken( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + token_ = value; + onChanged(); + return this; + } + /** + * string Token = 2; + */ + public Builder clearToken() { + + token_ = getDefaultInstance().getToken(); + onChanged(); + return this; + } + /** + * string Token = 2; + */ + public Builder setTokenBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + token_ = value; + onChanged(); + return this; + } + + private boolean continuous_ ; + /** + * bool Continuous = 3; + */ + public boolean getContinuous() { + return continuous_; + } + /** + * bool Continuous = 3; + */ + public Builder setContinuous(boolean value) { + + continuous_ = value; + onChanged(); + return this; + } + /** + * bool Continuous = 3; + */ + public Builder clearContinuous() { + + continuous_ = false; + onChanged(); + return this; + } + + private boolean completed_ ; + /** + * bool Completed = 4; + */ + public boolean getCompleted() { + return completed_; + } + /** + * bool Completed = 4; + */ + public Builder setCompleted(boolean value) { + + completed_ = value; + onChanged(); + return this; + } + /** + * bool Completed = 4; + */ + public Builder clearCompleted() { + + completed_ = false; + onChanged(); + return this; + } + + private com.google.protobuf.ByteString data_ = com.google.protobuf.ByteString.EMPTY; + /** + * bytes Data = 5; + */ + public com.google.protobuf.ByteString getData() { + return data_; + } + /** + * bytes Data = 5; + */ + public Builder setData(com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + + data_ = value; + onChanged(); + return this; + } + /** + * bytes Data = 5; + */ + 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 com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer(); + } + + public static com.twine.tango.pmr.common.MessageContainerOuterClass.MessageContainer getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + 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 parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.twine.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\"\203\001\n\020MessageContain" + + "er\022+\n\004Type\030\001 \001(\0162\035.Tango.PMR.Common.Mess" + + "ageType\022\r\n\005Token\030\002 \001(\t\022\022\n\nContinuous\030\003 \001" + + "(\010\022\021\n\tCompleted\030\004 \001(\010\022\014\n\004Data\030\005 \001(\014B\034\n\032c" + + "om.twine.tango.pmr.commonb\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[] { + com.twine.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", "Token", "Continuous", "Completed", "Data", }); + com.twine.tango.pmr.common.MessageTypeOuterClass.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/common/MessageTypeOuterClass.java b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/common/MessageTypeOuterClass.java new file mode 100644 index 000000000..45185ab6d --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/common/MessageTypeOuterClass.java @@ -0,0 +1,191 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: MessageType.proto + +package com.twine.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 { + /** + * RGB = 0; + */ + RGB(0), + /** + * Job = 1; + */ + Job(1), + /** + * Segment = 2; + */ + Segment(2), + /** + * CalculateRequest = 3; + */ + CalculateRequest(3), + /** + * CalculateResponse = 4; + */ + CalculateResponse(4), + /** + * ProgressRequest = 5; + */ + ProgressRequest(5), + /** + * ProgressResponse = 6; + */ + ProgressResponse(6), + UNRECOGNIZED(-1), + ; + + /** + * RGB = 0; + */ + public static final int RGB_VALUE = 0; + /** + * Job = 1; + */ + public static final int Job_VALUE = 1; + /** + * Segment = 2; + */ + public static final int Segment_VALUE = 2; + /** + * CalculateRequest = 3; + */ + public static final int CalculateRequest_VALUE = 3; + /** + * CalculateResponse = 4; + */ + public static final int CalculateResponse_VALUE = 4; + /** + * ProgressRequest = 5; + */ + public static final int ProgressRequest_VALUE = 5; + /** + * ProgressResponse = 6; + */ + public static final int ProgressResponse_VALUE = 6; + + + 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; + case 3: return CalculateRequest; + case 4: return CalculateResponse; + case 5: return ProgressRequest; + case 6: return ProgressResponse; + default: return null; + } + } + + public static com.google.protobuf.Internal.EnumLiteMap + internalGetValueMap() { + return internalValueMap; + } + private static final com.google.protobuf.Internal.EnumLiteMap< + MessageType> internalValueMap = + new com.google.protobuf.Internal.EnumLiteMap() { + 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 com.twine.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*\204\001" + + "\n\013MessageType\022\007\n\003RGB\020\000\022\007\n\003Job\020\001\022\013\n\007Segme" + + "nt\020\002\022\024\n\020CalculateRequest\020\003\022\025\n\021CalculateR" + + "esponse\020\004\022\023\n\017ProgressRequest\020\005\022\024\n\020Progre" + + "ssResponse\020\006B\034\n\032com.twine.tango.pmr.comm" + + "onb\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/com/twine/tango/pmr/common/RGBOuterClass.java b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/common/RGBOuterClass.java new file mode 100644 index 000000000..4e751dd48 --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/common/RGBOuterClass.java @@ -0,0 +1,630 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: RGB.proto + +package com.twine.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 { + + /** + * int32 R = 1; + */ + int getR(); + + /** + * int32 G = 2; + */ + int getG(); + + /** + * int32 B = 3; + */ + 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 com.twine.tango.pmr.common.RGBOuterClass.internal_static_Tango_PMR_Common_RGB_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.common.RGBOuterClass.internal_static_Tango_PMR_Common_RGB_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.common.RGBOuterClass.RGB.class, com.twine.tango.pmr.common.RGBOuterClass.RGB.Builder.class); + } + + public static final int R_FIELD_NUMBER = 1; + private int r_; + /** + * int32 R = 1; + */ + public int getR() { + return r_; + } + + public static final int G_FIELD_NUMBER = 2; + private int g_; + /** + * int32 G = 2; + */ + public int getG() { + return g_; + } + + public static final int B_FIELD_NUMBER = 3; + private int b_; + /** + * int32 B = 3; + */ + 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 com.twine.tango.pmr.common.RGBOuterClass.RGB)) { + return super.equals(obj); + } + com.twine.tango.pmr.common.RGBOuterClass.RGB other = (com.twine.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 com.twine.tango.pmr.common.RGBOuterClass.RGB parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.common.RGBOuterClass.RGB parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.common.RGBOuterClass.RGB parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.common.RGBOuterClass.RGB parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.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 com.twine.tango.pmr.common.RGBOuterClass.RGB parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static com.twine.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 com.twine.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 com.twine.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(com.twine.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 implements + // @@protoc_insertion_point(builder_implements:Tango.PMR.Common.RGB) + com.twine.tango.pmr.common.RGBOuterClass.RGBOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.twine.tango.pmr.common.RGBOuterClass.internal_static_Tango_PMR_Common_RGB_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.common.RGBOuterClass.internal_static_Tango_PMR_Common_RGB_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.common.RGBOuterClass.RGB.class, com.twine.tango.pmr.common.RGBOuterClass.RGB.Builder.class); + } + + // Construct using com.twine.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 com.twine.tango.pmr.common.RGBOuterClass.internal_static_Tango_PMR_Common_RGB_descriptor; + } + + public com.twine.tango.pmr.common.RGBOuterClass.RGB getDefaultInstanceForType() { + return com.twine.tango.pmr.common.RGBOuterClass.RGB.getDefaultInstance(); + } + + public com.twine.tango.pmr.common.RGBOuterClass.RGB build() { + com.twine.tango.pmr.common.RGBOuterClass.RGB result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.twine.tango.pmr.common.RGBOuterClass.RGB buildPartial() { + com.twine.tango.pmr.common.RGBOuterClass.RGB result = new com.twine.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 com.twine.tango.pmr.common.RGBOuterClass.RGB) { + return mergeFrom((com.twine.tango.pmr.common.RGBOuterClass.RGB)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.twine.tango.pmr.common.RGBOuterClass.RGB other) { + if (other == com.twine.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 { + com.twine.tango.pmr.common.RGBOuterClass.RGB parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.twine.tango.pmr.common.RGBOuterClass.RGB) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private int r_ ; + /** + * int32 R = 1; + */ + public int getR() { + return r_; + } + /** + * int32 R = 1; + */ + public Builder setR(int value) { + + r_ = value; + onChanged(); + return this; + } + /** + * int32 R = 1; + */ + public Builder clearR() { + + r_ = 0; + onChanged(); + return this; + } + + private int g_ ; + /** + * int32 G = 2; + */ + public int getG() { + return g_; + } + /** + * int32 G = 2; + */ + public Builder setG(int value) { + + g_ = value; + onChanged(); + return this; + } + /** + * int32 G = 2; + */ + public Builder clearG() { + + g_ = 0; + onChanged(); + return this; + } + + private int b_ ; + /** + * int32 B = 3; + */ + public int getB() { + return b_; + } + /** + * int32 B = 3; + */ + public Builder setB(int value) { + + b_ = value; + onChanged(); + return this; + } + /** + * int32 B = 3; + */ + 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 com.twine.tango.pmr.common.RGBOuterClass.RGB DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.twine.tango.pmr.common.RGBOuterClass.RGB(); + } + + public static com.twine.tango.pmr.common.RGBOuterClass.RGB getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + 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 parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.twine.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\034\n\032com.twi" + + "ne.tango.pmr.commonb\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/com/twine/tango/pmr/jobs/JobOuterClass.java b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/jobs/JobOuterClass.java new file mode 100644 index 000000000..79c17d6a8 --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/jobs/JobOuterClass.java @@ -0,0 +1,953 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: Job.proto + +package com.twine.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 { + + /** + * string Name = 1; + */ + java.lang.String getName(); + /** + * string Name = 1; + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + java.util.List + getSegmentsList(); + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment getSegments(int index); + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + int getSegmentsCount(); + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + java.util.List + getSegmentsOrBuilderList(); + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + com.twine.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(); + mutable_bitField0_ |= 0x00000002; + } + segments_.add( + input.readMessage(com.twine.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 com.twine.tango.pmr.jobs.JobOuterClass.internal_static_Tango_PMR_Jobs_Job_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.jobs.JobOuterClass.internal_static_Tango_PMR_Jobs_Job_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.jobs.JobOuterClass.Job.class, com.twine.tango.pmr.jobs.JobOuterClass.Job.Builder.class); + } + + private int bitField0_; + public static final int NAME_FIELD_NUMBER = 1; + private volatile java.lang.Object name_; + /** + * string Name = 1; + */ + 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; + } + } + /** + * string Name = 1; + */ + 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 segments_; + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public java.util.List getSegmentsList() { + return segments_; + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public java.util.List + getSegmentsOrBuilderList() { + return segments_; + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public int getSegmentsCount() { + return segments_.size(); + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public com.twine.tango.pmr.jobs.SegmentOuterClass.Segment getSegments(int index) { + return segments_.get(index); + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public com.twine.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 com.twine.tango.pmr.jobs.JobOuterClass.Job)) { + return super.equals(obj); + } + com.twine.tango.pmr.jobs.JobOuterClass.Job other = (com.twine.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 com.twine.tango.pmr.jobs.JobOuterClass.Job parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.jobs.JobOuterClass.Job parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.jobs.JobOuterClass.Job parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.jobs.JobOuterClass.Job parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.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 com.twine.tango.pmr.jobs.JobOuterClass.Job parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static com.twine.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 com.twine.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 com.twine.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(com.twine.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 implements + // @@protoc_insertion_point(builder_implements:Tango.PMR.Jobs.Job) + com.twine.tango.pmr.jobs.JobOuterClass.JobOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.twine.tango.pmr.jobs.JobOuterClass.internal_static_Tango_PMR_Jobs_Job_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.jobs.JobOuterClass.internal_static_Tango_PMR_Jobs_Job_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.jobs.JobOuterClass.Job.class, com.twine.tango.pmr.jobs.JobOuterClass.Job.Builder.class); + } + + // Construct using com.twine.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 com.twine.tango.pmr.jobs.JobOuterClass.internal_static_Tango_PMR_Jobs_Job_descriptor; + } + + public com.twine.tango.pmr.jobs.JobOuterClass.Job getDefaultInstanceForType() { + return com.twine.tango.pmr.jobs.JobOuterClass.Job.getDefaultInstance(); + } + + public com.twine.tango.pmr.jobs.JobOuterClass.Job build() { + com.twine.tango.pmr.jobs.JobOuterClass.Job result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.twine.tango.pmr.jobs.JobOuterClass.Job buildPartial() { + com.twine.tango.pmr.jobs.JobOuterClass.Job result = new com.twine.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 com.twine.tango.pmr.jobs.JobOuterClass.Job) { + return mergeFrom((com.twine.tango.pmr.jobs.JobOuterClass.Job)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.twine.tango.pmr.jobs.JobOuterClass.Job other) { + if (other == com.twine.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 { + com.twine.tango.pmr.jobs.JobOuterClass.Job parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.twine.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_ = ""; + /** + * string Name = 1; + */ + 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; + } + } + /** + * string Name = 1; + */ + 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; + } + } + /** + * string Name = 1; + */ + public Builder setName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + name_ = value; + onChanged(); + return this; + } + /** + * string Name = 1; + */ + public Builder clearName() { + + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * string Name = 1; + */ + 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 segments_ = + java.util.Collections.emptyList(); + private void ensureSegmentsIsMutable() { + if (!((bitField0_ & 0x00000002) == 0x00000002)) { + segments_ = new java.util.ArrayList(segments_); + bitField0_ |= 0x00000002; + } + } + + private com.google.protobuf.RepeatedFieldBuilderV3< + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment, com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.Builder, com.twine.tango.pmr.jobs.SegmentOuterClass.SegmentOrBuilder> segmentsBuilder_; + + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public java.util.List getSegmentsList() { + if (segmentsBuilder_ == null) { + return java.util.Collections.unmodifiableList(segments_); + } else { + return segmentsBuilder_.getMessageList(); + } + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public int getSegmentsCount() { + if (segmentsBuilder_ == null) { + return segments_.size(); + } else { + return segmentsBuilder_.getCount(); + } + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public com.twine.tango.pmr.jobs.SegmentOuterClass.Segment getSegments(int index) { + if (segmentsBuilder_ == null) { + return segments_.get(index); + } else { + return segmentsBuilder_.getMessage(index); + } + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public Builder setSegments( + int index, com.twine.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; + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public Builder setSegments( + int index, com.twine.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; + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public Builder addSegments(com.twine.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; + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public Builder addSegments( + int index, com.twine.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; + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public Builder addSegments( + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.Builder builderForValue) { + if (segmentsBuilder_ == null) { + ensureSegmentsIsMutable(); + segments_.add(builderForValue.build()); + onChanged(); + } else { + segmentsBuilder_.addMessage(builderForValue.build()); + } + return this; + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public Builder addSegments( + int index, com.twine.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; + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public Builder addAllSegments( + java.lang.Iterable values) { + if (segmentsBuilder_ == null) { + ensureSegmentsIsMutable(); + com.google.protobuf.AbstractMessageLite.Builder.addAll( + values, segments_); + onChanged(); + } else { + segmentsBuilder_.addAllMessages(values); + } + return this; + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public Builder clearSegments() { + if (segmentsBuilder_ == null) { + segments_ = java.util.Collections.emptyList(); + bitField0_ = (bitField0_ & ~0x00000002); + onChanged(); + } else { + segmentsBuilder_.clear(); + } + return this; + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public Builder removeSegments(int index) { + if (segmentsBuilder_ == null) { + ensureSegmentsIsMutable(); + segments_.remove(index); + onChanged(); + } else { + segmentsBuilder_.remove(index); + } + return this; + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.Builder getSegmentsBuilder( + int index) { + return getSegmentsFieldBuilder().getBuilder(index); + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public com.twine.tango.pmr.jobs.SegmentOuterClass.SegmentOrBuilder getSegmentsOrBuilder( + int index) { + if (segmentsBuilder_ == null) { + return segments_.get(index); } else { + return segmentsBuilder_.getMessageOrBuilder(index); + } + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public java.util.List + getSegmentsOrBuilderList() { + if (segmentsBuilder_ != null) { + return segmentsBuilder_.getMessageOrBuilderList(); + } else { + return java.util.Collections.unmodifiableList(segments_); + } + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.Builder addSegmentsBuilder() { + return getSegmentsFieldBuilder().addBuilder( + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.getDefaultInstance()); + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.Builder addSegmentsBuilder( + int index) { + return getSegmentsFieldBuilder().addBuilder( + index, com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.getDefaultInstance()); + } + /** + * repeated .Tango.PMR.Jobs.Segment Segments = 2; + */ + public java.util.List + getSegmentsBuilderList() { + return getSegmentsFieldBuilder().getBuilderList(); + } + private com.google.protobuf.RepeatedFieldBuilderV3< + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment, com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.Builder, com.twine.tango.pmr.jobs.SegmentOuterClass.SegmentOrBuilder> + getSegmentsFieldBuilder() { + if (segmentsBuilder_ == null) { + segmentsBuilder_ = new com.google.protobuf.RepeatedFieldBuilderV3< + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment, com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.Builder, com.twine.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 com.twine.tango.pmr.jobs.JobOuterClass.Job DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.twine.tango.pmr.jobs.JobOuterClass.Job(); + } + + public static com.twine.tango.pmr.jobs.JobOuterClass.Job getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + 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 parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.twine.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\032\n\030com.twine." + + "tango.pmr.jobsb\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[] { + com.twine.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", }); + com.twine.tango.pmr.jobs.SegmentOuterClass.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/jobs/SegmentOuterClass.java b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/jobs/SegmentOuterClass.java new file mode 100644 index 000000000..eb19e884e --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/jobs/SegmentOuterClass.java @@ -0,0 +1,838 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: Segment.proto + +package com.twine.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 { + + /** + * string Name = 1; + */ + java.lang.String getName(); + /** + * string Name = 1; + */ + com.google.protobuf.ByteString + getNameBytes(); + + /** + * int32 Length = 2; + */ + int getLength(); + + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + boolean hasColor(); + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + com.twine.tango.pmr.common.RGBOuterClass.RGB getColor(); + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + com.twine.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: { + com.twine.tango.pmr.common.RGBOuterClass.RGB.Builder subBuilder = null; + if (color_ != null) { + subBuilder = color_.toBuilder(); + } + color_ = input.readMessage(com.twine.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 com.twine.tango.pmr.jobs.SegmentOuterClass.internal_static_Tango_PMR_Jobs_Segment_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.jobs.SegmentOuterClass.internal_static_Tango_PMR_Jobs_Segment_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.class, com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.Builder.class); + } + + public static final int NAME_FIELD_NUMBER = 1; + private volatile java.lang.Object name_; + /** + * string Name = 1; + */ + 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; + } + } + /** + * string Name = 1; + */ + 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_; + /** + * int32 Length = 2; + */ + public int getLength() { + return length_; + } + + public static final int COLOR_FIELD_NUMBER = 3; + private com.twine.tango.pmr.common.RGBOuterClass.RGB color_; + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + public boolean hasColor() { + return color_ != null; + } + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + public com.twine.tango.pmr.common.RGBOuterClass.RGB getColor() { + return color_ == null ? com.twine.tango.pmr.common.RGBOuterClass.RGB.getDefaultInstance() : color_; + } + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + public com.twine.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 com.twine.tango.pmr.jobs.SegmentOuterClass.Segment)) { + return super.equals(obj); + } + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment other = (com.twine.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 com.twine.tango.pmr.jobs.SegmentOuterClass.Segment parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.jobs.SegmentOuterClass.Segment parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.jobs.SegmentOuterClass.Segment parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.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 com.twine.tango.pmr.jobs.SegmentOuterClass.Segment parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.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 com.twine.tango.pmr.jobs.SegmentOuterClass.Segment parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static com.twine.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 com.twine.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 com.twine.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(com.twine.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 implements + // @@protoc_insertion_point(builder_implements:Tango.PMR.Jobs.Segment) + com.twine.tango.pmr.jobs.SegmentOuterClass.SegmentOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.twine.tango.pmr.jobs.SegmentOuterClass.internal_static_Tango_PMR_Jobs_Segment_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.jobs.SegmentOuterClass.internal_static_Tango_PMR_Jobs_Segment_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.class, com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.Builder.class); + } + + // Construct using com.twine.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 com.twine.tango.pmr.jobs.SegmentOuterClass.internal_static_Tango_PMR_Jobs_Segment_descriptor; + } + + public com.twine.tango.pmr.jobs.SegmentOuterClass.Segment getDefaultInstanceForType() { + return com.twine.tango.pmr.jobs.SegmentOuterClass.Segment.getDefaultInstance(); + } + + public com.twine.tango.pmr.jobs.SegmentOuterClass.Segment build() { + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.twine.tango.pmr.jobs.SegmentOuterClass.Segment buildPartial() { + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment result = new com.twine.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 com.twine.tango.pmr.jobs.SegmentOuterClass.Segment) { + return mergeFrom((com.twine.tango.pmr.jobs.SegmentOuterClass.Segment)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.twine.tango.pmr.jobs.SegmentOuterClass.Segment other) { + if (other == com.twine.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 { + com.twine.tango.pmr.jobs.SegmentOuterClass.Segment parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.twine.tango.pmr.jobs.SegmentOuterClass.Segment) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private java.lang.Object name_ = ""; + /** + * string Name = 1; + */ + 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; + } + } + /** + * string Name = 1; + */ + 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; + } + } + /** + * string Name = 1; + */ + public Builder setName( + java.lang.String value) { + if (value == null) { + throw new NullPointerException(); + } + + name_ = value; + onChanged(); + return this; + } + /** + * string Name = 1; + */ + public Builder clearName() { + + name_ = getDefaultInstance().getName(); + onChanged(); + return this; + } + /** + * string Name = 1; + */ + public Builder setNameBytes( + com.google.protobuf.ByteString value) { + if (value == null) { + throw new NullPointerException(); + } + checkByteStringIsUtf8(value); + + name_ = value; + onChanged(); + return this; + } + + private int length_ ; + /** + * int32 Length = 2; + */ + public int getLength() { + return length_; + } + /** + * int32 Length = 2; + */ + public Builder setLength(int value) { + + length_ = value; + onChanged(); + return this; + } + /** + * int32 Length = 2; + */ + public Builder clearLength() { + + length_ = 0; + onChanged(); + return this; + } + + private com.twine.tango.pmr.common.RGBOuterClass.RGB color_ = null; + private com.google.protobuf.SingleFieldBuilderV3< + com.twine.tango.pmr.common.RGBOuterClass.RGB, com.twine.tango.pmr.common.RGBOuterClass.RGB.Builder, com.twine.tango.pmr.common.RGBOuterClass.RGBOrBuilder> colorBuilder_; + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + public boolean hasColor() { + return colorBuilder_ != null || color_ != null; + } + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + public com.twine.tango.pmr.common.RGBOuterClass.RGB getColor() { + if (colorBuilder_ == null) { + return color_ == null ? com.twine.tango.pmr.common.RGBOuterClass.RGB.getDefaultInstance() : color_; + } else { + return colorBuilder_.getMessage(); + } + } + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + public Builder setColor(com.twine.tango.pmr.common.RGBOuterClass.RGB value) { + if (colorBuilder_ == null) { + if (value == null) { + throw new NullPointerException(); + } + color_ = value; + onChanged(); + } else { + colorBuilder_.setMessage(value); + } + + return this; + } + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + public Builder setColor( + com.twine.tango.pmr.common.RGBOuterClass.RGB.Builder builderForValue) { + if (colorBuilder_ == null) { + color_ = builderForValue.build(); + onChanged(); + } else { + colorBuilder_.setMessage(builderForValue.build()); + } + + return this; + } + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + public Builder mergeColor(com.twine.tango.pmr.common.RGBOuterClass.RGB value) { + if (colorBuilder_ == null) { + if (color_ != null) { + color_ = + com.twine.tango.pmr.common.RGBOuterClass.RGB.newBuilder(color_).mergeFrom(value).buildPartial(); + } else { + color_ = value; + } + onChanged(); + } else { + colorBuilder_.mergeFrom(value); + } + + return this; + } + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + public Builder clearColor() { + if (colorBuilder_ == null) { + color_ = null; + onChanged(); + } else { + color_ = null; + colorBuilder_ = null; + } + + return this; + } + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + public com.twine.tango.pmr.common.RGBOuterClass.RGB.Builder getColorBuilder() { + + onChanged(); + return getColorFieldBuilder().getBuilder(); + } + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + public com.twine.tango.pmr.common.RGBOuterClass.RGBOrBuilder getColorOrBuilder() { + if (colorBuilder_ != null) { + return colorBuilder_.getMessageOrBuilder(); + } else { + return color_ == null ? + com.twine.tango.pmr.common.RGBOuterClass.RGB.getDefaultInstance() : color_; + } + } + /** + * .Tango.PMR.Common.RGB Color = 3; + */ + private com.google.protobuf.SingleFieldBuilderV3< + com.twine.tango.pmr.common.RGBOuterClass.RGB, com.twine.tango.pmr.common.RGBOuterClass.RGB.Builder, com.twine.tango.pmr.common.RGBOuterClass.RGBOrBuilder> + getColorFieldBuilder() { + if (colorBuilder_ == null) { + colorBuilder_ = new com.google.protobuf.SingleFieldBuilderV3< + com.twine.tango.pmr.common.RGBOuterClass.RGB, com.twine.tango.pmr.common.RGBOuterClass.RGB.Builder, com.twine.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 com.twine.tango.pmr.jobs.SegmentOuterClass.Segment DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.twine.tango.pmr.jobs.SegmentOuterClass.Segment(); + } + + public static com.twine.tango.pmr.jobs.SegmentOuterClass.Segment getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + 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 parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.twine.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\032\n\030com.twine.tango.pmr.jobsb\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[] { + com.twine.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", }); + com.twine.tango.pmr.common.RGBOuterClass.getDescriptor(); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/CalculateRequestOuterClass.java b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/CalculateRequestOuterClass.java new file mode 100644 index 000000000..09180939e --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/CalculateRequestOuterClass.java @@ -0,0 +1,573 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: CalculateRequest.proto + +package com.twine.tango.pmr.stubs; + +public final class CalculateRequestOuterClass { + private CalculateRequestOuterClass() {} + 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 CalculateRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:Tango.PMR.Stubs.CalculateRequest) + com.google.protobuf.MessageOrBuilder { + + /** + * double A = 1; + */ + double getA(); + + /** + * double B = 2; + */ + double getB(); + } + /** + * Protobuf type {@code Tango.PMR.Stubs.CalculateRequest} + */ + public static final class CalculateRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:Tango.PMR.Stubs.CalculateRequest) + CalculateRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use CalculateRequest.newBuilder() to construct. + private CalculateRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CalculateRequest() { + a_ = 0D; + b_ = 0D; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private CalculateRequest( + 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 9: { + + a_ = input.readDouble(); + break; + } + case 17: { + + b_ = input.readDouble(); + 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 com.twine.tango.pmr.stubs.CalculateRequestOuterClass.internal_static_Tango_PMR_Stubs_CalculateRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.stubs.CalculateRequestOuterClass.internal_static_Tango_PMR_Stubs_CalculateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest.class, com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest.Builder.class); + } + + public static final int A_FIELD_NUMBER = 1; + private double a_; + /** + * double A = 1; + */ + public double getA() { + return a_; + } + + public static final int B_FIELD_NUMBER = 2; + private double b_; + /** + * double B = 2; + */ + public double 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 (a_ != 0D) { + output.writeDouble(1, a_); + } + if (b_ != 0D) { + output.writeDouble(2, b_); + } + unknownFields.writeTo(output); + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (a_ != 0D) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, a_); + } + if (b_ != 0D) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(2, 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 com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest)) { + return super.equals(obj); + } + com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest other = (com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest) obj; + + boolean result = true; + result = result && ( + java.lang.Double.doubleToLongBits(getA()) + == java.lang.Double.doubleToLongBits( + other.getA())); + result = result && ( + java.lang.Double.doubleToLongBits(getB()) + == java.lang.Double.doubleToLongBits( + 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) + A_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getA())); + hash = (37 * hash) + B_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getB())); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest 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 com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest 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 com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest 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(com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest 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.Stubs.CalculateRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:Tango.PMR.Stubs.CalculateRequest) + com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.twine.tango.pmr.stubs.CalculateRequestOuterClass.internal_static_Tango_PMR_Stubs_CalculateRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.stubs.CalculateRequestOuterClass.internal_static_Tango_PMR_Stubs_CalculateRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest.class, com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest.Builder.class); + } + + // Construct using com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest.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(); + a_ = 0D; + + b_ = 0D; + + return this; + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.twine.tango.pmr.stubs.CalculateRequestOuterClass.internal_static_Tango_PMR_Stubs_CalculateRequest_descriptor; + } + + public com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest getDefaultInstanceForType() { + return com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest.getDefaultInstance(); + } + + public com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest build() { + com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest buildPartial() { + com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest result = new com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest(this); + result.a_ = a_; + 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 com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest) { + return mergeFrom((com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest other) { + if (other == com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest.getDefaultInstance()) return this; + if (other.getA() != 0D) { + setA(other.getA()); + } + if (other.getB() != 0D) { + 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 { + com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private double a_ ; + /** + * double A = 1; + */ + public double getA() { + return a_; + } + /** + * double A = 1; + */ + public Builder setA(double value) { + + a_ = value; + onChanged(); + return this; + } + /** + * double A = 1; + */ + public Builder clearA() { + + a_ = 0D; + onChanged(); + return this; + } + + private double b_ ; + /** + * double B = 2; + */ + public double getB() { + return b_; + } + /** + * double B = 2; + */ + public Builder setB(double value) { + + b_ = value; + onChanged(); + return this; + } + /** + * double B = 2; + */ + public Builder clearB() { + + b_ = 0D; + 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.Stubs.CalculateRequest) + } + + // @@protoc_insertion_point(class_scope:Tango.PMR.Stubs.CalculateRequest) + private static final com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest(); + } + + public static com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + public CalculateRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new CalculateRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_Tango_PMR_Stubs_CalculateRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_Tango_PMR_Stubs_CalculateRequest_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\026CalculateRequest.proto\022\017Tango.PMR.Stub" + + "s\"(\n\020CalculateRequest\022\t\n\001A\030\001 \001(\001\022\t\n\001B\030\002 " + + "\001(\001B\033\n\031com.twine.tango.pmr.stubsb\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_Stubs_CalculateRequest_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_Tango_PMR_Stubs_CalculateRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_Tango_PMR_Stubs_CalculateRequest_descriptor, + new java.lang.String[] { "A", "B", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/CalculateResponseOuterClass.java b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/CalculateResponseOuterClass.java new file mode 100644 index 000000000..b20ba95cd --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/CalculateResponseOuterClass.java @@ -0,0 +1,507 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: CalculateResponse.proto + +package com.twine.tango.pmr.stubs; + +public final class CalculateResponseOuterClass { + private CalculateResponseOuterClass() {} + 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 CalculateResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:Tango.PMR.Stubs.CalculateResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * double Sum = 1; + */ + double getSum(); + } + /** + * Protobuf type {@code Tango.PMR.Stubs.CalculateResponse} + */ + public static final class CalculateResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:Tango.PMR.Stubs.CalculateResponse) + CalculateResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use CalculateResponse.newBuilder() to construct. + private CalculateResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private CalculateResponse() { + sum_ = 0D; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private CalculateResponse( + 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 9: { + + sum_ = input.readDouble(); + 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 com.twine.tango.pmr.stubs.CalculateResponseOuterClass.internal_static_Tango_PMR_Stubs_CalculateResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.stubs.CalculateResponseOuterClass.internal_static_Tango_PMR_Stubs_CalculateResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse.class, com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse.Builder.class); + } + + public static final int SUM_FIELD_NUMBER = 1; + private double sum_; + /** + * double Sum = 1; + */ + public double getSum() { + return sum_; + } + + 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 (sum_ != 0D) { + output.writeDouble(1, sum_); + } + unknownFields.writeTo(output); + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (sum_ != 0D) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, sum_); + } + 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 com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse)) { + return super.equals(obj); + } + com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse other = (com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse) obj; + + boolean result = true; + result = result && ( + java.lang.Double.doubleToLongBits(getSum()) + == java.lang.Double.doubleToLongBits( + other.getSum())); + 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) + SUM_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getSum())); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse 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 com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse 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 com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse 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(com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse 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.Stubs.CalculateResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:Tango.PMR.Stubs.CalculateResponse) + com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.twine.tango.pmr.stubs.CalculateResponseOuterClass.internal_static_Tango_PMR_Stubs_CalculateResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.stubs.CalculateResponseOuterClass.internal_static_Tango_PMR_Stubs_CalculateResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse.class, com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse.Builder.class); + } + + // Construct using com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse.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(); + sum_ = 0D; + + return this; + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.twine.tango.pmr.stubs.CalculateResponseOuterClass.internal_static_Tango_PMR_Stubs_CalculateResponse_descriptor; + } + + public com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse getDefaultInstanceForType() { + return com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse.getDefaultInstance(); + } + + public com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse build() { + com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse buildPartial() { + com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse result = new com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse(this); + result.sum_ = sum_; + 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 com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse) { + return mergeFrom((com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse other) { + if (other == com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse.getDefaultInstance()) return this; + if (other.getSum() != 0D) { + setSum(other.getSum()); + } + 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 { + com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private double sum_ ; + /** + * double Sum = 1; + */ + public double getSum() { + return sum_; + } + /** + * double Sum = 1; + */ + public Builder setSum(double value) { + + sum_ = value; + onChanged(); + return this; + } + /** + * double Sum = 1; + */ + public Builder clearSum() { + + sum_ = 0D; + 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.Stubs.CalculateResponse) + } + + // @@protoc_insertion_point(class_scope:Tango.PMR.Stubs.CalculateResponse) + private static final com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse(); + } + + public static com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + public CalculateResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new CalculateResponse(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.twine.tango.pmr.stubs.CalculateResponseOuterClass.CalculateResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_Tango_PMR_Stubs_CalculateResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_Tango_PMR_Stubs_CalculateResponse_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\027CalculateResponse.proto\022\017Tango.PMR.Stu" + + "bs\" \n\021CalculateResponse\022\013\n\003Sum\030\001 \001(\001B\033\n\031" + + "com.twine.tango.pmr.stubsb\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_Stubs_CalculateResponse_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_Tango_PMR_Stubs_CalculateResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_Tango_PMR_Stubs_CalculateResponse_descriptor, + new java.lang.String[] { "Sum", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/ProgressRequestOuterClass.java b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/ProgressRequestOuterClass.java new file mode 100644 index 000000000..41b0985a2 --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/ProgressRequestOuterClass.java @@ -0,0 +1,440 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: ProgressRequest.proto + +package com.twine.tango.pmr.stubs; + +public final class ProgressRequestOuterClass { + private ProgressRequestOuterClass() {} + 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 ProgressRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:Tango.PMR.Stubs.ProgressRequest) + com.google.protobuf.MessageOrBuilder { + } + /** + * Protobuf type {@code Tango.PMR.Stubs.ProgressRequest} + */ + public static final class ProgressRequest extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:Tango.PMR.Stubs.ProgressRequest) + ProgressRequestOrBuilder { + private static final long serialVersionUID = 0L; + // Use ProgressRequest.newBuilder() to construct. + private ProgressRequest(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ProgressRequest() { + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ProgressRequest( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + this(); + 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; + } + } + } + } 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 com.twine.tango.pmr.stubs.ProgressRequestOuterClass.internal_static_Tango_PMR_Stubs_ProgressRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.stubs.ProgressRequestOuterClass.internal_static_Tango_PMR_Stubs_ProgressRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest.class, com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest.Builder.class); + } + + 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 { + unknownFields.writeTo(output); + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + 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 com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest)) { + return super.equals(obj); + } + com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest other = (com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest) obj; + + boolean result = true; + 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 = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest 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 com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest 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 com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest 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(com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest 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.Stubs.ProgressRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:Tango.PMR.Stubs.ProgressRequest) + com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequestOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.twine.tango.pmr.stubs.ProgressRequestOuterClass.internal_static_Tango_PMR_Stubs_ProgressRequest_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.stubs.ProgressRequestOuterClass.internal_static_Tango_PMR_Stubs_ProgressRequest_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest.class, com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest.Builder.class); + } + + // Construct using com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest.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(); + return this; + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.twine.tango.pmr.stubs.ProgressRequestOuterClass.internal_static_Tango_PMR_Stubs_ProgressRequest_descriptor; + } + + public com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest getDefaultInstanceForType() { + return com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest.getDefaultInstance(); + } + + public com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest build() { + com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest buildPartial() { + com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest result = new com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest(this); + 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 com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest) { + return mergeFrom((com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest other) { + if (other == com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest.getDefaultInstance()) return this; + 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 { + com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + 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.Stubs.ProgressRequest) + } + + // @@protoc_insertion_point(class_scope:Tango.PMR.Stubs.ProgressRequest) + private static final com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest(); + } + + public static com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + public ProgressRequest parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ProgressRequest(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.twine.tango.pmr.stubs.ProgressRequestOuterClass.ProgressRequest getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_Tango_PMR_Stubs_ProgressRequest_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_Tango_PMR_Stubs_ProgressRequest_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\025ProgressRequest.proto\022\017Tango.PMR.Stubs" + + "\"\021\n\017ProgressRequestB\033\n\031com.twine.tango.p" + + "mr.stubsb\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_Stubs_ProgressRequest_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_Tango_PMR_Stubs_ProgressRequest_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_Tango_PMR_Stubs_ProgressRequest_descriptor, + new java.lang.String[] { }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/ProgressResponseOuterClass.java b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/ProgressResponseOuterClass.java new file mode 100644 index 000000000..1a14dd2a5 --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/java/com/twine/tango/pmr/stubs/ProgressResponseOuterClass.java @@ -0,0 +1,507 @@ +// Generated by the protocol buffer compiler. DO NOT EDIT! +// source: ProgressResponse.proto + +package com.twine.tango.pmr.stubs; + +public final class ProgressResponseOuterClass { + private ProgressResponseOuterClass() {} + 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 ProgressResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:Tango.PMR.Stubs.ProgressResponse) + com.google.protobuf.MessageOrBuilder { + + /** + * double Progress = 1; + */ + double getProgress(); + } + /** + * Protobuf type {@code Tango.PMR.Stubs.ProgressResponse} + */ + public static final class ProgressResponse extends + com.google.protobuf.GeneratedMessageV3 implements + // @@protoc_insertion_point(message_implements:Tango.PMR.Stubs.ProgressResponse) + ProgressResponseOrBuilder { + private static final long serialVersionUID = 0L; + // Use ProgressResponse.newBuilder() to construct. + private ProgressResponse(com.google.protobuf.GeneratedMessageV3.Builder builder) { + super(builder); + } + private ProgressResponse() { + progress_ = 0D; + } + + @java.lang.Override + public final com.google.protobuf.UnknownFieldSet + getUnknownFields() { + return this.unknownFields; + } + private ProgressResponse( + 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 9: { + + progress_ = input.readDouble(); + 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 com.twine.tango.pmr.stubs.ProgressResponseOuterClass.internal_static_Tango_PMR_Stubs_ProgressResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.stubs.ProgressResponseOuterClass.internal_static_Tango_PMR_Stubs_ProgressResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse.class, com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse.Builder.class); + } + + public static final int PROGRESS_FIELD_NUMBER = 1; + private double progress_; + /** + * double Progress = 1; + */ + public double getProgress() { + return progress_; + } + + 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 (progress_ != 0D) { + output.writeDouble(1, progress_); + } + unknownFields.writeTo(output); + } + + public int getSerializedSize() { + int size = memoizedSize; + if (size != -1) return size; + + size = 0; + if (progress_ != 0D) { + size += com.google.protobuf.CodedOutputStream + .computeDoubleSize(1, progress_); + } + 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 com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse)) { + return super.equals(obj); + } + com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse other = (com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse) obj; + + boolean result = true; + result = result && ( + java.lang.Double.doubleToLongBits(getProgress()) + == java.lang.Double.doubleToLongBits( + other.getProgress())); + 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) + PROGRESS_FIELD_NUMBER; + hash = (53 * hash) + com.google.protobuf.Internal.hashLong( + java.lang.Double.doubleToLongBits(getProgress())); + hash = (29 * hash) + unknownFields.hashCode(); + memoizedHashCode = hash; + return hash; + } + + public static com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data); + } + public static com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return PARSER.parseFrom(data, extensionRegistry); + } + public static com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse 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 com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseDelimitedWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse 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 com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageV3 + .parseWithIOException(PARSER, input); + } + public static com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse 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(com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse 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.Stubs.ProgressResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageV3.Builder implements + // @@protoc_insertion_point(builder_implements:Tango.PMR.Stubs.ProgressResponse) + com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponseOrBuilder { + public static final com.google.protobuf.Descriptors.Descriptor + getDescriptor() { + return com.twine.tango.pmr.stubs.ProgressResponseOuterClass.internal_static_Tango_PMR_Stubs_ProgressResponse_descriptor; + } + + protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internalGetFieldAccessorTable() { + return com.twine.tango.pmr.stubs.ProgressResponseOuterClass.internal_static_Tango_PMR_Stubs_ProgressResponse_fieldAccessorTable + .ensureFieldAccessorsInitialized( + com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse.class, com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse.Builder.class); + } + + // Construct using com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse.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(); + progress_ = 0D; + + return this; + } + + public com.google.protobuf.Descriptors.Descriptor + getDescriptorForType() { + return com.twine.tango.pmr.stubs.ProgressResponseOuterClass.internal_static_Tango_PMR_Stubs_ProgressResponse_descriptor; + } + + public com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse getDefaultInstanceForType() { + return com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse.getDefaultInstance(); + } + + public com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse build() { + com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse result = buildPartial(); + if (!result.isInitialized()) { + throw newUninitializedMessageException(result); + } + return result; + } + + public com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse buildPartial() { + com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse result = new com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse(this); + result.progress_ = progress_; + 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 com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse) { + return mergeFrom((com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse)other); + } else { + super.mergeFrom(other); + return this; + } + } + + public Builder mergeFrom(com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse other) { + if (other == com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse.getDefaultInstance()) return this; + if (other.getProgress() != 0D) { + setProgress(other.getProgress()); + } + 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 { + com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse parsedMessage = null; + try { + parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry); + } catch (com.google.protobuf.InvalidProtocolBufferException e) { + parsedMessage = (com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse) e.getUnfinishedMessage(); + throw e.unwrapIOException(); + } finally { + if (parsedMessage != null) { + mergeFrom(parsedMessage); + } + } + return this; + } + + private double progress_ ; + /** + * double Progress = 1; + */ + public double getProgress() { + return progress_; + } + /** + * double Progress = 1; + */ + public Builder setProgress(double value) { + + progress_ = value; + onChanged(); + return this; + } + /** + * double Progress = 1; + */ + public Builder clearProgress() { + + progress_ = 0D; + 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.Stubs.ProgressResponse) + } + + // @@protoc_insertion_point(class_scope:Tango.PMR.Stubs.ProgressResponse) + private static final com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse DEFAULT_INSTANCE; + static { + DEFAULT_INSTANCE = new com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse(); + } + + public static com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static final com.google.protobuf.Parser + PARSER = new com.google.protobuf.AbstractParser() { + public ProgressResponse parsePartialFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return new ProgressResponse(input, extensionRegistry); + } + }; + + public static com.google.protobuf.Parser parser() { + return PARSER; + } + + @java.lang.Override + public com.google.protobuf.Parser getParserForType() { + return PARSER; + } + + public com.twine.tango.pmr.stubs.ProgressResponseOuterClass.ProgressResponse getDefaultInstanceForType() { + return DEFAULT_INSTANCE; + } + + } + + private static final com.google.protobuf.Descriptors.Descriptor + internal_static_Tango_PMR_Stubs_ProgressResponse_descriptor; + private static final + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable + internal_static_Tango_PMR_Stubs_ProgressResponse_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\026ProgressResponse.proto\022\017Tango.PMR.Stub" + + "s\"$\n\020ProgressResponse\022\020\n\010Progress\030\001 \001(\001B" + + "\033\n\031com.twine.tango.pmr.stubsb\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_Stubs_ProgressResponse_descriptor = + getDescriptor().getMessageTypes().get(0); + internal_static_Tango_PMR_Stubs_ProgressResponse_fieldAccessorTable = new + com.google.protobuf.GeneratedMessageV3.FieldAccessorTable( + internal_static_Tango_PMR_Stubs_ProgressResponse_descriptor, + new java.lang.String[] { "Progress", }); + } + + // @@protoc_insertion_point(outer_class_scope) +} diff --git a/Software/Android_Studio/Tango.PMR/src/main/res/raw/packages.txt b/Software/Android_Studio/Tango.PMR/src/main/res/raw/packages.txt new file mode 100644 index 000000000..f332c1ed6 --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/res/raw/packages.txt @@ -0,0 +1,3 @@ +common +jobs +stubs diff --git a/Software/Android_Studio/Tango.PMR/src/main/res/values/strings.xml b/Software/Android_Studio/Tango.PMR/src/main/res/values/strings.xml new file mode 100644 index 000000000..13796832c --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Tango.PMR + diff --git a/Software/Android_Studio/Tango.PMR/src/test/java/com/twine/tango/pmr/ExampleUnitTest.java b/Software/Android_Studio/Tango.PMR/src/test/java/com/twine/tango/pmr/ExampleUnitTest.java new file mode 100644 index 000000000..8f586503c --- /dev/null +++ b/Software/Android_Studio/Tango.PMR/src/test/java/com/twine/tango/pmr/ExampleUnitTest.java @@ -0,0 +1,35 @@ +package com.twine.tango.pmr; + +import com.twine.tango.pmr.stubs.CalculateRequestOuterClass.CalculateRequest; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +public class ExampleUnitTest { + @Test + public void parseTangoMessage() throws Exception { + + TangoMessage message = MessageFactory.createTangoMessage(CalculateRequest.class); + message.setMessage(CalculateRequest.newBuilder().setA(10).build()); + + byte[] data = message.toBytes(); + + TangoMessage msg = MessageFactory.parseTangoMessage(data); + + double a = msg.getMessage().getA(); + double b = message.getMessage().getA(); + + CalculateRequest request = (CalculateRequest) MessageFactory.parseMessageFromContainerAgnostic(message.getContainer().build()); + + double c = request.getA(); + + assertEquals(msg.getMessage().getA(),message.getMessage().getA()); + + } +} \ No newline at end of file diff --git a/Software/Android_Studio/Tango.SharedUI/.gitignore b/Software/Android_Studio/Tango.SharedUI/.gitignore new file mode 100644 index 000000000..796b96d1c --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/.gitignore @@ -0,0 +1 @@ +/build diff --git a/Software/Android_Studio/Tango.SharedUI/build.gradle b/Software/Android_Studio/Tango.SharedUI/build.gradle new file mode 100644 index 000000000..0eb8175ac --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/build.gradle @@ -0,0 +1,49 @@ +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" + + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + dataBinding { + enabled = true + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + dexOptions { + preDexLibraries = false + } +} + +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' + implementation group: 'io.reactivex.rxjava2', name: 'rxjava', version: '2.1.2' + implementation 'com.mobsandgeeks:android-saripaar:2.0.3' + implementation 'javax.inject:javax.inject:1' + implementation 'com.jakewharton:butterknife:8.7.0' + annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0' +} diff --git a/Software/Android_Studio/Tango.SharedUI/proguard-rules.pro b/Software/Android_Studio/Tango.SharedUI/proguard-rules.pro new file mode 100644 index 000000000..a0eef131a --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/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.SharedUI/src/androidTest/java/com/twine/tango/sharedui/ExampleInstrumentedTest.java b/Software/Android_Studio/Tango.SharedUI/src/androidTest/java/com/twine/tango/sharedui/ExampleInstrumentedTest.java new file mode 100644 index 000000000..5e8c901eb --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/androidTest/java/com/twine/tango/sharedui/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.twine.tango.sharedui; + +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 Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.twine.tango.sharedui.test", appContext.getPackageName()); + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/AndroidManifest.xml b/Software/Android_Studio/Tango.SharedUI/src/main/AndroidManifest.xml new file mode 100644 index 000000000..36d543b36 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/AndroidManifest.xml @@ -0,0 +1,2 @@ + diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_adapters/BindingAdapters.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_adapters/BindingAdapters.java new file mode 100644 index 000000000..04d1ea5e7 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/binding_adapters/BindingAdapters.java @@ -0,0 +1,34 @@ +package com.twine.tango.sharedui.binding_adapters; + +import android.databinding.BindingAdapter; +import android.graphics.Bitmap; +import android.widget.ImageView; +import android.widget.ListView; + +/** + * Created by Roy on 11/7/2017. + */ + +public class BindingAdapters { + + @BindingAdapter("android:memory_bitmap") + public static void bitmapAdapter(ImageView view, Bitmap bitmap) { + if (bitmap != null) { + view.setImageBitmap(bitmap); + } + } + + @BindingAdapter("android:onItemClick") + public static void listViewClickAdapter(ListView view, ListView.OnItemClickListener listener) { + if (view != null && listener != null) { + view.setOnItemClickListener(listener); + } + } + + @BindingAdapter("android:selectedItemPosition") + public static void listViewSelectedItemPosition(ListView view, int position) { + if (view != null) { + view.setItemChecked(position, true); + } + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityBase.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityBase.java new file mode 100644 index 000000000..7f52ffae6 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityBase.java @@ -0,0 +1,121 @@ +package com.twine.tango.sharedui.containers; + +import android.content.Intent; +import android.databinding.DataBindingUtil; +import android.databinding.ViewDataBinding; +import android.os.Bundle; +import android.support.v7.app.AppCompatActivity; +import android.view.View; +import android.widget.EditText; +import android.widget.Toast; + +import com.mobsandgeeks.saripaar.ValidationError; +import com.mobsandgeeks.saripaar.Validator; +import com.twine.tango.sharedui.mvvm.ViewContract; +import com.twine.tango.sharedui.mvvm.ViewModelBase; + +import java.lang.reflect.Method; +import java.util.List; +import java.util.concurrent.Callable; + +import javax.inject.Inject; + +import butterknife.ButterKnife; +import io.reactivex.functions.Consumer; + +public abstract class ActivityBase extends AppCompatActivity implements ViewContract, Validator.ValidationListener { + + protected static final String ACTIVITY_CALLBACK_INTENT = "ACTIVITY_CALLBACK_INTENT"; + + private Consumer lastValidationConsumer; + private Validator validator; + + @Inject + public VM vm; + + public BindingView binding; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + inject(); + binding = DataBindingUtil.setContentView(this, getLayoutId()); + try { + + Method method = binding.getClass().getDeclaredMethod("setVm", vm.getClass()); + method.invoke(binding, vm); + + attachView(); + + ButterKnife.bind(this, binding.getRoot()); + + validator = new Validator(this); + validator.setValidationListener(this); + + String key = getIntent().getStringExtra(ACTIVITY_CALLBACK_INTENT); + if (key != null && !key.isEmpty()) { + ActivityCallbackEngine.getInstance().runAndRemove(key); + } + + } catch (Exception e) { + e.printStackTrace(); + } + } + + @SuppressWarnings("unchecked") + @Override + public void attachView() { + vm.attachView(this); + } + + @Override + public void validateFields(Consumer consumer) { + lastValidationConsumer = consumer; + validator.validate(); + } + + @Override + public void onValidationSucceeded() { + try { + lastValidationConsumer.accept(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onValidationFailed(List errors) { + for (ValidationError error : errors) { + View view = error.getView(); + String message = error.getCollatedErrorMessage(this); + + if (view instanceof EditText) { + view.requestFocus(); + ((EditText) view).setError(message); + } else { + Toast.makeText(this, message, Toast.LENGTH_SHORT).show(); + } + } + + if (lastValidationConsumer != null) { + try { + lastValidationConsumer.accept(false); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + protected abstract int getLayoutId(); + + protected abstract void inject(); + + public void startActivityNotify(Class activity, Runnable callback) { + + String key = ActivityCallbackEngine.getInstance().putCallback(callback); + Intent i = new Intent(getApplicationContext(), activity); + i.putExtra(ACTIVITY_CALLBACK_INTENT, key); + startActivity(i); + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityCallbackEngine.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityCallbackEngine.java new file mode 100644 index 000000000..5aec7852a --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/ActivityCallbackEngine.java @@ -0,0 +1,55 @@ +package com.twine.tango.sharedui.containers; + +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; + +/** + * Created by Roy on 11/7/2017. + */ + +public class ActivityCallbackEngine { + + private static ActivityCallbackEngine instance; + + private Map callbacks; + + private ActivityCallbackEngine() { + callbacks = new HashMap<>(); + } + + public static ActivityCallbackEngine getInstance() { + if (instance == null) { + instance = new ActivityCallbackEngine(); + } + + return instance; + } + + public void putCallback(String key, Runnable callback) { + callbacks.put(key,callback); + } + + public String putCallback(Runnable callback) { + + String key = UUID.randomUUID().toString(); + callbacks.put(key,callback); + return key; + } + + public void removeCallback(String key) + { + callbacks.remove(key); + } + + public void run(String key) + { + callbacks.get(key).run(); + } + + public void runAndRemove(String key) + { + callbacks.get(key).run(); + removeCallback(key); + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBase.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBase.java new file mode 100644 index 000000000..19d472e24 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBase.java @@ -0,0 +1,111 @@ +package com.twine.tango.sharedui.containers; + +import android.app.Fragment; +import android.databinding.DataBindingUtil; +import android.databinding.ViewDataBinding; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.EditText; +import android.widget.Toast; + +import com.mobsandgeeks.saripaar.ValidationError; +import com.mobsandgeeks.saripaar.Validator; +import com.twine.tango.sharedui.mvvm.ViewContract; +import com.twine.tango.sharedui.mvvm.ViewModelBase; + +import java.lang.reflect.Method; +import java.util.List; + +import javax.inject.Inject; + +import butterknife.ButterKnife; +import io.reactivex.functions.Consumer; + +public abstract class FragmentBase extends Fragment implements ViewContract, Validator.ValidationListener { + + private Consumer lastValidationConsumer; + private Validator validator; + + @Inject + VM vm; + + BindingView binding; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + inject(); + binding = DataBindingUtil.inflate(inflater,getLayoutId(),container,false); + + try { + + Method method = binding.getClass().getDeclaredMethod("setVm", vm.getClass()); + method.invoke(binding, vm); + + attachView(); + + ButterKnife.bind(this, binding.getRoot()); + + validator = new Validator(this); + validator.setValidationListener(this); + + return binding.getRoot(); + + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + @SuppressWarnings("unchecked") + @Override + public void attachView() { + vm.attachView(this); + } + + @Override + public void validateFields(Consumer consumer) { + lastValidationConsumer = consumer; + validator.validate(); + } + + @Override + public void onValidationSucceeded() { + try { + lastValidationConsumer.accept(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onValidationFailed(List errors) { + for (ValidationError error : errors) { + View view = error.getView(); + String message = error.getCollatedErrorMessage(this.getActivity().getBaseContext()); + + if (view instanceof EditText) { + view.requestFocus(); + ((EditText) view).setError(message); + } else { + Toast.makeText(this.getActivity().getBaseContext(), message, Toast.LENGTH_SHORT).show(); + } + } + + if (lastValidationConsumer != null) { + try { + lastValidationConsumer.accept(false); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + protected abstract int getLayoutId(); + + protected abstract void inject(); + + public abstract String getTitle(); +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBaseV4.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBaseV4.java new file mode 100644 index 000000000..7f56dd49e --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/containers/FragmentBaseV4.java @@ -0,0 +1,107 @@ +package com.twine.tango.sharedui.containers; + +import android.support.v4.app.Fragment; +import android.databinding.DataBindingUtil; +import android.databinding.ViewDataBinding; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.EditText; +import android.widget.Toast; +import com.mobsandgeeks.saripaar.ValidationError; +import com.mobsandgeeks.saripaar.Validator; +import com.twine.tango.sharedui.mvvm.ViewContract; +import com.twine.tango.sharedui.mvvm.ViewModelBase; +import java.lang.reflect.Method; +import java.util.List; +import javax.inject.Inject; +import butterknife.ButterKnife; +import io.reactivex.functions.Consumer; + +public abstract class FragmentBaseV4 extends Fragment implements ViewContract, Validator.ValidationListener { + + private Consumer lastValidationConsumer; + private Validator validator; + + @Inject + VM vm; + + BindingView binding; + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + + inject(); + binding = DataBindingUtil.inflate(inflater,getLayoutId(),container,false); + + try { + + Method method = binding.getClass().getDeclaredMethod("setVm", vm.getClass()); + method.invoke(binding, vm); + + attachView(); + + ButterKnife.bind(this, binding.getRoot()); + + validator = new Validator(this); + validator.setValidationListener(this); + + return binding.getRoot(); + + } catch (Exception e) { + e.printStackTrace(); + return null; + } + } + + @SuppressWarnings("unchecked") + @Override + public void attachView() { + vm.attachView(this); + } + + @Override + public void validateFields(Consumer consumer) { + lastValidationConsumer = consumer; + validator.validate(); + } + + @Override + public void onValidationSucceeded() { + try { + lastValidationConsumer.accept(true); + } catch (Exception e) { + e.printStackTrace(); + } + } + + @Override + public void onValidationFailed(List errors) { + for (ValidationError error : errors) { + View view = error.getView(); + String message = error.getCollatedErrorMessage(this.getContext()); + + if (view instanceof EditText) { + view.requestFocus(); + ((EditText) view).setError(message); + } else { + Toast.makeText(this.getContext(), message, Toast.LENGTH_SHORT).show(); + } + } + + if (lastValidationConsumer != null) { + try { + lastValidationConsumer.accept(false); + } catch (Exception e) { + e.printStackTrace(); + } + } + } + + protected abstract int getLayoutId(); + + protected abstract void inject(); + + public abstract String getTitle(); +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/BindingConverters.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/BindingConverters.java new file mode 100644 index 000000000..130890c07 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/BindingConverters.java @@ -0,0 +1,19 @@ +package com.twine.tango.sharedui.mvvm; + +import android.app.Application; +import android.content.res.Resources; +import android.graphics.Bitmap; +import android.graphics.drawable.BitmapDrawable; + +import java.util.Calendar; + +/** + * Created by Roy on 7/27/2017. + */ + +public class BindingConverters { + + public static String convertDateToYear(Calendar calendar) { + return String.valueOf(calendar.get(Calendar.YEAR)); + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/DependencyProperty.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/DependencyProperty.java new file mode 100644 index 000000000..b39be3dc3 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/DependencyProperty.java @@ -0,0 +1,49 @@ +package com.twine.tango.sharedui.mvvm; + +import android.databinding.ObservableField; + +/** + * Created by Roy on 7/27/2017. + */ + +public class DependencyProperty extends ObservableField { + + public interface OnPropertyChangedCallback { + void onPropertyChanged(DependencyProperty dp, T value); + } + + private OnPropertyChangedCallback callback; + + public DependencyProperty(OnPropertyChangedCallback callback) { + this.callback = callback; + init(); + } + + public DependencyProperty(T defaultValue, OnPropertyChangedCallback callback) { + this.set(defaultValue); + this.callback = callback; + init(); + } + + public DependencyProperty(T defaultValue) { + this.set(defaultValue); + init(); + } + + public DependencyProperty() { + init(); + } + + private void init() { + final DependencyProperty that = this; + + this.addOnPropertyChangedCallback(new android.databinding.Observable.OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(android.databinding.Observable observable, int i) { + if (that.callback != null) { + that.callback.onPropertyChanged(that, that.get()); + } + } + }); + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/FieldUtils.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/FieldUtils.java new file mode 100644 index 000000000..94f99359a --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/FieldUtils.java @@ -0,0 +1,68 @@ +package com.twine.tango.sharedui.mvvm;/* + * Copyright 2016 Manas Chaudhari + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import android.databinding.Observable.OnPropertyChangedCallback; +import android.databinding.ObservableField; +import android.support.annotation.NonNull; + +import io.reactivex.Observable; +import io.reactivex.ObservableEmitter; +import io.reactivex.ObservableOnSubscribe; +import io.reactivex.functions.Cancellable; + + +public class FieldUtils { + /** + * Converts an ObservableField to an Observable. Note that setting null value inside + * ObservableField (except for initial value) throws a NullPointerException. + * @return Observable that contains the latest value in the ObservableField + */ + @NonNull + public static Observable toObservable(@NonNull final ObservableField field) { + + return Observable.create(new ObservableOnSubscribe() { + @Override + public void subscribe(final ObservableEmitter e) throws Exception { + T initialValue = field.get(); + if (initialValue != null) { + e.onNext(initialValue); + } + final OnPropertyChangedCallback callback = new OnPropertyChangedCallback() { + @Override + public void onPropertyChanged(android.databinding.Observable observable, int i) { + e.onNext(field.get()); + } + }; + field.addOnPropertyChangedCallback(callback); + e.setCancellable(new Cancellable() { + @Override + public void cancel() throws Exception { + field.removeOnPropertyChangedCallback(callback); + } + }); + } + }); + } + + /** + * A convenient wrapper for {@code ReadOnlyField#create(Observable)} + * @return DataBinding field created from the specified Observable + */ + @NonNull + public static ReadOnlyField toField(@NonNull final Observable observable) { + return ReadOnlyField.create(observable); + } +} \ No newline at end of file diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ReadOnlyField.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ReadOnlyField.java new file mode 100644 index 000000000..cf6f8abd8 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ReadOnlyField.java @@ -0,0 +1,74 @@ +package com.twine.tango.sharedui.mvvm;/* + * Copyright 2016 Manas Chaudhari + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import android.databinding.ObservableField; +import android.support.annotation.NonNull; +import android.util.Log; + +import java.util.HashMap; + +import io.reactivex.Observable; +import io.reactivex.disposables.Disposable; +import io.reactivex.functions.Consumer; + + +public class ReadOnlyField extends ObservableField { + private final Observable source; + private final HashMap subscriptions = new HashMap<>(); + + public static ReadOnlyField create(@NonNull Observable source) { + return new ReadOnlyField<>(source); + } + + private ReadOnlyField(@NonNull Observable source) { + super(); + this.source = source.doOnNext(new Consumer() { + @Override + public void accept(T t) throws Exception { + ReadOnlyField.super.set(t); + } + }).doOnError(new Consumer() { + @Override + public void accept(Throwable throwable) throws Exception { + Log.e("Twine", "onError in source observable", throwable); + } + }).onErrorResumeNext(Observable.empty()).share(); + } + + /** + * @deprecated Setter of com.sirilix.mvvm.ReadOnlyField does nothing. Merge with the source Observable instead. + * See Documentation/ObservablesAndSetters.md + */ + @Deprecated + @Override + public void set(T value) { + } + + @Override + public synchronized void addOnPropertyChangedCallback(OnPropertyChangedCallback callback) { + super.addOnPropertyChangedCallback(callback); + subscriptions.put(callback, source.subscribe()); + } + + @Override + public synchronized void removeOnPropertyChangedCallback(OnPropertyChangedCallback callback) { + super.removeOnPropertyChangedCallback(callback); + Disposable subscription = subscriptions.remove(callback); + if (subscription != null && !subscription.isDisposed()) { + subscription.dispose(); + } + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/RelayCommand.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/RelayCommand.java new file mode 100644 index 000000000..586ef9ef6 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/RelayCommand.java @@ -0,0 +1,68 @@ +package com.twine.tango.sharedui.mvvm; + +import android.databinding.BindingAdapter; +import android.view.View; + +/** + * Created by Roy on 7/27/2017. + */ + +public class RelayCommand { + + public interface OnCommandExecute + { + void execute(); + } + + public interface CommandCanExecute + { + boolean canExecute(); + } + + public OnCommandExecute onCommandExecute; + + public CommandCanExecute commandCanExecute; + + private View bindedView; + + @BindingAdapter("android:command") + public static void CommandBinding(View view, RelayCommand command) + { + command.bindedView = view; + + view.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + command.execute(); + } + }); + + command.invalidateCommand(); + } + + public RelayCommand(OnCommandExecute onCommandExecute) { + this.onCommandExecute = onCommandExecute; + } + + public RelayCommand(OnCommandExecute onCommandExecute, CommandCanExecute commandCanExecute) { + this.onCommandExecute = onCommandExecute; + this.commandCanExecute = commandCanExecute; + } + + public RelayCommand() { + + } + + public void execute() + { + onCommandExecute.execute(); + } + + public void invalidateCommand() + { + if (commandCanExecute != null) + { + bindedView.setEnabled(commandCanExecute.canExecute()); + } + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewContract.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewContract.java new file mode 100644 index 000000000..89427070b --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewContract.java @@ -0,0 +1,8 @@ +package com.twine.tango.sharedui.mvvm; + +import io.reactivex.functions.Consumer; + +public interface ViewContract { + void attachView(); + void validateFields(Consumer consumer); +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewModelBase.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewModelBase.java new file mode 100644 index 000000000..4e66d88e9 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/mvvm/ViewModelBase.java @@ -0,0 +1,21 @@ +package com.twine.tango.sharedui.mvvm; + +import android.util.Log; + +/** + * Created by Roy on 7/26/2017. + */ + +public abstract class ViewModelBase { + + public T view; //TODO: Maybe use WeakReference to not prevent garbage collector from disposing the activity ? + + public void attachView(T view) { + this.view = view; + onViewAttached(view); + } + + protected void onViewAttached(T view) { + Log.i("MVVM",view.getClass().getSimpleName() + " attached to " + this.getClass().getSimpleName()); + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/AndroidNotificationProvider.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/AndroidNotificationProvider.java new file mode 100644 index 000000000..7fd2cfacd --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/AndroidNotificationProvider.java @@ -0,0 +1,22 @@ +package com.twine.tango.sharedui.notifications; + +import android.content.Context; +import android.widget.Toast; + +/** + * Created by Roy on 7/29/2017. + */ + +public class AndroidNotificationProvider implements NotificationProvider { + + private Context context; + + public AndroidNotificationProvider(Context context) { + this.context = context; + } + + @Override + public void notify(String message) { + Toast.makeText(context, message, Toast.LENGTH_SHORT).show(); + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/NotificationProvider.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/NotificationProvider.java new file mode 100644 index 000000000..87fe8359d --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/notifications/NotificationProvider.java @@ -0,0 +1,11 @@ +package com.twine.tango.sharedui.notifications; + +/** + * Created by Roy on 7/29/2017. + */ + +public interface NotificationProvider { + + void notify(String message); + +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerAdapter.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerAdapter.java new file mode 100644 index 000000000..2e151cc01 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerAdapter.java @@ -0,0 +1,61 @@ +package com.twine.tango.sharedui.paging; + +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentPagerAdapter; + +import com.twine.tango.sharedui.containers.FragmentBaseV4; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by Roy on 7/24/2017. + */ + +public class PagerAdapter extends FragmentPagerAdapter { + + private List fragments; + private int currentPosition; + + public PagerAdapter(FragmentManager fm) { + super(fm); + + fragments = new ArrayList<>(); + } + + public void addFragment(FragmentBaseV4 fragment) + { + fragments.add(fragment); + } + + public void removeFragment(FragmentBaseV4 fragment) + { + fragments.remove(fragment); + } + + @Override + public Fragment getItem(int position) { + currentPosition = position; + return fragments.get(position); + } + + @SuppressWarnings("unchecked") + public T getCurrentFragment() { + return (T) getItem(currentPosition); + } + + @Override + public int getCount() { + return fragments.size(); + } + + @Override + public CharSequence getPageTitle(int position) { + if (fragments.get(position) != null) { + return fragments.get(position).getTitle(); + } else { + return ""; + } + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerZoomTransform.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerZoomTransform.java new file mode 100644 index 000000000..9c114c01c --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/paging/PagerZoomTransform.java @@ -0,0 +1,44 @@ +package com.twine.tango.sharedui.paging; + +import android.support.v4.view.ViewPager; +import android.view.View; + +public class PagerZoomTransform implements ViewPager.PageTransformer { + private static final float MIN_SCALE = 0.85f; + private static final float MIN_ALPHA = 0.5f; + + public void transformPage(View view, float position) { + int pageWidth = view.getWidth(); + int pageHeight = view.getHeight(); + + if (position < -1) { // [-Infinity,-1) + // This page is way off-screen to the left. + view.setAlpha(0); + + } else if (position <= 1) { // [-1,1] + // Modify the default slide transition to shrink the page as well + float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position)); + float vertMargin = pageHeight * (1 - scaleFactor) / 2; + float horzMargin = pageWidth * (1 - scaleFactor) / 2; + if (position < 0) { + view.setTranslationX(horzMargin - vertMargin / 2); + } else { + view.setTranslationX(-horzMargin + vertMargin / 2); + } + + // Scale the page down (between MIN_SCALE and 1) + view.setScaleX(scaleFactor); + view.setScaleY(scaleFactor); + + // Fade the page relative to its size. + view.setAlpha(MIN_ALPHA + + (scaleFactor - MIN_SCALE) / + (1 - MIN_SCALE) * (1 - MIN_ALPHA)); + + } else { // (1,+Infinity] + // This page is way off-screen to the right. + view.setAlpha(0); + } + } +} + diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/validation/ViewValidator.java b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/validation/ViewValidator.java new file mode 100644 index 000000000..4c62b7548 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/java/com/twine/tango/sharedui/validation/ViewValidator.java @@ -0,0 +1,23 @@ +package com.twine.tango.sharedui.validation; + +import com.mobsandgeeks.saripaar.ValidationError; +import com.mobsandgeeks.saripaar.Validator; + +import java.util.List; + +/** + * Created by Roy on 11/6/2017. + */ + +public class ViewValidator implements Validator.ValidationListener { + + @Override + public void onValidationSucceeded() { + + } + + @Override + public void onValidationFailed(List errors) { + + } +} diff --git a/Software/Android_Studio/Tango.SharedUI/src/main/res/values/strings.xml b/Software/Android_Studio/Tango.SharedUI/src/main/res/values/strings.xml new file mode 100644 index 000000000..824fc72c7 --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/main/res/values/strings.xml @@ -0,0 +1,3 @@ + + Tango.SharedUI + diff --git a/Software/Android_Studio/Tango.SharedUI/src/test/java/com/twine/tango/sharedui/ExampleUnitTest.java b/Software/Android_Studio/Tango.SharedUI/src/test/java/com/twine/tango/sharedui/ExampleUnitTest.java new file mode 100644 index 000000000..0ad67a99f --- /dev/null +++ b/Software/Android_Studio/Tango.SharedUI/src/test/java/com/twine/tango/sharedui/ExampleUnitTest.java @@ -0,0 +1,17 @@ +package com.twine.tango.sharedui; + +import org.junit.Test; + +import static org.junit.Assert.*; + +/** + * Example local unit test, which will execute on the development machine (host). + * + * @see Testing documentation + */ +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.Stubs.UI/.gitignore b/Software/Android_Studio/Tango.Stubs.UI/.gitignore new file mode 100644 index 000000000..796b96d1c --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/.gitignore @@ -0,0 +1 @@ +/build diff --git a/Software/Android_Studio/Tango.Stubs.UI/build.gradle b/Software/Android_Studio/Tango.Stubs.UI/build.gradle new file mode 100644 index 000000000..dc8ece75e --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/build.gradle @@ -0,0 +1,68 @@ +apply plugin: 'com.android.application' + +android { + compileSdkVersion 26 + buildToolsVersion "26.0.1" + + + defaultConfig { + applicationId "com.twine.tango.stubs.ui" + minSdkVersion 22 + targetSdkVersion 26 + versionCode 1 + versionName "1.0" + vectorDrawables.useSupportLibrary = true + + testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" + + } + buildTypes { + release { + minifyEnabled false + proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' + } + } + + dataBinding { + enabled = true + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + dexOptions { + preDexLibraries = false + } +} + +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' + implementation 'com.android.support:support-v4:26.1.0' + compile 'com.android.support:design: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' + //Extensions + compile 'io.reactivex.rxjava2:rxjava:2.1.2' + compile globalDependencies.dagger + compile globalDependencies.daggerAndroid + compile 'com.squareup:otto:1.3.8' + compile 'me.tatarka.bindingcollectionadapter2:bindingcollectionadapter:2.2.0' + compile 'me.tatarka.bindingcollectionadapter2:bindingcollectionadapter-recyclerview:2.2.0' + annotationProcessor 'com.google.dagger:dagger-android-processor:2.11' + annotationProcessor 'com.google.dagger:dagger-compiler:2.11' + compile 'com.mobsandgeeks:android-saripaar:2.0.3' + compile 'com.jakewharton:butterknife:8.7.0' + annotationProcessor 'com.jakewharton:butterknife-compiler:8.7.0' + compile project(path: ':Tango.SharedUI') + implementation project(':Tango.Models') + implementation project(':Tango.Stubs') + implementation project(':Tango.Integration') + compile globalDependencies.joda + implementation project(':Tango.Transport') + implementation project(':Tango.Core') +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/proguard-rules.pro b/Software/Android_Studio/Tango.Stubs.UI/proguard-rules.pro new file mode 100644 index 000000000..a0eef131a --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/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.Stubs.UI/src/androidTest/java/com/twine/tango/stubs/ui/ExampleInstrumentedTest.java b/Software/Android_Studio/Tango.Stubs.UI/src/androidTest/java/com/twine/tango/stubs/ui/ExampleInstrumentedTest.java new file mode 100644 index 000000000..96fd8593f --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/androidTest/java/com/twine/tango/stubs/ui/ExampleInstrumentedTest.java @@ -0,0 +1,26 @@ +package com.twine.tango.stubs.ui; + +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 Testing documentation + */ +@RunWith(AndroidJUnit4.class) +public class ExampleInstrumentedTest { + @Test + public void useAppContext() throws Exception { + // Context of the app under test. + Context appContext = InstrumentationRegistry.getTargetContext(); + + assertEquals("com.twine.tango.stubs.ui", appContext.getPackageName()); + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/AndroidManifest.xml b/Software/Android_Studio/Tango.Stubs.UI/src/main/AndroidManifest.xml new file mode 100644 index 000000000..d609ad25d --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/AndroidManifest.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/App.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/App.java new file mode 100644 index 000000000..f0c71477f --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/App.java @@ -0,0 +1,91 @@ +package com.twine.tango.stubs.ui; + +import android.app.Application; +import android.content.Context; +import android.os.Environment; + +import com.elvishew.xlog.LogConfiguration; +import com.elvishew.xlog.LogLevel; +import com.elvishew.xlog.XLog; +import com.elvishew.xlog.formatter.message.object.ObjectFormatter; +import com.elvishew.xlog.printer.AndroidPrinter; +import com.elvishew.xlog.printer.Printer; +import com.elvishew.xlog.printer.file.FilePrinter; +import com.elvishew.xlog.printer.file.backup.FileSizeBackupStrategy; +import com.elvishew.xlog.printer.file.naming.DateFileNameGenerator; +import com.google.protobuf.GeneratedMessageV3; +import com.twine.tango.core.ContextFactory; +import com.twine.tango.pmr.MessageFactory; +import com.twine.tango.stubs.ui.dagger.ApplicationComponent; +import com.twine.tango.stubs.ui.dagger.ApplicationModule; +import com.twine.tango.stubs.ui.dagger.DaggerApplicationComponent; + +import net.danlew.android.joda.JodaTimeAndroid; + +import java.io.File; + +/** + * Created by Roy on 11/6/2017. + */ + +public class App extends Application { + private static Context context; + + private ApplicationComponent appComponent; + + public ApplicationComponent getAppComponent() { + return appComponent; + } + + protected ApplicationComponent initDagger(App application) { + return DaggerApplicationComponent.builder().applicationModule(new ApplicationModule(application)).build(); + } + + @Override + public void onCreate() { + super.onCreate(); + + JodaTimeAndroid.init(this); + + appComponent = initDagger(this); + context = getApplicationContext(); + + ContextFactory.init(context); + + LogConfiguration config = new LogConfiguration.Builder() + .logLevel(LogLevel.ALL) + .tag("Tango") + .t() + .st(1) +// .b() + .addObjectFormatter(GeneratedMessageV3.class, msg -> msg.toString()).build(); + + File sdcard = context.getFilesDir(); + File dir = new File(sdcard.getAbsolutePath() + "/logs"); + boolean b = dir.mkdirs(); + + Printer androidPrinter = new AndroidPrinter(); + Printer filePrinter = new FilePrinter.Builder(dir.getPath()) + .fileNameGenerator(new DateFileNameGenerator()) + .backupStrategy(new FileSizeBackupStrategy(1024 * 1024)) + .build(); + + XLog.init(config, androidPrinter, filePrinter); + XLog.i("Logger Initialized. logs will be saved to: " + dir.getAbsolutePath()); + + + Thread.setDefaultUncaughtExceptionHandler((thread, throwable) -> { + + XLog.e(throwable); + System.exit(1); + }); + } + + public static ApplicationComponent getComponent() { + return ((App) context).getAppComponent(); + } + + public static Context getContext() { + return context; + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/Events/LoginEvent.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/Events/LoginEvent.java new file mode 100644 index 000000000..da5f62124 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/Events/LoginEvent.java @@ -0,0 +1,24 @@ +package com.twine.tango.stubs.ui.Events; + +import com.twine.tango.models.User; + +/** + * Created by Roy on 11/7/2017. + */ + +public class LoginEvent { + + private User user; + + public LoginEvent(User user) { + this.user = user; + } + + public User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/Events/StubSelectedEvent.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/Events/StubSelectedEvent.java new file mode 100644 index 000000000..1c2826c25 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/Events/StubSelectedEvent.java @@ -0,0 +1,24 @@ +package com.twine.tango.stubs.ui.Events; + +import com.twine.tango.stubs.AvailableStub; + +/** + * Created by Roy on 11/7/2017. + */ + +public class StubSelectedEvent { + + private AvailableStub stub; + + public AvailableStub getStub() { + return stub; + } + + public void setStub(AvailableStub stub) { + this.stub = stub; + } + + public StubSelectedEvent(AvailableStub stub) { + this.stub = stub; + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ApplicationComponent.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ApplicationComponent.java new file mode 100644 index 000000000..e9a3d65de --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ApplicationComponent.java @@ -0,0 +1,33 @@ +package com.twine.tango.stubs.ui.dagger; + +import com.twine.tango.stubs.ui.views.login.LoginFragment; +import com.twine.tango.stubs.ui.views.main.MainActivity; +import com.twine.tango.stubs.ui.views.main.MainActivityVM; +import com.twine.tango.stubs.ui.views.selection.SelectionFragment; +import com.twine.tango.stubs.ui.views.stub.StubActivity; +import com.twine.tango.stubs.ui.views.stubs.StubsActivity; + +import javax.inject.Singleton; + +import dagger.Component; + +/** + * Created by Roy on 11/6/2017. + */ + +@Singleton +@Component(modules = {ApplicationModule.class, ViewModelsModule.class, EventBusModule.class, NotificationModule.class, TransportModule.class}) +public interface ApplicationComponent { + + void inject(MainActivity view); + + void inject(LoginFragment view); + + void inject(SelectionFragment view); + + void inject(StubsActivity view); + + void inject(StubActivity view); + + MainActivityVM provideMainActivityVM(); +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ApplicationModule.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ApplicationModule.java new file mode 100644 index 000000000..ce664f835 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ApplicationModule.java @@ -0,0 +1,30 @@ +package com.twine.tango.stubs.ui.dagger; + +import android.app.Application; +import android.content.Context; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; + +/** + * Created by Roy on 11/6/2017. + */ + +@Module +public class ApplicationModule { + + private Application application; + + public ApplicationModule(Application application) { + this.application = application; + } + + @Provides + @Singleton + public Context provideContext() + { + return application; + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/EventBusModule.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/EventBusModule.java new file mode 100644 index 000000000..3aeb461f7 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/EventBusModule.java @@ -0,0 +1,24 @@ +package com.twine.tango.stubs.ui.dagger; + +import com.squareup.otto.Bus; +import com.squareup.otto.ThreadEnforcer; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; + +/** + * Created by Roy on 11/6/2017. + */ + +@Module +public class EventBusModule { + + @Provides + @Singleton + public Bus provideEventBus() + { + return new Bus(ThreadEnforcer.MAIN); + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/NotificationModule.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/NotificationModule.java new file mode 100644 index 000000000..900080c25 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/NotificationModule.java @@ -0,0 +1,27 @@ +package com.twine.tango.stubs.ui.dagger; + +import android.content.Context; + +import com.twine.tango.sharedui.notifications.AndroidNotificationProvider; +import com.twine.tango.sharedui.notifications.NotificationProvider; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; + +/** + * Created by Roy on 11/6/2017. + */ + +@Module +public class NotificationModule { + + @Provides + @Singleton + public NotificationProvider provideNotificationProvider(Context context) + { + return new AndroidNotificationProvider(context); + } + +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ServicesModule.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ServicesModule.java new file mode 100644 index 000000000..2227cbf1e --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ServicesModule.java @@ -0,0 +1,8 @@ +package com.twine.tango.stubs.ui.dagger; + +/** + * Created by Roy on 11/6/2017. + */ + +public class ServicesModule { +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/TransportModule.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/TransportModule.java new file mode 100644 index 000000000..7c4babd1f --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/TransportModule.java @@ -0,0 +1,33 @@ +package com.twine.tango.stubs.ui.dagger; + +import com.twine.tango.transport.ITransportAdapter; +import com.twine.tango.transport.ITransporter; +import com.twine.tango.transport.adapters.TcpTransportAdapter; +import com.twine.tango.transport.transporters.ProtoTransporter; +import javax.inject.Singleton; +import dagger.Module; +import dagger.Provides; + +/** + * Created by Roy on 11/14/2017. + */ + +@Module +public class TransportModule +{ + + @Provides + @Singleton + public ITransporter provideTransporter(ITransportAdapter adapter) + { + return new ProtoTransporter(adapter); + } + + @Provides + @Singleton + public ITransportAdapter provideAdapter() + { + return new TcpTransportAdapter("10.0.2.2", 9999); + } + +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ViewModelsModule.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ViewModelsModule.java new file mode 100644 index 000000000..55fece908 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/dagger/ViewModelsModule.java @@ -0,0 +1,62 @@ +package com.twine.tango.stubs.ui.dagger; + +import com.squareup.otto.Bus; +import com.twine.tango.integration.machine.MachineOperatorInterface; +import com.twine.tango.sharedui.notifications.NotificationProvider; +import com.twine.tango.stubs.ui.views.login.LoginFragment; +import com.twine.tango.stubs.ui.views.login.LoginFragmentVM; +import com.twine.tango.stubs.ui.views.main.MainActivityVM; +import com.twine.tango.stubs.ui.views.selection.SelectionFragmentVM; +import com.twine.tango.stubs.ui.views.stub.StubActivityVM; +import com.twine.tango.stubs.ui.views.stubs.StubsActivityVM; +import com.twine.tango.transport.ITransportAdapter; +import com.twine.tango.transport.ITransporter; + +import javax.inject.Singleton; + +import dagger.Module; +import dagger.Provides; + +/** + * Created by Roy on 11/6/2017. + */ + +@Module +public class ViewModelsModule +{ + + @Provides + @Singleton + public MainActivityVM provideMainActivityVM(Bus eventBus, NotificationProvider notificationProvider) + { + return new MainActivityVM(eventBus, notificationProvider); + } + + @Provides + @Singleton + public LoginFragmentVM provideLoginFragmentVM(Bus eventBus, NotificationProvider notificationProvider) + { + return new LoginFragmentVM(eventBus, notificationProvider); + } + + @Provides + @Singleton + public SelectionFragmentVM provideSelectionFragmentVM() + { + return new SelectionFragmentVM(); + } + + @Provides + @Singleton + public StubsActivityVM provideStubsActivityVM(Bus eventBus) + { + return new StubsActivityVM(eventBus); + } + + @Provides + @Singleton + public StubActivityVM provideStubActivityVM(Bus eventBus, NotificationProvider notificationProvider, ITransporter transporter, ITransportAdapter adapter) + { + return new StubActivityVM(eventBus, notificationProvider, transporter, adapter); + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragment.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragment.java new file mode 100644 index 000000000..4a8e32afd --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragment.java @@ -0,0 +1,46 @@ +package com.twine.tango.stubs.ui.views.login; + +import android.support.v4.app.Fragment; +import android.widget.EditText; + +import com.mobsandgeeks.saripaar.annotation.Email; +import com.mobsandgeeks.saripaar.annotation.Password; +import com.twine.tango.sharedui.containers.FragmentBase; +import com.twine.tango.stubs.ui.App; +import com.twine.tango.stubs.ui.R; +import com.twine.tango.stubs.ui.databinding.FragmentLoginBinding; + +import butterknife.BindView; + +/** + * A simple {@link Fragment} subclass. + */ +public class LoginFragment extends FragmentBase implements LoginFragmentContract { + + @BindView(R.id.txtEmail) + @Email(message = "Please enter a valid email address") + EditText txtEmail; + + @BindView(R.id.txtPassword) + @Password(message = "Please enter a valid password", scheme = Password.Scheme.NUMERIC, min = 4) + EditText txtPassword; + + public LoginFragment() { + // Required empty public constructor + } + + @Override + protected int getLayoutId() { + return R.layout.fragment_login; + } + + @Override + protected void inject() { + App.getComponent().inject(this); + } + + @Override + public String getTitle() { + return "LOGIN"; + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragmentContract.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragmentContract.java new file mode 100644 index 000000000..d28e67b25 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragmentContract.java @@ -0,0 +1,10 @@ +package com.twine.tango.stubs.ui.views.login; + +import com.twine.tango.sharedui.mvvm.ViewContract; + +/** + * Created by Roy on 11/6/2017. + */ + +public interface LoginFragmentContract extends ViewContract { +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragmentVM.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragmentVM.java new file mode 100644 index 000000000..ae454465e --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/login/LoginFragmentVM.java @@ -0,0 +1,51 @@ +package com.twine.tango.stubs.ui.views.login; + +import android.util.Log; + +import com.squareup.otto.Bus; +import com.twine.tango.models.User; +import com.twine.tango.sharedui.mvvm.DependencyProperty; +import com.twine.tango.sharedui.mvvm.RelayCommand; +import com.twine.tango.sharedui.mvvm.ViewModelBase; +import com.twine.tango.sharedui.notifications.NotificationProvider; +import com.twine.tango.stubs.ui.Events.LoginEvent; + +import javax.inject.Inject; + +/** + * Created by Roy on 11/6/2017. + */ + +public class LoginFragmentVM extends ViewModelBase { + + private Bus eventBus; + private NotificationProvider notificationProvider; + + public DependencyProperty email; + public DependencyProperty password; + + public RelayCommand loginCommand; + + @Inject + public LoginFragmentVM(Bus eventBus, NotificationProvider notificationProvider) { + this.eventBus = eventBus; + this.notificationProvider = notificationProvider; + + email = new DependencyProperty<>("", (dp, value) -> loginCommand.invalidateCommand()); + password = new DependencyProperty<>("", (dp, value) -> loginCommand.invalidateCommand()); + loginCommand = new RelayCommand(this::login, () -> !email.get().isEmpty() && !password.get().isEmpty()); + + this.eventBus.register(this); + } + + private void login() { + + view.validateFields((valid) -> { + + if (valid) { + eventBus.post(new LoginEvent(new User(email.get(), password.get()))); + } + + }); + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivity.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivity.java new file mode 100644 index 000000000..d31f2b525 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivity.java @@ -0,0 +1,80 @@ +package com.twine.tango.stubs.ui.views.main; + +import android.app.Fragment; +import android.app.FragmentManager; +import android.app.FragmentTransaction; +import android.content.Intent; +import android.content.pm.PackageInfo; +import android.content.pm.PackageManager; +import android.os.Bundle; +import android.support.v7.app.ActionBarDrawerToggle; +import android.util.Log; + +import com.twine.tango.pmr.MessageFactory; +import com.twine.tango.sharedui.containers.ActivityBase; +import com.twine.tango.sharedui.containers.FragmentBase; +import com.twine.tango.stubs.ui.App; +import com.twine.tango.stubs.ui.R; +import com.twine.tango.stubs.ui.databinding.ActivityMainBinding; +import com.twine.tango.stubs.ui.views.login.LoginFragment; +import com.twine.tango.stubs.ui.views.selection.SelectionFragment; +import com.twine.tango.stubs.ui.views.stubs.StubsActivity; + +import java.io.File; +import java.io.IOException; +import java.net.URL; +import java.util.ArrayList; +import java.util.Enumeration; +import java.util.List; + +import dalvik.system.DexFile; + +public class MainActivity extends ActivityBase implements MainActivityContract { + + ActionBarDrawerToggle mDrawerToggle; + private Fragment currentFragment; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + //Load login fragment. + navigateTo(Navigation.MAIN); + + setSupportActionBar(findViewById(R.id.toolbar1)); + //initializeSideMenu(); + } + + @Override + protected int getLayoutId() { + return R.layout.activity_main; + } + + @Override + protected void inject() { + App.getComponent().inject(this); + } + + @Override + public void navigateTo(Navigation navigation) { + + FragmentManager fragmentManager = getFragmentManager(); + FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); + FragmentBase fragment = null; + + switch (navigation) + { + case LOGIN: + fragment = new LoginFragment(); + break; + case MAIN: + fragment = new SelectionFragment(); + break; + } + + if (currentFragment != null) fragmentTransaction.remove(currentFragment); + currentFragment = fragment; + fragmentTransaction.add(R.id.fragment_container, fragment); + fragmentTransaction.commit(); + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivityContract.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivityContract.java new file mode 100644 index 000000000..3f27e29d9 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivityContract.java @@ -0,0 +1,18 @@ +package com.twine.tango.stubs.ui.views.main; + +import com.twine.tango.sharedui.mvvm.ViewContract; + +/** + * Created by Roy on 11/6/2017. + */ + +public interface MainActivityContract extends ViewContract { + + enum Navigation + { + LOGIN, + MAIN, + } + + void navigateTo(Navigation navigation); +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivityVM.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivityVM.java new file mode 100644 index 000000000..7a6fe2a1f --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/main/MainActivityVM.java @@ -0,0 +1,37 @@ +package com.twine.tango.stubs.ui.views.main; + +import com.squareup.otto.Bus; +import com.squareup.otto.Subscribe; +import com.twine.tango.models.User; +import com.twine.tango.sharedui.mvvm.DependencyProperty; +import com.twine.tango.sharedui.mvvm.FieldUtils; +import com.twine.tango.sharedui.mvvm.ReadOnlyField; +import com.twine.tango.sharedui.mvvm.RelayCommand; +import com.twine.tango.sharedui.mvvm.ViewModelBase; +import com.twine.tango.sharedui.notifications.NotificationProvider; +import com.twine.tango.stubs.ui.Events.LoginEvent; + +import javax.inject.Inject; + +public class MainActivityVM extends ViewModelBase { + + private Bus eventBus; + private User currentUser; + private NotificationProvider notificationProvider; + + + @Inject + public MainActivityVM(Bus eventBus, NotificationProvider notificationProvider) { + this.eventBus = eventBus; + this.notificationProvider = notificationProvider; + this.eventBus.register(this); + } + + @Subscribe + public void loginEventHandler(LoginEvent e) + { + currentUser = e.getUser(); + view.navigateTo(MainActivityContract.Navigation.MAIN); + notificationProvider.notify(currentUser.getEmail() + " Log In!"); + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragment.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragment.java new file mode 100644 index 000000000..171aa562d --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragment.java @@ -0,0 +1,49 @@ +package com.twine.tango.stubs.ui.views.selection; + + +import android.content.Intent; +import android.support.v4.app.Fragment; + +import com.twine.tango.sharedui.containers.FragmentBase; +import com.twine.tango.stubs.ui.App; +import com.twine.tango.stubs.ui.R; +import com.twine.tango.stubs.ui.databinding.FragmentSelectionBinding; +import com.twine.tango.stubs.ui.views.stubs.StubsActivity; + +/** + * A simple {@link Fragment} subclass. + */ +public class SelectionFragment extends FragmentBase implements SelectionFragmentContract { + + + public SelectionFragment() { + // Required empty public constructor + } + + @Override + protected int getLayoutId() { + return R.layout.fragment_selection; + } + + @Override + protected void inject() { + App.getComponent().inject(this); + } + + @Override + public String getTitle() { + return "SELECTION"; + } + + @Override + public void navigateTo(Navigation navigation) { + + switch (navigation) { + case Stubs: + startActivity(new Intent(this.getActivity(), StubsActivity.class)); + break; + case DataBase: + break; + } + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragmentContract.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragmentContract.java new file mode 100644 index 000000000..0a00a9d5b --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragmentContract.java @@ -0,0 +1,18 @@ +package com.twine.tango.stubs.ui.views.selection; + +import com.twine.tango.sharedui.mvvm.ViewContract; + +/** + * Created by Roy on 11/6/2017. + */ + +public interface SelectionFragmentContract extends ViewContract { + + enum Navigation + { + Stubs, + DataBase, + } + + void navigateTo(Navigation navigation); +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragmentVM.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragmentVM.java new file mode 100644 index 000000000..989ab5083 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/selection/SelectionFragmentVM.java @@ -0,0 +1,23 @@ +package com.twine.tango.stubs.ui.views.selection; + +import com.twine.tango.sharedui.mvvm.RelayCommand; +import com.twine.tango.sharedui.mvvm.ViewModelBase; + +import javax.inject.Inject; + +/** + * Created by Roy on 11/6/2017. + */ + +public class SelectionFragmentVM extends ViewModelBase { + + public RelayCommand openStubsCommand; + public RelayCommand openDataBaseCommand; + + @Inject + public SelectionFragmentVM() { + + openStubsCommand = new RelayCommand(() -> view.navigateTo(SelectionFragmentContract.Navigation.Stubs)); + openDataBaseCommand = new RelayCommand(() -> view.navigateTo(SelectionFragmentContract.Navigation.DataBase)); + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivity.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivity.java new file mode 100644 index 000000000..3b4e8f1a1 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivity.java @@ -0,0 +1,19 @@ +package com.twine.tango.stubs.ui.views.stub; + +import com.twine.tango.sharedui.containers.ActivityBase; +import com.twine.tango.stubs.ui.App; +import com.twine.tango.stubs.ui.R; +import com.twine.tango.stubs.ui.databinding.ActivityStubBinding; + +public class StubActivity extends ActivityBase { + + @Override + protected int getLayoutId() { + return R.layout.activity_stub; + } + + @Override + protected void inject() { + App.getComponent().inject(this); + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivityContract.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivityContract.java new file mode 100644 index 000000000..e2fc7fb94 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivityContract.java @@ -0,0 +1,10 @@ +package com.twine.tango.stubs.ui.views.stub; + +import com.twine.tango.sharedui.mvvm.ViewContract; + +/** + * Created by Roy on 11/7/2017. + */ + +public interface StubActivityContract extends ViewContract { +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivityVM.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivityVM.java new file mode 100644 index 000000000..d95420dd5 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stub/StubActivityVM.java @@ -0,0 +1,78 @@ +package com.twine.tango.stubs.ui.views.stub; + +import com.elvishew.xlog.XLog; +import com.squareup.otto.Bus; +import com.squareup.otto.Subscribe; +import com.twine.tango.core.ObjectDisposedException; +import com.twine.tango.integration.machine.MachineOperatorInterface; +import com.twine.tango.sharedui.mvvm.RelayCommand; +import com.twine.tango.stubs.AvailableStub; +import com.twine.tango.sharedui.mvvm.DependencyProperty; +import com.twine.tango.sharedui.mvvm.ViewModelBase; +import com.twine.tango.sharedui.notifications.NotificationProvider; +import com.twine.tango.stubs.StubBase; +import com.twine.tango.stubs.ui.Events.StubSelectedEvent; +import com.twine.tango.transport.ITransportAdapter; +import com.twine.tango.transport.ITransporter; +import com.twine.tango.transport.TransportComponentState; + +import javax.inject.Inject; + +import io.reactivex.android.schedulers.AndroidSchedulers; + +/** + * Created by Roy on 11/7/2017. + */ + +public class StubActivityVM extends ViewModelBase +{ + private Bus eventBus; + private NotificationProvider notificationProvider; + private ITransporter transporter; + private ITransportAdapter adapter; + public DependencyProperty stub; + public RelayCommand runCommand; + + @Inject + public StubActivityVM(Bus eventBus, NotificationProvider notificationProvider, ITransporter transporter, ITransportAdapter adapter) + { + + stub = new DependencyProperty<>(); + this.eventBus = eventBus; + this.transporter = transporter; + this.adapter = adapter; + this.notificationProvider = notificationProvider; + this.eventBus.register(this); + + if (transporter.getState() != TransportComponentState.Connected) + { + try + { + transporter.connect().subscribe(); + } catch (ObjectDisposedException e) + { + e.printStackTrace(); + } + } + + runCommand = new RelayCommand(this::runSelectedStub); + } + + @Subscribe + public void handleStubSelectedEvent(StubSelectedEvent e) + { + stub.set(e.getStub()); + } + + private void runSelectedStub() + { + StubBase stub = this.stub.get().createInstance(transporter); + stub.run().observeOn(AndroidSchedulers.mainThread()).subscribe((response) -> + { + XLog.i(response); + }, (ex) -> + { + XLog.e(ex); + }); + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivity.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivity.java new file mode 100644 index 000000000..eba516754 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivity.java @@ -0,0 +1,25 @@ +package com.twine.tango.stubs.ui.views.stubs; + +import com.twine.tango.sharedui.containers.ActivityBase; +import com.twine.tango.stubs.ui.App; +import com.twine.tango.stubs.ui.R; +import com.twine.tango.stubs.ui.databinding.ActivityStubsBinding; +import com.twine.tango.stubs.ui.views.stub.StubActivity; + +public class StubsActivity extends ActivityBase implements StubsActivityContract { + + @Override + protected int getLayoutId() { + return R.layout.activity_stubs; + } + + @Override + protected void inject() { + App.getComponent().inject(this); + } + + @Override + public void navigateToStab(Runnable callback) { + startActivityNotify(StubActivity.class, callback); + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivityContract.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivityContract.java new file mode 100644 index 000000000..52bfaa36f --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivityContract.java @@ -0,0 +1,13 @@ +package com.twine.tango.stubs.ui.views.stubs; + +import com.twine.tango.sharedui.mvvm.ViewContract; + +/** + * Created by Roy on 11/7/2017. + */ + +public interface StubsActivityContract extends ViewContract { + + void navigateToStab(Runnable callback); + +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivityVM.java b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivityVM.java new file mode 100644 index 000000000..4afc1ed67 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/java/com/twine/tango/stubs/ui/views/stubs/StubsActivityVM.java @@ -0,0 +1,60 @@ +package com.twine.tango.stubs.ui.views.stubs; + +import android.databinding.ObservableArrayList; +import android.databinding.ObservableField; +import android.databinding.ObservableList; +import android.util.Log; +import android.view.View; +import android.widget.AdapterView; + +import com.squareup.otto.Bus; +import com.twine.tango.sharedui.mvvm.RelayCommand; +import com.twine.tango.stubs.AvailableStub; +import com.twine.tango.sharedui.mvvm.FieldUtils; +import com.twine.tango.sharedui.mvvm.ViewModelBase; +import com.twine.tango.stubs.StubBase; +import com.twine.tango.stubs.StubDirection; +import com.twine.tango.stubs.ui.BR; +import com.twine.tango.stubs.ui.Events.StubSelectedEvent; +import com.twine.tango.stubs.ui.R; + +import javax.inject.Inject; + +import me.tatarka.bindingcollectionadapter2.ItemBinding; + +/** + * Created by Roy on 11/7/2017. + */ + +public class StubsActivityVM extends ViewModelBase { + + private Bus eventBus; + + public ObservableList stubs; + public ItemBinding stubBinding; + public ObservableField selectedStub; + public ObservableField selectedStubIndex; + + @Inject + public StubsActivityVM(Bus eventBus) { + + this.eventBus = eventBus; + + stubs = new ObservableArrayList<>(); + stubBinding = ItemBinding.of(BR.stub, R.layout.stubs_listview_item); + selectedStub = new ObservableField<>(); + selectedStubIndex = FieldUtils.toField(FieldUtils.toObservable(selectedStub).map(stub -> stubs.indexOf(stub))); + + stubs.addAll(StubBase.getAllStubs(StubDirection.ToMachine)); + } + + public void onStubSelected(AdapterView adapterView, View view, int i, long l) { + selectedStub.set((AvailableStub) adapterView.getAdapter().getItem(i)); + Log.i("Results", "Stub clicked: " + selectedStub.get().getName()); + Log.i("Results","Selected User Index: " + selectedStubIndex.get()); + this.view.navigateToStab(() -> + { + eventBus.post(new StubSelectedEvent(selectedStub.get())); + }); + } +} diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/database.png b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/database.png new file mode 100644 index 000000000..4263288e8 Binary files /dev/null and b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/database.png differ diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_database.xml b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_database.xml new file mode 100644 index 000000000..010978dae --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_database.xml @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_launcher_background.xml b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_launcher_background.xml new file mode 100644 index 000000000..1cd2a3665 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_launcher_background.xml @@ -0,0 +1,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_play.xml b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_play.xml new file mode 100644 index 000000000..63c765d2b --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_play.xml @@ -0,0 +1,9 @@ + + + diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_stop.xml b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_stop.xml new file mode 100644 index 000000000..bd94ea32f --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_stop.xml @@ -0,0 +1,4 @@ + + + diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_stubs.xml b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_stubs.xml new file mode 100644 index 000000000..8eea0f836 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/ic_stubs.xml @@ -0,0 +1,6 @@ + + + + + diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/list_view_selectable.xml b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/list_view_selectable.xml new file mode 100644 index 000000000..8895ad0ae --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/list_view_selectable.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/stubs.png b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/stubs.png new file mode 100644 index 000000000..5d6249d61 Binary files /dev/null and b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/stubs.png differ diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/user.png b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/user.png new file mode 100644 index 000000000..8d700439a Binary files /dev/null and b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/drawable/user.png differ diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_main.xml b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_main.xml new file mode 100644 index 000000000..2a3ae6a77 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_main.xml @@ -0,0 +1,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_stub.xml b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_stub.xml new file mode 100644 index 000000000..0db72ee5b --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_stub.xml @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_stubs.xml b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_stubs.xml new file mode 100644 index 000000000..20fc4aae7 --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/activity_stubs.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + diff --git a/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/fragment_login.xml b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/fragment_login.xml new file mode 100644 index 000000000..db174541a --- /dev/null +++ b/Software/Android_Studio/Tango.Stubs.UI/src/main/res/layout/fragment_login.xml @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + +