Restructured full repo
This commit is contained in:
20
firmware/lib/basic/Dtypes.h
Normal file
20
firmware/lib/basic/Dtypes.h
Normal file
@@ -0,0 +1,20 @@
|
||||
#pragma once
|
||||
|
||||
inline void _assert(const char* expression, const char* message, const char* file, int line)
|
||||
{
|
||||
Serial.print("Assert ");
|
||||
Serial.print(file);
|
||||
Serial.print(" : ");
|
||||
Serial.print(line);
|
||||
Serial.print(" '");
|
||||
Serial.print(expression);
|
||||
Serial.println("' failed.");
|
||||
Serial.println(message);
|
||||
}
|
||||
|
||||
template< typename T>
|
||||
inline String toString(const T & t) {
|
||||
return String(t);
|
||||
}
|
||||
|
||||
#define assert_msg(EXPRESSION, MSG) ((EXPRESSION) ? (void)0 : _assert(#EXPRESSION, #MSG, __FILE__, __LINE__))
|
||||
181
firmware/lib/basic/FilesystemAbstraction.h
Normal file
181
firmware/lib/basic/FilesystemAbstraction.h
Normal file
@@ -0,0 +1,181 @@
|
||||
#pragma once
|
||||
|
||||
#ifdef PLATFORM_ESP32
|
||||
#include "SPIFFS.h"
|
||||
|
||||
namespace portablefs
|
||||
{
|
||||
using File = ::File;
|
||||
|
||||
class Dir
|
||||
{
|
||||
public:
|
||||
Dir() {}
|
||||
Dir(const String &path)
|
||||
: root_(SPIFFS.open(path))
|
||||
{
|
||||
//next();
|
||||
}
|
||||
|
||||
bool next()
|
||||
{
|
||||
file_ = root_.openNextFile();
|
||||
return file_;
|
||||
}
|
||||
|
||||
bool isFile()
|
||||
{
|
||||
return !file_.isDirectory();
|
||||
}
|
||||
|
||||
bool isDirectory()
|
||||
{
|
||||
return file_.isDirectory();
|
||||
}
|
||||
|
||||
String fileName() const
|
||||
{
|
||||
return file_.name();
|
||||
}
|
||||
|
||||
size_t fileSize() const
|
||||
{
|
||||
return file_.size();
|
||||
}
|
||||
|
||||
private:
|
||||
File root_;
|
||||
File file_;
|
||||
};
|
||||
|
||||
inline Dir openDir(const String &path)
|
||||
{
|
||||
return Dir(path);
|
||||
}
|
||||
|
||||
inline File open(const char *name, const char *mode)
|
||||
{
|
||||
return SPIFFS.open(name, mode);
|
||||
}
|
||||
|
||||
inline bool exists(const char *name)
|
||||
{
|
||||
return SPIFFS.exists(name);
|
||||
}
|
||||
|
||||
inline bool remove(const char *name)
|
||||
{
|
||||
return SPIFFS.remove(name);
|
||||
}
|
||||
|
||||
inline bool mkdir(const char *name)
|
||||
{
|
||||
return SPIFFS.mkdir(name);
|
||||
}
|
||||
|
||||
} // namespace portablefs
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_ESP8266
|
||||
|
||||
#include <FS.h>
|
||||
|
||||
namespace portablefs
|
||||
{
|
||||
using Dir;
|
||||
} // namespace portablefs
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef PLATFORM_NATIVE
|
||||
|
||||
#include <string>
|
||||
#include <fstream>
|
||||
#include <filesystem>
|
||||
#include "MockDtypes.h"
|
||||
|
||||
namespace fs = std::filesystem;
|
||||
|
||||
|
||||
namespace portablefs
|
||||
{
|
||||
const std::string basePath = "./base";
|
||||
|
||||
class Dir
|
||||
{
|
||||
public:
|
||||
Dir() {}
|
||||
Dir(const String &path)
|
||||
: it_(fs::directory_iterator(path).begin()),
|
||||
end_(fs::directory_iterator(path).end()),
|
||||
firstIncremented_(false)
|
||||
{
|
||||
}
|
||||
|
||||
bool next()
|
||||
{
|
||||
if (!firstIncremented_)
|
||||
firstIncremented_ = true;
|
||||
else
|
||||
++it_;
|
||||
|
||||
return it_ != end_;
|
||||
}
|
||||
|
||||
bool isFile()
|
||||
{
|
||||
return file.is_regular_file();
|
||||
}
|
||||
|
||||
bool isDirectory()
|
||||
{
|
||||
return it_.is_directory();
|
||||
}
|
||||
|
||||
String fileName() const
|
||||
{
|
||||
return it_.path().filename().string();
|
||||
}
|
||||
|
||||
size_t fileSize() const
|
||||
{
|
||||
return it_.file_size();
|
||||
}
|
||||
|
||||
private:
|
||||
fs::directory_iterator it_;
|
||||
fs::directory_iterator end_;
|
||||
bool firstIncremented_;
|
||||
};
|
||||
|
||||
inline Dir openDir(const String &path)
|
||||
{
|
||||
return Dir(path);
|
||||
}
|
||||
|
||||
inline File open(const char *name, const char *mode)
|
||||
{
|
||||
if(mode == "r")
|
||||
return fopen()
|
||||
return SPIFFS.open(name, mode);
|
||||
}
|
||||
|
||||
inline bool exists(const char *name)
|
||||
{
|
||||
return SPIFFS.exists(name);
|
||||
}
|
||||
|
||||
inline bool remove(const char *name)
|
||||
{
|
||||
return SPIFFS.remove(name);
|
||||
}
|
||||
|
||||
inline bool mkdir(const char *name)
|
||||
{
|
||||
return SPIFFS.mkdir(name);
|
||||
}
|
||||
|
||||
} // namespace portablefs
|
||||
|
||||
#endif
|
||||
46
firmware/lib/basic/MockDtypes.h
Normal file
46
firmware/lib/basic/MockDtypes.h
Normal file
@@ -0,0 +1,46 @@
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <cstdint>
|
||||
#include <cstring>
|
||||
#include <arpa/inet.h>
|
||||
#include <algorithm>
|
||||
#include <iostream>
|
||||
#include <sstream>
|
||||
#include <string>
|
||||
|
||||
typedef uint32_t uint_t;
|
||||
|
||||
typedef std::string String;
|
||||
typedef uint8_t byte;
|
||||
typedef const char * PGM_P;
|
||||
|
||||
using std::min;
|
||||
using std::max;
|
||||
|
||||
inline uint32_t strlen_P(PGM_P str) {
|
||||
return std::strlen(str);
|
||||
}
|
||||
|
||||
inline const char * F( const char * in) { return in; }
|
||||
|
||||
|
||||
inline void _assert(const char* expression, const char* message, const char* file, int line)
|
||||
{
|
||||
std::cerr << "Assert " << file << ":" << line << " '" << expression << "' failed." << std::endl;
|
||||
std::cerr << message << std::endl;
|
||||
|
||||
abort();
|
||||
}
|
||||
|
||||
template< typename T>
|
||||
inline std::string toString(const T & t) {
|
||||
std::stringstream stream;
|
||||
stream << t;
|
||||
return stream.str();
|
||||
}
|
||||
|
||||
class String : public std::string
|
||||
{};
|
||||
|
||||
#define assert(EXPRESSION, MSG) ((EXPRESSION) ? (void)0 : _assert(#EXPRESSION, #MSG, __FILE__, __LINE__))
|
||||
18
firmware/lib/basic/MockSerial.h
Normal file
18
firmware/lib/basic/MockSerial.h
Normal file
@@ -0,0 +1,18 @@
|
||||
#pragma once
|
||||
|
||||
#include <iostream>
|
||||
|
||||
|
||||
class SerialMock {
|
||||
public:
|
||||
template< typename T>
|
||||
static inline void print(const T & str) {
|
||||
std::cout << str;
|
||||
}
|
||||
template< typename T>
|
||||
static inline void println(const T & str) {
|
||||
std::cout << str << std::endl;
|
||||
}
|
||||
};
|
||||
|
||||
static SerialMock Serial;
|
||||
Reference in New Issue
Block a user