📄 hamaro_iq.c
字号:
/* hamaro_IQ.c */
/*+++ *******************************************************************\
*
* Copyright and Disclaimer:
*
* ---------------------------------------------------------------
* ALL SOFTWARE, APPLICATIONS, DOCUMENTATION, OR MATERIALS
* FURNISHED HEREIN IS PROVIDED *AS IS*. CONEXANT DOES NOT MAKE
* ANY WARRANTIES, EITHER EXPRESS OR IMPLIED, AND HEREBY EXPRESSLY
* DISCLAIMS ANY AND ALL SUCH WARRANTIES TO THE EXTENT PERMITTED
* BY LAW, INCLUDING, SPECIFICALLY, ANY IMPLIED WARRANTY ARISING
* BY STATUTE OR OTHERWISE IN LAW OR FROM A COURSE OF DEALING OR
* USAGE OF TRADE. CONEXANT DOES NOT MAKE ANY WARRANTIES, EITHER
* EXPRESS OR IMPLIED, AND HEREBY EXPRESSLY DISCLAIMS ANY AND ALL
* SUCH WARRANTIES WITH RESPECT TO ALL SOFTWARE, APPLICATIONS,
* DOCUMENTATION, AND MATERIALS INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY, OR OF MERCHANTABLE QUALITY, OR OF FITNESS
* FOR ANY PURPOSE, PARTICULAR, SPECIFIC OR OTHERWISE, OR OF
* NONINFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OF OTHERS,
* RELATING TO THE SOFTWARE, APPLICATIONS, OPERATION,
* DOCUMENTATION, DATA OR RESULTS GENERATED BY THE OPERATION OR
* USE THEREOF, AND MATERIALS PROVIDED HEREIN. THE ENTIRE RISK AS
* TO THE SUBSTANCE, QUALITY AND PERFORMANCE OF SOFTWARE,
* APPLICATIONS, AND DOCUMENTATION DESCRIBING SUCH SOFTWARE
* REMAINS WITH THE BUYER.
*
* REGARDLESS OF WHETHER ANY REMEDY SET FORTH HEREIN FAILS OF ITS
* ESSENTIAL PURPOSE OR OTHERWISE, CONEXANT SHALL NOT BE LIABLE
* FOR ANY EXEMPLARY, SPECIAL, PUNITIVE, SPECULATIVE, INDIRECT,
* CONSEQUENTIAL OR INCIDENTAL DAMAGES OF ANY KIND (INCLUDING
* WITHOUT LIMITATION LOST PROFITS, LOSS OF INCOME, LOSS OF
* GOODWILL, OR OTHER TANGIBLE OR INTANGIBLE BUSINESS LOSS)
* ARISING OUT OF OR IN CONNECTION WITH, DIRECTLY OR INDIRECTLY,
* SOFTWARE, APPLICATIONS, DOCUMENTATION, OR ANY SERVICES OR
* MATERIALS PROVIDED HEREUNDER, OR USE OR INABILITY TO USE THE
* SOFTWARE, EVEN IF CONEXANT HAS BEEN ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGES.
*
* Copyright (c) 2001 Conexant Systems, Inc.
* All Rights Reserved.
* ---------------------------------------------------------------
*
* Module Revision Id:
*
* $Header: hamaro_iq.c, 1, 2005-7-31 5:45:12, ShenWei Wang$
*
* Abstract:
*
* Contains software for capturing constellation (I and Q values)
* data into a user-defined ring buffer.
*
\******************************************************************* ---*/
#include <stdio.h> /* ANSI Standard */
#include "hamaro.h" /* Cobra include files, ordered */
#ifdef HAMARO_INCLUDE_CONSTELLATION
/*******************************************************************************************************/
/* HAMARO_ConstON() */
/*******************************************************************************************************/
BOOL HAMARO_ConstOn( /* function to turn-on the collection oc constellation data */
HAMARO_NIM *nim, /* pointer to nim */
HAMARO_IQPAK *iqpak) /* pointer to storage for HAMARO_IQPAK data */
{
int i = 0;
/* test for valid HAMARO_NIM */
HAMARO_DRIVER_VALIDATE_NIM(nim);
/* test for valid iqpak */
nim->iqpak = iqpak;
if (HAMARO_DRIVER_ValidateNimIq(nim) == False) return(False);
/* clear the struct of data */
for (i = 0 ; i < HAMARO_MAX_CONSTLIQ ; i++)
{
iqpak->I[i] = 0;
iqpak->Q[i] = 0;
}
/* save the pointer to the alloc'd storage */
nim->iqpak = iqpak;
/* set the head/tail */
iqpak->head = 0;
iqpak->tail = 0;
/* save the number of samples desired, clear the busy flag */
iqpak->max = HAMARO_MAX_CONSTLIQ;
iqpak->busy = False;
return(True);
} /* HAMARO_ConstON() */
/*******************************************************************************************************/
/* HAMARO_ConstOFF() */
/*******************************************************************************************************/
BOOL HAMARO_ConstOff( /* function to discontinue collection of IQ data */
HAMARO_NIM *nim) /* pointer to nim */
{
/* test for valid IQ pointer */
if (HAMARO_DRIVER_ValidateNimIq(nim) == False) return(False);
nim->iqpak->head = 0;
nim->iqpak->tail = 0;
/* kill the pointer in the nim */
nim->iqpak = NULL;
return(True);
} /* HAMARO_ConstOFF() */
/*******************************************************************************************************/
/* HAMARO_ConstOFF() */
/*******************************************************************************************************/
int HAMARO_ConstCount( /* function returning count of IQ elements stored in HAMARO_IQPAK */
HAMARO_NIM *nim) /* pointer to nim */
{
/* test for valid HAMARO_NIM, IQ pointer */
HAMARO_DRIVER_VALIDATE_NIM(nim);
if (HAMARO_DRIVER_ValidateNimIq(nim) == False) return(False);
return(HAMARO_IQ_ConstCount(nim));
} /* HAMARO_ConstOFF() */
/*******************************************************************************************************/
/* HAMARO_ConstSetBusy() */
/*******************************************************************************************************/
BOOL HAMARO_ConstSetBusy( /* function set IQ busy flag (if set, suspend IQ collection) */
HAMARO_NIM *nim, /* pointer to nim */
BOOL busy_state) /* state: True=busy, False=not busy */
{
/* test for valid IQ pointer */
if (HAMARO_DRIVER_ValidateNimIq(nim) == False) return(False);
/* set busy state */
nim->iqpak->busy = busy_state;
return(True);
} /* HAMARO_ConstSetBusy() */
/*******************************************************************************************************/
/* HAMARO_ConstGetBusy() */
/*******************************************************************************************************/
BOOL HAMARO_ConstGetBusy( /* function to return state of current IQ busy flag */
HAMARO_NIM *nim) /* pointer to nim */
{
/* test for valid IQ pointer */
if (HAMARO_DRIVER_ValidateNimIq(nim) == False) return(False);
/* return busy state */
return(nim->iqpak->busy);
} /* HAMARO_ConstGetBusy() */
/*******************************************************************************************************/
/* HAMARO_ConstGetPoints() */
/*******************************************************************************************************/
BOOL HAMARO_ConstGetPoints( /* function to return a iqcount of IQ samples */
HAMARO_NIM *nim, /* pointer to nim */
unsigned char *ivals, /* storage for I portion of data */
unsigned char *qvals, /* storage for Q portion of data */
int iqcount) /* count of IQ samples to retrieve */
{
int cnt;
int ptr;
/* test for valid IQ pointer */
if (HAMARO_DRIVER_ValidateNimIq(nim) == False) return(False);
/* test for valid buffers */
if (ivals == NULL || qvals == NULL)
{
/* invalid pointer */
HAMARO_DRIVER_SET_ERROR(nim,HAMARO_CONST_IQBUF);
return(False);
}
/* test for minimum count of I, Q samples available to caller */
if (iqcount > HAMARO_IQ_ConstCount(nim))
{
HAMARO_DRIVER_SET_ERROR(nim,HAMARO_CONST_IQLOW);
return(False);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -