⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 auddspeakerdriver.h

📁 本代bootloader通过usb下载代码首先存放在sdram中
💻 H
字号:
/* ----------------------------------------------------------------------------
 *         ATMEL Microcontroller Software Support 
 * ----------------------------------------------------------------------------
 * Copyright (c) 2008, Atmel Corporation
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the disclaimer below.
 *
 * Atmel's name may not be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * ----------------------------------------------------------------------------
 */

/**
 \unit

 !Purpose

    Definition of a USB Audio Speaker Driver with two playback channels and one
    record channel.

 !Usage

    -# Enable and setup USB related pins (see pio & board.h).
    -# Configure the USB Audio Speaker driver using
       AUDDSpeakerDriver_Initialize
    -# To get %audio stream frames from host, use
       AUDDSpeakerDriver_Read
    -# To send %audio sampling stream to host, use
       AUDDSpeakerDriver_Write

*/

#ifndef AUDDSPEAKERDRIVER_H
#define AUDDSPEAKERDRIVER_H

//------------------------------------------------------------------------------
//         Headers
//------------------------------------------------------------------------------

#include <board.h>
#include <usb/common/core/USBGenericRequest.h>
#include <usb/device/core/USBD.h>

//------------------------------------------------------------------------------
//         Definitions
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
/// \page "Audio Speaker stream information"
///
/// This page lists codes for USB Audio Speaker stream information.
///
/// !Code
/// - AUDDSpeakerDriver_SAMPLERATE
/// - AUDDSpeakerDriver_NUMCHANNELS
/// - AUDDSpeakerDriver_BYTESPERSAMPLE
/// - AUDDSpeakerDriver_BITSPERSAMPLE
/// - AUDDSpeakerDriver_SAMPLESPERFRAME
/// - AUDDSpeakerDriver_BYTESPERFRAME

#if defined(at91sam7s)
 /// Sample rate in Hz.
 #define AUDDSpeakerDriver_SAMPLERATE        32000
 /// Number of channels in audio stream.
 #define AUDDSpeakerDriver_NUMCHANNELS       1
 /// Number of bytes in one sample.
 #define AUDDSpeakerDriver_BYTESPERSAMPLE    2
#else
 /// Sample rate in Hz.
 #define AUDDSpeakerDriver_SAMPLERATE        48000
 /// Number of channels in audio stream.
 #define AUDDSpeakerDriver_NUMCHANNELS       2
 /// Number of bytes in one sample.
 #define AUDDSpeakerDriver_BYTESPERSAMPLE    2
#endif
/// Number of bits in one sample.
#define AUDDSpeakerDriver_BITSPERSAMPLE     (AUDDSpeakerDriver_BYTESPERSAMPLE * 8)
/// Number of bytes in one USB subframe.
#define AUDDSpeakerDriver_BYTESPERSUBFRAME  (AUDDSpeakerDriver_NUMCHANNELS * \
                                             AUDDSpeakerDriver_BYTESPERSAMPLE)
/// Number of samples in one USB frame.
#define AUDDSpeakerDriver_SAMPLESPERFRAME   (AUDDSpeakerDriver_SAMPLERATE / 1000 \
                                             * AUDDSpeakerDriver_NUMCHANNELS)
/// Number of bytes in one USB frame.
#define AUDDSpeakerDriver_BYTESPERFRAME     (AUDDSpeakerDriver_SAMPLESPERFRAME * \
                                             AUDDSpeakerDriver_BYTESPERSAMPLE)
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
/// \page "Audio Speaker Channel Numbers"
///
/// This page lists codes for USB Audio Speaker channel numbers.
///
/// !Playback channel numbers
/// - AUDDSpeakerDriver_MASTERCHANNEL
/// - AUDDSpeakerDriver_LEFTCHANNEL
/// - AUDDSpeakerDriver_RIGHTCHANNEL
///
/// !Record channel number
/// - AUDDSpeakerDriver_RECCHANNEL

/// Master channel of playback.
#define AUDDSpeakerDriver_MASTERCHANNEL     0
/// Front left channel of playback.
#define AUDDSpeakerDriver_LEFTCHANNEL       1
/// Front right channel of playback.
#define AUDDSpeakerDriver_RIGHTCHANNEL      2
/// Channel of record.
#define AUDDSpeakerDriver_RECCHANNEL        0
//------------------------------------------------------------------------------

//------------------------------------------------------------------------------
//         Exported functions
//------------------------------------------------------------------------------

extern void AUDDSpeakerDriver_Initialize();

extern void AUDDSpeakerDriver_RequestHandler(const USBGenericRequest *request);

extern unsigned char AUDDSpeakerDriver_Read(void *buffer,
                                            unsigned int length,
                                            TransferCallback callback,
                                            void *argument);

#endif //#ifndef AUDDSPEAKERDRIVER_H

//#ifndef SPEAKER_DRIVER_H
//#define SPEAKER_DRIVER_H
//
////------------------------------------------------------------------------------
////         Definitions
////------------------------------------------------------------------------------
//
///*! Sampling frequency in Hz */
//#define SPEAKER_SAMPLERATE          48000
///*! Number of samples in one isochronous packet (1ms frame) */
//#define SPEAKER_SAMPLESPERPACKET     (SPEAKER_SAMPLERATE / 1000)
///*! Size of one sample (in bytes) */
//#define SPEAKER_SAMPLESIZE          2
///*! Number of channels */
//#define SPEAKER_NUMCHANNELS         2
///*! Size of one frame (number of bytes sent for one sample on all channels) */
//#define SPEAKER_FRAMESIZE           (SPEAKER_SAMPLESIZE * SPEAKER_NUMCHANNELS)
///*! Required bit rate given the sample frequency, sample size and number of
//    channels. */
//#define SPEAKER_BITRATE             (SPEAKER_SAMPLERATE * SPEAKER_FRAMESIZE)
///*! Size of one isochronous packet */
//#define SPEAKER_PACKETSIZE          (SPEAKER_SAMPLESPERPACKET * SPEAKER_FRAMESIZE)
//
////------------------------------------------------------------------------------
////         Structures
////------------------------------------------------------------------------------
///*!
//    Holds the speaker driver state.
// */
//typedef struct {
//
//    S_std_class   standardDriver;
//
//    unsigned char isOutStreamEnabled;
//    unsigned char isChannelMuted[SPEAKER_NUMCHANNELS+1];
//
//    Callback_f    outStreamStatusChanged;
//    Callback_f    outStreamMuteChanged;
//
//} __attribute__((packed)) S_speaker;
//
////------------------------------------------------------------------------------
////         Exported functions
////------------------------------------------------------------------------------
//
//extern void SPK_Init(S_speaker *speakerDriver, const S_usb *usbDriver);
//extern void SPK_SetCallbacks(S_speaker *speakerDriver,
//                             Callback_f outStreamStatusChanged,
//                             Callback_f outStreamMuteChanged);
//extern void SPK_RequestHandler(S_speaker *speakerDriver);
//extern char SPK_Read(S_speaker *speakerDriver,
//                     void *buffer,
//                     unsigned int length,
//                     Callback_f callback,
//                     void *argument);
//
//#endif //#ifndef SPEAKER_DRIVER_H
//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -