?? packetassembler.c
字號(hào):
/*****************************************************************************
* *
* ********** *
* ************ *
* *** *** *
* *** +++ *** *
* *** + + *** *
* *** + CHIPCON CC1010 Wireless audio project *
* *** + + *** *
* *** +++ *** PacketAssembler for the slave unit *
* *** *** *
* *********** *
* ********* *
* *
*****************************************************************************
* This source file is part of a software project for a Full Duplex, *
* single-chip, wireless intercom, written for the CC1010 chip *
* (RF-transceiver chip with integrated 8051 micro-controller). *
*****************************************************************************
* Author: OAE *
*****************************************************************************
* Revision history: *
* *
* $Log: PacketAssembler.c,v $
* Revision 1.1 2003/08/04 12:33:14 tos
* Initial version in CVS.
*
* *
* *
****************************************************************************/
#include <chipcon/reg1010.h>
#include <chipcon/cc1010eb.h>
#include <chipcon/hal.h>
// Define transmit buffers
#define BUFFER_SIZE 256
#define BUFFER0 0
#define BUFFER1 1
// Set up RAM buffers for halDES() at absolute addresses
byte xdata transmitbuffer0[BUFFER_SIZE] _at_ 0x0000;
byte xdata transmitbuffer1[BUFFER_SIZE] _at_ 0x0100;
// Define buffer pointers
const byte xdata *transmit_buffer_start_ptr0 = &transmitbuffer0[0];
const byte xdata *transmit_buffer_start_ptr1 = &transmitbuffer1[0];
byte xdata *transmit_buffer_write_ptr;
// Variables for transmit buffer
byte transmitwritecounter = 0;
bit readytobuffer = 0;
byte transmitcode = 0;
bit currenttransmitbuffer = 0;
// Function prototypes
byte DpcmEncoder (byte sample, bit returncode);
/**************************************************************************
* PacketAssembler() - Routine for packet assembling *
***************************************************************************
* Description: *
* Used to build a packet of encoded speech samples, which is stored *
* in the transmit buffer. *
***************************************************************************
* Input arguments: *
* byte sample: Unsigned PCM speech sample (0-255). *
* Return value: *
* None *
**************************************************************************/
void PacketAssembler(byte sample)
{
/* A predicted sample (not the coded difference) is saved
at the first buffer position */
if (transmitwritecounter == 0)
{
/* Encode the sample to get a new encoder predicted sample
Save the predicted sample in buffer */
if (currenttransmitbuffer == BUFFER0)
*(transmit_buffer_write_ptr = transmit_buffer_start_ptr0)
= DpcmEncoder(sample,0);
else
*(transmit_buffer_write_ptr = transmit_buffer_start_ptr1)
= DpcmEncoder(sample,0);
// Initialize the readytobuffer flag
readytobuffer = 0;
// Increment write counter
transmitwritecounter++;
}// End if
else// (transmitwritecounter != 0)
{
// Code a sound sample
transmitcode |= DpcmEncoder(sample,1);
// Buffer the transmitcode when containing two coded samples (2*4 bit)
if (readytobuffer)
{
// Save the encoded byte in buffer
*transmit_buffer_write_ptr = transmitcode;
// Increment write counter
transmitwritecounter++;
// Reset transmitcode
transmitcode = 0;
}// End if
else //(!readytobuffer)
{
// Shift the contents in transmitcode to the MSB end of the byte
transmitcode <<= 4;
// Increment write pointer
transmit_buffer_write_ptr++;
}// End else
// Toggle readytobuffer
readytobuffer = !readytobuffer;
}// End else
}// End function
/**************************************************************************
* InitializeAssembler() - Initialization of the PacketAssembler() *
***************************************************************************
* Description: *
* Used to reset and initialize the function PacketAssembler(). This is *
* done by forcing the transmitwritecounter to zero and switching *
* between the two transmit buffers. *
***************************************************************************
* Input arguments: *
* None. *
* Return value: *
* None *
**************************************************************************/
void InitializeAssembler()
{
transmitwritecounter = 0;
// Switch buffer
currenttransmitbuffer = !currenttransmitbuffer;
}// End function
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -