From 3edab82535898a82d22f7eb71dc6345ccbfabb2e Mon Sep 17 00:00:00 2001 From: Luca Warmenhoven Date: Fri, 17 May 2024 12:42:10 +0200 Subject: [PATCH] Added example exercises --- .../fitbot/exercise/AbstractExercise.java | 18 ++++---- .../example/fitbot/exercise/EMuscleGroup.java | 18 +++++++- .../exercise/exercises/BicepCurlExercise.java | 45 +++++++++++++++++++ 3 files changed, 72 insertions(+), 9 deletions(-) create mode 100644 code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/exercises/BicepCurlExercise.java diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/AbstractExercise.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/AbstractExercise.java index 2265269..2a7d4d6 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/AbstractExercise.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/AbstractExercise.java @@ -10,7 +10,7 @@ import java.util.Objects; public abstract class AbstractExercise implements IWebSocketHandler { - private EMuscleGroup muscleGroup; + private EMuscleGroup[] muscleGroups; private EExerciseType exerciseType; private GesturePath path; @@ -22,12 +22,12 @@ public abstract class AbstractExercise implements IWebSocketHandler { /** * Constructor for the AbstractExercise class. * - * @param muscleGroup The muscle group of the exercise. + * @param muscleGroups The muscle group of the exercise. * @param exerciseType The type of exercise. * @param path The path of the exercise. */ - public AbstractExercise(EMuscleGroup muscleGroup, EExerciseType exerciseType, GesturePath path) { - this.muscleGroup = muscleGroup; + public AbstractExercise(EMuscleGroup[] muscleGroups, EExerciseType exerciseType, GesturePath path) { + this.muscleGroups = muscleGroups; this.exerciseType = exerciseType; this.path = path; } @@ -36,7 +36,7 @@ public abstract class AbstractExercise implements IWebSocketHandler { * Start the exercise. * This method starts a WebSocket server */ - public void startExercise() { + public final void startExercise() { // Ensure no other exercise is active. if (currentExercise != null && currentExercise != this) { @@ -81,6 +81,8 @@ public abstract class AbstractExercise implements IWebSocketHandler { webSocket.stop(); webSocket = null; } + currentExercise = null; + this.onStopExercise(); } /** @@ -91,7 +93,7 @@ public abstract class AbstractExercise implements IWebSocketHandler { /** * Method for stopping this exercise. */ - public abstract void stopExercise(); + public abstract void onStopExercise(); /** * Check if the current exercise is the current activity. @@ -103,8 +105,8 @@ public abstract class AbstractExercise implements IWebSocketHandler { /** * Get the muscle group of the exercise. */ - public EMuscleGroup getMuscleGroup() { - return muscleGroup; + public EMuscleGroup[] getMuscleGroup() { + return muscleGroups; } /** diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/EMuscleGroup.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/EMuscleGroup.java index 3a25740..b3f2c4e 100644 --- a/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/EMuscleGroup.java +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/EMuscleGroup.java @@ -1,5 +1,21 @@ package com.example.fitbot.exercise; public enum EMuscleGroup { - // TODO: Implement + // TODO: Implement + + TORSO(0), + ARMS(1), + LEGS(2), + BALANCE(3); + + int muscleGroupIdentifier; + + EMuscleGroup(int identifier) { + this.muscleGroupIdentifier = identifier; + } + + public int getIdentifier() { + return this.muscleGroupIdentifier; + } + } diff --git a/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/exercises/BicepCurlExercise.java b/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/exercises/BicepCurlExercise.java new file mode 100644 index 0000000..e9faf79 --- /dev/null +++ b/code/src/Fitbot/app/src/main/java/com/example/fitbot/exercise/exercises/BicepCurlExercise.java @@ -0,0 +1,45 @@ +package com.example.fitbot.exercise.exercises; + +import com.example.fitbot.exercise.AbstractExercise; +import com.example.fitbot.exercise.EExerciseType; +import com.example.fitbot.exercise.EMuscleGroup; +import com.example.fitbot.exercise.FitnessManager; +import com.example.fitbot.util.server.WebSocket; + +import java.net.Socket; + +public class BicepCurlExercise extends AbstractExercise { + + private static final String UNIQUE_ID = "bicep_curl"; + + /** + * Constructor for the BicepCurlExercise class. + */ + public BicepCurlExercise() { + super( + new EMuscleGroup[] { EMuscleGroup.ARMS }, + EExerciseType.POWER, + FitnessManager.acquirePath(UNIQUE_ID) + ); + } + + @Override + public boolean isActivityFinished() { + return false; + } + + @Override + public void onStopExercise() { + + } + + @Override + public void onMessageReceived(WebSocket.Message message, WebSocket.MessageReply replier) { + + } + + @Override + public void onError(Socket socket, String error) { + + } +}