Init
This commit is contained in:
commit
15e150904a
|
|
@ -0,0 +1,110 @@
|
||||||
|
//
|
||||||
|
// Created by cfif on 14.02.23.
|
||||||
|
//
|
||||||
|
#include "file_logger.h"
|
||||||
|
#include "string.h"
|
||||||
|
#include "fs_base_func.h"
|
||||||
|
|
||||||
|
|
||||||
|
void FileLogger_Init(tFileLogger *env, tDeviceStorageIni *store, tFs *fs, tRtcIO *rtc, osMutexId_t access_log, char *dirlog) {
|
||||||
|
env->fs = fs;
|
||||||
|
env->dirlog[0] = '\0';
|
||||||
|
strcat(env->dirlog, dirlog);
|
||||||
|
env->store = store;
|
||||||
|
env->access = access_log;
|
||||||
|
env->rtcIo = rtc;
|
||||||
|
env->rtcIo->get(env->rtcIo, &env->timestampWriteFileLogger);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Получение имени файла лога
|
||||||
|
size_t getFileNameLogger(tRtcIO *rtc, char *buf, size_t len, int32_t gr) {
|
||||||
|
|
||||||
|
time_t timestamp;
|
||||||
|
rtc->get(rtc, ×tamp);
|
||||||
|
timestamp += gr * 3600;
|
||||||
|
|
||||||
|
struct tm timestampTM;
|
||||||
|
localtime_r(×tamp, ×tampTM);
|
||||||
|
|
||||||
|
return strftime(buf, len, "%d-%m-%y.LOG", ×tampTM);
|
||||||
|
}
|
||||||
|
|
||||||
|
uint32_t getStateWriteFileLogger(tFileLogger *env) {
|
||||||
|
return env->timestampWriteFileLogger;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
uint16_t FileLogger_Write(tFileLogger *env, uint8_t *data, uint16_t size, uint32_t timeout) {
|
||||||
|
|
||||||
|
// return 0;
|
||||||
|
|
||||||
|
FIL file;
|
||||||
|
FRESULT fr;
|
||||||
|
|
||||||
|
if (osMutexAcquire(env->access, 8000) == osOK) {
|
||||||
|
|
||||||
|
env->filename2[0] = '\0';
|
||||||
|
strcat(env->filename2, env->filename);
|
||||||
|
|
||||||
|
env->rtcIo->get(env->rtcIo, &env->timestampWriteFileLogger);
|
||||||
|
|
||||||
|
char FileNameLog[64];
|
||||||
|
FileNameLog[0] = '\0';
|
||||||
|
strcat(FileNameLog, env->dirlog);
|
||||||
|
getFileNameLogger(env->rtcIo, &FileNameLog[strlen(FileNameLog)],
|
||||||
|
sizeof(FileNameLog) - strlen(FileNameLog), env->store->nvm.Settings_General.GMTcorr_v);
|
||||||
|
|
||||||
|
env->filename[0] = '\0';
|
||||||
|
strcat(env->filename, FileNameLog);
|
||||||
|
|
||||||
|
fr = f_open_i(env->fs, &file, (TCHAR *) env->filename, FA_WRITE | FA_OPEN_APPEND);
|
||||||
|
|
||||||
|
if (fr) {
|
||||||
|
osMutexRelease(env->access);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
UINT bytes_written;
|
||||||
|
|
||||||
|
if (strcmp(env->filename, env->filename2) != 0) {
|
||||||
|
char str[512];
|
||||||
|
reportScan(str, env->store->nvm.Settings_General.ATnum_v);
|
||||||
|
|
||||||
|
fr = f_write_i(env->fs, &file, str, strlen(str), &bytes_written);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
fr = f_write_i(env->fs, &file, data, size, &bytes_written);
|
||||||
|
|
||||||
|
if (fr) {
|
||||||
|
f_close_i(env->fs, &file);
|
||||||
|
osMutexRelease(env->access);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
fr = f_close_i(env->fs, &file);
|
||||||
|
if (fr) {
|
||||||
|
osMutexRelease(env->access);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
osMutexRelease(env->access);
|
||||||
|
|
||||||
|
return bytes_written;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
uint16_t FileLogger_Receive(tFileLogger *env, uint8_t *data, uint16_t size, uint32_t timeout) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tSerialPortIO FileLogger_GetSerialIo(tFileLogger *env) {
|
||||||
|
tSerialPortIO serialPortIo = {
|
||||||
|
.env = env,
|
||||||
|
.receive =(void *) FileLogger_Receive,
|
||||||
|
.transmit =(void *) FileLogger_Write,
|
||||||
|
};
|
||||||
|
|
||||||
|
return serialPortIo;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
//
|
||||||
|
// Created by cfif on 14.02.23.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef GONEC_GSM_FILE_LOGGER_H
|
||||||
|
#define GONEC_GSM_FILE_LOGGER_H
|
||||||
|
#include "fs_interface.h"
|
||||||
|
#include "file_logger.h"
|
||||||
|
#include <DeviceStorageIni.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
tFs *fs;
|
||||||
|
tDeviceStorageIni *store;
|
||||||
|
char dirlog[64];
|
||||||
|
char filename[64];
|
||||||
|
char filename2[64];
|
||||||
|
osMutexId_t access;
|
||||||
|
tRtcIO *rtcIo;
|
||||||
|
time_t timestampWriteFileLogger;
|
||||||
|
} tFileLogger;
|
||||||
|
|
||||||
|
void FileLogger_Init(tFileLogger *env, tDeviceStorageIni *store, tFs *fs, tRtcIO *rtc, osMutexId_t access_log, char *dirlog);
|
||||||
|
tSerialPortIO FileLogger_GetSerialIo(tFileLogger *env);
|
||||||
|
|
||||||
|
uint32_t getStateWriteFileLogger(tFileLogger *env);
|
||||||
|
|
||||||
|
#endif //GONEC_GSM_FILE_LOGGER_H
|
||||||
|
|
@ -0,0 +1,10 @@
|
||||||
|
{
|
||||||
|
"cmake": {
|
||||||
|
"inc_dirs": [
|
||||||
|
"./"
|
||||||
|
],
|
||||||
|
"srcs": [
|
||||||
|
"./**.c"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue