Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: FileManager.h
- Revision:
- 14:4ba6147f067b
- Parent:
- 11:e21d4c5bfd1b
- Child:
- 15:b63a539c3754
--- a/FileManager.h Wed May 18 12:55:07 2016 +0000 +++ b/FileManager.h Thu May 19 10:44:35 2016 +0000 @@ -1,75 +1,108 @@ +/** + ****************************************************************************** + * @file FileManager.h + * @author Narut T + * @version V1 + * @date 19/05/2016 + * @brief Header file for File Manager + ******************************************************************************/ /* ############### Constant Defination ################## */ -#define DEVICE_NAME "sd" /** Device directory */ +#define DEVICE_NAME "sd" /*!< Device directory */ // DEVICE_NAME must be put in between "/" for file name -#define SETUP_FILE_NAME "/sd/RMS_Tester.xml" /** Setup File Name */ -#define GPS_LOG_FILE_NAME "/sd/YYYY-MM-DD.gps.csv " /** GPS Log File Name */ -#define RTL_LOG_FILE_NAME "/sd/YYYY-MM-DD.rtl.csv" /** RMS Log File Name */ -#define VARIABLE_FILE_NAME "/sd/20160216185627_upload.xml" /** Mini RMS Log File Name */ +#define SETUP_FILE_NAME "/sd/RMS_Tester.xml" /*!< Setup File Name */ +#define GPS_LOG_FILE_NAME "/sd/YYYY-MM-DD.gps.csv " /*!< GPS Log File Name */ +#define RTL_LOG_FILE_NAME "/sd/YYYY-MM-DD.rtl.csv" /*!< RMS Log File Name */ +#define VARIABLE_FILE_NAME "/sd/20160216185627_upload.xml" /*!< Mini RMS Log File Name */ #define MINIRMS_LOG_FILE_NAME "/sd/miniRMS.log" /** XML Tag */ -#define GPS_TAG "<Gps>" /** GPS Tag */ -#define DATA_TAG "<Data>" /** Data Tag */ -#define UPDATE_INTERVAL_TAG "<Update_Interval>" /** Update Internal Tag */ -#define VAR_NAME_TAG "<varName>" /** Variable Name Tag */ -#define VAR_ADDR_TAG "<varAddress>" /** Variable Address Tag */ -#define VAR_TYPE_TAG "<varType>" /** Variable Type Tag */ -#define VAR_LSB1_TAG "<LSB1>" /** Variable LSB1 Tag */ -#define VAR_LSB2_TAG "<LSB2>" /** Variable LSB2 Tag */ -#define VAR_BITMASK_TAG "<BitMask>" /** Variable Bit Mask Tag */ -#define VAR_UNIT_TAG "<Unit>" /** Variable Unit Tag */ +#define GPS_TAG "<Gps>" /*!< GPS Tag */ +#define DATA_TAG "<Data>" /*!< Data Tag */ +#define UPDATE_INTERVAL_TAG "<Update_Interval>" /*!< Update Internal Tag */ +#define VAR_NAME_TAG "<varName>" /*!< Variable Name Tag */ +#define VAR_ADDR_TAG "<varAddress>" /*!< Variable Address Tag */ +#define VAR_TYPE_TAG "<varType>" /*!< Variable Type Tag */ +#define VAR_LSB1_TAG "<LSB1>" /*!< Variable LSB1 Tag */ +#define VAR_LSB2_TAG "<LSB2>" /*!< Variable LSB2 Tag */ +#define VAR_BITMASK_TAG "<BitMask>" /*!< Variable Bit Mask Tag */ +#define VAR_UNIT_TAG "<Unit>" /*!< Variable Unit Tag */ /** XML Text Size */ -#define XMLTEXT_SIZE 20 /** XML Text Maximum size */ -#define VAR_NAME_MAX_SIZE 20 /** Variable Name Maximum Size */ -#define VAR_ADDR_MAX_SIZE 10 /** Variable Address Maximum Size */ -#define VAR_TYPE_MAX_SIZE 3 /** Variable Type Maximum Size */ -#define VAR_LSB1_MAX_SIZE 3 /** Variable LSB1 Maximum Size */ -#define VAR_LSB2_MAX_SIZE 10 /** Variable LSB2 Maximum Size */ -#define VAR_BITMASK_MAX_SIZE 5 /** Variable Bit Mask Maximum Size */ -#define VAR_UNIT_MAX_SIZE 20 /** Variable Unit Maximum Size */ +#define XMLTEXT_SIZE 20 /*!< XML Text Maximum size */ +#define VAR_NAME_MAX_SIZE 20 /*!< Variable Name Maximum Size */ +#define VAR_ADDR_MAX_SIZE 10 /*!< Variable Address Maximum Size */ +#define VAR_TYPE_MAX_SIZE 3 /*!< Variable Type Maximum Size */ +#define VAR_LSB1_MAX_SIZE 3 /*!< Variable LSB1 Maximum Size */ +#define VAR_LSB2_MAX_SIZE 10 /*!< Variable LSB2 Maximum Size */ +#define VAR_BITMASK_MAX_SIZE 5 /*!< Variable Bit Mask Maximum Size */ +#define VAR_UNIT_MAX_SIZE 20 /*!< Variable Unit Maximum Size */ + +#define MAX_VAR 50 /*!< Maximum variable to be supported */ -#define MAX_VAR 50 /** Maximum variable to be supported */ +#define RMS_HEADER_TIME "Time" /*!< RMS Header Time tag */ +#define RMS_HEADER_MSECOND "MSecond" /*!< RMS MSecond Time tag */ +#define READ_FILE_BUFFER_SIZE 1024 /*!< Read file buffer size */ +#define RENAME_FILE_BUFFER_SIZE 5 /*!< Rename File buffer size */ -#define RMS_HEADER_TIME "Time" /** RMS Header Time tag */ -#define RMS_HEADER_MSECOND "MSecond" /** RMS MSecond Time tag */ +/** Offset for /sd/YYYY-MM-DD- string */ +#define TIMESTAMP_YEAR_OFFSET 4 /*!< Offset for year */ +#define TIMESTAMP_YEAR_SIZE 4 /*!< Size for year */ +#define TIMESTAMP_MONTH_OFFSET 9 /*!< Offset for month */ +#define TIMESTAMP_MONTH_SIZE 2 /*!< Size for month */ +#define TIMESTAMP_DATE_OFFSET 12 /*!< Offset for date */ +#define TIMESTAMP_DATE_SIZE 2 /*!< Size for date */ +#define YEAR_4DIGITS_OFFSET 1900 /*!< Offset to convert 2 digits year to 4 digits */ /* ############### Enum ################## */ + +/* Exported types ------------------------------------------------------------*/ +/** @defgroup ReadingFileState Exported Types + * @{ + */ + +/** + * @brief Reading File State structures definition + */ typedef enum { - STATE_FINDING, /** Finding */ - STATE_FOUND_DATA, /** Found Data tag */ - STATE_FOUND_DATA_INTERVAL, /**< Found update internal of tag*/ - STATE_FOUND_GPS, /** Found GPS tag */ - STATE_FOUND_GPS_INTERVAL, /** Found update internal of GPS*/ + STATE_FINDING, /*!< Finding */ + STATE_FOUND_DATA, /*!< Found Data tag */ + STATE_FOUND_DATA_INTERVAL, /*!<< Found update internal of tag*/ + STATE_FOUND_GPS, /*!< Found GPS tag */ + STATE_FOUND_GPS_INTERVAL, /*!< Found update internal of GPS*/ } ReadingFileState; /* ############### Structure ################## */ + +/** + * @brief Structure of Variable List File + */ typedef struct { - char varName[VAR_NAME_MAX_SIZE]; /** char array Variable Name */ - char varAddress[VAR_ADDR_MAX_SIZE+1]; /** char array Variable Address */ - char varType[VAR_TYPE_MAX_SIZE]; /** char array Variable Type */ - char varLSB1[VAR_LSB1_MAX_SIZE]; /** char array Variable LSB1 */ - char varLSB2[VAR_LSB2_MAX_SIZE]; /** char array Variable LSB2 */ - char varBitMask[VAR_BITMASK_MAX_SIZE]; /** char array Variable Bit Mask */ - char varUnit[VAR_UNIT_MAX_SIZE]; /** char array Variable Unit */ + char varName[VAR_NAME_MAX_SIZE]; /*!< char array Variable Name */ + char varAddress[VAR_ADDR_MAX_SIZE+1]; /*!< char array Variable Address */ + char varType[VAR_TYPE_MAX_SIZE]; /*!< char array Variable Type */ + char varLSB1[VAR_LSB1_MAX_SIZE]; /*!< char array Variable LSB1 */ + char varLSB2[VAR_LSB2_MAX_SIZE]; /*!< char array Variable LSB2 */ + char varBitMask[VAR_BITMASK_MAX_SIZE]; /*!< char array Variable Bit Mask */ + char varUnit[VAR_UNIT_MAX_SIZE]; /*!< char array Variable Unit */ } Variable_Data_TypeDef; /* ############### Function Prototype ################## */ -void FileManager_ReadSetupFile(); -void FileManager_DeleteFile(char filename[]); -int FileManager_GPSInterval(); -int FileManager_DataInterval(); -void FileManager_LogGPSData(time_t timestamp ,char lat[], char longti[]); -void FileManager_LogSystemData(float gps_interval); -Variable_Data_TypeDef * FileManager_ReadVarFile(); -int FileManager_GetAmountVarList(); -Variable_Data_TypeDef * FileManager_GetVarList(); -void FileManager_LogRMSData(time_t timestamp ,float * var, int size); -void FileManager_LogRMSHeader(time_t timestamp); -bool FileManager_IsFileExist(char filename[]); +void FILEMANAGER_ReadSetupFile(); +void FILEMANAGER_DeleteFile(char filename[]); +int FILEMANAGER_GPSInterval(); +int FILEMANAGER_DataInterval(); +void FILEMANAGER_LogGPSData(time_t timestamp ,char lat[], char longti[]); +void FILEMANAGER_LogSystemData(float gps_interval); +Variable_Data_TypeDef * FILEMANAGER_ReadVarFile(); +int FILEMANAGER_GetAmountVarList(); +Variable_Data_TypeDef * FILEMANAGER_GetVarList(); +void FILEMANAGER_LogRMSData(time_t timestamp ,float * var, int size); +void FILEMANAGER_LogRMSHeader(time_t timestamp); +bool FILEMANAGER_IsFileExist(char filename[]); +void FILEMANAGER_Init(void);