PSGadget.psd1

@{
    # Module metadata
    RootModule           = 'PSGadget.psm1'
    ModuleVersion        = '0.3.7'
    CompatiblePSEditions = @('Desktop', 'Core')
    GUID                 = '72440f23-d3c6-4249-83eb-9affa6df882b'

    # PowerShell version requirements
    PowerShellVersion = '5.1'

    # Author information
    Author      = 'Mark Go'
    CompanyName = 'Mark Go'
    Copyright   = '(c) 2026 Mark Go. All rights reserved.'
    
    # Description
    Description = 'Production-grade PowerShell module for FTDI hardware control and MicroPython orchestration'
    
    # Exported functions - explicitly declared, no wildcards
    FunctionsToExport = @(
        'New-PsGadgetFtdi',
        'Test-PsGadgetEnvironment',
        'Get-FTDevice',
        'Connect-PsGadgetFtdi',
        'Get-PsGadgetMpy',
        'Connect-PsGadgetMpy',
        'Set-PsGadgetGpio',
        'Get-PsGadgetFtdiEeprom',
        'Set-PsGadgetFt232rCbusMode',
        'Set-PsGadgetFtdiEeprom',
        'Set-PsGadgetFtdiMode',
        'Get-PsGadgetConfig',
        'Get-PsGadgetLog',
        'Set-PsGadgetConfig',
        'Install-PsGadgetMpyScript',
        'Get-PsGadgetEspNowDevices',
        'Invoke-PsGadgetI2CScan',
        'Invoke-PsGadgetI2C',
        'Invoke-PsGadgetStepper'
    )
    
    # No cmdlets, variables, or aliases exported
    CmdletsToExport = @()
    VariablesToExport = @()
    AliasesToExport = @('Test-PsGadgetSetup', 'Get-PsGadgetFtdi')
    
    # Files included in this module
    FileList = @(
        'PSGadget.psm1',
        'Classes/PsGadgetLogger.ps1',
        'Classes/PsGadgetI2CDevice.ps1',
        'Classes/PsGadgetSsd1306.ps1',
        'Classes/PsGadgetFtdi.ps1',
        'Classes/PsGadgetMpy.ps1',
        'Classes/PsGadgetPca9685.ps1',
        'Private/Ftdi.PInvoke.ps1',
        'Private/Stepper.Backend.ps1',
        'Private/Ftdi.Backend.ps1',
        'Private/Ftdi.Cbus.ps1',
        'Private/Ftdi.IoT.ps1',
        'Private/Ftdi.Mpsse.ps1',
        'Private/Ftdi.Unix.ps1',
        'Private/Ftdi.Windows.ps1',
        'Private/Initialize-FtdiAssembly.ps1',
        'Private/Initialize-PsGadgetConfig.ps1',
        'Private/Initialize-PsGadgetEnvironment.ps1',
        'Private/Invoke-NativeProcess.ps1',
        'Private/Mpy.Backend.ps1',
        'Private/Send-PsGadgetI2CWrite.ps1',
        'Private/Ssd1306.Backend.ps1',
        'Public/Connect-PsGadgetFtdi.ps1',
        'Public/Connect-PsGadgetMpy.ps1',
        'Public/Get-PsGadgetConfig.ps1',
        'Public/Get-PsGadgetLog.ps1',
        'Public/Get-PsGadgetEspNowDevices.ps1',
        'Public/Get-PsGadgetFtdiEeprom.ps1',
        'Public/Install-PsGadgetMpyScript.ps1',
        'Public/Invoke-PsGadgetStepper.ps1',
        'Public/Invoke-PsGadgetI2CScan.ps1',
        'Public/Invoke-PsGadgetI2C.ps1',
        'Public/Get-FTDevice.ps1',
        'Public/Get-PsGadgetMpy.ps1',
        'Public/New-PsGadgetFtdi.ps1',
        'Public/Test-PsGadgetEnvironment.ps1',
        'Public/Set-PsGadgetConfig.ps1',
        'Public/Set-PsGadgetFt232rCbusMode.ps1',
        'Public/Set-PsGadgetFtdiEeprom.ps1',
        'Public/Set-PsGadgetFtdiMode.ps1',
        'Public/Set-PsGadgetGpio.ps1',
        'lib/net48/FTD2XX_NET.dll',
        'lib/net48/FTD2XX_NET.xml',
        'lib/netstandard20/FTD2XX_NET.dll',
        'lib/netstandard20/FTD2XX_NET.xml',
        'lib/netstandard20/FTD2XX_NET.deps.json',
        'lib/native/FTD2XX.dll',
        'lib/README.md'
    )
    
    # Private data
    PrivateData = @{
        PSData = @{
            Tags = @('FTDI', 'Hardware', 'GPIO', 'UART', 'I2C', 'SPI', 'PsGadget',
                     'MicroPython', 'ESP32', 'ESP-NOW', 'IoT', 'FT232H', 'FT232R',
                     'SSD1306', 'OLED', 'Telemetry')
            LicenseUri   = 'https://opensource.org/licenses/MIT'
            ProjectUri   = 'https://github.com/MarkGzero/PsGadget'
            IconUri      = ''
            ReleaseNotes = 'v0.3.7: Removed 9 deprecated SSD1306/PCA9685 wrapper functions; Send-PsGadgetI2CWrite demoted to internal private helper. Invoke-PsGadgetI2C is now the sole I2C entry point. PsGadgetFtdi.GetDisplay/Display/ClearDisplay use class methods directly. v0.3.6: Invoke-PsGadgetStepper - unified stepper motor cmdlet for FT232R/FT232H via async bit-bang. Bulk USB write for jitter-free step timing. Calibrated StepsPerRevolution (28BYJ-48: ~4075.77 half-steps, NOT 4096). Angle-based moves via -Degrees. PsGadgetFtdi.Step() and .StepDegrees() shorthand methods. v0.3.5: SSD1306 OLED integrated into Invoke-PsGadgetI2C. v0.3.4: ESP-NOW wireless telemetry.'
        }
    }
}