File manager

Dependencies:   SDFileSystem

Dependents:   RwSDCard_Xml_GPS

Committer:
nsrwsurasak
Date:
Tue Sep 20 07:39:16 2016 +0000
Revision:
38:e2799f75940f
Parent:
36:09e662a69c50
Fix bug and delete print message.

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
nsrwsurasak 16:c13dc589bb55 11 #ifndef FILEMANAGER_H
nsrwsurasak 16:c13dc589bb55 12 #define FILEMANAGER_H
nsrwsurasak 16:c13dc589bb55 13
Lucyjungz 14:4ba6147f067b 14 #define DEVICE_NAME "sd" /*!< Device directory */
Lucyjungz 1:1f1f2b99756b 15
Lucyjungz 1:1f1f2b99756b 16 // DEVICE_NAME must be put in between "/" for file name
Lucyjungz 21:0c52dbc23f52 17 #define PREFIX_FILE_NAME "/sd/" /*!< Prefix File Name */
Lucyjungz 14:4ba6147f067b 18 #define SETUP_FILE_NAME "/sd/RMS_Tester.xml" /*!< Setup File Name */
Lucyjungz 14:4ba6147f067b 19 #define GPS_LOG_FILE_NAME "/sd/YYYY-MM-DD.gps.csv " /*!< GPS Log File Name */
Lucyjungz 14:4ba6147f067b 20 #define RTL_LOG_FILE_NAME "/sd/YYYY-MM-DD.rtl.csv" /*!< RMS Log File Name */
Lucyjungz 14:4ba6147f067b 21 #define VARIABLE_FILE_NAME "/sd/20160216185627_upload.xml" /*!< Mini RMS Log File Name */
nsrwsurasak 0:a27e0d3581d1 22 #define MINIRMS_LOG_FILE_NAME "/sd/miniRMS.log"
nsrwsurasak 0:a27e0d3581d1 23
Lucyjungz 11:e21d4c5bfd1b 24 /** XML Tag */
Lucyjungz 14:4ba6147f067b 25 #define GPS_TAG "<Gps>" /*!< GPS Tag */
Lucyjungz 14:4ba6147f067b 26 #define DATA_TAG "<Data>" /*!< Data Tag */
Lucyjungz 21:0c52dbc23f52 27 #define VAR_LIST_FILE_TAG "<List_File_Name>" /*!< Variable List File Name Tag */
Lucyjungz 29:964610d82f8d 28 #define RMS_DEVICE_TAG "<Device>" /*!< RMS Device Tag */
Lucyjungz 29:964610d82f8d 29 #define RMS_KEY_TAG "<Key>" /*!< RMS Key Tag*/
Lucyjungz 14:4ba6147f067b 30 #define UPDATE_INTERVAL_TAG "<Update_Interval>" /*!< Update Internal Tag */
Lucyjungz 14:4ba6147f067b 31 #define VAR_NAME_TAG "<varName>" /*!< Variable Name Tag */
Lucyjungz 14:4ba6147f067b 32 #define VAR_ADDR_TAG "<varAddress>" /*!< Variable Address Tag */
Lucyjungz 14:4ba6147f067b 33 #define VAR_TYPE_TAG "<varType>" /*!< Variable Type Tag */
Lucyjungz 14:4ba6147f067b 34 #define VAR_LSB1_TAG "<LSB1>" /*!< Variable LSB1 Tag */
Lucyjungz 14:4ba6147f067b 35 #define VAR_LSB2_TAG "<LSB2>" /*!< Variable LSB2 Tag */
Lucyjungz 14:4ba6147f067b 36 #define VAR_BITMASK_TAG "<BitMask>" /*!< Variable Bit Mask Tag */
Lucyjungz 14:4ba6147f067b 37 #define VAR_UNIT_TAG "<Unit>" /*!< Variable Unit Tag */
nsrwsurasak 0:a27e0d3581d1 38
Lucyjungz 11:e21d4c5bfd1b 39 /** XML Text Size */
Lucyjungz 14:4ba6147f067b 40 #define XMLTEXT_SIZE 20 /*!< XML Text Maximum size */
Lucyjungz 14:4ba6147f067b 41 #define VAR_NAME_MAX_SIZE 20 /*!< Variable Name Maximum Size */
Lucyjungz 14:4ba6147f067b 42 #define VAR_ADDR_MAX_SIZE 10 /*!< Variable Address Maximum Size */
Lucyjungz 14:4ba6147f067b 43 #define VAR_TYPE_MAX_SIZE 3 /*!< Variable Type Maximum Size */
Lucyjungz 14:4ba6147f067b 44 #define VAR_LSB1_MAX_SIZE 3 /*!< Variable LSB1 Maximum Size */
Lucyjungz 14:4ba6147f067b 45 #define VAR_LSB2_MAX_SIZE 10 /*!< Variable LSB2 Maximum Size */
Lucyjungz 14:4ba6147f067b 46 #define VAR_BITMASK_MAX_SIZE 5 /*!< Variable Bit Mask Maximum Size */
Lucyjungz 14:4ba6147f067b 47 #define VAR_UNIT_MAX_SIZE 20 /*!< Variable Unit Maximum Size */
Lucyjungz 14:4ba6147f067b 48
Lucyjungz 21:0c52dbc23f52 49 #define MAX_FILE_NAME_SIZE 40 /*!< Maximum File name size to be supported */
Lucyjungz 14:4ba6147f067b 50 #define MAX_VAR 50 /*!< Maximum variable to be supported */
Lucyjungz 5:7c513eee7b2b 51
Lucyjungz 14:4ba6147f067b 52 #define RMS_HEADER_TIME "Time" /*!< RMS Header Time tag */
Lucyjungz 14:4ba6147f067b 53 #define RMS_HEADER_MSECOND "MSecond" /*!< RMS MSecond Time tag */
Lucyjungz 14:4ba6147f067b 54 #define READ_FILE_BUFFER_SIZE 1024 /*!< Read file buffer size */
Lucyjungz 14:4ba6147f067b 55 #define RENAME_FILE_BUFFER_SIZE 5 /*!< Rename File buffer size */
nsrwsurasak 0:a27e0d3581d1 56
Lucyjungz 14:4ba6147f067b 57 /** Offset for /sd/YYYY-MM-DD- string */
Lucyjungz 14:4ba6147f067b 58 #define TIMESTAMP_YEAR_OFFSET 4 /*!< Offset for year */
Lucyjungz 14:4ba6147f067b 59 #define TIMESTAMP_YEAR_SIZE 4 /*!< Size for year */
Lucyjungz 14:4ba6147f067b 60 #define TIMESTAMP_MONTH_OFFSET 9 /*!< Offset for month */
Lucyjungz 14:4ba6147f067b 61 #define TIMESTAMP_MONTH_SIZE 2 /*!< Size for month */
Lucyjungz 14:4ba6147f067b 62 #define TIMESTAMP_DATE_OFFSET 12 /*!< Offset for date */
Lucyjungz 14:4ba6147f067b 63 #define TIMESTAMP_DATE_SIZE 2 /*!< Size for date */
Lucyjungz 14:4ba6147f067b 64 #define YEAR_4DIGITS_OFFSET 1900 /*!< Offset to convert 2 digits year to 4 digits */
Lucyjungz 1:1f1f2b99756b 65
nsrwsurasak 22:2fc64ad66e35 66 extern bool m_sdCardIsPresent;
Lucyjungz 3:6e08d0bba1bb 67 /* ############### Enum ################## */
Lucyjungz 14:4ba6147f067b 68
Lucyjungz 14:4ba6147f067b 69 /* Exported types ------------------------------------------------------------*/
Lucyjungz 14:4ba6147f067b 70 /** @defgroup ReadingFileState Exported Types
Lucyjungz 14:4ba6147f067b 71 * @{
Lucyjungz 14:4ba6147f067b 72 */
Lucyjungz 14:4ba6147f067b 73
Lucyjungz 14:4ba6147f067b 74 /**
Lucyjungz 14:4ba6147f067b 75 * @brief Reading File State structures definition
Lucyjungz 14:4ba6147f067b 76 */
nsrwsurasak 0:a27e0d3581d1 77 typedef enum {
Lucyjungz 14:4ba6147f067b 78 STATE_FINDING, /*!< Finding */
Lucyjungz 14:4ba6147f067b 79 STATE_FOUND_DATA, /*!< Found Data tag */
Lucyjungz 14:4ba6147f067b 80 STATE_FOUND_DATA_INTERVAL, /*!<< Found update internal of tag*/
Lucyjungz 14:4ba6147f067b 81 STATE_FOUND_GPS, /*!< Found GPS tag */
Lucyjungz 14:4ba6147f067b 82 STATE_FOUND_GPS_INTERVAL, /*!< Found update internal of GPS*/
nsrwsurasak 0:a27e0d3581d1 83 } ReadingFileState;
nsrwsurasak 0:a27e0d3581d1 84
nsrwsurasak 36:09e662a69c50 85 /**
nsrwsurasak 36:09e662a69c50 86 * @brief Write File Status structures definition
nsrwsurasak 36:09e662a69c50 87 */
nsrwsurasak 36:09e662a69c50 88 typedef enum {
nsrwsurasak 36:09e662a69c50 89 FILE_ERROR,
nsrwsurasak 36:09e662a69c50 90 FILE_OK
nsrwsurasak 36:09e662a69c50 91 } WritingFileStatus;
nsrwsurasak 36:09e662a69c50 92
nsrwsurasak 0:a27e0d3581d1 93
Lucyjungz 3:6e08d0bba1bb 94 /* ############### Structure ################## */
Lucyjungz 3:6e08d0bba1bb 95
Lucyjungz 14:4ba6147f067b 96
Lucyjungz 14:4ba6147f067b 97 /**
Lucyjungz 14:4ba6147f067b 98 * @brief Structure of Variable List File
Lucyjungz 14:4ba6147f067b 99 */
nsrwsurasak 0:a27e0d3581d1 100 typedef struct {
Lucyjungz 14:4ba6147f067b 101 char varName[VAR_NAME_MAX_SIZE]; /*!< char array Variable Name */
Lucyjungz 14:4ba6147f067b 102 char varAddress[VAR_ADDR_MAX_SIZE+1]; /*!< char array Variable Address */
Lucyjungz 14:4ba6147f067b 103 char varType[VAR_TYPE_MAX_SIZE]; /*!< char array Variable Type */
Lucyjungz 14:4ba6147f067b 104 char varLSB1[VAR_LSB1_MAX_SIZE]; /*!< char array Variable LSB1 */
Lucyjungz 14:4ba6147f067b 105 char varLSB2[VAR_LSB2_MAX_SIZE]; /*!< char array Variable LSB2 */
Lucyjungz 14:4ba6147f067b 106 char varBitMask[VAR_BITMASK_MAX_SIZE]; /*!< char array Variable Bit Mask */
Lucyjungz 14:4ba6147f067b 107 char varUnit[VAR_UNIT_MAX_SIZE]; /*!< char array Variable Unit */
nsrwsurasak 0:a27e0d3581d1 108 } Variable_Data_TypeDef;
nsrwsurasak 0:a27e0d3581d1 109
Lucyjungz 3:6e08d0bba1bb 110
Lucyjungz 20:61f5769a0716 111
Lucyjungz 3:6e08d0bba1bb 112 /* ############### Function Prototype ################## */
Lucyjungz 14:4ba6147f067b 113 void FILEMANAGER_ReadSetupFile();
Lucyjungz 14:4ba6147f067b 114 void FILEMANAGER_DeleteFile(char filename[]);
Lucyjungz 14:4ba6147f067b 115 int FILEMANAGER_GPSInterval();
Lucyjungz 14:4ba6147f067b 116 int FILEMANAGER_DataInterval();
Lucyjungz 14:4ba6147f067b 117 void FILEMANAGER_LogGPSData(time_t timestamp ,char lat[], char longti[]);
nsrwsurasak 27:b0eb0f36110e 118 void FILEMANAGER_LogSystemData(float gps_interval,float rms_interval,bool isResetCausedByWdg = false);
Lucyjungz 14:4ba6147f067b 119 Variable_Data_TypeDef * FILEMANAGER_ReadVarFile();
Lucyjungz 14:4ba6147f067b 120 int FILEMANAGER_GetAmountVarList();
Lucyjungz 14:4ba6147f067b 121 Variable_Data_TypeDef * FILEMANAGER_GetVarList();
nsrwsurasak 25:7f3420c04178 122 void FILEMANAGER_LogRMSData(time_t timestamp ,float * var, int size, bool * p_headerRequired, uint32_t msec);
Lucyjungz 33:dd67a980e9d8 123 void FILEMANAGER_LogRMSHeader(FILE *fp, time_t timestamp, char file_name[]);
Lucyjungz 14:4ba6147f067b 124 bool FILEMANAGER_IsFileExist(char filename[]);
Lucyjungz 32:69b7c870d69c 125 void FILEMANAGER_listDir(Serial* serial);
Lucyjungz 32:69b7c870d69c 126 void FILEMANAGER_DisplayFile(Serial* serial, char* filename);
nsrwsurasak 38:e2799f75940f 127 void FILEMANAGER_AddPrefixFilename(char* in, char* out);
nsrwsurasak 36:09e662a69c50 128 WritingFileStatus FILEMANAGER_WriteFile(Serial* serial, char* filename, char* input);
Lucyjungz 32:69b7c870d69c 129 void FILEMANAGER_Deletefile(char filename[]);
Lucyjungz 29:964610d82f8d 130 uint32_t FILEMANAGER_GetRxID();
Lucyjungz 29:964610d82f8d 131 uint32_t FILEMANAGER_GetTxID();
nsrwsurasak 16:c13dc589bb55 132 #endif