# -*- coding: utf-8 -*-
"""
Ejemplo 02: Listar dispositivos de audio.

Enumera todos los dispositivos de salida disponibles en el sistema.

Uso:
	python 02_listar_dispositivos.py
"""

import ctypes
from basskit.dlls.bass import bass
from basskit.estructuras.bass import BASS_DEVICEINFO
from basskit.constantes.bass import (
	BASS_DEVICE_ENABLED,
	BASS_DEVICE_DEFAULT,
	BASS_DEVICE_INIT,
)


def main():
	"""Lista los dispositivos de salida disponibles."""
	print("Dispositivos de salida de audio:")
	print("-" * 50)

	indice = 0
	info = BASS_DEVICEINFO()

	while bass.BASS_GetDeviceInfo(indice, ctypes.byref(info)):
		nombre = info.name.decode("utf-8", errors="replace") if info.name else "(sin nombre)"
		driver = info.driver.decode("utf-8", errors="replace") if info.driver else ""
		flags = info.flags

		estado = []
		if flags & BASS_DEVICE_ENABLED:
			estado.append("Habilitado")
		if flags & BASS_DEVICE_DEFAULT:
			estado.append("Por defecto")
		if flags & BASS_DEVICE_INIT:
			estado.append("Inicializado")

		estado_str = ", ".join(estado) if estado else "Deshabilitado"

		print(f"  [{indice}] {nombre}")
		if driver:
			print(f"      Driver: {driver}")
		print(f"      Estado: {estado_str}")
		print()

		indice += 1

	if indice == 0:
		print("  No se encontraron dispositivos.")
	else:
		print(f"Total: {indice} dispositivo(s)")


if __name__ == "__main__":
	main()
