Skip to content

Latest commit

 

History

History
167 lines (134 loc) · 7.75 KB

File metadata and controls

167 lines (134 loc) · 7.75 KB

UserSettings Plugin - Product Overview

Product Functionality

The UserSettings plugin provides a unified, persistent user preferences management system for RDK-based devices. It enables applications and services to store, retrieve, and synchronize user-configurable settings across the entire platform, ensuring a consistent user experience regardless of which application or service accesses the settings.

Core Features

Comprehensive Settings Management

The plugin manages a complete spectrum of user preferences across five key categories:

  1. Audio Preferences

    • Enable/disable audio description for visually impaired users
    • Configure preferred audio language priorities for multi-language content
  2. Caption and Subtitle Control

    • Toggle closed captions on/off
    • Set preferred caption language priorities
    • Select closed caption service type (CC1-CC4, AUTO)
  3. Parental Controls

    • PIN-based content access control
    • Age-based viewing restrictions (G, PG, PG-13, R, NC-17, etc.)
    • Time-window restrictions for content access
    • Watershed hour enforcement for live and recorded content
    • Block unrated content
    • Purchase protection with PIN
    • Configurable content PIN codes
  4. Accessibility Features

    • System presentation language selection
    • High contrast display mode for enhanced visibility
    • Voice guidance for visually impaired navigation
    • Adjustable voice guidance speech rate (0.1x to 10x)
    • Voice guidance hints and prompts
  5. Privacy Settings

    • Privacy mode configuration for data collection preferences

Real-Time Synchronization

  • Event-driven notification system ensures all applications receive immediate updates when settings change
  • Cross-application consistency: settings modified by one app are instantly reflected in all other apps
  • No polling required - efficient push-based notification model

Data Persistence

  • All settings automatically persist across device reboots
  • Leverages the PersistentStore plugin for robust storage
  • Default value fallback ensures system always returns valid values

Use Cases and Target Scenarios

Set-Top Box (STB) Applications

Scenario: A cable/satellite STB serving a multi-user household

  • Parents configure parental controls to restrict children's viewing during school hours
  • Family members set their preferred audio/caption languages based on individual preferences
  • Accessibility settings enable elderly users to navigate with voice guidance
  • Settings persist across power cycles and software updates

Streaming Media Players

Scenario: Smart TV or streaming stick used by family members

  • Multiple user profiles can be implemented using the UserSettings API
  • Consistent caption and audio preferences across all streaming apps
  • Centralized privacy settings management for data collection opt-in/opt-out

Hospitality and Commercial Deployments

Scenario: Hotels, hospitals, or assisted living facilities

  • Default settings configured for guests/patients during device provisioning
  • Accessibility features easily enabled for users with disabilities
  • Uniform presentation language across entire facility deployment

Accessibility-Focused Applications

Scenario: Applications designed for users with disabilities

  • Voice guidance configuration for blind/low-vision users
  • High contrast mode for users with visual impairments
  • Audio description support for video content
  • Adjustable voice speed accommodates different user needs

Content Management and Compliance

Scenario: Regulatory compliance and content filtering

  • Enforce age-appropriate content viewing through parental controls
  • Watershed hour compliance for broadcast content
  • Audit and reporting capabilities via Inspector interface
  • Purchase protection to prevent unauthorized transactions

API Capabilities

JSON-RPC API

The plugin exposes a comprehensive JSON-RPC API with methods for:

  • Getters: Retrieve individual settings or bulk settings via Inspector interface
  • Setters: Update individual settings with validation
  • Events: Real-time notifications for all setting changes

COM-RPC Interfaces

For native service integration:

  • IUserSettings: Standard user settings interface for get/set operations
  • IUserSettingsInspector: Bulk query interface for efficient multi-setting retrieval
  • IConfiguration: Plugin configuration interface

Integration Benefits

  1. Zero-Configuration Discovery: Automatic discovery via Thunder framework
  2. Language-Agnostic: JSON-RPC API accessible from any programming language
  3. Type-Safe Native Interface: COM-RPC for C++ services requiring type safety
  4. Versioned API: Semantic versioning ensures backward compatibility
  5. Security: Optional security token validation for protected operations

Performance and Reliability

Performance Characteristics

  • Low Latency: Settings retrieval typically < 5ms (depends on PersistentStore performance)
  • Minimal Memory Footprint: Lightweight implementation with no caching overhead
  • Efficient Notifications: Event-based push model eliminates polling overhead
  • Scalable: Supports multiple concurrent clients without performance degradation

Reliability Features

  • Graceful Degradation: Returns default values if PersistentStore unavailable
  • Thread-Safe: Mutex-protected operations ensure data consistency in multi-threaded environments
  • Error Recovery: Comprehensive error handling with meaningful error codes
  • Validation: Input parameter validation prevents invalid state persistence
  • Crash Resilience: Plugin isolation ensures crashes don't affect other Thunder plugins

Quality Assurance

  • L1 Unit Tests: Component-level testing with code coverage tracking
  • L2 Integration Tests: End-to-end workflow validation
  • Continuous Integration: Automated testing on every code change
  • Coverity Static Analysis: Integrated security and quality scanning
  • Compliance: Follows RDK coding standards and best practices

Deployment and Maintenance

Easy Deployment

  • Standard Thunder plugin packaging
  • Configurable via JSON configuration file
  • Controlled startup order integration
  • Auto-start capability for seamless user experience

Maintainability

  • Modular architecture separates API layer from implementation
  • Comprehensive logging for debugging and diagnostics
  • Version tracking via CHANGELOG.md
  • Clear separation of concerns enables independent component updates

Backward Compatibility

  • API versioning strategy maintains compatibility across updates
  • Default value mechanism ensures existing clients continue working
  • Non-breaking additions via Inspector interface
  • Semantic versioning (Current: v2.3.0)

Competitive Advantages

  1. Unified Settings Store: Single source of truth for all user preferences across the platform
  2. Real-Time Synchronization: Immediate cross-application consistency without custom integration
  3. Comprehensive Coverage: Covers audio, video, accessibility, parental controls, and privacy in one plugin
  4. Standards-Based: Leverages Thunder/WPEFramework industry-standard plugin architecture
  5. Production-Ready: Battle-tested in commercial RDK deployments worldwide
  6. Active Development: Regular updates with new features (v2.3.0 released May 2025)
  7. Open Source: Apache 2.0 license enables customization and community contributions

Future Roadmap Considerations

Potential enhancements based on community feedback:

  • Multi-user profile support with per-profile settings
  • Cloud synchronization for settings across multiple devices
  • Settings import/export functionality
  • Enhanced parental control rules engine
  • Integration with emerging accessibility standards
  • Extended Inspector interface for batch operations
  • Settings versioning and rollback capability