#ifndef SPEAKER_H #define SPEAKER_H #include "types.h" /* * Caller speaker functions * ============================================================================ */ void speaker_on(unsigned ms, unsigned short period); void speaker_off(void); void speaker_pause(void); void speaker_resume(void); /* * Time length converions * ============================================================================= */ #define SPEAKER_PERIOD_BASE 1193180U static inline unsigned speaker_period_to_Hz(unsigned short period) { unsigned Hz; Hz = (period)? (SPEAKER_PERIOD_BASE/period): 18; return Hz; } static inline unsigned short speaker_Hz_to_period(unsigned Hz) { unsigned short period; period = (Hz > 18)? (SPEAKER_PERIOD_BASE/Hz): 65535; return period; } /* * Speaker registration * ============================================================================ */ typedef void (*speaker_on_t)(void *gp, unsigned ms, unsigned short period); typedef void (*speaker_off_t)(void *gp); /* an invalid value of speaker_on || speaker_off resets the default speaker */ /* Each new sound event should override the last one */ void register_speaker(void *gp, speaker_on_t speaker_on, speaker_off_t speaker_off); /* * Speaker emulation routines * ============================================================================= */ /* for now declare these here */ void X_speaker_on(void *gp, unsigned ms, unsigned short period); void X_speaker_off(void *gp); void console_speaker_on(void *gp, unsigned ms, unsigned short period); void console_speaker_off(void *gp); /* * These are used by kbd code but reside in timers.c * ============================================================================= */ Bit8u spkr_io_read(ioport_t port); void spkr_io_write(ioport_t port, Bit8u value); #endif /* SPEAKER_H */