|
- #include "RawSdFile.h"
-
- namespace sd {
-
- RawSdFile::RawSdFile(SdFat *sd, const char *filename) {
- _sd = sd;
- _filename = filename;
- }
-
- RawSdFile::~RawSdFile() {
- flush();
- }
-
- void RawSdFile::open(const uint32_t pos) {
- if (!_file.isOpen()) {
- _sd->chdir();
- _file = _sd->open(_filename, O_RDWR | O_CREAT);
- }
-
- _file.seek(pos);
- }
-
- void RawSdFile::flush() {
- if (!_file.isOpen()) return;
-
- _file.close();
- }
-
- void RawSdFile::write(const uint32_t pos, const void *val, const size_t size) {
- open(pos);
- _file.write(val, size);
- }
-
- void RawSdFile::read(const uint32_t pos, void *val, const size_t size) {
- open(pos);
- if (!_file.available()) return;
-
- _file.read(val, size);
- }
- }
|