source: rtos_arduino/trunk/arduino_lib/libraries/Audio/src/Audio.h@ 136

Last change on this file since 136 was 136, checked in by ertl-honda, 8 years ago

ライブラリとOS及びベーシックなサンプルの追加.

File size: 1.7 KB
Line 
1/*
2 * Copyright (c) 2012 by Cristian Maglie <c.maglie@arduino.cc>
3 * Audio library for Arduino Due.
4 *
5 * This file is free software; you can redistribute it and/or modify
6 * it under the terms of either the GNU General Public License version 2
7 * or the GNU Lesser General Public License version 2.1, both as
8 * published by the Free Software Foundation.
9 */
10
11#ifndef AUDIO_H
12#define AUDIO_H
13
14#include "Arduino.h"
15#include "Print.h"
16#include "DAC.h"
17
18class AudioClass : public Print {
19public:
20 AudioClass(DACClass &_dac) : dac(&_dac) { };
21 void prepare(int16_t *buffer, int S, int volume);
22 void begin(uint32_t sampleRate, uint32_t msPreBuffer);
23 void end();
24
25 virtual size_t write(uint8_t c) { /* not implemented */ };
26 virtual size_t write(const uint8_t *data, size_t size) { return write(reinterpret_cast<const uint32_t*>(data), size/4) * 4; };
27 virtual size_t write(const uint16_t *data, size_t size) { return write(reinterpret_cast<const uint32_t*>(data), size/2) * 2; };
28 virtual size_t write(const int16_t *data, size_t size) { return write(reinterpret_cast<const uint32_t*>(data), size/2) * 2; };
29 virtual size_t write(const uint32_t *data, size_t size);
30
31 void debug() {
32// Serial1.print(running-buffer, DEC);
33// Serial1.print(" ");
34// Serial1.print(current-buffer, DEC);
35// Serial1.print(" ");
36// Serial1.print(next-buffer, DEC);
37// Serial1.print(" ");
38// Serial1.println(last-buffer, DEC);
39 }
40private:
41 void enqueue();
42 static void onTransmitEnd(void *me);
43 uint32_t bufferSize;
44 uint32_t *buffer;
45 uint32_t *half;
46 uint32_t *last;
47 uint32_t *volatile running;
48 uint32_t *volatile next;
49
50 uint32_t *cook(const uint32_t *buffer, size_t size);
51
52 DACClass *dac;
53};
54
55extern AudioClass Audio;
56
57#endif
Note: See TracBrowser for help on using the repository browser.