mirror of
https://git.FreeBSD.org/src.git
synced 2024-10-18 02:19:39 +00:00
- 'Beep' support now happens in it's own separate file, so you can mess
around with different noises for the different events and not have it affect other files. Inspired by: PAO
This commit is contained in:
parent
b2289ae063
commit
c669d2df7e
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=30723
@ -354,6 +354,7 @@ nfs/nfs_vnops.c optional nfs
|
||||
nfs/bootp_subr.c optional bootp
|
||||
nfs/krpc_subr.c optional bootp
|
||||
pccard/pccard.c optional card
|
||||
pccard/pccard_beep.c optional card
|
||||
pccard/pcic.c optional pcic device-driver
|
||||
pci/aic7870.c optional ahc device-driver \
|
||||
dependency "aic7xxx_reg.h $S/pci/aic7870.c"
|
||||
|
@ -129,16 +129,6 @@ struct power {
|
||||
int vpp;
|
||||
};
|
||||
|
||||
/*
|
||||
* Beep parameters
|
||||
*/
|
||||
#define PCCARD_BEEP_PITCH0 1600 /* inserted/removed */
|
||||
#define PCCARD_BEEP_DURATION0 20
|
||||
#define PCCARD_BEEP_PITCH1 1200 /* successed */
|
||||
#define PCCARD_BEEP_DURATION1 40
|
||||
#define PCCARD_BEEP_PITCH2 3200 /* failed */
|
||||
#define PCCARD_BEEP_DURATION2 40
|
||||
|
||||
/*
|
||||
* Other system limits
|
||||
*/
|
||||
|
@ -129,16 +129,6 @@ struct power {
|
||||
int vpp;
|
||||
};
|
||||
|
||||
/*
|
||||
* Beep parameters
|
||||
*/
|
||||
#define PCCARD_BEEP_PITCH0 1600 /* inserted/removed */
|
||||
#define PCCARD_BEEP_DURATION0 20
|
||||
#define PCCARD_BEEP_PITCH1 1200 /* successed */
|
||||
#define PCCARD_BEEP_DURATION1 40
|
||||
#define PCCARD_BEEP_PITCH2 3200 /* failed */
|
||||
#define PCCARD_BEEP_DURATION2 40
|
||||
|
||||
/*
|
||||
* Other system limits
|
||||
*/
|
||||
|
@ -19,4 +19,12 @@ void pccard_configure __P((void));
|
||||
void pccard_remove_driver __P((struct pccard_device *));
|
||||
int pcic_probe __P((void)); /* XXX should be linker set */
|
||||
|
||||
enum beepstate { BEEP_ON, BEEP_OFF };
|
||||
|
||||
void pccard_insert_beep __P((void));
|
||||
void pccard_remove_beep __P((void));
|
||||
void pccard_success_beep __P((void));
|
||||
void pccard_failure_beep __P((void));
|
||||
void pccard_beep_select __P((enum beepstate));
|
||||
|
||||
#endif /* !_PCCARD_DRIVER_H_ */
|
||||
|
@ -56,7 +56,6 @@
|
||||
#include <pccard/driver.h>
|
||||
#include <pccard/slot.h>
|
||||
|
||||
#include <machine/clock.h>
|
||||
#include <machine/md_var.h>
|
||||
|
||||
/*
|
||||
@ -648,16 +647,6 @@ inserted(void *arg)
|
||||
slt->ctrl->reset(slt);
|
||||
}
|
||||
|
||||
/*
|
||||
* Insert/Remove beep
|
||||
*/
|
||||
static int beepok = 0;
|
||||
|
||||
static void enable_beep(void *dummy)
|
||||
{
|
||||
beepok = 1;
|
||||
}
|
||||
|
||||
/*
|
||||
* Card event callback. Called at splhigh to prevent
|
||||
* device interrupts from interceding.
|
||||
@ -682,20 +671,14 @@ pccard_event(struct slot *slt, enum card_event event)
|
||||
slt->state = empty;
|
||||
splx(s);
|
||||
printf("Card removed, slot %d\n", slt->slotnum);
|
||||
if (beepok)
|
||||
sysbeep(PCCARD_BEEP_PITCH0, PCCARD_BEEP_DURATION0);
|
||||
beepok = 0;
|
||||
timeout(enable_beep, (void *)NULL, hz/5);
|
||||
pccard_remove_beep();
|
||||
selwakeup(&slt->selp);
|
||||
}
|
||||
break;
|
||||
case card_inserted:
|
||||
slt->insert_seq = 1;
|
||||
slt->insert_ch = timeout(inserted, (void *)slt, hz/4);
|
||||
if (beepok)
|
||||
sysbeep(PCCARD_BEEP_PITCH0, PCCARD_BEEP_DURATION0);
|
||||
beepok = 0;
|
||||
timeout(enable_beep, (void *)NULL, hz/5);
|
||||
pccard_remove_beep();
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -868,7 +851,7 @@ crdioctl(dev_t dev, int cmd, caddr_t data, int fflag, struct proc *p)
|
||||
int s, err;
|
||||
|
||||
/* beep is disabled until the 1st call of crdioctl() */
|
||||
enable_beep(NULL);
|
||||
pccard_beep_select(BEEP_ON);
|
||||
|
||||
if (slt == 0 && cmd != PIOCRWMEM)
|
||||
return(ENXIO);
|
||||
@ -989,9 +972,9 @@ crdioctl(dev_t dev, int cmd, caddr_t data, int fflag, struct proc *p)
|
||||
return(EPERM);
|
||||
err = allocate_driver(slt, (struct dev_desc *)data);
|
||||
if (!err)
|
||||
sysbeep(PCCARD_BEEP_PITCH1, PCCARD_BEEP_DURATION1);
|
||||
pccard_success_beep();
|
||||
else
|
||||
sysbeep(PCCARD_BEEP_PITCH2, PCCARD_BEEP_DURATION2);
|
||||
pccard_failure_beep();
|
||||
return err;
|
||||
}
|
||||
return(0);
|
||||
|
70
sys/pccard/pccard_beep.c
Normal file
70
sys/pccard/pccard_beep.c
Normal file
@ -0,0 +1,70 @@
|
||||
/*-
|
||||
* pccard noise interface.
|
||||
* Nate Williams, October 1997.
|
||||
* This file is in the public domain.
|
||||
*/
|
||||
|
||||
#include <sys/param.h>
|
||||
#include <sys/kernel.h>
|
||||
#include <sys/systm.h>
|
||||
|
||||
#include <machine/clock.h>
|
||||
|
||||
#include <pccard/driver.h>
|
||||
|
||||
#define PCCARD_BEEP_PITCH0 1600
|
||||
#define PCCARD_BEEP_DURATION0 20
|
||||
#define PCCARD_BEEP_PITCH1 1200
|
||||
#define PCCARD_BEEP_DURATION1 40
|
||||
#define PCCARD_BEEP_PITCH2 3200
|
||||
#define PCCARD_BEEP_DURATION2 40
|
||||
|
||||
static struct callout_handle beeptimeout_ch
|
||||
= CALLOUT_HANDLE_INITIALIZER(&beeptimeout_ch);
|
||||
|
||||
static enum beepstate allow_beep = BEEP_OFF;
|
||||
|
||||
/*
|
||||
* timeout function to keep lots of noise from
|
||||
* happening with insertion/removals.
|
||||
*/
|
||||
static void enable_beep(void *dummy)
|
||||
{
|
||||
/* Should never be needed */
|
||||
untimeout(enable_beep, (void *)NULL, beeptimeout_ch);
|
||||
|
||||
allow_beep = 1;
|
||||
}
|
||||
|
||||
void pccard_insert_beep(void)
|
||||
{
|
||||
if (allow_beep == BEEP_ON) {
|
||||
sysbeep(PCCARD_BEEP_PITCH0, PCCARD_BEEP_DURATION0);
|
||||
allow_beep = 0;
|
||||
beeptimeout_ch = timeout(enable_beep, (void *)NULL, hz / 5);
|
||||
}
|
||||
}
|
||||
|
||||
void pccard_remove_beep(void)
|
||||
{
|
||||
if (allow_beep == BEEP_ON) {
|
||||
sysbeep(PCCARD_BEEP_PITCH0, PCCARD_BEEP_DURATION0);
|
||||
allow_beep = 0;
|
||||
beeptimeout_ch = timeout(enable_beep, (void *)NULL, hz / 5);
|
||||
}
|
||||
}
|
||||
|
||||
void pccard_success_beep(void)
|
||||
{
|
||||
sysbeep(PCCARD_BEEP_PITCH1, PCCARD_BEEP_DURATION1);
|
||||
}
|
||||
|
||||
void pccard_failure_beep(void)
|
||||
{
|
||||
sysbeep(PCCARD_BEEP_PITCH2, PCCARD_BEEP_DURATION2);
|
||||
}
|
||||
|
||||
void pccard_beep_select(enum beepstate state)
|
||||
{
|
||||
allow_beep = state;
|
||||
}
|
Loading…
Reference in New Issue
Block a user