Originally Posted by mischka76
I painted the struture here:
Radio Drivers Round Table
The truth is:
There is no RDS interpretation... the RDS raw stream should be directly moved to the Frontend from the driver. I don't know what services are run over RDS in your conuntry/station - so I may forgot interpretation in my RDS interpreter. So if you programm your own frontend and want to show "RDS paging" (example) you can still use my driver(s)+RDS interpreter and got the RDS paging out of the raw RDS stream.
Frontend's handling of RDS:
(the RDS interpreter uses an objectual view of RDS - very powerful idea by Aeroanderz)
Private Sub mFMRadioHal_RDSRAWMessageavailable(ByRef RDSRAWMessage As FMRadio.FMRadioHAL.stRDSRAWMessage) Handles mFMRadioHal.RDSRAWMessageavailable
BTW: blocking/filtering information in a lower layer is always bad...
I would like to have more discussion ! I would like to have more discussion about interface spec's - I am sure there are some things stupid/missing/error.
If you have any concerns that this will not work with a Silabs/ADS Radio.... just ask...
Missing is "audio-mixer-stuff" - these are radiodrivers not "audio". The HQCT is radio with a mixer section.
Interface-Proposal for (radio-)audio-layers:
This Audio-DLL (the HQCT version of it) will/should communicate with the FMRadioHAL driver (over WindowsMessages)...
'this is the root class !
Public Interface I_AudioHAL
ReadOnly Property AudioSources() As AudioSourceCollection ' these Equlizers are at the Input of each Audiosource(Channel)
'...more to add ?
ReadOnly Property CommonEqualizer() As EqualizerBand ' this Eqaulizer is at the OUTPUT of our Mixer
Public Interface I_AudioSource
ReadOnly Property Name() As String
ReadOnly Property AudioType() As enAudioSourceTyp
ReadOnly Property RoutingType() As enRouteType
ReadOnly Property Equalizer() As EqualizerBandCollection
Property Volume() As Integer
Public Interface I_EqualizerBand
ReadOnly Property Name() As String ' examples "100Hz", "1000Hz", "TREBLE", "BASS", "LOUD", ....
ReadOnly Property SortID() As Integer 'helps the Frontends to display the Slider for every EqBand in the right order "100Hz" will be 0 "1000Hz" will be 1 - "BASS" will be 0 "TREBLE" will be 1
Property Value() As Integer ' 50% or something will be the center - this is the value to control this EqBand
Public Enum enRouteType
Public Enum enAudioSourceTyp