-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 73c944a
Showing
41 changed files
with
5,579 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
.vscode | ||
.DS_Store |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
#include <wvr_pins.h> | ||
#include <button_struct.h> | ||
#include <ws_log.h> | ||
#include <wvr_ui.h> | ||
#include <WVR.h> | ||
#include <midiXparser.h> | ||
#include <midi_in.h> | ||
#include <wav_player.h> | ||
#include <button.h> | ||
#include <rpc.h> | ||
#include <file_system.h> | ||
#include <wvr_0.3.h> | ||
|
||
WVR wvr; | ||
Button btn1(D2, FALLING, 300); | ||
|
||
bool serverOn = true; | ||
|
||
void on1(void) | ||
{ | ||
// wvr.play(0,40,127); | ||
if(serverOn) | ||
{ | ||
wvr.serverPause(); | ||
} | ||
else | ||
{ | ||
wvr.serverResume(); | ||
} | ||
serverOn = !serverOn; | ||
} | ||
|
||
void setup() { | ||
// put your setup code here, to run once: | ||
wvr.begin(); | ||
pinMode(D2, INPUT_PULLUP); | ||
btn1.onPress(on1); | ||
} | ||
|
||
void loop() { | ||
// put your main code here, to run repeatedly: | ||
vTaskDelay(portMAX_DELAY); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# Syntax Coloring Map For ExampleLibrary | ||
|
||
# Datatypes (KEYWORD1) | ||
|
||
# Methods and Functions (KEYWORD2) | ||
onPress KEYWORD2 | ||
onRelease KEYWORD2 | ||
play KEYWORD2 | ||
serverPause KEYWORD2 | ||
serverResume KEYWORD2 | ||
|
||
# Instances (KEYWORD2) | ||
WVR KEYWORD2 | ||
Button KEYWORD2 | ||
|
||
# Structures KEYWORD3 | ||
wav_player_event_t KEYWORD3 | ||
|
||
# Constants (LITERAL1) | ||
D0 LITERAL1 | ||
D1 LITERAL1 | ||
D2 LITERAL1 | ||
D3 LITERAL1 | ||
D4 LITERAL1 | ||
D5 LITERAL1 | ||
D6 LITERAL1 | ||
D7 LITERAL1 | ||
D8 LITERAL1 | ||
D9 LITERAL1 | ||
D10 LITERAL1 | ||
D11 LITERAL1 | ||
D12 LITERAL1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
{ | ||
"name":"WVR", | ||
"description":"Firmware for WVR, the ESP32 Audio Board", | ||
"keywords":"wvr,audio,esp32", | ||
"authors": | ||
{ | ||
"name": "Andrew March", | ||
"maintainer": true | ||
}, | ||
"repository": | ||
{ | ||
"type": "git", | ||
"url": "https://github.com/marchingband/WVR.git" | ||
}, | ||
"version": "0.0.1", | ||
"license": "LGPL-3.0", | ||
"frameworks": "arduino", | ||
"platforms": ["espressif32"], | ||
"dependencies": [ | ||
{ | ||
"name": "AsyncTCP", | ||
"platforms": "espressif32" | ||
}, | ||
{ | ||
"name": "ESPAsyncWebServer", | ||
"platforms": "espressif32" | ||
}, | ||
{ | ||
"name": "Adafruit_NeoPixel", | ||
"platforms": "espressif32" | ||
} | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
name=WVR | ||
version=0.1.1 | ||
author=Andrew March | ||
maintainer=Andrew March | ||
sentence=Firmware for WVR, the ESP32 Audio Board | ||
paragraph=Firmware for WVR, the ESP32 Audio Board | ||
category=Other | ||
url=https://github.com/marchingband/WVR | ||
architectures=* | ||
depends=AsyncTCP,ESPAsyncWebServer,Adafruit_NeoPixel |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,26 @@ | ||
#include "Arduino.h" | ||
#include "WVR.h" | ||
#include "wvr_0.3.h" | ||
#include "wav_player.h" | ||
#include "server.h" | ||
|
||
WVR::WVR() | ||
{ | ||
} | ||
|
||
void WVR::begin() | ||
{ | ||
wvr_init(); | ||
} | ||
void WVR::play(uint8_t voice, uint8_t note, uint8_t velocity) | ||
{ | ||
play_wav(voice,note,velocity); | ||
} | ||
void WVR::serverPause() | ||
{ | ||
server_pause(); | ||
} | ||
void WVR::serverResume() | ||
{ | ||
server_resume(); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
/* | ||
WVR.h - Library for building WVR firmware. | ||
Created by Andrew March, May 20, 2021. | ||
Released into the public domain. | ||
*/ | ||
#ifndef WVR_H | ||
#define WVR_H | ||
|
||
#include "Arduino.h" | ||
|
||
class WVR { | ||
public: | ||
WVR(); | ||
void begin(); | ||
void play(uint8_t voice, uint8_t note, uint8_t velocity); | ||
void serverPause(); | ||
void serverResume(); | ||
}; | ||
|
||
#endif |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,138 @@ | ||
#include <Update.h> | ||
#include "esp_ota_ops.h" | ||
#include "esp_image_format.h" | ||
#include "driver/sdmmc_host.h" | ||
#include "esp_system.h" | ||
#include "file_system.h" | ||
#include "wvr_pins.h" | ||
|
||
extern "C" esp_err_t emmc_read(void *dst, size_t start_sector, size_t sector_count); | ||
extern "C" struct metadata_t *get_metadata(void); | ||
extern "C" void write_metadata(struct metadata_t m); | ||
|
||
void bootFromEmmc(int index) | ||
{ | ||
firmware_t *firmware = get_firmware_slot(index); | ||
log_i("booting firmware index %d, length %d, start_block %d", index, firmware->length, firmware->start_block); | ||
bool ret = Update.begin(firmware->length); | ||
if(!ret){ | ||
log_e("not enough space in flash to boot this firmware"); | ||
return; | ||
} | ||
size_t num_sectors = firmware->length / SECTOR_SIZE; | ||
size_t remaining = firmware->length % SECTOR_SIZE; | ||
size_t sector = firmware->start_block; | ||
uint8_t *buf = (uint8_t *)ps_malloc(SECTOR_SIZE); | ||
|
||
log_i("starting update"); | ||
for(int i=0;i<num_sectors;i++){ | ||
feedLoopWDT(); | ||
ESP_ERROR_CHECK(emmc_read(buf,sector++,1)); | ||
size_t written = Update.write(buf, SECTOR_SIZE); | ||
if(written != SECTOR_SIZE){ | ||
log_e("didn't finish writting sector"); | ||
Update.abort(); | ||
break; | ||
} else { | ||
printf("."); | ||
} | ||
} | ||
ESP_ERROR_CHECK(emmc_read(buf,sector++,1)); | ||
size_t written = Update.write(buf, remaining); | ||
if(written != remaining){ | ||
log_e("didn't finish writting sector"); | ||
Update.abort(); | ||
} else { | ||
log_e("done writting"); | ||
} | ||
feedLoopWDT(); | ||
if(Update.end()){ | ||
if(Update.isFinished()){ | ||
log_e("success"); | ||
free(buf); | ||
metadata_t *new_metadata = get_metadata(); | ||
new_metadata->current_firmware_index = index; | ||
new_metadata->current_website_index = index; | ||
write_metadata(*new_metadata); | ||
sdmmc_host_deinit(); | ||
feedLoopWDT(); | ||
// delay(1000); | ||
ESP.restart(); | ||
} else { | ||
log_e("Update.isFinished() : false"); | ||
} | ||
} else { | ||
log_e("Update.end() : false"); | ||
} | ||
free(buf); | ||
} | ||
|
||
void bootIntoRecoveryMode(void) | ||
{ | ||
int index = -1; | ||
firmware_t *firmware = get_firmware_slot(index); | ||
log_i("booting firmware index %d, length %d, start_block %d", index, firmware->length, firmware->start_block); | ||
bool ret = Update.begin(firmware->length); | ||
if(!ret){ | ||
log_e("not enough space in flash to boot this firmware"); | ||
return; | ||
} | ||
size_t num_sectors = firmware->length / SECTOR_SIZE; | ||
size_t remaining = firmware->length % SECTOR_SIZE; | ||
size_t sector = firmware->start_block; | ||
uint8_t *buf = (uint8_t *)ps_malloc(SECTOR_SIZE); | ||
|
||
log_i("starting update"); | ||
for(int i=0;i<num_sectors;i++){ | ||
ESP_ERROR_CHECK(emmc_read(buf,sector++,1)); | ||
size_t written = Update.write(buf, SECTOR_SIZE); | ||
if(written != SECTOR_SIZE){ | ||
log_e("didn't finish writting sector"); | ||
Update.abort(); | ||
break; | ||
} else { | ||
printf("."); | ||
} | ||
} | ||
ESP_ERROR_CHECK(emmc_read(buf,sector++,1)); | ||
size_t written = Update.write(buf, remaining); | ||
if(written != remaining){ | ||
log_e("didn't finish writting sector"); | ||
Update.abort(); | ||
} else { | ||
log_e("done writting"); | ||
} | ||
if(Update.end()){ | ||
if(Update.isFinished()){ | ||
log_e("success"); | ||
free(buf); | ||
metadata_t *new_metadata = get_metadata(); | ||
new_metadata->current_firmware_index = index; | ||
write_metadata(*new_metadata); | ||
// sdmmc_host_deinit(); | ||
// feedLoopWDT(); | ||
// delay(1000); | ||
ESP.restart(); | ||
} else { | ||
log_e("Update.isFinished() : false"); | ||
} | ||
} else { | ||
log_e("Update.end() : false"); | ||
} | ||
free(buf); | ||
} | ||
|
||
int check_for_recovery_mode(void) | ||
{ | ||
metadata_t *new_metadata = get_metadata(); | ||
gpio_reset_pin(gpio_pins[new_metadata->recovery_mode_straping_pin]); | ||
pinMode(wvr_pins[new_metadata->recovery_mode_straping_pin], INPUT_PULLUP); | ||
int res = digitalRead(wvr_pins[new_metadata->recovery_mode_straping_pin]); | ||
log_i("strapping pin %d reads %d",new_metadata->recovery_mode_straping_pin,res); | ||
// if(res == 0) // boot from recovery slot | ||
// { | ||
// log_i("booting in recovery mode!"); | ||
// bootFromEmmc(-1); | ||
// } | ||
return res; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
#ifndef BOOT_H | ||
#define BOOT_H | ||
|
||
void bootFromEmmc(int index); | ||
int check_for_recovery_mode(void); | ||
void bootIntoRecoveryMode(void); | ||
|
||
#endif |
Oops, something went wrong.