Programming Information for WiNRADiO G35DDC HF receiver in coherent mode.

The G35DDC API SDK is implemented as a dynamic library (libg35ddcapi.so) for 32-bit i386 and 64-bit x86_64 platforms. It provides object-oriented and non-object-oriented interfaces to control a set of G35DDC devices in coherent mode. This document describes the non-object-oriented interface. The libg35ddcapi.so library exports several functions which makes it possible to control G35DDC 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 set of G35DDC receivers can be controlled from a single user thread only.

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

Processing chain block diagram of G35DDC device set in coherent mode

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

Simplified block diagram of G35DDC processing chain
Built-in test Built-in test Built-in test Attenuator Preselectors Preamplifier Noise blanker IF 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 Attenuator Preselectors Preamplifier Noise blanker IF 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 Attenuator Preselectors Preamplifier Noise blanker IF 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 G35DDC devices in coherent mode.
Phase-coherent parts of the device set are in the red rectangles.

Using WiNRADiO G35DDC API

Loading API

The libg35ddcapi.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 handles to G35DDC device sets returned by the CohOpenDeviceSet function must be closed by the CohCloseDeviceSet function, otherwise the application can enter an unpredictable state.

The following source code shows how to load the API.

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

COH_G35DDC_OPEN_DEVICE_SET CohOpenDeviceSet;
COH_G35DDC_CLOSE_DEVICE_SET CohCloseDeviceSet;
void *API;

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

    if(API!=NULL)
    {
        //Retrieving addresses of used API functions
        CohOpenDeviceSet=(COH_G35DDC_OPEN_DEVICE_SET)dlsym(API,"CohOpenDeviceSet");
        CohCloseDeviceSet=(COH_G35DDC_CLOSE_DEVICE_SET)dlsym(API,"CohCloseDeviceSet");

        //Here place code that uses the API

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

List of available G35DDC device sets in coherent mode

The G35DDC API provides the CohGetDeviceSetList function which returns list of available G35DDC device sets which can be open using the CohOpenDeviceSet function.

The following source code produces a list of serial numbers for the G35DDC devices of available device sets.

#include <stdio.h>
#include <stdint.h>
#include <dlfcn.h>
#include <stdlib.h>
#include <errno.h>
#include "g35ddcapi.h"

COH_G35DDC_GET_DEVICE_SET_LIST CohGetDeviceSetList;
COH_G35DDC_FREE_DEVICE_SET_LIST CohFreeDeviceSetList;
void *API;

void main(void)
{
 uint32_t i,j;
 COH_G35DDC_DEVICE_SET_LIST *DeviceSetList;

    //Loading the API
    API=dlopen("libg35ddcapi.so",RTLD_LAZY);

    if(API!=NULL)
    {
        //Retrieving address of the CohGetDeviceSetList and CohFreeDeviceSetList functions
        CohGetDeviceSetList=(COH_G35DDC_GET_DEVICE_SET_LIST)dlsym(API,"CohGetDeviceSetList");
        CohFreeDeviceSetList=(COH_G35DDC_FREE_DEVICE_SET_LIST)dlsym(API,"CohFreeDeviceSetList");
        
        DeviceSetList=CohGetDeviceSetList();
        
        if(DeviceSetList!=NULL)
        {            
            if(DeviceSetList->DeviceSetCount!=0)
            {
                printf("Available G35DDC device set count=%d\n",DeviceSetList->DeviceSetCount);
                                
                for(i=0;i<DeviceSetList->DeviceSetCount;i++)
                {
                    printf("Device set %u:\n",i);
                    printf("\tNumber of devices in the set: %u\n",DeviceSetList->DeviceSet[i].DeviceCount);
                    
                    for(j=0;j<DeviceSetList->DeviceSet[i].DeviceCount;j++)
                    {
                        printf("\t\t%u: SN: %s\n",j,DeviceSetList->DeviceSet[i].DeviceInfo[j].SerialNumber);
                    }
                }                
            }
            else
            {
                printf("No available G35DDC device set has been found.\n");
            }
            
            //free memory
            CohFreeDeviceSetList(DeviceSetList);
        }
        else
        {
            printf("CohGetDeviceSetList failed with error %d\n",errno);
        }

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

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

Opening G35DDC device set

G35DDC device set has to be open before it can be controlled. The API provides the CohOpenDeviceSet function to open device set of interconnected G35DDC devices in coherent mode.

The following source code shows how to open the first available G35DDC device set.

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

COH_G35DDC_OPEN_DEVICE_SET CohOpenDeviceSet;
COH_G35DDC_CLOSE_DEVICE_SET CohCloseDeviceSet;
void *API;

void main(void)
{  
 int32_t hDeviceSet;
 
    //Loading the API
    API=dlopen("libg35ddcapi.so",RTLD_LAZY);

    if(API!=NULL)
    {
        //Retrieving addresses of the CohOpenDeviceSet and CohCloseDeviceSet API functions
        CohOpenDeviceSet=(COH_G35DDC_OPEN_DEVICE_SET)dlsym(API,"CohOpenDeviceSet");
        CohCloseDeviceSet=(COH_G35DDC_CLOSE_DEVICE_SET)dlsym(API,"CohCloseDeviceSet");

        //Opening the first available G35DDC device set using predefined G35DDC_OPEN_FIRST_SET constant
        hDeviceSet=CohOpenDeviceSet(G35DDC_OPEN_FIRST_SET,0);
        
        if(hDeviceSet>=0)
        {
            //Here place code that works with the open G35DDC device set            
            
            //Closing handle to opened G35DDC device set
            CohCloseDeviceSet(hDeviceSet);
        }
        else
        {
            printf("CohOpenDeviceSet failed with error %d\n",errno);
        }

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

COH_G35DDC_OPEN_DEVICE_SET CohOpenDeviceSet;
COH_G35DDC_CLOSE_DEVICE_SET CohCloseDeviceSet;
COH_G35DDC_GET_DEVICE_SET_LIST CohGetDeviceSetList;
COH_G35DDC_FREE_DEVICE_SET_LIST CohFreeDeviceSetList;
void *API;

void main(void)
{  
 int32_t hDeviceSet;
 COH_G35DDC_DEVICE_SET_LIST *DeviceSetList;
 
    //Loading the API
    API=dlopen("libg35ddcapi.so",RTLD_LAZY);

    if(API!=NULL)
    {
        //Retrieving addresses of API functions
        CohOpenDeviceSet=(COH_G35DDC_OPEN_DEVICE_SET)dlsym(API,"CohOpenDeviceSet");
        CohCloseDeviceSet=(COH_G35DDC_CLOSE_DEVICE_SET)dlsym(API,"CohCloseDeviceSet");
        CohGetDeviceSetList=(COH_G35DDC_GET_DEVICE_SET_LIST)dlsym(API,"CohGetDeviceSetList");
        CohFreeDeviceSetList=(COH_G35DDC_FREE_DEVICE_SET_LIST)dlsym(API,"CohFreeDeviceSetList");

        DeviceSetList=CohGetDeviceSetList();
        
        if(DeviceSetList!=NULL)
        {
            if(DeviceSetList->DeviceSetCount!=0)
            {
                //Opening the first available G35DDC device set in the list
                hDeviceSet=CohOpenDeviceSet(DeviceSetList->DeviceSet[0].DeviceInfo,DeviceSetList->DeviceSet[0].DeviceCount);
                
                if(hDeviceSet>=0)
                {
                    //Here place code that works with the open G35DDC device set            
                    
                    //Closing handle to opened G35DDC device set
                    CohCloseDeviceSet(hDeviceSet);
                }
                else
                {
                    printf("CohOpenDeviceSet failed with error %d\n",errno);
                }
            }
            else
            {
                printf("No available G35DDC device set has been found.\n");
            }
            
            CohFreeDeviceSetList(DeviceSetList);
        }
        else
        {
            printf("CohGetDeviceSetList failed with error %d\n",errno);
        }

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

CohGetDeviceSetList

The CohGetDeviceSetList function returns information about the available G35DDC device sets that can be open.

C/C++ declaration

COH_G35DDC_DEVICE_SET_LIST* CohGetDeviceSetList(void);

Address retrieval

COH_G35DDC_GET_DEVICE_SET_LIST CohGetDeviceSetList=(COH_G35DDC_GET_DEVICE_SET_LIST)dlsym(hAPI,"CohGetDeviceSetList");

Parameters

None

Return value

If the function succeeds, the return value is non-zero pointer to a structure which describes list of available sets of interconnected G35DDC devices.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

If the returned list of available device sets is no longer needed, memory used by this list has to be freed using the CohFreeDeviceSetList function.


CohFreeDeviceSetList

The CohFreeDeviceSetList function frees memory allocated by the CohGetDeviceSetList function. This memory is used to store list of available G35DDC device sets.

C/C++ declaration

void CohFreeDeviceSetList(COH_G35DDC_DEVICE_SET_LIST *DeviceSetList);

Address retrieval

COH_G35DDC_FREE_DEVICE_SET_LIST CohFreeDeviceSetList=(COH_G35DDC_FREE_DEVICE_SET_LIST)dlsym(hAPI,"CohFreeDeviceSetList");

Parameters

DeviceSetList
[in] Pointer to data structure returned by a previous call to the CohGetDeviceSetList function. This parameter cannot be NULL.

CohOpenDeviceSet

Opens G35DDC device set.

C/C++ declaration

int32_t CohOpenDeviceSet(G35DDC_DEVICE_INFO *DeviceInfos,uint32_t Count);

Address retrieval

COH_G35DDC_OPEN_DEVICE_SET CohOpenDeviceSet=(COH_G35DDC_OPEN_DEVICE_SET)dlsym(hAPI,"CohOpenDeviceSet");

Parameters

DeviceInfos
[in] Pointer to array of G35DDC_DEVICE_INFO structures which contains information about all the devices in the device set to be open. Number of items in the array is given by the Count parameter. Order of device info structures in the array has to correspond to hardware interconnect of G35DDC devices. Array of device info structures and its size can be obtained from the list of device set provided by the CohGetDeviceSetList function. The example above shows how to do it.

It is possible to use one of the following predefined values instead of pointer to the array:
ValueMeaning
G35DDC_OPEN_FIRST_SETThis function opens the first available G35DDC device set. The Count parameter is ignored, the number of interconnected devices is determined automatically.
G35DDC_OPEN_DEMO_SETThis function opens a demo G35DDC device set. This allows developers to work with the API without physical G35DDC devices. The Count parameter specifies the number of demo receivers in the set and it can vary from 1 to 8.
Count
[in] Specifies the number of items in the array pointed to by the DeviceInfos parameter.

Return value

If the function succeeds, the return value is handle to the specified G35DDC device set. This handle can only be used with functions of G35DDC API.
If the function fails, the return value is negative. To get extended error information, check errno.

Remarks

The CohOpenDeviceSet function can be called from any user thread, the returned handle can only be used in the same thread, otherwise application can become to unpredictable state.

Use the CohCloseDeviceSet function to close G35DDC device set handle returned by CohOpenDeviceSet.

The order of devices in the device set corresponds to the hardware interconnection of the G35DDC devices. Each individual device in the device set has its own constant index which does not change while the hardware G35DDC device interconnect remains the same. This index is used in some API function to access specific device of the device set. Index of the first device is 0, index of the second device is 1, etc..


CohCloseDeviceSet

Closes G35DDC device set.

C/C++ declaration

int CohCloseDeviceSet(int32_t hDeviceSet);

Address retrieval

COH_G35DDC_CLOSE_DEVICE_SET CohCloseDeviceSet=(COH_G35DDC_CLOSE_DEVICE_SET)dlsym(hAPI,"CohCloseDeviceSet");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohIsConnected

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

C/C++ declaration

int CohIsConnected(int32_t hDeviceSet);

Address retrieval

COH_G35DDC_IS_CONNECTED CohIsConnected=(COH_G35DDC_IS_CONNECTED)dlsym(hAPI,"CohIsConnected");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.

Return value

This function returns a non-zero value if all the devices in the set are still connected.
If a device is disconnected or the function fails, the return value is zero. To determine if the function failed, check errno. errno is equal to zero if a device of the device set is disconnected. If errno is non-zero the CohIsConnected failed.

Remarks

If any device from the set is determined as disconnected, the device set is no longer usable and should be closed using CohCloseDeviceSet function.

CohGetDeviceCount

Retrieves the number of G35DDC devices in the device set.

C/C++ declaration

int CohGetDeviceCount(int32_t hDeviceSet,uint32_t *Count);

Address retrieval

COH_G35DDC_GET_DEVICE_COUNT CohGetDeviceCount=(COH_G35DDC_GET_DEVICE_COUNT)dlsym(hAPI,"CohGetDeviceCount");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Count
[out] Pointer to a variable that receives the number of G35DDC devices in the device set. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohGetDeviceInfo

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

C/C++ declaration

int CohGetDeviceInfo(int32_t hDeviceSet,uint32_t DeviceIndex,G35DDC_DEVICE_INFO *Info);

Address retrieval

COH_G35DDC_GET_DEVICE_INFO CohGetDeviceInfo=(COH_G35DDC_GET_DEVICE_INFO)dlsym(hAPI,"CohGetDeviceInfo");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set. Order of the devices corresponds to the hardware interconnection of physical G35DDC devices.
Info
[out] Pointer to a G35DDC_DEVICE_INFO structure to be filled with information about the device. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetDeviceCount function to determine the number of devices in the device set.

CohGetDeviceInfos

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

C/C++ declaration

int CohGetDeviceInfos(int32_t hDeviceSet,G35DDC_DEVICE_INFO *Infos,uint32_t *InfoCount);

Address retrieval

COH_G35DDC_GET_DEVICE_INFOS CohGetDeviceInfos=(COH_G35DDC_GET_DEVICE_INFOS)dlsym(hAPI,"CohGetDeviceInfos");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Infos
[out] Pointer to array of G35DDC_DEVICE_INFO structures to be filled with information about device in the device set.
Order of the device infos in the array corresponds to hardware interconnection of physical G35DDC devices.
InfoCount
[in, out] Pointer to a variable that specifies the size of the array (number of items in the array) pointed to by the Infos parameter. When the function 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 function 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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetDeviceCount function to determine number of devices in the device set.

CohSetPower

Turns on or off all the G35DDC devices in the device set.

C/C++ declaration

int CohSetPower(int32_t hDeviceSet,int Power);

Address retrieval

COH_G35DDC_SET_POWER CohSetPower=(COH_G35DDC_SET_POWER)dlsym(hAPI,"CohSetPower");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Power
[in] Specifies whether to turn on or off the devices. If this parameter is non-zero all the device in the device set are turned on, if it is zero then all the devices are turned off.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

If CohSetPower turns the devices off, all the running streams are stopped.

Use the CohGetPower function to determine the current power state of devices in the device set.


CohGetPower

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

C/C++ declaration

int CohGetPower(int32_t hDeviceSet,int *Power);

Address retrieval

COH_G35DDC_GET_POWER CohGetPower=(COH_G35DDC_GET_POWER)dlsym(hAPI,"CohGetPower");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Power
[out] Pointer to a variable that receives current power state of the device set. If it is non-zero, the devices are turned on. If it is zero the devices are turned off. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetAttenuator

Sets the input attenuator.

C/C++ declaration

int CohSetAttenuator(int32_t hDeviceSet,uint32_t Attenuator);

Address retrieval

COH_G35DDC_SET_ATTENUATOR CohSetAttenuator=(COH_G35DDC_SET_ATTENUATOR)dlsym(hAPI,"CohSetAttenuator");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Attenuator
[in] Value that specifies attenuation level in dB. Possible values are: 0, 3, 6, 9, 12, 15, 18, 21. If the value is not from the list, the CohSetAttenuator function rounds the value to the nearest lower one.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetAttenuator function to determine the current setting of the attenuator.

CohGetAttenuator

Retrieves the current setting of the attenuator.

C/C++ declaration

int CohGetAttenuator(int32_t hDeviceSet,uint32_t *Attenuator);

Address retrieval

COH_G35DDC_GET_ATTENUATOR CohGetAttenuator=(COH_G35DDC_GET_ATTENUATOR)dlsym(hAPI,"CohGetAttenuator");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Attenuator
[out] Pointer to a variable that receives the current attenuation level. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetPreselectors

Controls the band pass filter at RF input.

C/C++ declaration

int CohSetPreselectors(int32_t hDeviceSet,uint32_t Low,uint32_t High);

Address retrieval

COH_G35DDC_SET_PRESELECTORS CohSetPreselectors=(COH_G35DDC_SET_PRESELECTORS)dlsym(hAPI,"CohSetPreselectors");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Low
[in] Specifies the cut-off low frequency of the filter in Hz. Possible values are: 0, 850000, 2400000, 5400000, 11800000. If the value is not from the list, the function rounds it to the nearest one.
High
[in] Specifies the cut-off high frequency of the filter in Hz. Possible values are: 3100000, 5400000, 11800000, 23300000, 50000000. If the value is not from the list, the function rounds it to the nearest one.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Value of the Low parameter must not be higher than value of the High parameter, otherwise the function fails.

Use the CohGetPreselectors function to determine the current setting of the preselectors.


CohGetPreselectors

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

C/C++ declaration

int CohGetPreselectors(int32_t hDeviceSet,uint32_t *Low,uint32_t *High);

Address retrieval

COH_G35DDC_GET_PRESELECTORS CohGetPreselectors=(COH_G35DDC_GET_PRESELECTORS)dlsym(hAPI,"CohGetPreselectors");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Low
[out] Pointer to a variable that receives the current the cut-off low frequency of the filter in Hz. This parameter can be NULL if the application does not require this information.
High
[out] Pointer to a variable that receives the current the 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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetPreamp

Enables or disables the RF input preamplifier.

C/C++ declaration

int CohSetPreamp(int32_t hDeviceSet,int Preamp);

Address retrieval

COH_G35DDC_SET_PREAMP CohSetPreamp=(COH_G35DDC_SET_PREAMP)dlsym(hAPI,"CohSetPreamp");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetPreamp function to determine the current state of the preamplifier.


CohGetPreamp

Retrieves the current state of the RF input preamplifier.

C/C++ declaration

int CohGetPreamp(int32_t hDeviceSet,int *Preamp);

Address retrieval

COH_G35DDC_GET_PREAMP CohGetPreamp=(COH_G35DDC_GET_PREAMP)dlsym(hAPI,"CohGetPreamp");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Preamp
[out] Pointer to a variable that receives the current state of the preamplifier. The value is non-zero if the preamplifier is enabled and zero if it is disabled. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetADCNoiseBlanker

Enables or disables the noise blanker on the ADC stream.

C/C++ declaration

int CohSetADCNoiseBlanker(int32_t hDeviceSet,int Enabled);

Address retrieval

COH_G35DDC_SET_ADC_NOISE_BLANKER CohSetADCNoiseBlanker=(COH_G35DDC_SET_ADC_NOISE_BLANKER)dlsym(hAPI,"CohSetADCNoiseBlanker");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Enabled
[in] Specifies whether to enable or disable the noise blanker. If this parameter is non-zero, noise blanker is enabled. If the parameter is zero, noise blanker is disabled.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetADCNoiseBlanker function to determine the current state of the noise blanker.

CohGetADCNoiseBlanker

Retrieves the current ADC noise blanker state.

C/C++ declaration

int CohGetADCNoiseBlanker(int32_t hDeviceSet,int *Enabled);

Address retrieval

COH_G35DDC_GET_ADC_NOISE_BLANKER CohGetADCNoiseBlanker=(COH_G35DDC_GET_ADC_NOISE_BLANKER)dlsym(hAPI,"CohGetADCNoiseBlanker");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Enabled
[out] Pointer to a variable that 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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetADCNoiseBlankerThreshold

Specifies the ADC noise blanker threshold.

C/C++ declaration

int CohSetADCNoiseBlankerThreshold(int32_t hDeviceSet,uint16_t Threshold);

Address retrieval

COH_G35DDC_SET_ADC_NOISE_BLANKER_THRESHOLD CohSetADCNoiseBlankerThreshold=
    (COH_G35DDC_SET_ADC_NOISE_BLANKER_THRESHOLD)dlsym(hAPI,"CohSetADCNoiseBlankerThreshold");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
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 CohSetADCNoiseBlanker function.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetADCNoiseBlankerThreshold function to retrieve the current threshold of the noise blanker.

CohGetADCNoiseBlankerThreshold

Determines the ADC noise blanker threshold.

C/C++ declaration

int CohGetADCNoiseBlankerThreshold(int32_t hDeviceSet,uint16_t *Threshold);

Address retrieval

COH_G35DDC_GET_ADC_NOISE_BLANKER_THRESHOLD CohGetADCNoiseBlankerThreshold=
    (COH_G35DDC_GET_ADC_NOISE_BLANKER_THRESHOLD)dlsym(hAPI,"CohGetADCNoiseBlankerThreshold");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Threshold
[out] Pointer to a variable that receives the threshold of ADC noise blanker. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohStartIF

Starts sending of IF snapshots from specific device of the device set.

C/C++ declaration

int CohStartIF(int32_t hDeviceSet,uint32_t DeviceIndex,uint16_t Period);

Address retrieval

COH_G35DDC_START_IF CohStartIF=(COH_G35DDC_START_IF)dlsym(hAPI,"CohStartIF");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Period
[in] Specifies the time interval in milliseconds for how often the IF snapshot is taken and sent to the IFCallback callback function.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

The G35DDC device has to be turned on using the CohSetPower function before use of CohStartIF, otherwise the CohStartIF function fails.


CohStopIF

Stops sending of IF snapshots from specific device of the device set.

C/C++ declaration

int CohStopIF(int32_t hDeviceSet,uint32_t DeviceIndex,);

Address retrieval

COH_G35DDC_STOP_IF CohStopIF=(COH_G35DDC_STOP_IF)dlsym(hAPI,"CohStopIF");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

The IFCallback callback function is not called after CohStopIF returns.


CohSetInverted

Enables or disables frequency spectrum inversion.

C/C++ declaration

int CohSetInverted(int32_t hDeviceSet,int Inverted);

Address retrieval

COH_G35DDC_SET_INVERTED CohSetInverted=(COH_G35DDC_SET_INVERTED)dlsym(hAPI,"CohSetInverted");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohGetInverted

Retrieves the current frequency spectrum inversion setting.

C/C++ declaration

int CohGetInverted(int32_t hDeviceSet,int *Inverted);

Address retrieval

COH_G35DDC_GET_INVERTED CohGetInverted=(COH_G35DDC_GET_INVERTED)dlsym(hAPI,"CohGetInverted");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Inverted
[out] Pointer to a variable that receives 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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohGetDDCInfo

Retrieves information about DDC format.

C/C++ declaration

int CohGetDDCInfo(int32_t hDeviceSet,uint32_t DDCTypeIndex,G3XDDC_DDC_INFO *Info);

Address retrieval

COH_G35DDC_GET_DDC_INFO CohGetDDCInfo=(COH_G35DDC_GET_DDC_INFO)dlsym(hAPI,"CohGetDDCInfo");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DDCTypeIndex
[in] Specifies index of DDC type. For more information, see remarks.
Info
[out] Pointer to a G3XDDC_DDC_INFO structure to be filled with information about DDC type.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetDDC1Count function 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 CohGetDDC1Count.

Use the CohGetDDC1 function to determine the current DDC type index of DDC1 and the CohGetDDC2 function to determine current DDC type of DDC2.


CohGetDDC1Count

Retrieves the number of DDC types supported by DDC1.

C/C++ declaration

int CohGetDDC1Count(int32_t hDeviceSet,uint32_t *Count);

Address retrieval

COH_G35DDC_GET_DDC1_COUNT CohGetDDC1Count=(COH_G35DDC_GET_DDC1_COUNT)dlsym(hAPI,"CohGetDDC1Count");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Count
[out] Pointer to a variable that receives the number of DDC types supported by the DDC1. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetDDC1

Sets current DDC type of DDC1.

C/C++ declaration

int CohSetDDC1(int32_t hDeviceSet,uint32_t DDCTypeIndex);

Address retrieval

COH_G35DDC_SET_DDC1 CohSetDDC1=(COH_G35DDC_SET_DDC1)dlsym(hAPI,"CohSetDDC1");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DDCTypeIndex
[in] Specifies index of DDC type to be used in DDC1. It can vary from zero to 'one less than the number of DDC types' of the DDC1.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetDDC1Count function 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 CohGetDDC1Count.

DDC1 streaming must not run when calling CohSetDDC1. In other words, DDC1 streaming which is started using the CohStartDDC1 function has to be stopped using the CohStopDDC1 function before calling of CohSetDDC1, otherwise CohSetDDC1 fails. The CohSetDDC1 function does not start and stop DDC1 streaming, just changes the DDC type of DDC1.

Calling of CohSetDDC1 can change the current DDC type of DDC2 and current bandwidth of demodulator filter, so it is useful to call the CohGetDDC2 and CohGetDemodulatorFilterBandwidth functions immediately after CohSetDDC1 to determine the current DDC type of DDC2 and current bandwidth of the demodulator filter.

Use the CohGetDDC1 function to determine the current DDC type of the DDC1.


CohGetDDC1

Retrieves information about the current DDC type of the DDC1.

C/C++ declaration

int CohGetDDC1(int32_t hDeviceSet,uint32_t *DDCTypeIndex,G3XDDC_DDC_INFO *DDCInfo);

Address retrieval

COH_G35DDC_GET_DDC1 CohGetDDC1=(COH_G35DDC_GET_DDC1)dlsym(hAPI,"CohGetDDC1");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DDCTypeIndex
[out] Pointer to a variable that receives index of current DDC type of the DDC1. This parameter can be NULL if the application does not require this information.
DDCInfo
[out] Pointer to a G3XDDC_DDC_INFO structure to be filled with information about the current DDC type of the DDC1. This parameter can be NULL if the application does not require this information.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Returned DDCTypeIndex can be passed to the CohGetDDCInfo function.

CohSetDDC1Frequency

Sets DDC1 center frequency.

C/C++ declaration

int CohSetDDC1Frequency(int32_t hDeviceSet,uint32_t Frequency);

Address retrieval

COH_G35DDC_SET_DDC1_FREQUENCY CohSetDDC1Frequency=(COH_G35DDC_SET_DDC1_FREQUENCY)dlsym(hAPI,"CohSetDDC1Frequency");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Frequency
[in] Specifies the new center frequency of DDC1 in Hz.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

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

Use the CohGetDDC1Frequency function to determine the current center frequency of DDC1.


CohGetDDC1Frequency

Retrieves the current center frequency of DDC1.

C/C++ declaration

int CohGetDDC1Frequency(int32_t hDeviceSet,uint32_t *Frequency);

Address retrieval

COH_G35DDC_GET_DDC1_FREQUENCY CohGetDDC1Frequency=(COH_G35DDC_GET_DDC1_FREQUENCY)dlsym(hAPI,"CohGetDDC1Frequency");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Frequency
[out] Pointer to a variable that receives the current center frequency of DDC1 in Hz. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetDDC1PhaseShift

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

C/C++ declaration

int CohSetDDC1PhaseShift(int32_t hDeviceSet,uint32_t DeviceIndex,double PhaseShift);

Address retrieval

COH_G35DDC_SET_DDC1_PHASE_SHIFT CohSetDDC1PhaseShift=(COH_G35DDC_SET_DDC1_PHASE_SHIFT)dlsym(hAPI,"CohSetDDC1PhaseShift");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
PhaseShift
[in] Specifies the new phase shift of DDC1 signal in degrees at current DDC1 center frequency. It can vary from -180 to +180 degrees.

Return value

If the function succeeds, the return value is non-zero.
If the function 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 receiver RF inputs.

Use the CohGetDDC1PhaseShift function to retrieve the current phase shift of the DDC1 signal.


CohGetDDC1PhaseShift

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

C/C++ declaration

int CohGetDDC1PhaseShift(int32_t hDeviceSet,uint32_t DeviceIndex,double *PhaseShift);

Address retrieval

COH_G35DDC_GET_DDC1_PHASE_SHIFT CohGetDDC1PhaseShift=(COH_G35DDC_GET_DDC1_PHASE_SHIFT)dlsym(hAPI,"CohGetDDC1PhaseShift");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
PhaseShift
[out] Pointer to a variable that receives the current phase shift of the DDC1 signal in degrees. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohStartDDC1

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

C/C++ declaration

int CohStartDDC1(int32_t hDeviceSet,uint32_t SamplesPerBuffer);

Address retrieval

COH_G35DDC_START_DDC1 CohStartDDC1=(COH_G35DDC_START_DDC1)dlsym(hAPI,"CohStartDDC1");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
SamplesPerBuffer
[in] Specifies the number of I/Q sample sets in each buffer passed to the DDC1StreamCallback callback function. If the current DDC1 type index (specified by the CohSetDDC1 function) is less than or equal to 23 (DDC1 bandwidth <= 4 MHz) the value of the SamplesPerBuffer has to be a multiple of 64. If the current the DDC1 type index is greater than 23 (DDC1 bandwidth > 4 MHz), the SamplesPerBuffers has to be a multiple of 1024. If it is zero, the CohStartDDC1 function fails.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

The G35DDC devices have to be turned on using the CohSetPower function before CohStartDDC1 is used. Otherwise CohStartDDC1 fails.

If the DDC1 streaming is already running before use of CohStartDDC1, CohStartDDC1 restarts the streaming except it was previously started with the same SamplesPerBuffer parameter. In this case CohStartDDC1 does nothing. Restart of DDC1 streaming stops DDC2 and audio streaming in each device in the set. CohStartDDC1 does not restart DDC2 and audio streaming.

Use the CohStopDDC1 function to stop DDC1 streaming.

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


CohStopDDC1

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

C/C++ declaration

int CohStopDDC1(int32_t hDeviceSet);

Address retrieval

COH_G35DDC_STOP_DDC1 CohStopDDC1=(COH_G35DDC_STOP_DDC1)dlsym(hAPI,"CohStopDDC1");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

The CohStopDDC1 function stops all the streaming beyond the DDC1 in the processing chain (DDC2 and audio streaming in all the devices in the set).

The DDC1StreamCallback callback function is not called after CohStopDDC1 returns.


CohGetDDC2

Retrieves information about current DDC type of the DDC2.

C/C++ declaration

int CohGetDDC2(int32_t hDeviceSet,uint32_t *DDCTypeIndex,G3XDDC_DDC_INFO *DDCInfo);

Address retrieval

COH_G35DDC_GET_DDC2 CohGetDDC2=(COH_G35DDC_GET_DDC2)dlsym(hAPI,"CohGetDDC2");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DDCTypeIndex
[out] Pointer to a variable that receives index of current DDC type of the DDC2. This parameter can be NULL if the application does not require this information.
DDCInfo
[out] Pointer to a G3XDDC_DDC_INFO structure to be filled with information about the current DDC type of the DDC2. This parameter can be NULL if the application does not require this information.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

DDC type of DDC2 in each device is the same and depends upon DDC type of DDC1, it cannot be changed by the application directly. The DDC type of DDC2 is equal to the DDC type of DDC1 if DDC type index of DDC1 is less than or equal to 5 (sample rate: 80 kHz, bandwidth: 64 kHz, bits per sample: 32). If the DDC type index of DDC1 is above 5, the DDC type index of DDC2 is always 5. Changing of DDC type of DDC1 can cause a change of DDC type of DDC2, so it is useful to call CohGetDDC2 immediately after the CohSetDDC1 function to determine the current DDC type of DDC2 - if the application needs to know parameters of DDC2.

The BitsPerSample member of the G3XDDC_DDC_INFO structure is not used and it can be ignored for DDC2. I and Q samples in buffers passed to the DDC2StreamCallback and DDC2PreprocessedStreamCallback DDC2 callback functions are always in IEEE float (32 bit, little endian) format.

Returned DDCTypeIndex can be passed to the CohGetDDCInfo function.


CohSetDDC2Frequency

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

C/C++ declaration

int CohSetDDC2Frequency(int32_t hDeviceSet,uint32_t DeviceIndex,int32_t Frequency);

Address retrieval

COH_G35DDC_SET_DDC2_FREQUENCY CohSetDDC2Frequency=(COH_G35DDC_SET_DDC2_FREQUENCY)dlsym(hAPI,"CohSetDDC2Frequency");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Frequency
[in] Specifies the new center frequency of DDC2 in Hz.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

The value of the Frequency parameter is center frequency of the DDC2 relative to center of the DDC1. The value can be negative.

The absolute frequency of the DDC2 is given by the following formula:

faDDC2 = fDDC1 + frDDC2

Where faDDC2 is the absolute center frequency of DDC2, fDDC1 is the center frequency of the DDC1 in Hz (set using the CohSetDDC1Frequency function) and frDDC2 is the relative center frequency of DDC2 in Hz (set using CohSetDDC2Frequency).

Changing of DDC2 'relative frequency' changes the 'absolute frequency' of the DDC2 and demodulator of specified device.

Use the CohGetDDC2Frequency function 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:

int32_t hDeviceSet; //Handle to G35DDC device set returned by the CohOpenDeviceSet function

//1. method
CohSetDDC1Frequency(hDeviceSet,11010000);
CohSetDDC2Frequency(hDeviceSet,0,0);

//2. method, it can be used if bandwidth of DDC2 is less than bandwidth of DDC1
CohSetDDC1Frequency(hDeviceSet,11000000);
CohSetDDC2Frequency(hDeviceSet,0,10000);

//3. method, it can be used if bandwidth of DDC2 is less than bandwidth of DDC1
CohSetDDC1Frequency(hDeviceSet,11020000);
CohSetDDC2Frequency(hDeviceSet,0,-10000);

CohGetDDC2Frequency

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

C/C++ declaration

int CohGetDDC2Frequency(int32_t hDeviceSet,uint32_t DeviceIndex,int32_t *Frequency);

Address retrieval

COH_G35DDC_GET_DDC2_FREQUENCY CohGetDDC2Frequency=(COH_G35DDC_GET_DDC2_FREQUENCY)dlsym(hAPI,"CohGetDDC2Frequency");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Frequency
[out] Pointer to a variable that receives the current relative center frequency of DDC2 in Hz. The returned value can be negative. See remarks of the CohSetDDC2Frequency for information how to calculate the absolute center frequency of DDC2. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohStartDDC2

Starts DDC2 streaming on the specified device.

C/C++ declaration

int CohStartDDC2(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t SamplesPerBuffer);

Address retrieval

COH_G35DDC_START_DDC2 CohStartDDC2=(COH_G35DDC_START_DDC2)dlsym(hAPI,"CohStartDDC2");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
SamplesPerBuffer
[in] Specifies the number of I/Q sample sets in each buffer passed to the DDC2StreamCallback and DDC2PreprocessedStreamCallback callback functions. The value has to be multiple of 64 greater than zero. If it is zero, the CohStartDDC2 function fails. If it is not a multiple of 64, the function rounds it up to nearest multiple of 64.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Before CohStartDDC2 is used, devices of the device set have to be turned on using the CohSetPower function and DDC1 streaming has to be started using the CohStartDDC1 function, otherwise CohStartDDC2 fails.

If the DDC2 streaming for a given device is already running, CohStartDDC2 restarts it except the streaming was previously started with the same SamplesPerBuffer parameter. In this case CohStartDDC2 does nothing. Restart of the DDC2 streaming stops audio streaming for the given device. CohStartDDC2 does not restart audio streaming.

Use the CohStopDDC2 function to stop DDC2 streaming.

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


CohStopDDC2

Stops DDC2 streaming on the specified device.

C/C++ declaration

int CohStopDDC2(int32_t hDeviceSet,uint32_t DeviceIndex);

Address retrieval

COH_G35DDC_STOP_DDC2 CohStopDDC2=(COH_G35DDC_STOP_DDC2)dlsym(hAPI,"CohStopDDC2");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.

Return value

If the function succeeds, the return value is non-zero.
If the function 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, CohStopDDC2 does nothing.

The DDC2StreamCallback and DDC2PreprocessedStreamCallback callback functions are not called when CohStopDDC2 returns.


CohSetDDC2NoiseBlanker

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

C/C++ declaration

int CohSetDDC2NoiseBlanker(int32_t hDeviceSet,uint32_t DeviceIndex,int Enabled);

Address retrieval

COH_G35DDC_SET_DDC2_NOISE_BLANKER CohSetDDC2NoiseBlanker=(COH_G35DDC_SET_DDC2_NOISE_BLANKER)dlsym(hAPI,"CohSetDDC2NoiseBlanker");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetDDC2NoiseBlanker function to determine the current state of the noise blanker.

CohGetDDC2NoiseBlanker

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

C/C++ declaration

int CohGetDDC2NoiseBlanker(int32_t hDeviceSet,uint32_t DeviceIndex,int *Enabled);

Address retrieval

COH_G35DDC_GET_DDC2_NOISE_BLANKER CohGetDDC2NoiseBlanker=(COH_G35DDC_GET_DDC2_NOISE_BLANKER)dlsym(hAPI,"CohGetDDC2NoiseBlanker");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Enabled
[out] Pointer to a variable that receives current state of noise blanker. The value is non-zero if noise blanker is enabled and zero if it is disabled. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetDDC2NoiseBlankerThreshold

Specifies the DDC2 noise blanker threshold of the specified device.

C/C++ declaration

int CohSetDDC2NoiseBlankerThreshold(int32_t hDeviceSet,uint32_t DeviceIndex,double Threshold);

Address retrieval

COH_G35DDC_SET_DDC2_NOISE_BLANKER_THRESHOLD CohSetDDC2NoiseBlankerThreshold=
    (COH_G35DDC_SET_DDC2_NOISE_BLANKER_THRESHOLD)dlsym(hAPI,"CohSetDDC2NoiseBlankerThreshold");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Threshold
[in] Specifies threshold in %.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetDDC2NoiseBlankerThreshold function to retrieve the current threshold of the noise blanker.

CohGetDDC2NoiseBlankerThreshold

Retrieves the DDC2 noise blanker threshold of the specified device.

C/C++ declaration

int CohGetDDC2NoiseBlankerThreshold(int32_t hDeviceSet,uint32_t DeviceIndex,double *Threshold);

Address retrieval

COH_G35DDC_GET_DDC2_NOISE_BLANKER_THRESHOLD CohGetDDC2NoiseBlankerThreshold=
    (COH_G35DDC_GET_DDC2_NOISE_BLANKER_THRESHOLD)dlsym(hAPI,"CohGetDDC2NoiseBlankerThreshold");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Threshold
[out] Pointer to a variable that receives the threshold of the noise blanker. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohGetDDC2NoiseBlankerExcessValue

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

C/C++ declaration

int CohGetDDC2NoiseBlankerExcessValue(int32_t hDeviceSet,uint32_t DeviceIndex,double *Value);

Address retrieval

COH_G35DDC_GET_DDC2_NOISE_BLANKER_EXCESS_VALUE CohGetDDC2NoiseBlankerExcessValue=
    (COH_G35DDC_GET_DDC2_NOISE_BLANKER_EXCESS_VALUE)dlsym(hAPI,"CohGetDDC2NoiseBlankerExcessValue");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Value
[out] Pointer to a variable that receives current excess value in %. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohGetSignalLevel

Determines the current signal level for the specified device.

C/C++ declaration

int CohGetSignalLevel(int32_t hDeviceSet,uint32_t DeviceIndex,float *Peak,float *RMS);

Address retrieval

COH_G35DDC_GET_SIGNAL_LEVEL CohGetSignalLevel=(COH_G35DDC_GET_SIGNAL_LEVEL)dlsym(hAPI,"CohGetSignalLevel");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Peak
[out] Pointer to a variable that receives the current signal level (peak) in Volts. This parameter can be NULL if the application does not require this information.
RMS
[out] Pointer to a variable that receives the current signal level (RMS) in Volts. This parameter can be NULL if the application does not require this information.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

DDC2 streaming has to be active (started using the CohStartDDC2 function) before calling of CohGetSignalLevel, otherwise the returned peak and RMS signal levels are zero.

Signal level is evaluated from the signal after the demodulator filter and before the notch filter (see block diagram), the signal is selected by the demodulator filter.

Signal level is evaluated for each buffer processed by the demodulator filter. Buffer size (signal level evaluation rate) is given by the SamplesPerBuffer parameter of the CohStartDDC2 function.

The DDC2PreprocessedStreamCallback callback function provides signal level for each buffer passed to the callback, i.e. for each buffer used in signal level evaluation. This provides a way to get signal level from each processed buffer without the need for pulling it using CohGetSignalLevel.

To convert RMS signal level in Volts to power in dBm use the following formulas:

P[W] = (VRMS)2 / R = (VRMS)2 / 50

P[dBm]= 10 * log10( P[W] * 1000 )

Where VRMS is RMS signal level in Volts obtained by CohGetSignalLevel, R is G35DDC receiver input impedance (50 Ω), P[W] is power in Watts and P[dBm] is power in dBm and 1000 is conversion coefficient W -> mW.

The following example shows how to obtain the current signal level in dBm from device 0:

#include <stdio.h>
#include <math.h>

int32_t hDeviceSet; //handle to G35DDC device set returned by the CohOpenDeviceSet function
float P_dBm,V_RMS;

CohGetSignalLevel(hDeviceSet,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);

CohSetNotchFilter

Enables or disables the notch filter of the specified device.

C/C++ declaration

int CohSetNotchFilter(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t NotchFilterIndex,int Enabled);

Address retrieval

COH_G35DDC_SET_NOTCH_FILTER CohSetNotchFilter=(COH_G35DDC_SET_NOTCH_FILTER)dlsym(hAPI,"CohSetNotchFilter");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetNotchFilter function to determine whether the filter is enabled or disabled.

CohGetNotchFilter

Retrieves the current notch filter state of the specified device.

C/C++ declaration

int CohGetNotchFilter(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t NotchFilterIndex,int *Enabled);

Address retrieval

COH_G35DDC_GET_NOTCH_FILTER CohGetNotchFilter=(COH_G35DDC_GET_NOTCH_FILTER)dlsym(hAPI,"CohGetNotchFilter");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
NotchFilterIndex
[in] Specifies the notch filter index. Possible values are: 0, 1.
Enabled
[out] Pointer to a variable that receives the current state of the notch filter. The value is non-zero if the filter is enabled and zero if it is disabled. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetNotchFilterFrequency

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

C/C++ declaration

int CohSetNotchFilterFrequency(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t NotchFilterIndex,int32_t Frequency);

Address retrieval

COH_G35DDC_SET_NOTCH_FILTER_FREQUENCY CohSetNotchFilterFrequency=
        (COH_G35DDC_SET_NOTCH_FILTER_FREQUENCY)dlsym(hAPI,"CohSetNotchFilterFrequency");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
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 function succeeds, the return value is non-zero.
If the function 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 CohSetDDC2Frequency function). The value can be negative.

Use the CohGetNotchFilterFrequency function to retrieve the current center frequency of the notch filter.


CohGetNotchFilterFrequency

Retrieves the current relative center frequency of the notch filter.

C/C++ declaration

int CohGetNotchFilterFrequency(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t NotchFilterIndex,int32_t *Frequency);

Address retrieval

G35DDC_GET_NOTCH_FILTER_FREQUENCY CohGetNotchFilterFrequency=
        (G35DDC_GET_NOTCH_FILTER_FREQUENCY)dlsym(hAPI,"CohGetNotchFilterFrequency");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
NotchFilterIndex
[in] Specifies the notch filter index. Possible values are: 0, 1.
Frequency
[out] Pointer to a variable that receives the current center frequency of the notch filter. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetNotchFilterBandwidth

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

C/C++ declaration

int CohSetNotchFilterBandwidth(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t NotchFilterIndex,uint32_t Bandwidth);

Address retrieval

COH_G35DDC_SET_NOTCH_FILTER_BANDWIDTH CohSetNotchFilterBandwidth=
        (COH_G35DDC_SET_NOTCH_FILTER_BANDWIDTH)dlsym(hAPI,"CohSetNotchFilterBandwidth");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetNotchFilterBandwidth function to retrieve the current bandwidth of the notch filter.


CohGetNotchFilterBandwidth

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

C/C++ declaration

int CohGetNotchFilterBandwidth(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t NotchFilterIndex,uint32_t *Bandwidth);

Address retrieval

COH_G35DDC_GET_NOTCH_FILTER_BANDWIDTH CohGetNotchFilterBandwidth=
        (COH_G35DDC_GET_NOTCH_FILTER_BANDWIDTH)dlsym(hAPI,"CohGetNotchFilterBandwidth");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
NotchFilterIndex
[in] Specifies the notch filter index. Possible values are: 0, 1.
Bandwidth
[out] Pointer to a variable that receives the current bandwidth of the notch filter. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetNotchFilterLength

Specifies the notch filter length for specified the device. The notch filter is implemented as an FIR filter. This function specifies the number of coefficients used in the filtration procedure.

C/C++ declaration

int CohSetNotchFilterLength(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t NotchFilterIndex,uint32_t Length);

Address retrieval

G35DDC_SET_NOTCH_FILTER_LENGTH CohSetNotchFilterLength=
        (G35DDC_SET_NOTCH_FILTER_LENGTH)dlsym(hAPI,"CohSetNotchFilterLength");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
NotchFilterIndex
[in] Specifies the notch filter index. Possible values are: 0, 1.
Length
[in] Specifies the length of the notch filter. The value has to be multiple of 64, greater than or equal to 64 and less than or equal to 32768. If it is not multiple of 64 the function rounds it up to the nearest multiple of 64.

Return value

If the function succeeds, the return value is non-zero.
If the function 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 CohGetNotchFilterLength function to determine the current length of the notch filter.


CohGetNotchFilterLength

Retrieves the current notch filter length of the specified device.

C/C++ declaration

int CohGetNotchFilterLength(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t NotchFilterIndex,uint32_t *Length);

Address retrieval

COH_G35DDC_GET_NOTCH_FILTER_LENGTH CohGetNotchFilterLength=
        (COH_G35DDC_GET_NOTCH_FILTER_LENGTH)dlsym(hAPI,"CohGetNotchFilterLength");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
NotchFilterIndex
[in] Specifies the notch filter index. Possible values are: 0, 1.
Length
[out] Pointer to a variable that receives the current length of the notch filter. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetAGC

Enables or disables the AGC for the specified device.

C/C++ declaration

int CohSetAGC(int32_t hDeviceSet,uint32_t DeviceIndex,int Enabled);

Address retrieval

COH_G35DDC_SET_AGC CohSetAGC=(COH_G35DDC_SET_AGC)dlsym(hAPI,"CohSetAGC");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

If the AGC is disabled, the signal is affected by fixed gain specified using the CohSetGain function.

Use the CohGetAGC function to determine the current state of the AGC.


CohGetAGC

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

C/C++ declaration

int CohGetAGC(int32_t hDeviceSet,uint32_t DeviceIndex,int *Enabled);

Address retrieval

COH_G35DDC_GET_AGC CohGetAGC=(COH_G35DDC_GET_AGC)dlsym(hAPI,"CohGetAGC");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Enabled
[out] Pointer to a variable that receives the current state of the AGC. The value is non-zero if the AGC is enabled and zero if it is disabled. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetAGCParams

Sets parameters of the AGC of specified device.

C/C++ declaration

int CohSetAGCParams(int32_t hDeviceSet,uint32_t DeviceIndex,double AttackTime,double DecayTime,double ReferenceLevel);

Address retrieval

COH_G35DDC_SET_AGC_PARAMS CohSetAGCParams=(COH_G35DDC_SET_AGC_PARAMS)dlsym(hAPI,"CohSetAGCParams");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetAGCParams function to determine the current parameters of the AGC.


CohGetAGCParams

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

C/C++ declaration

int CohGetAGCParams(int32_t hDeviceSet,uint32_t DeviceIndex,double *AttackTime,double *DecayTime,double *ReferenceLevel);

Address retrieval

COH_G35DDC_GET_AGC_PARAMS CohGetAGCParams=(COH_G35DDC_GET_AGC_PARAMS)dlsym(hAPI,"CohGetAGCParams");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
AttackTime
[out] Pointer to a variable that receives the current attack time of the AGC in seconds. This parameter can be NULL if the application does not require this information.
DecayTime
[out] Pointer to a variable that receives the current decay time of the AGC in seconds. This parameter can be NULL if the application does not require this information.
ReferenceLevel
[out] Pointer to a variable that receives the current reference level of the AGC in dB. This parameter can be NULL if the application does not require this information.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetMaxAGCGain

Sets maximum gain of the AGC for the specified device.

C/C++ declaration

int CohSetMaxAGCGain(int32_t hDeviceSet,uint32_t DeviceIndex,double MaxGain);

Address retrieval

COH_G35DDC_SET_MAX_AGC_GAIN CohSetMaxAGCGain=(COH_G35DDC_SET_MAX_AGC_GAIN)dlsym(hAPI,"CohSetMaxAGCGain");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
MaxGain
[in] Specifies the new maximum gain of the AGC in dB.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetMaxAGCGain function to determine the maximum gain of the AGC.


CohGetMaxAGCGain

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

C/C++ declaration

int CohGetMaxAGCGain(int32_t hDeviceSet,uint32_t DeviceIndex,double *MaxGain);

Address retrieval

COH_G35DDC_GET_MAX_AGC_GAIN CohGetMaxAGCGain=(COH_G35DDC_GET_MAX_AGC_GAIN)dlsym(hAPI,"CohGetMaxAGCGain");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
MaxGain
[out] Pointer to a variable that receives the current maximum gain of the AGC in dB. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetGain

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 CohSetGain(int32_t hDeviceSet,uint32_t DeviceIndex,double Gain);

Address retrieval

COH_G35DDC_SET_GAIN CohSetGain=(COH_G35DDC_SET_GAIN)dlsym(hAPI,"CohSetGain");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Gain
[in] Specifies the new fixed gain in dB.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetGain function to determine the current fixed gain.


CohGetGain

Retrieves the current fixed gain of the specified device.

C/C++ declaration

int CohGetGain(int32_t hDeviceSet,uint32_t DeviceIndex,double *Gain);

Address retrieval

COH_G35DDC_GET_GAIN CohGetGain=(COH_G35DDC_GET_GAIN)dlsym(hAPI,"CohGetGain");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Gain
[out] Pointer to a variable that receives the current fixed gain in dB. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohGetCurrentGain

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

C/C++ declaration

int CohGetCurrentGain(int32_t hDeviceSet,uint32_t DeviceIndex,double *CurrentGain);

Address retrieval

COH_G35DDC_GET_CURRENT_GAIN CohGetCurrentGain=(COH_G35DDC_GET_CURRENT_GAIN)dlsym(hAPI,"CohGetCurrentGain");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
CurrentGain
[out] Pointer to a variable that receives the current gain in dB. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

If the AGC is enabled (using the CohSetAGC function), 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 CohSetGain function.

CohSetDemodulatorFilterBandwidth

Sets bandwidth of the demodulator filter of the specified device.

C/C++ declaration

int CohSetDemodulatorFilterBandwidth(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t Bandwidth);

Address retrieval

COH_G35DDC_SET_DEMODULATOR_FILTER_BANDWIDTH CohSetDemodulatorFilterBandwidth=
    (COH_G35DDC_SET_DEMODULATOR_FILTER_BANDWIDTH)dlsym(hAPI,"CohSetDemodulatorFilterBandwidth");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
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 CohGetDDC2 function to retrieve information about the current DDC type of DDC2.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

The demodulator filter bandwidth can be changed using the CohSetDDC1 function. 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 CohGetDemodulatorFilterBandwidth function immediately after CohSetDDC1.

CohGetDemodulatorFilterBandwidth

Retrieves the current demodulator filter bandwidth of the specified device.

C/C++ declaration

int CohGetDemodulatorFilterBandwidth(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t *Bandwidth);

Address retrieval

COH_G35DDC_GET_DEMODULATOR_FILTER_BANDWIDTH CohGetDemodulatorFilterBandwidth=
    (COH_G35DDC_GET_DEMODULATOR_FILTER_BANDWIDTH)dlsym(hAPI,"CohGetDemodulatorFilterBandwidth");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Bandwidth
[out] Pointer to a variable that receives the current demodulator filter bandwidth. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetDemodulatorFilterShift

Sets the demodulator filter shift of the specified device.

C/C++ declaration

int CohSetDemodulatorFilterShift(int32_t hDeviceSet,uint32_t DeviceIndex,int32_t Shift);

Address retrieval

COH_G35DDC_SET_DEMODULATOR_FILTER_SHIFT CohSetDemodulatorFilterShift=
    (COH_G35DDC_SET_DEMODULATOR_FILTER_SHIFT)dlsym(hAPI,"CohSetDemodulatorFilterShift");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Shift
[in] Specifies the new shift of the demodulator filter in Hz.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Value of the Shift parameter is shift in Hz relative to center of the demodulator. This value can be negative.

This function does not change demodulator frequency, just shifts the filter from the demodulator's centre.

Use the CohGetDemodulatorFilterShift function to determine the current demodulator filter shift.


CohGetDemodulatorFilterShift

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

C/C++ declaration

int CohGetDemodulatorFilterShift(int32_t hDeviceSet,uint32_t DeviceIndex,int32_t *Shift);

Address retrieval

COH_G35DDC_GET_DEMODULATOR_FILTER_SHIFT CohGetDemodulatorFilterShift=
    (COH_G35DDC_GET_DEMODULATOR_FILTER_SHIFT)dlsym(hAPI,"CohGetDemodulatorFilterShift");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Shift
[out] Pointer to a variable that receives the current shift of the demodulator. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetDemodulatorFilterLength

Specifies the demodulator filter length of the specified device. The demodulator filter is implemented as an FIR filter. This function specifies the number of coefficients used in the filtration procedure.

C/C++ declaration

int CohSetDemodulatorFilterLength(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t Length);

Address retrieval

COH_G35DDC_SET_DEMODULATOR_FILTER_LENGTH CohSetDemodulatorFilterLength=
    (COH_G35DDC_SET_DEMODULATOR_FILTER_LENGTH)dlsym(hAPI,"CohSetDemodulatorFilterLength");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Length
[in] Specifies the length of the demodulator filter. The value has to be multiple of 64, greater than or equal to 64 and less than or equal to 32768. If it is not a multiple of 64, the function rounds it up to nearest multiple of 64.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

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

Use the CohGetDemodulatorFilterLength function to determine the current length of the demodulator filter.


CohGetDemodulatorFilterLength

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

C/C++ declaration

int CohGetDemodulatorFilterLength(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t *Length);

Address retrieval

COH_G35DDC_GET_DEMODULATOR_FILTER_LENGTH CohGetDemodulatorFilterLength=
    (COH_G35DDC_GET_DEMODULATOR_FILTER_LENGTH)dlsym(hAPI,"CohGetDemodulatorFilterLength");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Length
[out] Pointer to a variable that receives the current demodulator filter length. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetDemodulatorMode

Sets the demodulator mode of the specified device.

C/C++ declaration

int CohSetDemodulatorMode(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t Mode);

Address retrieval

COH_G35DDC_SET_DEMODULATOR_MODE CohSetDemodulatorMode=(COH_G35DDC_SET_DEMODULATOR_MODE)dlsym(hAPI,"CohSetDemodulatorMode");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Mode
[in] Specifies the new demodulator mode. This value can be one of the following:

ValueMeaning
G3XDDC_MODE_CWContinuous wave
G3XDDC_MODE_AMAmplitude modulation
G3XDDC_MODE_FMFrequency modulation
G3XDDC_MODE_LSBLower sideband modulation
G3XDDC_MODE_USBUpper sideband modulation
G3XDDC_MODE_AMSAmplitude modulation
G3XDDC_MODE_DSBDouble sideband modulation
G3XDDC_MODE_ISBIndependent sideband modulation

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetDemodulatorMode function to retrieve current demodulator mode.


CohGetDemodulatorMode

Retrieves the current demodulator mode of the specified device.

C/C++ declaration

int CohGetDemodulatorMode(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t *Mode);

Address retrieval

COH_G35DDC_GET_DEMODULATOR_MODE CohGetDemodulatorMode=(COH_G35DDC_GET_DEMODULATOR_MODE)dlsym(hAPI,"CohGetDemodulatorMode");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Mode
[out] Pointer to a variable that receives the current demodulator mode. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetDemodulatorFrequency

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

C/C++ declaration

int CohSetDemodulatorFrequency(int32_t hDeviceSet,uint32_t DeviceIndex,int32_t Frequency);

Address retrieval

COH_G35DDC_SET_DEMODULATOR_FREQUENCY CohSetDemodulatorFrequency=
    (COH_G35DDC_SET_DEMODULATOR_FREQUENCY)dlsym(hAPI,"CohSetDemodulatorFrequency");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Frequency
[in] Specifies the new center frequency of the demodulator in Hz.

Return value

If the function succeeds, the return value is non-zero.
If the function 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 = fDDC1 + frDDC2 + frDEM

Where faDEM is the absolute center frequency of the demodulator in Hz, fDDC1 is the center frequency of the DDC1 in Hz (set using the CohSetDDC1Frequency function), frDDC2 is the relative center frequency of DDC2 of in Hz (set using the CohSetDDC2Frequency) and frDEM is relative center frequency of the demodulator in Hz (set using CohSetDemodulatorFrequency).

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

Use the CohGetDemodulatorFrequency function 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:

int32_t hDeviceSet; //Handle to G35DDC device set returned by the CohOpenDeviceSet function

//1. method
CohSetDDC1Frequency(hDeviceSet,11010000);
CohSetDDC2Frequency(hDeviceSet,0,0);
CohSetDemodulatorFrequency(hDeviceSet,0,0);

//2. method
CohSetDDC1Frequency(hDeviceSet,11000000);
CohSetDDC2Frequency(hDeviceSet,0,10000);
CohSetDemodulatorFrequency(hDeviceSet,0,0);

//3. method
CohSetDDC1Frequency(hDeviceSet,11020000);
CohSetDDC2Frequency(hDeviceSet,0,-5000);
CohSetDemodulatorFrequency(hDeviceSet,0,-5000);


CohGetDemodulatorFrequency

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

C/C++ declaration

int CohGetDemodulatorFrequency(int32_t hDeviceSet,uint32_t DeviceIndex,int32_t *Frequency);

Address retrieval

COH_G35DDC_GET_DEMODULATOR_FREQUENCY CohGetDemodulatorFrequency=
    (COH_G35DDC_GET_DEMODULATOR_FREQUENCY)dlsym(hAPI,"CohGetDemodulatorFrequency");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Frequency
[out] Pointer to a variable that receives the current center frequency of the demodulator. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetDemodulatorParam

Sets a parameter of demodulation of the specified device.

C/C++ declaration

int CohSetDemodulatorParam(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t Code,void const *Buffer,uint32_t BufferSize);

Address retrieval

COH_G35DDC_SET_DEMODULATOR_PARAM CohSetDemodulatorParam=
    (COH_G35DDC_SET_DEMODULATOR_PARAM)dlsym(hAPI,"CohSetDemodulatorParam");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Code
[in] Specifies the code of the demodulator parameter to be set by this function. The code can be one of the following:

ValueMeaning
G3XDDC_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).

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

G3XDDC_SIDE_BAND_LOWER
AMS demodulator will use lower sideband

G3XDDC_SIDE_BAND_UPPER
AMS demodulator will use upper sideband

G3XDDC_SIDE_BAND_BOTH
AMS demodulator will use both side bands.

G3XDDC_DEMODULATOR_PARAM_AMS_CAPTURE_RANGE

Capture range of synchronous AM demodulator.

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

G3XDDC_DEMODULATOR_PARAM_CW_FREQUENCY

CW tone frequency

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

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

G3XDDC_DEMODULATOR_PARAM_DSB_SIDE_BAND

Side band for DSB demodulation.

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

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

G3XDDC_SIDE_BAND_LOWER
DSB demodulator will use lower sideband

G3XDDC_SIDE_BAND_UPPER
DSB demodulator will use upper sideband

G3XDDC_SIDE_BAND_BOTH
DSB demodulator will use both side bands.

G3XDDC_DEMODULATOR_PARAM_ISB_SIDE_BAND

Side band for ISB demodulation.

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

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

G3XDDC_SIDE_BAND_LOWER
ISB demodulator will use lower sideband

G3XDDC_SIDE_BAND_UPPER
ISB demodulator will use upper sideband

G3XDDC_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 function will set. This parameter cannot be NULL.
BufferSize
[in] Specifies the size of the buffer.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohGetDemodulatorParam

Retrieves a parameter of demodulation of the specified device.

C/C++ declaration

int CohGetDemodulatorParam(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t Code,void *Buffer,uint32_t BufferSize);

Address retrieval

COH_G35DDC_GET_DEMODULATOR_PARAM CohGetDemodulatorParam=
    (COH_G35DDC_GET_DEMODULATOR_PARAM)dlsym(hAPI,"CohGetDemodulatorParam");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Code
[in] Specifies the code of the demodulator parameter to be retrieved. For detailed information about available codes see SetDemodulatorParam.
Buffer
[out] Pointer to a buffer that receives the requested parameter. This parameter cannot be NULL.
BufferSize
[in] Specifies the size of the buffer.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohGetDemodulatorState

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

C/C++ declaration

int CohGetDemodulatorState(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t Code,void *Buffer,uint32_t BufferSize);

Address retrieval

COH_G35DDC_GET_DEMODULATOR_STATE CohGetDemodulatorState=
    (COH_G35DDC_GET_DEMODULATOR_STATE)dlsym(hAPI,"CohGetDemodulatorState");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Code
[in] Specifies the code of the demodulator state to be retrieved. The code can be one of the following:

ValueMeaning
G3XDDC_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).

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

G3XDDC_DEMODULATOR_STATE_AMS_FREQUENCY

Frequency in Hz which synchronous AM demodulator is locked to. It is relative to center of the demodulator. It can be negative.

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

G3XDDC_DEMODULATOR_STATE_AM_DEPTH

Depth of AM modulation in %.

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

G3XDDC_DEMODULATOR_STATE_DSB_LOCK

Lock state of DSB demodulation.

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

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

G3XDDC_DEMODULATOR_STATE_DSB_FREQUENCY

Frequency in Hz which DSB demodulator is locked to. It is relative to center of the demodulator. It can be negative.

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

G3XDDC_DEMODULATOR_STATE_TUNE_ERROR

Estimated tune error in Hz.

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

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

G3XDDC_DEMODULATOR_STATE_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 that receives the requested information. This parameter cannot be NULL.
BufferSize
[in] Specifies the size of the buffer.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohStartAudio

Starts audio streaming for the specified device.

C/C++ declaration

int CohStartAudio(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t SamplesPerBuffer);

Address retrieval

COH_G35DDC_START_AUDIO CohStartAudio=(COH_G35DDC_START_AUDIO)dlsym(hAPI,"CohStartAudio");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
SamplesPerBuffer
[in] Specifies the number of samples in each buffer passed to the AudioStreamCallback callback function. The value has to be multiple of 64 greater than zero. If it is zero, the StartAudio function fails. If it is not a multiple of 64, the function rounds it up to nearest multiple of 64.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Before CohStartAudio is used, the G35DDC devices have to be turned on using the CohSetPower function, DDC1 streaming has to be started using the CohStartDDC1 function and DDC2 streaming has to be started using the CohStartDDC2 function, otherwise CohStartAudio fails.

If the audio streaming of specified device is already running, CohStartAudio restarts it except the streaming was previously started with the same SamplesPerBuffer parameter. In this case CohStartAudio does nothing.

Use the CohStopAudio function to stop audio streaming.

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


CohStopAudio

Stops audio streaming for the specified device.

C/C++ declaration

int CohStopAudio(int32_t hDeviceSet,uint32_t DeviceIndex);

Address retrieval

COH_G35DDC_STOP_AUDIO CohStopAudio=(COH_G35DDC_STOP_AUDIO)dlsym(hAPI,"CohStopAudio");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

If audio streaming is not active, CohStopAudio does nothing.

The AudioStreamCallback callback function are not called after CohStopAudio returns.


CohSetAudioGain

Sets fixed audio gain of the specified device.

C/C++ declaration

int CohSetAudioGain(int32_t hDeviceSet,uint32_t DeviceIndex,double Gain);

Address retrieval

COH_G35DDC_SET_AUDIO_GAIN CohSetAudioGain=(COH_G35DDC_SET_AUDIO_GAIN)dlsym(hAPI,"CohSetAudioGain");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Gain
[in] Specifies a new fixed audio gain in dB.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetAudioGain function to retrieve the current audio gain.

CohGetAudioGain

Retrieves the current fixed audio gain of the specified device.

C/C++ declaration

int CohGetAudioGain(int32_t hDeviceSet,uint32_t DeviceIndex,double *Gain);

Address retrieval

COH_G35DDC_GET_AUDIO_GAIN CohGetAudioGain=(COH_G35DDC_GET_AUDIO_GAIN)dlsym(hAPI,"CohGetAudioGain");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Gain
[out] Pointer to a variable that receives the current fixed gain in dB. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetAudioFilter

Enables or disables the audio filter of the device index.

C/C++ declaration

int CohSetAudioFilter(int32_t hDeviceSet,uint32_t DeviceIndex,int Enabled);

Address retrieval

COH_G35DDC_SET_AUDIO_FILTER CohSetAudioFilter=(COH_G35DDC_SET_AUDIO_FILTER)dlsym(hAPI,"CohSetAudioFilter");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetAudioFiler function to retrieve the current state of the audio filter.

CohGetAudioFilter

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

C/C++ declaration

int CohGetAudioFilter(int32_t hDeviceSet,uint32_t DeviceIndex,int *Enabled);

Address retrieval

COH_G35DDC_GET_AUDIO_FILTER CohGetAudioFilter=(COH_G35DDC_GET_AUDIO_FILTER)dlsym(hAPI,"CohGetAudioFilter");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Enabled
[out] Pointer to a variable that receives the current state of the audio filter. The value is non-zero if the filter is enabled and zero if it is disabled. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetAudioFilterParams

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

C/C++ declaration

int CohSetAudioFilterParams(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t CutOffLow,uint32_t CutOffHigh,double Deemphasis);

Address retrieval

COH_G35DDC_SET_AUDIO_FILTER_PARAMS CohSetAudioFilterParams=
    (COH_G35DDC_SET_AUDIO_FILTER_PARAMS)dlsym(hAPI,"CohSetAudioFilterParams");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
CutOffLow
[in] Specifies the cut-off low frequency of the filter in Hz. This is the start frequency of filter's passband, it can be from the range of 0 to 23999 Hz. The value has to be less then the cut-off high frequency specified by the CutOffHigh parameter.
CutOffHigh
[in] Specifies the cut-off high frequency of the filter in Hz. This is the end frequency of filter's passband it can be from the range of 1 - 24000 Hz. The value has to be greater than the cut-off low frequency specified by the CutOffLow parameter.
Deemphasis
[in] Specifies the de-emphasis of the filter in dB per octave. De-emphasis starts at 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 function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Use the CohGetAudioFilerParams function to retrieve the current parameters of the audio filter.

CohGetAudioFilterParams

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

C/C++ declaration

int CohGetAudioFilterParams(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t *CutOffLow,uint32_t *CutOffHigh,double *Deemphasis);

Address retrieval

COH_G35DDC_GET_AUDIO_FILTER_PARAMS CohGetAudioFilterParams=
    (COH_G35DDC_GET_AUDIO_FILTER_PARAMS)dlsym(hAPI,"CohGetAudioFilterParams");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
CutOffLow
[out] Pointer to a variable that receives the current cut-off low frequency of the filter. This parameter can be NULL if the application does not require this information.
CutOffHigh
[out] Pointer to a variable that receives the current cut-off high frequency of the filter. This parameter can be NULL if the application does not require this information.
Deemphasis
[out] Pointer to a variable that receives the current de-emphasis setting of the filter. This parameter can be NULL if the application does not require this information.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetAudioFilterLength

Specifies the audio filter length of the specified device. The audio filter is implemented as an FIR filter. This function specifies the number of coefficients used in the filtration procedure.

C/C++ declaration

int CohSetAudioFilterLength(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t Length);

Address retrieval

COH_G35DDC_SET_AUDIO_FILTER_LENGTH CohSetAudioFilterLength=
        (COH_G35DDC_SET_AUDIO_FILTER_LENGTH)dlsym(hAPI,"CohSetAudioFilterLength");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Length
[in] Specifies the length of the audio filter. The value has to be multiple of 64, greater than or equal to 64 and less than or equal to 32768. If it is not a multiple of 64, the function rounds it up to nearest multiple of 64.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

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

Use the CohGetAudioFilterLength function to determine the current length of the audio filter.


CohGetAudioFilterLength

Retrieves the current audio filter length of the specified device.

C/C++ declaration

int CohGetAudioFilterLength(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t *Length);

Address retrieval

COH_G35DDC_GET_AUDIO_FILTER_LENGTH CohGetAudioFilterLength=
        (COH_G35DDC_GET_AUDIO_FILTER_LENGTH)dlsym(hAPI,"CohGetAudioFilterLength");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Length
[out] Pointer to a variable that receives the current length of the audio filter. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetVolume

Sets the audio volume of the specified device.

C/C++ declaration

int CohSetVolume(int32_t hDeviceSet,uint32_t DeviceIndex,uint8_t Volume);

Address retrieval

COH_G35DDC_SET_VOLUME CohSetVolume=(COH_G35DDC_SET_VOLUME)dlsym(hAPI,"CohSetVolume");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Volume
[in] Specifies the new volume. The value can vary from 0 to 31, where 31 means maximum volume.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

The G35DDC receiver has an audio output connector, the CohSetVolume function affects the audio signal level at this output (see also CohSetDAC).

Use the CohGetVolume function to retrieve the current volume.


CohGetVolume

Retrieve the current volume of the specified device.

C/C++ declaration

int CohGetVolume(int32_t hDeviceSet,uint32_t DeviceIndex,uint8_t *Volume);

Address retrieval

COH_G35DDC_GET_VOLUME CohGetVolume=(COH_G35DDC_GET_VOLUME)dlsym(hAPI,"CohGetVolume");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Volume
[out] Pointer to a variable that receives the current volume. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetMute

Mutes or unmutes audio of specified device.

C/C++ declaration

int CohSetMute(int32_t hDeviceSet,uint32_t DeviceIndex,int Mute);

Address retrieval

COH_G35DDC_SET_MUTE CohSetMute=(COH_G35DDC_SET_MUTE)dlsym(hAPI,"CohSetMute");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Mute
[in] Specifies whether to mute or unmute audio. If this parameter is non-zero, the audio is muted. If the parameter is zero, the audio is unmuted.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

The G35DDC receiver has an audio output connector, the CohSetMute function affects the audio signal at this output (see also CohSetDAC).

Use the CohGetMute function to retrieve the current mute state.


CohGetMute

Retrieves the current mute state of the specified device.

C/C++ declaration

int CohGetMute(int32_t hDeviceSet,uint32_t DeviceIndex,int *Mute);

Address retrieval

COH_G35DDC_GET_MUTE CohGetMute=(COH_G35DDC_GET_MUTE)dlsym(hAPI,"CohGetMute");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Mute
[out] Pointer to a variable that receives the current mute state. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohSetDAC

Allows routing audio output to a DAC (Digital-to-analog converter). The DAC output is connected to the audio output connector of the receiver.

C/C++ declaration

int CohSetDAC(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t DAC);

Address retrieval

COH_G35DDC_SET_DAC CohSetDAC=(COH_G35DDC_SET_DAC)dlsym(hAPI,"CohSetDAC");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
DAC
[in] Specifies the routed audio to the DAC.

BitMeaning
0If it is set, audio output is routed to left channel of the audio output connector.
1If it is set, audio output is routed to right channel of the audio output connector.
2 - 31Reserved. Must be zero.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohGetDAC

Determines if audio output is routed to the audio output connector (DAC).

C/C++ declaration

int CohGetDAC(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t *DAC);

Address retrieval

COH_G35DDC_GET_DAC CohGetDAC=(COH_G35DDC_GET_DAC)dlsym(hAPI,"CohGetDAC");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
DAC
[out] Pointer to a variable that receives a bitwise array which specifies how the audio is routed to the audio output connector (DAC). For more information, see CohSetDAC. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohGetSpectrumCompensation

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

C/C++ declaration

int CohGetSpectrumCompensation(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t CenterFrequency,uint32_t Width,float *Buffer,uint32_t Count);

Address retrieval

COH_G35DDC_GET_SPECTRUM_COMPENSATION CohGetSpectrumCompensation=
    (COH_G35DDC_GET_SPECTRUM_COMPENSATION)dlsym(hAPI,"CohGetSpectrumCompensation");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
CenterFrequency
[in] Specifies the absolute center frequency of the requested compensation data in Hz.
Width
[in] Specifies the width of the requested compensation data in Hz.
Buffer
[out] Pointer to a buffer to be filled with compensation data. This parameter cannot be NULL.
Count
[in] Specifies the number of FLOAT items in the buffer pointed to by the Buffer parameter.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

The following example shows how to use the CohGetSpectrumCompensation function in DDC2StreamCallback callback function:


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

int32_t hDeviceSet; //handle to G35DDC device set
uint32_t AbsDDC2Frequency; //Absolute frequency of the DDC2
int32_t RelDDC2Frequency; //Relative frequency of the DDC2
uint32_t DDC1Frequency; //DDC1 frequency
G3XDDC_DDC_INFO DDC2Info; //Information about current DDC type of the DDC2
float FFTBuffer[2*2048]; //Buffer for FFT result
float Compensation[2048]; //Buffer for compensation data
uint32_t FirstBin,LastBin; //the first and last bins in the FFT of useful DDC2 band
G35DDC_CALLBACKS Callbacks; //Structure which contains pointer to callback functions

Code before...

//Retrieve frequency of the DDC1
CohGetDDC1Frequency(hDeviceSet,&DDC1Frequency);

//Retrieve relative frequency of the DDC2 for device 0
CohGetDDC2Frequency(hDeviceSet,0,&RelDDC2Frequency);

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

//Retrieve DDC type information of the DDC2
CohGetDDC2(hDeviceSet,NULL,&DDC2Info);

//Retrieve compensation data for device 0
CohGetSpectrumCompensation(hDeviceSet,0,AbsDDC2Frequency,DDC2Info.SampleRate,Compensation,2048);
//In this case the Width parameter is equal to sample rate, because we need compensation data
//for whole DDC2 band.
//Compensation data have to be updated after change of absolute DDC2 frequency using
//the CohSetDDC1Frequency or CohSetDDC2Frequency function.
//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;

//Set callback function for DDC2 streaming
//Pointers to callback function which should not be called by the API have to be set to NULL.
Callbacks.DDC2StreamCallback=MyDDC2StreamCallback;

//Start DDC2 streaming for device 0
//The SamplesPerBuffer parameter is set to 2048 which is size of the FFT to simplify
//the example.
CohStartDDC2(hDeviceSet,0,2048);

Code after...
    
void MyDDC2StreamCallback(uint32_t DeviceIndex,const float *Buffer,uint32_t NumberOfSamples,uintptr_t UserData)
{
 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.
}


CohSetCallbacks

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

C/C++ declaration

int CohSetCallbacks(int32_t hDeviceSet,const COH_G35DDC_CALLBACKS *Callbacks,uintptr_t UserData);

Address retrieval

COH_G35DDC_SET_CALLBACKS CohSetCallbacks=(COH_G35DDC_SET_CALLBACKS)dlsym(hAPI,"CohSetCallbacks");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
Callbacks
[in] Pointer to a COH_G35DDC_CALLBACKS structure which contains pointers to the user-defined functions to be registered as callback functions.
UserData
[in] Specifies a user-defined value which is passed to callback functions.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

If the application does not require that the API calls some callback function, set related member of the COH_G35DDC_CALLBACKS structure to NULL.

If value of the Callbacks parameter is NULL, all the callback functions are unregistered, the API will not call any callback function.


CohGetTemperature

Retrieves the current internal temperature of the G35DDC device in the device set.

C/C++ declaration

int CohGetTemperature(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t *Temperature);

Address retrieval

COH_G35DDC_GET_TEMPERATURE CohGetTemperature=(COH_G35DDC_GET_TEMPERATURE)dlsym(hAPI,"CohGetTemperature");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Temperature
[out] Pointer to a variable that receives the current internal temperature in degrees of Celsius. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

The G35DDC devices have to be turned on using the CohSetPower function before CohGetTemperature is used. Otherwise CohGetTemperature fails.


CohGetDeviceState

Retrieves the current error state of the G35DDC device.

C/C++ declaration

int CohGetDeviceState(int32_t hDeviceSet,uint32_t DeviceIndex,uint32_t *State);

Address retrieval

COH_G35DDC_GET_DEVICE_STATE CohGetDeviceState=(COH_G35DDC_GET_DEVICE_STATE)dlsym(hAPI,"CohGetDeviceState");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
State
[out] Pointer to a variable that receives the current error state of the device. This parameter cannot be NULL. The value can be zero or G3XDDC_DEVICE_STATE_ERROR_HIGH_TEMP if critical temperature is detected and the device is turned off. In this case the application should call CohSetPower to turn off explicitly.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

CohGetTimestampCounters

Retrieves the state of DDC1 and ADC counters.

C/C++ declaration

int CohGetTimestampCounters(int32_t hDeviceSet,double *DDC1SampleCounter,uint64_t *ADCPeriodCounter);

Address retrieval

COH_G35DDC_GET_TIMESTAMP_COUNTERS CohGetTimestampCounters=(COH_G35DDC_GET_TIMESTAMP_COUNTERS)GetProcAddress(hAPI,"CohGetTimestampCounters");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DDC1SampleCounter
[out] Pointer to a variable that receives the current value of DDC1 sample counter. The value specifies how many I/Q sample sets were produced by the DDC1 since its start, to the latest pulse received at the 1PPS input of the coherent clock generator board.
ADCPeriodCounter
[out] Pointer to a variable that receives the current value of ADC counter. The value represents the number of periods of ADC clock since DDC1 start, to the latest pulse received at the 1PPS input of the coherent clock generator board.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

The counters are active only when the DDC1 is running (see the CohStartDDC1 function). If the DDC1 is not running, the CohGetTimestampCounters function fails.

The DDC1 sample counter can be used to time stamp the DDC1 I/Q sample sets received in the DDC1StreamCallback callback function. The value of the DDC1 sample counter is equal to the number of I/Q sample sets received in the DDC1StreamCallback callback function, since start of the DDC1 to the latest pulse at the 1PPS input of the coherent clock generator board.

The counters are common for all the devices in the device set.


CohSetBuiltInTest

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 CohSetBuiltInTest(int32_t hDeviceSet,uint32_t DeviceIndex,int Enabled);

Address retrieval

COH_G35DDC_SET_BUILT_IN_TEST CohSetBuiltInTest=(COH_G35DDC_SET_BUILT_IN_TEST)dlsym(hAPI,"CohSetBuiltInTest");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.
Enabled
[in] Specifies whether to enable or disable the built-in test. If this parameter is non-zero, the test signal is enabled. If the parameter is zero, the test signal is disabled.

Test signal parameters:

FrequencyLevel
25 MHz ± 2 kHz-40 dBm ± 5 dB

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Remarks

Built-in test is optional. If the receiver does not support built-in test, SetBuiltInTest fails. The following example shows how to determine that receiver supports built-in test:
    G35DDC_DEVICE_INFO DeviceInfo;
    int32_t hDeviceSet;  //handle to open G35DDC device set
    uint32_t DeviceIndex; //index of the receiver in the device set
    
    CohGetDeviceInfo(hDeviceSet,DeviceIndex,&DeviceInfo);
    
    if(DeviceInfo.Flags & G35DDC_FLAGS_BIT)
    {
        //the receiver supports built-in test
    }
    else
    {
        //the receiver does not support built-in test
    }

CohGetBuiltInTest

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

C/C++ declaration

int CohGetBuiltInTest(int32_t hDeviceSet,uint32_t DeviceIndex,int *Enabled);

Address retrieval

COH_G35DDC_GET_BUILT_IN_TEST CohGetBuiltInTest=(COH_G35DDC_GET_BUILT_IN_TEST)dlsym(hAPI,"CohGetBuiltInTest");

Parameters

hDeviceSet
[in] Handle to G35DDC device set returned by the CohOpenDeviceSet function.
DeviceIndex
[in] Specifies index of the device in the device set. It can vary from zero to 'one less than number of devices' in the device set.
Enabled
[out] Pointer to a variable which receives information about the test signal state. If it is non-zero, test signal is enabled, if it is zero, test signal is not enabled. This parameter cannot be NULL.

Return value

If the function succeeds, the return value is non-zero.
If the function fails, the return value is zero. To get extended error information, check errno.

Structures

G35DDC_DEVICE_INFO

Contains information about the G35DDC device.

C/C++ declaration

#pragma pack(push,1)

typedef struct
{
    char        DevicePath[64];
    uint8_t     InterfaceType;
    char        SerialNumber[9];
    uint16_t    HWVersion;
    uint16_t    FWVersion;
    uint8_t     EEPROMVersion;    
    uint32_t    Flags;
    uint32_t    ChannelCount;
    uint32_t    DDCTypeCount;   
} G35DDC_DEVICE_INFO;

#pragma pack(pop)

Members

DevicePath
Device system path in a null-terminated string. It is used to open the device.
InterfaceType

Device interface type. The value can be one of the following:

G3XDDC_INTERFACE_TYPE_PCIE
The device is connected to the computer via PCI express.

G3XDDC_INTERFACE_TYPE_USB
The device is connected to the computer via USB.

SerialNumber
Serial number in null-terminated string.
HWVersion
Version of the hardware.
FWVersion
Version of the firmware.
EEPROMVersion
EEPROM structure version.
Flags
Hardware configuration flags can be a combination of the following values:

ValueMeaning
G35DDC_FLAGS_EXTERNAL_REFERENCEThe device supports external reference.
G35DDC_FLAGS_AUDIO_OUTPUTThe device has an audio output connector.
G35DDC_FLAGS_COHERENTThe device supports coherent mode.
G35DDC_FLAGS_BITThe device supports built-in test.

ChannelCount
Number of channels. This is always 3. In coherent mode each device has a single processing channel.
DDCTypeCount
Number of DDC types supported by the DDC1.

COH_G35DDC_DEVICE_SET

Contains information about G35DDC device set.

C/C++ declaration

#pragma pack(push,1)

typedef struct
{
    uint32_t              DeviceCount;
    G35DDC_DEVICE_INFO  *DeviceInfo;   
} COH_G35DDC_DEVICE_SET;

#pragma pack(pop)

Members

DeviceCount
Number of devices in the device set / number of items in the array pointed to by the DeviceInfo member.
DeviceInfo
Pointer to array of device info structures of all the devices in the device set.

COH_G35DDC_DEVICE_SET_LIST

Contains information about G35DDC device set.

C/C++ declaration

#pragma pack(push,1)

typedef struct
{
    uint32_t                  DeviceSetCount;
    COH_G35DDC_DEVICE_SET   *DeviceSet;  
} COH_G35DDC_DEVICE_SET_LIST;

#pragma pack(pop)

Members

DeviceSetCount
Number of devices sets / number of items in the array pointed to by the DeviceSet member.
DeviceSet
Pointer to array of device set structures.

G3XDDC_DDC_INFO

Contains information about the DDC type.

C/C++ declaration

#pragma pack(push,1)

typedef struct
{
    uint32_t  SampleRate;
    uint32_t  Bandwidth;
    uint32_t  BitsPerSample;
} G3XDDC_DDC_INFO;

#pragma pack(pop)

Members

SampleRate
Sample rate of I/Q signal in Hz.
Bandwidth
Useful bandwidth in Hz.
BitsPerSample
Number of bits per sample. This can be 16 or 32. It is used to determine the bits per sample for DDC1.

G3XDDC_AMS_CAPTURE_RANGE

Contains information about the AMS capture range.

C/C++ declaration

#pragma pack(push,1)

typedef struct
{
    uint32_t  Tune;
    uint32_t  Lock;
} G3XDDC_AMS_CAPTURE_RANGE;

#pragma pack(pop)

Members

Tune
Initial capture range in Hz.
Lock
Capture range (in Hz) used when the AMS demodulator is locked.

COH_G35DDC_CALLBACKS

Contains pointers to user-defined functions to be registered as callback functions.

Each callback function is called in context of thread created by the API. If some shared data are accessed inside callback functions, it is recommended to use a mutual-exclusion synchronization method. The application should not call any G35DDC API function from the inside callback functions, otherwise it can cause deadlock or the application can enter an unpredictable state.

C/C++ declaration

#pragma pack(push,1)

typedef struct
{
    COH_G35DDC_DDC1_STREAM_CALLBACK                 DDC1StreamCallback;
    COH_G35DDC_IF_CALLBACK                          IFCallback;
    COH_G35DDC_DDC2_STREAM_CALLBACK                 DDC2StreamCallback;
    COH_G35DDC_DDC2_PREPROCESSED_STREAM_CALLBACK    DDC2PreprocessedStreamCallback;
    COH_G35DDC_AUDIO_STREAM_CALLBACK                AudioStreamCallback;
} COH_G35DDC_CALLBACKS;

#pragma pack(pop)

Members

DDC1StreamCallback

Pointer to a user-defined function to be registered as DDC1 stream callback. It is called by the API to pass coherent I/Q samples from DDC1 of all the devices in the device set to the application at once. The DDC1 streaming is started using the CohStartDDC1 function.

C/C++ declaration

void DDC1StreamCallback(uint32_t DeviceCount,const void **Buffers,uint32_t NumberOfSamples,uint32_t BitsPerSample,uintptr_t UserData);

Parameters

DeviceCount
Specifies the number of I/Q sample buffers in the array pointed to by the Buffers. It is equal to number of devices in the device set (see the CohGetDeviceCount function).
Buffers
Pointer to the array of pointers to the buffers which contain I/Q sample sets from DDC1. Sample rate and bits per sample are given by the used DDC type, see the CohSetDDC1 function. One I/Q sample set consists of two samples. The order of the buffers in the array corresponds to the hardware interconnection of the G35DDC devices.
NumberOfSamples
Specifies the number of I/Q sample sets in each buffer in the Buffers array. This value is equal to value of the SamplesPerBuffer parameter of the CohStartDDC1 function.
BitsPerSample
Specifies the number of bits per sample. It is given by DDC type used for DDC1 and it can be 16 or 32. If it is 16, the sample is 16bit integer (32bits per I/Q sample set), signed, little endian, from the range -32768 to 32767. If it is 32, the sample is 32bit integer (64bits per I/Q sample set), signed, little endian, from the range -2147483648 to 2147483647.
UserData
User-defined data. It is value passed to the CohSetCallbacks function as the UserData parameter.
IFCallback

Pointer to a user-defined function to be registered as IF callback. It is called by the API to pass IF snapshots from specified device of the device set to the application. Sending of IF snapshots is started using the CohStartIF function.

C/C++ declaration

void IFCallback(uint32_t DeviceIndex,const int16_t *Buffer,uint32_t NumberOfSamples,uint16_t MaxADCAmplitude,uint32_t ADCSamplingRate,uintptr_t UserData);

Parameters

DeviceIndex
Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Buffer
Pointer to the buffer which contains samples directly received from the ADC. Sample rate is 100 MHz, the sample is 16bit signed little endian.
NumberOfSamples
Specifies the number of samples in the buffer pointed to by the Buffer parameter. This is usually 65536.
MaxADCAmplitude
Specifies the maximum amplitude. Measurement of the maximum is started at the end of the previous snapshot to the current one. The possible value is 0 to 32767.
ADCSamplingRate
Specifies the sample rate of the ADC in Hz. It can vary a little bit because of temperature instability.
UserData
User-defined data. It is value passed to the CohSetCallbacks function as the UserData parameter.
DDC2StreamCallback

Pointer to a user-defined function to be registered as DDC2 stream callback. It is called by the API to pass I/Q samples from DDC2 to the application. The DDC2 streaming can be started using the CohStartDDC2 function.

C/C++ declaration

void DDC2StreamCallback(uint32_t DeviceIndex,const float *Buffer,uint32_t NumberOfSamples,uintptr_t UserData);

Parameters

DeviceIndex
Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Buffer
Pointer to the buffer which contains I/Q sample sets from DDC2. Sample rate is given by the DDC type of the DDC2. Use the CohGetDDC2 function to determine the current DDC type of the DDC2. Sample is 32bit IEEE float from range -1.0 to 1.0. One I/Q sample set consists of two samples.
NumberOfSamples
Specifies the number of I/Q sample sets in the buffer pointed to by the Buffer parameter. This value is equal to value of the SamplesPerBuffer parameter of the CohStartDDC2 function.
UserData
User-defined data. It is value passed to the CohSetCallbacks function as the UserData parameter.
DDC2PreprocessedStreamCallback

Pointer to a user-defined function to be registered as pre-processed DDC2 stream callback. It is called by the API to pass preprocessed I/Q samples from DDC2 of device to the application. The samples are filtered by the demodulator filter, notch filter and affected by AGC or fixed gain. The DDC2 streaming can be started using the CohStartDDC2 function.

C/C++ declaration

void DDC2PreprocessedStreamCallback(uint32_t DeviceIndex,const float *Buffer,uint32_t NumberOfSamples,
            float SlevelPeak,float SlevelRMS,uintptr_t UserData);

Parameters

DeviceIndex
Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Buffer
Pointer to the buffer which contains preprocessed I/Q sample sets from DDC2. Sample rate is given by the DDC type of the DDC2. Use the CohGetDDC2 function to determine the current DDC type of the DDC2. Sample is 32bit IEEE float from range -1.0 to 1.0. One I/Q sample set consists of two samples.
NumberOfSamples
Specifies the number of I/Q sample sets in the buffer pointed to by the Buffer parameter. This value is equal to value of the SamplesPerBuffer parameter of the CohStartDDC2 function.
SlevelPeak
Specifies the peak signal level in Volts evaluated from samples stored in the buffer pointed to by the Buffer parameter.
SlevelRMS
Specifies the RMS signal level in Volts evaluated from samples stored in the buffer pointed to by the Buffer parameter. For detailed information on how to convert RMS signal level to dBm, see the remarks of the CohGetSignalLevel function.
UserData
User-defined data. It is value passed to the CohSetCallbacks function as the UserData parameter.
AudioStreamCallback

Pointer to a user-defined function to be registered as audio stream callback. It is called by the API to pass audio samples from the device of the device set to the application. The audio streaming is started using the CohStartAudio function. The callback is invoked three times for each audio buffer (see description of the Type parameter).

C/C++ declaration

void AudioStreamCallback(uint32_t DeviceIndex,uint32_t Type,const float *Buffer,uint32_t NumberOfSamples,uintptr_t UserData);

Parameters

DeviceIndex
Specifies index of the device in the device set. It can vary from zero to 'one less than the number of devices' in the device set.
Type
Specifies the type (stage) of audio samples stored in the buffer pointed to by the Buffer parameter. The value of this parameter can be one of the following:

ValueMeaning
0The buffer contains audio samples affected by audio gain (see CohSetAudioGain).
1The buffer contains audio samples affected by audio gain and audio filter (see CohSetAudioGain and CohSetAudioFilter).
2The buffer contains audio samples affected by audio gain, audio filter and volume (see CohSetAudioGain, CohSetAudioFilter, CohSetVolume and CohSetMute).
Buffer
Pointer to the buffer which contains samples of the audio signal. The signal is mono, sample rate is 48000 Hz, sample is 32bit IEEE float from range -1.0 to 1.0.
NumberOfSamples
Specifies the number of samples stored in the buffer pointed to by the Buffer parameter. This value is equal to the value of the SamplesPerBuffer parameter of the CohStartAudio function.
UserData
User-defined data. It is value passed to the CohSetCallbacks function as the UserData parameter.