mirror of
https://github.com/opentx/opentx.git
synced 2025-07-25 17:25:13 +03:00
companion9x compilation
This commit is contained in:
parent
7911dd927f
commit
d46c65c8fd
3 changed files with 33 additions and 20 deletions
|
@ -73,6 +73,7 @@ void audioTimerHandle(void)
|
||||||
// TODO Should be here!
|
// TODO Should be here!
|
||||||
extern uint16_t Sine_values[];
|
extern uint16_t Sine_values[];
|
||||||
|
|
||||||
|
#define WAV_HEADER_SIZE 36
|
||||||
|
|
||||||
void audioTask(void* pdata)
|
void audioTask(void* pdata)
|
||||||
{
|
{
|
||||||
|
@ -88,26 +89,35 @@ void audioTask(void* pdata)
|
||||||
#ifndef SIMU
|
#ifndef SIMU
|
||||||
if (toneWavFile[0]) {
|
if (toneWavFile[0]) {
|
||||||
FRESULT result = FR_OK;
|
FRESULT result = FR_OK;
|
||||||
|
UINT read;
|
||||||
uint16_t bufsize = 2*WAV_BUFFER_SIZE;
|
uint16_t bufsize = 2*WAV_BUFFER_SIZE;
|
||||||
uint16_t * bufdata = wavSamplesBuffer;
|
uint16_t * bufdata = wavSamplesBuffer;
|
||||||
if (toneWavFile[1]) {
|
if (toneWavFile[1]) {
|
||||||
result = f_open(&wavFile, toneWavFile, FA_OPEN_EXISTING | FA_READ);
|
result = f_open(&wavFile, toneWavFile, FA_OPEN_EXISTING | FA_READ);
|
||||||
toneWavFile[1] = '\0';
|
if (result == FR_OK) {
|
||||||
bufdata = wavSamplesArray;
|
uint8_t wavHeader[WAV_HEADER_SIZE];
|
||||||
bufsize = 4*WAV_BUFFER_SIZE;
|
result = f_read(&wavFile, (uint8_t *)wavHeader, WAV_HEADER_SIZE, &read);
|
||||||
register Dacc *dacptr = DACC;
|
if (result == FR_OK && read == WAV_HEADER_SIZE && !memcmp(wavHeader, "RIFF", 4)) {
|
||||||
dacptr->DACC_TPR = (uint32_t)wavSamplesArray;
|
bufdata = wavSamplesArray;
|
||||||
wavSamplesBuffer = wavSamplesArray + WAV_BUFFER_SIZE;
|
bufsize = 4*WAV_BUFFER_SIZE;
|
||||||
dacptr->DACC_TNPR = (uint32_t)wavSamplesBuffer;
|
register Dacc *dacptr = DACC;
|
||||||
dacptr->DACC_TCR = WAV_BUFFER_SIZE/2;
|
dacptr->DACC_TPR = CONVERT_PTR(wavSamplesArray);
|
||||||
dacptr->DACC_TNCR = WAV_BUFFER_SIZE/2;
|
wavSamplesBuffer = wavSamplesArray + WAV_BUFFER_SIZE;
|
||||||
setFrequency(12000);
|
dacptr->DACC_TNPR = CONVERT_PTR(wavSamplesBuffer);
|
||||||
toneStart();
|
dacptr->DACC_TCR = WAV_BUFFER_SIZE/2;
|
||||||
|
dacptr->DACC_TNCR = WAV_BUFFER_SIZE/2;
|
||||||
|
setFrequency((wavHeader[24] << 8) + wavHeader[25]);
|
||||||
|
toneStart();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
result = FR_DENIED;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
UINT read;
|
|
||||||
if (result != FR_OK || f_read(&wavFile, (uint8_t *)bufdata, bufsize, &read) != FR_OK || read != bufsize) {
|
if (result != FR_OK || f_read(&wavFile, (uint8_t *)bufdata, bufsize, &read) != FR_OK || read != bufsize) {
|
||||||
f_close(&wavFile);
|
|
||||||
toneWavFile[0] = '\0';
|
toneWavFile[0] = '\0';
|
||||||
|
f_close(&wavFile);
|
||||||
toneStop();
|
toneStop();
|
||||||
}
|
}
|
||||||
#if 1
|
#if 1
|
||||||
|
@ -125,9 +135,9 @@ void audioTask(void* pdata)
|
||||||
CoSetTmrCnt(audioTimer, toneTimeLeft, 0);
|
CoSetTmrCnt(audioTimer, toneTimeLeft, 0);
|
||||||
toneTimeLeft = 0;
|
toneTimeLeft = 0;
|
||||||
// TODO function for that ...
|
// TODO function for that ...
|
||||||
DACC->DACC_TPR = (uint32_t) Sine_values ;
|
DACC->DACC_TPR = CONVERT_PTR(Sine_values);
|
||||||
DACC->DACC_TCR = 50 ; // words, 100 16 bit values
|
DACC->DACC_TCR = 50 ; // words, 100 16 bit values
|
||||||
DACC->DACC_TNPR = (uint32_t) Sine_values ;
|
DACC->DACC_TNPR = CONVERT_PTR(Sine_values);
|
||||||
DACC->DACC_TNCR = 50 ; // words, 100 16 bit values
|
DACC->DACC_TNCR = 50 ; // words, 100 16 bit values
|
||||||
setFrequency(toneFreq * 6100 / 2);
|
setFrequency(toneFreq * 6100 / 2);
|
||||||
toneStart();
|
toneStart();
|
||||||
|
|
|
@ -43,8 +43,11 @@
|
||||||
#include "AT91SAM3S4.h"
|
#include "AT91SAM3S4.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef SIMU
|
#ifdef SIMU
|
||||||
|
#define CONVERT_PTR(x) ((uint32_t)(uint64_t)(x))
|
||||||
|
#else
|
||||||
#include "core_cm3.h"
|
#include "core_cm3.h"
|
||||||
|
#define CONVERT_PTR(x) ((uint32_t)(x))
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
|
@ -163,8 +163,8 @@ void initDac()
|
||||||
#endif
|
#endif
|
||||||
dacptr->DACC_CDR = 2048 ; // Half amplitude
|
dacptr->DACC_CDR = 2048 ; // Half amplitude
|
||||||
// Data for PDC must NOT be in flash, PDC needs a RAM source.
|
// Data for PDC must NOT be in flash, PDC needs a RAM source.
|
||||||
dacptr->DACC_TPR = (uint32_t) Sine_values ;
|
dacptr->DACC_TPR = CONVERT_PTR(Sine_values);
|
||||||
dacptr->DACC_TNPR = (uint32_t) Sine_values ;
|
dacptr->DACC_TNPR = CONVERT_PTR(Sine_values);
|
||||||
dacptr->DACC_TCR = 50 ; // words, 100 16 bit values
|
dacptr->DACC_TCR = 50 ; // words, 100 16 bit values
|
||||||
dacptr->DACC_TNCR = 50 ; // words, 100 16 bit values
|
dacptr->DACC_TNCR = 50 ; // words, 100 16 bit values
|
||||||
dacptr->DACC_PTCR = DACC_PTCR_TXTEN ;
|
dacptr->DACC_PTCR = DACC_PTCR_TXTEN ;
|
||||||
|
@ -182,11 +182,11 @@ extern "C" void DAC_IRQHandler()
|
||||||
CoSetFlag(audioFlag);
|
CoSetFlag(audioFlag);
|
||||||
CoExitISR(); // Exit the interrupt
|
CoExitISR(); // Exit the interrupt
|
||||||
wavSamplesBuffer = (wavSamplesBuffer == wavSamplesArray) ? wavSamplesArray+WAV_BUFFER_SIZE : wavSamplesArray;
|
wavSamplesBuffer = (wavSamplesBuffer == wavSamplesArray) ? wavSamplesArray+WAV_BUFFER_SIZE : wavSamplesArray;
|
||||||
DACC->DACC_TNPR = (uint32_t)wavSamplesBuffer;
|
DACC->DACC_TNPR = CONVERT_PTR(wavSamplesBuffer);
|
||||||
DACC->DACC_TNCR = WAV_BUFFER_SIZE/2;
|
DACC->DACC_TNCR = WAV_BUFFER_SIZE/2;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
DACC->DACC_TNPR = (uint32_t) Sine_values ;
|
DACC->DACC_TNPR = CONVERT_PTR(Sine_values);
|
||||||
DACC->DACC_TNCR = 50 ; // words, 100 16 bit values
|
DACC->DACC_TNCR = 50 ; // words, 100 16 bit values
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue