Thank's to Mark's help, I've succeeded, it works!!!

The seeburg is connected to pin 8 (CTS) of the empeg serial port. A kernel driver (/dev/wallbox) and a user app (wallbox) convert the pulses to a fid in the "seeburg" playlist. The selected fid is added to the currently playing list.

Here's a sample output from the serial port:
Code:

empeg:/empeg/bin# /wallbox 1ad0 &

seeburg open: state 1
Read 100 items from playlist 1ad0
.
empeg:/empeg/bin# player
Timezone: PRC
Hijack: intercepting config.ini
player.cpp : 385:empeg-car 2.00-beta13 2002/07/24.
Prolux 4 empeg car - 2.1434 Jul 24 2002
Vcb: 0x4086d000
.
Selection E3 is fid 2a0
#2a0
.
Selection H6 is fid 2b70
#2b70+
.
Selection K6 is fid 690
#690+
.
Selection J9 is fid 45a0
#45a0+



I need to clean up the code and I've got some questions that hopefully someone can answer in Mark's absence...


1. I was planning to use the DTR output as the pullup resistor +5V source. But it looks like it's deasserted (-5V). Most rs-232 DTEs assert DTR. I can turn it on in my driver, but is it used for something else?

2. I'm currenly using fprintf(empeg_notify_fp,"SERIAL=#fid\n") to queue the song. But I was thinking of using the "write" portion of my driver to "notify" the Hijack kernel directly. I've looked at notify.c, but I'm not sure which function to call.

3. I'm using down(&sem) but I'd like to use down_interrruptable. When I do, I get an unresolved external. I #include <asm-arm/semaphore.h> but it doesn't help.

4. What's the best licence to release under (e.g. BSD)?

5. I'd like to release the code, but I probably need some sort of "code review" for my kernel / driver changes. Can anyone help out?

6. How do I pick a "real" device MAJOR number?

Thanks,

-Techtom