pkgsrc-Users archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: comms/bthfp floating point exception



On Sat, 9 Dec 2006, Juan RP wrote:

> I was trying your bthfp application with my BT USB Dongle, it's detected
> and configured as:
>
> ubt0 at uhub2 port 2 configuration 1 interface 0
> ubt0: SiW SiW, rev 1.10/15.00, addr 2
> bthub0 at ubt0 local-bdaddr 00:0a:94:13:22:93

> bthidev0 at bthub0 remote-bdaddr 00:0f:de:a7:e7:04
> btkbd0 at bthidev0 reportid 1
> wskbd1 at btkbd0 mux 1
> wskbd1: connecting to wsdisplay0
> btms0 at bthidev0 reportid 2: 3 buttons.
> wsmouse1 at btms0 mux 0

thats cool, you get mouse and keyboard from your phone [00:0f:de:a7:e7:04]?

> btsco0 at bthub0 remote-bdaddr 00:0f:de:a7:e7:04 listen mode channel 5
> audio1 at btsco0: full duplex
> btsco1 at bthub0 remote-bdaddr 00:0f:de:a7:e7:04 channel 4
> audio2 at btsco1: full duplex

[btw for bthfp you don't need to configure btsco devices, it handles the
audio connection with an SCO socket]

> When I try to use bthfp with my mobile phone (Sony Ericsson K610i)
> shows the following:
>
> [juan@nocturno][/usr/pkgsrc/comms/bthfp]> sudo bthfp -v -a xtraeme -d ubt0
> Handsfree channel: 4
> Press ? for commands
> Connecting.. ok
> < AT+BRSF=20
> > +BRSF:503
> Features: 0x01f7
> > OK
> < AT+CIND=?
> > OK
> < AT+CIND?
> > +CIND: 1,0,0,0,3,0,3,0,0,0
> > OK
> < AT+CMER=3,0,0,1
> > OK
> < AT+CLIP=1
> > OK
> Service Level established
> > +CIEV: 5,5
> Commands:
> a       Answer
> c       Connect to phone
> h       Hanguup
> q       Quit
> r       Redial
> > +CIEV: 5,3
> < AT+BLDN
> > OK
> > +CIEV: 4,2
> > +CIEV: 3,1
> zsh: floating point exception  sudo bthfp -v -a xtraeme -d ubt0
> [juan@nocturno][/usr/pkgsrc/comms/bthfp]>
>
> Any idea?

I guess this is on incoming call? (+CIEV: 3,1)

The only arithmetic that I can think of is when an incoming SCO connection
is detected (ie the phone opens an audio link to send the ringtone) then
we round up the blocksize on the audio device to make it easier to copy
the SCO packets into audio blocks exactly:

        blocksize = (info.blocksize / mtu + 1) * mtu;
        info.blocksize = blocksize;

- this should not be (?) floating point but it will occur when an
incoming call is detected. perhaps you could put a 'printf' before and
after this and see if that catches it?

iain



Home | Main Index | Thread Index | Old Index