FreeCalypso > hg > fc-tourmaline
view src/cs/drivers/drv_app/buzzer/vibrator.c @ 289:4d203ef0eb4b
implement vibrator on/off control driver
The piece implemented here is just the HW on/off driver; on top of
this driver there will be a VIBR service (to be implemented in RiViera
land) that will implement vibration pulse trains.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 26 Mar 2022 17:03:36 +0000 |
parents | |
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; }