The G35DDC API SDK is implemented as a dynamic library (G35DDCAPI.dll). It provides object-oriented and non-object-oriented interfaces to control a set of G35DDC devices in coherent mode. This document describes the object-oriented interface. The G35DDCAPI.dll library exports several functions which makes it possible to control G35DDC receivers in coherent mode.
The API is not fully thread-safe so preferably should be used in single-threaded applications. It can be used in multi-threaded applications as well, but with some care: One set of G35DDC receivers can be controlled from a single user thread only.
A C/C++ header file G35DDCAPI.h is a part of the SDK. The API can be used by any 32-bit application under Microsoft Windows 7, Windows 8, Windows 10 and Windows 11 (including their 64-bit versions). The API can be used also by any 64-bit application but only under 64-bit versions of the supported operating systems.
The 'G35DDC device set' in coherent mode can consist of up to 8 interconnected G35DDC devices. DDC1 signals from all the G35DDC devices in such a set are phase-coherent. All other provided signals (IF, DDC2 and audio) are not phase-coherent. Only one processing channel per device is available in coherent mode.
The G35DDCAPI.dll library can be loaded to the application by two Microsoft Windows API functions. The first one is LoadLibrary and
the second one is LoadLibraryEx. After the library is loaded, it is necessary to get addresses of exported functions.
When the API is no longer required in the memory, the FreeLibrary function can be used to unload the API. Before the FreeLibrary is called, all the objects created using CreateInstance function must be freed releasing their interfaces using the Release method, otherwise the application can enter an unpredictable state.
The following source code shows how to load the API:
#include <stdio.h> #include "G35DDCAPI.h" G3XDDCAPI_CREATE_INSTANCE CreateInstance; HMODULE hAPI; void main(void) { //Loading the API hAPI=LoadLibrary("G35DDCAPI.dll"); if(hAPI!=NULL) { //Retrieving address of the CreateInstance function CreateInstance=(G3XDDCAPI_CREATE_INSTANCE)GetProcAddress(hAPI,"CreateInstance"); //Here place code that uses the API FreeLibrary(hAPI); } else { //If the LoadLibrary fails printf("Failed to load G35DDCAPI.dll.\n"); } }
To enumerate available G35DDC device sets, the API provides an enumeration object. The object has to be created using the CreateInstance function. The following source code in C++ produces a list of device serial numbers for the available G35DDC device sets:
#include <stdio.h> #include "G35DDCAPI.h" void main(void) { G3XDDCAPI_CREATE_INSTANCE CreateInstance; HMODULE hAPI; ICohG35DDCDeviceSetEnumerator *Enumerator=NULL; G35DDC_DEVICE_INFO *DevInfo; UINT32 Count; UINT32 SetCount,i,j; hAPI=LoadLibrary("G35DDCAPI.dll"); if(hAPI!=NULL) { CreateInstance=(G3XDDCAPI_CREATE_INSTANCE)GetProcAddress(hAPI,"CreateInstance"); if(CreateInstance(G35DDC_CLASS_ID_COH_DEVICE_SET_ENUMERATOR,(void**)&Enumerator)) { Enumerator->Enumerate(); SetCount=Enumerator->GetDeviceSetCount(); if(SetCount!=0) { printf("Available G35DDC device set count=%d:\n",SetCount); for(i=0;i<Count;i++) { printf("Device set %u:\n",i); //retrieve number of devices in the device set Count=0; Enumerator->GetDeviceSetInfo(i,NULL,&Count); printf("\tNumber of devices in the set: %u\n",Count); DevInfo=new G35DDC_DEVICE_INFO[Count]; Enumerator->GetDeviceSetInfo(i,DevInfo,&Count); for(j=0;j<Count;j++) { printf("\t\t%u: SN: %s\n",j,DevInfo[j].SerialNumber); } delete[] DevInfo; } } else { printf("No available G35DDC device set found.\n"); } Enumerator->Release(); } else { printf("Failed to create enumerator object. Error code=%08X\n",GetLastError()); } FreeLibrary(hAPI); } else { printf("Failed to load G35DDCAPI.dll.\n"); } printf("Press enter to exit\n"); getchar(); }
G35DDC device set has to be open before it can be controlled. The API provides an object to open and control the device set of interconnected G35DDC devices in coherent mode. This object has to be created using the CreateInstance function.
The following source code shows how to open the first available G35DDC device set.
#include <stdio.h> #include "G35DDCAPI.h" void main(void) { G3XDDCAPI_CREATE_INSTANCE CreateInstance; HMODULE hAPI; ICohG35DDCDeviceSet *DeviceSet; //Loading the API hAPI=LoadLibrary("G35DDCAPI.dll"); if(hAPI!=NULL) { //Retrieving address of the CreateInstance API functions CreateInstance=(G3XDDCAPI_CREATE_INSTANCE)GetProcAddress(hAPI,"CreateInstance"); //Creating instance of the device object if(CreateInstance(G35DDC_CLASS_ID_COH_DEVICE_SET,(void**)&DeviceSet)) { //Opening the first available G35DDC device set using predefined G35DDC_OPEN_FIRST_SET constant if(DeviceSet->Open(G35DDC_OPEN_FIRST_SET,0)) { //Here place code that works with the open G35DDC device set //Closing device set DeviceSet->Close(); } else { printf("Failed to open device set. Error code=%08X\n",GetLastError()); } //Release interface of device object DeviceSet->Release(); } else { printf("Failed to create device set object. Error code=%08X\n",GetLastError()); } FreeLibrary(hAPI); } else { //If the LoadLibrary fails printf("Failed to load G35DDCAPI.dll.\n"); } }The following code demonstrates another way to open the first available G35DDC device set using the device set enumerator.
#include <stdio.h> #include "G35DDCAPI.h" void main(void) { G3XDDCAPI_CREATE_INSTANCE CreateInstance; HMODULE hAPI; ICohG35DDCDeviceSetEnumerator *Enumerator=NULL; G35DDC_DEVICE_INFO *DevInfo; UINT32 Count; UINT32 SetCount; ICohG35DDCDeviceSet *DeviceSet; hAPI=LoadLibrary("G35DDCAPI.dll"); if(hAPI!=NULL) { CreateInstance=(G3XDDCAPI_CREATE_INSTANCE)GetProcAddress(hAPI,"CreateInstance"); if(CreateInstance(G35DDC_CLASS_ID_COH_DEVICE_SET_ENUMERATOR,(void**)&Enumerator)) { Enumerator->Enumerate(); SetCount=Enumerator->GetDeviceSetCount(); if(SetCount!=0) { printf("Available G35DDC device set count=%d:\n",SetCount); //retrieve number of devices in the first device set Count=0; Enumerator->GetDeviceSetInfo(0,NULL,&Count); DevInfo=new G35DDC_DEVICE_INFO[Count]; Enumerator->GetDeviceSetInfo(0,DevInfo,&Count); CreateInstance(G35DDC_CLASS_ID_COH_DEVICE_SET,(void**)&DeviceSet); if(DeviceSet->Open(DevInfo,Count)) { //Here place code that works with the open G35DDC device set //Closing device set DeviceSet->Close(); } else { printf("Failed to open device set. Error code=%08X\n",GetLastError()); } DeviceSet->Release(); delete[] DevInfo; } else { printf("No available G35DDC device set found.\n"); } Enumerator->Release(); } else { printf("Failed to create enumerator object. Error code=%08X\n",GetLastError()); } FreeLibrary(hAPI); } else { printf("Failed to load G35DDCAPI.dll.\n"); } printf("Press enter to exit\n"); getchar(); }
Creates single object of the specified class and returns interface of the object.
C/C++ declaration
INT32 __stdcall CreateInstance(UINT32 ClassId,PVOID *Interface);
Address retrieval
G3XDDCAPI_CREATE_INSTANCE CreateInstance=(G3XDDCAPI_CREATE_INSTANCE)GetProcAddress(hAPI,"CreateInstance");
Parameters
ClassId[in] Specifies class identifier of the object to be created. This parameter must be one of the following:
Value Meaning G35DDC_CLASS_ID_COH_DEVICE_SET_ENUMERATOR Class identifier of the enumerator object. When the function finished successfully, ICohG35DDCDeviceSetEnumerator interface is stored to a pointer variable pointed to by the Interface parameter. G35DDC_CLASS_ID_COH_DEVICE_SET Class identifier of the device set object. When the function finished successfully, ICohG35DDCDeviceSet interface is stored to a pointer variable pointed to by the Interface parameter. Interface[out] Pointer to a variable that receives interface to newly created object of specified class. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
All the objects created using CreateInstance must be freed, releasing their interfaces using the Release method before the API is unloaded using the FreeLibrary function.
The CreateInstance function can be called in any user-thread. Returned interface can be used only in the same thread in which its object was created, otherwise the application can enter an unpredictable state.
ICohG35DDCDeviceSetEnumerator interface is the interface of the enumerator object that is created using the CreateInstance function and which provides an enumeration mechanism of available G35DDC devices sets.
Increases the reference count to the enumerator object.
C/C++ declaration
LONG __stdcall AddRef(void);
Parameters
None
Return value
The method returns resulting reference count.
Remarks
Initial reference count of an object created using the CreateInstance function is 1.
Decrements the reference count of the object. When the reference count reaches zero, the object and all the resources allocated by them are freed and the interface is no longer usable.
C/C++ declaration
LONG __stdcall Release(void);
Parameters
None
Return value
The method returns the resulting reference count. If the return value is zero, the object was freed.
Performs enumeration of available G35DDC devices sets in coherent mode.
C/C++ declaration
BOOL __stdcall Enumerate(void);
Parameters
None
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Retrieves the number of available G35DDC device sets enumerated using the ICohG35DDCDeviceSetEnumerator::Enumerate method.
C/C++ declaration
UINT32 __stdcall GetDeviceSetCount(void);
Parameters
None
Return value
The method returns the number of available G35DDC device sets.
Retrieves information about the available G35DDC device set.
C/C++ declaration
BOOL __stdcall GetDeviceSetInfo(UINT32 SetIndex,G35DDC_DEVICE_INFO *DeviceInfos,UINT32 *DeviceInfosCount);
Parameters
SetIndex[in] Specifies index of the device set. It can vary from zero to 'one less' than the value returned by the ICohG35DDCDeviceSetEnumerator::GetDeviceSetCount method.DeviceInfos[out] Pointer to array of G35DDC_DEVICE_INFO structures to be filled with information about the device set.Order of the device infos in the array corresponds to hardware interconnect of physical G35DDC devices.DeviceInfosCount[in, out] Pointer to a variable that specifies size of the array (number of items in the array) pointed to by the DeviceInfos parameter. When the method returns, this variable contains the number of items copied to DeviceInfos.If the array specified by DeviceInfos parameter is not large enough to hold information about all the devices in the device set, the method fails (GetLastError returns ERROR_INSUFFICIENT_BUFFER) and stores the required array size (number of items) in the variable pointed to by the DeviceInfosCount parameter.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
ICohG35DDCDeviceSet interface is an interface of the device set object that is created using the CreateInstance function. This interface allows control of the selected G35DDC device set in coherent mode.
Increases the reference count to the device set object.
C/C++ declaration
LONG __stdcall AddRef(void);
Parameters
None
Return value
The method returns resulting reference count.
Remarks
Initial reference count of an object created using CreateInstance function is 1.
Decrements the reference count of the object. When the reference count reaches zero, the object and all the resources allocated by them are freed and the interface is no longer usable.
C/C++ declaration
LONG __stdcall Release(void);
Parameters
None
Return value
The method returns resulting reference count. If the return value is zero, the object was freed.
Opens all the G35DDC devices in the device set and associates them with the device set object given by its interface pointer.
C/C++ declaration
BOOL __stdcall Open(G35DDC_DEVICE_INFO *DeviceInfos,UINT32 Count);
Parameters
DeviceInfos[in] Pointer to array of G35DDC_DEVICE_INFO structures which contains information about all the devices in the device set to be opened. The number of items in the array is given by the Count parameter. The order of device info structures in the array has to correspond to hardware interconnect of the G35DDC devices. Array of device info structures and its size can be obtained using the ICohG35DDCDeviceSetEnumerator. The example above shows how to achieve this.
It is possible to use one of the following predefined values instead of a pointer to the array:
Value Meaning G35DDC_OPEN_FIRST_SET This method opens the first available G35DDC device set. The Count parameter is ignored, the number of interconnected devices is determined automatically. G35DDC_OPEN_DEMO_SET This method opens a demo G35DDC device set. This allows developers to work with the API without physical G35DDC devices. The Count parameter specifies the number of demo receivers in the set and can vary from 1 to 8. Count[in] Specifies the number of items in the array pointed to by the DeviceInfos parameter.
Return value
If the method succeeds, the return value non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The order of devices in the device set corresponds to the hardware interconnection of the G35DDC devices. Each individual device in the device set has its own constant index which does not change while the hardware G35DDC device interconnect remains the same. This index is used in some methods of device set object to access a specific device of the device set. Index of the first device is 0, index of the second device is 1, etc..
Closes currently open G35DDC device set and all the devices of this set associated with the device set object; and makes the object available for use with another G35DDC device set.
C/C++ declaration
VOID __stdcall Close(void);
Parameters
None
Return value
None
Remarks
If no 'open' G35DDC device set is associated with the object, the Close method does nothing.
Checks if all the devices in the device set are still connected to the computer.
C/C++ declaration
BOOL __stdcall IsConnected(void);
Parameters
None
Return value
This method returns a non-zero value if all the devices in the set are still connected.
If a device is disconnected or the method fails, the return value is zero. To determine if the method failed, call GetLastError. GetLastError returns ERROR_SUCCESS if a device is disconnected or another error code if IsConnected failed.
Remarks
If any device from the set is determined disconnected, the device set is no longer usable and should be closed using the ICohG35DDCDeviceSet::Close method.
Retrieves number of G35DDC devices in the device set.
C/C++ declaration
BOOL __stdcall GetDeviceCount(UINT32 *Count);
Parameters
Count[out] Pointer to a variable that receives the number of G35DDC devices in the device set. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Retrieves information about a single G35DDC device from the device set.
C/C++ declaration
BOOL __stdcall GetDeviceInfo(UINT32 DeviceIndex,G35DDC_DEVICE_INFO *Info);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set. The order of the devices corresponds to the hardware interconnection of physical G35DDC devices.Info[out] Pointer to a G35DDC_DEVICE_INFO structure to be filled with information about the device. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetDeviceCount method to determine the number of devices in the device set.
Retrieves information about all the G35DDC devices in the device set at once.
C/C++ declaration
BOOL __stdcall GetDeviceInfos(G35DDC_DEVICE_INFO *Infos,UINT32 *InfoCount);
Parameters
Infos[out] Pointer to array of G35DDC_DEVICE_INFO structures to be filled with information about device in the device set.Order of the device infos in the array corresponds to hardware interconnection of physical G35DDC devices.InfoCount[in, out] Pointer to a variable that specifies the size of the array (number of items in the array) pointed to by the Infos parameter. When the method returns, this variable contains the number of items copied to Infos.If the array specified by Infos parameter is not large enough to hold information about all the devices in the device set, the method fails (GetLastError returns ERROR_INSUFFICIENT_BUFFER) and stores the required array size (number of items) in the variable pointed to by the InfoCount parameter.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetDeviceCount method to determine the number of devices in the device set.
Turns on or off all the G35DDC devices in the device set.
C/C++ declaration
BOOL __stdcall SetPower(BOOL Power);
Parameters
Power[in] Specifies whether to turn on or off the devices. If this parameter is non-zero all the device in the device set are turned on, if it is zero then all the devices are turned off.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
If ICohG35DDCDeviceSet::SetPower turns the devices off, all the running streams are stopped.
Use the ICohG35DDCDeviceSet::GetPower method to determine the current power state of devices in the device set.
ICohG35DDCDeviceSet::SetPower fails if some parts of the multichannel coherent system are not properly interconnected or improper cables are used for interconnection.
The GetPower method determines whether the devices are turned on or off.
C/C++ declaration
BOOL __stdcall GetPower(BOOL *Power);
Parameters
Power[out] Pointer to a variable that receives current power state of the device set. If it is non-zero, the devices are turned on. If it is zero the devices are turned off. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets input attenuator.
C/C++ declaration
BOOL __stdcall SetAttenuator(UINT32 Attenuator);
Parameters
Attenuator[in] Value that specifies attenuation level in dB. Possible values are: 0, 3, 6, 9, 12, 15, 18, 21. If the value is not from the list, the ICohG35DDCDeviceSet::SetAttenuator method rounds the value to the nearest lower one.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetAttenuator method to determine the current setting of the attenuator.
If the receiver which is open (in the given device set) is a part of the multichannel coherent system in Extended Topology Configuration (ETC, see ICohG35DDCDeviceSet::SetConfiguration), then the ICohG35DDCDeviceSet::SetAttenuator method with the same value of the Attenuator parameter has to be called on all of the receivers in this multichannel coherent system.
Retrieves current setting of the attenuator.
C/C++ declaration
BOOL __stdcall GetAttenuator(UINT32 *Attenuator);
Parameters
Attenuator[out] Pointer to a variable that receives the current attenuation level. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Controls the band pass filter at RF input.
C/C++ declaration
BOOL __stdcall SetPreselectors(UINT32 Low,UINT32 High);
Parameters
Low[in] Specifies the cut-off low frequency of the filter in Hz. Possible values are: 0, 850000, 2400000, 5400000, 11800000. If the value is not from the list, the method rounds it to the nearest one.High[in] Specifies the cut-off high frequency of the filter in Hz. Possible values are: 3100000, 5400000, 11800000, 23300000, 50000000. If the value is not from the list, the method rounds it to the nearest one.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Value of the Low parameter must not be higher than value of the High parameter, otherwise the method fails.
Use the ICohG35DDCDeviceSet::GetPreselectors method to determine the current setting of the preselectors.
If the receiver which is open (in the given device set) is a part of the multichannel coherent system in Extended Topology Configuration (ETC, see ICohG35DDCDeviceSet::SetConfiguration), then the ICohG35DDCDeviceSet::SetPreselectors method with the same values of the Low and High parameters has to be called on all of the receivers in this multichannel coherent system.
Retrieves the current setting of RF input band pass filter.
C/C++ declaration
BOOL __stdcall GetPreselectors(UINT32 *Low,UINT32 *High);
Parameters
Low[out] Pointer to a variable that receives the current cut-off low frequency of the filter in Hz. This parameter can be NULL if the application does not require this information.High[out] Pointer to a variable that receives the current cut-off high frequency of the filter in Hz. This parameter can be NULL if the application does not require this information.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Enables or disables the RF input preamplifier.
C/C++ declaration
BOOL __stdcall SetPreamp(BOOL Preamp);
Parameters
Preamp[in] Specifies whether to enable or disable the RF preamplifier. If this parameter is non-zero, the preamplifier is enabled. If the parameter is zero, the preamplifier is disabled.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetPreamp method to determine the current state of the preamplifier.
If the receiver which is open (in the given device set) is a part of the multichannel coherent system in Extended Topology Configuration (ETC, see ICohG35DDCDeviceSet::SetConfiguration), then the ICohG35DDCDeviceSet::SetPreamp method with the same value of the Preamp parameter has to be called on all of the receivers in this multichannel coherent system.
Retrieves the current state of RF input preamplifier.
C/C++ declaration
BOOL __stdcall GetPreamp(BOOL *Preamp);
Parameters
Preamp[out] Pointer to a variable that receives the current state of the preamplifier. The value is non-zero if the preamplifier is enabled and zero if it is disabled. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Enables or disables the noise blanker on the ADC stream.
C/C++ declaration
BOOL __stdcall SetADCNoiseBlanker(BOOL Enabled);
Parameters
Enabled[in] Specifies whether to enable or disable the noise blanker. If this parameter is non-zero, noise blanker is enabled. If the parameter is zero, noise blanker is disabled.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetADCNoiseBlanker method to determine the current state of the noise blanker.
If the receiver which is open (in the given device set) is a part of the multichannel coherent system in Extended Topology Configuration (ETC, see ICohG35DDCDeviceSet::SetConfiguration), then the ICohG35DDCDeviceSet::SetADCNoiseBlanker method with the same value of the Enabled parameter has to be called on all of the receivers in this multichannel coherent system.
Retrieves the current ADC noise blanker state.
C/C++ declaration
BOOL __stdcall GetADCNoiseBlanker(BOOL *Enabled);
Parameters
Enabled[out] Pointer to a variable that receives the current state of noise blanker. The value is non-zero if noise blanker is enabled and zero if it is disabled. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Specifies the ADC noise blanker threshold.
C/C++ declaration
BOOL __stdcall SetADCNoiseBlankerThreshold(WORD Threshold);
Parameters
Threshold[in] Specifies the maximum acceptable input signal. The maximum possible value of threshold is 32767, in this case the noise blanker has no effect even if it is enabled using the ICohG35DDCDeviceSet::SetADCNoiseBlanker method.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetADCNoiseBlankerThreshold method to retrieve the current threshold of the noise blanker.
Determines the ADC noise blanker threshold.
C/C++ declaration
BOOL __stdcall GetADCNoiseBlankerThreshold(WORD *Threshold);
Parameters
Threshold[out] Pointer to a variable that receives the threshold of ADC noise blanker. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Starts sending of IF snapshots from specific device of the device set.
C/C++ declaration
BOOL __stdcall StartIF(UINT32 DeviceIndex,WORD Period);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Period[in] Specifies the time interval in milliseconds for how often the IF snapshot is taken and sent to the ICohG35DDCDeviceSetCallback::CohG35DDC_IFCallback callback.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The G35DDC device has to be turned on using the ICohG35DDCDeviceSet::SetPower method before use of ICohG35DDCDeviceSet::StartIF, otherwise the ICohG35DDCDeviceSet::StartIF method fails.
Stops sending of IF snapshots from specific device of the device set.
C/C++ declaration
BOOL __stdcall StopIF(UINT32 DeviceIndex,);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The ICohG35DDCDeviceSetCallback::CohG35DDC_IFCallback callback is not called after ICohG35DDCDeviceSet::StopIF returns.
Enables or disables frequency spectrum inversion.
C/C++ declaration
BOOL __stdcall SetInverted(BOOL Inverted);
Parameters
Inverted[in] Specifies whether to enable or disable frequency spectrum inversion. If this parameter is non-zero, IF spectrum is inverted.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Retrieves the current frequency spectrum inversion setting.
C/C++ declaration
BOOL __stdcall GetInverted(BOOL *Inverted);
Parameters
Inverted[out] Pointer to a variable that receives a non-zero value if the frequency spectrum inversion is enabled, and zero if the inversion is disabled. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Retrieves information about DDC format.
C/C++ declaration
BOOL __stdcall GetDDCInfo(UINT32 DDCTypeIndex,G3XDDC_DDC_INFO *Info);
Parameters
DDCTypeIndex[in] Specifies index of DDC type. For more information, see remarks.Info[out] Pointer to a G3XDDC_DDC_INFO structure to be filled with information about DDC type.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetDDC1Count method to determine the number of possible DDC types of DDC1. In this case the DDCTypeIndex parameter can vary from zero to 'one less' than the number determined by the ICohG35DDCDeviceSet::GetDDC1Count.
Use the ICohG35DDCDeviceSet::GetDDC1 method to determine the current DDC type index of DDC1 and the ICohG35DDCDeviceSet::GetDDC2 method to determine current DDC type of DDC2.
Retrieves the number of DDC types supported by DDC1.
C/C++ declaration
BOOL __stdcall GetDDC1Count(UINT32 *Count);
Parameters
Count[out] Pointer to a variable that receives the number of DDC types supported by the DDC1. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets current DDC type of DDC1.
C/C++ declaration
BOOL __stdcall SetDDC1(UINT32 DDCTypeIndex);
Parameters
DDCTypeIndex[in] Specifies index of DDC type to be used in DDC1. It can vary from zero to 'one less than number of DDC types' of the DDC1.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetDDC1Count method to determine the number of possible DDC types of the DDC1. The DDCTypeIndex parameter can vary from zero to 'one less' than the number determined by ICohG35DDCDeviceSet::GetDDC1Count.
DDC1 streaming must not run when calling ICohG35DDCDeviceSet::SetDDC1. In other words, DDC1 streaming which is started using the ICohG35DDCDeviceSet::StartDDC1 method has to be stopped using the ICohG35DDCDeviceSet::StopDDC1 method before calling of ICohG35DDCDeviceSet::SetDDC1, otherwise ICohG35DDCDeviceSet::SetDDC1 fails. The ICohG35DDCDeviceSet::SetDDC1 method does not start and stop DDC1 streaming, just changes the DDC type of DDC1.
Calling of ICohG35DDCDeviceSet::SetDDC1 can change the current DDC type of DDC2 and current bandwidth of demodulator filter, so it is useful to call the ICohG35DDCDeviceSet::GetDDC2 and ICohG35DDCDeviceSet::GetDemodulatorFilterBandwidth methods immediately after ICohG35DDCDeviceSet::SetDDC1 to determine the current DDC type of DDC2 and current bandwidth of demodulator filter.
Use the ICohG35DDCDeviceSet::GetDDC1 method to determine the current DDC type of the DDC1.
If the receiver which is open (in the given device set) is a part of the multichannel coherent system in Extended Topology Configuration (ETC, see ICohG35DDCDeviceSet::SetConfiguration), then the ICohG35DDCDeviceSet::SetDDC1 function with the same value of the DDCTypeIndex parameter has to be called on all of the receivers in this multichannel coherent system before DDC1 streaming is started using the ICohG35DDCDeviceSet::StartDDC1 method.
Retrieves information about the current DDC type of the DDC1.
C/C++ declaration
BOOL __stdcall GetDDC1(UINT32 *DDCTypeIndex,G3XDDC_DDC_INFO *DDCInfo);
Parameters
DDCTypeIndex[out] Pointer to a variable that receives index of current DDC type of the DDC1. This parameter can be NULL if the application does not require this information.DDCInfo[out] Pointer to a G3XDDC_DDC_INFO structure to be filled with information about the current DDC type of the DDC1. This parameter can be NULL if the application does not require this information.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Returned DDCTypeIndex can be passed to the ICohG35DDCDeviceSet::GetDDCInfo method.
Sets DDC1 center frequency.
C/C++ declaration
BOOL __stdcall SetDDC1Frequency(UINT32 Frequency);
Parameters
Frequency[in] Specifies the new center frequency of DDC1 in Hz.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Changing of DDC1 frequency causes change of absolute frequency of the DDC2, and demodulator in each device in the set.
Use the ICohG35DDCDeviceSet::GetDDC1Frequency method to determine the current center frequency of DDC1.
If the receiver which is open (in the given device set) is a part of the multichannel coherent system in Extended Topology Configuration (ETC, see ICohG35DDCDeviceSet::SetConfiguration), then the ICohG35DDCDeviceSet::SetDDC1Frequency method with the same value of the Frequency parameter has to be called on all of the receivers in this multichannel coherent system. This is to prepare all of the receivers, and then the operation has to be completed by calling the ICohG35DDCDeviceSet::Trigger method on the synchronization master receiver.
Retrieves the current center frequency of DDC1.
C/C++ declaration
BOOL __stdcall GetDDC1Frequency(UINT32 *Frequency);
Parameters
Frequency[out] Pointer to a variable that receives the current center frequency of DDC1 in Hz. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets phase shift of DDC1 signal for specific device in the device set.
C/C++ declaration
BOOL __stdcall SetDDC1PhaseShift(UINT32 DeviceIndex,double PhaseShift);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.PhaseShift[in] Specifies the new phase shift of DDC1 signal in degrees at the current DDC1 center frequency. It can vary from -180 to +180 degrees.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
It can be used for compensation of 'small length differences' of cables used for the coherent clock or at receiver RF inputs.
Use the ICohG35DDCDeviceSet::GetDDC1PhaseShift method to retrieve the current phase shift of the DDC1 signal.
Retrieves the current phase shift of the DDC1 signal for the specific device in the device set.
C/C++ declaration
BOOL __stdcall GetDDC1PhaseShift(UINT32 DeviceIndex,double *PhaseShift);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.PhaseShift[out] Pointer to a variable that receives the current phase shift of the DDC1 signal in degrees. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Starts coherent DDC1 streaming on all the devices in the set simultaneously.
C/C++ declaration
BOOL __stdcall StartDDC1(UINT32 SamplesPerBuffer);
Parameters
SamplesPerBuffer[in] Specifies the number of I/Q sample sets in each buffer passed to the ICohG35DDCDeviceSetCallback::CohG35DDC_DDC1StreamCallback callback. If the current DDC1 type index (specified by the ICohG35DDCDeviceSet::SetDDC1 method) is less than or equal to 23 (DDC1 bandwidth <= 4 MHz) the value of the SamplesPerBuffer has to be a multiple of 64. If the current the DDC1 type index is greater than 23 (DDC1 bandwidth > 4 MHz), the SamplesPerBuffers has to be a multiple of 1024. If it is zero, the ICohG35DDCDeviceSet::StartDDC1 method fails.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The G35DDC devices have to be turned on using the ICohG35DDCDeviceSet::SetPower method before ICohG35DDCDeviceSet::StartDDC1 is used. Otherwise ICohG35DDCDeviceSet::StartDDC1 fails.
If the DDC1 streaming is already running before use of ICohG35DDCDeviceSet::StartDDC1, ICohG35DDCDeviceSet::StartDDC1 restarts the streaming except it was previously started with the same SamplesPerBuffer parameter. In this case ICohG35DDCDeviceSet::StartDDC1 does nothing. Restart of DDC1 streaming stops DDC2 and audio streaming in each device in the set. ICohG35DDCDeviceSet::StartDDC1 does not restart DDC2 and audio streaming.
Use the ICohG35DDCDeviceSet::StopDDC1 method to stop DDC1 streaming.
Decreasing the value of the SamplesPerBuffer parameter decreases latency and may increase CPU usage. Increasing the value of the SamplesPerBuffer parameter increases latency and may decrease CPU usage.
If the receiver which is open (in the given device set) is a part of the multichannel coherent system in Extended Topology Configuration (ETC, see ICohG35DDCDeviceSet::SetConfiguration), then the ICohG35DDCDeviceSet::StartDDC1 method with the same value of the SamplesPerBuffer parameter has to be called on all of the receivers in this multichannel coherent system. This is to prepare all the receivers and then the operation has to be completed by calling the ICohG35DDCDeviceSet::Trigger method on the synchronization master receiver.
Stops DDC1 streaming on all the devices of the device set.
C/C++ declaration
BOOL __stdcall StopDDC1(void);
Parameters
None
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The ICohG35DDCDeviceSet::StopDDC1 method stops all the streaming beyond the DDC1 in the processing chain (DDC2 and audio streaming in all the devices in the set).
The ICohG35DDCDeviceSetCallback::CohG35DDC_DDC1StreamCallback callback is not called after ICohG35DDCDeviceSet::StopDDC1 returns.
Retrieves information about the current DDC type of the DDC2.
C/C++ declaration
BOOL __stdcall GetDDC2(UINT32 *DDCTypeIndex,G3XDDC_DDC_INFO *DDCInfo);
Parameters
DDCTypeIndex[out] Pointer to a variable that receives an index of the current DDC type of the DDC2. This parameter can be NULL if the application does not require this information.DDCInfo[out] Pointer to a G3XDDC_DDC_INFO structure to be filled with information about the current DDC type of the DDC2. This parameter can be NULL if the application does not require this information.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
DDC type of DDC2 in each device is the same and depends upon the DDC type of DDC1, it cannot be changed by the application directly. The DDC type of DDC2 is equal to the DDC type of DDC1 if DDC type index of DDC1 is less than or equal to 5 (sample rate: 80 kHz, bandwidth: 64 kHz, bits per sample: 32). If the DDC type index of DDC1 is above 5, the DDC type index of DDC2 is always 5. Changing of DDC type of DDC1 can cause a change of DDC type of DDC2, so it is useful to call ICohG35DDCDeviceSet::GetDDC2 immediately after the ICohG35DDCDeviceSet::SetDDC1 method to determine the current DDC type of DDC2 - if the application needs to know parameters of DDC2.
The BitsPerSample member of the G3XDDC_DDC_INFO structure is not used and it can be ignored for DDC2. I and Q samples in buffers passed to the ICohG35DDCDeviceSetCallback::CohG35DDC_DDC2StreamCallback and ICohG35DDCDeviceSetCallback::CohG35DDC_DDC2PreprocessedStreamCallback DDC2 callbacks are always in IEEE float (32 bit, little endian) format.
Returned DDCTypeIndex can be passed to the ICohG35DDCDeviceSet::GetDDCInfo method.
Sets the relative center frequency of DDC2 for the specified device of the device set.
C/C++ declaration
BOOL __stdcall SetDDC2Frequency(UINT32 DeviceIndex,INT32 Frequency);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Frequency[in] Specifies new the center frequency of DDC2 in Hz.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The value of the Frequency parameter is center frequency of the DDC2 relative to center of the DDC1. The value can be negative.
The absolute frequency of the DDC2 is given by the following formula:
faDDC2 = fDDC1 + frDDC2
Where faDDC2 is the absolute center frequency of DDC2, fDDC1 is the center frequency of the DDC1 in Hz (set using the ICohG35DDCDeviceSet::SetDDC1Frequency method) and frDDC2 is the relative center frequency of DDC2 in Hz (set using ICohG35DDCDeviceSet::SetDDC2Frequency).
Changing of DDC2 'relative frequency' changes the 'absolute frequency' of the DDC2 and demodulator of specified device.
Use the ICohG35DDCDeviceSet::GetDDC2Frequency method to determine the current relative center frequency of the DDC2.
The following example shows three methods of how it is possible to set the absolute DDC2 center frequency of the first device (DeviceIndex = 0) to 11.01 MHz:
ICohG35DDCDeviceSet *DeviceSet; //Interface of the G35DDC device set object, created using CreateInstance function //1. method DeviceSet->SetDDC1Frequency(11010000); DeviceSet->SetDDC2Frequency(0,0); //2. method, it can be used if bandwidth of DDC2 is less than bandwidth of DDC1 DeviceSet->SetDDC1Frequency(11000000); DeviceSet->SetDDC2Frequency(0,10000); //3. method, it can be used if bandwidth of DDC2 is less than bandwidth of DDC1 DeviceSet->SetDDC1Frequency(11020000); DeviceSet->SetDDC2Frequency(0,-10000);
Retrieves the current relative DDC2 center frequency of the specified device in the device set.
C/C++ declaration
BOOL __stdcall GetDDC2Frequency(UINT32 DeviceIndex,INT32 *Frequency);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Frequency[out] Pointer to a variable that receives the current relative center frequency of DDC2 in Hz. The returned value can be negative. See remarks of the ICohG35DDCDeviceSet::SetDDC2Frequency for information how to calculate the absolute center frequency of DDC2. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Starts DDC2 streaming on the specified device.
C/C++ declaration
BOOL __stdcall StartDDC2(UINT32 DeviceIndex,UINT32 SamplesPerBuffer);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.SamplesPerBuffer[in] Specifies the number of I/Q sample sets in each buffer passed to the ICohG35DDCDeviceSetCallback::CohG35DDC_DDC2StreamCallback and ICohG35DDCDeviceSetCallback::CohG35DDC_DDC2PreprocessedStreamCallback callbacks. The value has to be multiple of 64 greater than zero. If it is zero, the ICohG35DDCDeviceSet::StartDDC2 method fails. If it is not a multiple of 64, the method rounds it up to nearest multiple of 64.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Before ICohG35DDCDeviceSet::StartDDC2 is used, devices of the device set have to be turned on using the ICohG35DDCDeviceSet::SetPower method and DDC1 streaming has to be started using the ICohG35DDCDeviceSet::StartDDC1 method, otherwise ICohG35DDCDeviceSet::StartDDC2 fails.
If the DDC2 streaming for a given device is already running, ICohG35DDCDeviceSet::StartDDC2 restarts it except the streaming was previously started with the same SamplesPerBuffer parameter. In this case ICohG35DDCDeviceSet::StartDDC2 does nothing. Restart of the DDC2 streaming stops audio streaming for the given device. ICohG35DDCDeviceSet::StartDDC2 does not restart audio streaming.
Use the ICohG35DDCDeviceSet::StopDDC2 method to stop DDC2 streaming.
Decreasing the value of the SamplesPerBuffer parameter decreases latency and may increase CPU usage. Increasing the value of the SamplesPerBuffer parameter increases latency and may decrease CPU usage.
Stops DDC2 streaming on the specified device.
C/C++ declaration
BOOL __stdcall StopDDC2(UINT32 DeviceIndex);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
If audio streaming for a given device is running, it is stopped too.
If DDC2 streaming is not active, ICohG35DDCDeviceSet::StopDDC2 does nothing.
The ICohG35DDCDeviceSetCallback::CohG35DDC_DDC2StreamCallback and ICohG35DDCDeviceSetCallback::CohG35DDC_DDC2PreprocessedStreamCallback callbacks are not called when ICohG35DDCDeviceSet::StopDDC2 returns.
Enables or disables the noise blanker on the DDC2 stream of the specified device.
C/C++ declaration
BOOL __stdcall SetDDC2NoiseBlanker(UINT32 DeviceIndex,BOOL Enabled);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Enabled[in] Specifies whether to enable or disable the noise blanker. If this parameter is non-zero, the noise blanker is enabled. If the parameter is zero, the noise blanker is disabled.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetDDC2NoiseBlanker method to determine the current state of the noise blanker.
Retrieves the current DDC2 noise blanker state of the specified device.
C/C++ declaration
BOOL __stdcall GetDDC2NoiseBlanker(UINT32 DeviceIndex,BOOL *Enabled);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Enabled[out] Pointer to a variable that receives current state of noise blanker. The value is non-zero if noise blanker is enabled and zero if it is disabled. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Specifies the DDC2 noise blanker threshold of the specified device.
C/C++ declaration
BOOL __stdcall SetDDC2NoiseBlankerThreshold(UINT32 DeviceIndex,double Threshold);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Threshold[in] Specifies threshold in %.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetDDC2NoiseBlankerThreshold method to retrieve the current threshold of the noise blanker.
Retrieves the DDC2 noise blanker threshold of the specified device.
C/C++ declaration
BOOL __stdcall GetDDC2NoiseBlankerThreshold(UINT32 DeviceIndex,double *Threshold);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Threshold[out] Pointer to a variable that receives the threshold of the noise blanker. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Determines a value which indicates the percentage ratio between 'short time average signal level' and 'maximum level'.
C/C++ declaration
BOOL __stdcall GetDDC2NoiseBlankerExcessValue(UINT32 DeviceIndex,double *Value);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Value[out] Pointer to a variable that receives current excess value in %. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Determines the current signal level for the specified device.
C/C++ declaration
BOOL __stdcall GetSignalLevel(UINT32 DeviceIndex,FLOAT *Peak,FLOAT *RMS);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Peak[out] Pointer to a variable that receives the current signal level (peak) in Volts. This parameter can be NULL if the application does not require this information.RMS[out] Pointer to a variable that receives the current signal level (RMS) in Volts. This parameter can be NULL if the application does not require this information.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
DDC2 streaming has to be active (started using the ICohG35DDCDeviceSet::StartDDC2 method) before calling of ICohG35DDCDeviceSet::GetSignalLevel, otherwise the returned peak and RMS signal levels are zero.
Signal level is evaluated from the signal after the demodulator filter and before the notch filter (see block diagram), the signal is selected by the demodulator filter.
Signal level is evaluated for each buffer processed by the demodulator filter. Buffer size (signal level evaluation rate) is given by the SamplesPerBuffer parameter of the ICohG35DDCDeviceSet::StartDDC2 method.
The ICohG35DDCDeviceSetCallback::CohG35DDC_DDC2PreprocessedStreamCallback callback provides signal level for each buffer passed to the callback, i.e. for each buffer used in signal level evaluation. This provides a way to get signal level from each processed buffer without the need for pulling it using ICohG35DDCDeviceSet::GetSignalLevel.
To convert RMS signal level in Volts to power in dBm use the following formulas:
P[W] = (VRMS)2 / R = (VRMS)2 / 50
P[dBm]= 10 * log10( P[W] * 1000 )
Where VRMS is RMS signal level in Volts obtained by ICohG35DDCDeviceSet::GetSignalLevel, R is G35DDC receiver input impedance (50 Ω), P[W] is power in Watts and P[dBm] is power in dBm and 1000 is conversion coefficient W -> mW.
The following example shows how to obtain the current signal level in dBm from device 0:
#include <stdio.h> #include <math.h> ICohG35DDCDeviceSet *DeviceSet; //Interface of G35DDC device set object, created using the CreateInstance function float P_dBm,V_RMS; DeviceSet->GetSignalLevel(0,NULL,&V_RMS); P_dBm=10.0*log10(V_RMS*V_RMS*(1000.0/50.0)); printf("Current signal level [RMS]: %.1f dBm\n",P_dBm);
Enables or disables the notch filter of the specified device.
C/C++ declaration
BOOL __stdcall SetNotchFilter(UINT32 DeviceIndex,UINT32 NotchFilterIndex,BOOL Enabled);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.NotchFilterIndex[in] Specifies the notch filter index. Possible values are: 0, 1.Enabled[in] Specifies whether to enable or disable the notch filter. If this parameter is non-zero, the filter is enabled. If the parameter is zero, the filter is disabled.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetNotchFilter method to determine whether the filter is enabled or disabled.
Retrieves the current notch filter state of the specified device.
C/C++ declaration
BOOL __stdcall GetNotchFilter(UINT32 DeviceIndex,UINT32 NotchFilterIndex,BOOL *Enabled);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.NotchFilterIndex[in] Specifies the notch filter index. Possible values are: 0, 1.Enabled[out] Pointer to a variable that receives the current state of the notch filter. The value is non-zero if the filter is enabled and zero if it is disabled. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Specifies the relative center frequency of the notch filter for the specified device.
C/C++ declaration
BOOL __stdcall SetNotchFilterFrequency(UINT32 DeviceIndex,UINT32 NotchFilterIndex,INT32 Frequency);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.NotchFilterIndex[in] Specifies the notch filter index. Possible values are: 0, 1.Frequency[in] Specifies the new center frequency of the notch filter in Hz.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The value of the Frequency parameter is the new center frequency of the notch filter relative to center of the DDC2 (see the ICohG35DDCDeviceSet::SetDDC2Frequency method). The value can be negative.
Use the ICohG35DDCDeviceSet::GetNotchFilterFrequency method to retrieve the current center frequency of the notch filter.
Retrieves the current relative center frequency of the notch filter.
C/C++ declaration
BOOL __stdcall GetNotchFilterFrequency(UINT32 DeviceIndex,UINT32 NotchFilterIndex,INT32 *Frequency);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.NotchFilterIndex[in] Specifies the notch filter index. Possible values are: 0, 1.Frequency[out] Pointer to a variable that receives the current center frequency of the notch filter. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Specifies the bandwidth of the notch filter of the specified device.
C/C++ declaration
BOOL __stdcall SetNotchFilterBandwidth(UINT32 DeviceIndex,UINT32 NotchFilterIndex,UINT32 Bandwidth);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.NotchFilterIndex[in] Specifies the notch filter index. Possible values are: 0, 1.Bandwidth[in] Specifies the new bandwidth of the notch filter in Hz. The bandwidth can be from range 1 - 3000 Hz.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetNotchFilterBandwidth method to retrieve the current bandwidth of the notch filter.
Retrieves the current bandwidth of the notch filter for the specified device.
C/C++ declaration
BOOL __stdcall GetNotchFilterBandwidth(UINT32 DeviceIndex,UINT32 NotchFilterIndex,UINT32 *Bandwidth);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.NotchFilterIndex[in] Specifies the notch filter index. Possible values are: 0, 1.Bandwidth[out] Pointer to a variable that receives the current bandwidth of the notch filter. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Specifies the notch filter length for the specified device. The notch filter is implemented as an FIR filter. This method specifies the number of coefficients used in the filtration procedure.
C/C++ declaration
BOOL __stdcall SetNotchFilterLength(UINT32 DeviceIndex,UINT32 NotchFilterIndex,UINT32 Length);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.NotchFilterIndex[in] Specifies the notch filter index. Possible values are: 0, 1.Length[in] Specifies the length of the notch filter. The value has to be multiple of 64, greater than or equal to 64 and less than or equal to 32768. If it is not multiple of 64, the method rounds it up to the nearest multiple of 64.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Increasing the filter length increases the filter steepness and may increase CPU usage.
Use the ICohG35DDCDeviceSet::GetNotchFilterLength method to determine the current length of the notch filter.
Retrieves the current notch filter length of the specified device.
C/C++ declaration
BOOL __stdcall GetNotchFilterLength(UINT32 DeviceIndex,UINT32 NotchFilterIndex,UINT32 *Length);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.NotchFilterIndex[in] Specifies the notch filter index. Possible values are: 0, 1.Length[out] Pointer to a variable that receives the current length of the notch filter. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Enables or disables the AGC for the specified device.
C/C++ declaration
BOOL __stdcall SetAGC(UINT32 DeviceIndex,BOOL Enabled);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Enabled[in] Specifies whether to enable or disable the AGC. If this parameter is non-zero, the AGC is enabled. If the parameter is zero, the AGC is disabled.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
If the AGC is disabled, the signal is affected by fixed gain specified using the ICohG35DDCDeviceSet::SetGain method.
Use the ICohG35DDCDeviceSet::GetAGC method to determine the current state of the AGC.
Retrieves the current state of the AGC for the specified device.
C/C++ declaration
BOOL __stdcall GetAGC(UINT32 DeviceIndex,BOOL *Enabled);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Enabled[out] Pointer to a variable that receives the current state of the AGC. The value is non-zero if the AGC is enabled and zero if it is disabled. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets parameters of the AGC of specified device.
C/C++ declaration
BOOL __stdcall SetAGCParams(UINT32 DeviceIndex,double AttackTime,double DecayTime,double ReferenceLevel);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.AttackTime[in] Specifies the new attack time of the AGC in seconds.DecayTime[in] Specifies the new decay time of the AGC in seconds.ReferenceLevel[in] Specifies the new reference level of the AGC in dB.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetAGCParams method to determine the current parameters of the AGC.
Retrieves the current parameters of the AGC for the specified device.
C/C++ declaration
BOOL __stdcall GetAGCParams(UINT32 DeviceIndex,double *AttackTime,double *DecayTime,double *ReferenceLevel);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.AttackTime[out] Pointer to a variable that receives the current attack time of the AGC in seconds. This parameter can be NULL if the application does not require this information.DecayTime[out] Pointer to a variable that receives the current decay time of the AGC in seconds. This parameter can be NULL if the application does not require this information.ReferenceLevel[out] Pointer to a variable that receives the current reference level of the AGC in dB. This parameter can be NULL if the application does not require this information.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets maximum gain of the AGC for the specified device.
C/C++ declaration
BOOL __stdcall SetMaxAGCGain(UINT32 DeviceIndex,double MaxGain);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.MaxGain[in] Specifies the new maximum gain of the AGC in dB.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetMaxAGCGain method to determine the maximum gain of the AGC.
Retrieves the current maximum gain of the AGC of the specified device.
C/C++ declaration
BOOL __stdcall GetMaxAGCGain(UINT32 DeviceIndex,double *MaxGain);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.MaxGain[out] Pointer to a variable that receives the current maximum gain of the AGC in dB. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets fixed gain for the specified device. This gain is applied to the I/Q signal if the AGC is disabled, otherwise it is not used.
C/C++ declaration
BOOL __stdcall SetGain(UINT32 DeviceIndex,double Gain);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Gain[in] Specifies the new fixed gain in dB.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetGain method to determine the current fixed gain.
Retrieves the current fixed gain of the specified device.
C/C++ declaration
BOOL __stdcall GetGain(UINT32 DeviceIndex,double *Gain);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Gain[out] Pointer to a variable that receives the current fixed gain in dB. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Retrieves the current gain that is applied to the I/Q signal of the specified device.
C/C++ declaration
BOOL __stdcall GetCurrentGain(UINT32 DeviceIndex,double *CurrentGain);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.CurrentGain[out] Pointer to a variable that receives the current gain in dB. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
If the AGC is enabled (using the ICohG35DDCDeviceSet::SetAGC method), the variable pointed to by the CurrentGain parameter is filled by the current gain of the AGC. If the AGC is disabled, the variable pointed to by the CurrentGain parameter is filled by fixed gain that is specified using the ICohG35DDCDeviceSet::SetGain method.
Sets bandwidth of the demodulator filter of the specified device.
C/C++ declaration
BOOL __stdcall SetDemodulatorFilterBandwidth(UINT32 DeviceIndex,UINT32 Bandwidth);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Bandwidth[in] Specifies the new bandwidth of the demodulator filter in Hz. Possible values are from the range of 1 Hz to the current DDC2 bandwidth. Use the ICohG35DDCDeviceSet::GetDDC2 method to retrieve information about the current DDC type of DDC2.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The demodulator filter bandwidth can be changed using the ICohG35DDCDeviceSet::SetDDC1 method. It can change DDC type of DDC2 and if the current demodulator filter bandwidth is greater than the new bandwidth of DDC2, the demodulator filter bandwidth is reduced. So it is useful to call the ICohG35DDCDeviceSet::GetDemodulatorFilterBandwidth method immediately after ICohG35DDCDeviceSet::SetDDC1.
Retrieves the current demodulator filter bandwidth of the specified device.
C/C++ declaration
BOOL __stdcall GetDemodulatorFilterBandwidth(UINT32 DeviceIndex,UINT32 *Bandwidth);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to one less than number of devices in the device set.Bandwidth[out] Pointer to a variable that receives the current demodulator filter bandwidth. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets the demodulator filter shift of the specified device.
C/C++ declaration
BOOL __stdcall SetDemodulatorFilterShift(UINT32 DeviceIndex,INT32 Shift);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Shift[in] Specifies the new shift of the demodulator filter in Hz.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Value of the Shift parameter is shift in Hz relative to center of the demodulator. This value can be negative.
This method does not change demodulator frequency just shift the filter from the demodulator's centre.
Use the ICohG35DDCDeviceSet::GetDemodulatorFilterShift method to determine the current demodulator filter shift.
Retrieves the current shift of the demodulator filter for the specified device.
C/C++ declaration
BOOL __stdcall GetDemodulatorFilterShift(UINT32 DeviceIndex,INT32 *Shift);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Shift[out] Pointer to a variable that receives the current shift of the demodulator. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Specifies the demodulator filter length of the specified device. The demodulator filter is implemented as an FIR filter. This method specifies the number of coefficients used in the filtration procedure.
C/C++ declaration
BOOL __stdcall SetDemodulatorFilterLength(UINT32 DeviceIndex,UINT32 Length);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Length[in] Specifies the length of the demodulator filter. The value has to be multiple of 64, greater than or equal to 64 and less than or equal to 32768. If it is not a multiple of 64, the method rounds it up to nearest multiple of 64.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Increasing the filter length increases the filter steepness and may increase CPU usage.
Use the ICohG35DDCDeviceSet::GetDemodulatorFilterLength method to determine the current length of the demodulator filter.
Retrieves the current length of the demodulator filter for the specified device.
C/C++ declaration
BOOL __stdcall GetDemodulatorFilterLength(UINT32 DeviceIndex,UINT32 *Length);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Length[out] Pointer to a variable that receives the current demodulator filter length. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets the demodulator mode of the specified device.
C/C++ declaration
BOOL __stdcall SetDemodulatorMode(UINT32 DeviceIndex,UINT32 Mode);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Mode[in] Specifies the new demodulator mode. This value can be one of the following:
Value Meaning G3XDDC_MODE_CW Continuous wave G3XDDC_MODE_AM Amplitude modulation G3XDDC_MODE_FM Frequency modulation G3XDDC_MODE_LSB Lower sideband modulation G3XDDC_MODE_USB Upper sideband modulation G3XDDC_MODE_AMS Amplitude modulation G3XDDC_MODE_DSB Double sideband modulation G3XDDC_MODE_ISB Independent sideband modulation G3XDDC_MODE_DRM Digital Radio Mondiale
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
DRM demodulation is only available if a valid DRM key is loaded using the ICohG35DDCDeviceSet::SetDRMKey method. More information about obtaining a DRM key can be viewed at https://www.winradio.com/home/drm.htm.
Use the ICohG35DDCDeviceSet::GetDemodulatorMode method to retrieve the current demodulator mode.
Retrieves the current demodulator mode of the specified device.
C/C++ declaration
BOOL __stdcall GetDemodulatorMode(UINT32 DeviceIndex,UINT32 *Mode);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Mode[out] Pointer to a variable that receives the current demodulator mode. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets the relative center frequency of the demodulator for the specified device.
C/C++ declaration
BOOL __stdcall SetDemodulatorFrequency(UINT32 DeviceIndex,INT32 Frequency);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Frequency[in] Specifies the new center frequency of the demodulator in Hz.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The value of the Frequency parameter is the center frequency of the demodulator relative to the center of the DDC2. The value can be negative.
The absolute frequency of the demodulator is given by the following formula:
faDEM = fDDC1 + frDDC2 + frDEM
Where faDEM is the absolute center frequency of the demodulator in Hz, fDDC1 is the center frequency of the DDC1 in Hz (set using the ICohG35DDCDeviceSet::SetDDC1Frequency method), frDDC2 is the relative center frequency of DDC2 of in Hz (set using the ICohG35DDCDeviceSet::SetDDC2Frequency) and frDEM is the relative center frequency of the demodulator in Hz (set using ICohG35DDCDeviceSet::SetDemodulatorFrequency).
The absolute center frequency of the demodulator is the real-world frequency that you are listening to.
Use the ICohG35DDCDeviceSet::GetDemodulatorFrequency method to determine the current relative center frequency of the demodulator for the given device.
The following example shows three methods of how to set the absolute demodulator center frequency of the device 0 to 11.01 MHz:
ICohG35DDCDeviceSet *DeviceSet; //Interface of G35DDC device set object, created using the CreateInstance function //1. method DeviceSet->SetDDC1Frequency(11010000); DeviceSet->SetDDC2Frequency(0,0); DeviceSet->SetDemodulatorFrequency(0,0); //2. method, usable if DDC2 bandwidth is less than DDC1 bandwidth DeviceSet->SetDDC1Frequency(11000000); DeviceSet->SetDDC2Frequency(0,10000); DeviceSet->SetDemodulatorFrequency(0,0); //3. method, usable if DDC2 bandwidth is less than DDC1 bandwidth, //and demodulator filter bandwidth is less than DDC2 bandwidth DeviceSet->SetDDC1Frequency(11020000); DeviceSet->SetDDC2Frequency(0,-5000); DeviceSet->SetDemodulatorFrequency(0,-5000);
Retrieves the current relative center frequency of the demodulator for the specified device.
C/C++ declaration
BOOL __stdcall GetDemodulatorFrequency(UINT32 DeviceIndex,INT32 *Frequency);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Frequency[out] Pointer to a variable that receives the current center frequency of the demodulator. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets a parameter of demodulation of the specified device.
C/C++ declaration
BOOL __stdcall SetDemodulatorParam(UINT32 DeviceIndex,UINT32 Code,CONST VOID *Buffer,UINT32 BufferSize);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Code[in] Specifies the code of the demodulator parameter to be set by this method. The code can be one of the following:
Value Meaning G3XDDC_DEMODULATOR_PARAM_AMS_SIDE_BAND Side band for synchronous AM demodulation.
The Buffer parameter has to be pointer to an UINT32 variable, and the BufferSize parameter has to be sizeof(UINT32).
Value of the variable pointed to by the Buffer parameter can be one of the following:
G3XDDC_SIDE_BAND_LOWER
AMS demodulator will use lower sidebandG3XDDC_SIDE_BAND_UPPER
AMS demodulator will use upper sidebandG3XDDC_SIDE_BAND_BOTH
AMS demodulator will use both side bands.G3XDDC_DEMODULATOR_PARAM_AMS_CAPTURE_RANGE Capture range of synchronous AM demodulator.
The Buffer parameter has to be pointer to a G3XDDC_AMS_CAPTURE_RANGE structure, and the BufferSize parameter has to be sizeof(G3XDDC_AMS_CAPTURE_RANGE).
G3XDDC_DEMODULATOR_PARAM_CW_FREQUENCY CW tone frequency
The Buffer parameter has to be pointer to a INT32 variable, and the BufferSize parameter has to be sizeof(INT32).
Value of the variable pointed to by the Buffer parameter is CW tone frequency in Hz.
G3XDDC_DEMODULATOR_PARAM_DSB_SIDE_BAND Side band for DSB demodulation.
The Buffer parameter has to be pointer to an UINT32 variable, and the BufferSize parameter has to be sizeof(UINT32).
Value of the variable pointed to by the Buffer parameter can be one of the following:
G3XDDC_SIDE_BAND_LOWER
DSB demodulator will use lower sidebandG3XDDC_SIDE_BAND_UPPER
DSB demodulator will use upper sidebandG3XDDC_SIDE_BAND_BOTH
DSB demodulator will use both side bands.G3XDDC_DEMODULATOR_PARAM_ISB_SIDE_BAND Side band for ISB demodulation.
The Buffer parameter has to be pointer to an UINT32 variable, and the BufferSize parameter has to be sizeof(UINT32).
Value of the variable pointed to by the Buffer parameter can be one of the following:
G3XDDC_SIDE_BAND_LOWER
ISB demodulator will use lower sidebandG3XDDC_SIDE_BAND_UPPER
ISB demodulator will use upper sidebandG3XDDC_SIDE_BAND_BOTH
ISB demodulator will use both side bands.G3XDDC_DEMODULATOR_PARAM_DRM_AUDIO_SERVICE Audio service of DRM demodulator/decoder to be listening to.
The Buffer parameter has to be pointer to an UINT32 variable, and the BufferSize parameter has to be sizeof(UINT32).
Value of the variable pointed to by the Buffer parameter is index of the audio service. Possible values are: 1, 2, 3, 4, where 1 is the first audio service, 2 is the second one, etc. Use the ICohG35DDCDeviceSet::GetDemodulatorState method with G3XDDC_DEMODULATOR_STATE_DRM_STATUS to retrieve information about available audio services for currently received DRM station.
G3XDDC_DEMODULATOR_PARAM_DRM_MULTIMEDIA_SERVICE Multimedia service of DRM demodulator/decoder to be decoded.
The Buffer parameter has to be pointer to an UINT32 variable, and the BufferSize parameter has to be sizeof(UINT32).
Value of the variable pointed to by the Buffer parameter is index of the multimedia service. Possible values are: 1, 2, 3, 4, where 1 is the first multimedia service, 2 is the second one, etc. Use the ICohG35DDCDeviceSet::GetDemodulatorState method with G3XDDC_DEMODULATOR_STATE_DRM_STATUS to retrieve information about available multimedia services for currently received DRM station.
It is required that DRM multimedia player has to be installed to display multimedia content. It is included in G35DDC software installer as optional.
Buffer[in] Pointer to a buffer containing the value of the demodulator parameter which this method will set. This parameter cannot be NULL.BufferSize[in] Specifies the size of the buffer.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Retrieves a parameter of demodulation of the specified device.
C/C++ declaration
BOOL __stdcall GetDemodulatorParam(UINT32 DeviceIndex,UINT32 Code,VOID *Buffer,UINT32 BufferSize);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Code[in] Specifies the code of the demodulator parameter to be retrieved. For detailed information about available codes see ICohG35DDCDeviceSet::SetDemodulatorParam.Buffer[out] Pointer to a buffer that receives the requested parameter. This parameter cannot be NULL.BufferSize[in] Specifies the size of the buffer.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Retrieves information about the current demodulator state of the specified device.
C/C++ declaration
BOOL __stdcall GetDemodulatorState(UINT32 DeviceIndex,UINT32 Code,VOID *Buffer,UINT32 BufferSize);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Code[in] Specifies the code of the demodulator state to be retrieved. The code can be one of the following:
Value Meaning G3XDDC_DEMODULATOR_STATE_AMS_LOCK Lock state of synchronous AM demodulation.
The Buffer parameter has to be pointer to a BOOL variable, and the BufferSize parameter has to be sizeof(BOOL).
Received value is non-zero if synchronous AM demodulator is locked to signal, and zero if it is not locked.
G3XDDC_DEMODULATOR_STATE_AMS_FREQUENCY Frequency in Hz which synchronous AM demodulator is locked to. It is relative to center of the demodulator. It can be negative.
The Buffer parameter has to be pointer to a double variable, and the BufferSize parameter has to be sizeof(double).
G3XDDC_DEMODULATOR_STATE_AM_DEPTH Depth of AM modulation in %.
The Buffer parameter has to be pointer to a double variable, and the BufferSize parameter has to be sizeof(double).
G3XDDC_DEMODULATOR_STATE_DSB_LOCK Lock state of DSB demodulation.
The Buffer parameter has to be pointer to a BOOL variable, and the BufferSize parameter has to be sizeof(BOOL).
Received value is non-zero if DSB demodulator is locked to signal, and zero if it is not locked.
G3XDDC_DEMODULATOR_STATE_DSB_FREQUENCY Frequency in Hz which DSB demodulator is locked to. It is relative to center of the demodulator. It can be negative.
The Buffer parameter has to be pointer to a double variable, and the BufferSize parameter has to be sizeof(double).
G3XDDC_DEMODULATOR_STATE_TUNE_ERROR Estimated tune error in Hz.
The Buffer parameter has to be pointer to an INT32 variable, and the BufferSize parameter has to be sizeof(INT32).
Received value is difference between demodulator frequency and frequency of received signal. Subtract the returned tune error from demodulator frequency to get frequency of the received signal. Tune error is relative to center of the demodulator and it can be negative.
G3XDDC_DEMODULATOR_STATE_DRM_STATUS Status of DRM demodulator/decoder.
The Buffer parameter has to be pointer to a G3XDDC_DRM_STATUS structure, and the BufferSize parameter has to be sizeof(G3XDDC_DRM_STATUS).
G3XDDC_DEMODULATOR_STATE_FM_DEVIATION Estimated frequency deviation in Hz.
The Buffer parameter has to be pointer to an UINT32 variable, and the BufferSize parameter has to be sizeof(UINT32).
Buffer[out] Pointer to a buffer that receives the requested information. This parameter cannot be NULL.BufferSize[in] Specifies the size of the buffer.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Starts audio streaming for the specified device.
C/C++ declaration
BOOL __stdcall StartAudio(UINT32 DeviceIndex,UINT32 SamplesPerBuffer);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.SamplesPerBuffer[in] Specifies the number of samples in each buffer passed to the ICohG35DDCDeviceSetCallback::CohG35DDC_AudioStreamCallback callback. The value has to be multiple of 64 greater than zero. If it is zero, the ICohG35DDCDeviceSet::StartAudio method fails. If it is not a multiple of 64, the method rounds it up to nearest multiple of 64.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Before ICohG35DDCDeviceSet::StartAudio is used, the G35DDC devices have to be turned on using the ICohG35DDCDeviceSet::SetPower method, DDC1 streaming has to be started using the ICohG35DDCDeviceSet::StartDDC1 method and DDC2 streaming has to be started using the ICohG35DDCDeviceSet::StartDDC2 method, otherwise ICohG35DDCDeviceSet::StartAudio fails.
If the audio streaming of the specified device is already running, ICohG35DDCDeviceSet::StartAudio restarts it except the streaming was previously started with the same SamplesPerBuffer parameter. In this case ICohG35DDCDeviceSet::StartAudio does nothing.
Use the ICohG35DDCDeviceSet::StopAudio method to stop audio streaming.
Decreasing the value of the SamplesPerBuffer parameter decreases latency and may increase CPU usage. Increasing value of the SamplesPerBuffer parameter increases latency and may decrease CPU usage.
Stops audio streaming for the specified device.
C/C++ declaration
BOOL __stdcall StopAudio(UINT32 DeviceIndex);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
If audio streaming is not active, ICohG35DDCDeviceSet::StopAudio does nothing.
The ICohG35DDCDeviceSetCallback::CohG35DDC_AudioStreamCallback callback are not called after ICohG35DDCDeviceSet::StopAudio returns.
Sets fixed audio gain of the specified device.
C/C++ declaration
BOOL __stdcall SetAudioGain(UINT32 DeviceIndex,double Gain);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Gain[in] Specifies a new fixed audio gain in dB.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetAudioGain method to retrieve the current audio gain.
Retrieves the current fixed audio gain of the specified device.
C/C++ declaration
BOOL __stdcall GetAudioGain(UINT32 DeviceIndex,double *Gain);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Gain[out] Pointer to a variable that receives the current fixed gain in dB. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Enables or disables the audio filter of the specified device.
C/C++ declaration
BOOL __stdcall SetAudioFilter(UINT32 DeviceIndex,BOOL Enabled);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Enabled[in] Specifies whether to enable or disable the audio filter. If this parameter is non-zero, the filter is enabled. If the parameter is zero, the filter is disabled.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetAudioFiler method to retrieve the current state of the audio filter.
Retrieves the current state of the audio filter for the specific device.
C/C++ declaration
BOOL __stdcall GetAudioFilter(UINT32 DeviceIndex,BOOL *Enabled);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Enabled[out] Pointer to a variable that receives the current state of the audio filter. The value is non-zero if the filter is enabled and zero if it is disabled. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets the parameters of the audio filter for the specified device.
C/C++ declaration
BOOL __stdcall SetAudioFilterParams(UINT32 DeviceIndex,UINT32 CutOffLow,UINT32 CutOffHigh,double Deemphasis);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.CutOffLow[in] Specifies the cut-off low frequency of the filter in Hz. This is the start frequency of filter's passband, it can be from the range of 0 to 23999 Hz. The value has to be less then the cut-off high frequency specified by the CutOffHigh parameter.CutOffHigh[in] Specifies the cut-off high frequency of the filter in Hz. This is the end frequency of filter's passband, it can be from the range of 1 - 24000 Hz. The value has to be greater than the cut-off low frequency specified by the CutOffLow parameter.Deemphasis[in] Specifies the de-emphasis of the filter in dB per octave. De-emphasis starts at the cut-off low frequency of the filter. This value can be from the range of -9.9 to 0.0 dB/octave. Zero means that de-emphasis is disabled.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Use the ICohG35DDCDeviceSet::GetAudioFilerParams method to retrieve the current parameters of the audio filter.
Retrieves the current parameters of the audio filter for the specified device.
C/C++ declaration
BOOL __stdcall GetAudioFilterParams(UINT32 DeviceIndex,UINT32 *CutOffLow,UINT32 *CutOffHigh,double *Deemphasis);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.CutOffLow[out] Pointer to a variable that receives the current cut-off low frequency of the filter. This parameter can be NULL if the application does not require this information.CutOffHigh[out] Pointer to a variable that receives the current cut-off high frequency of the filter. This parameter can be NULL if the application does not require this information.Deemphasis[out] Pointer to a variable that receives the current de-emphasis setting of the filter. This parameter can be NULL if the application does not require this information.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Specifies the audio filter length of the specified device. The audio filter is implemented as an FIR filter. This method specifies the number of coefficients used in the filtration procedure.
C/C++ declaration
BOOL __stdcall SetAudioFilterLength(UINT32 DeviceIndex,UINT32 Length);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Length[in] Specifies the length of the audio filter. The value has to be multiple of 64, greater than or equal to 64 and less than or equal to 32768. If it is not a multiple of 64, the method rounds it up to nearest multiple of 64.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Increasing the filter length increases the filter steepness and may increase CPU usage.
Use the ICohG35DDCDeviceSet::GetAudioFilterLength method to determine the current length of the audio filter.
Retrieves the current audio filter length of the specified device.
C/C++ declaration
BOOL __stdcall GetAudioFilterLength(UINT32 DeviceIndex,UINT32 *Length);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Length[out] Pointer to a variable that receives the current length of the audio filter. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Sets the audio volume of the specified device.
C/C++ declaration
BOOL __stdcall SetVolume(UINT32 DeviceIndex,BYTE Volume);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Volume[in] Specifies the new volume. The value can vary from 0 to 31, where 31 means maximum volume.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The G35DDC receiver has an audio output connector, the ICohG35DDCDeviceSet::SetVolume method affects the audio signal level at this output (see also ICohG35DDCDeviceSet::SetDAC).
Use the ICohG35DDCDeviceSet::GetVolume method to retrieve the current volume.
Retrieve the current volume of the specified device.
C/C++ declaration
BOOL __stdcall GetVolume(UINT32 DeviceIndex,BYTE *Volume);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Volume[out] Pointer to a variable that receives the current volume. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Mutes or unmutes audio of the specified device.
C/C++ declaration
BOOL __stdcall SetMute(UINT32 DeviceIndex,BOOL Mute);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Mute[in] Specifies whether to mute or unmute audio. If this parameter is non-zero, the audio is muted. If the parameter is zero, the audio is unmuted.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The G35DDC receiver has an audio output connector, the ICohG35DDCDeviceSet::SetMute method affects the audio signal at this output (see also ICohG35DDCDeviceSet::SetDAC).
Use the ICohG35DDCDeviceSet::GetMute method to retrieve the current mute state.
Retrieves the current mute state of the specified device.
C/C++ declaration
BOOL __stdcall GetMute(UINT32 DeviceIndex,BOOL *Mute);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Mute[out] Pointer to a variable that receives the current mute state. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Allows routing of audio output to a DAC (Digital-to-analog converter). The DAC output is connected to the audio output connector of the receiver.
C/C++ declaration
BOOL __stdcall SetDAC(UINT32 DeviceIndex,UINT32 DAC);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.DAC[in] Specifies the routed audio to the DAC.
Bit Meaning 0 If it is set, audio output is routed to left channel of the audio output connector. 1 If it is set, audio output is routed to right channel of the audio output connector. 2 - 31 Reserved. Must be zero.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Determines if audio output is routed to the audio output connector (DAC).
C/C++ declaration
BOOL __stdcall GetDAC(UINT32 DeviceIndex,UINT32 *DAC);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.DAC[out] Pointer to a variable that receives a bitwise array which specifies how the audio is routed to the audio output connector (DAC). For more information, see ICohG35DDCDeviceSet::SetDAC. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Determines compensation data for the frequency spectrum computed from DDC1, DDC2 and IF signal. It is used to convert relative amplitudes in dB to absolutes ones in dBm.
C/C++ declaration
BOOL __stdcall GetSpectrumCompensation(UINT32 DeviceIndex,UINT32 CenterFrequency,UINT32 Width,FLOAT *Buffer,UINT32 Count);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.CenterFrequency[in] Specifies the absolute center frequency of the requested compensation data in Hz.Width[in] Specifies the width of the requested compensation data in Hz.Buffer[out] Pointer to a buffer to be filled with compensation data. This parameter cannot be NULL.Count[in] Specifies number the of FLOAT items in the buffer pointed to by the Buffer parameter.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The following example shows how to use the ICohG35DDCDeviceSet::GetSpectrumCompensation method in ICohG35DDCDeviceSetCallback::CohG35DDC_DDC2StreamCallback callback:
//Let the following is prototype of a function which computes FFT from I/Q signal stored in //the buffer pointed to be the Input parameter. Result is stored in complex form in the buffer //pointed to by the Output parameter. Size of the FFT is given be the Size parameter. //The example uses 2048 bins FFT. void FFT(float *Output,const float *Input,int Size); ICohG35DDCDeviceSet *DeviceSet; //Interface to G35DDC device set object UINT32 AbsDDC2Frequency; //Absolute frequency of the DDC2 INT32 RelDDC2Frequency; //Relative frequency of the DDC2 UINT32 DDC1Frequency; //DDC1 frequency G3XDDC_DDC_INFO DDC2Info; //Information about current DDC type of the DDC2 FLOAT FFTBuffer[2*2048]; //Buffer for FFT result FLOAT Compensation[2048]; //Buffer for compensation data UINT32 FirstBin,LastBin; //the first and last bins in the FFT of useful DDC2 band MY_CALLBACK_OBJECT MyCallbackObject; //User defined callback object implementing methods of ICohG35DDCDeviceSetCallback interface UINT32 DeviceIndex; //index of device in the device set Code before... //Retrieve frequency of the DDC1 DeviceSet->GetDDC1Frequency(DeviceIndex,&DDC1Frequency); //Retrieve relative frequency of the DDC2 for channel 0 DeviceSet->GetDDC2Frequency(DeviceIndex,&RelDDC2Frequency); //Calculate absolute frequency of the DDC2 AbsDDC2Frequency=(INT32)DDC1Frequency+RelDDC2Frequency; //Retrieve DDC type information of the DDC2 DeviceSet->GetDDC2(DeviceIndex,NULL,&DDC2Info); //Retrieve compensation data DeviceSet->GetSpectrumCompensation(DeviceIndex,AbsDDC2Frequency,DDC2Info.SampleRate,Compensation,2048); //In this case the Width parameter is equal to sample rate, because we need compensation data //for whole DDC2 band. //Compensation data have to be updated after change of absolute DDC2 frequency using //the ICohG35DDCDeviceSetCallback::SetDDC1Frequency or ICohG35DDCDeviceSetCallback::SetDDC2Frequency method. //In this case a mutual-exclusion synchronization method (for example critical section) should be used //if the Compensation buffer would be modified outside the CohG35DDC_DDC2StreamCallback callback. FirstBin=2048*(DDC2Info.SampleRate-DDC2Info.Bandwidth)/2/DDC2Info.SampleRate; LastBin=2048*(DDC2Info.SampleRate+DDC2Info.Bandwidth)/2/DDC2Info.SampleRate; //Register callback object DeviceSet->SetCallback(&MyCallbackObject); //Start DDC2 streaming for channel 0 //The SamplesPerBuffer parameter is set to 2048 which is size of the FFT to simplify //the example. DeviceSet->StartDDC2(DeviceIndex,2048); Code after... void __stdcall MY_CALLBACK_OBJECT::CohG35DDC_DDC2StreamCallback(ICohG35DDCDeviceSet *DeviceSet,UINT32 DeviceIndex,CONST FLOAT *Buffer,UINT32 NumberOfSamples) { UINT32 i; //Compute FFT FFT(FFTBuffer,Buffer,2048); //Converts complex FFT result to dB for(i=0;i<2048;i++) { FFTBuffer[i]=(FLOAT)(10.0*log10(FFTBuffer[i*2]*FFTBuffer[i*2]+FFTBuffer[i*2+1]*FFTBuffer[i*2+1])); } //Apply compensation data to get amplitudes in frequency spectrum in dBm for(i=0;i<2048;i++) { FFTBuffer[i]+=Compensation[i]; } //now the FFTBuffer contains amplitudes in dBm //Useful band starts at the bin given by the FirstBin variable //and ends at the bin given by the LastBin variable. }
Registers a user-defined callback object given by its interface. The API calls methods of the object to pass samples to the application. The object has to implement methods of the ICohG35DDCDeviceSetCallback interface.
C/C++ declaration
BOOL __stdcall SetCallback(ICohG35DDCDeviceSetCallback *Callback);
Parameters
Callback[in] Interface to a user-defined object to be registered as a callback object. If this parameter is NULL, the current callback object is unregistered, the API will not call any callback after ICohG35DDCDeviceSet::SetCallback returns.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Returns a pointer to the current user-defined callback object.
C/C++ declaration
ICohG35DDCDeviceSetCallback* __stdcall GetCallback(void);
Parameters
None
Return value
This method returns a pointer to the current user-defined callback object, previously set by the ICohG35DDCDeviceSet::SetCallback method.
Sets a directory with a DRM key file to unlock the DRM demodulator/decoder.
C/C++ declaration
BOOL __stdcall SetDRMKey(CONST CHAR *DRMKeyFileDirectory);
Parameters
DRMKeyFileDirectory[in] Pointer to a null-terminated string that specifies the directory which contains a valid DRM key file.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
If the specified directory contains a valid DRM key file, the key is loaded and the DRM demodulator/decoder is unlocked and available for use, otherwise the method fails.
If the DRM demodulator/decoder is already unlocked, this method does nothing.
Use the ICohG35DDCDeviceSet::IsDRMUnlocked method to determine whether the DRM demodulator/decoder is unlocked or not.
More information about obtaining a DRM key can be viewed at https://www.winradio.com/home/drm.htm.
Determines whether the DRM demodulator/decoder is unlocked or not.
C/C++ declaration
BOOL __stdcall IsDRMUnlocked(void);
Parameters
None
Return value
If this method succeeds and the DRM demodulator/decoder is unlocked, the return value is non-zero.
If the method fails or the DRM demodulator/decoder is locked, the return value is zero. To get extended error information, call GetLastError.
Retrieves the current internal temperature of the G35DDC device in the device set.
C/C++ declaration
BOOL __stdcall GetTemperature(UINT32 DeviceIndex,UINT32 *Temperature);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Temperature[out] Pointer to a variable that receives the current internal temperature in degrees of Celsius. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The G35DDC devices have to be turned on using the ICohG35DDCDeviceSet::SetPower method before ICohG35DDCDeviceSet::GetTemperature is used. Otherwise ICohG35DDCDeviceSet::GetTemperature fails.
Retrieves the current error state of the G35DDC device.
C/C++ declaration
BOOL __stdcall GetDeviceState(UINT32 DeviceIndex,UINT32 *State);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.State[out] Pointer to a variable that receives the current error state of the device. This parameter cannot be NULL. The value can be zero or G3XDDC_DEVICE_STATE_ERROR_HIGH_TEMP if critical temperature is detected and the device is turned off. In this case the application should call ICohG35DDCDeviceSet::SetPower to turn off explicitly.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Retrieves the state of DDC1 and ADC counters.
C/C++ declaration
BOOL __stdcall GetTimestampCounters(double *DDC1SampleCounter,UINT64 *ADCPeriodCounter);
Parameters
DDC1SampleCounter[out] Pointer to a variable that receives the current value of DDC1 sample counter. The value specifies how many I/Q sample sets were produced by the DDC1 since its start, to the latest pulse received at the 1PPS input of the coherent clock generator board.ADCPeriodCounter[out] Pointer to a variable that receives the current value of ADC counter. The value represents the number of periods of ADC clock since DDC1 start, to the latest pulse received at the 1PPS input of the coherent clock generator board.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The counters are active only when the DDC1 is running (see the ICohG35DDCDeviceSet::StartDDC1 method). If the DDC1 is not running, the GetTimestampCounters method fails.
The DDC1 sample counter can be used to 'time stamp' the DDC1 I/Q sample sets received in the ICohG35DDCDeviceSetCallback::CohG35DDC_DDC1StreamCallback callback. The value of the DDC1 sample counter is equal to the number of I/Q sample sets received in the ICohG35DDCDeviceSetCallback::CohG35DDC_DDC1StreamCallback callback, since start of the DDC1 to the latest pulse at the 1PPS input of the coherent clock generator board.
The counters are common for all the devices in the device set.
Enables or disables the test signal at the receiver's input, which allows testing of the entire signal and processing path.
C/C++ declaration
BOOL __stdcall SetBuiltInTest(UINT32 DeviceIndex,BOOL Enabled);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Enabled[in] Specifies whether to enable or disable the built-in test. If this parameter is non-zero, the test signal is enabled. If the parameter is zero, the test signal is disabled.Test signal parameters:
Frequency Level 25 MHz ± 2 kHz -40 dBm ± 5 dB
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
Built-in test is optional. If the receiver does not support built-in test, SetBuiltInTest fails. The following example shows how to determine that receiver supports built-in test:
G35DDC_DEVICE_INFO DeviceInfo; IG35DDCDeviceSet *DeviceSet; //Interface of G35DDC device set object, created using the CreateInstance function UINT32 DeviceIndex; //index of the receiver in the device set DeviceSet->GetDeviceInfo(DeviceIndex,&DeviceInfo); if(DeviceInfo.Flags & G35DDC_FLAGS_BIT) { //the receiver supports built-in test } else { //the receiver does not support built-in test }
Retrieves information about whether the test signal is enabled or not.
C/C++ declaration
BOOL __stdcall GetBuiltInTest(BOOL *Enabled);
Parameters
DeviceIndex[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.Enabled[out] Pointer to a variable which receives information about the test signal state. If it is non-zero, test signal is enabled, if it is zero, test signal is not enabled. This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
This method is used to specify the type of configuration used for installation of the given coherent set.
C/C++ declaration
BOOL __stdcall SetConfiguration(UINT32 Configuration);
Parameters
Configuration[in] Specifies the type of configuration. The value can be one of the following:
Value Meaning G35DDC_COH_CONFIGURATION_NORMAL Standard installation of G35DDC receivers for multichannel coherent operation. The receivers are installed inside the same computer, all connections between receivers and other supportive hardware are realized internally, within the same computer.
The API controls all the receivers at once during setting of the DDC1 frequency using the ICohG35DDCDeviceSet::SetDDC1Frequency method and starting of the DDC1 streaming using the ICohG35DDCDeviceSet::StartDDC1 method.
The API provides DDC1 samples with the same index (a position since the DDC1 start, see ICohG35DDCDeviceSet::StartDDC1) from all of the receivers together at once. The application does not need to put them together according to their index.
G35DDC_COH_CONFIGURATION_EXTENDED
Non-standard, Extended Topology Configuration (ETC) for multichannel coherent operation of the G35DDC receivers, which allows the receivers to be installed in multiple computers. Typically, each G35DDC receiver is installed in a separate dedicated computer. Installation of multiple receivers inside the same computer is allowed in the ETC configuration, however the receivers installed inside the same computer act the same way as they would if installed in separate dedicated computers. In other words, each receiver has to run its own instance of software. Necessary connections between receivers and other supportive hardware are realized externally, outside of the computers.
The device set has to consists of a single receiver. This means that each receiver in the single ETC multichannel system has to be open in its own device set object and therefore a single device set corresponds to a single receiver in the ETC multichannel system. The G35DDC_COH_CONFIGURATION_EXTENDED has to be specified in each such device set object.
The application layer is responsible for the synchronized DDC1 streaming start and frequency setting. This is divided into two steps. The first step is preparation of the receiver for the synchronized DDC1 streaming start or frequency setting, using the ICohG35DDCDeviceSet::StartDDC1 or ICohG35DDCDeviceSet::SetDDC1Frequency method for all the receivers connected together in the same ETC multichannel system. The second step is the synchronized completion of the operation generating the synchronization signal on the synchronization master receiver using the ICohG35DDCDeviceSet::Trigger method. The master receiver is the first receiver is the synchronization chain. The same DDC1 frequency and DDC1 type have to be set in all of the receivers in the same ETC multichannel system before calling the ICohG35DDCDeviceSet::Trigger method.
If each receiver in the same ETC multichannel system is installed into a separate computer, the application can use TCP/IP or another form of communication between computers to achieve the proper setting and synchronization of the receivers when changing DDC1 frequency or starting DDC1 streaming.
The application layer is responsible for putting DDC1 samples from separate receivers together according to their index (a position since the DDC1 start, see ICohG35DDCDeviceSet::StartDDC1).
The application layer is responsible for setting of all the receiver parameters, which should be the same on all of the receivers in the same multichannel coherent system, such as the preamplifier, attenuator, pre-selectors and ADC noise blanker.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The G35DDC devices have to be turned off using the ICohG35DDCDeviceSet::SetPower method before ICohG35DDCDeviceSet::SetConfiguration is used. Otherwise ICohG35DDCDeviceSet::SetConfiguration fails.
Use the ICohG35DDCDeviceSet::GetConfiguration method to determine the current setting of the configuration.
Retrieves the current setting of the configuration.
C/C++ declaration
BOOL __stdcall GetConfiguration(UINT32 *Configuration);
Parameters
Configuration[out] Pointer to a variable that receives the current configuration setting (see ICohG35DDCDeviceSet::SetConfiguration for detailed information). This parameter cannot be NULL.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Used to specify parameters of the multichannel coherent system in Extended Topology Configuration (ETC), see ICohG35DDCDeviceSet::SetConfiguration. In ETC, the G35DDC device set always consists of a single receiver, therefore information about the complete multichannel coherent system has to be additionally specified using this function.
C/C++ declaration
BOOL __stdcall SetExtendedConfigurationParams(UINT32 Index,UINT32 DeviceCount,INT32 Delay);
Parameters
Index[in] Specifies the index of the receiver (which is open in the given device set) in the synchronization chain of the multichannel coherent system. The index of the first receiver is 0 and this receiver is called synchronization master. Other receivers are called synchronization slaves and their index varies from 1 to one less than DeviceCount. This parameter is not equal to the index of the receiver in the given device set. The index of the receiver in the given device set is always equal to 0 because in ETC, the device set always consists of a single receiver.DeviceCount[in] Specifies the total number of receivers connected to the multichannel coherent system in ETC. The value of this parameter has to be greater than zero.Delay[in] Specifies the synchronization cable delay in sampling clock periods. This information can be found printed on the label of synchronization coaxial cables (SYNC CABLE) used in the multichannel coherent system. The same value has to be specified for all of the receivers in the multichannel coherent system. The value of this parameter has to be greater than zero.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The G35DDC devices have to be turned off using the ICohG35DDCDeviceSet::SetPower method before ICohG35DDCDeviceSet::SetExtendedConfigurationParams is used. Otherwise ICohG35DDCDeviceSet::SetExtendedConfigurationParams fails.
Use the ICohG35DDCDeviceSet::GetExtendedConfigurationParams method to determine the current parameters of the multichannel coherent system in the ETC.
Retrieves the current parameters of the multichannel coherent system in Extended Topology Configuration (ETC), see ICohG35DDCDeviceSet::SetConfiguration.
C/C++ declaration
BOOL __stdcall GetExtendedConfigurationParams(UINT32 *Index,UINT32 *DeviceCount,INT32 *Delay);
Parameters
Index[out] Pointer to a variable that receives the index of the receiver (which is open in the given device set) in the multichannel coherent system. This parameter can be NULL if the application does not require this information.DeviceCount[out] Pointer to a variable that receives total number of the receivers in the multichannel coherent system. This parameter can be NULL if the application does not require this information.Delay[out] Pointer to a variable that receives the synchronization cable delay in sampling clock periods. This parameter can be NULL if the application does not require this information.
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Generates the synchronization signal to synchronize the completion of DDC1 start or DDC1 frequency settings in all of the receivers in a multichannel coherent system in Extended Topology Configuration (ETC), see ICohG35DDCDeviceSet::SetConfiguration.
C/C++ declaration
BOOL __stdcall Trigger(void);
Parameters
None
Return value
If the method succeeds, the return value is non-zero.
If the method fails, the return value is zero. To get extended error information, call GetLastError.
Remarks
The multichannel coherent system has to be in ETC (see ICohG35DDCDeviceSet::SetConfiguration), otherwise ICohG35DDCDeviceSet::Trigger fails.
The ICohG35DDCDeviceSet::Trigger can only be called on the receiver which is the synchronization master. This is the first receiver connected in the synchronization chain and its index specified by the ICohG35DDCDeviceSet::SetExtendedConfigurationParams method is equal to zero. Otherwise ICohG35DDCDeviceSet::Trigger fails.
The G35DDC devices have to be turned on using the ICohG35DDCDeviceSet::SetPower method before ICohG35DDCDeviceSet::Trigger is used. Otherwise ICohG35DDCDeviceSet::Trigger fails.
The ICohG35DDCDeviceSet::Trigger has to be used always after the ICohG35DDCDeviceSet::SetDDC1Frequency or ICohG35DDCDeviceSet::StartDDC1 method is called with the same parameters for all of the receivers in the same multichannel coherent system to complete the operation.
All the receivers in the same ETC multichannel coherent system have to use the same DDC1 type (see ICohG35DDCDeviceSet::SetDDC1).
ICohG35DDCDeviceSetCallback interface is an interface of application-defined object that implements methods of the interface. The object is used to receive streamed buffers from the G35DDC device set object. See ICohG35DDCDeviceSet::SetCallback.
Each method of the interface is called in context of thread created by the API. If some shared data are accessed inside callback methods, it is recommended to use a mutual-exclusion synchronization method. The application should not call any G35DDC API function/method from the inside method of this interface, otherwise it can cause deadlock or the application can enter an unpredictable state.
It is called by the API to pass coherent I/Q samples from DDC1 of all the devices in the device set to the application at once. The DDC1 streaming is started using the ICohG35DDCDeviceSet::StartDDC1 method.
C/C++ declaration
VOID __stdcall CohG35DDC_DDC1StreamCallback(ICohG35DDCDeviceSet *DeviceSet,UINT32 DeviceCount,CONST VOID **Buffers,UINT32 NumberOfSamples,UINT32 BitsPerSample);
Parameters
DeviceSetInterface of the device set object which called the callback.DeviceCountSpecifies the number of I/Q sample buffers in the array pointed to by the Buffers. It is equal to number of devices in the device set (see the CohGetDeviceCount function).BuffersPointer to the array of pointers to the buffers which contain I/Q sample sets from DDC1. Sample rate and bits per sample is given by the used DDC type, see the ICohG35DDCDeviceSet::SetDDC1 method. One I/Q sample set consists of two samples. The order of the buffers in the array corresponds to the hardware interconnection of the G35DDC devices.NumberOfSamplesSpecifies the number of I/Q sample sets in each buffer in the Buffers array. This value is equal to value of the SamplesPerBuffer parameter of the ICohG35DDCDeviceSet::StartDDC1 method.BitsPerSampleSpecifies the number of bits per sample. It is given by DDC type used for DDC1 and it can be 16 or 32. If it is 16, the sample is 16bit integer (32bits per I/Q sample set), signed, little endian, from the range -32768 to 32767. If it is 32, the sample is 32bit integer (64bits per I/Q sample set), signed, little endian, from the range -2147483648 to 2147483647.
It is called by the API to pass IF snapshots to the application from a specific device of the device set. Sending of IF snapshots is started using the ICohG35DDCDeviceSet::StartIF method.
C/C++ declaration
VOID __stdcall CohG35DDC_IFCallback(ICohG35DDCDeviceSet *DeviceSet,UINT32 DeviceIndex,CONST SHORT *Buffer,UINT32 NumberOfSamples, WORD MaxADCAmplitude,UINT32 ADCSamplingRate);
Parameters
DeviceSetInterface of the device object which called the method.DeviceIndexSpecifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.BufferPointer to the buffer which contains samples directly received from the ADC. Sample rate is 100 MHz, the sample is 16bit signed little endian.NumberOfSamplesSpecifies the number of samples in the buffer pointed to by the Buffer parameter. This is usually 65536.MaxADCAmplitudeSpecifies the maximum amplitude. Measurement of the maximum is started at the end of the previous snapshot to the current one. The possible value is 0 to 32767.ADCSamplingRateSpecifies the sample rate of the ADC in Hz.
It is called by the API to pass I/Q samples from DDC2 to the application. The DDC2 streaming can be started using the ICohG35DDCDeviceSet::StartDDC2 method.
C/C++ declaration
VOID __stdcall CohG35DDC_DDC2StreamCallback(ICohG35DDCDeviceSet *DeviceSet,UINT32 DeviceIndex,CONST FLOAT *Buffer,UINT32 NumberOfSamples);
Parameters
DeviceSetInterface of the device set object which called the method.DeviceIndexSpecifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.BufferPointer to the buffer which contains I/Q sample sets from DDC2. Sample rate is given by the DDC type of the DDC2. Use the CohGetDDC2 function to determine the current DDC type of the DDC2. Sample is 32bit IEEE float from range -1.0 to 1.0. One I/Q sample set consists of two samples.NumberOfSamplesSpecifies the number of I/Q sample sets in the buffer pointed to by the Buffer parameter. This value is equal to value of the SamplesPerBuffer parameter of the ICohG35DDCDeviceSet::StartDDC2 method.
It is called by the API to pass pre-processed I/Q samples from DDC2 to the application. The samples are filtered by the demodulator filter, notch filter and affected by AGC or fixed gain. The DDC2 streaming can be started using the ICohG35DDCDeviceSet::StartDDC2 method.
C/C++ declaration
VOID __stdcall CohG35DDC_DDC2PreprocessedStreamCallback(ICohG35DDCDeviceSet *Device,UINT32 DeviceIndex,CONST FLOAT *Buffer, UINT32 NumberOfSamples,FLOAT SlevelPeak,FLOAT SlevelRMS);
Parameters
DeviceSetInterface of the device set object which called the method.DeviceIndexSpecifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.BufferPointer to the buffer which contains preprocessed I/Q sample sets from DDC2. Sample rate is given by the DDC type of the DDC2. Use the ICohG35DDCDeviceSet::GetDDC2 method to determine the current DDC type of the DDC2. Sample is 32bit IEEE float from range -1.0 to 1.0. One I/Q sample set consists of two samples.NumberOfSamplesSpecifies the number of I/Q sample sets in the buffer pointed to by the Buffer parameter. This value is equal to value of the SamplesPerBuffer parameter of the ICohG35DDCDeviceSet::StartDDC2 method.SlevelPeakSpecifies the peak signal level in Volts, evaluated from samples stored in the buffer pointed to by the Buffer parameter.SlevelRMSSpecifies the RMS signal level in Volts, evaluated from samples stored in the buffer pointed to by the Buffer parameter. For detailed information on how to convert RMS signal level to dBm, see the remarks of the ICohG35DDCDeviceSet::GetSignalLevel method.
It is called by the API to pass audio samples to the application. The audio streaming is started using the ICohG35DDCDeviceSet::StartAudio method.
C/C++ declaration
VOID __stdcall CohG35DDC_AudioStreamCallback(ICohG35DDCDeviceSet *Device,UINT32 DeviceIndex,UINT32 Type,CONST FLOAT *Buffer,UINT32 NumberOfSamples);
Parameters
DeviceSetInterface of the device set object which called the method.DeviceIndexSpecifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.TypeSpecifies the type (stage) of audio samples stored in the buffer pointed to by the Buffer parameter. The value of this parameter can be one of the following:
Value Meaning 0 The buffer contains audio samples affected by audio gain (see ICohG35DDCDeviceSet::SetAudioGain). 1 The buffer contains audio samples affected by audio gain and audio filter (see ICohG35DDCDeviceSet::SetAudioGain and ICohG35DDCDeviceSet::SetAudioFilter). 2 The buffer contains audio samples affected by audio gain, audio filter and volume (see ICohG35DDCDeviceSet::SetAudioGain, ICohG35DDCDeviceSet::SetAudioFilter, ICohG35DDCDeviceSet::SetVolume and ICohG35DDCDeviceSet::SetMute). BufferPointer to the buffer which contains samples of the audio signal. The signal is mono, sample rate is 48000 Hz, sample is 32bit IEEE float from range -1.0 to 1.0.NumberOfSamplesSpecifies the number of samples stored in the buffer pointed to by the Buffer parameter. This value is equal to the value of the SamplesPerBuffer parameter of the ICohG35DDCDeviceSet::StartAudio function.
Contains information about G35DDC device.
C/C++ declaration
#pragma pack(push,1) typedef struct { CHAR DevicePath[MAX_PATH]; BYTE InterfaceType; CHAR SerialNumber[9]; WORD HWVersion; WORD FWVersion; BYTE EEPROMVersion; UINT32 Flags; UINT32 ChannelCount; UINT32 DDCTypeCount; } G35DDC_DEVICE_INFO; #pragma pack(pop)
Members
DevicePathDevice system path in a null-terminated string. It is used to open the device using object interface.InterfaceTypeDevice interface type. The value can be one of the following:
G3XDDC_INTERFACE_TYPE_PCIE
The device is connected to the computer via PCI express.G3XDDC_INTERFACE_TYPE_USB
The device is connected to the computer via USB.SerialNumberSerial number in null-terminated string.HWVersionVersion of the hardware.FWVersionVersion of the firmware.EEPROMVersionEEPROM structure version.FlagsHardware configuration flags can be a combination of the following values:
Value Meaning G35DDC_FLAGS_EXTERNAL_REFERENCE The device supports external reference. G35DDC_FLAGS_AUDIO_OUTPUT The device has an audio output connector. G35DDC_FLAGS_COHERENT The device supports coherent mode. G35DDC_FLAGS_BIT The device supports built-in test. ChannelCountNumber of channels. This is always 3. In coherent mode each device has single processing channel.DDCTypeCountNumber of DDC types supported by the DDC1.
Contains information about the DDC type.
C/C++ declaration
#pragma pack(push,1) typedef struct { UINT32 SampleRate; UINT32 Bandwidth; UINT32 BitsPerSample; } G3XDDC_DDC_INFO; #pragma pack(pop)
Members
SampleRateSample rate of I/Q signal in Hz.BandwidthUseful bandwidth in Hz.BitsPerSampleNumber of bits per sample. This can be 16 or 32. It is used to determine the bits per sample for DDC1.
Contains information about the AMS capture range.
C/C++ declaration
#pragma pack(push,1) typedef struct { UINT32 Tune; UINT32 Lock; } G3XDDC_AMS_CAPTURE_RANGE; #pragma pack(pop)
Members
TuneInitial capture range in Hz.LockCapture range (in Hz) used when the AMS demodulator is locked.
Contains information about the DRM demodulator/decoder status.
C/C++ declaration
#pragma pack(push,1) typedef struct { BOOL Valid; struct { BOOL SyncFound; BOOL FACDecoded; BOOL SDCDecoded; BOOL AudioDecoded; SHORT NumberOfAudioFrames; SHORT NumberOfAudioErrors; } DecodingState; INT32 Mode; double RFBandwidth; BYTE Interleaver; SHORT SDCQam; SHORT MSCQam; BYTE MSCQamType; double CoderateH; double CoderateA; double CoderateB; double EstimatedSNR; WCHAR TextMessage[128 + 1 + 16]; struct { BYTE Content; WCHAR DynamicLabel[256]; WCHAR Country[256]; WCHAR Language[256]; WCHAR ProgramType[256]; double AudioBitrate; double TextMsgBitrate; double MultimediaBitrate; double DataBitrate; } ServiceInfo[4]; struct { BOOL Valid; BYTE AudioCoding; BOOL SBR; INT32 AudioMode; } AudioDecoderInfo[4]; } G3XDDC_DRM_STATUS; #pragma pack(pop)
Members
ValidThe value is non-zero if content of the structure is valid. It is zero if the content of the structure is not valid.DecodingStateStructure that contains status of the decoder modules.
Members
SyncFoundStatus of the sync detection. It is non-zero if sync detected.FACDecodedStatus of the FAC decoder. It is non-zero if FAC decoded.SDCDecodedStatus of the SDC decoder. It is non-zero if SDC decoded.AudioDecodedStatus of the audio decoder. It is non-zero if audio decoded.NumberOfAudioFramesNumber of audio frames in the transmission frame. It is -1 if this information is not available.NumberOfAudioErrorsNumber of audio frames that were invalid.ModeThe used DRM robustness mode can be one of the following:
Value Meaning G3XDDC_DRM_STATE_MODE_NOT_DETERMINED_YET Robustness mode is not determined yet. G3XDDC_DRM_STATE_MODE_A Broadcast is using DRM robustness mode A. G3XDDC_DRM_STATE_MODE_B DRM robustness mode B. G3XDDC_DRM_STATE_MODE_C DRM robustness mode C. G3XDDC_DRM_STATE_MODE_D DRM robustness mode D. RFBandwidthOccupied RF bandwidth in kHz. It is zero if it is invalid or this information is not available (yet).InterleaverThe interleaver length can be one of the following:
Value Meaning G3XDDC_DRM_STATE_INTERLEAVER_LONG Long interleaver used (2 sec). G3XDDC_DRM_STATE_INTERLEAVER_SHORT Short interleaver used (400 msec). SDCQamCoding of the SDC (QAM). It is zero if this information is not available (yet).MSCQamCoding of the MSC (QAM). It is zero if this information is not available (yet).MSCQamTypeThe used QAM coding for the MSC can be one of the following:
Value Meaning G3XDDC_DRM_STATE_QAM_TYPE_STD Standard G3XDDC_DRM_STATE_QAM_TYPE_HIER_SYM Hierarchical symmetrical G3XDDC_DRM_STATE_QAM_TYPE_HIER_MIX Hierarchical mixed CoderateHUsed code-rate for hierarchical coding, values less than or equal to zero indicate not available or not used.CoderateAUsed code-rate for protection level A, values less than or equal to zero indicate not available or not used.CoderateBUsed code-rate for protection level B, values less than or equal to zero indicate not available or not used.EstimatedSNREstimated SNR in dB of the decoded signal.TextMessageDecoded text message for the selected service in 16bit Unicode null-terminated string.ServiceInfoArray of four structures which contain general information on the services.
Members
ContentThe type of the service can be combination of the following:
Value Meaning G3XDDC_DRM_STATE_SERVICE_CONTENT_EMPTY Given service is not used, it contains no data, all other members of the structure are invalid. G3XDDC_DRM_STATE_SERVICE_CONTENT_AUDIO Given service contains audio data. G3XDDC_DRM_STATE_SERVICE_CONTENT_TEXTMSG Given service contains text messages. G3XDDC_DRM_STATE_SERVICE_CONTENT_MULTIMEDIA Given service contains multimedia data. G3XDDC_DRM_STATE_SERVICE_CONTENT_DATA Given service contains application specific data. DynamicLabel16bit Unicode null-terminated string containing dynamic label of the service.Country16bit Unicode null-terminated string containing the signalled country for this service.Language16bit Unicode null-terminated string containing the signalled language for this service.ProgramType16bit Unicode null-terminated string containing the signalled program type for this service.AudioBitrateData rate for the audio content. It is zero if this information is not available.TextMsgBitrateData rate for the text message content. It is zero if this information is not available.MultimediaBitrateData rate for the multimedia content. It is zero if this information is not available.DataBitrateData rate for the data content. It is zero if this information is not available.AudioDecoderInfoArray of four structures which contain audio decoder specific information on the services.
Members
ValidIf it is non-zero, audio decoder information are valid, if it is zero, audio decoder information are invalid and all other members of the structure contain no valid data.AudioCodingUsed audio coding, which can be one of the following:
Value Meaning G3XDDC_DRM_STATE_AUDIO_CODING_AAC Audio coding for given service is AAC. G3XDDC_DRM_STATE_AUDIO_CODING_CELP Audio coding for given service is CELP. G3XDDC_DRM_STATE_AUDIO_CODING_HVXC Audio coding for given service is HVXC. G3XDDC_DRM_STATE_AUDIO_CODING_RFU Reserved for future use. SBRIf it is non-zero, SBR is used, if it is zero, SBR is not used.AudioModeThe value depends upon the audio coding and it can be one of the following:
Value Meaning G3XDDC_DRM_STATE_AUDIO_MODE_AAC_MONO Mono G3XDDC_DRM_STATE_AUDIO_MODE_AAC_PARAM_STEREO Parametric stereo G3XDDC_DRM_STATE_AUDIO_MODE_AAC_STEREO Stereo G3XDDC_DRM_STATE_AUDIO_MODE_AAC_RFU Reserved for future use G3XDDC_DRM_STATE_AUDIO_MODE_CELP_NO_CRC Audio data is without CRC G3XDDC_DRM_STATE_AUDIO_MODE_CELP_CRC CRC used G3XDDC_DRM_STATE_AUDIO_MODE_CELP_RFU_10 Reserved for future use G3XDDC_DRM_STATE_AUDIO_MODE_CELP_RFU_11 Reserved for future use G3XDDC_DRM_STATE_AUDIO_MODE_HVXC_RFU_00 Reserved for future use G3XDDC_DRM_STATE_AUDIO_MODE_HVXC_RFU_01 Reserved for future use G3XDDC_DRM_STATE_AUDIO_MODE_HVXC_RFU_10 Reserved for future use G3XDDC_DRM_STATE_AUDIO_MODE_HVXC_RFU_11 Reserved for future use