From 1494f00abfbeaa71797cd637fa4893bad2c84900 Mon Sep 17 00:00:00 2001 From: Jean Jacques Avril Date: Tue, 15 Feb 2022 17:20:27 +0100 Subject: [PATCH] started implementing the csv parser in order to achieve more runtime and memory efficency --- data/userdb.csv | 10 ++++++++++ src/UserDb.cpp | 45 +++++++++++++++++++++++++++++++++++++++++++++ src/UserDb.h | 34 ++++++++++++++++++++++++++++++++++ src/main.cpp | 11 +++++++---- 4 files changed, 96 insertions(+), 4 deletions(-) create mode 100644 data/userdb.csv create mode 100644 src/UserDb.cpp create mode 100644 src/UserDb.h diff --git a/data/userdb.csv b/data/userdb.csv new file mode 100644 index 0000000..37c5072 --- /dev/null +++ b/data/userdb.csv @@ -0,0 +1,10 @@ +1,Max1,Muster,RFID,12341,1 +2,Max2,Muster,RFID,12342,1 +3,Max3,Muster,RFID,12343,1 +4,Max4,Muster,RFID,12344,1 +5,Max5,Muster,RFID,12345,1 +6,Max6,Muster,RFID,12346,1 +7,Max7,Muster,RFID,12347,1 +8,Max8,Muster,RFID,12348,1 +9,Max9,Muster,RFID,12349,1 +10,Max20,Muster,RFID,12340,1 \ No newline at end of file diff --git a/src/UserDb.cpp b/src/UserDb.cpp new file mode 100644 index 0000000..d176975 --- /dev/null +++ b/src/UserDb.cpp @@ -0,0 +1,45 @@ +#include "UserDb.h" + +using namespace userdb; + +UserDb::UserDb(){ + +} +UserDb::User UserDb::read_csv_line(String instring){ + int locations[5]; + int location_index=0; + int str_length = instring.length()-1; + for(int i = 0; i +namespace userdb +{ + class UserDb + { + private: + + + public: + UserDb(); + void test(); + void PrintAll(); + struct User + { + // User(unsigned long new_uid): uid(new_uid){} + unsigned long uid; + mutable String first_name; + mutable String last_name; + mutable String rfid_uid; + mutable String user_pin; + mutable bool enabled = true; + bool operator<(const User &o) const { return uid < o.uid; } + bool operator==(const User &o) const { return uid == o.uid; } + String toString() + { + return "ID: " + String(uid) + " Name: " + last_name + " " + first_name + " Enabled: " + (enabled ? "Yes" : "No"); + } + }; + User read_csv_line(String); + }; +} \ No newline at end of file diff --git a/src/main.cpp b/src/main.cpp index ff699ee..b52249a 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,9 +7,11 @@ #include #include #include "Users.h" +#include "UserDb.h" #include "Persistence.h" // File persistence Persistence persistence; +userdb::UserDb userdatabase; // Rfid Rfid rfid; // i2C Bus @@ -35,15 +37,16 @@ void setup() Serial.print("Starting"); Serial.println(WiFi.softAPConfig(local_IP, gateway, subnet) ? "Ready" : "Failed!"); Serial.println(WiFi.softAP(config.SSID) ? "Ready" : "Failed!"); + userdatabase.test(); //delay(500); keyboard.begin(&Wire); rfid.begin(); iface.begin(&keyboard); - while(users.countUsers()<100){ - users.addUser("Harry","Potter","","1234"); - } + //while(users.countUsers()<100){ + // users.addUser("Harry","Potter","","1234"); + //} - users.PrintAllToSerial(); + //users.PrintAllToSerial(); //Serial.println(persistence.TestRead()); users.ExportToPersistence(); //Serial.println(persistence.TestRead());