Browse Source

Merge pull request #57 from jksemple/master

Inherit from Print class - Brilliant solution
Ayush Sharma 1 year ago
parent
commit
2bb1bbd608
4 changed files with 22 additions and 111 deletions
  1. 6 0
      examples/Demo/Demo.ino
  2. 7 0
      examples/Demo_AP/Demo_AP.ino
  3. 6 71
      src/WebSerial.cpp
  4. 3 40
      src/WebSerial.h

+ 6 - 0
examples/Demo/Demo.ino

@@ -52,4 +52,10 @@ void setup() {
 }
 
 void loop() {
+    delay(2000);
+    
+    WebSerial.print(F("IP address: "));
+    WebSerial.println(WiFi.localIP());
+    WebSerial.printf("Millis=%lu\n", millis());
+    WebSerial.printf("Free heap=[%u]\n", ESP.getFreeHeap());
 }

+ 7 - 0
examples/Demo_AP/Demo_AP.ino

@@ -49,4 +49,11 @@ void setup() {
 }
 
 void loop() {
+    delay(2000);
+    
+    WebSerial.print(F("IP address: "));
+    WebSerial.println(WiFi.localIP());
+    WebSerial.printf("Millis=%lu\n", millis());
+    WebSerial.printf("Free heap=[%u]\n", ESP.getFreeHeap());
+
 }

+ 6 - 71
src/WebSerial.cpp

@@ -43,79 +43,14 @@ void WebSerialClass::msgCallback(RecvMsgHandler _recv){
 }
 
 // Print
-void WebSerialClass::print(String m){
-    _ws->textAll(m);
+size_t WebSerialClass::write(uint8_t m) {
+  _ws->textAll((const char *)&(m), 1);
+  return(1);
 }
 
-void WebSerialClass::print(const char *m){
-    _ws->textAll(m);
-}
-
-void WebSerialClass::print(char *m){
-    _ws->textAll(m);
-}
-
-void WebSerialClass::print(int m){
-    _ws->textAll(String(m));
-}
-
-void WebSerialClass::print(uint8_t m){
-    _ws->textAll(String(m));
-}
-
-void WebSerialClass::print(uint16_t m){
-    _ws->textAll(String(m));
-}
-
-void WebSerialClass::print(uint32_t m){
-    _ws->textAll(String(m));
-}
-
-void WebSerialClass::print(double m){
-    _ws->textAll(String(m));
-}
-
-void WebSerialClass::print(float m){
-    _ws->textAll(String(m));
-}
-
-
-// Print with New Line
-
-void WebSerialClass::println(String m){
-    _ws->textAll(m+"\n");        
-}
-
-void WebSerialClass::println(const char *m){
-    _ws->textAll(String(m)+"\n");
-}
-
-void WebSerialClass::println(char *m){
-    _ws->textAll(String(m)+"\n");
-}
-
-void WebSerialClass::println(int m){
-    _ws->textAll(String(m)+"\n");
-}
-
-void WebSerialClass::println(uint8_t m){
-    _ws->textAll(String(m)+"\n");
-}
-
-void WebSerialClass::println(uint16_t m){
-    _ws->textAll(String(m)+"\n");
-}
-
-void WebSerialClass::println(uint32_t m){
-    _ws->textAll(String(m)+"\n");
-}
-
-void WebSerialClass::println(float m){
-    _ws->textAll(String(m)+"\n");
-}
-
-void WebSerialClass::println(double m){
-    _ws->textAll(String(m)+"\n");
+size_t WebSerialClass::write(const uint8_t* buffer, size_t size) {
+  _ws->textAll((const char *)buffer, size);
+  return(size);
 }
 
 #if defined(WEBSERIAL_DEBUG)

+ 3 - 40
src/WebSerial.h

@@ -24,7 +24,7 @@ typedef std::function<void(uint8_t *data, size_t len)> RecvMsgHandler;
 // Uncomment to enable webserial debug mode
 // #define WEBSERIAL_DEBUG 1
 
-class WebSerialClass{
+class WebSerialClass : public Print {
 
 public:
     void begin(AsyncWebServer *server, const char* url = "/webserial");
@@ -33,45 +33,8 @@ public:
 
     // Print
 
-    void print(String m = "");
-
-    void print(const char *m);
-
-    void print(char *m);
-
-    void print(int m);
-
-    void print(uint8_t m);
-
-    void print(uint16_t m);
-
-    void print(uint32_t m);
-
-    void print(double m);
-
-    void print(float m);
-
-
-    // Print with New Line
-
-    void println(String m = "");
-
-    void println(const char *m);
-
-    void println(char *m);
-
-    void println(int m);
-
-    void println(uint8_t m);
-
-    void println(uint16_t m);
-
-    void println(uint32_t m);
-
-    void println(float m);
-
-    void println(double m);
-
+    size_t write(uint8_t);
+    size_t write(const uint8_t* buffer, size_t size);
 
 private:
     AsyncWebServer *_server;