Compare commits

...

4 Commits

Author SHA1 Message Date
2a6f6233af fixed uart tx disabled 2025-03-19 09:39:02 +02:00
b52dcdc5d8 pppos control 2025-03-14 19:21:58 +02:00
d254ff5c46 MQTT test message memory optimisation 2025-02-25 18:59:18 +02:00
a162ef8091 added modem reset on many mqtt retry, added reboot and modem reset to
command interface, pppos control from config
2025-02-22 16:34:15 +02:00
8 changed files with 60 additions and 23 deletions

View File

@ -812,6 +812,12 @@ menu "WebGUIApp"
endif
endmenu
menu "PPPoS configuration"
config WEBGUIAPP_PPPOS_ENABLE
bool "Enabled PPPoS transport"
default n
endmenu
menu "Serial port configuration"
config WEBGUIAPP_UART_TRANSPORT_ENABLE

View File

@ -73,6 +73,7 @@ void EthStart(void);
void WiFiTransportTask(void *prm);
void PPPConnReset (void);
void PPPModemColdStart(void);
void PPPModemSoftRestart(void);
@ -96,6 +97,7 @@ esp_netif_t* GetSTANetifAdapter(void);
esp_netif_t* GetAPNetifAdapter(void);
esp_netif_t* GetETHNetifAdapter(void);
bool isWIFIConnected(void);
bool isETHConnected(void);
bool isPPPConnected(void);

View File

@ -20,8 +20,10 @@
*/
#include "CommandProcSys.h"
#include "NetTransport.h"
#include "webguiapp.h"
#define TAG "COMMAND_PROC_SYS"
//#define MAX_OBJECTS_NUMBER CONFIG_WEBGUIAPP_MAX_OBJECTS_NUM
@ -48,6 +50,14 @@ static void SYSTEM_TEST_handle(char *obj, char *com, char *arg)
static void SYSTEM_REBOOT_handle(char *obj, char *com, char *arg)
{
ESP_LOGI(TAG, "Object:%s, Command:%s, Argument %s", obj, com, arg);
esp_restart();
}
static void MODEM_REBOOT_handle(char *obj, char *com, char *arg)
{
ESP_LOGI(TAG, "Object:%s, Command:%s, Argument %s", obj, com, arg);
#if CONFIG_WEBGUIAPP_GPRS_ENABLE
PPPConnReset();
#endif
}
obj_struct_t *custom_com_obj_arr = NULL;
@ -65,9 +75,9 @@ const obj_struct_t com_obj_arr[] = {
},
{
.index = 0,
.object_name = "SYSTEM1",
.object_name = "MODEM",
.allowed_actions = { "TEST", "REBOOT", "TEST2", "TEST3", "TEST4" },
.command_handlers = { &SYSTEM_TEST_handle, &SYSTEM_REBOOT_handle }
.command_handlers = { &SYSTEM_TEST_handle, &MODEM_REBOOT_handle }
},
{
.index = 0,

View File

@ -62,13 +62,14 @@ void RegGSMReset(void (*gsm_rst)(uint8_t level)) { gsm_reset = gsm_rst; }
esp_netif_t *GetPPPNetifAdapter(void) {
if (isPPPConn)
return ppp_netif;
else
return NULL;
else
return NULL;
}
MODEM_INFO *GetPPPModemInfo(void) { return &mod_info; }
bool isPPPConnected(void) { return isPPPConn; }
void PPPConnReset(void) { isPPPConn = false; }
#if CONFIG_WEBGUIAPP_GPRS_ENABLE
static void on_ppp_changed(void *arg, esp_event_base_t event_base,
@ -266,7 +267,8 @@ static void GSMInitTask(void *pvParameter) {
}
ESP_LOGI(TAG, "PPP data mode OK");
xEventGroupWaitBits(event_group, CONNECT_BIT, pdTRUE, pdTRUE, pdMS_TO_TICKS(WAIT_FOR_GET_IP * 1000));
xEventGroupWaitBits(event_group, CONNECT_BIT, pdTRUE, pdTRUE,
pdMS_TO_TICKS(WAIT_FOR_GET_IP * 1000));
isPPPinitializing = false;
vTaskDelete(NULL);
@ -281,7 +283,7 @@ modem_init_fail:
void PPPModemColdStart(void) {
ResetType = 0;
xTaskCreatePinnedToCore(GSMInitTask, "GSMInitTask", 1024 * 6, &ResetType, 3,
&initTaskhandle, 1);
&initTaskhandle, 1);
ESP_LOGI(TAG, "Start GSM cold initialization task");
}
@ -303,7 +305,8 @@ static void GSMRunTask(void *pvParameter) {
}
void PPPModemStart(void) {
xTaskCreatePinnedToCore(GSMRunTask, "GSMRunTask", 1024 * 4, &ResetType, 3, NULL, 1);
xTaskCreatePinnedToCore(GSMRunTask, "GSMRunTask", 1024 * 4, &ResetType, 3,
NULL, 1);
}
int PPPModemGetRSSI(void) {

View File

@ -20,6 +20,8 @@
*/
#include <SysConfiguration.h>
#include <SystemApplication.h>
#include <stdlib.h>
#include <string.h>
#include "esp_log.h"
#include "Helpers.h"
#include "NetTransport.h"
@ -161,14 +163,16 @@ esp_err_t ExternalServiceMQTTSend(char *servname, char *data, int len, int idx)
}
#define MAX_ERROR_JSON 256
static char resp[256];
static char JSONMess[1024];
#define MAX_MQTT_PUBLICTEST_MESSAGE 1024
mqtt_app_err_t PublicTestMQTT(int idx)
{
char tmp[10];
char *data = (char*) malloc(MAX_MQTT_PUBLICTEST_MESSAGE);
if (data == NULL)
return ESP_ERR_NO_MEM;
static char resp[256];
struct jWriteControl jwc;
jwOpen(&jwc, JSONMess, 1024 - 64, JW_OBJECT, JW_COMPACT);
jwOpen(&jwc, data, 1024 - 64, JW_OBJECT, JW_COMPACT);
jwObj_object(&jwc, "data");
time_t now;
time(&now);
@ -247,7 +251,7 @@ mqtt_app_err_t PublicTestMQTT(int idx)
jwEnd(&jwc); //close payload
jwEnd(&jwc); //close data
//calculate sha from 'data' object
char *datap = strstr(JSONMess, "\"data\":");
char *datap = strstr(data, "\"data\":");
if (datap)
{
datap += sizeof("\"data\":") - 1;
@ -261,13 +265,15 @@ mqtt_app_err_t PublicTestMQTT(int idx)
#endif
jwObj_string(&jwc, "signature", (char*) sha_print);
}
else
return ESP_ERR_NOT_FOUND;
else{
free(data);
return ESP_ERR_NOT_FOUND;}
jwClose(&jwc);
mqtt_app_err_t merr = API_OK;
if (SysServiceMQTTSend(JSONMess, strlen(JSONMess), idx) != ESP_OK)
if (SysServiceMQTTSend(data, strlen(data), idx) != ESP_OK)
merr = API_INTERNAL_ERR;
free(data);
return merr;
}
@ -319,8 +325,14 @@ msg_id = esp_mqtt_client_subscribe(client, (char*) topic, 0);
#endif
if (++MQTTReconnectCounter > MQTT_RECONNECT_CHANGE_ADAPTER)
{
#if CONFIG_WEBGUIAPP_GPRS_ENABLE
char interface[3];
GetDefaultNetIFName(interface);
if(!strcmp((const char*)interface , "pp")) //Cold reboot modem on can't connect to ppp
PPPConnReset();
#endif
MQTTReconnectCounter = 0;
NextDefaultNetIF();
NextDefaultNetIF();
}
mqtt[idx].is_connected = false;
break;

View File

@ -23,9 +23,11 @@
// UART configuration
#define UART_PORT_NUM UART_NUM_2
#define UART_BAUD_RATE 115200
#define UART_RX_PIN 18
#define UART_TX_PIN 17
#define UART_BUF_SIZE 12000
#define UART_RX_PIN 2
#define UART_TX_PIN 1
#define UART_BUF_SIZE 4096
#ifdef CONFIG_WEBGUIAPP_PPPOS_ENABLE
// PPP configuration
static ppp_pcb *ppp;
@ -98,3 +100,4 @@ void InitPPPSerial()
xTaskCreate(pppos_task, "pppos_task", 4096 , (void *)0, 7, NULL);
}
#endif

View File

@ -50,7 +50,7 @@
#define UART_TX_QUEUE_SIZE (5)
#define UART_RX_QUEUE_SIZE (5)
#define UART_DEBUG_MODE 1
#define UART_DEBUG_MODE 0
#if CONFIG_WEBGUIAPP_UART_TRANSPORT_ENABLE
@ -64,7 +64,6 @@ static char rxbuf[CONFIG_WEBGUIAPP_UART_BUF_SIZE];
esp_err_t TransmitSerialPort(char *data, int ln)
{
return ESP_OK;
UART_DATA_SEND_STRUCT DSS;
char *buf = malloc(ln);
if (!buf)
@ -93,7 +92,6 @@ static void ReceiveHandlerAPI()
M.outputDataBuffer = respbuf;
M.outputDataLength = EXPECTED_MAX_DATA_SIZE;
ServiceDataHandler(&M);
if (M.outputDataBuffer[0] != 0x00 && M.outputDataLength > 0)
{
TransmitSerialPort(M.outputDataBuffer, MIN(EXPECTED_MAX_DATA_SIZE, strlen(M.outputDataBuffer)));

View File

@ -179,8 +179,11 @@ esp_err_t WebGuiAppInit(void)
#if CONFIG_WEBGUIAPP_UART_TRANSPORT_ENABLE
InitSerialPort();
#endif
#ifdef CONFIG_WEBGUIAPP_PPPOS_ENABLE
InitPPPSerial();
#endif
return ESP_OK;
}