mirror of
https://gitlab.com/wirelos/sprocket-lib.git
synced 2025-12-14 20:56:38 +01:00
add utils to main lib
This commit is contained in:
@@ -20,6 +20,6 @@ void PRINT_MSG(Print &out, const char* prefix, const char* format, ...) {
|
|||||||
vsnprintf(ptr, sizeof(formatString)-1-strlen(formatString), formatString, args );
|
vsnprintf(ptr, sizeof(formatString)-1-strlen(formatString), formatString, args );
|
||||||
va_end (args);
|
va_end (args);
|
||||||
formatString[ sizeof(formatString)-1 ]='\0';
|
formatString[ sizeof(formatString)-1 ]='\0';
|
||||||
out.print(ptr);
|
out.println(ptr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
132
src/utils/utils_web.h
Normal file
132
src/utils/utils_web.h
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
#ifndef __WebUtils_H___
|
||||||
|
#define __WebUtils_H___
|
||||||
|
|
||||||
|
#include <Arduino.h>
|
||||||
|
#include <ESPAsyncWebServer.h>
|
||||||
|
#include <AsyncWebSocket.h>
|
||||||
|
#include <ESPAsyncTCP.h>
|
||||||
|
|
||||||
|
class WebUtils {
|
||||||
|
public:
|
||||||
|
static String getRequestParameterOrDefault(AsyncWebServerRequest *request, String param, String defaultValue, bool isPost = true){
|
||||||
|
if(request->hasParam(param, isPost)) {
|
||||||
|
return request->getParam(param, isPost)->value();
|
||||||
|
}
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
static String parseFrame(AwsEventType type, void * arg, uint8_t *data, size_t len) {
|
||||||
|
String msg = "";
|
||||||
|
if(type == WS_EVT_DATA){
|
||||||
|
AwsFrameInfo * info = (AwsFrameInfo*)arg;
|
||||||
|
if(info->opcode == WS_TEXT){
|
||||||
|
for(size_t i=0; i < info->len; i++) {
|
||||||
|
msg += (char) data[i];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
char buff[3];
|
||||||
|
for(size_t i=0; i < info->len; i++) {
|
||||||
|
sprintf(buff, "%02x ", (uint8_t) data[i]);
|
||||||
|
msg += buff ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
static String parseFrameAsString(AwsEventType type, void * arg, uint8_t *data, size_t len, int start = 0) {
|
||||||
|
String msg = "";
|
||||||
|
if(type == WS_EVT_DATA){
|
||||||
|
AwsFrameInfo * info = (AwsFrameInfo*)arg;
|
||||||
|
//if(info->final && info->index == 0 && info->len == len){
|
||||||
|
if(info->opcode == WS_TEXT){
|
||||||
|
for(size_t i=start; i < info->len; i++) {
|
||||||
|
msg += (char) data[i];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
char buff[3];
|
||||||
|
for(size_t i=start; i < info->len; i++) {
|
||||||
|
sprintf(buff, "%02x ", (uint8_t) data[i]);
|
||||||
|
msg += buff ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//}
|
||||||
|
}
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
/* static void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len) {
|
||||||
|
if(type == WS_EVT_CONNECT){
|
||||||
|
Serial.printf("ws[%s][%u] connect\n", server->url(), client->id());
|
||||||
|
client->printf("Hello Client %u :)", client->id());
|
||||||
|
client->ping();
|
||||||
|
} else if(type == WS_EVT_DISCONNECT){
|
||||||
|
Serial.printf("ws[%s][%u] disconnect: %u\n", server->url(), client->id());
|
||||||
|
} else if(type == WS_EVT_ERROR){
|
||||||
|
Serial.printf("ws[%s][%u] error(%u): %s\n", server->url(), client->id(), *((uint16_t*)arg), (char*)data);
|
||||||
|
} else if(type == WS_EVT_PONG){
|
||||||
|
Serial.printf("ws[%s][%u] pong[%u]: %s\n", server->url(), client->id(), len, (len)?(char*)data:"");
|
||||||
|
} else if(type == WS_EVT_DATA){
|
||||||
|
AwsFrameInfo * info = (AwsFrameInfo*)arg;
|
||||||
|
String msg = "";
|
||||||
|
//the whole message is in a single frame and we got all of it's data
|
||||||
|
if(info->final && info->index == 0 && info->len == len){
|
||||||
|
Serial.printf("ws[%s][%u] %s-message[%llu]: ", server->url(), client->id(), (info->opcode == WS_TEXT)?"text":"binary", info->len);
|
||||||
|
|
||||||
|
if(info->opcode == WS_TEXT){
|
||||||
|
for(size_t i=0; i < info->len; i++) {
|
||||||
|
msg += (char) data[i];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
char buff[3];
|
||||||
|
for(size_t i=0; i < info->len; i++) {
|
||||||
|
sprintf(buff, "%02x ", (uint8_t) data[i]);
|
||||||
|
msg += buff ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Serial.printf("%s\n",msg.c_str());
|
||||||
|
|
||||||
|
if(info->opcode == WS_TEXT)
|
||||||
|
client->text("I got your text message");
|
||||||
|
else
|
||||||
|
client->binary("I got your binary message");
|
||||||
|
}
|
||||||
|
//message is comprised of multiple frames or the frame is split into multiple packets
|
||||||
|
else {
|
||||||
|
if(info->index == 0){
|
||||||
|
if(info->num == 0)
|
||||||
|
Serial.printf("ws[%s][%u] %s-message start\n", server->url(), client->id(), (info->message_opcode == WS_TEXT)?"text":"binary");
|
||||||
|
Serial.printf("ws[%s][%u] frame[%u] start[%llu]\n", server->url(), client->id(), info->num, info->len);
|
||||||
|
}
|
||||||
|
|
||||||
|
Serial.printf("ws[%s][%u] frame[%u] %s[%llu - %llu]: ", server->url(), client->id(), info->num, (info->message_opcode == WS_TEXT)?"text":"binary", info->index, info->index + len);
|
||||||
|
|
||||||
|
if(info->opcode == WS_TEXT){
|
||||||
|
for(size_t i=0; i < info->len; i++) {
|
||||||
|
msg += (char) data[i];
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
char buff[3];
|
||||||
|
for(size_t i=0; i < info->len; i++) {
|
||||||
|
sprintf(buff, "%02x ", (uint8_t) data[i]);
|
||||||
|
msg += buff ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Serial.printf("%s\n",msg.c_str());
|
||||||
|
|
||||||
|
if((info->index + len) == info->len){
|
||||||
|
Serial.printf("ws[%s][%u] frame[%u] end[%llu]\n", server->url(), client->id(), info->num, info->len);
|
||||||
|
if(info->final){
|
||||||
|
Serial.printf("ws[%s][%u] %s-message end\n", server->url(), client->id(), (info->message_opcode == WS_TEXT)?"text":"binary");
|
||||||
|
if(info->message_opcode == WS_TEXT)
|
||||||
|
client->text("I got your text message");
|
||||||
|
else
|
||||||
|
client->binary("I got your binary message");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} */
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif
|
||||||
Reference in New Issue
Block a user