i2c-ftdi-d2xx
Version:
i2c protocol implementation with ftdi-d2xx on standard boards that features no level translators on SDA and SCL
77 lines (68 loc) • 1.86 kB
JavaScript
const fs = require('fs');
const fsp = require('fs').promises;
const path = require('path');
const readFile = (filePath) => {
return new Promise((resolve, reject) => {
fs.readFile(filePath, 'utf8', (err, data) => {
if (err) {
reject(err);
} else {
resolve(data);
}
});
});
}
const writeFile = (data, filePath) => {
return new Promise((resolve, reject) => {
fs.writeFile(filePath, data, 'utf8', (err) => {
if (err) {
reject(err);
} else {
resolve();
}
});
});
}
const saveTextFile = async (fileString, filePath) => {
const res = {result: 'fail'};
try {
await writeFile(fileString, filePath);
res.result = 'pass';
} catch (error) {
res.error = error;
}
return res;
}
const loadTextFile = async (filepath) => {
const res = {result: 'fail'};
try {
const data = await readFile(filepath);
res.result = 'pass';
res.data = data;
} catch (error) {
res.error = error;
}
return res;
}
const createFileIfItDoesNotExist = async (filepath) => {
const dirpath = path.dirname(filepath);
await fsp.mkdir(dirpath, { recursive: true });
let result;
try {
await fsp.access(filepath);
result = `File ${filepath} exists`;
} catch (error) {
if (error.code === 'ENOENT') {
await fsp.writeFile(filepath, '', 'utf8');
result = `File ${filepath} was not existing and has been created`;
} else {
throw new FileError(error)
}
}
return result;
}
module.exports.readFile = readFile;
module.exports.writeFile = writeFile;
module.exports.saveTextFile = saveTextFile;
module.exports.loadTextFile = loadTextFile;
module.exports.createFileIfItDoesNotExist = createFileIfItDoesNotExist;