Jump to content

TMC


Guest osuijk

Recommended Posts

Hey there....

How the progress on the TMC driver....I hope that you can achieve on what you doing...

I would definitely by you a drink later..

Talking about drink...I need to do it for someone on this forum!

Link to comment
Share on other sites

My plan is to implement a multiple group buffering with update counter (that is parrtially implemented in the original driver), but first of all I need to get the driver up and running again.

Next attempt is to recomplile the unmodified version then binary compare with the original dll, maybe i missed something there.

I hope it is just a trivial bug...

For the moment I have not found any useful doc/source code related to FM receiver from the development point of view.

Concerning the whole project, are you still wanting to implement the Royaltek interface, or I have not well understood what you are doing? Maybe you don't need to touch the FM driver.

Now, with your explanations, and if you want to implement this Royaltek protocol, it is maybe possible to create a software (a kind of GPSGate but in the case of TMC), use the FM driver as FM radio does, just taking the RDS group that concerns TMC if it must be done (I don't know if this filter is implemented at this level or if it is at the application level that the filter is needed) and the implementation of the Royaltek protocol itself.

I don't have enough information to know if what I said is feasible or not.

Link to comment
Share on other sites

Guest BeamRider

Right, you are vey close to the point ... implementing a virtual com port like GPS gate or them mux GPS com port given with WM is very easy. If you google around you'll easily find ready to use code, but to make it operate RDS data coming from FM tuner is mandatory.

Unless I missed something very big, original driver does not leave access to its RDS data buffers, that's why I'm wrapping it. The driver processes RDS data to extract what the tuner software needs to operate (basically station name/ID and AF list), puts this data into registry (!!!) and that's all. Once I have a function that returns raw RDS data, I could easly write I very simple virtual COM driver that can emulate GNS and Royaltek (add what you like B) ) devices.

Secondary objective is to remove the check for the hearphone cable inside the driver, this will not make tuner work without an antenna but opens the possibility to plug an home made antenna (ie something embedded in the charging cable) leaving the audio path as is.

I'm sure that is a trivial bug or just a wrong toolchain configuration ... but I have no indicators on where the problems is and I need to try and check every possibility that comes up. Now it's time to go back to VS B)

Link to comment
Share on other sites

Guest BeamRider

BINGO!!! I found the problem ... it was due to a regular expression i used to convert ASM syntax!! One line out of 11000!!

The NEW driver is now working with original software, logging operations and givings RDS buffers to a test application I wrote in about 5 minutes B) I think that's enough for today, I'm excited to see the code working but I'm a little bit tired and bed is calling B)

A little bonus ... the log of the radio driver operations:

FM Radio - resource	allocation, success

FM Radio - InitializeFMRadioThread,	success

FM Radio - Init, done v001J1 

FM Radio - Open, hDeviceContext[0x00000001] hOpenContext[0x00032F80]

FM Radio - IOControl, hOpenContext[0x00032F80] dwCode[0x00321000]

FM Radio - Open, hDeviceContext[0x00000001] hOpenContext[0x000335D0]

FM Radio - Close, hOpenContext[0x000335D0]

FM Radio - si470x_tune, intr failed

FM Radio - Open, hDeviceContext[0x00000001] hOpenContext[0x00825230]

FM Radio - Open, hDeviceContext[0x00000001] hOpenContext[0x00054100]

FM Radio - IOControl, hOpenContext[0x00054100] dwCode[0x00220004]

FM Radio - IOCTL_FMRADIO_TURN_ON, region[1]

FM Radio - EnableFMRadioChipInterface success

FM Radio - addr[0x00] data[0x1242]

FM Radio - addr[0x01] data[0x1200]

FM Radio - addr[0x07] data[0x0100]

FM Radio - si470x_reg_read fail reset, addr[0x120E40E1]

FM Radio - addr[0x00] data[0x1242]

FM Radio - addr[0x01] data[0x1253]

FM Radio - addr[0x07] data[0x3C04]

FM Radio - si470x_InterruptThread start

FM Radio - si470x_reg_write	fail reset, addr[0x00]

FM Radio - si470x_deinitRdsVars, success

FM Radio - si470x_trackRdsAfList Freq[1] Rssi[1296]

FM Radio - addr[0x02] data[0x0801]

FM Radio - addr[0x04] data[0xD814]

FM Radio - addr[0x05] data[0x0510]

FM Radio - addr[0x06] data[0x0012]

FM Radio - si470x_trackRdsAfList afList[FM Radio - si470x_seek, intr failed

FM Radio - si470x_initRdsVars, success

FM Radio - addr[0x06] data[0x0112]

FM Radio - si470x_powerdown, ENABLE	bit not	cleared

FM Radio - si470x_powerdown, Firmware Rev[1]

DrvLib : SendMessageToAudio	- NumDevs[2]

DrvLib : SendMessageToAudio	- Index[0] Pname[Audio Output]

DrvLib : SendMessageToAudio	- Send Msg[1037] Param[0x00000000:0x00000000]

FM Radio - set volume[0x00], done

FM Radio - turn on,	done

FM Radio - IOControl, hOpenContext[0x00054100] dwCode[0x0022002C]

FM Radio - IOCTL_FMRADIO_ENABLE_STEREO

FM Radio - si470x_configure, done

FM Radio - IOControl, hOpenContext[0x00054100] dwCode[0x00220030]

FM Radio - IOCTL_FMRADIO_ENABLE_AF

FM Radio - IOControl, hOpenContext[0x00054100] dwCode[0x00220028]

FM Radio - IOCTL_FMRADIO_FORCE_SPEAKER

DrvLib : SendMessageToAudio	- NumDevs[2]

DrvLib : SendMessageToAudio	- Index[0] Pname[Audio Output]

DrvLib : SendMessageToAudio	- Send Msg[1037] Param[0x00000000:0x00000000]

FM Radio - IOControl, hOpenContext[0x00054100] dwCode[0x0022000C]

FM Radio - IOCTL_FMRADIO_TUNE_TO

FM Radio - addr[0x0B] data[0x0075]

FM Radio - si470x_regional_cfg[9920],	done

DrvLib : SendMessageToAudio	- NumDevs[2]

DrvLib : SendMessageToAudio	- Index[0] Pname[Audio Output]

DrvLib : SendMessageToAudio	- Send Msg[1037] Param[0x00000000:0x00000000]

FM Radio - tune to [9920], done

FM Radio - IOControl, hOpenContext[0x00054100] dwCode[0x00220020]

FM Radio - IOCTL_FMRADIO_SET_VOLUME

FM Radio - addr[0x06] data[0x0112]

FM Radio - si470x_powerdown, ENABLE	bit not	cleared

DrvLib : SendMessageToAudio	- NumDevs[2]

DrvLib : SendMessageToAudio	- Index[0] Pname[Audio Output]

DrvLib : SendMessageToAudio	- Send Msg[1037] Param[0x00000000:0x00000000]

FM Radio - set volume[0x08], done

FM Radio - si470x_seek, intr failed

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - IOControl, hOpenContext[0x00054100] dwCode[0x00220028]

FM Radio - IOCTL_FMRADIO_FORCE_SPEAKER

DrvLib : SendMessageToAudio	- NumDevs[2]

DrvLib : SendMessageToAudio	- Index[0] Pname[Audio Output]

DrvLib : SendMessageToAudio	- Send Msg[1037] Param[0x00000000:0x00000000]

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - IOControl, hOpenContext[0x00054100] dwCode[0x0022000C]

FM Radio - IOCTL_FMRADIO_TUNE_TO

FM Radio - si470x_seek, STC	bit not	cleared

FM Radio - addr[0x0B] data[0x0075]

FM Radio - si470x_regional_cfg[9920],	done

FM Radio - tune to [9920], done

FM Radio - si470x_seek, intr failed

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - update_clock[22:34 0_54788 2]

FM Radio - update_clock[22:34 0_54788 2]

...

As you can see, sometimes the intr is still failing, I think it's physiological because the behaviour is the same as before! Maybe logging is interfering with interrupt handling, but I don't care because I will disable logs ASAP.

Link to comment
Share on other sites

For your previous post, I fully understand now why you need to modify the driver. Obviously, you are right. I wonder how much time have you taken to discover that RDS data is not sent as raw data outside the driver!

BINGO!!! I found the problem ... it was due to a regular expression i used to convert ASM syntax!! One line out of 11000!!

You see? a trivial bug B)

Anyway, congratulations! you have performed a good work of investigation (or should I say "hacking"?). I must also thank you for the explanations you gave me about WM programming and in general about your project.

Link to comment
Share on other sites

Guest BeamRider
For your previous post, I fully understand now why you need to modify the driver. Obviously, you are right. I wonder how much time have you taken to discover that RDS data is not sent as raw data outside the driver!

It's more using the right tool ... at the right time B) Before starting this project I known nothing about ARM assembler (but I know x86 and some others micros) and nothing about WM kernel. It's fun and easy to learn (to the extent I need) thanks to people sharing knowledge, ideas, opinions and sample code. You see, sharing knowledge always pay back: I solved the issue!

Anyway, congratulations! you have performed a good work of investigation (or should I say "hacking"?). I must also thank you for the explanations you gave me about WM programming and in general about your project.

It's only reverse-engineering, I think that the real meaning of hacking is more related to break/bypass something made to not be broken and I do not pretend to be an hacker.

Thank you all for the support, but it's not yet time to party ... at least until we see TMC working with TT/iGo!

Link to comment
Share on other sites

Guest nok6280a
Yes, pretty well .. I'm changing house and not so much time to code. Sorry for not answering. Hope to work this night to some improvement I have in mind.

He BeamRider,

I wish you all the luck... B)

Link to comment
Share on other sites

Guest nok6280a
Yes, pretty well .. I'm changing house and not so much time to code. Sorry for not answering. Hope to work this night to some improvement I have in mind.

BeamRider, I was wondering how your tmc project is going.

Link to comment
Share on other sites

Guest Imationation

Hey Beamrider, how's the housemoving going?

You had any chance to pick up some spare time to work on this tmc thingy?

Edited by Imationation
Link to comment
Share on other sites

Guest Bouvrie

heh I also stumbled upon this project, was already initially thinking why the Omnia would support RDS, but have an intrinsic non-support for TMC. Finding this thread has increased my suspicion that this one day will be possible on the Omnia. I'll be keeping an eye on this thread, I'm loving the tech progress so far already! B)

Link to comment
Share on other sites

Guest paullong

Hi BeamRider,

I think I'm checking this forum twice daily! I haven't been as excited about the possibility of a piece of work for ages.

So, no news for a while. Can you just drop a line to let us know where you are with this?

I realise that we're mostly expecting you to do the work (except a few - thanks balles!), so it must seem like we're pushing very hard, but for me, it's only because you seem so close, and the benefit will be big.

Cheers for you work so far!

Paul

Link to comment
Share on other sites

  • 3 weeks later...
Guest qwertztmc

1st Happy New Year! @all

Are there any news about the tmc drivers for omnia?

It is a shame that there are no original drivers from samsung. And that I think it is great that somebody uses his sparetime to solve the problem.

So BeamRider if you could send us a sign of life or tell us how your project is going - would be cool!

Best Regards

qwertz

PS: As you might have noticed I am not a native speaker:-) Sorry for my bad English

Edited by qwertztmc
Link to comment
Share on other sites

  • 3 weeks later...
Guest bobobird

Referring back to post 5 on page 1.

I read somewhere that TMC DOES work on the Omnia using iGo 8.0.5400 version only.

This is what the guy said in various posts

- Samsung Omnia uses the SiliconLab TMC. (yes, iGo does detect this chip)

- TMC works good on my Omnia with iGO8.0.5400 (in later iGo versions this detection is removed).

- TMC service must be available in your country, then you can automatically tune radio stations frequencies that have this kind of transmission.

So question being reasked - can some one here who has free TMC service in their country (a few West Euro countries do), please test this and confirm one way or other ? I can make available a working evaluation copy of the iGo version for test purposes.

I know what BeamRider has said about this but since someone say he has it working maybe it should be checked out. My country does not have such service otherwise would have done it myself.

Thanks

Edited by bobobird
Link to comment
Share on other sites

Referring back to post 5 on page 1.

I read somewhere that TMC DOES work on the Omnia using iGo 8.0.5400 version only.

This is what the guy said in various posts

- Samsung Omnia uses the SiliconLab TMC. (yes, iGo does detect this chip)

- TMC works good on my Omnia with iGO8.0.5400 (in later iGo versions this detection is removed).

- TMC service must be available in your country, then you can automatically tune radio stations frequencies that have this kind of transmission.

So question being reasked - can some one here who has free TMC service in their country (a few West Euro countries do), please test this and confirm one way or other ? I can make available a working evaluation copy of the iGo version for test purposes.

Thanks

In theory my iGO has TMC licence, it does detect the TMC receiver (don't know which version, because I have updated it via naviextras, but it's still the 8.0.x branch), but it stays at 0Mhz, and it can't be changed although there is free TMC service in my country.

Link to comment
Share on other sites

Guest ziggy55
Referring back to post 5 on page 1.

I read somewhere that TMC DOES work on the Omnia using iGo 8.0.5400 version only.

This is what the guy said in various posts

- Samsung Omnia uses the SiliconLab TMC. (yes, iGo does detect this chip)

- TMC works good on my Omnia with iGO8.0.5400 (in later iGo versions this detection is removed).

- TMC service must be available in your country, then you can automatically tune radio stations frequencies that have this kind of transmission.

So question being reasked - can some one here who has free TMC service in their country (a few West Euro countries do), please test this and confirm one way or other ? I can make available a working evaluation copy of the iGo version for test purposes.

Thanks

Yes Please

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.