robertmee
06-07-2007, 05:09 AM
My next driver on the list, so I figured I'd start an official thread. Playing around with the protocol today, and noticed a few things:
The docs were last updated in 2005 before the release of the XM version of the tuners. I called Nuvo and they don't think anything was done with the firmware/protocol to support XM, however, I tried issueing an XM station command and I got a response of sorts. The problem is that even though I have an XM tuner (I have the Dual Tuner AM/FM/XM), I haven't subscribed to XM yet, so I can't really see the station change. Sooooo....If someone has a T2 with XM and would help me run a test to two, that'd be helpful.
The protocol is pretty cheesy. There is no real response to any command. It relies on async messages to keep things in sync. So, if you go to the keypad and change to FM, you get an async message that the tuner changed to FM. If I issue a serial command to change to FM, I get no response that the command made it there, was accepted or anything. I do get the async response that the tuner changed to FM. So, I'll have to rely on these as 'responses' as well as continually watch them for external changes.
The RDM stuff is REALLY SUCKEEE. RDM is used to update the keypads with data broadcast from the radio station you have tuned to. There are a couple of REALLY crappy things going on here.
A) Supposedly the RDM standard says that a radio station is supposed to transmit data on change. In otherwords, when you tune to a new station, it's supposed to send out WXYZ. When a song changes, it's supposed to send out Pink Floyd - The Wall. Well, it seems most stations (other than XMs which seem to behave) continually retransmit. So, connecting with hyperterminal, I see a constant influx of these messages repeated over and over and over. It will just make the comm handling piggy and it sucks.
B) And this makes the above even worse. The data is basically worthless. Don't know whether it's coming from the stations or the way Nuvo is handling it, but the repeating messages are truncated to fit the display. As an example, let's say the keypad display is 10 characters wide (it can scroll 50). And the Radio Station is broadcasting "WXYZ 101.5 Pink Floyd - The Dark Side of the Moon". Well, you get "WXYZ 101.5" followed by "Pink Floyd - The" followed by "Dark Side of the" followed by "Moon". Over and Over. So, I can't even read this data and do anything useful with it, because if I stuck it in a string field, the field would change so fast as to not be useful for anything. And I can't stick it in 4 consecutive fields, because the number of different messages will vary depending on the length of the entire message which can't be discerned.
So, I think I'm just going to concentrate on changing stations/band whether through presets, seek up/down booleans, or through direct entry of the station #. I will have a current station field that will update based on if you tune to a preset. The tuner holds lots of presets, so I went in and entered all my local stations, so If I tune to one of them, I get "WXYZ 101.5". Might be useful. Not sure how I can do this for XM since there are so many channels. It's a shame the above stuff is so worthless, because XM actually seems to behave in the regard of transmitting messages. If anyone has any suggestions on tackling that, I'd appreciate it.
EDIT: Version 1.2 Release on Post #4
EDIT: Upgraded Pack for v 2.3.4 of CQC
The docs were last updated in 2005 before the release of the XM version of the tuners. I called Nuvo and they don't think anything was done with the firmware/protocol to support XM, however, I tried issueing an XM station command and I got a response of sorts. The problem is that even though I have an XM tuner (I have the Dual Tuner AM/FM/XM), I haven't subscribed to XM yet, so I can't really see the station change. Sooooo....If someone has a T2 with XM and would help me run a test to two, that'd be helpful.
The protocol is pretty cheesy. There is no real response to any command. It relies on async messages to keep things in sync. So, if you go to the keypad and change to FM, you get an async message that the tuner changed to FM. If I issue a serial command to change to FM, I get no response that the command made it there, was accepted or anything. I do get the async response that the tuner changed to FM. So, I'll have to rely on these as 'responses' as well as continually watch them for external changes.
The RDM stuff is REALLY SUCKEEE. RDM is used to update the keypads with data broadcast from the radio station you have tuned to. There are a couple of REALLY crappy things going on here.
A) Supposedly the RDM standard says that a radio station is supposed to transmit data on change. In otherwords, when you tune to a new station, it's supposed to send out WXYZ. When a song changes, it's supposed to send out Pink Floyd - The Wall. Well, it seems most stations (other than XMs which seem to behave) continually retransmit. So, connecting with hyperterminal, I see a constant influx of these messages repeated over and over and over. It will just make the comm handling piggy and it sucks.
B) And this makes the above even worse. The data is basically worthless. Don't know whether it's coming from the stations or the way Nuvo is handling it, but the repeating messages are truncated to fit the display. As an example, let's say the keypad display is 10 characters wide (it can scroll 50). And the Radio Station is broadcasting "WXYZ 101.5 Pink Floyd - The Dark Side of the Moon". Well, you get "WXYZ 101.5" followed by "Pink Floyd - The" followed by "Dark Side of the" followed by "Moon". Over and Over. So, I can't even read this data and do anything useful with it, because if I stuck it in a string field, the field would change so fast as to not be useful for anything. And I can't stick it in 4 consecutive fields, because the number of different messages will vary depending on the length of the entire message which can't be discerned.
So, I think I'm just going to concentrate on changing stations/band whether through presets, seek up/down booleans, or through direct entry of the station #. I will have a current station field that will update based on if you tune to a preset. The tuner holds lots of presets, so I went in and entered all my local stations, so If I tune to one of them, I get "WXYZ 101.5". Might be useful. Not sure how I can do this for XM since there are so many channels. It's a shame the above stuff is so worthless, because XM actually seems to behave in the regard of transmitting messages. If anyone has any suggestions on tackling that, I'd appreciate it.
EDIT: Version 1.2 Release on Post #4
EDIT: Upgraded Pack for v 2.3.4 of CQC