Release Tizen2.0 beta
[framework/location/gps-manager.git] / gps-manager / nmea_logger.c
index d23ff9a..fd14e6f 100644 (file)
@@ -23,6 +23,8 @@
 #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;
@@ -48,10 +65,10 @@ void start_nmea_log()
 
        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;
@@ -88,20 +105,18 @@ void write_nmea_log(char *data, int len)
        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");