Surasak Nasuriwong / FileManager

Dependencies:   SDFileSystem

Dependents:   RwSDCard_Xml_GPS

Committer:
Lucyjungz
Date:
Sat May 21 14:35:10 2016 +0000
Revision:
15:b63a539c3754
Parent:
14:4ba6147f067b
Child:
16:c13dc589bb55
Bug fix log unit instead of variable name; SDFilename must be call in main function

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Lucyjungz 14:4ba6147f067b 1 /**
Lucyjungz 14:4ba6147f067b 2 ******************************************************************************
Lucyjungz 14:4ba6147f067b 3 * @file FileManager.h
Lucyjungz 14:4ba6147f067b 4 * @author Narut T
Lucyjungz 14:4ba6147f067b 5 * @version V1
Lucyjungz 14:4ba6147f067b 6 * @date 19/05/2016
Lucyjungz 14:4ba6147f067b 7 * @brief Header file for File Manager
Lucyjungz 14:4ba6147f067b 8 ******************************************************************************/
Lucyjungz 3:6e08d0bba1bb 9 /* ############### Constant Defination ################## */
Lucyjungz 3:6e08d0bba1bb 10
Lucyjungz 14:4ba6147f067b 11 #define DEVICE_NAME "sd" /*!< Device directory */
Lucyjungz 1:1f1f2b99756b 12
Lucyjungz 1:1f1f2b99756b 13 // DEVICE_NAME must be put in between "/" for file name
Lucyjungz 14:4ba6147f067b 14 #define SETUP_FILE_NAME "/sd/RMS_Tester.xml" /*!< Setup File Name */
Lucyjungz 14:4ba6147f067b 15 #define GPS_LOG_FILE_NAME "/sd/YYYY-MM-DD.gps.csv " /*!< GPS Log File Name */
Lucyjungz 14:4ba6147f067b 16 #define RTL_LOG_FILE_NAME "/sd/YYYY-MM-DD.rtl.csv" /*!< RMS Log File Name */
Lucyjungz 14:4ba6147f067b 17 #define VARIABLE_FILE_NAME "/sd/20160216185627_upload.xml" /*!< Mini RMS Log File Name */
nsrwsurasak 0:a27e0d3581d1 18 #define MINIRMS_LOG_FILE_NAME "/sd/miniRMS.log"
nsrwsurasak 0:a27e0d3581d1 19
Lucyjungz 11:e21d4c5bfd1b 20 /** XML Tag */
Lucyjungz 14:4ba6147f067b 21 #define GPS_TAG "<Gps>" /*!< GPS Tag */
Lucyjungz 14:4ba6147f067b 22 #define DATA_TAG "<Data>" /*!< Data Tag */
Lucyjungz 14:4ba6147f067b 23 #define UPDATE_INTERVAL_TAG "<Update_Interval>" /*!< Update Internal Tag */
Lucyjungz 14:4ba6147f067b 24 #define VAR_NAME_TAG "<varName>" /*!< Variable Name Tag */
Lucyjungz 14:4ba6147f067b 25 #define VAR_ADDR_TAG "<varAddress>" /*!< Variable Address Tag */
Lucyjungz 14:4ba6147f067b 26 #define VAR_TYPE_TAG "<varType>" /*!< Variable Type Tag */
Lucyjungz 14:4ba6147f067b 27 #define VAR_LSB1_TAG "<LSB1>" /*!< Variable LSB1 Tag */
Lucyjungz 14:4ba6147f067b 28 #define VAR_LSB2_TAG "<LSB2>" /*!< Variable LSB2 Tag */
Lucyjungz 14:4ba6147f067b 29 #define VAR_BITMASK_TAG "<BitMask>" /*!< Variable Bit Mask Tag */
Lucyjungz 14:4ba6147f067b 30 #define VAR_UNIT_TAG "<Unit>" /*!< Variable Unit Tag */
nsrwsurasak 0:a27e0d3581d1 31
Lucyjungz 11:e21d4c5bfd1b 32 /** XML Text Size */
Lucyjungz 14:4ba6147f067b 33 #define XMLTEXT_SIZE 20 /*!< XML Text Maximum size */
Lucyjungz 14:4ba6147f067b 34 #define VAR_NAME_MAX_SIZE 20 /*!< Variable Name Maximum Size */
Lucyjungz 14:4ba6147f067b 35 #define VAR_ADDR_MAX_SIZE 10 /*!< Variable Address Maximum Size */
Lucyjungz 14:4ba6147f067b 36 #define VAR_TYPE_MAX_SIZE 3 /*!< Variable Type Maximum Size */
Lucyjungz 14:4ba6147f067b 37 #define VAR_LSB1_MAX_SIZE 3 /*!< Variable LSB1 Maximum Size */
Lucyjungz 14:4ba6147f067b 38 #define VAR_LSB2_MAX_SIZE 10 /*!< Variable LSB2 Maximum Size */
Lucyjungz 14:4ba6147f067b 39 #define VAR_BITMASK_MAX_SIZE 5 /*!< Variable Bit Mask Maximum Size */
Lucyjungz 14:4ba6147f067b 40 #define VAR_UNIT_MAX_SIZE 20 /*!< Variable Unit Maximum Size */
Lucyjungz 14:4ba6147f067b 41
Lucyjungz 14:4ba6147f067b 42 #define MAX_VAR 50 /*!< Maximum variable to be supported */
Lucyjungz 5:7c513eee7b2b 43
Lucyjungz 14:4ba6147f067b 44 #define RMS_HEADER_TIME "Time" /*!< RMS Header Time tag */
Lucyjungz 14:4ba6147f067b 45 #define RMS_HEADER_MSECOND "MSecond" /*!< RMS MSecond Time tag */
Lucyjungz 14:4ba6147f067b 46 #define READ_FILE_BUFFER_SIZE 1024 /*!< Read file buffer size */
Lucyjungz 14:4ba6147f067b 47 #define RENAME_FILE_BUFFER_SIZE 5 /*!< Rename File buffer size */
nsrwsurasak 0:a27e0d3581d1 48
Lucyjungz 14:4ba6147f067b 49 /** Offset for /sd/YYYY-MM-DD- string */
Lucyjungz 14:4ba6147f067b 50 #define TIMESTAMP_YEAR_OFFSET 4 /*!< Offset for year */
Lucyjungz 14:4ba6147f067b 51 #define TIMESTAMP_YEAR_SIZE 4 /*!< Size for year */
Lucyjungz 14:4ba6147f067b 52 #define TIMESTAMP_MONTH_OFFSET 9 /*!< Offset for month */
Lucyjungz 14:4ba6147f067b 53 #define TIMESTAMP_MONTH_SIZE 2 /*!< Size for month */
Lucyjungz 14:4ba6147f067b 54 #define TIMESTAMP_DATE_OFFSET 12 /*!< Offset for date */
Lucyjungz 14:4ba6147f067b 55 #define TIMESTAMP_DATE_SIZE 2 /*!< Size for date */
Lucyjungz 14:4ba6147f067b 56 #define YEAR_4DIGITS_OFFSET 1900 /*!< Offset to convert 2 digits year to 4 digits */
Lucyjungz 1:1f1f2b99756b 57
Lucyjungz 3:6e08d0bba1bb 58
Lucyjungz 3:6e08d0bba1bb 59 /* ############### Enum ################## */
Lucyjungz 14:4ba6147f067b 60
Lucyjungz 14:4ba6147f067b 61 /* Exported types ------------------------------------------------------------*/
Lucyjungz 14:4ba6147f067b 62 /** @defgroup ReadingFileState Exported Types
Lucyjungz 14:4ba6147f067b 63 * @{
Lucyjungz 14:4ba6147f067b 64 */
Lucyjungz 14:4ba6147f067b 65
Lucyjungz 14:4ba6147f067b 66 /**
Lucyjungz 14:4ba6147f067b 67 * @brief Reading File State structures definition
Lucyjungz 14:4ba6147f067b 68 */
nsrwsurasak 0:a27e0d3581d1 69 typedef enum {
Lucyjungz 14:4ba6147f067b 70 STATE_FINDING, /*!< Finding */
Lucyjungz 14:4ba6147f067b 71 STATE_FOUND_DATA, /*!< Found Data tag */
Lucyjungz 14:4ba6147f067b 72 STATE_FOUND_DATA_INTERVAL, /*!<< Found update internal of tag*/
Lucyjungz 14:4ba6147f067b 73 STATE_FOUND_GPS, /*!< Found GPS tag */
Lucyjungz 14:4ba6147f067b 74 STATE_FOUND_GPS_INTERVAL, /*!< Found update internal of GPS*/
nsrwsurasak 0:a27e0d3581d1 75 } ReadingFileState;
nsrwsurasak 0:a27e0d3581d1 76
nsrwsurasak 0:a27e0d3581d1 77
Lucyjungz 3:6e08d0bba1bb 78 /* ############### Structure ################## */
Lucyjungz 3:6e08d0bba1bb 79
Lucyjungz 14:4ba6147f067b 80
Lucyjungz 14:4ba6147f067b 81 /**
Lucyjungz 14:4ba6147f067b 82 * @brief Structure of Variable List File
Lucyjungz 14:4ba6147f067b 83 */
nsrwsurasak 0:a27e0d3581d1 84 typedef struct {
Lucyjungz 14:4ba6147f067b 85 char varName[VAR_NAME_MAX_SIZE]; /*!< char array Variable Name */
Lucyjungz 14:4ba6147f067b 86 char varAddress[VAR_ADDR_MAX_SIZE+1]; /*!< char array Variable Address */
Lucyjungz 14:4ba6147f067b 87 char varType[VAR_TYPE_MAX_SIZE]; /*!< char array Variable Type */
Lucyjungz 14:4ba6147f067b 88 char varLSB1[VAR_LSB1_MAX_SIZE]; /*!< char array Variable LSB1 */
Lucyjungz 14:4ba6147f067b 89 char varLSB2[VAR_LSB2_MAX_SIZE]; /*!< char array Variable LSB2 */
Lucyjungz 14:4ba6147f067b 90 char varBitMask[VAR_BITMASK_MAX_SIZE]; /*!< char array Variable Bit Mask */
Lucyjungz 14:4ba6147f067b 91 char varUnit[VAR_UNIT_MAX_SIZE]; /*!< char array Variable Unit */
nsrwsurasak 0:a27e0d3581d1 92 } Variable_Data_TypeDef;
nsrwsurasak 0:a27e0d3581d1 93
Lucyjungz 3:6e08d0bba1bb 94
Lucyjungz 3:6e08d0bba1bb 95 /* ############### Function Prototype ################## */
Lucyjungz 14:4ba6147f067b 96 void FILEMANAGER_ReadSetupFile();
Lucyjungz 14:4ba6147f067b 97 void FILEMANAGER_DeleteFile(char filename[]);
Lucyjungz 14:4ba6147f067b 98 int FILEMANAGER_GPSInterval();
Lucyjungz 14:4ba6147f067b 99 int FILEMANAGER_DataInterval();
Lucyjungz 14:4ba6147f067b 100 void FILEMANAGER_LogGPSData(time_t timestamp ,char lat[], char longti[]);
Lucyjungz 14:4ba6147f067b 101 void FILEMANAGER_LogSystemData(float gps_interval);
Lucyjungz 14:4ba6147f067b 102 Variable_Data_TypeDef * FILEMANAGER_ReadVarFile();
Lucyjungz 14:4ba6147f067b 103 int FILEMANAGER_GetAmountVarList();
Lucyjungz 14:4ba6147f067b 104 Variable_Data_TypeDef * FILEMANAGER_GetVarList();
Lucyjungz 14:4ba6147f067b 105 void FILEMANAGER_LogRMSData(time_t timestamp ,float * var, int size);
Lucyjungz 14:4ba6147f067b 106 void FILEMANAGER_LogRMSHeader(time_t timestamp);
Lucyjungz 14:4ba6147f067b 107 bool FILEMANAGER_IsFileExist(char filename[]);