Page 54 of 128 FirstFirst ... 4444546474849505152535455565758596061626364104 ... LastLast
Results 531 to 540 of 1272

Thread: HQCT Module (new thread following HU RDS/RDBS)

  1. #531
    Low Bitrate
    Join Date
    Sep 2005
    Location
    Sweden (South)
    Posts
    111
    Quote Originally Posted by FMode
    I can't 100% imagine your problem... i don't have any 0A and 0B sequences here...
    I'll try to elaborate it a bit then...

    Quote Originally Posted by FMode
    First question:
    Do those radio-broadcast-nerds mix up Type A and Type B ?
    Method A works for you ?

    (Or are you talking about AF type 14A groups (for EON) ?)
    According to the rds specification, it is fully allowed to mix RDS groups type a and type b. However, most of the stations I can tune (or all actually) use A type messages only.

    However, I was talking about the AF type A and AF type B messages (which I think you understood), and they are widely mixed in my experience. I have one station sending one AF header (type a) and this one I get 100% correct. I have another station that users 4 AF heads where 2 are type B and two are type A. This is where it gets fu**d up. I need a message telling me which header the comming AF's belong to, but if I, by some strange reason, miss an AF header, the frequencies I pick up will go into the wrong header. Keep in mind that I have optimized my RDS interpreter to allow incomplete RDS block groups so it is more accurate now than it was when I posted. (I interpret groups lokking like [A] [AB] [ABC] and [ABCD]. I only need [ABC] to get AF headers and AFs since the D block in type 0A groups contain the program service name..

    Quote Originally Posted by FMode
    And finally:
    What does the TEF inside the HQCT with RDS error correction ? (How many bits does it correct ? IMHO the TEF is able to do error correction...)

    (I noticed although with a good audio quality and strong station 50% of the RDS Blocks contains 1 error or more - not with the HQCT but with a hacked HU and a SAA6588)
    The TEF can correct up to 5 bits: (from TEF6892H_1.pdf)

    ERROR STATUS OF LAST AND PREVIOUS RECEIVED BLOCK DATA
    0 0 no errors
    0 1 corrected burst error of maximum 2 bits
    1 0 corrected burst error of maximum 5 bits
    1 1 uncorrectable error

    Cheers!

  2. #532
    Constant Bitrate
    Join Date
    Mar 2005
    Location
    Wiesbaden/Germany
    Posts
    214

    Question

    Quote Originally Posted by aeroanderz
    ...
    However, I was talking about the AF type A and AF type B messages (which I think you understood), and they are widely mixed in my experience. I have one station sending one AF header (type a) and this one I get 100% correct. I have another station that users 4 AF heads where 2 are type B and two are type A. This is where it gets fu**d up. I need a message telling me which header the comming AF's belong to, but if I, by some strange reason, miss an AF header, the frequencies I pick up will go into the wrong header. ...
    lets have a look if I have understood...

    Here comes the **** (B after A and B with missed B header) (ft=89,3):
    (A) #4 100,1
    (A) 91,6 102,1
    xx
    xx
    xx
    (B) 89,3 91,6
    (B) 89,3 102,1
    (B) 88,0 89,3

    (next B) #4 89,3
    ...

    This is a crappy A sequence because it contains ft (89,3)
    so: discard

    or:
    (A after B case) doesn't contain excatly 4 times ft (89,3) as stated in the B header.
    so: discard

    without errors looks it would like that:
    (A) #4 100,1
    (A) 91,6 102,1
    (A) 88,0 #205
    (B) #4 89,3
    (B) 89,3 100,1
    (B) 89,3 91,6
    (B) 89,3 102,1
    (B) 88,0 89,3

    (next B) #4 89,3
    ...

  3. #533
    Low Bitrate
    Join Date
    Sep 2005
    Location
    Sweden (South)
    Posts
    111
    Quote Originally Posted by FMode
    lets have a look if I have understood...

    Here comes the **** (B after A and B with missed B header) (ft=89,3):
    (A) #4 100,1
    (A) 91,6 102,1
    xx
    xx
    xx
    (B) 89,3 91,6
    (B) 89,3 102,1
    (B) 88,0 89,3

    (next B) #4 89,3
    ...

    This is a crappy A sequence because it contains ft (89,3)
    so: discard
    ... I hope I'm wrong and that you have gotten something that I have not, but first of, there is now way of telling if 89.3 is valid or unvalid in the A sequence (or is there?..) Secondly, If I havn't received the B header yet, I don't know if the 83.9 belongs to another header or not.

    What I could do though is to only save a complete sequence. But I don't really like throwing away data since I may take a really long time before I can get it complete...

    Quote Originally Posted by FMode
    or:
    (A after B case) doesn't contain excatly 4 times ft (89,3) as stated in the B header.
    so: discard

    without errors looks it would like that:
    (A) #4 100,1
    (A) 91,6 102,1
    (A) 88,0 #205
    (B) #4 89,3
    (B) 89,3 100,1
    (B) 89,3 91,6
    (B) 89,3 102,1
    (B) 88,0 89,3

    (next B) #4 89,3
    ...
    This could actually be a way to go, but as stated above, I will be throwing away data that might be valid. Just to be correct though the B sequence will be:

    (B) #7 89,3
    (B) 89,3 100,1
    (B) 89,3 91,6
    (B) 89,3 102,1

    since there will follow 7 frequencies, although only (n-1)/2 of them (3 in this case) are valid AF's.

    Consider the case with two type A messages:

    (A1) #5 100,1
    (A1) 91,6 102,1
    (A2) 88,0 107,0

    (next A2) #3 89,3

    There is no way in hell to stop the A2 frequencies to get into the A1 list.

    They way I've implemented it is that if I detect an AF header, I change the "current af list" to the one specific for that header (or create a new one if its new). Subsequent frequencies are added according to the following code:

    Code:
            private AlternativeFrequency previousAlternativeFrequency;
            private int tuningFrequency;
            private Dictionary<int, AlternativeFrequency> alternativeFrequencies = new Dictionary<int, AlternativeFrequency>();
    
            public void AddAlternativeFrequency(AlternativeFrequency af)
            {
                if (afMethod == AF_METHOD_UNKNOWN)
                {
                    // Add frequency and try to find out which method is used
                    alternativeFrequencies.Add(af.Frequency, af);
                    afMethod = checkAFMethod();
                }
                else if (afMethod == AF_METHOD_A)
                {
                    // All frequencies are added (except duplicates)
                    if (!alternativeFrequencies.ContainsKey(af.Frequency))
                    {
                        alternativeFrequencies.Add(af.Frequency, af);
                    }
                }
                else if (afMethod == AF_METHOD_B)
                {
                    // Every other frequency is added (except duplicates)
                    // Check if regional variant or not
                    if (previousAlternativeFrequency != null)
                    {
                        if (previousAlternativeFrequency.ComparedTo(af) < 0)
                        {
                            // Normal AF
                            if (!previousAlternativeFrequency.Frequency.Equals(tuningFrequency))
                            {
                                af = previousAlternativeFrequency;
                            }
                        }
                        else if (previousAlternativeFrequency.ComparedTo(af) > 0)
                        {
                            // Regional variant AF
                            if (!previousAlternativeFrequency.Frequency.Equals(tuningFrequency))
                            {
                                af = previousAlternativeFrequency;
                            }
                            af.RegionalVariant = true;
                        }
    
                        if (!alternativeFrequencies.ContainsKey(af.Frequency))
                        {
                            alternativeFrequencies.Add(af.Frequency, af);
                        }
    
                        previousAlternativeFrequency = null;
                    }
                    else
                    {
                        previousAlternativeFrequency = af;
                    }
                }
            }
    
            private int checkAFMethod()
            {
                int result = AF_METHOD_UNKNOWN;
                if (alternativeFrequencies.Count >= 2)
                {
                    if (alternativeFrequencies.ContainsKey(tuningFrequency))
                    {
                        result = AF_METHOD_B;
                        alternativeFrequencies.Remove(tuningFrequency);
                    }
                    else
                    {
                        result = AF_METHOD_A;
                    }
                }
                return result;
            }
    Keep it up!

  4. #534
    Variable Bitrate Splash-X's Avatar
    Join Date
    Mar 2006
    Location
    Palm Harbor, FL
    Posts
    241
    Not to interrupt the thread course but I've got the tuner module and would love to begin testing it but I don't know where to begin.

    Has there already been a FAQ or Walkthrough post on step-by-step to getting the module to work? I'm assuming I will need an antenna, and to splice up a USB cable and a power but from there where are the drivers for it and what software will work with it? I know RR has some support for it some where but I don't use it.

    I know C# so I could work on my own software but again, I have no idea where to get started.

    Help would be much appretiated.

  5. #535
    FLAC TheLlama's Avatar
    Join Date
    Jul 2004
    Location
    All over the world
    Posts
    970
    Quote Originally Posted by Splash-X
    Not to interrupt the thread course but I've got the tuner module and would love to begin testing it but I don't know where to begin.

    Has there already been a FAQ or Walkthrough post on step-by-step to getting the module to work? I'm assuming I will need an antenna, and to splice up a USB cable and a power but from there where are the drivers for it and what software will work with it? I know RR has some support for it some where but I don't use it.

    I know C# so I could work on my own software but again, I have no idea where to get started.

    Help would be much appretiated.
    You can use the demo Tuner application (check the sticky) for a demo Windows application with source code. You could use your C# knowledge to make your own software. RR has support integrated.

    Going by your X11 avatar, you may be interested in the Linux driver. Check the "HQCT Driver" thread in the Linux forum for a Linux kernel module and library. You won't have to reimplement the communications if you go this route, it is all behind a friendly library.

  6. #536
    Variable Bitrate Splash-X's Avatar
    Join Date
    Mar 2006
    Location
    Palm Harbor, FL
    Posts
    241
    Thanks for the info. Right now I'm just working on the Windows version, I'll to Linux eventually.

    Question, are there drivers that are needed to install the module under windows?

  7. #537
    Constant Bitrate
    Join Date
    Mar 2005
    Location
    Wiesbaden/Germany
    Posts
    214
    Quote Originally Posted by aeroanderz
    ... I hope I'm wrong and that you have gotten something that I have not, but first of, there is now way of telling if 89.3 is valid or unvalid in the A sequence (or is there?..) Secondly, If I havn't received the B header yet, I don't know if the 83.9 belongs to another header or not.
    The 89,3 is the actual tuning frequency and not a valid AF so it means something of B slipped into your A sequence.

    a B Sequence is identified by the #Length following the tuning frequency
    now every Word must contain the tuning frequency or something from A slipped inside

    Quote Originally Posted by aeroanderz
    What I could do though is to only save a complete sequence. But I don't really like throwing away data since I may take a really long time before I can get it complete...
    this is the right way of thinking...

    Quote Originally Posted by aeroanderz
    This could actually be a way to go, but as stated above, I will be throwing away data that might be valid. Just to be correct though the B sequence will be:

    (B) #7 89,3
    (B) 89,3 100,1
    (B) 89,3 91,6
    (B) 89,3 102,1

    since there will follow 7 frequencies, although only (n-1)/2 of them (3 in this case) are valid AF's.

    Consider the case with two type A messages:

    (A1) #5 100,1
    (A1) 91,6 102,1
    (A2) 88,0 107,0

    (next A2) #3 89,3
    its not an A
    its a B because it contains the tuning frequency

    Quote Originally Posted by aeroanderz
    There is no way in hell to stop the A2 frequencies to get into the A1 list.
    I don't know if the AF frequency-list will ever change ?
    So the same list is constantly repeated...

    BTW: I am waiting for the next HQCT-batch the with a loaded PayPal Account...


  8. #538
    Low Bitrate
    Join Date
    Sep 2005
    Location
    Sweden (South)
    Posts
    111
    Quote Originally Posted by FMode
    its not an A
    its a B because it contains the tuning frequency
    Yes.. and then we have the ultimate problem.. the RDS data will not tell you the current tuning frequency.. just because you receive a B type AF list with say #7 89,3 as the header does NOT mean that you are currently listening to the 89,3 frequency. Furthermore, you can get several different AF type B lists all with different tuning frequency. This is my interpretation of the RDS protocol and it seems to be the way all the demo software I have tried are working. Then again, I can't tune that many stations at home where my module is with the piece-of-wire-stuck-in-the-SMB-antenna either..

    But for the sake of this discussion, I will read the AF part in the RDS spec again (for the 11th time) to make sure I havn't missed anything...

    Quote Originally Posted by FMode
    I don't know if the AF frequency-list will ever change ?
    So the same list is constantly repeated...
    This seems to be the case yes. This might help in finding the frequencies that actually DOES belong to the current AF header..

    Quote Originally Posted by FMode
    BTW: I am waiting for the next HQCT-batch the with a loaded PayPal Account...

    It's worth every penny!..

  9. #539
    Constant Bitrate
    Join Date
    Mar 2005
    Location
    Wiesbaden/Germany
    Posts
    214
    Quote Originally Posted by aeroanderz
    Yes.. and then we have the ultimate problem.. the RDS data will not tell you the current tuning frequency.. just because you receive a B type AF list with say #7 89,3 as the header does NOT mean that you are currently listening to the 89,3 frequency. Furthermore, you can get several different AF type B lists all with different tuning frequency...
    You mean that several B lists are broadcasted on the same station ???
    This has something to do with EON ? You are listening to HR3 (Popmusic) on 89,3 and you also get the AF's of 101,1 which is HR1 (Info+News - you know from EON) and also from HR2 (classic) on 90,4 ???

    omg

  10. #540
    Newbie
    Join Date
    Apr 2004
    Posts
    28

    Smile It Workssssssss !!!!!! :-)

    Quote Originally Posted by lifeboat
    Yeah I noticed it is difficult to remove, sucks that you pulled your cable apart. Maybe SMA is something they should consider for future revisions. Still not worth the time IMO to retrofit it if one isn't having problems. But hey tinkering with stuff is what this hobby is about.
    Quote Originally Posted by Vish
    have you tried pulling out the SMB connector from the HQCT board? once it's in there it's very firm and you have to apply some force to take it out. When I tried taking it out the cable broke and came out of the crimped SMB connector head but the SMB male did not want to get out of the SMB female end
    so i personally think that the advantage of having a SMA set of connectors is that it can easily be screwed on and off.
    The module works for me like a charm. It is 100% working without any flaws now. Here is what I did....
    - I removed the 5 pin SMB antenna connector from the pcb (took some effort because I had a simple solder gun and not that powerful)
    - I bought a GOLD plated SMA female connector (5 pin right angle PCB mount style) and soldered it on the pcb. (part # ARFX1232-ND from www.digikey.com). The reason for replacing SMB with SMA is because the SMB jack is a clip on type and has a lock mechanism which makes it very hard to remove the cable once put on. I broke my cable while removing it from the module. But the SMA connector is a screw on type so you can connect it and disconnect it effortlessly.
    - Since my car (G35) has a built-in antenna in the rear windshield and it was not giving good reception with this module, I decided to buy a new roof-mount antenna (i used the one that comes on Infiniti FX-35.... i think it looks cool). I had to drill a hole on my G35 roof and install the new antenna. BTW this antenna has a built-in signal amplifier, so I had to power it from car's 12V.
    - I had bad experience with the SMB to motorolla type adapter, so this time I decided to eliminate using any type of adapters. I bought RG316 Cable with SMA Male (gold) connectors on both end, 10.0 ft (part# CCSHR316-10 from www.L-com.com).
    - I cut off the SMA connector from one end of the cable and I also cut off the connector from the roof-mount antenna cable. I then very carefully crimped those two cables together (eleminating the need of any cheap quality adapters).
    - I connected the cable to the new SMA connector on the radio module.
    - Before doing this modification I was receiving only 2 radio stations and those with very very bad reception as well. I crossed my fingures and turned on the car. I was only expecting to see some better reception and may be few more radio stations. Guess what? I was blown away by the result. I was getting like 25 stations out of which 22 had 100% streo quality reception. No breaking up either. I went to work and back home (about 120 miles) and through out the entire ride not even once I lost any reception. Throught the ride I just kept on saying HOLLY ****... HOLLY F****** ****!

    I now have way better reception and many more stations than what the original car radio got.

    Sorry guys for the long post, but I am very exicited and had to share it with all of you. May be you guys can try making your own cables and solder SMA GOLD connectors on your radio pcb!

Similar Threads

  1. [RELEASE - Public]GPSSecure - GPS Tracking
    By xBrady in forum GPSSecure
    Replies: 23
    Last Post: 03-05-2006, 09:33 PM
  2. Hot Chicks Thread - NOT WORK SAFE
    By ODYSSEY in forum Off Topic
    Replies: 1
    Last Post: 05-17-2005, 10:38 PM
  3. Amp or HU dilemma
    By paul167 in forum Car Audio
    Replies: 4
    Last Post: 11-03-2004, 06:45 AM
  4. Replies: 3
    Last Post: 01-07-2004, 12:52 PM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •