cli for uart working

This commit is contained in:
Laila van Reenen 2024-06-27 21:16:45 +02:00
parent 668a62c90e
commit ca1f8f80d4
Signed by: LailaTheElf
GPG Key ID: 1F4E6EE3E6DDF769
5 changed files with 95 additions and 86 deletions

View File

@ -7,5 +7,13 @@
"path": "rx_esp32" "path": "rx_esp32"
} }
], ],
"settings": {} "settings": {
"files.associations": {
"nvs_flash.h": "c",
"esp_wifi.h": "c",
"esp_event.h": "c",
"esp_task_wdt.h": "c",
"esp_err.h": "c"
}
}
} }

View File

@ -1,6 +1,8 @@
#include "../lib/cli/CMDList/CMDList.h" #include "../lib/cli/CMDList/CMDList.h"
#include <stdio.h>
#include <stdbool.h>
#include "commands.h" #include "commands.h"
int contrl(char* line) int contrl(char* line)
@ -8,14 +10,22 @@ int contrl(char* line)
return 0; return 0;
} }
extern volatile bool running;
int shutdown(char* line)
{
printf("goodby.\n");
return 0;
}
const CMD_t Commands[] = { const CMD_t Commands[] = {
{ "ctrl", &contrl } { "ctrl", &contrl },
{ "shutdown", &shutdown }
}; };
CMDList_t* getCMDList() CMDList_t* getCMDList()
{ {
CMDList_t* list = CMDList_init(); CMDList_t* list = CMDList_init();
for (int i = sizeof(Commands) / sizeof(CMD_t); i >= 0; i--) for (int i = sizeof(Commands) / sizeof(CMD_t) - 1; i >= 0; i--)
{ {
CMDList_add(list, (CMD_t*)&Commands[i], Commands[i].cmd); CMDList_add(list, (CMD_t*)&Commands[i], Commands[i].cmd);
} }

View File

@ -11,8 +11,6 @@
static uint8_t BoatId = 1; static uint8_t BoatId = 1;
static const char *TAG = "rcrf-rx_esp32";
// cli config // cli config
#define HISTORY #define HISTORY

View File

@ -1,3 +1,4 @@
#include <stdio.h>
#include <stdbool.h> #include <stdbool.h>
#include <stdint.h> #include <stdint.h>
@ -14,7 +15,7 @@
#include "commands.h" #include "commands.h"
#include "wifi.h" #include "wifi.h"
bool running = true; bool volatile running = true;
CMDList_t* cmdList; CMDList_t* cmdList;
bool rxBuffer_overflow = false; bool rxBuffer_overflow = false;
@ -23,7 +24,7 @@ bool rxBuffer_overflow = false;
* CLI char out function. used to print back to a CLI, but the lib * CLI char out function. used to print back to a CLI, but the lib
* is only used for reciving command and not having a full cli * is only used for reciving command and not having a full cli
*/ */
int charOut(const char* c) int charOut_uart(const char* c)
{ {
printf(c); printf(c);
return 0; return 0;
@ -34,11 +35,11 @@ void app_main() {
ESP_ERROR_CHECK(esp_task_wdt_deinit()); ESP_ERROR_CHECK(esp_task_wdt_deinit());
// wait so I have time to open the serial monitor // wait so I have time to open the serial monitor
for (unsigned long i=0; i < 10000; i++) // for (unsigned long i=0; i < 10000; i++)
{ // {
printf("."); // printf(".");
} // }
printf("\n"); // printf("\n");
/* Initialize NVS — it is used to store PHY calibration data */ /* Initialize NVS — it is used to store PHY calibration data */
esp_err_t ret = nvs_flash_init(); esp_err_t ret = nvs_flash_init();
@ -81,15 +82,15 @@ void app_main() {
* happened. */ * happened. */
if (bits & WIFI_CONNECTED_BIT) if (bits & WIFI_CONNECTED_BIT)
{ {
printf("INFO: connected to ap SSID '%s'\n", WIFI_SSID); printf("INFO: main: connected to ap SSID '%s'\n", WIFI_SSID);
} }
else if (bits & WIFI_FAIL_BIT) else if (bits & WIFI_FAIL_BIT)
{ {
printf("ERROR: Failed to connect to SSID '%s',\n", WIFI_SSID); printf("ERROR: main: Failed to connect to SSID '%s',\n", WIFI_SSID);
} }
else else
{ {
printf("FAITAL: UNEXPECTED EVENT\n"); printf("FAITAL: main: UNEXPECTED EVENT\n");
return; return;
} }
@ -97,38 +98,30 @@ void app_main() {
// int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); // int sock = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
// if (sock < 0) // if (sock < 0)
// { // {
// printf("FAITAL: failed to create UDP socket\n"); // printf("FAITAL: main: failed to create UDP socket\n");
// return; // return;
// } // }
// running = true; running = true;
// cmdList = getCMDList(); cmdList = getCMDList();
// // init cli // init cli
// CLI_init((CLI_charOutFn)&charOut, cmdList); CLI_t cli_uart = CLI_init((CLI_charOutFn)&charOut_uart, cmdList);
// while (running) char ch_uart = 0;
// {
// int packetSize = UDP.parsePacket();
// while (packetSize) {
// char c;
// int len = UDP.read(&c, 1);
// if (len == 1)
// {
// CLI_charIn(c);
// packetSize--;
// }
// else
// {
// printf("UDP read error");
// break;
// }
// }
// }
// CLI_deinit(); while (running)
// CMDList_deinit(cmdList); {
ch_uart = getchar();
if (ch_uart != 255)
{
CLI_charIn(&cli_uart, ch_uart);
}
}
CLI_deinit(&cli_uart);
CMDList_deinit(cmdList);
return; return;
} }

View File

@ -24,27 +24,27 @@ static void event_handler(void* arg, esp_event_base_t event_base, int32_t event_
switch (event_id) switch (event_id)
{ {
case WIFI_EVENT_WIFI_READY: case WIFI_EVENT_WIFI_READY:
printf("INFO: WiFi ready\n"); printf("INFO: wifi: WiFi ready\n");
break; break;
case WIFI_EVENT_SCAN_DONE: case WIFI_EVENT_SCAN_DONE:
printf("INFO: Finished scanning AP\n"); printf("INFO: wifi: Finished scanning AP\n");
break; break;
case WIFI_EVENT_STA_START: case WIFI_EVENT_STA_START:
printf("INFO: Station start\n"); printf("INFO: wifi: Station start\n");
esp_wifi_connect(); esp_wifi_connect();
break; break;
case WIFI_EVENT_STA_STOP: case WIFI_EVENT_STA_STOP:
printf("INFO: Station stop\n"); printf("INFO: wifi: Station stop\n");
break; break;
case WIFI_EVENT_STA_CONNECTED: case WIFI_EVENT_STA_CONNECTED:
printf("INFO: Station connected to AP\n"); printf("INFO: wifi: Station connected to AP\n");
break; break;
case WIFI_EVENT_STA_DISCONNECTED: case WIFI_EVENT_STA_DISCONNECTED:
printf("INFO: Station disconnected from AP\n"); printf("WARN: wifi: Station disconnected from AP\n");
if (s_retry_num < MAX_RETRY_ATTEMPTS) if (s_retry_num < MAX_RETRY_ATTEMPTS)
{ {
s_retry_num++; s_retry_num++;
printf("INFO: retry num %d", s_retry_num); printf("INFO: wifi: retry num %d", s_retry_num);
for (unsigned long i=0; i < 10000000; i++) for (unsigned long i=0; i < 10000000; i++)
{ {
// printf(".\n"); // printf(".\n");
@ -58,119 +58,119 @@ static void event_handler(void* arg, esp_event_base_t event_base, int32_t event_
break; break;
break; break;
case WIFI_EVENT_STA_AUTHMODE_CHANGE: case WIFI_EVENT_STA_AUTHMODE_CHANGE:
printf("INFO: the auth mode of AP connected by device's station changed\n"); printf("INFO: wifi: the auth mode of AP connected by device's station changed\n");
break; break;
case WIFI_EVENT_STA_WPS_ER_SUCCESS: case WIFI_EVENT_STA_WPS_ER_SUCCESS:
printf("INFO: Station wps succeeds in enrollee mode\n"); printf("INFO: wifi: Station wps succeeds in enrollee mode\n");
break; break;
case WIFI_EVENT_STA_WPS_ER_FAILED: case WIFI_EVENT_STA_WPS_ER_FAILED:
printf("INFO: Station wps fails in enrollee mode\n"); printf("ERROR: wifi: Station wps fails in enrollee mode\n");
break; break;
case WIFI_EVENT_STA_WPS_ER_TIMEOUT: case WIFI_EVENT_STA_WPS_ER_TIMEOUT:
printf("INFO: Station wps timeout in enrollee mode\n"); printf("ERROR: wifi: Station wps timeout in enrollee mode\n");
break; break;
case WIFI_EVENT_STA_WPS_ER_PIN: case WIFI_EVENT_STA_WPS_ER_PIN:
printf("INFO: Station wps pin code in enrollee mode\n"); printf("INFO: wifi: Station wps pin code in enrollee mode\n");
break; break;
case WIFI_EVENT_STA_WPS_ER_PBC_OVERLAP: case WIFI_EVENT_STA_WPS_ER_PBC_OVERLAP:
printf("INFO: Station wps overlap in enrollee mode\n"); printf("INFO: wifi: Station wps overlap in enrollee mode\n");
break; break;
case WIFI_EVENT_AP_START: case WIFI_EVENT_AP_START:
printf("INFO: Soft-AP start\n"); printf("INFO: wifi: Soft-AP start\n");
break; break;
case WIFI_EVENT_AP_STOP: case WIFI_EVENT_AP_STOP:
printf("INFO: Soft-AP stop\n"); printf("INFO: wifi: Soft-AP stop\n");
break; break;
case WIFI_EVENT_AP_STACONNECTED: case WIFI_EVENT_AP_STACONNECTED:
printf("INFO: a station connected to Soft-AP\n"); printf("INFO: wifi: a station connected to Soft-AP\n");
break; break;
case WIFI_EVENT_AP_STADISCONNECTED: case WIFI_EVENT_AP_STADISCONNECTED:
printf("INFO: a station disconnected from Soft-AP\n"); printf("WARN: wifi: a station disconnected from Soft-AP\n");
break; break;
case WIFI_EVENT_AP_PROBEREQRECVED: case WIFI_EVENT_AP_PROBEREQRECVED:
printf("INFO: Receive probe request packet in soft-AP interface\n"); printf("INFO: wifi: Receive probe request packet in soft-AP interface\n");
break; break;
case WIFI_EVENT_FTM_REPORT: case WIFI_EVENT_FTM_REPORT:
printf("INFO: Receive report of FTM procedure\n"); printf("INFO: wifi: Receive report of FTM procedure\n");
break; break;
case WIFI_EVENT_STA_BSS_RSSI_LOW: case WIFI_EVENT_STA_BSS_RSSI_LOW:
printf("INFO: AP's RSSI crossed configured threshold\n"); printf("INFO: wifi: AP's RSSI crossed configured threshold\n");
break; break;
case WIFI_EVENT_ACTION_TX_STATUS: case WIFI_EVENT_ACTION_TX_STATUS:
printf("INFO: Status indication of Action Tx operation\n"); printf("INFO: wifi: Status indication of Action Tx operation\n");
break; break;
case WIFI_EVENT_ROC_DONE: case WIFI_EVENT_ROC_DONE:
printf("INFO: Remain-on-Channel operation complete\n"); printf("INFO: wifi: Remain-on-Channel operation complete\n");
break; break;
case WIFI_EVENT_STA_BEACON_TIMEOUT: case WIFI_EVENT_STA_BEACON_TIMEOUT:
printf("INFO: Station beacon timeout\n"); printf("ERROR: wifi: Station beacon timeout\n");
break; break;
case WIFI_EVENT_CONNECTIONLESS_MODULE_WAKE_INTERVAL_START: case WIFI_EVENT_CONNECTIONLESS_MODULE_WAKE_INTERVAL_START:
printf("INFO: Connectionless module wake interval start\n"); printf("INFO: wifi: Connectionless module wake interval start\n");
break; break;
case WIFI_EVENT_AP_WPS_RG_SUCCESS: case WIFI_EVENT_AP_WPS_RG_SUCCESS:
printf("INFO: Soft-AP wps succeeds in registrar mode\n"); printf("INFO: wifi: Soft-AP wps succeeds in registrar mode\n");
break; break;
case WIFI_EVENT_AP_WPS_RG_FAILED: case WIFI_EVENT_AP_WPS_RG_FAILED:
printf("INFO: Soft-AP wps fails in registrar mode\n"); printf("ERROR: wifi: Soft-AP wps fails in registrar mode\n");
break; break;
case WIFI_EVENT_AP_WPS_RG_TIMEOUT: case WIFI_EVENT_AP_WPS_RG_TIMEOUT:
printf("INFO: Soft-AP wps timeout in registrar mode\n"); printf("ERROR: wifi: Soft-AP wps timeout in registrar mode\n");
break; break;
case WIFI_EVENT_AP_WPS_RG_PIN: case WIFI_EVENT_AP_WPS_RG_PIN:
printf("INFO: Soft-AP wps pin code in registrar mode\n"); printf("INFO: wifi: Soft-AP wps pin code in registrar mode\n");
break; break;
case WIFI_EVENT_AP_WPS_RG_PBC_OVERLAP: case WIFI_EVENT_AP_WPS_RG_PBC_OVERLAP:
printf("INFO: Soft-AP wps overlap in registrar mode\n"); printf("INFO: wifi: Soft-AP wps overlap in registrar mode\n");
break; break;
case WIFI_EVENT_ITWT_SETUP: case WIFI_EVENT_ITWT_SETUP:
printf("INFO: iTWT setup\n"); printf("INFO: wifi: iTWT setup\n");
break; break;
case WIFI_EVENT_ITWT_TEARDOWN: case WIFI_EVENT_ITWT_TEARDOWN:
printf("INFO: iTWT teardown\n"); printf("INFO: wifi: iTWT teardown\n");
break; break;
case WIFI_EVENT_ITWT_PROBE: case WIFI_EVENT_ITWT_PROBE:
printf("INFO: iTWT probe\n"); printf("INFO: wifi: iTWT probe\n");
break; break;
case WIFI_EVENT_ITWT_SUSPEND: case WIFI_EVENT_ITWT_SUSPEND:
printf("INFO: iTWT suspend\n"); printf("INFO: wifi: iTWT suspend\n");
break; break;
case WIFI_EVENT_NAN_STARTED: case WIFI_EVENT_NAN_STARTED:
printf("INFO: NAN Discovery has started\n"); printf("INFO: wifi: NAN Discovery has started\n");
break; break;
case WIFI_EVENT_NAN_STOPPED: case WIFI_EVENT_NAN_STOPPED:
printf("INFO: NAN Discovery has stopped\n"); printf("INFO: wifi: NAN Discovery has stopped\n");
break; break;
case WIFI_EVENT_NAN_SVC_MATCH: case WIFI_EVENT_NAN_SVC_MATCH:
printf("INFO: NAN Service Discovery match found\n"); printf("INFO: wifi: NAN Service Discovery match found\n");
break; break;
case WIFI_EVENT_NAN_REPLIED: case WIFI_EVENT_NAN_REPLIED:
printf("INFO: Replied to a NAN peer with Service Discovery match\n"); printf("INFO: wifi: Replied to a NAN peer with Service Discovery match\n");
break; break;
case WIFI_EVENT_NAN_RECEIVE: case WIFI_EVENT_NAN_RECEIVE:
printf("INFO: Received a Follow-up message\n"); printf("INFO: wifi: Received a Follow-up message\n");
break; break;
case WIFI_EVENT_NDP_INDICATION: case WIFI_EVENT_NDP_INDICATION:
printf("INFO: Received NDP Request from a NAN Peer\n"); printf("INFO: wifi: Received NDP Request from a NAN Peer\n");
break; break;
case WIFI_EVENT_NDP_CONFIRM: case WIFI_EVENT_NDP_CONFIRM:
printf("INFO: NDP Confirm Indication\n"); printf("INFO: wifi: NDP Confirm Indication\n");
break; break;
case WIFI_EVENT_NDP_TERMINATED: case WIFI_EVENT_NDP_TERMINATED:
printf("INFO: NAN Datapath terminated indication\n"); printf("INFO: wifi: NAN Datapath terminated indication\n");
break; break;
case WIFI_EVENT_HOME_CHANNEL_CHANGE: case WIFI_EVENT_HOME_CHANNEL_CHANGE:
printf("INFO: WiFi home channel changedoesn't occur when scanning\n"); printf("INFO: wifi: WiFi home channel changedoesn't occur when scanning\n");
break; break;
case WIFI_EVENT_MAX: case WIFI_EVENT_MAX:
printf("INFO: Invalid WiFi event ID\n"); printf("INFO: wifi: Invalid WiFi event ID\n");
break; break;
} }
} }
else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP)
{ {
ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data; ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;
printf("INFO: got ip: " IPSTR "\n", IP2STR(&event->ip_info.ip)); printf("INFO: wifi: got ip: " IPSTR "\n", IP2STR(&event->ip_info.ip));
s_retry_num = 0; s_retry_num = 0;
xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT); xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
} }
@ -198,7 +198,7 @@ void wifiInit()
ESP_ERROR_CHECK(esp_event_handler_instance_register( ESP_ERROR_CHECK(esp_event_handler_instance_register(
IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL, &instance_got_ip)); IP_EVENT, IP_EVENT_STA_GOT_IP, &event_handler, NULL, &instance_got_ip));
printf("INFO: wifi_init_sta finished.\n"); printf("INFO: wifi: wifi_init_sta finished.\n");
} }
void wifi_connect() void wifi_connect()