-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathwvr_0.3.cpp
156 lines (129 loc) · 3.49 KB
/
wvr_0.3.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
#include "cJSON.h"
#include "esp32-hal-log.h"
#include "esp32-hal-cpu.h"
#include "esp32-hal-gpio.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include <functional>
#include "Arduino.h"
#include "wvr_pins.h"
#include "button.h"
#include "midi_in.h"
#include "ws_log.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "freertos/queue.h"
#include "wvr_0.3.h"
#include "file_system.h"
#include "WVR.h"
#include "gpio.h"
#include "server.h"
struct wav_lu_t **wav_lut;
void server_begin(void);
void server_pause(void);
void recovery_server_begin(void);
extern "C" void emmc_init(void);
extern "C" void dac_init(void);
extern "C" void midi_init(bool useUsbMidi);
extern "C" void wav_player_start(void);
extern "C" void touch_test(void);
extern "C" void pot_init(void);
extern "C" void rpc_init(void);
void bootFromEmmc(int index);
void boot_into_recovery_mode(void);
int check_for_recovery_mode();
void dev_board_init();
void neopixel_test(void);
void mkr_init(void);
void midi_parser_init(void);
size_t heap_remaining = esp_get_free_heap_size();
void on_ws_connect(void){
static int done = 0;
if(!done){
done = 1;
wlog_n("firmware version %s", VERSION_CODE);
wlog_n("wlog_n");
wlog_e("wlog_e");
wlog_w("wlog_w");
wlog_i("wlog_i");
wlog_d("wlog_d");
wlog_v("wlog_v");
}
}
void logSize(char* name){
size_t free = esp_get_free_heap_size();
Serial.printf("after %s, remaining: %u, used:%u\n", name, free, heap_remaining - free);
heap_remaining = free;
}
void logRam(){
Serial.printf("Total heap: %d\n", ESP.getHeapSize());
Serial.printf("Free heap: %d\n", ESP.getFreeHeap());
Serial.printf("Total PSRAM: %d\n", ESP.getPsramSize());
Serial.printf("Free PSRAM: %d\n", ESP.getFreePsram());
Serial.printf("CPU freq: %d\n", getCpuFrequencyMhz());
}
// void forceARP(){
// char *netif = netif_list;
// while(netif){
// netif = *((char **) netif);
// }
// }
struct metadata_t metadata;
void wvr_init(bool useFTDI, bool useUsbMidi, bool checkRecoveryModePin) {
Serial.begin(115200);
logRam();
log_i("arduino setup running on core %u",xPortGetCoreID());
log_i("cpu speed %d", ESP.getCpuFreqMHz());
log_i("Flash Speed = %d Flash mode = %d", ESP.getFlashChipSpeed(), (int)ESP.getFlashChipMode());
log_i("wvr starting up \n\n*** VERSION %s ***\n\n",VERSION_CODE);
cJSON_Hooks memoryHook;
memoryHook.malloc_fn = ps_malloc;
memoryHook.free_fn = free;
cJSON_InitHooks(&memoryHook);
logSize("begin");
emmc_init();
logSize("emmc");
file_system_init();
logSize("file system");
if(checkRecoveryModePin)
{
int ret = check_for_recovery_mode();
if(!ret)
{
recovery_server_begin();
log_i("! WVR is in recovery mode !");
vTaskDelete(NULL);
return;
}
}
clean_up_rack_directory();
dac_init();
logSize("dac");
midi_init(useUsbMidi);
logSize("midi");
midi_parser_init();
logSize("midi parser");
wav_player_start();
logSize("wav player");
server_begin();
logSize("server");
log_i("do_station_mode:%d network:%s pass:%s",get_metadata()->do_station_mode,get_metadata()->station_ssid,get_metadata()->station_passphrase);
// if(get_metadata()->do_station_mode == 1)
// {
// try_log_on_network();
// }
button_init();
logSize("button");
wvr_gpio_init(useFTDI, useUsbMidi);
logSize("gpio");
rpc_init();
logSize("rpc");
if(get_metadata()->wifi_starts_on == 0)
{
server_pause();
}
log_pin_config();
logRam();
// forceARP();
}