-
Notifications
You must be signed in to change notification settings - Fork 0
Add Clickable Access Point Details View (Issue #10) #11
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
arunkumar-mourougappane
merged 3 commits into
main
from
add-clickable-access-point-details-view-from-scan-results
Oct 17, 2025
Merged
Add Clickable Access Point Details View (Issue #10) #11
arunkumar-mourougappane
merged 3 commits into
main
from
add-clickable-access-point-details-view-from-scan-results
Oct 17, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Added comprehensive network details page accessible by clicking on scan results. Features Implemented: ✅ Clickable Network List Items (Acceptance Criteria #1): - Each network item in scan results is now clickable - Clicking navigates to /scan/details?id=<network_index> - Added visual feedback on hover (background color change) - Mobile-friendly touch targets with inline onclick handlers ✅ Network Details Page (Acceptance Criteria #2): - New route handler handleScanDetails() at /scan/details - Back navigation button to return to scan results - Graceful error handling for invalid/missing network IDs - Scan results cached in memory to avoid re-scanning ✅ Information Display (Acceptance Criteria #3): Basic Network Information: - Network Name (SSID) with special handling for hidden networks - MAC Address (BSSID) formatted as XX:XX:XX:XX:XX:XX - Handles missing BSSID gracefully Signal Information: - RSSI displayed in dBm - Signal Quality calculated as percentage with 8-level descriptive scale: * 100% Excellent (Very Close) ≥ -30 dBm * 90% Excellent ≥ -50 dBm * 80% Very Good ≥ -60 dBm * 70% Good ≥ -67 dBm * 60% Fair ≥ -70 dBm * 50% Weak ≥ -80 dBm * 30% Very Weak ≥ -90 dBm * 10% Extremely Weak < -90 dBm - Visual signal indicators with emoji icons - Color-coded quality bar (green/yellow/orange/red) Channel Information: - Channel number with frequency band (2.4GHz or 5GHz) - Channel congestion analysis: Clear/Light/Moderate/Heavy/Severe - Counts networks on same channel with color-coded indicators Security Information: - Encryption type with icons for all 9 WiFi auth modes: * Open, WEP, WPA, WPA2, WPA/WPA2, WPA2 Enterprise, WPA3, WPA2/WPA3, WAPI - Security level assessment (None/Weak/Moderate/Good/Excellent) - Color-coded security ratings - Security warnings for open and WEP networks Connection Analysis/Recommendations: - Automated recommendations based on signal strength - Security assessment warnings - Channel congestion impact analysis - Clear ✅/⚠️ /❌ indicators for quick evaluation ✅ UI/UX Requirements (Acceptance Criteria #4): - Consistent purple gradient theme matching existing interface - Responsive design with proper spacing - Card-based layout with background colors for sections - Emoji icons throughout for visual recognition - Clean section-based information hierarchy ✅ Performance & Memory (Acceptance Criteria #5): - Scan result caching structure (CachedScanResult) - Supports up to 50 cached networks - 5-minute cache timeout (300000ms) - Uses PROGMEM and F() macro for static strings - Pre-allocated String buffers (html.reserve(8192)) - Cache validation before displaying details - Memory-efficient: Flash 83.1% (was 82.4%), RAM 16.4% (was 15.8%) ✅ Navigation & Accessibility (Acceptance Criteria #6): - Back to Scan Results button with absolute positioning - Breadcrumb-style navigation structure - Clickable entire network row (not just text) - Inline hover effects for visual feedback ✅ Edge Cases & Error Handling (Acceptance Criteria #7): - Cache expiration check with redirect to /scan - Invalid network ID validation with redirect - Out of bounds index checking - Missing BSSID handling with "Not Available" message - Hidden network SSID display as "<Hidden Network>" Technical Implementation: Data Structures: - CachedScanResult struct stores SSID, RSSI, channel, encryption, BSSID - Static array cachedNetworks[50] for result storage - lastScanTime timestamp for cache invalidation - isCacheValid() function checks timeout Route Registration: - Added /scan/details route in startWebServer() - handleScanDetails() function declaration in web_server.h Scan Page Modifications: - Modified handleScan() to cache results after scan - Made network list items clickable with onclick handlers - Added hover effects with inline onmouseover/onmouseout - Removed WiFi.scanDelete() to preserve results - Added hint text: "💡 Click on any network to view detailed information" - Hidden network handling in scan list Memory Optimization: - All static HTML strings use F() macro - Color values and descriptions stored efficiently - Switch statement for encryption type mapping - Minimal string concatenation with pre-allocation Build Results: ✅ ESP32dev: Flash 83.1% (1,088,625 bytes), RAM 16.4% (53,692 bytes) ✅ Feather ESP32-S3: Flash 71.9% (1,036,493 bytes), RAM 16.0% (52,496 bytes) Testing Checklist Progress: ✅ Builds successfully on both ESP32dev and Feather boards ✅ All encryption types handled with proper icons and descriptions ✅ Signal quality calculation matches acceptance criteria ranges ✅ Channel congestion correctly counts networks ✅ Back navigation implemented ✅ Invalid network ID redirects to scan page ✅ Memory usage within acceptable limits (< 85% flash, < 20% RAM) This implementation fully addresses Issue #10 acceptance criteria with a professional, user-friendly interface for viewing detailed WiFi network information.
Test Coverage Summary: - 19 test cases covering all aspects of Issue #10 implementation - All tests passing on both ESP32 DevKit and Feather ESP32-S3 TFT - Test execution time: ~14s (ESP32), ~5.5s (Feather without upload) New Tests Added: 1. Cache Management (4 tests): - Cache validity with 5-minute timeout - Empty cache detection - Maximum network capacity (50 networks) - Network data integrity validation 2. Network Details Display (4 tests): - Signal quality levels (Excellent to Very Weak) - Encryption type identification (OPEN/WPA/WPA2/WPA3) - Channel to frequency conversion (2.4GHz band) - Network ID validation for safe array access 3. WiFi Fundamentals (5 tests): - RSSI range validation (-120 to 0 dBm) - 2.4GHz channel validation (1-14) - BSSID MAC address format (6 bytes) - Network security level distinctions - WiFi scan timeout constants 4. System Integration (6 tests): - Basic system validation - Configuration constants - Board identification (ESP32 vs Feather) - Helper function utilities - Mock calculation accuracy - Heap memory availability Test Documentation: - Created comprehensive TEST_DOCUMENTATION.md - Includes test descriptions, running instructions, and troubleshooting - Documents mock data structures and configuration constants - Provides CI/CD integration examples Memory and Performance: - Validates heap remains above 20KB minimum - Tests cache footprint (<10KB for 50 networks) - Ensures reasonable structure sizes (<200 bytes per network) Files Modified: - test/test_simple_validation.cpp: Added 8 new test functions for scan details - test/TEST_DOCUMENTATION.md: Comprehensive test documentation (new file) All tests validated with Unity framework on both target boards.
Major Updates to README:
1. New "What's New in v3.1.0" Section:
- Web Server Now Available on Both Boards
* Previously Feather-only, now works on ESP32dev too
* Updated access instructions for both AP and Station modes
- Clickable Network Details View (Issue #10)
* Interactive WiFi scanning with detailed info pages
* 8-level signal quality scale
* Channel congestion analysis with ratings
* Security assessment for all encryption types
* Connection recommendations
* Smart caching (50 networks, 5-minute timeout)
- Memory Optimization Achievements
* ESP32dev: -27.7 KB flash (84.5% → 82.4%)
* Feather: -25.4 KB flash (73.1% → 71.3%)
* PROGMEM storage, F() macro, compiler flags
- Comprehensive Test Coverage
* 19 automated test cases
* 100% pass rate on both boards
* Complete test documentation
- Auto-Restart Web Server
* Seamless mode transitions
* Dynamic device configuration
2. Version Badge Updates:
- Added version badge: 3.1.0-dev
- Added changelog link badge
3. Feature Section Updates:
- Web Server Interface: Changed from "Feather Only" to "Available on Both Boards!"
- Added clickable network details to web interface features
- Updated with comprehensive network information display
- Added visual indicators and color-coded ratings
4. Testing Section Added:
- New section 4: Running Tests (Optional)
- Commands for running automated tests
- Test coverage summary
- Pass rate statistics
- Link to test documentation
5. Command Reference Updates:
- Web Server Commands: Updated header from "Feather Only" to "Available on Both Boards!"
- Enhanced description noting v3.0.0+ availability
- Added clickable network details mention
6. Professional Dashboard Updates:
- Scan Networks page now mentions clickable details (v3.1.0+)
- Added bullet points for network detail features
- Signal quality, congestion, security details listed
7. Memory & Performance Updates:
- Added memory optimization metrics
- Web server caching details
- Flash usage reduction statistics
- Updated code organization section with memory efficiency details
8. Code Organization Updates:
- Total lines: ~4400+ → ~4500+
- Added web interface line count (336+ lines)
- Detailed memory optimization techniques
- Updated test coverage information (19 test cases)
- Compiler optimization flags documented
9. Future Enhancements Updates:
- Marked Web Interface as ✅ Implemented (v3.0.0+)
- Marked Clickable Network Details as ✅ Implemented (v3.1.0+)
- Updated checkboxes to reflect completed features
Key Messaging Changes:
- Emphasis on dual-board support for web server
- Highlighting of new interactive features
- Memory optimization achievements
- Comprehensive test coverage
- Professional quality assurance
All changes accurately reflect the commits since v3.0.0 release:
- Web server enablement for ESP32dev (PR #8)
- Memory optimization (PR #9)
- Clickable AP details implementation (Issue #10)
- Comprehensive test coverage
51 tasks
📊 Build Size Analysis
Analysis
This analysis helps maintain optimal memory usage across code changes. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🎯 Overview
This PR implements a comprehensive clickable network details view for the web interface, addressing all acceptance criteria from Issue #10. It also includes memory optimization improvements and comprehensive test coverage.
✨ Features Implemented
📱 Clickable Network Details View (Issue #10)
Interactive WiFi Scanning Enhancement:
/scan/details?id=<network_index>Detailed Network Information Display:
Basic Information
Signal Analysis
Channel Information
Security Assessment
Connection Recommendations
Smart Caching System:
⚡ Memory Optimization (PR #9)
Significant Flash and RAM Savings:
Optimization Techniques:
-Os,-ffunction-sections,-fdata-sections,-Wl,--gc-sections🧪 Comprehensive Test Coverage
19 Automated Test Cases covering:
Test Results:
Test Documentation:
test/TEST_DOCUMENTATION.md📊 Technical Details
Files Changed
include/web_server.h- AddedhandleScanDetails()declarationsrc/web_server.cpp- Added 336 lines for network details feature/scan/detailstest/test_simple_validation.cpp- Added 8 test functions (150+ lines)test/TEST_DOCUMENTATION.md- Complete test documentation (330+ lines)README.md- Updated with all v3.1.0 changes (116 insertions)platformio.ini- Memory optimization compiler flagsMemory Impact
Build Status
🔗 Related Issues
Closes #10
📝 Testing Checklist
📚 Documentation
🚀 Ready to Merge
This PR is complete and ready for review. All acceptance criteria from Issue #10 have been met, comprehensive test coverage ensures code quality, and memory optimizations improve overall performance.