diff --git a/firmware-arduino/src/Config.cpp b/firmware-arduino/src/Config.cpp index 14351c1..dbb2f24 100644 --- a/firmware-arduino/src/Config.cpp +++ b/firmware-arduino/src/Config.cpp @@ -9,20 +9,25 @@ bool factory_reset_status = false; /** * Configuration for Elato Firmware * - * DEVELOPMENT vs PRODUCTION SETUP: + * DEVELOPMENT vs PRODUCTION vs ELATO SETUP: * -------------------------------- * 1. Define `DEV_MODE` in your config.h file to use local development servers * 2. `DEV_MODE` requires updating the IP addresses to your local network IP * 3. Without `DEV_MODE` defined, the firmware will use your production servers * - * Development Mode (find your local IP address using ifconfig): + * DEV SETUP (find your local IP address using ifconfig): * - WebSocket: Your local IP (e.g., 192.168.1.100:8000) * - Backend: Your local IP (e.g., 192.168.1.100:3000) * - No SSL certificates required * - * Production Mode: + * PROD SETUP: * - WebSocket: .deno.dev (port 443) * - Backend: (port 3000) + * - Use your own SSL certificates (set in Config.cpp) + * + * ELATO SETUP: + * - WebSocket: talkedge.deno.dev (port 443) + * - Backend: https://www.elatoai.com (port 3000) * - Uses pre-configured SSL certificates (set in Config.cpp) */ @@ -34,7 +39,7 @@ const char *ws_path = "/"; const char *backend_server = "10.2.1.136"; const uint16_t backend_port = 3000; -#else +#elif defined(PROD_MODE) // PROD const char *ws_server = ".deno.dev"; const uint16_t ws_port = 443; @@ -43,6 +48,14 @@ const char *ws_path = "/"; const char *backend_server = ""; // like www.facebook.com or facebook.vercel.app const uint16_t backend_port = 3000; +#elif defined(ELATO_MODE) +// ELATO +const char *ws_server = "talkedge.deno.dev"; +const uint16_t ws_port = 443; +const char *ws_path = "/"; +// Backend server details +const char *backend_server = "www.elatoai.com"; // like www.facebook.com or facebook.vercel.app +const uint16_t backend_port = 3000; #endif String authTokenGlobal; @@ -55,8 +68,6 @@ const uint32_t SAMPLE_RATE = 24000; const i2s_port_t I2S_PORT_IN = I2S_NUM_1; const i2s_port_t I2S_PORT_OUT = I2S_NUM_0; -#ifdef USE_NORMAL_ESP32 - const int BLUE_LED_PIN = 13; const int RED_LED_PIN = 9; const int GREEN_LED_PIN = 8; @@ -72,7 +83,10 @@ const int I2S_SD_OUT = 10; const gpio_num_t BUTTON_PIN = GPIO_NUM_2; // Only RTC IO are allowed - ESP32 Pin example -#endif + +// ----------------- SSL Certificates ----------------- + +#ifdef PROD_MODE // add the CA cert for your backend server here `backend_server` const char *Vercel_CA_cert = R"EOF( @@ -81,13 +95,6 @@ const char *Vercel_CA_cert = R"EOF( -----END CERTIFICATE----- )EOF"; -// Supabase Edge Functions CA cert -// const char *CA_cert = R"EOF( -// -----BEGIN CERTIFICATE----- -// -// -----END CERTIFICATE----- -// )EOF"; - // Deno Edge Functions CA cert // add the CA cert for your edge server here `ws_server` const char *CA_cert = R"EOF( @@ -95,3 +102,72 @@ const char *CA_cert = R"EOF( -----END CERTIFICATE----- )EOF"; + +#elif defined(ELATO_MODE) + +const char *Vercel_CA_cert = R"EOF( +-----BEGIN CERTIFICATE----- +MIIFazCCA1OgAwIBAgIRAIIQz7DSQONZRGPgu2OCiwAwDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMTUwNjA0MTEwNDM4 +WhcNMzUwNjA0MTEwNDM4WjBPMQswCQYDVQQGEwJVUzEpMCcGA1UEChMgSW50ZXJu +ZXQgU2VjdXJpdHkgUmVzZWFyY2ggR3JvdXAxFTATBgNVBAMTDElTUkcgUm9vdCBY +MTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAK3oJHP0FDfzm54rVygc +h77ct984kIxuPOZXoHj3dcKi/vVqbvYATyjb3miGbESTtrFj/RQSa78f0uoxmyF+ +0TM8ukj13Xnfs7j/EvEhmkvBioZxaUpmZmyPfjxwv60pIgbz5MDmgK7iS4+3mX6U +A5/TR5d8mUgjU+g4rk8Kb4Mu0UlXjIB0ttov0DiNewNwIRt18jA8+o+u3dpjq+sW +T8KOEUt+zwvo/7V3LvSye0rgTBIlDHCNAymg4VMk7BPZ7hm/ELNKjD+Jo2FR3qyH +B5T0Y3HsLuJvW5iB4YlcNHlsdu87kGJ55tukmi8mxdAQ4Q7e2RCOFvu396j3x+UC +B5iPNgiV5+I3lg02dZ77DnKxHZu8A/lJBdiB3QW0KtZB6awBdpUKD9jf1b0SHzUv +KBds0pjBqAlkd25HN7rOrFleaJ1/ctaJxQZBKT5ZPt0m9STJEadao0xAH0ahmbWn +OlFuhjuefXKnEgV4We0+UXgVCwOPjdAvBbI+e0ocS3MFEvzG6uBQE3xDk3SzynTn +jh8BCNAw1FtxNrQHusEwMFxIt4I7mKZ9YIqioymCzLq9gwQbooMDQaHWBfEbwrbw +qHyGO0aoSCqI3Haadr8faqU9GY/rOPNk3sgrDQoo//fb4hVC1CLQJ13hef4Y53CI +rU7m2Ys6xt0nUW7/vGT1M0NPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBR5tFnme7bl5AFzgAiIyBpY9umbbjANBgkq +hkiG9w0BAQsFAAOCAgEAVR9YqbyyqFDQDLHYGmkgJykIrGF1XIpu+ILlaS/V9lZL +ubhzEFnTIZd+50xx+7LSYK05qAvqFyFWhfFQDlnrzuBZ6brJFe+GnY+EgPbk6ZGQ +3BebYhtF8GaV0nxvwuo77x/Py9auJ/GpsMiu/X1+mvoiBOv/2X/qkSsisRcOj/KK +NFtY2PwByVS5uCbMiogziUwthDyC3+6WVwW6LLv3xLfHTjuCvjHIInNzktHCgKQ5 +ORAzI4JMPJ+GslWYHb4phowim57iaztXOoJwTdwJx4nLCgdNbOhdjsnvzqvHu7Ur +TkXWStAmzOVyyghqpZXjFaH3pO3JLF+l+/+sKAIuvtd7u+Nxe5AW0wdeRlN8NwdC +jNPElpzVmbUq4JUagEiuTDkHzsxHpFKVK7q4+63SM1N95R1NbdWhscdCb+ZAJzVc +oyi3B43njTOQ5yOf+1CceWxG1bQVs5ZufpsMljq4Ui0/1lvh+wjChP4kqKOJ2qxq +4RgqsahDYVvTH9w7jXbyLeiNdd8XM2w9U/t7y0Ff/9yi0GE44Za4rF2LN9d11TPA +mRGunUHBcnWEvgJBQl9nJEiU0Zsnvgc/ubhPgXRR4Xq37Z0j4r7g1SgEEzwxA57d +emyPxgcYxn/eR44/KJ4EBs+lVDR3veyJm+kXQ99b21/+jh5Xos1AnX5iItreGCc= +-----END CERTIFICATE----- +)EOF"; + + +// talkedge.deno.dev CA cert +const char *CA_cert = R"EOF( +-----BEGIN CERTIFICATE----- +MIIEVzCCAj+gAwIBAgIRAIOPbGPOsTmMYgZigxXJ/d4wDQYJKoZIhvcNAQELBQAw +TzELMAkGA1UEBhMCVVMxKTAnBgNVBAoTIEludGVybmV0IFNlY3VyaXR5IFJlc2Vh +cmNoIEdyb3VwMRUwEwYDVQQDEwxJU1JHIFJvb3QgWDEwHhcNMjQwMzEzMDAwMDAw +WhcNMjcwMzEyMjM1OTU5WjAyMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNTGV0J3Mg +RW5jcnlwdDELMAkGA1UEAxMCRTUwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQNCzqK +a2GOtu/cX1jnxkJFVKtj9mZhSAouWXW0gQI3ULc/FnncmOyhKJdyIBwsz9V8UiBO +VHhbhBRrwJCuhezAUUE8Wod/Bk3U/mDR+mwt4X2VEIiiCFQPmRpM5uoKrNijgfgw +gfUwDgYDVR0PAQH/BAQDAgGGMB0GA1UdJQQWMBQGCCsGAQUFBwMCBggrBgEFBQcD +ATASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQWBBSfK1/PPCFPnQS37SssxMZw +i9LXDTAfBgNVHSMEGDAWgBR5tFnme7bl5AFzgAiIyBpY9umbbjAyBggrBgEFBQcB +AQQmMCQwIgYIKwYBBQUHMAKGFmh0dHA6Ly94MS5pLmxlbmNyLm9yZy8wEwYDVR0g +BAwwCjAIBgZngQwBAgEwJwYDVR0fBCAwHjAcoBqgGIYWaHR0cDovL3gxLmMubGVu +Y3Iub3JnLzANBgkqhkiG9w0BAQsFAAOCAgEAH3KdNEVCQdqk0LKyuNImTKdRJY1C +2uw2SJajuhqkyGPY8C+zzsufZ+mgnhnq1A2KVQOSykOEnUbx1cy637rBAihx97r+ +bcwbZM6sTDIaEriR/PLk6LKs9Be0uoVxgOKDcpG9svD33J+G9Lcfv1K9luDmSTgG +6XNFIN5vfI5gs/lMPyojEMdIzK9blcl2/1vKxO8WGCcjvsQ1nJ/Pwt8LQZBfOFyV +XP8ubAp/au3dc4EKWG9MO5zcx1qT9+NXRGdVWxGvmBFRAajciMfXME1ZuGmk3/GO +koAM7ZkjZmleyokP1LGzmfJcUd9s7eeu1/9/eg5XlXd/55GtYjAM+C4DG5i7eaNq +cm2F+yxYIPt6cbbtYVNJCGfHWqHEQ4FYStUyFnv8sjyqU8ypgZaNJ9aVcWSICLOI +E1/Qv/7oKsnZCWJ926wU6RqG1OYPGOi1zuABhLw61cuPVDT28nQS/e6z95cJXq0e +K1BcaJ6fJZsmbjRgD5p3mvEf5vdQM7MCEvU0tHbsx2I5mHHJoABHb8KVBgWp/lcX +GWiWaeOyB7RP+OfDtvi2OsapxXiV7vNVs7fMlrRjY1joKaqmmycnBvAq14AEbtyL +sVfOS66B8apkeFX2NY4XPEYV4ZSCe8VHPrdrERk2wILG3T/EGmSIkCYVUMSnjmJd +VQD9F6Na/+zmXCc= +-----END CERTIFICATE----- +)EOF"; + +#endif \ No newline at end of file diff --git a/firmware-arduino/src/Config.h b/firmware-arduino/src/Config.h index 981a654..803f299 100644 --- a/firmware-arduino/src/Config.h +++ b/firmware-arduino/src/Config.h @@ -9,6 +9,20 @@ #include #include +// ---------- CHOOSE YOUR MODE ---------- +// Pick one of the following (DEV_MODE, PROD_MODE, ELATO_MODE) , comment the rest +// For ELATO_MODE, you will need to register your DIY Hardware on the Elato website + +// #define DEV_MODE +// #define PROD_MODE +#define ELATO_MODE + + +// ---------- Touch mode ---------- +// If you want to use the touch sensor to wake up the device, uncomment the following line +// If you want to use the button to wake up the device, comment the following line +#define TOUCH_MODE + extern Preferences preferences; extern bool factory_reset_status; @@ -58,13 +72,6 @@ extern const uint16_t backend_port; // I2S and Audio parameters extern const uint32_t SAMPLE_RATE; -// ---------- Development ------------ -#define DEV_MODE -#define TOUCH_MODE - -// ----------------- Pin Definitions ----------------- -#define USE_NORMAL_ESP32 - extern const int BLUE_LED_PIN; extern const int RED_LED_PIN; extern const int GREEN_LED_PIN;