Programming Information for the WiNRADiO G65DDC receiver in coherent mode.

The G65DDC API SDK is implemented as a dynamic library (libg65ddcapi.so) for 32-bit i386 and 64-bit x86_64 platforms. It provides object-oriented and non-object-oriented interfaces to control the G65DDC device. This document describes the object-oriented interface. The libg65ddcapi.so library exports several functions which makes it possible to control G65DDC receivers in coherent mode.

The API is not fully thread-safe so preferably it should be used in single-threaded applications. It can be used in multi-threaded applications as well, but with some care: One G65DDC receiver can be controlled from a single user thread only.

A C/C++ header file g65ddcapi.h is a part of the SDK.

Processing chain block diagram of the G65DDC device set in coherent mode

The 'G65DDC device set' in coherent mode can consist of up to 16 interconnected G65DDC devices. DDC1 signals from all the G65DDC devices in such a set are phase-coherent. All other provided signals (ADC snapshots, DDC2 and audio) are not phase-coherent. Only one processing channel per device is available in coherent mode.

Simplified block diagram of G65DDC processing chain
Built-in test Preselectors Attenuator Preamplifier Attenuator Preamplifier Range switch Noise blanker ADC snapshots DDC1 frequency shift DDC1 DDC1 stream DDC2 frequency shift DDC2 DDC2 stream DDC2 noise blanker Demodulator filter Signal level Notch filters Gain Pre-processed DDC2 stream Demodulator Audio gain Audio stream Audio filter Set volume Built-in test Preselectors Attenuator Preamplifier Attenuator Preamplifier Range switch Noise blanker ADC snapshots DDC1 frequency shift DDC1 DDC1 stream DDC2 frequency shift DDC2 DDC2 stream DDC2 noise blanker Demodulator filter Signal level Notch filters Gain Pre-processed DDC2 stream Demodulator Audio gain Audio stream Audio filter Set volume Built-in test Preselectors Attenuator Preamplifier Attenuator Preamplifier Range switch Noise blanker ADC snapshots DDC1 frequency shift DDC1 DDC1 stream DDC2 frequency shift DDC2 DDC2 stream DDC2 noise blanker Demodulator filter Signal level Notch filters Gain Pre-processed DDC2 stream Demodulator Audio gain Audio stream Audio filter Set volume Simplified block diagram of the device set processing chain containing three interconnected G65DDC devices in coherent mode.
Phase-coherent parts of the device set are in the red rectangles.

Using the WiNRADiO G65DDC API

Loading the API

The lib65ddcapi.so library can be loaded to the application using the dlopen function of dynamic linking loader (link with -ldl). 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 dlclose function can be used to unload the API. Before the dlclose is called, all the objects created using the CreateInstance function must be freed calling the Free method, otherwise the application may enter an unpredictable state.

The following source code shows how to load the API.

 
#include <stdio.h>
#include <dlfcn.h>
#include "g65ddcapi.h"

G65DDC_CREATE_INSTANCE CreateInstance;
void *API;

int main(void)
{  
    //Loading the API
    API=dlopen("libg65ddcapi.so",RTLD_LAZY);

    if(API!=NULL)
    {
        //Retrieving address of the CreateInstance function
        CreateInstance=(G65DDC_CREATE_INSTANCE)dlsym(API,"CreateInstance");

        //Here place code that uses the API

        dlclose(API);
    }
    else
    {
        //If the dlopen fails
        printf("Failed to load libg65ddcapi.so. %s\n",dlerror());
    }
    
    return 0;
}

Enumerating available G65DDC devices sets in coherent mode

To enumerate available G65DDC 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 G65DDC device sets:

#include <stdio.h>
#include <dlfcn.h>
#include <errno.h>
#include "g65ddcapi.h"

int main(void)
{
 G65DDC_CREATE_INSTANCE CreateInstance;
 void *API;
 ICohG65DDCDeviceSetEnumerator *Enumerator=NULL;
 G65DDC_DEVICE_INFO *DevInfo;
 uint32_t Count;
 uint32_t DeviceSetCount,i,j;

    API=dlopen("libg65ddcapi.so",RTLD_LAZY);

    if(API!=NULL)
    {
        CreateInstance=(G65DDC_CREATE_INSTANCE)dlsym(API,"CreateInstance");

        if(CreateInstance(G65DDC_CLASS_ID_COH_DEVICE_SET_ENUMERATOR,(void**)&Enumerator))
        {
            Enumerator->Enumerate();

            DeviceSetCount=Enumerator->GetDeviceSetCount();
            
            if(DeviceSetCount!=0)
            {
                printf("Available G65DDC device set count=%d:\n",DeviceSetCount);

                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 G65DDC_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 G65DDC device set found.\n");
            }

            Enumerator->Free();
        }
        else
        {
            printf("Failed to create enumerator object. Error code=%d\n",errno);
        }

        dlclose(API);
    }
    else
    {
        printf("Failed to load libg65ddcapi.so. %s\n",dlerror());
    }

    printf("Press enter to exit\n");
    getchar();
    
    return 0;
}

Opening the G65DDC device set

The G65DDC 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 G65DDC 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 G65DDC device set.

#include <stdio.h>
#include <dlfcn.h>
#include <errno.h>
#include "g65ddcapi.h"

int main(void)
{  
 G65DDC_CREATE_INSTANCE CreateInstance;
 void *API;
 ICohG65DDCDeviceSet *DeviceSet;
 
    //Loading the API
    API=dlopen("libg65ddcapi.so",RTLD_LAZY);

    if(API!=NULL)
    {
        //Retrieving address of the CreateInstance API functions
        CreateInstance=(G65DDC_CREATE_INSTANCE)dlsym(API,"CreateInstance");
        
        //Creating instance of the device object
        if(CreateInstance(G65DDC_CLASS_ID_COH_DEVICE_SET,(void**)&DeviceSet))
        {
            //Opening the first available G65DDC device set using predefined COH_G65DDC_OPEN_FIRST constant            
            if(DeviceSet->Open(COH_G65DDC_OPEN_FIRST,0))
            {            
                //Place code here that works with the open G65DDC device set
                
                //Closing device set
                DeviceSet->Close();
            }
            else
            {
                printf("Failed to open device set. Error code=%d\n",errno);
            }
            
            //Free the device set object
            DeviceSet->Free();
        }
        else
        {
            printf("Failed to create device set object. Error code=%d\n",errno);
        }        

        dlclose(API);
    }
    else
    {
        //If the dlopen fails
        printf("Failed to load libg65ddcapi.so. %s\n",dlerror());
    }
}
The following code demonstrates another way to open the first available G65DDC device set using the device set enumerator.
#include <stdio.h>
#include <dlfcn.h>
#include <errno.h>
#include "g65ddcapi.h"

int main(void)
{
 G65DDC_CREATE_INSTANCE CreateInstance;
 void *API;
 ICohG65DDCDeviceSetEnumerator *Enumerator=NULL;
 G65DDC_DEVICE_INFO *DevInfo;
 uint32_t Count;
 uint32_t DeviceSetCount;
 ICohG65DDCDeviceSet *DeviceSet;

    API=dlopen("libg65ddcapi.so",RTLD_LAZY);

    if(API!=NULL)
    {
        CreateInstance=(G65DDC_CREATE_INSTANCE)dlsym(API,"CreateInstance");

        if(CreateInstance(G65DDC_CLASS_ID_COH_DEVICE_SET_ENUMERATOR,(void**)&Enumerator))
        {
            Enumerator->Enumerate();

            DeviceSetCount=Enumerator->GetDeviceSetCount();
            
            if(DeviceSetCount!=0)
            {
                printf("Available G65DDC device set count=%d:\n",DeviceSetCount);
               
                //retrieve number of devices in the first device set
                Count=0;
                Enumerator->GetDeviceSetInfo(0,NULL,&Count);
                                                                                
                DevInfo=new G65DDC_DEVICE_INFO[Count];
                Enumerator->GetDeviceSetInfo(0,DevInfo,&Count);
             
                CreateInstance(G65DDC_CLASS_ID_COH_DEVICE_SET,(void**)&DeviceSet);       
               
                if(DeviceSet->Open(DevInfo,Count))
                {
                    //Place code here that works with the open G65DDC device set
                
                    //Closing device set
                    DeviceSet->Close();
                }
                else
                {
                    printf("Failed to open device set. Error code=%d\n",errno);
                }
                    
                DeviceSet->Free();
                
                delete[] DevInfo;                
            }
            else
            {
                printf("No available G65DDC device set found.\n");
            }

            Enumerator->Free();
        }
        else
        {
            printf("Failed to create enumerator object. Error code=%d\n",errno);
        }

        dlclose(API);
    }
    else
    {
        printf("Failed to load libg65ddcapi.so. %s\n",dlerror());
    }

    printf("Press enter to exit\n");
    getchar();
    
    return 0;
}

Functions

CreateInstance

Creates single object of the specified class and returns interface of the object.

C/C++ declaration

int CreateInstance(uint32_t ClassId,void **Interface);

Address retrieval

G65DDC_CREATE_INSTANCE CreateInstance=(G65DDC_CREATE_INSTANCE)dlsym(API,"CreateInstance");

Parameters

ClassId
[in] Specifies class identifier of the object to be created. This parameter must be one of the following:

ValueMeaning
G65DDC_CLASS_ID_COH_DEVICE_SET_ENUMERATORClass identifier of the enumerator object. When the function finished successfully, ICohG65DDCDeviceSetEnumerator interface is stored to a pointer variable pointed to by the Interface parameter.
G65DDC_CLASS_ID_COH_DEVICE_SETClass identifier of the device set object. When the function finished successfully, ICohG65DDCDeviceSet 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, check errno.

Remarks

All of the objects created using CreateInstance must be freed, calling the Free method of their interfaces before the API is unloaded using the dlclose 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.


Interfaces

ICohG65DDCDeviceSetEnumerator interface

ICohG65DDCDeviceSetEnumerator interface is the interface of the enumerator object that is created using the CreateInstance function and which provides an enumeration mechanism of available G65DDC devices sets. The enumerator does not discover G65DDC devices connected via their LAN interface.


ICohG65DDCDeviceSetEnumerator::Free

Frees the enumerator object from memory. The interface is no longer usable.

C/C++ declaration

void Free(void);

Parameters

None

Return value

None

ICohG65DDCDeviceSetEnumerator::Enumerate

Performs enumeration of available G65DDC devices sets in coherent mode.

C/C++ declaration

int 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, check errno.

ICohG65DDCDeviceSetEnumerator::GetDeviceSetCount

Retrieves the number of available G65DDC device sets enumerated using the ICohG65DDCDeviceSetEnumerator::Enumerate method.

C/C++ declaration

uint32_t GetDeviceSetCount(void);

Parameters

None

Return value

The method returns the number of available G65DDC device sets.

ICohG65DDCDeviceSetEnumerator::GetDeviceSetInfo

Retrieves information about the available G65DDC device set.

C/C++ declaration

int GetDeviceSetInfo(uint32_t DeviceSetIndex,G65DDC_DEVICE_INFO *DeviceInfos,uint32_t *DeviceInfosCount);

Parameters

DeviceSetIndex
[in] Specifies the index of the device set. It can vary from zero to 'one less' than the value returned by the ICohG65DDCDeviceSetEnumerator::GetDeviceSetCount method.
DeviceInfos
[out] Pointer to an array of the G65DDC_DEVICE_INFO structures to be filled with information about the device set.
The order of the device infos in the array corresponds to the hardware interconnect of physical G65DDC 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 the 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 (errno is equal to ENOMEM) 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, check errno.

ICohG65DDCDeviceSet interface

The ICohG65DDCDeviceSet is an interface of the device set object that is created using the CreateInstance function. This interface allows control of the selected G65DDC device set in the coherent mode.


ICohG65DDCDeviceSet::Free

Frees the device set object from memory. The interface is no longer usable.

C/C++ declaration

void Free(void);

Parameters

None

Return value

None

ICohG65DDCDeviceSet::Open

Opens a G65DDC device set and associates it with the device set object given by its interface pointer.

C/C++ declaration

int Open(G65DDC_DEVICE_INFO *DeviceInfos,uint32_t Count);

Parameters

DeviceInfos
[in] Pointer to an array of G65DDC_DEVICE_INFO structures which contains information about all of the devices in the device set to be open. 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 the hardware interconnect of the G65DDC devices. Array of device info structures and its size can be obtained using the ICohG65DDCDeviceSetEnumerator. 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:
ValueMeaning
COH_G65DDC_OPEN_FIRSTThis method opens the first available G65DDC device set. The Count parameter is ignored, the number of interconnected devices is determined automatically.
COH_G65DDC_OPEN_DEMOThis method opens a demo G65DDC device set. This allows developers to work with the API without physical G65DDC devices. The Count parameter specifies the number of demo receivers in the set and can vary from 1 to 16.
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, check errno.

Remarks

The order of devices in the device set corresponds to the hardware interconnect of the G65DDC devices. Each individual device in the device set has its own constant index which does not change while the hardware G65DDC device interconnect remains the same. This index is used in some methods to access a specific device of the device set. The index of the first device is 0 (master device), the index of the second device is 1, etc..

ICohG65DDCDeviceSet::Close

Closes the currently open G65DDC device set and all the devices of this set associated with the device set object and makes the object available for use with another G65DDC device set.

C/C++ declaration

int Close(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, check errno.

ICohG65DDCDeviceSet::IsOpen

Checks if a device set is associated with the device set object.

C/C++ declaration

int IsOpen(void);

Parameters

None

Return value

This method returns a non-zero value if a device is associated with the device object (using the ICohG65DDCDeviceSet::Open method) and it can be controlled using methods of the device set object interface.
The method returns zero if no device is associated with the device object.

ICohG65DDCDeviceSet::IsConnected

Checks if all the devices in the device set are still connected to the computer.

C/C++ declaration

int IsConnected(int *Connected);

Parameters

Connected
[out] Pointer to a variable which receives the current connection status. If the received value is non-zero, all the devices in the given device set are still connected and available. If any device in the device set is disconnected, the received value is 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, check errno.

Remarks

If any device from the set is determined disconnected, the device set is no longer usable and should be closed using ICohG65DDCDeviceSet::Close method.

ICohG65DDCDeviceSet::GetDeviceCount

Retrieves the number of G65DDC devices in the device set.

C/C++ declaration

int GetDeviceCount(uint32_t *Count);

Parameters

Count
[out] Pointer to a variable which receives the number of G65DDC 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, check errno.

ICohG65DDCDeviceSet::GetDeviceInfo

Retrieves information about a single G65DDC device from the device set.

C/C++ declaration

int GetDeviceInfo(uint32_t DeviceIndex,G65DDC_DEVICE_INFO *Info);

Parameters

DeviceIndex
[in] Specifies the 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 G65DDC devices.
Info
[out] Pointer to a G65DDC_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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetDeviceCount method to determine the number of devices in the device set.

ICohG65DDCDeviceSet::GetDeviceInfos

Retrieves information about all of the G65DDC devices in the device set at once.

C/C++ declaration

int GetDeviceInfos(G65DDC_DEVICE_INFO *Infos,uint32_t *InfoCount);

Parameters

Infos
[out] Pointer to an array of G65DDC_DEVICE_INFO structures to be filled with information about the device in the device set.
The order of the device infos in the array corresponds to the hardware interconnect of physical G65DDC 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 (errno is equal to ENOMEM) 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetDeviceCount method to determine the number of devices in the device set.

ICohG65DDCDeviceSet::SetLED

Sets the front panel LED flashing mode of the specified G65DDCe device in the device set.

C/C++ declaration

int SetLED(uint32_t DeviceIndex,uint32_t LEDMode);

Parameters

DeviceIndex
[in] Specifies the index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.
LEDMode
[in] Specifies the front panel LED flashing mode, which can be one of the following:

ValueMeaning
G65DDC_FRONT_PANEL_LED_MODE_DIAGDiagnostic flashing.
G65DDC_FRONT_PANEL_LED_MODE_ONAlways on.
G65DDC_FRONT_PANEL_LED_MODE_OFFAlways 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetLED method to determine the current flashing mode of the front panel LED.

A complete list of the diagnostic flashing patterns and their meaning is as follows:

No. Pattern Description Mode
1
        
Off No power
2
 
Fading No connection to computer
3
        
Two short flashes USB or LAN client connected, radio off
4
        
One short flash followed by a long one USB or LAN connected, radio on, ready
5
        
Two short flashes followed by a long one USB connected, driver not installed
6
        
Three short flashes USB or LAN connected, driver installed, application not running

ICohG65DDCDeviceSet::GetLED

Determines the current flashing mode of G65DDCe device's front panel LED.

C/C++ declaration

int GetLED(uint32_t DeviceIndex,uint32_t *LEDMode);

Parameters

DeviceIndex
[in] Specifies the index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.
LEDMode
[out] Pointer to a variable which receives the current flashing mode of device's front panel LED. For a list of possible values, see ICohG65DDCDeviceSet::SetLED. 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, check errno.

ICohG65DDCDeviceSet::SetPower

Turns on or off all of the G65DDC devices in the device set.

C/C++ declaration

int SetPower(int Power);

Parameters

Power
[in] Specifies whether to turn on or off the devices. If this parameter is non-zero all of the devices in the device set are turned on, if it is zero then all of 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, check errno. To get additional information about the failure, check the state of all of the devices in the set using the ICohG65DDCDeviceSet::GetDeviceState method.

Remarks

If ICohG65DDCDeviceSet::SetPower turns the devices off, all the running streams are stopped.

Use the ICohG65DDCDeviceSet::GetPower method to determine the current power state of devices in the device set.

ICohG65DDCDeviceSet::SetPower fails if some parts of the multichannel coherent system are not properly interconnected or improper cables are used for interconnection.


ICohG65DDCDeviceSet::GetPower

The GetPower method determines whether the devices are turned on or off.

C/C++ declaration

int GetPower(int *Power);

Parameters

Power
[out] Pointer to a variable which receives the 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, check errno.

ICohG65DDCDeviceSet::GetDeviceState

Retrieves the current state of the G65DDC device in the device set, like internal temperatures, error state, data transfer counters.

C/C++ declaration

int GetDeviceState(uint32_t DeviceIndex,G65DDC_DEVICE_STATE *State);

Parameters

DeviceIndex
[in] Specifies the 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 G65DDC_DEVICE_STATE structure to be filled with the current device 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, check errno.

ICohG65DDCDeviceSet::SetBuiltInTest

Enables or disables the test signal at the receiver's input, which allows testing of the entire signal and processing path.

C/C++ declaration

int SetBuiltInTest(uint32_t DeviceIndex,int Enabled);

Parameters

DeviceIndex
[in] Specifies the 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:

RangeFrequencyLevel
165 MHz ± 5 MHz-40 dBm ± 3 dB
2152 MHz ± 5 MHz-34 dBm ± 3 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, check errno.

ICohG65DDCDeviceSet::GetBuiltInTest

Retrieves information about whether the test signal is enabled or not.

C/C++ declaration

int GetBuiltInTest(uint32_t DeviceIndex,int *Enabled);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

ICohG65DDCDeviceSet::SetAttenuator

Sets the RF input attenuator.

C/C++ declaration

int SetAttenuator(uint32_t Attenuator);

Parameters

Attenuator
[in] The 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 ICohG65DDCDeviceSet::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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::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 ICohG65DDCDeviceSet::SetConfiguration), then the ICohG65DDCDeviceSet::SetAttenuator method with the same value of the Attenuator parameter has to be called on all of the receivers in this multichannel coherent system.


ICohG65DDCDeviceSet::GetAttenuator

Retrieves the current setting of the RF input attenuator.

C/C++ declaration

int GetAttenuator(uint32_t *Attenuator);

Parameters

Attenuator
[out] Pointer to a variable which 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, check errno.

ICohG65DDCDeviceSet::SetPreselectors

Controls the band pass filter at the RF input in the first range.

C/C++ declaration

int SetPreselectors(uint32_t Low,uint32_t 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 this 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, 88000000. If the value is not from this 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, check errno.

Remarks

The value of the Low parameter must not be higher than value of the High parameter, otherwise the method fails.

Use the ICohG65DDCDeviceSet::GetPreselectors method to determine the current setting of the preselectors.

If the receiver which is open (in the given device set) is part of the multichannel coherent system in Extended Topology Configuration (ETC, see ICohG65DDCDeviceSet::SetConfiguration), then the ICohG65DDCDeviceSet::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.


ICohG65DDCDeviceSet::GetPreselectors

Retrieves the current setting of the RF input band pass filter.

C/C++ declaration

int GetPreselectors(uint32_t *Low,uint32_t *High);

Parameters

Low
[out] Pointer to a variable which 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 which 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, check errno.

ICohG65DDCDeviceSet::SetPreamplifier

Enables or disables the RF input preamplifier.

C/C++ declaration

int SetPreamplifier(int 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetPreamplifier 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 ICohG65DDCDeviceSet:::SetConfiguration), then the ICohG65DDCDeviceSet::SetPreamplifier method with the same value of the Preamp parameter has to be called on for all of the receivers in this multichannel coherent system.


ICohG65DDCDeviceSet::GetPreamplifier

Retrieves the current state of the RF input preamplifier.

C/C++ declaration

int GetPreamplifier(int *Preamp);

Parameters

Preamp
[out] Pointer to a variable which 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, check errno.

ICohG65DDCDeviceSet::SetInverted

Enables or disables frequency spectrum inversion.

C/C++ declaration

int SetInverted(int 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, check errno.

ICohG65DDCDeviceSet::GetInverted

Retrieves the current frequency spectrum inversion setting.

C/C++ declaration

int GetInverted(int *Inverted);

Parameters

Inverted
[out] Pointer to a variable which 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, check errno.

ICohG65DDCDeviceSet::SetRange

Switches the active receiver's RF input between range 1 and range 2.

C/C++ declaration

int SetRange(uint32_t Range);

Parameters

Range
[in] Specifies which range will be active. The value can be G65DDC_RANGE_1 for range 1, or G65DDC_RANGE_2 for range 2.

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, check errno. To get additional information about the failure, check state of all the devices in the set using the ICohG65DDCDeviceSet::GetDeviceState method.

Remarks

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 ICohG65DDCDeviceSet::SetConfiguration), then the ICohG65DDCDeviceSet::SetRange method with the same value of the Range 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 ICohG65DDCDeviceSet::Trigger method on the synchronization master receiver.


ICohG65DDCDeviceSet::GetRange

Retrieves information regarding which range is active.

C/C++ declaration

int GetRange(uint32_t *Range);

Parameters

Range
[out] Pointer to a variable which receives G65DDC_RANGE_1 if range 1 is active, or G65DDC_RANGE_2 if range 2 is active. 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, check errno.

ICohG65DDCDeviceSet::SetADCNoiseBlanker

Enables or disables the noise blanker on the ADC stream.

C/C++ declaration

int SetADCNoiseBlanker(int Enabled);

Parameters

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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::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 ICohG65DDCDeviceSet::SetConfiguration), then the ICohG65DDCDeviceSet::SetADCNoiseBlanker method with the same value of the Enabled parameter has to be called on all of the receivers in this multichannel coherent system.


ICohG65DDCDeviceSet::GetADCNoiseBlanker

Retrieves the current ADC noise blanker state.

C/C++ declaration

int GetADCNoiseBlanker(int *Enabled);

Parameters

Enabled
[out] Pointer to a variable which receives the current state of the 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, check errno.

ICohG65DDCDeviceSet::SetADCNoiseBlankerThreshold

Specifies the ADC noise blanker threshold.

C/C++ declaration

int SetADCNoiseBlankerThreshold(uint16_t 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 ICohG65DDCDeviceSet::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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetADCNoiseBlankerThreshold method to retrieve the current threshold of the noise blanker.

ICohG65DDCDeviceSet::GetADCNoiseBlankerThreshold

Determines the ADC noise blanker threshold.

C/C++ declaration

int GetADCNoiseBlankerThreshold(uint16_t *Threshold);

Parameters

Threshold
[out] Pointer to a variable which 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, check errno.

ICohG65DDCDeviceSet::StartADCSnapshots

Starts the sending of ADC snapshots from a specific device of the device set.

C/C++ declaration

int StartADCSnapshots(uint32_t DeviceIndex,uint16_t Interval,uint32_t SamplesPerSnapshot);

Parameters

DeviceIndex
[in] Specifies the 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 ADC snapshots are sent to the ICohG65DDCDeviceSetCallback::CohG65DDC_ADCSnapshotCallback callback.
SamplesPerSnapshot
[in] Specifies the number of 16-bit samples per single ADC snapshot. In other words, it is the number of samples per buffer passed to the ICohG65DDCDeviceSetCallback::CohG65DDC_ADCSnapshotCallback callback. It can be one of the following:

ValueNumber of samples per snapshot
G65DDC_ADC_SAMPLES_PER_SNAPSHOT_64K65536
G65DDC_ADC_SAMPLES_PER_SNAPSHOT_128K131072
G65DDC_ADC_SAMPLES_PER_SNAPSHOT_256K262144

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, check errno.

Remarks

The G65DDC device set has to be turned on using the ICohG65DDCDeviceSet::SetPower method before use of ICohG65DDCDeviceSet::StartADCSnapshots, otherwise the ICohG65DDCDeviceSet::StartADCSnapshots method fails.


ICohG65DDCDeviceSet::StopADCSnapshots

Stops the sending of ADC snapshots from a specific device of the device set.

C/C++ declaration

int StopADCSnapshots(uint32_t DeviceIndex);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

The ICohG65DDCDeviceSetCallback::CohG65DDC_ADCSnapshotCallback callback is not called after ICohG65DDCDeviceSet::StopADCSnapshots returns.


ICohG65DDCDeviceSet::GetDDCInfo

Retrieves information about the DDC format.

C/C++ declaration

int GetDDCInfo(uint32_t DDCTypeIndex,G65DDC_DDC_INFO *DDCInfo);

Parameters

DDCTypeIndex
[in] Specifies the index of DDC type. For more information, see remarks.
DDCInfo
[out] Pointer to a G65DDC_DDC_INFO structure to be filled with information about the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::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 ICohG65DDCDeviceSet::GetDDC1Count.

Use the ICohG65DDCDeviceSet::GetDDC1 method to determine the current DDC type index of DDC1 and the ICohG65DDCDeviceSet::GetDDC2 method to determine current DDC type of DDC2.


ICohG65DDCDeviceSet::GetDDC1Count

Retrieves the number of DDC types supported by DDC1.

C/C++ declaration

int GetDDC1Count(uint32_t *Count);

Parameters

Count
[out] Pointer to a variable which 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, check errno.

ICohG65DDCDeviceSet::SetDDC1

Sets current DDC type of DDC1.

C/C++ declaration

int SetDDC1(uint32_t DDCTypeIndex);

Parameters

DDCTypeIndex
[in] Specifies the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetDDC1Count method to determine the number of possible DDC types of DDC1. The DDCTypeIndex parameter can vary from zero to 'one less' than the number determined by ICohG65DDCDeviceSet::GetDDC1Count method.

DDC1 streaming must not run when calling ICohG65DDCDeviceSet::SetDDC1. In other words, DDC1 streaming which is started using the ICohG65DDCDeviceSet::StartDDC1 method has to be stopped using the ICohG65DDCDeviceSet::StopDDC1 method before calling of ICohG65DDCDeviceSet::SetDDC1, otherwise ICohG65DDCDeviceSet::SetDDC1 fails. The ICohG65DDCDeviceSet::SetDDC1 method does not start and stop DDC1 streaming, it just changes the DDC type of DDC1.

Calling of ICohG65DDCDeviceSet::SetDDC1 can change the current DDC type of DDC2 and current bandwidth of demodulator filter, so it is useful to call the ICohG65DDCDeviceSet::GetDDC2 and ICohG65DDCDeviceSet::GetDemodulatorFilterBandwidth methods immediately after ICohG65DDCDeviceSet::SetDDC1 to determine the current DDC type of DDC2 and current bandwidth of the demodulator filter.

Use the ICohG65DDCDeviceSet::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 ICohG65DDCDeviceSet::SetConfiguration), then the ICohG65DDCDeviceSet::SetDDC1 method 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 ICohG65DDCDeviceSet::StartDDC1 method.


ICohG65DDCDeviceSet::GetDDC1

Retrieves information about the current DDC type of the DDC1.

C/C++ declaration

int GetDDC1(uint32_t *DDCTypeIndex,G65DDC_DDC_INFO *DDCInfo);

Parameters

DDCTypeIndex
[out] Pointer to a variable which receives the 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 G65DDC_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, check errno.

Remarks

Returned DDCTypeIndex can be passed to the ICohG65DDCDeviceSet::GetDDCInfo method.

ICohG65DDCDeviceSet::SetDDC1Frequency

Sets the DDC1 center frequency.

C/C++ declaration

int SetDDC1Frequency(int32_t Frequency);

Parameters

Frequency
[in] Specifies the new center frequency of the 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, check errno. To get additional information about the failure, check state of all the devices in the set using the ICohG65DDCDeviceSet::GetDeviceState method.

Remarks

Changing of DDC1 frequency causes a change of the absolute frequency of the DDC2 and demodulator in each device in the set.

Use the ICohG65DDCDeviceSet::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 ICohG65DDCDeviceSet::SetConfiguration), then the ICohG65DDCDeviceSet::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 ICohG65DDCDeviceSet::Trigger method on the synchronization master receiver.


ICohG65DDCDeviceSet::GetDDC1Frequency

Retrieves the current center frequency of DDC1.

C/C++ declaration

int GetDDC1Frequency(int32_t *Frequency);

Parameters

Frequency
[out] Pointer to a variable which 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, check errno.

ICohG65DDCDeviceSet::SetDDC1PhaseShift

Sets the phase shift of the DDC1 signal for a specific device in the device set.

C/C++ declaration

int SetDDC1PhaseShift(uint32_t 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 the 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, check errno.

Remarks

It can be used for compensation of 'small length differences' of cables used for the coherent clock or at the receiver RF inputs.

Use the ICohG65DDCDeviceSet::GetDDC1PhaseShift method to retrieve the current phase shift of the DDC1 signal.


ICohG65DDCDeviceSet::GetDDC1PhaseShift

Retrieves the current phase shift of the DDC1 signal for the specific device in the device set.

C/C++ declaration

int GetDDC1PhaseShift(uint32_t DeviceIndex,double *PhaseShift);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::StartDDC1

Starts coherent DDC1 streaming on all of the devices in the set simultaneously.

C/C++ declaration

int StartDDC1(uint32_t SampleSetsPerBuffer);

Parameters

SampleSetsPerBuffer
[in] Specifies the number of I/Q sample sets in each buffer passed to the ICohG65DDCDeviceSetCallback::CohG65DDC_DDC1StreamCallback callback. If the current DDC1 type index (specified by the ICohG65DDCDeviceSet::SetDDC1 method) is less than or equal to 24 (DDC1 bandwidth <= 5 MHz) the value of the SampleSetsPerBuffer has to be a multiple of 64. If the current the DDC1 type index is greater than 24 (DDC1 bandwidth > 5 MHz), the SampleSetsPerBuffer has to be a multiple of 1024. If it is zero, the ICohG65DDCDeviceSet::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, check errno. To get additional information about the failure, check state of all the devices in the set using the ICohG65DDCDeviceSet::GetDeviceState method.

Remarks

The G65DDC devices have to be turned on using the ICohG65DDCDeviceSet::SetPower method before ICohG65DDCDeviceSet::StartDDC1 is used. Otherwise ICohG65DDCDeviceSet::StartDDC1 fails.

If the DDC1 streaming is already running before use of ICohG65DDCDeviceSet::StartDDC1, ICohG65DDCDeviceSet::StartDDC1 fails.

Use the ICohG65DDCDeviceSet::StopDDC1 method to stop DDC1 streaming.

Decreasing the value of the SampleSetsPerBuffer parameter decreases latency and may increase CPU usage. Increasing the value of the SampleSetsPerBuffer 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 ICohG65DDCDeviceSet::SetConfiguration), then the ICohG65DDCDeviceSet::StartDDC1 method with the same value of the SampleSetsPerBuffer 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 ICohG65DDCDeviceSet::Trigger method on the synchronization master receiver.


ICohG65DDCDeviceSet::StopDDC1

Stops DDC1 streaming on all of the devices of the device set.

C/C++ declaration

int 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, check errno.

Remarks

The ICohG65DDCDeviceSet::StopDDC1 method stops all of the streaming beyond the DDC1 in the processing chain (DDC2 and audio streaming in all the devices in the set).

The ICohG65DDCDeviceSetCallback::CohG65DDC_DDC1StreamCallback callback is not called after ICohG65DDCDeviceSet::StopDDC1 returns.


ICohG65DDCDeviceSet::GetDDC2Count

Retrieves the number of DDC types supported by DDC2.

C/C++ declaration

int GetDDC2Count(uint32_t *Count);

Parameters

Count
[out] Pointer to a variable which receives the number of DDC types supported by the 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, check errno.

Remarks

The maximum number of DDC types supported by the DDC2 channel is determined by the MaxDDC2TypeCount member of the G65DDC_DEVICE_INFO structure but it cannot be greater than the current DDC type index of the DDC1 channel + 1.


ICohG65DDCDeviceSet::SetDDC2

Sets the current DDC type of DDC2 for the specific device in the device set.

C/C++ declaration

int SetDDC2(uint32_t DeviceIndex,uint32_t DDCTypeIndex);

Parameters

DeviceIndex
[in] Specifies the index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.
DDCTypeIndex
[in] Specifies the index of the DDC type to be used in 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetDDC2Count method to determine the number of possible DDC types of DDC2 for the given channel. The DDCTypeIndex parameter can vary from zero to one less than the number determined by ICohG65DDCDeviceSet::GetDDC2Count.

DDC2 streaming must not run when calling ICohG65DDCDeviceSet::SetDDC2. In other words, DDC2 streaming that is started using the ICohG65DDCDeviceSet::StartDDC2 method has to be stopped using the ICohG65DDCDeviceSet::StopDDC2 method before calling of ICohG65DDCDeviceSet::SetDDC2, otherwise ICohG65DDCDeviceSet::SetDDC2 fails. The ICohG65DDCDeviceSet::SetDDC2 method does not start and stop DDC2 streaming, it just changes the DDC type of DDC2.

Calling of ICohG65DDCDeviceSet::SetDDC2 can change the current bandwidth of the demodulator filter, therefore it is useful to call the ICohG65DDCDeviceSet::GetDemodulatorFilterBandwidth method immediately after ICohG65DDCDeviceSet::SetDDC2 to determine the current bandwidth of the demodulator filter.

Use the ICohG65DDCDeviceSet::GetDDC2 method to determine the current DDC type of the DDC2.


ICohG65DDCDeviceSet::GetDDC2

Retrieves information about the current DDC type of the DDC2 for the specified device in the device set.

C/C++ declaration

int GetDDC2(uint32_t DeviceIndex,uint32_t *DDCTypeIndex,G65DDC_DDC_INFO *DDCInfo);

Parameters

DeviceIndex
[in] Specifies the index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.
DDCTypeIndex
[out] Pointer to a variable which receives the 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 G65DDC_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, check errno.

Remarks

The BitsPerSample member of the G65DDC_DDC_INFO structure is not used and it can be ignored for DDC2. I and Q samples in buffers passed to the ICohG65DDCDeviceSetCallback::CohG65DDC_DDC2StreamCallback and ICohG65DDCDeviceSetCallback::CohG65DDC_DDC2PreprocessedStreamCallback DDC2 callbacks are always in IEEE float (32-bit, little endian) format.

Returned DDCTypeIndex can be passed to the ICohG65DDCDeviceSet::GetDDCInfo method.


ICohG65DDCDeviceSet::SetDDC2Frequency

Sets the relative center frequency of DDC2 for the specified device of the device set.

C/C++ declaration

int SetDDC2Frequency(uint32_t DeviceIndex,int32_t Frequency);

Parameters

DeviceIndex
[in] Specifies the 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 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, check errno.

Remarks

The value of the Frequency parameter is the 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 = faDDC1 + frDDC2

Where faDDC2 is the absolute center frequency of DDC2, faDDC1 is the absolute center frequency of the DDC1 in Hz (set using the ICohG65DDCDeviceSet::SetDDC1Frequency method) and frDDC2 is the relative center frequency of DDC2 in Hz (set using ICohG65DDCDeviceSet::SetDDC2Frequency).

A change of center frequency of the DDC1 channel causes a change of absolute frequency of the DDC2 channels (and its demodulators) connected to the given DDC1 channel.

Use the ICohG65DDCDeviceSet::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:

ICohG65DDCDeviceSet *DeviceSet; //Interface of the G65DDC device set object, created using CreateInstance function

//1. method
DeviceSet->SetRange(G65DDC_RANGE_1); //Set active receiver's input to range 1 (0 - 88 MHz)
DeviceSet->SetDDC1Frequency(11010000);
DeviceSet->SetDDC2Frequency(0,0);

//2. method, can be used if the bandwidth of DDC2 is less than the bandwidth of DDC1
DeviceSet->SetRange(G65DDC_RANGE_1);
DeviceSet->SetDDC1Frequency(11000000);
DeviceSet->SetDDC2Frequency(0,10000);

//3. method, can be used if the bandwidth of DDC2 is less than the bandwidth of DDC1
DeviceSet->SetRange(G65DDC_RANGE_1);
DeviceSet->SetDDC1Frequency(11020000);
DeviceSet->SetDDC2Frequency(0,-10000);

ICohG65DDCDeviceSet::GetDDC2Frequency

Retrieves the current relative DDC2 center frequency of the specified device in the device set.

C/C++ declaration

int GetDDC2Frequency(uint32_t DeviceIndex,int32_t *Frequency);

Parameters

DeviceIndex
[in] Specifies the 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 which receives the current relative center frequency of DDC2 in Hz. The returned value can be negative. See remarks of the ICohG65DDCDeviceSet::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, check errno.

ICohG65DDCDeviceSet::StartDDC2

Starts DDC2 streaming on the specified device.

C/C++ declaration

int StartDDC2(uint32_t DeviceIndex,uint32_t SampleSetsPerBuffer);

Parameters

DeviceIndex
[in] Specifies the index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.
SampleSetsPerBuffer
[in] Specifies the number of I/Q sample sets in each buffer passed to the ICohG65DDCDeviceSetCallback::CohG65DDC_DDC2StreamCallback and ICohG65DDCDeviceSetCallback::CohG65DDC_DDC2PreprocessedStreamCallback callbacks. The value has to be a multiple of 64 greater than zero. If it is zero, the ICohG65DDCDeviceSet::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, check errno.

Remarks

Before ICohG65DDCDeviceSet::StartDDC2 is used, the devices of the device set have to be turned on using the ICohG65DDCDeviceSet::SetPower method and DDC1 streaming has to be started using the ICohG65DDCDeviceSet::StartDDC1 method, otherwise ICohG65DDCDeviceSet::StartDDC2 fails.

If the DDC2 streaming for a given device is already running, ICohG65DDCDeviceSet::StartDDC2 fails.

Use the ICohG65DDCDeviceSet::StopDDC2 method to stop DDC2 streaming.

Decreasing the value of the SampleSetsPerBuffer parameter decreases latency and may increase CPU usage. Increasing the value of the SampleSetsPerBuffer parameter increases latency and may decrease CPU usage.


ICohG65DDCDeviceSet::StopDDC2

Stops DDC2 streaming on the specified device.

C/C++ declaration

int StopDDC2(uint32_t DeviceIndex);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

If audio streaming for a given device is running, it is stopped too.

If DDC2 streaming is not active, ICohG65DDCDeviceSet::StopDDC2 does nothing.

The ICohG65DDCDeviceSetCallback::CohG65DDC_DDC2StreamCallback and ICohG65DDCDeviceSetCallback::CohG65DDC_DDC2PreprocessedStreamCallback callbacks are not called when ICohG65DDCDeviceSet::StopDDC2 returns.


ICohG65DDCDeviceSet::SetDDC2NoiseBlanker

Enables or disables the noise blanker on the DDC2 stream of the specified device.

C/C++ declaration

int SetDDC2NoiseBlanker(uint32_t DeviceIndex,int Enabled);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetDDC2NoiseBlanker method to determine the current state of the noise blanker.

ICohG65DDCDeviceSet::GetDDC2NoiseBlanker

Retrieves the current DDC2 noise blanker state of the specified device.

C/C++ declaration

int GetDDC2NoiseBlanker(uint32_t DeviceIndex,int *Enabled);

Parameters

DeviceIndex
[in] Specifies the 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 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, check errno.

ICohG65DDCDeviceSet::SetDDC2NoiseBlankerThreshold

Specifies the DDC2 noise blanker threshold of the specified device.

C/C++ declaration

int SetDDC2NoiseBlankerThreshold(uint32_t DeviceIndex,double Threshold);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetDDC2NoiseBlankerThreshold method to retrieve the current threshold of the noise blanker.

ICohG65DDCDeviceSet::GetDDC2NoiseBlankerThreshold

Retrieves the DDC2 noise blanker threshold of the specified device.

C/C++ declaration

int GetDDC2NoiseBlankerThreshold(uint32_t DeviceIndex,double *Threshold);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::GetDDC2NoiseBlankerExcessValue

Determines a value which indicates the percentage ratio between the 'short time average signal level' and the 'maximum level'.

C/C++ declaration

int GetDDC2NoiseBlankerExcessValue(uint32_t DeviceIndex,double *Value);

Parameters

DeviceIndex
[in] Specifies the 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 which receives the 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, check errno.

ICohG65DDCDeviceSet::GetSignalLevel

Determines the current signal level for the specified device.

C/C++ declaration

int GetSignalLevel(uint32_t DeviceIndex,float *Peak,float *RMS);

Parameters

DeviceIndex
[in] Specifies the 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 which 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 which 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, check errno.

Remarks

DDC2 streaming has to be active (started using the ICohG65DDCDeviceSet::StartDDC2 method) before calling of ICohG65DDCDeviceSet::GetSignalLevel, otherwise the returned peak and RMS signal levels are zero.

The 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.

The signal level is evaluated for each buffer processed by the demodulator filter. The buffer size (signal level evaluation rate) is given by the SampleSetsPerBuffer parameter of the ICohG65DDCDeviceSet::StartDDC2 method.

The ICohG65DDCDeviceSetCallback::CohG65DDC_DDC2PreprocessedStreamCallback callback provides the signal level for each buffer passed to the callback, i.e. for each buffer used in the signal level evaluation. This provides a way to get the signal level from each processed buffer without the need to poll it using ICohG65DDCDeviceSet::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 the RMS signal level in Volts obtained by ICohG65DDCDeviceSet::GetSignalLevel, R is the G65DDC receiver input impedance (50 Ω), P[W] is power in Watts, P[dBm] is power in dBm and 1000 is the 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>

ICohG65DDCDeviceSet *DeviceSet; //Interface of the G65DDC 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);

ICohG65DDCDeviceSet::SetNotchFilter

Enables or disables the notch filter of the specified device.

C/C++ declaration

int SetNotchFilter(uint32_t DeviceIndex,uint32_t NotchFilterIndex,int Enabled);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetNotchFilter method to determine whether the filter is enabled or disabled.

ICohG65DDCDeviceSet::GetNotchFilter

Retrieves the current notch filter state of the specified device.

C/C++ declaration

int GetNotchFilter(uint32_t DeviceIndex,uint32_t NotchFilterIndex,int *Enabled);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetNotchFilterFrequency

Specifies the relative center frequency of the notch filter for the specified device.

C/C++ declaration

int SetNotchFilterFrequency(uint32_t DeviceIndex,uint32_t NotchFilterIndex,int32_t Frequency);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

The value of the Frequency parameter is the new center frequency of the notch filter relative to center of the DDC2 (see the ICohG65DDCDeviceSet::SetDDC2Frequency method). The value can be negative.

Use the ICohG65DDCDeviceSet::GetNotchFilterFrequency method to retrieve the current center frequency of the notch filter.


ICohG65DDCDeviceSet::GetNotchFilterFrequency

Retrieves the current relative center frequency of the notch filter.

C/C++ declaration

int GetNotchFilterFrequency(uint32_t DeviceIndex,uint32_t NotchFilterIndex,int32_t *Frequency);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetNotchFilterBandwidth

Specifies the bandwidth of the notch filter of the specified device.

C/C++ declaration

int SetNotchFilterBandwidth(uint32_t DeviceIndex,uint32_t NotchFilterIndex,uint32_t Bandwidth);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetNotchFilterBandwidth method to retrieve the current bandwidth of the notch filter.


ICohG65DDCDeviceSet::GetNotchFilterBandwidth

Retrieves the current bandwidth of the notch filter for the specified device.

C/C++ declaration

int GetNotchFilterBandwidth(uint32_t DeviceIndex,uint32_t NotchFilterIndex,uint32_t *Bandwidth);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetNotchFilterLength

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

int SetNotchFilterLength(uint32_t DeviceIndex,uint32_t NotchFilterIndex,uint32_t Length);

Parameters

DeviceIndex
[in] Specifies the 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 8, greater than or equal to 64 and less than or equal to 32768. If it is not multiple of 8, the method rounds it up to the nearest multiple of 8.

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, check errno.

Remarks

Increasing the filter length increases the filter steepness and may increase CPU usage.

Use the ICohG65DDCDeviceSet::GetNotchFilterLength method to determine the current length of the notch filter.


ICohG65DDCDeviceSet::GetNotchFilterLength

Retrieves the current notch filter length of the specified device.

C/C++ declaration

int GetNotchFilterLength(uint32_t DeviceIndex,uint32_t NotchFilterIndex,uint32_t *Length);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetAGC

Enables or disables the AGC for the specified device.

C/C++ declaration

int SetAGC(uint32_t DeviceIndex,int Enabled);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

If the AGC is disabled, the signal is affected by the 'fixed gain' specified using the ICohG65DDCDeviceSet::SetGain method.

Use the ICohG65DDCDeviceSet::GetAGC method to determine the current state of the AGC.


ICohG65DDCDeviceSet::GetAGC

Retrieves the current state of the AGC for the specified device.

C/C++ declaration

int GetAGC(uint32_t DeviceIndex,int *Enabled);

Parameters

DeviceIndex
[in] Specifies the 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 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, check errno.

ICohG65DDCDeviceSet::SetAGCParams

Sets parameters of the AGC for the specified device.

C/C++ declaration

int SetAGCParams(uint32_t DeviceIndex,double AttackTime,double DecayTime,double ReferenceLevel);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetAGCParams method to determine the current parameters of the AGC.


ICohG65DDCDeviceSet::GetAGCParams

Retrieves the current parameters of the AGC for the specified device.

C/C++ declaration

int GetAGCParams(uint32_t DeviceIndex,double *AttackTime,double *DecayTime,double *ReferenceLevel);

Parameters

DeviceIndex
[in] Specifies the 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 which 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 which 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 which 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, check errno.

ICohG65DDCDeviceSet::SetMaxAGCGain

Sets the maximum gain of the AGC for the specified device.

C/C++ declaration

int SetMaxAGCGain(uint32_t DeviceIndex,double MaxGain);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetMaxAGCGain method to determine the maximum gain of the AGC.


ICohG65DDCDeviceSet::GetMaxAGCGain

Retrieves the current maximum gain of the AGC for the specified device.

C/C++ declaration

int GetMaxAGCGain(uint32_t DeviceIndex,double *MaxGain);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetGain

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

int SetGain(uint32_t DeviceIndex,double Gain);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetGain method to determine the current fixed gain.


ICohG65DDCDeviceSet::GetGain

Retrieves the current fixed gain of the specified device.

C/C++ declaration

int GetGain(uint32_t DeviceIndex,double *Gain);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::GetCurrentGain

Retrieves the current gain that is applied to the I/Q signal of the specified device.

C/C++ declaration

int GetCurrentGain(uint32_t DeviceIndex,double *CurrentGain);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

Remarks

If the AGC is enabled (using the ICohG65DDCDeviceSet::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 ICohG65DDCDeviceSet::SetGain method.

ICohG65DDCDeviceSet::SetDemodulatorFilterBandwidth

Sets the bandwidth of the demodulator filter for the specified device.

C/C++ declaration

int SetDemodulatorFilterBandwidth(uint32_t DeviceIndex,uint32_t Bandwidth);

Parameters

DeviceIndex
[in] Specifies the 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 ICohG65DDCDeviceSet::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, check errno.

Remarks

The demodulator filter bandwidth can be changed using the ICohG65DDCDeviceSet::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 ICohG65DDCDeviceSet::GetDemodulatorFilterBandwidth method immediately after ICohG65DDCDeviceSet::SetDDC1.

ICohG65DDCDeviceSet::GetDemodulatorFilterBandwidth

Retrieves the current demodulator filter bandwidth of the specified device.

C/C++ declaration

int GetDemodulatorFilterBandwidth(uint32_t DeviceIndex,uint32_t *Bandwidth);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetDemodulatorFilterShift

Sets the demodulator filter shift of the specified device.

C/C++ declaration

int SetDemodulatorFilterShift(uint32_t DeviceIndex,int32_t Shift);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

The 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 the demodulator frequency, it just shifts the filter from the demodulator's center.

Use the ICohG65DDCDeviceSet::GetDemodulatorFilterShift method to determine the current demodulator filter shift.


ICohG65DDCDeviceSet::GetDemodulatorFilterShift

Retrieves the current shift of the demodulator filter for the specified device.

C/C++ declaration

int GetDemodulatorFilterShift(uint32_t DeviceIndex,int32_t *Shift);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetDemodulatorFilterLength

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

int SetDemodulatorFilterLength(uint32_t DeviceIndex,uint32_t Length);

Parameters

DeviceIndex
[in] Specifies the 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 a multiple of 8, greater than or equal to 64 and less than or equal to 32768. If it is not a multiple of 8, the method rounds it up to nearest multiple of 8.

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, check errno.

Remarks

Increasing the filter length increases the filter steepness and may increase CPU usage.

Use the ICohG65DDCDeviceSet::GetDemodulatorFilterLength method to determine the current length of the demodulator filter.


ICohG65DDCDeviceSet::GetDemodulatorFilterLength

Retrieves the current length of the demodulator filter for the specified device.

C/C++ declaration

int GetDemodulatorFilterLength(uint32_t DeviceIndex,uint32_t *Length);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetDemodulatorMode

Sets the demodulator mode of the specified device.

C/C++ declaration

int SetDemodulatorMode(uint32_t DeviceIndex,uint32_t Mode);

Parameters

DeviceIndex
[in] Specifies the 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:

ValueMeaning
G65DDC_MODE_AMAmplitude modulation
G65DDC_MODE_AMSAmplitude modulation
G65DDC_MODE_LSBLower sideband modulation
G65DDC_MODE_USBUpper sideband modulation
G65DDC_MODE_DSBDouble sideband modulation
G65DDC_MODE_ISBIndependent sideband modulation
G65DDC_MODE_CWContinuous wave
G65DDC_MODE_FMFrequency modulation

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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetDemodulatorMode method to retrieve the current demodulator mode.


ICohG65DDCDeviceSet::GetDemodulatorMode

Retrieves the current demodulator mode of the specified device.

C/C++ declaration

int GetDemodulatorMode(uint32_t DeviceIndex,uint32_t *Mode);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetDemodulatorFrequency

Sets the relative center frequency of the demodulator for the specified device.

C/C++ declaration

int SetDemodulatorFrequency(uint32_t DeviceIndex,int32_t Frequency);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

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 = faDDC1 + frDDC2 + frDEM

Where faDEM is the absolute center frequency of the demodulator in Hz, faDDC1 is the absolute center frequency of the DDC1 in Hz (set using the ICohG65DDCDeviceSet::SetDDC1Frequency method), frDDC2 is the relative center frequency of DDC2 of in Hz (set using the ICohG65DDCDeviceSet::SetDDC2Frequency) and frDEM is the relative center frequency of the demodulator in Hz (set using ICohG65DDCDeviceSet::SetDemodulatorFrequency).

The absolute center frequency of the demodulator is the real-world frequency that you are listening to.

Use the ICohG65DDCDeviceSet::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:

ICohG65DDCDeviceSet *DeviceSet; //Interface of the G65DDC device set object, created using the CreateInstance function

//1. method
DeviceSet->SetRange(G65DDC_RANGE_1); //Set active receiver's input to range 1 (0 - 88 MHz)
DeviceSet->SetDDC1Frequency(11010000);
DeviceSet->SetDDC2Frequency(0,0);
DeviceSet->SetDemodulatorFrequency(0,0);

//2. method
DeviceSet->SetRange(G65DDC_RANGE_1);
DeviceSet->SetDDC1Frequency(11000000);
DeviceSet->SetDDC2Frequency(0,10000);
DeviceSet->SetDemodulatorFrequency(0,0);

//3. method
DeviceSet->SetRange(G65DDC_RANGE_1);
DeviceSet->SetDDC1Frequency(11020000);
DeviceSet->SetDDC2Frequency(0,-5000);
DeviceSet->SetDemodulatorFrequency(0,-5000);

ICohG65DDCDeviceSet::hGetDemodulatorFrequency

Retrieves the current relative center frequency of the demodulator for the specified device.

C/C++ declaration

int GetDemodulatorFrequency(uint32_t DeviceIndex,int32_t *Frequency);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetDemodulatorParam

Sets a parameter of demodulation for the specified device.

C/C++ declaration

int SetDemodulatorParam(uint32_t DeviceIndex,uint32_t Code,const void *Buffer,uint32_t BufferSize);

Parameters

DeviceIndex
[in] Specifies the 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:

ValueMeaning
G65DDC_DEMODULATOR_PARAM_AMS_SIDE_BAND

Side band for synchronous AM demodulation.

The Buffer parameter has to be pointer to an uint32_t variable, and the BufferSize parameter has to be sizeof(uint32_t).

The value of the variable pointed to by the Buffer parameter can be one of the following:

G65DDC_SIDE_BAND_LOWER
AMS demodulator will use lower sideband

G65DDC_SIDE_BAND_UPPER
AMS demodulator will use upper sideband

G65DDC_SIDE_BAND_BOTH
AMS demodulator will use both side bands.

G65DDC_DEMODULATOR_PARAM_AMS_CAPTURE_RANGE

Capture range of the synchronous AM demodulator.

The Buffer parameter has to be pointer to a G65DDC_AMS_CAPTURE_RANGE structure, and the BufferSize parameter has to be sizeof(G65DDC_AMS_CAPTURE_RANGE).

G65DDC_DEMODULATOR_PARAM_CW_FREQUENCY

CW tone frequency

The Buffer parameter has to be pointer to a int32_t variable, and the BufferSize parameter has to be sizeof(int32_t).

The value of the variable pointed to by the Buffer parameter is the CW tone frequency in Hz.

G65DDC_DEMODULATOR_PARAM_DSB_SIDE_BAND

Side band for DSB demodulation.

The Buffer parameter has to be pointer to an uint32_t variable, and the BufferSize parameter has to be sizeof(uint32_t).

The value of the variable pointed to by the Buffer parameter can be one of the following:

G65DDC_SIDE_BAND_LOWER
DSB demodulator will use lower sideband

G65DDC_SIDE_BAND_UPPER
DSB demodulator will use upper sideband

G65DDC_SIDE_BAND_BOTH
DSB demodulator will use both side bands.

G65DDC_DEMODULATOR_PARAM_ISB_SIDE_BAND

Side band for ISB demodulation.

The Buffer parameter has to be pointer to an uint32_t variable, and the BufferSize parameter has to be sizeof(uint32_t).

The value of the variable pointed to by the Buffer parameter can be one of the following:

G65DDC_SIDE_BAND_LOWER
ISB demodulator will use lower sideband

G65DDC_SIDE_BAND_UPPER
ISB demodulator will use upper sideband

G65DDC_SIDE_BAND_BOTH
ISB demodulator will use both side bands.

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, check errno.

ICohG65DDCDeviceSet::GetDemodulatorParam

Retrieves a parameter of demodulation for the specified device.

C/C++ declaration

int GetDemodulatorParam(uint32_t DeviceIndex,uint32_t Code,void *Buffer,uint32_t BufferSize);

Parameters

DeviceIndex
[in] Specifies the 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 ICohG65DDCDeviceSet::SetDemodulatorParam.
Buffer
[out] Pointer to a buffer which 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, check errno.

ICohG65DDCDeviceSet::GetDemodulatorState

Retrieves information about the current demodulator state of the specified device.

C/C++ declaration

int GetDemodulatorState(uint32_t DeviceIndex,uint32_t Code,void *Buffer,uint32_t BufferSize);

Parameters

DeviceIndex
[in] Specifies the 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:

ValueMeaning
G65DDC_DEMODULATOR_STATE_AMS_LOCK

Lock state of synchronous AM demodulation.

The Buffer parameter has to be pointer to a int variable, and the BufferSize parameter has to be sizeof(int).

The received value is non-zero if synchronous AM demodulator is locked to signal, and zero if it is not locked.

G65DDC_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).

G65DDC_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).

G65DDC_DEMODULATOR_STATE_DSB_LOCK

Lock state of DSB demodulation.

The Buffer parameter has to be pointer to a int variable, and the BufferSize parameter has to be sizeof(int).

The received value is non-zero if DSB demodulator is locked to signal, and zero if it is not locked.

G65DDC_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).

G65DDC_DEMODULATOR_STATE_TUNE_ERROR

Estimated tune error in Hz.

The Buffer parameter has to be pointer to an int32_t variable, and the BufferSize parameter has to be sizeof(int32_t).

The received value is the difference between demodulator frequency and the frequency of the received signal. Subtract the returned tune error from the demodulator frequency to get the frequency of the received signal. Tune error is relative to center of the demodulator and it can be negative.

G65DDC_DEMODULATOR_STATE_FM_DEVIATION

Estimated frequency deviation in Hz.

The Buffer parameter has to be pointer to an uint32_t variable, and the BufferSize parameter has to be sizeof(uint32_t).

Buffer
[out] Pointer to a buffer which 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, check errno.

ICohG65DDCDeviceSet::StartAudio

Starts audio streaming for the specified device.

C/C++ declaration

int StartAudio(uint32_t DeviceIndex,uint32_t SampleSetsPerBuffer);

Parameters

DeviceIndex
[in] Specifies the index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.
SampleSetsPerBuffer
[in] Specifies the number of sample sets in each buffer passed to the ICohG65DDCDeviceSetCallback::CohG65DDC_AudioStreamCallback callback. The value has to be a multiple of 64 greater than zero. If it is zero, the ICohG65DDCDeviceSet::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, check errno.

Remarks

Before ICohG65DDCDeviceSet::StartAudio is used, the G65DDC devices have to be turned on using the ICohG65DDCDeviceSet::SetPower method, DDC1 streaming has to be started using the ICohG65DDCDeviceSet::StartDDC1 method and DDC2 streaming has to be started using the ICohG65DDCDeviceSet::StartDDC2 method, otherwise ICohG65DDCDeviceSet::StartAudio fails.

If the audio streaming of the specified device is already running, ICohG65DDCDeviceSet::StartAudio fails.

Use the ICohG65DDCDeviceSet::StopAudio method to stop audio streaming.

Decreasing the value of the SampleSetsPerBuffer parameter decreases latency and may increase CPU usage. Increasing the value of the SampleSetsPerBuffer parameter increases latency and may decrease CPU usage.


ICohG65DDCDeviceSet::StopAudio

Stops audio streaming for the specified device.

C/C++ declaration

int StopAudio(uint32_t DeviceIndex);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

If audio streaming is not active, ICohG65DDCDeviceSet::StopAudio does nothing.

The ICohG65DDCDeviceSetCallback::CohG65DDC_AudioStreamCallback callback is not called after ICohG65DDCDeviceSet::StopAudio returns.


ICohG65DDCDeviceSet::SetAudioGain

Sets fixed audio gain of the specified device.

C/C++ declaration

int SetAudioGain(uint32_t DeviceIndex,double Gain);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetAudioGain method to retrieve the current audio gain.

ICohG65DDCDeviceSet:GetAudioGain

Retrieves the current fixed audio gain of the specified device.

C/C++ declaration

int GetAudioGain(uint32_t DeviceIndex,double *Gain);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetAudioFilter

Enables or disables the audio filter of the specified device.

C/C++ declaration

int SetAudioFilter(uint32_t DeviceIndex,int Enabled);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetAudioFiler method to retrieve the current state of the audio filter.

ICohG65DDCDeviceSet::GetAudioFilter

Retrieves the current state of the audio filter for the specific device.

C/C++ declaration

int GetAudioFilter(uint32_t DeviceIndex,int *Enabled);

Parameters

DeviceIndex
[in] Specifies the 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 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, check errno.

ICohG65DDCDeviceSet::SetAudioFilterParams

Sets the parameters of the audio filter for the specified device.

C/C++ declaration

int SetAudioFilterParams(uint32_t DeviceIndex,uint32_t CutOffLow,uint32_t CutOffHigh,double Deemphasis);

Parameters

DeviceIndex
[in] Specifies the 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 the filter's passband, it can be from the range of 0 to 23999 Hz. The value has to be less than 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 the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetAudioFilerParams method to retrieve the current parameters of the audio filter.

ICohG65DDCDeviceSet::GetAudioFilterParams

Retrieves the current parameters of the audio filter for the specified device.

C/C++ declaration

int GetAudioFilterParams(uint32_t DeviceIndex,uint32_t *CutOffLow,uint32_t *CutOffHigh,double *Deemphasis);

Parameters

DeviceIndex
[in] Specifies the 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 which 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 which 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 which 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, check errno.

ICohG65DDCDeviceSet::SetAudioFilterLength

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

int SetAudioFilterLength(uint32_t DeviceIndex,uint32_t Length);

Parameters

DeviceIndex
[in] Specifies the 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 8, greater than or equal to 64 and less than or equal to 32768. If it is not a multiple of 8, the method rounds it up to nearest multiple of 8.

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, check errno.

Remarks

Increasing the filter length increases the filter steepness and may increase CPU usage.

Use the ICohG65DDCDeviceSet::GetAudioFilterLength method to determine the current length of the audio filter.


ICohG65DDCDeviceSet::GetAudioFilterLength

Retrieves the current audio filter length of the specified device.

C/C++ declaration

int GetAudioFilterLength(uint32_t DeviceIndex,uint32_t *Length);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetVolume

Sets the audio volume of the specified device.

C/C++ declaration

int SetVolume(uint32_t DeviceIndex,BYTE Volume);

Parameters

DeviceIndex
[in] Specifies the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetVolume method to retrieve the current volume.


ICohG65DDCDeviceSet::GetVolume

Retrieve the current volume of the specified device.

C/C++ declaration

int GetVolume(uint32_t DeviceIndex,BYTE *Volume);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetMute

Mutes or unmutes the audio of the specified device.

C/C++ declaration

int SetMute(uint32_t DeviceIndex,int Mute);

Parameters

DeviceIndex
[in] Specifies the 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 the 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, check errno.

Remarks

Use the ICohG65DDCDeviceSet::GetMute method to retrieve the current mute state.


ICohG65DDCDeviceSet::GetMute

Retrieves the current mute state of the specified device.

C/C++ declaration

int GetMute(uint32_t DeviceIndex,int *Mute);

Parameters

DeviceIndex
[in] Specifies the 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 which 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, check errno.

ICohG65DDCDeviceSet::SetDAC

Enables or disables playing of the demodulated audio signal from the specified device on the its audio output connector.

C/C++ declaration

int SetDAC(uint32_t DeviceIndex,int Enabled);

Parameters

DeviceIndex
[in] Specifies the 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 playing of the demodulated audio signal on the audio output connector. If this parameter is non-zero, the audio signal from the specified device is played on its audio output connector. If the parameter is zero, the audio signal is not played on the audio output connector.

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, check errno.

Remarks

The audio output connector is optional. The following example shows how to determine whether the receiver includes the audio output connector:
    G65DDC_DEVICE_INFO DeviceInfo;
    ICohG65DDCDeviceSet *DeviceSet; //Interface of the G65DDC device set object, created using CreateInstance function
    uint32_t DeviceIndex; //Index of the receiver in the device set
    
    DeviceSet->GetDeviceInfo(DeviceIndex,&DeviceInfo);
    
    if(DeviceInfo.Flags & G65DDC_FLAGS_AUDIO_OUTPUT)
    {
        //the receiver includes audio output connector
    }
    else
    {
        //the receiver is without an audio output connector
    }

ICohG65DDCDeviceSet::GetDAC

Determines whether playing of the demodulated audio signal from the specified device on its audio output connector is enabled or disabled.

C/C++ declaration

int GetDAC(uint32_t DeviceIndex,int *Enabled);

Parameters

DeviceIndex
[in] Specifies the 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 as to whether playing of the audio signal from the specified device on its audio output connector is enabled or disabled. The value is non-zero if it 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, check errno.

ICohG65DDCDeviceSet::GetSpectrumCompensation

Determines the compensation data for the frequency spectrum computed from the DDC1 or DDC2 signal or ADC snapshots. It is used to convert relative amplitudes in dB to absolutes ones in dBm.

C/C++ declaration

int GetSpectrumCompensation(uint32_t DeviceIndex,int32_t CenterFrequency,uint32_t Bandwidth,float *Buffer,uint32_t Count);

Parameters

DeviceIndex
[in] Specifies the 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.
Bandwidth
[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 the number 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, check errno.

Remarks

The following example shows how to use the ICohG65DDCDeviceSet::GetSpectrumCompensation method in ICohG65DDCDeviceSetCallback::CohG65DDC_DDC2StreamCallback callback:


//The following is a declaration of a function which computes FFT from I/Q signal stored in
//the buffer pointed to be the Input parameter. The result is stored in complex form in the buffer
//pointed to by the Output parameter. The size of the FFT is given by the Size parameter.
//The example uses 2048 bins FFT.
void FFT(float *Output,const float *Input,int Size);

ICohG65DDCDeviceSet *DeviceSet; //Interface to G65DDC device set object
int32_t AbsDDC2Frequency; //Absolute frequency of the DDC2
int32_t RelDDC2Frequency; //Relative frequency of the DDC2
int32_t DDC1Frequency; //DDC1 frequency
G65DDC_DDC_INFO DDC2Info; //Information about the current DDC type of the DDC2
float FFTBuffer[2*2048]; //Buffer for FFT result
float Compensation[2048]; //Buffer for compensation data
uint32_t FirstBin,LastBin; //the first and last bins in the FFT of the useful DDC2 band
MY_CALLBACK_OBJECT MyCallbackObject; //User defined callback object implementing methods of ICohG65DDCDeviceSetCallback interface

Code before...

//Retrieve frequency of the DDC1
DeviceSet->GetDDC1Frequency(&DDC1Frequency);

//Retrieve relative frequency of the DDC2 for device 0
DeviceSet->GetDDC2Frequency(0,&RelDDC2Frequency);

//Calculate absolute frequency of the DDC2
AbsDDC2Frequency=DDC1Frequency+RelDDC2Frequency;

//Retrieve DDC type information of the DDC2
DeviceSet->GetDDC2(NULL,&DDC2Info);

//Retrieve compensation data for device 0
DeviceSet->GetSpectrumCompensation(0,AbsDDC2Frequency,DDC2Info.SampleRate,Compensation,2048);
//In this case the Bandwidth 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 ICohG65DDCDeviceSet::SetDDC1Frequency or ICohG65DDCDeviceSet::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 MyDDC2StreamCallback 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 device 0
//The SamplesPerBuffer parameter is set to 2048 which is size of the FFT to simplify
//the example.
DeviceSet->StartDDC2(0,2048);

Code after...
    
void MY_CALLBACK_OBJECT::CohG65DDC_DDC2StreamCallback(ICohG65DDCDeviceSet *DeviceSet,uint32_t DeviceIndex,const float *Buffer,uint32_t Count)
{
 uint32_t 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.
}


ICohG65DDCDeviceSet::SetCallback

Registers user-defined functions as callback functions called by the API.

C/C++ declaration

int SetCallback(ICohG65DDCDeviceSetCallback *Callbacks);

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 ICohG65DDCDeviceSet::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, check errno.