📄 libsi3000dcifill.c
字号:
/*********************************************************************
* *
* Software License Agreement *
* *
* The software supplied herewith by Microchip Technology *
* Incorporated (the "Company") for its dsPIC controller *
* is intended and supplied to you, the Company's customer, *
* for use solely and exclusively on Microchip dsPIC *
* products. The software is owned by the Company and/or its *
* supplier, and is protected under applicable copyright laws. All *
* rights are reserved. Any use in violation of the foregoing *
* restrictions may subject the user to criminal sanctions under *
* applicable laws, as well as to civil liability for the breach of *
* the terms and conditions of this license. *
* *
* THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION. NO *
* WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, *
* BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND *
* FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE *
* COMPANY SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, *
* INCIDENTAL OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. *
* *
*********************************************************************/
/******************************************************************************
**
** Filename: libSi3000DCIFill.c
**
** System: RISC
**
** Platform: dsPIC33F
**
** Description: This file contains only libSi3000DCIFill( )API.This API fills
** the user defined ping pong buffers with real time speech
** samples from SI 3000 codec through DCI.
**
******************************************************************************/
#include <p33Fxxxx.h>
#include "G711Lib_common.h"
#include "G711Lib_si3000.h"
#include "G711Lib_internal.h"
/******************************************************************************
**
** Function Name: libSi3000DCIFill ( )
**
** Description: This API is called in the DCI ISR for moving data from the
** DCI buffer registers RXBUFx's to the user defined ping pong
** buffers.It accesses members of the codecsetup structure. It
** has no outputs.The user should take care to set the DCI
** buffer length such that the number of samples per frame
** should be divisible by it.
**
******************************************************************************/
void __attribute__((section("libG711")))libSi3000DCIFill ( void )
{
short *temp1; //Temporary variable.
*( codecdata.sampleIpBuffer ) = RXBUF0;//DCI buffer length equal to 4.
( codecdata.sampleIpBuffer )++;
*( codecdata.sampleIpBuffer ) = RXBUF1;
( codecdata.sampleIpBuffer )++;
*( codecdata.sampleIpBuffer ) = RXBUF2;
( codecdata.sampleIpBuffer )++;
*( codecdata.sampleIpBuffer ) = RXBUF3;
( codecdata.sampleIpBuffer )++;
codecdata.countFill += BUFFERLENGTH;
TXBUF0 = 0x0000; //Send digital silence to SI 3000 codec.
TXBUF1 = 0x0000;
TXBUF2 = 0x0000;
TXBUF3 = 0x0000;
/* Check if the buffer has been filled to its capacity. */
if ( codecdata.countFill == NUMOFSAMPLESPERBLOCK )
{
codecdata.countFill = 0x0000; //Clear data fill counter
/* Rewind to the begining of the sample buffer. */
(codecdata.sampleIpBuffer) -= ( NUMOFSAMPLESPERBLOCK );
/* Exchange the addresses of sample buffer pointers in to the pointer
to sample buffers to manage the user defined ping pong buffers */
temp1 = codecdata.sampleIpBuffer;
codecdata.sampleIpBuffer = codecdata.sampleOpBuffer;
codecdata.sampleOpBuffer = temp1;
/* Set the flag to indicate that one buffer has filled to its capacity and
is ready for use */
codecdata.fBlockdone = 0x01;
(codecdata.blockCount)++;
}
}
/*-----------------------------------------------------------------------------
END OF FILE: libSi3000DCIFill.c
-----------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -