From 7c15c99acdde747952539766a1201c55b06e77f8 Mon Sep 17 00:00:00 2001
From: Dominik Grzelak <dominik.grzelak@tu-dresden.de>
Date: Tue, 24 Jul 2018 10:42:13 +0200
Subject: [PATCH] light state (on/off) can now be controlled

---
 .../inf/st/sensorsharing/MainActivity.java    | 27 +++++++++++++++++++
 .../inf/st/sensorsharing/MqttTopics.java      |  2 ++
 mobile/src/main/res/layout/activity_main.xml  | 14 ++++++++++
 3 files changed, 43 insertions(+)

diff --git a/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java b/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java
index 5e154a0..7cb74e1 100644
--- a/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java
+++ b/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MainActivity.java
@@ -18,6 +18,7 @@ import android.widget.CompoundButton;
 import android.widget.EditText;
 import android.widget.TextView;
 import android.widget.Toast;
+import android.widget.ToggleButton;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
 import com.fasterxml.jackson.databind.ObjectMapper;
@@ -98,6 +99,7 @@ public class MainActivity extends AppCompatActivity implements
     private String clientId;
     private AppSettings settings;
     MadgwickAHRS filter;
+    ToggleButton switchLight;
 
     private EditText valueServerURI;
 
@@ -176,9 +178,34 @@ public class MainActivity extends AppCompatActivity implements
         String mqttServer = settings.get(SETTINGS_MQTT_SERVER, getResources().getString(R.string.default_mqtt_server_uri));
         valueServerURI.setText(mqttServer);
 
+        switchLight = findViewById(R.id.toggleButton_lightonoff);
+        switchLight.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
+            @Override
+            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
+                switch (buttonView.getId()) {
+                    case R.id.toggleButton_lightonoff:
+                        sendMqttUpdates.put(phoneTopics.mqtt_topic_onoff, true); // is always true
+                        sendLightOnOffUpdateOfSmartphone(isChecked);
+                        break;
+                }
+            }
+        });
+
         setupSendUpdatesCheckbox();
     }
 
+    private void sendLightOnOffUpdateOfSmartphone(boolean state) {
+        ObjectMapper mapper = new ObjectMapper();
+        HashMap<String, Boolean> dataLight = new HashMap<>();
+        dataLight.put("on", state);
+        try {
+            String s = mapper.writeValueAsString(dataLight);
+            sendUpdate(phoneTopics.mqtt_topic_onoff, s);
+        } catch (JsonProcessingException e) {
+            e.printStackTrace();
+        }
+    }
+
     private void updateMqttTopics(String wearableName) {
         // moto: "Moto 360"
         // polar: ??
diff --git a/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MqttTopics.java b/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MqttTopics.java
index 2dbb179..4ada913 100644
--- a/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MqttTopics.java
+++ b/mobile/src/main/java/de/tudresden/inf/st/sensorsharing/MqttTopics.java
@@ -6,11 +6,13 @@ public class MqttTopics {
     public final String mqtt_topic_acceleration;
     public final String mqtt_topic_rotation;
     public final String mqtt_topic_rotation_ahrs;
+    public final String mqtt_topic_onoff;
 
     public MqttTopics(String subTopic) {
         mqtt_topic_brightness = MQTT_TOPIC_BASE + subTopic + "/brightness";
         mqtt_topic_acceleration = MQTT_TOPIC_BASE + subTopic + "/acceleration";
         mqtt_topic_rotation = MQTT_TOPIC_BASE + subTopic + "/rotation";
         mqtt_topic_rotation_ahrs = MQTT_TOPIC_BASE + subTopic + "/rotationahrs";
+        mqtt_topic_onoff = MQTT_TOPIC_BASE + subTopic + "/onoff";
     }
 }
diff --git a/mobile/src/main/res/layout/activity_main.xml b/mobile/src/main/res/layout/activity_main.xml
index 0f5e509..12038cd 100644
--- a/mobile/src/main/res/layout/activity_main.xml
+++ b/mobile/src/main/res/layout/activity_main.xml
@@ -263,4 +263,18 @@
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/separator_wear" />
 
+    <ToggleButton
+        android:id="@+id/toggleButton-lightonoff"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginEnd="8dp"
+        android:layout_marginStart="8dp"
+        android:layout_marginTop="8dp"
+        android:text="Switch On"
+        android:textOn="Switch Light OFF"
+        android:textOff="Switch Light ON"
+        app:layout_constraintEnd_toEndOf="@+id/checkBox_send_rotation_ahrs"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toBottomOf="@+id/checkBox_send_rotation_ahrs" />
+
 </android.support.constraint.ConstraintLayout>
-- 
GitLab