FreeCalypso > hg > fc-tourmaline
view src/cs/drivers/drv_app/buzzer/vibrator.c @ 290:0e5ccb343284
implement PWT buzzer driver
The piece implemented here is the low-level driver component; there will
also be a higher-level buzzer melody player service, to be implemented
in RiViera land, that will be the sole caller of PWT API functions
provided by the present driver.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 26 Mar 2022 18:23:50 +0000 |
parents | 4d203ef0eb4b |
children |
line wrap: on
line source
/* * This C module is a FreeCalypso addition: it implements hardware vibrator * control as appropriate for different hw targets. */ #include "main/sys_types.h" #include "memif/mem.h" #include "armio/armio.h" #include "buzzer.h" #include "vibrator.h" #include "abb/abb.h" #include "board.cfg" #include "fc-target.h" /* flag tells L1 to suppress deep sleep */ SYS_BOOL HW_vibrator_is_on; void HW_vibrator_on(SYS_UWORD8 level) { HW_vibrator_is_on = 1; #ifdef CONFIG_TARGET_PIRELLI /* vibrator is controlled via BU output */ BZ_Tone(0); BZ_Volume(level >> 2); BZ_Enable(); #elif defined(CONFIG_TARGET_COMPAL) /* vibrator is controlled via Iota AUX DAC */ ABB_Write_Register_on_page(PAGE0, TOGBR1, 0x20); ABB_Write_Register_on_page(PAGE0, AUXDAC, (level << 2) | 3); #endif } void HW_vibrator_off(void) { #ifdef CONFIG_TARGET_PIRELLI BZ_Disable(); #elif defined(CONFIG_TARGET_COMPAL) ABB_Write_Register_on_page(PAGE0, AUXDAC, 0); ABB_Write_Register_on_page(PAGE0, TOGBR1, 0x10); #endif HW_vibrator_is_on = 0; }