-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SD #21
base: master
Are you sure you want to change the base?
SD #21
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,6 @@ | ||
.pio | ||
.vscode/.browse.c_cpp.db* | ||
.vscode/c_cpp_properties.json | ||
.vscode/launch.json | ||
.vscode/settings.json | ||
.vscode/ipch |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{ | ||
// See http://go.microsoft.com/fwlink/?LinkId=827846 | ||
// for the documentation about the extensions.json format | ||
"recommendations": [ | ||
"platformio.platformio-ide" | ||
], | ||
"unwantedRecommendations": [ | ||
"ms-vscode.cpptools-extension-pack" | ||
] | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
|
||
This directory is intended for project header files. | ||
|
||
A header file is a file containing C declarations and macro definitions | ||
to be shared between several project source files. You request the use of a | ||
header file in your project source file (C, C++, etc) located in `src` folder | ||
by including it, with the C preprocessing directive `#include'. | ||
|
||
```src/main.c | ||
|
||
#include "header.h" | ||
|
||
int main (void) | ||
{ | ||
... | ||
} | ||
``` | ||
|
||
Including a header file produces the same results as copying the header file | ||
into each source file that needs it. Such copying would be time-consuming | ||
and error-prone. With a header file, the related declarations appear | ||
in only one place. If they need to be changed, they can be changed in one | ||
place, and programs that include the header file will automatically use the | ||
new version when next recompiled. The header file eliminates the labor of | ||
finding and changing all the copies as well as the risk that a failure to | ||
find one copy will result in inconsistencies within a program. | ||
|
||
In C, the usual convention is to give header files names that end with `.h'. | ||
It is most portable to use only letters, digits, dashes, and underscores in | ||
header file names, and at most one dot. | ||
|
||
Read more about using header files in official GCC documentation: | ||
|
||
* Include Syntax | ||
* Include Operation | ||
* Once-Only Headers | ||
* Computed Includes | ||
|
||
https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
#pragma once | ||
#include "FS.h" | ||
#include "SD.h" | ||
#include "SPI.h" | ||
|
||
namespace sd { | ||
void createDir(fs::FS &fs, const char *path); | ||
void writeFile(fs::FS &fs, const char *path, const char *message); | ||
void listDir(fs::FS &fs, const char *dirname, uint8_t levels); | ||
void readFile(fs::FS &fs, const char *path); | ||
void writeData(fs::FS &fs, const char *path, const char *message); | ||
void setup(); | ||
} // namespace sd |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
|
||
This directory is intended for project specific (private) libraries. | ||
PlatformIO will compile them to static libraries and link into executable file. | ||
|
||
The source code of each library should be placed in a an own separate directory | ||
("lib/your_library_name/[here are source files]"). | ||
|
||
For example, see a structure of the following two libraries `Foo` and `Bar`: | ||
|
||
|--lib | ||
| | | ||
| |--Bar | ||
| | |--docs | ||
| | |--examples | ||
| | |--src | ||
| | |- Bar.c | ||
| | |- Bar.h | ||
| | |- library.json (optional, custom build options, etc) https://docs.platformio.org/page/librarymanager/config.html | ||
| | | ||
| |--Foo | ||
| | |- Foo.c | ||
| | |- Foo.h | ||
| | | ||
| |- README --> THIS FILE | ||
| | ||
|- platformio.ini | ||
|--src | ||
|- main.c | ||
|
||
and a contents of `src/main.c`: | ||
``` | ||
#include <Foo.h> | ||
#include <Bar.h> | ||
|
||
int main (void) | ||
{ | ||
... | ||
} | ||
|
||
``` | ||
|
||
PlatformIO Library Dependency Finder will find automatically dependent | ||
libraries scanning project source files. | ||
|
||
More information about PlatformIO Library Dependency Finder | ||
- https://docs.platformio.org/page/librarymanager/ldf.html |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
; PlatformIO Project Configuration File | ||
; | ||
; Build options: build flags, source filter | ||
; Upload options: custom upload port, speed and extra flags | ||
; Library options: dependencies, extra library storages | ||
; Advanced options: extra scripting | ||
; | ||
; Please visit documentation for the other options and examples | ||
; https://docs.platformio.org/page/projectconf.html | ||
|
||
[env:lolin32_lite] | ||
platform = espressif32 | ||
board = lolin32_lite | ||
framework = arduino |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
#include "FS.h" | ||
#include "SD.h" | ||
#include "SPI.h" | ||
#include "sd.hpp" | ||
|
||
void setup() { | ||
Serial.begin(9600); | ||
sd::setup(); | ||
// sd::writeFile(SD, "/mydir/hello.txt", "siemano4"); | ||
delay(1000); | ||
sd::readFile(SD, "/mydir/hello.txt"); | ||
} | ||
|
||
void loop() {} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,105 @@ | ||
#include "sd.hpp" | ||
|
||
namespace sd { | ||
|
||
void writeFile(fs::FS &fs, const char *path, const char *message) { | ||
Serial.printf("Writing file: %s\n", path); | ||
|
||
File file = fs.open(path, FILE_APPEND); | ||
|
||
if (!file) { | ||
Serial.println("Failed to open file for writing"); | ||
return; | ||
} | ||
|
||
if (file.println(message)) { | ||
Serial.println("File written"); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. same |
||
} else { | ||
Serial.println("Write failed"); | ||
} | ||
file.close(); | ||
} | ||
|
||
void createDir(fs::FS &fs, const char *path) { | ||
Serial.printf("Creating Dir: %s\n", path); | ||
|
||
if (fs.mkdir(path)) { | ||
Serial.println("Dir created"); | ||
} else { | ||
Serial.println("mkdir failed"); | ||
} | ||
} | ||
|
||
void listDir(fs::FS &fs, const char *dirname, uint8_t levels) { | ||
Serial.printf("Listing directory: %s\n", dirname); | ||
|
||
File root = fs.open(dirname); | ||
if (!root) { | ||
Serial.println("Failed to open directory"); | ||
return; | ||
} | ||
if (!root.isDirectory()) { | ||
Serial.println("Not a directory"); | ||
return; | ||
} | ||
|
||
File file = root.openNextFile(); | ||
while (file) { | ||
if (file.isDirectory()) { | ||
Serial.print(" DIR : "); | ||
Serial.println(file.name()); | ||
if (levels) { | ||
listDir(fs, file.name(), levels - 1); | ||
} | ||
} else { | ||
Serial.print(" FILE: "); | ||
Serial.print(file.name()); | ||
Serial.print(" SIZE: "); | ||
Serial.println(file.size()); | ||
} | ||
file = root.openNextFile(); | ||
} | ||
} | ||
|
||
void readFile(fs::FS &fs, const char *path) { | ||
Serial.printf("Reading file: %s\n", path); | ||
|
||
File file = fs.open(path); | ||
if (!file) { | ||
Serial.println("Failed to open file for reading"); | ||
return; | ||
} | ||
|
||
Serial.print("Read from file: \n"); | ||
while (file.available()) { | ||
Serial.write(file.read()); | ||
} | ||
file.close(); | ||
} | ||
|
||
void writeData(fs::FS &fs, const char *path, const char *message) { | ||
File file = fs.open(path, FILE_APPEND); | ||
if (!file) { | ||
Serial.println("Failed to open file for writing"); | ||
return; | ||
} | ||
if (file.println(message)) { | ||
Serial.println("File written"); | ||
} else { | ||
Serial.println("Write failed"); | ||
} | ||
file.close(); | ||
} | ||
void setup() { | ||
if (!SD.begin(5)) { | ||
Serial.println("Card Mount Failed"); | ||
return; | ||
} | ||
uint8_t cardType = SD.cardType(); | ||
|
||
if (cardType == CARD_NONE) { | ||
Serial.println("No SD card attached"); | ||
return; | ||
} | ||
} | ||
} // namespace sd |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
|
||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. wtf is this readme... it can stay tho There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. |
||
This directory is intended for PlatformIO Test Runner and project tests. | ||
|
||
Unit Testing is a software testing method by which individual units of | ||
source code, sets of one or more MCU program modules together with associated | ||
control data, usage procedures, and operating procedures, are tested to | ||
determine whether they are fit for use. Unit testing finds problems early | ||
in the development cycle. | ||
|
||
More information about PlatformIO Unit Testing: | ||
- https://docs.platformio.org/en/latest/advanced/unit-testing/index.html |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
dont print to serial on success scenario only on failure