Перенос на новую организацию GONEC
This commit is contained in:
commit
891e2dc07c
|
|
@ -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