From 044ad7c3987460ede48ff27afd6bdb0ca05a0432 Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Mon, 4 Jul 2011 20:52:54 +0200 Subject: import at91lib from at91lib_20100901_softpack_1_9_v_1_0_svn_v15011 it's sad to see that atmel doesn't publish their svn repo or has a centralized location or even puts proper version/release info into the library itself --- usb/device/audio-speaker/AUDDSpeakerDriver.h | 201 +++++++++++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 usb/device/audio-speaker/AUDDSpeakerDriver.h (limited to 'usb/device/audio-speaker/AUDDSpeakerDriver.h') diff --git a/usb/device/audio-speaker/AUDDSpeakerDriver.h b/usb/device/audio-speaker/AUDDSpeakerDriver.h new file mode 100644 index 0000000..133d6df --- /dev/null +++ b/usb/device/audio-speaker/AUDDSpeakerDriver.h @@ -0,0 +1,201 @@ +/* ---------------------------------------------------------------------------- + * 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 +#include +#include + +//------------------------------------------------------------------------------ +// 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 +// -- cgit v1.2.3