#include "watch.h"
-/** @brief Returns true if either the buzzer or the LED driver is enabled.
- * @details Both the buzzer and the LED use the TCC peripheral to drive their behavior. This function returns true if that
- * peripheral is enabled. You can use this function to determine whether you need to call the watch_disable_leds or
- * or watch_enable_buzzer functions before using these peripherals.
- */
-bool watch_is_buzzer_or_led_enabled(void);
-
-/** @addtogroup tcc Buzzer and LED Control (via the TCC peripheral)
- * @brief This section covers functions related to Timer Counter for Control peripheral, which drives the piezo buzzer
- * embedded in the F-91W's back plate as well as the LED that backlights the display.
- */
-/// @{
-/** @brief Enables the TCC peripheral, which drives the buzzer.
- */
-void watch_enable_buzzer(void);
-
-/** @brief Sets the period of the buzzer.
- * @param period The period of a single cycle for the TCC peripheral. You can determine the period for
- * a desired frequency with the following formula: period = 1000000 / freq
- * @param duty The duty cycle of the buzzer, from 0 to 50 (percent ON time). Do not use values over 50.
- * @note Unless you _really_ know what you're doing, use 25% for the duty cycle. If you're just aiming
- * to play a tone at a given volume, use watch_buzzer_play_note_with_volume instead.
- */
-void watch_set_buzzer_period_and_duty_cycle(uint32_t period, uint8_t duty);
-
-/** @brief Disables the TCC peripheral that drives the buzzer.
- * @note If you are using PWM to set custom LED colors, this method will also disable the LED PWM driver,
- * since the buzzer and LED both make use of the same peripheral to drive their PWM behavior.
- */
-void watch_disable_buzzer(void);
-
-/** @brief Turns the buzzer output on. It will emit a continuous sound at the given frequency.
- * @note The TCC peripheral that drives the buzzer does not run in standby mode; if you wish for buzzer
- * output to continue, you should prevent your app from going to sleep.
- */
-void watch_set_buzzer_on(void);
-
-/** @brief Turns the buzzer output off.
- */
-void watch_set_buzzer_off(void);
-
/// @brief An enum for controlling the volume of the buzzer.
typedef enum {
WATCH_BUZZER_VOLUME_SOFT = 0,
} watch_buzzer_volume_t;
/// @brief 87 notes for use with watch_buzzer_play_note
-typedef enum BuzzerNote {
+typedef enum {
BUZZER_NOTE_A1, ///< 55.00 Hz
BUZZER_NOTE_A1SHARP_B1FLAT, ///< 58.27 Hz
BUZZER_NOTE_B1, ///< 61.74 Hz
BUZZER_NOTE_A8SHARP_B8FLAT, ///< 7458.62 Hz
BUZZER_NOTE_B8, ///< 7902.13 Hz
BUZZER_NOTE_REST ///< no sound
-} BuzzerNote;
+} watch_buzzer_note_t;
+
+/** @brief Returns true if either the buzzer or the LED driver is enabled.
+ * @details Both the buzzer and the LED use the TCC peripheral to drive their behavior. This function returns true if that
+ * peripheral is enabled. You can use this function to determine whether you need to call the watch_disable_leds or
+ * or watch_enable_buzzer functions before using these peripherals.
+ */
+bool watch_is_buzzer_or_led_enabled(void);
+
+/** @addtogroup tcc Buzzer and LED Control (via the TCC peripheral)
+ * @brief This section covers functions related to Timer Counter for Control peripheral, which drives the piezo buzzer
+ * embedded in the F-91W's back plate as well as the LED that backlights the display.
+ */
+/// @{
+/** @brief Enables the TCC peripheral, which drives the buzzer.
+ */
+void watch_enable_buzzer(void);
+
+/** @brief Sets the period of the buzzer.
+ * @param period The period of a single cycle for the TCC peripheral. You can determine the period for
+ * a desired frequency with the following formula: period = 1000000 / freq
+ * @param duty The duty cycle of the buzzer, from 0 to 50 (percent ON time). Do not use values over 50.
+ * @note Unless you _really_ know what you're doing, use 25% for the duty cycle. If you're just aiming
+ * to play a tone at a given volume, use watch_buzzer_play_note_with_volume instead.
+ */
+void watch_set_buzzer_period_and_duty_cycle(uint32_t period, uint8_t duty);
+
+/** @brief Disables the TCC peripheral that drives the buzzer.
+ * @note If you are using PWM to set custom LED colors, this method will also disable the LED PWM driver,
+ * since the buzzer and LED both make use of the same peripheral to drive their PWM behavior.
+ */
+void watch_disable_buzzer(void);
+
+/** @brief Turns the buzzer output on. It will emit a continuous sound at the given frequency.
+ * @note The TCC peripheral that drives the buzzer does not run in standby mode; if you wish for buzzer
+ * output to continue, you should prevent your app from going to sleep.
+ */
+void watch_set_buzzer_on(void);
+
+/** @brief Turns the buzzer output off.
+ */
+void watch_set_buzzer_off(void);
/** @brief Plays the given note for a set duration at the loudest possible volume.
* @param note The note you wish to play, or BUZZER_NOTE_REST to disable output for the given duration.
* @note Note that this will block your UI for the duration of the note's play time, and it will
* after this call, the buzzer period will be set to the period of this note.
*/
-void watch_buzzer_play_note(BuzzerNote note, uint16_t duration_ms);
+void watch_buzzer_play_note(watch_buzzer_note_t note, uint16_t duration_ms);
/** @brief Plays the given note for a set duration.
* @param note The note you wish to play, or BUZZER_NOTE_REST to disable output for the given duration.
* @note This will block your UI for the duration of the note's play time, and after this call, the
* buzzer will stop sounding, but the TCC period will remain set to the period of this note.
*/
-void watch_buzzer_play_note_with_volume(BuzzerNote note, uint16_t duration_ms, watch_buzzer_volume_t volume);
+void watch_buzzer_play_note_with_volume(watch_buzzer_note_t note, uint16_t duration_ms, watch_buzzer_volume_t volume);
-/// @brief An array of periods for all the notes on a piano, corresponding to the names in BuzzerNote.
+/// @brief An array of periods for all the notes on a piano, corresponding to the names in watch_buzzer_note_t.
extern const uint16_t NotePeriods[108];
/** @brief Plays the given sequence of notes in a non-blocking way.
/** @brief Disables the TCC peripheral. Should only be called internally. */
void _watch_disable_tcc(void);
-/// @brief An array of periods for all the notes on a piano, corresponding to the names in BuzzerNote.
+/// @brief An array of periods for all the notes on a piano, corresponding to the names in watch_buzzer_note_t.
extern const uint16_t NotePeriods[108];
/// @}