From 9bd16f3dd073b8b1404bb46a57e51bc7d7d844b7 Mon Sep 17 00:00:00 2001 From: Eric Ratliff Date: Sat, 24 Jan 2026 12:47:04 -0600 Subject: [PATCH] Fixed some errors that were showing --- linux/lib.sh | 231 ++++++++++++++++++++++++++++++++++++++++++--- tests/run-tests.sh | 20 +++- 2 files changed, 237 insertions(+), 14 deletions(-) diff --git a/linux/lib.sh b/linux/lib.sh index a46410f..fe4f84e 100755 --- a/linux/lib.sh +++ b/linux/lib.sh @@ -90,25 +90,230 @@ CONTROL_HUB_PORT="5555" while [[ $# -gt 0 ]]; do case $1 in - -h|--help) echo "Deploy to Control Hub"; echo "Usage: $0 [--usb|--wifi] [-i IP]"; exit 0 ;; + -h|--help) + echo "════════════════════════════════════════════════════════════════" + echo " Deploy FTC Project to Control Hub" + echo "════════════════════════════════════════════════════════════════" + echo "" + echo "Usage: $0 [options]" + echo "" + echo "Options:" + echo " --usb Force USB connection" + echo " --wifi Force WiFi Direct connection" + echo " -i, --ip Custom Control Hub IP" + echo " -h, --help Show this help" + echo "" + echo "Examples:" + echo " $0 # Auto-detect connection" + echo " $0 --usb # Use USB only" + echo " $0 --wifi # Use WiFi Direct" + echo " $0 -i 192.168.1.5 # Custom IP" + echo "" + exit 0 + ;; -i|--ip) CONTROL_HUB_IP="$2"; shift 2 ;; + --usb) FORCE_USB=true; shift ;; + --wifi) FORCE_WIFI=true; shift ;; *) shift ;; esac done -echo "Deploying to SDK..." -./gradlew deployToSDK || exit 1 -echo "Building APK..." -cd "${HOME}/ftc-sdk" && ./gradlew build || exit 1 -APK_PATH="${HOME}/ftc-sdk/FtcRobotController/build/outputs/apk/debug/FtcRobotController-debug.apk" -[ -f "$APK_PATH" ] || { echo "APK not found"; exit 1; } -echo "Installing..." -if adb devices | grep -q device; then - adb install -r "$APK_PATH" && echo "✓ Deployed!" || exit 1 -else - adb connect "$CONTROL_HUB_IP:$CONTROL_HUB_PORT" && sleep 2 - adb install -r "$APK_PATH" && echo "✓ Deployed!" || exit 1 +echo "════════════════════════════════════════════════════════════════" +echo " FTC Project Deployment" +echo "════════════════════════════════════════════════════════════════" +echo "" + +# Step 1: Deploy code to SDK +echo "Step 1: Deploying code to SDK TeamCode..." +if ! ./gradlew deployToSDK; then + echo "" + echo "Error: Failed to deploy code" + echo "Make sure you're in the project directory" + exit 1 fi +echo "✓ Code deployed" +echo "" + +# Step 2: Build APK +echo "Step 2: Building APK..." +SDK_DIR="${HOME}/ftc-sdk" + +if [ ! -d "$SDK_DIR" ]; then + echo "" + echo "════════════════════════════════════════════════════════════════" + echo " Error: FTC SDK Not Found" + echo "════════════════════════════════════════════════════════════════" + echo "" + echo "The FTC SDK should be at: $SDK_DIR" + echo "" + echo "This should have been set up when you created the project." + echo "" + echo "To fix:" + echo " git clone --depth 1 --branch v10.1.1 \\" + echo " https://github.com/FIRST-Tech-Challenge/FtcRobotController.git \\" + echo " ~/ftc-sdk" + echo "" + exit 1 +fi + +cd "$SDK_DIR" || exit 1 + +# Check for Android SDK configuration +if [ ! -f "local.properties" ] && [ -z "$ANDROID_HOME" ]; then + echo "" + echo "════════════════════════════════════════════════════════════════" + echo " Error: Android SDK Not Configured" + echo "════════════════════════════════════════════════════════════════" + echo "" + echo "The FTC SDK needs the Android SDK to build APKs." + echo "" + echo "FIX OPTION 1: Set ANDROID_HOME (recommended)" + echo " export ANDROID_HOME=/path/to/android/sdk" + echo " echo 'export ANDROID_HOME=/path/to/android/sdk' >> ~/.bashrc" + echo "" + echo "FIX OPTION 2: Create local.properties" + echo " echo 'sdk.dir=/path/to/android/sdk' > ~/ftc-sdk/local.properties" + echo "" + echo "════════════════════════════════════════════════════════════════" + echo " How to Install Android SDK" + echo "════════════════════════════════════════════════════════════════" + echo "" + echo "1. Download Android Studio:" + echo " https://developer.android.com/studio" + echo "" + echo "2. Install and open Android Studio" + echo "" + echo "3. Go to: Tools → SDK Manager" + echo "" + echo "4. Note the 'Android SDK Location' path shown" + echo "" + echo "5. Use that path in FIX OPTION 1 or 2 above" + echo "" + echo "Typical Android SDK locations:" + echo " • Linux: ~/Android/Sdk" + echo " • macOS: ~/Library/Android/sdk" + echo " • Windows: C:\\Users\\YourName\\AppData\\Local\\Android\\Sdk" + echo "" + echo "════════════════════════════════════════════════════════════════" + echo "" + exit 1 +fi + +if ! ./gradlew build; then + echo "" + echo "Error: APK build failed" + echo "Check the error messages above for details" + exit 1 +fi + +APK_PATH="$SDK_DIR/FtcRobotController/build/outputs/apk/debug/FtcRobotController-debug.apk" +if [ ! -f "$APK_PATH" ]; then + echo "" + echo "Error: APK not found at expected location" + echo "Expected: $APK_PATH" + exit 1 +fi +echo "✓ APK built" +echo "" + +# Step 3: Install to Control Hub +echo "Step 3: Installing to Control Hub..." + +if ! command -v adb &> /dev/null; then + echo "" + echo "════════════════════════════════════════════════════════════════" + echo " Error: adb Command Not Found" + echo "════════════════════════════════════════════════════════════════" + echo "" + echo "The 'adb' tool is needed to install APKs to the Control Hub." + echo "" + echo "Install:" + echo " • Ubuntu/Debian: sudo apt install android-tools-adb" + echo " • Arch Linux: sudo pacman -S android-tools" + echo " • macOS: brew install android-platform-tools" + echo "" + echo "Or download Android Platform Tools:" + echo " https://developer.android.com/studio/releases/platform-tools" + echo "" + exit 1 +fi + +INSTALLED=false + +# Try USB first +if [ "$FORCE_WIFI" != "true" ]; then + USB_COUNT=$(adb devices | grep -v "List" | grep "device$" | wc -l) + if [ "$USB_COUNT" -gt 0 ]; then + echo "✓ Control Hub connected via USB" + if adb install -r "$APK_PATH"; then + INSTALLED=true + fi + elif [ "$FORCE_USB" = "true" ]; then + echo "" + echo "Error: No USB device found (--usb specified)" + echo "" + echo "Make sure:" + echo " • Control Hub is powered on" + echo " • USB cable is connected" + echo " • USB debugging is enabled" + echo "" + exit 1 + fi +fi + +# Try WiFi if USB didn't work +if [ "$INSTALLED" = "false" ] && [ "$FORCE_USB" != "true" ]; then + echo "Connecting to Control Hub via WiFi ($CONTROL_HUB_IP:$CONTROL_HUB_PORT)..." + adb connect "$CONTROL_HUB_IP:$CONTROL_HUB_PORT" 2>&1 | grep -v "cannot connect" || true + sleep 2 + if adb devices | grep -q "$CONTROL_HUB_IP"; then + echo "✓ Connected via WiFi" + if adb install -r "$APK_PATH"; then + INSTALLED=true + fi + fi +fi + +if [ "$INSTALLED" = "false" ]; then + echo "" + echo "════════════════════════════════════════════════════════════════" + echo " Error: Could Not Connect to Control Hub" + echo "════════════════════════════════════════════════════════════════" + echo "" + echo "Connection options:" + echo "" + echo "1. USB (Recommended)" + echo " • Plug Control Hub into computer" + echo " • Run: $0 --usb" + echo "" + echo "2. WiFi Direct" + echo " • Connect to 'FIRST-xxxx-RC' network" + echo " • Run: $0 --wifi" + echo " • Default IP: 192.168.43.1" + echo "" + echo "3. Custom Network" + echo " • Find Control Hub IP on your network" + echo " • Run: $0 -i YOUR_IP" + echo "" + echo "Debug:" + echo " • Check devices: adb devices" + echo " • Test connection: adb connect $CONTROL_HUB_IP:$CONTROL_HUB_PORT" + echo "" + exit 1 +fi + +echo "" +echo "════════════════════════════════════════════════════════════════" +echo " ✓ Deployment Complete!" +echo "════════════════════════════════════════════════════════════════" +echo "" +echo "On Driver Station:" +echo " 1. Go to OpModes menu" +echo " 2. Select TeleOp → 'Main TeleOp'" +echo " 3. Press INIT, then START" +echo "" +echo "Your code is now running on the robot! 🤖" +echo "" ENDSCRIPT chmod +x "$project_dir/deploy-to-robot.sh" } diff --git a/tests/run-tests.sh b/tests/run-tests.sh index d8598e8..05a4575 100755 --- a/tests/run-tests.sh +++ b/tests/run-tests.sh @@ -11,12 +11,14 @@ PROJECT_ROOT="$(dirname "$SCRIPT_DIR")" RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' +BLUE='\033[0;34m' NC='\033[0m' # No Color # Test results TESTS_RUN=0 TESTS_PASSED=0 TESTS_FAILED=0 +FAILED_TESTS=() # Helper functions pass() { @@ -27,6 +29,7 @@ pass() { fail() { echo -e "${RED}✗${NC} $1" + FAILED_TESTS+=("$1") ((TESTS_FAILED++)) ((TESTS_RUN++)) } @@ -35,6 +38,12 @@ info() { echo -e "${YELLOW}ℹ${NC} $1" } +section() { + echo "" + echo -e "${BLUE}▶${NC} $1" + echo "────────────────────────────────────────────────────────────────" +} + # Test suite selection RUN_UNIT=true RUN_SYSTEM=true @@ -257,6 +266,15 @@ echo "" echo "Total: $TESTS_RUN" echo -e "${GREEN}Passed: $TESTS_PASSED${NC}" echo -e "${RED}Failed: $TESTS_FAILED${NC}" + +if [ $TESTS_FAILED -gt 0 ]; then + echo "" + echo "Failed tests:" + for test in "${FAILED_TESTS[@]}"; do + echo -e " ${RED}✗${NC} $test" + done +fi + echo "" if [ $TESTS_FAILED -eq 0 ]; then @@ -267,4 +285,4 @@ else echo -e "${RED}✗ Some tests failed${NC}" echo "" exit 1 -fi +fi \ No newline at end of file