httpd ready for some testing - release

This commit is contained in:
Sebastien
2020-02-26 15:56:15 -05:00
parent 055d87ce9d
commit 5fcf08e4c5
2 changed files with 29 additions and 24 deletions

View File

@@ -47,7 +47,7 @@
#define TELNET_STACK_SIZE 8048 #define TELNET_STACK_SIZE 8048
#define TELNET_RX_BUF 1024 #define TELNET_RX_BUF 1024
const static char tag[] = "telnet"; const static char TAG[] = "telnet";
static int uart_fd=0; static int uart_fd=0;
RingbufHandle_t buf_handle; RingbufHandle_t buf_handle;
//static SemaphoreHandle_t xSemaphore = NULL; //static SemaphoreHandle_t xSemaphore = NULL;
@@ -56,6 +56,7 @@ static size_t log_buf_size=2000; //32-bit aligned size
static bool bIsEnabled=false; static bool bIsEnabled=false;
static int partnerSocket=0; static int partnerSocket=0;
static telnet_t *tnHandle; static telnet_t *tnHandle;
extern bool bypass_wifi_manager;
/************************************ /************************************
* Forward declarations * Forward declarations
@@ -77,16 +78,23 @@ struct telnetUserData {
}; };
bool is_serial_suppressed(){ bool is_serial_suppressed(){
return !bIsEnabled || !bMirrorToUART ; return bIsEnabled?!bMirrorToUART:false ;
} }
void init_telnet(){ void init_telnet(){
char *val= get_nvs_value_alloc(NVS_TYPE_STR, "telnet_enable"); char *val= get_nvs_value_alloc(NVS_TYPE_STR, "telnet_enable");
if (!val || strlen(val) == 0 || !strcasestr("YXD",val) ) { if (!val || strlen(val) == 0 || !strcasestr("YXD",val) ) {
ESP_LOGI(tag,"Telnet support disabled"); ESP_LOGI(TAG,"Telnet support disabled");
if(val) free(val); if(val) free(val);
return; return;
} }
bMirrorToUART = strcasestr("D",val)!=NULL; // if wifi manager is bypassed, there will possibly be no wifi available
//
bMirrorToUART = (strcasestr("D",val)!=NULL);
if(!bMirrorToUART && bypass_wifi_manager){
// This isn't supposed to happen, as telnet won't start if wifi manager isn't
// started. So this is a safeguard only.
ESP_LOGW(TAG,"Wifi manager is not active. Forcing console on Serial output.");
}
FREE_AND_NULL(val); FREE_AND_NULL(val);
val=get_nvs_value_alloc(NVS_TYPE_STR, "telnet_block"); val=get_nvs_value_alloc(NVS_TYPE_STR, "telnet_block");
@@ -110,11 +118,11 @@ void init_telnet(){
uint8_t *buffer_storage = (uint8_t *)heap_caps_malloc(sizeof(uint8_t)*log_buf_size, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT ); uint8_t *buffer_storage = (uint8_t *)heap_caps_malloc(sizeof(uint8_t)*log_buf_size, MALLOC_CAP_SPIRAM | MALLOC_CAP_8BIT );
buf_handle = xRingbufferCreateStatic(log_buf_size, RINGBUF_TYPE_BYTEBUF, buffer_storage, buffer_struct); buf_handle = xRingbufferCreateStatic(log_buf_size, RINGBUF_TYPE_BYTEBUF, buffer_storage, buffer_struct);
if (buf_handle == NULL) { if (buf_handle == NULL) {
ESP_LOGE(tag,"Failed to create ring buffer for telnet!"); ESP_LOGE(TAG,"Failed to create ring buffer for telnet!");
return; return;
} }
ESP_LOGI(tag, "***Redirecting log output to telnet"); ESP_LOGI(TAG, "***Redirecting log output to telnet");
const esp_vfs_t vfs = { const esp_vfs_t vfs = {
.flags = ESP_VFS_FLAG_DEFAULT, .flags = ESP_VFS_FLAG_DEFAULT,
.write = &stdout_write, .write = &stdout_write,
@@ -152,14 +160,14 @@ static void telnet_task(void *data) {
int rc = bind(serverSocket, (struct sockaddr *)&serverAddr, sizeof(serverAddr)); int rc = bind(serverSocket, (struct sockaddr *)&serverAddr, sizeof(serverAddr));
if (rc < 0) { if (rc < 0) {
ESP_LOGE(tag, "bind: %d (%s)", errno, strerror(errno)); ESP_LOGE(TAG, "bind: %d (%s)", errno, strerror(errno));
close(serverSocket); close(serverSocket);
return; return;
} }
rc = listen(serverSocket, 5); rc = listen(serverSocket, 5);
if (rc < 0) { if (rc < 0) {
ESP_LOGE(tag, "listen: %d (%s)", errno, strerror(errno)); ESP_LOGE(TAG, "listen: %d (%s)", errno, strerror(errno));
close(serverSocket); close(serverSocket);
return; return;
} }
@@ -168,14 +176,14 @@ static void telnet_task(void *data) {
socklen_t len = sizeof(serverAddr); socklen_t len = sizeof(serverAddr);
rc = accept(serverSocket, (struct sockaddr *)&serverAddr, &len); rc = accept(serverSocket, (struct sockaddr *)&serverAddr, &len);
if (rc < 0 ){ if (rc < 0 ){
ESP_LOGE(tag, "accept: %d (%s)", errno, strerror(errno)); ESP_LOGE(TAG, "accept: %d (%s)", errno, strerror(errno));
return; return;
} }
else { else {
partnerSocket = rc; partnerSocket = rc;
ESP_LOGD(tag, "We have a new client connection!"); ESP_LOGD(TAG, "We have a new client connection!");
handle_telnet_conn(); handle_telnet_conn();
ESP_LOGD(tag, "Telnet connection terminated"); ESP_LOGD(TAG, "Telnet connection terminated");
} }
} }
close(serverSocket); close(serverSocket);

View File

@@ -154,7 +154,7 @@ esp_err_t update_certificates(){
if ( (esp_err= nvs_get_str(handle, certs_version, NULL, &len)) == ESP_OK) { if ( (esp_err= nvs_get_str(handle, certs_version, NULL, &len)) == ESP_OK) {
str=(char *)malloc(len); str=(char *)malloc(len);
if ( (esp_err = nvs_get_str(handle, certs_version, str, &len)) == ESP_OK) { if ( (esp_err = nvs_get_str(handle, certs_version, str, &len)) == ESP_OK) {
printf("String associated with key '%s' is %s \n", certs_version, str); ESP_LOGI(TAG,"String associated with key '%s' is %s", certs_version, str);
} }
} }
if(str!=NULL){ if(str!=NULL){
@@ -341,10 +341,7 @@ void register_default_nvs(){
ESP_LOGD(TAG,"Done setting default values in nvs."); ESP_LOGD(TAG,"Done setting default values in nvs.");
} }
void displayInitCallback(TimerHandle_t pxTimer){
ESP_LOGD(TAG,"Initializing display");
display_init("SqueezeESP32");
}
void app_main() void app_main()
{ {
char * fwurl = NULL; char * fwurl = NULL;
@@ -361,16 +358,14 @@ void app_main()
ESP_LOGD(TAG,"Clearing CONNECTED_BIT from wifi group"); ESP_LOGD(TAG,"Clearing CONNECTED_BIT from wifi group");
xEventGroupClearBits(wifi_event_group, CONNECTED_BIT); xEventGroupClearBits(wifi_event_group, CONNECTED_BIT);
ESP_LOGI(TAG,"Registering default values"); ESP_LOGI(TAG,"Registering default values");
register_default_nvs(); register_default_nvs();
ESP_LOGD(TAG,"Configuring services"); ESP_LOGI(TAG,"Configuring services");
services_init(); services_init();
// initialize display in a timer thread to prevent locking up
// the main init sequence ESP_LOGI(TAG,"Initializing display");
TimerHandle_t display_init = xTimerCreate( "DisplInit", 100,pdFALSE,NULL,displayInitCallback); display_init("SqueezeESP32");
xTimerStart(display_init, portMAX_DELAY);
#if !RECOVERY_APPLICATION #if !RECOVERY_APPLICATION
ESP_LOGI(TAG,"Checking if certificates need to be updated"); ESP_LOGI(TAG,"Checking if certificates need to be updated");
update_certificates(); update_certificates();
@@ -404,10 +399,12 @@ void app_main()
led_blink(LED_GREEN, 250, 250); led_blink(LED_GREEN, 250, 250);
if(bypass_wifi_manager){ if(bypass_wifi_manager){
ESP_LOGW(TAG,"\n\nwifi manager is disabled. Please use wifi commands to connect to your wifi access point.\n\n"); ESP_LOGW(TAG,"*******************************************************************************************");
ESP_LOGW(TAG,"* wifi manager is disabled. Please use wifi commands to connect to your wifi access point.");
ESP_LOGW(TAG,"*******************************************************************************************");
} }
else { else {
ESP_LOGW(TAG,"\n\nwifi manager is ENABLED. Starting...\n\n"); ESP_LOGI(TAG,"Starting Wifi Manager");
wifi_manager_start(); wifi_manager_start();
wifi_manager_set_callback(EVENT_STA_GOT_IP, &cb_connection_got_ip); wifi_manager_set_callback(EVENT_STA_GOT_IP, &cb_connection_got_ip);
wifi_manager_set_callback(EVENT_STA_DISCONNECTED, &cb_connection_sta_disconnected); wifi_manager_set_callback(EVENT_STA_DISCONNECTED, &cb_connection_sta_disconnected);