refactor core2, i2s

This commit is contained in:
gemu2015 2021-01-20 08:47:43 +01:00
parent a13c85c45e
commit 62649f238e
2 changed files with 40 additions and 57 deletions

View File

@ -94,7 +94,7 @@ uint32_t retryms = 0;
#ifdef SAY_TIME #ifdef SAY_TIME
AudioGeneratorTalkie *talkie = nullptr; AudioGeneratorTalkie *talkie = nullptr;
#endif #endif // SAY_TIME
//! MAX98357A + INMP441 DOUBLE I2S BOARD //! MAX98357A + INMP441 DOUBLE I2S BOARD
#ifdef ESP8266 #ifdef ESP8266
@ -111,22 +111,22 @@ AudioGeneratorTalkie *talkie = nullptr;
#ifndef DAC_IIS_BCK #ifndef DAC_IIS_BCK
#undef DAC_IIS_BCK #undef DAC_IIS_BCK
#define DAC_IIS_BCK 26 #define DAC_IIS_BCK 26
#endif #endif // DAC_IIS_BCK
#ifndef DAC_IIS_WS #ifndef DAC_IIS_WS
#undef DAC_IIS_WS #undef DAC_IIS_WS
#define DAC_IIS_WS 25 #define DAC_IIS_WS 25
#endif #endif // DAC_IIS_WS
#ifndef DAC_IIS_DOUT #ifndef DAC_IIS_DOUT
#undef DAC_IIS_DOUT #undef DAC_IIS_DOUT
#define DAC_IIS_DOUT 33 #define DAC_IIS_DOUT 33
#endif #endif // DAC_IIS_DOUT
#ifndef DAC_IIS_DIN #ifndef DAC_IIS_DIN
#undef DAC_IIS_DIN #undef DAC_IIS_DIN
#define DAC_IIS_DIN 34 #define DAC_IIS_DIN 34
#endif #endif // DAC_IIS_DIN
#endif // ESP32 #endif // ESP32
@ -229,7 +229,7 @@ void sayTime(int hour, int minutes, AudioGeneratorTalkie *talkie) {
out->stop(); out->stop();
AUDIO_PWR_OFF AUDIO_PWR_OFF
} }
#endif #endif // SAY_TIME
// should be in settings // should be in settings
uint8_t is2_volume; uint8_t is2_volume;
@ -382,7 +382,7 @@ uint32_t i2s_record(char *path, uint32_t secs) {
//AddLog_P(LOG_LEVEL_INFO, PSTR("rectime: %d ms"), millis()-stime); //AddLog_P(LOG_LEVEL_INFO, PSTR("rectime: %d ms"), millis()-stime);
SpeakerMic(MODE_SPK); SpeakerMic(MODE_SPK);
// save to path // save to path
SaveWav(mic_path, mic_buff, mic_size); SaveWav(path, mic_buff, mic_size);
free(mic_buff); free(mic_buff);
return 0; return 0;
} }
@ -393,7 +393,8 @@ static const uint8_t wavHTemplate[] PROGMEM = { // Hardcoded simple WAV header w
0x64, 0x61, 0x74, 0x61, 0xff, 0xff, 0xff, 0xff }; 0x64, 0x61, 0x74, 0x61, 0xff, 0xff, 0xff, 0xff };
bool SaveWav(char *path, uint8_t *buff, uint32_t size) { bool SaveWav(char *path, uint8_t *buff, uint32_t size) {
File fwp = ufsp->open(path, FILE_WRITE); File fwp = ufsp->open(path, "w");
if (!fwp) return false;
uint8_t wavHeader[sizeof(wavHTemplate)]; uint8_t wavHeader[sizeof(wavHTemplate)];
memcpy_P(wavHeader, wavHTemplate, sizeof(wavHTemplate)); memcpy_P(wavHeader, wavHTemplate, sizeof(wavHTemplate));
@ -446,7 +447,7 @@ void mp3_task(void *arg) {
} }
} }
} }
#endif #endif // ESP32
#ifdef USE_WEBRADIO #ifdef USE_WEBRADIO
void MDCallback(void *cbData, const char *type, bool isUnicode, const char *str) { void MDCallback(void *cbData, const char *type, bool isUnicode, const char *str) {
@ -541,6 +542,23 @@ void Cmd_WebRadio(void) {
} }
#ifdef USE_M5STACK_CORE2
void Cmd_MicRec(void) {
if (XdrvMailbox.data_len > 0) {
uint16 time = 10;
char *cp = strchr(XdrvMailbox.data, ':');
if (cp) {
time = atoi(cp + 1);
*cp = 0;
}
if (time<10) time = 10;
if (time>30) time = 30;
i2s_record(XdrvMailbox.data, time);
ResponseCmndChar(XdrvMailbox.data);
}
}
#endif // USE_M5STACK_CORE2
const char HTTP_WEBRADIO[] PROGMEM = const char HTTP_WEBRADIO[] PROGMEM =
"{s}" "I2S_WR-Title" "{m}%s{e}"; "{s}" "I2S_WR-Title" "{m}%s{e}";
@ -626,8 +644,11 @@ const char kI2SAudio_Commands[] PROGMEM = "I2S|"
"|Play" "|Play"
#ifdef USE_WEBRADIO #ifdef USE_WEBRADIO
"|WR" "|WR"
#endif #endif // USE_WEBRADIO
#endif #ifdef USE_M5STACK_CORE2
"|REC"
#endif // USE_M5STACK_CORE2
#endif // ESP32
; ;
void (* const I2SAudio_Command[])(void) PROGMEM = { void (* const I2SAudio_Command[])(void) PROGMEM = {
@ -636,8 +657,11 @@ void (* const I2SAudio_Command[])(void) PROGMEM = {
,&Cmd_Play ,&Cmd_Play
#ifdef USE_WEBRADIO #ifdef USE_WEBRADIO
,&Cmd_WebRadio ,&Cmd_WebRadio
#endif #endif // USE_WEBRADIO
#endif #ifdef USE_M5STACK_CORE2
,&Cmd_MicRec
#endif // USE_M5STACK_CORE2
#endif // ESP32
}; };
@ -669,7 +693,7 @@ void Cmd_Say(void) {
void Cmd_Time(void) { void Cmd_Time(void) {
#ifdef SAY_TIME #ifdef SAY_TIME
sayTime(RtcTime.hour, RtcTime.minute, talkie); sayTime(RtcTime.hour, RtcTime.minute, talkie);
#endif #endif // SAY_TIME
ResponseCmndDone(); ResponseCmndDone();
} }
@ -692,8 +716,8 @@ bool Xdrv42(uint8_t function) {
case FUNC_WEB_SENSOR: case FUNC_WEB_SENSOR:
I2S_WR_Show(); I2S_WR_Show();
break; break;
#endif #endif // USE_WEBRADIO
#endif #endif // USE_WEBSERVER
} }
return result; return result;
} }

View File

@ -49,7 +49,6 @@ struct CORE2_globs {
uint8_t wakeup_hour; uint8_t wakeup_hour;
uint8_t wakeup_minute; uint8_t wakeup_minute;
uint8_t shutdowndelay; uint8_t shutdowndelay;
bool timesynced;
} core2_globs; } core2_globs;
struct CORE2_ADC { struct CORE2_ADC {
@ -262,44 +261,6 @@ uint16_t voltage = 2200;
} }
/*
void SetRtc(void) {
RTC_TimeTypeDef RTCtime;
RTCtime.Hours = RtcTime.hour;
RTCtime.Minutes = RtcTime.minute;
RTCtime.Seconds = RtcTime.second;
core2_globs.Rtc.SetTime(&RTCtime);
RTC_DateTypeDef RTCdate;
RTCdate.WeekDay = RtcTime.day_of_week;
RTCdate.Month = RtcTime.month;
RTCdate.Date = RtcTime.day_of_month;
RTCdate.Year = RtcTime.year;
core2_globs.Rtc.SetDate(&RTCdate);
}
*/
// needed for sd card time
void Sync_RTOS_TIME(void) {
if (Rtc.local_time < START_VALID_TIME || core2_globs.timesynced) return;
core2_globs.timesynced = 1;
// Set freertos time for sd card
struct timeval tv;
//tv.tv_sec = Rtc.utc_time;
tv.tv_sec = Rtc.local_time;
tv.tv_usec = 0;
//struct timezone tz;
//tz.tz_minuteswest = 0;
//tz.tz_dsttime = 0;
//settimeofday(&tv, &tz);
settimeofday(&tv, NULL);
}
void GetRtc(void) { void GetRtc(void) {
RTC_TimeTypeDef RTCtime; RTC_TimeTypeDef RTCtime;
@ -372,8 +333,6 @@ void CORE2_EverySecond(void) {
CORE2_DoShutdown(); CORE2_DoShutdown();
} }
} }
Sync_RTOS_TIME();
} }
} }