FreeCalypso > hg > fc-tourmaline
view src/cs/drivers/drv_app/buzzer/vibrator.c @ 300:edcb8364d45b
L1: resurrect TCH tap feature
In this new incarnation of our TCH tap feature, we support DL sniffing
in all 3 of FR1, HR1 and EFR, and the new implementation will capture
every 20 ms frame where the old one silently skipped a frame (sent
nothing) during FACCH stealing. The wire interface on RVTMUX changed
slightly, and fc-shell tch record will need to be updated to support
the new version.
TCH UL play or substitution is supported for FR1 and EFR only;
support for HR1 can be added later if needed.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Tue, 13 Dec 2022 02:44:01 +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; }