FreeCalypso > hg > fc-tourmaline
diff src/cs/drivers/drv_app/buzzer/buzzer.c @ 0:4e78acac3d88
src/{condat,cs,gpf,nucleus}: import from Selenite
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Fri, 16 Oct 2020 06:23:26 +0000 |
parents | |
children | 4f839e1991e8 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/cs/drivers/drv_app/buzzer/buzzer.c Fri Oct 16 06:23:26 2020 +0000 @@ -0,0 +1,177 @@ +/* + * BUZZER.C + * + * Buzzer driver + * + * Target : ARM + * + * Copyright (c) Texas Instruments 2000 + * + */ + + +#include "main/sys_types.h" +#include "memif/mem.h" +#include "armio/armio.h" +#include "buzzer.h" +#include "timer/timer.h" + +#include "board.cfg" + +/* + * Initialize buzzer + * + */ +void BZ_Init(void) +{ +} + +/* + * BZ_Enable / BZ_Disable + * + * Enable / disable buzzer + * + * The buzzer uses timer 1 + */ +void BZ_Enable(void) +{ + *((volatile SYS_UWORD16 *) ARMIO_PWM_CNTL) |= BZ_ON; +} + +void BZ_Disable(void) +{ + *((volatile SYS_UWORD16 *) ARMIO_PWM_CNTL) &= ~BZ_ON; +} + +/* + * BZ_Tone + * + * Changes the timer count to set the tone frequency in Hz + * + * 58 ticks= 1 ms, which give a frequency of 500 Hz + * + * + */ +void BZ_Tone(int f) +{ + if (f > 255) + { + f = 255; + } + *((volatile SYS_UWORD16 *) ARMIO_LOAD_TIM) = f; +} + +/* + * BZ_Volume + * + * Changes the buzzer volume + * + */ +void BZ_Volume(int v) +{ + // the level range is 0 up to 63 + if (v > 63) + { + v = 63; + } + *((volatile SYS_UWORD16 *) BZ_LEVEL) = v; +} + +/* + * BZ_KeyBeep_ON + * + * Audio feedback to user after keybeep + * + */ +void BZ_KeyBeep_ON(void) +{ + volatile int i; + + BZ_Init (); + BZ_Volume (255); + BZ_Enable (); + BZ_Tone (50); + + for (i = 0; i < 17000; i++) + ; + + BZ_Disable (); +} + + + +/* + * BZ_KeyBeep_OFF + * + * Audio feedback to user after keybeep + * + */ +void BZ_KeyBeep_OFF(void) +{ + volatile int i; + + BZ_Init (); + BZ_Volume (255); + BZ_Enable (); + BZ_Tone (100); + + for (i = 0; i < 17000; i++) + ; + + BZ_Disable (); +} + + + +/* + * LT_Enable / LT_Disable + * + * Enable / disable LCD lighting + * + */ +void LT_Enable(void) +{ +#if (BOARD == 7 || BOARD == 8 || BOARD == 9) + *((volatile SYS_UWORD16 *) ARMIO_PWM_CNTL) |= LT_ON; +#endif +} +void LT_Disable(void) +{ +#if (BOARD == 7 || BOARD == 8 || BOARD == 9) + *((volatile SYS_UWORD16 *) ARMIO_PWM_CNTL) &= ~LT_ON; +#endif +} + + +/* + * LT_Level + * + * Set LCD display level + */ +void LT_Level(SYS_WORD8 level) +{ + if (level > 63) level=63; + + // the level range is 0 up to 63 + *((volatile SYS_UWORD16 *) LT_LEVEL) = level; +} + + +/* + * LT_Status + * + * Return lighting status for sleep manager + * + */ +SYS_BOOL LT_Status(void) +{ +#if (BOARD == 7 || BOARD == 8 || BOARD == 9) + if (*((volatile SYS_UWORD16 *) ARMIO_PWM_CNTL) & LT_ON) + return(1); // the light is on + else + return(0); +#endif + +return(0); + +}