#include <stdlib.h>
#include <errno.h>
#include <fcntl.h>
+#include <sys/types.h>
+#include <sys/stat.h>
#include <unistd.h>
#include <string.h>
#include "nmea_logger.h"
#define MAX_NMEA_RAW_DATA_LOG_FILE_CNT (999)
#define MAX_NMEA_LOG_FILE_PATH (100)
-#define NMEA_LOGGING_FILE_PATH "/opt/data/gps-manager/res/nmea_data"
+
+#define PHONE_FOLDER "/opt/media"
+#define GPSMANAGER_FOLDER PHONE_FOLDER"/gps-manager"
+#define NMEA_FOLDER GPSMANAGER_FOLDER"/NMEA"
+#define NMEA_LOGGING_FILE_PATH NMEA_FOLDER"/nmea_data"
int raw_nmea_fd = -1;
-static int open_nmea_log_file(const char *);
+static int generate_nmea_log_file(char *);
void start_nmea_log()
{
char filepath[MAX_NMEA_LOG_FILE_PATH];
- if (open_nmea_log_file(filepath) == -1) {
+ // File Open
+ struct stat st = {0};
+
+ if (stat(GPSMANAGER_FOLDER, &st) == -1) {
+ mkdir(GPSMANAGER_FOLDER, 0777);
+ }
+
+ if(stat(NMEA_FOLDER, &st) == -1)
+ mkdir(NMEA_FOLDER, 0777);
+
+
+ if (generate_nmea_log_file(filepath) == -1) {
LOG_GPS(DBG_ERR, "Starting LBS Logging for RAW NMEA data FAILED!");
raw_nmea_fd = -1;
return;
raw_nmea_fd = open(filepath, O_RDWR | O_APPEND | O_CREAT, 0644);
- if (raw_nmea_fd < -1) {
+ if (raw_nmea_fd < 0) {
LOG_GPS(DBG_ERR, "FAILED to open [%s], error[%d]", filepath, errno);
} else {
- LOG_GPS(DBG_LOW, "%s raw_nmea_fd [%d]", filepath, raw_nmea_fd);
+ LOG_GPS(DBG_LOW, "Success :: %s raw_nmea_fd [%d]", filepath, raw_nmea_fd);
}
return;
return;
}
-static int open_nmea_log_file(const char *filepath)
+static int generate_nmea_log_file(char *filepath)
{
int idx = 0;
int fd = 0;
char fn[MAX_NMEA_LOG_FILE_PATH];
for (idx = 0; idx < MAX_NMEA_RAW_DATA_LOG_FILE_CNT; idx++) {
- snprintf(fn, MAX_NMEA_LOG_FILE_PATH, "%s%03d.log", NMEA_LOGGING_FILE_PATH, idx);
- fd = open(fn, O_RDONLY);
- if (fd == -1) {
- LOG_GPS(DBG_LOW, "next log file [%s]", fn);
+ snprintf(fn, MAX_NMEA_LOG_FILE_PATH, "%s%03d.txt", NMEA_LOGGING_FILE_PATH, idx);
+ if ((fd = access(fn, R_OK)) == -1) {
+ LOG_GPS(DBG_LOW, "Next log file [%s]", fn);
+ strcpy(filepath, fn);
return 0;
- } else {
- close(fd);
}
}
LOG_GPS(DBG_LOW, "All NMEA RAW Data logging files are used. New log file can not be created");