read and push

Dependencies:   X_NUCLEO_IKS01A1 MLX90614 d7a_1x wizzi-utils

Fork of D7A_1x_demo_sensors_OS5 by WizziLab

files.h

Committer:
shawe
Date:
2017-02-17
Revision:
10:3d3dfc12f674
Parent:
8:01f0225408cf

File content as of revision 10:3d3dfc12f674:

#ifndef _FILES_H_
#define _FILES_H_

#include "mbed.h"
#include "d7a.h"

enum {
    // Alarm
    ALARM_FILE_ID       = 224,
    SIMUL_FILE_ID,
    
    // RFU
    RFU_FILE_ID_226, 
    RFU_FILE_ID_227, 
    RFU_FILE_ID_228, 
    RFU_FILE_ID_229, 

    // New cfg
    LIGHT_CFG_FILE_ID   = 230,
    VOLT_CFG_FILE_ID,
    RFU_CFG_FILE_ID_232, 
    RFU_CFG_FILE_ID_233, 
    RFU_CFG_FILE_ID_234, 

    // New value
    LIGHT_VALUE_FILE_ID = 235,
    VOLT_VALUE_FILE_ID, 
    RFU_VALUE_FILE_ID_237, 
    RFU_VALUE_FILE_ID_238, 
    RFU_VALUE_FILE_ID_239, 

    // Nucleo-64 default list
    MAG_CFG_FILE_ID     = 240,
    ACC_CFG_FILE_ID,
    GYR_CFG_FILE_ID,
    PRE_CFG_FILE_ID,   // 243
    HUM_CFG_FILE_ID,
    TEM1_CFG_FILE_ID,
    TEM2_CFG_FILE_ID,
    MAG_VALUE_FILE_ID, // 247
    ACC_VALUE_FILE_ID,
    GYR_VALUE_FILE_ID,
    PRE_VALUE_FILE_ID, // 250
    HUM_VALUE_FILE_ID,
    TEM1_VALUE_FILE_ID,
    TEM2_VALUE_FILE_ID,// 253
};

#define GENERIC_FILE(name,data)         TYPEDEF_STRUCT_PACKED{\
                                            data\
                                        } name##_t;\
                                        extern name##_t f_##name;
                                    
#define GENERIC_FILE_INIT(name,...)     name##_t f_##name = {\
                                            __VA_ARGS__\
                                        }
                                        
#define GENERIC_FILE_MAP(fid,name)      { (void*)fid, (void*)&f_##name }

// Types of reporting
typedef enum 
{
    REPORT_ALWAYS,
    REPORT_ON_DIFFERENCE,
    REPORT_ON_THRESHOLD,
    
} report_type_t;

// Sensor reporting configuration
TYPEDEF_STRUCT_PACKED 
{
    uint8_t  report_type;       // Type of report asked
    uint32_t period;            // Measure period (ms)
    uint32_t max_period;        // Maximum time between reports (s)
    uint32_t max_diff;          // Maximum difference allowed between two reported values
    int32_t  threshold_high;    // High threshold value triggering a report
    int32_t  threshold_low;     // Low threshold value triggering a report
    
} sensor_config_t;

// Firmware revision for the Dash7board
GENERIC_FILE(dev_rev, d7a_revision_t rev;);
GENERIC_FILE(simul, uint32_t divider;);
GENERIC_FILE(tem1_cfg, sensor_config_t cfg;);
GENERIC_FILE(volt_cfg, sensor_config_t cfg;);

uint32_t fs_write_file(const uint8_t file_id,
                        const uint16_t offset,
                        const uint16_t size,
                        const uint8_t* const content);
                        
uint32_t fs_read_file( const uint8_t file_id,
                        const uint16_t offset,
                        const uint16_t size,
                        uint8_t* buf);

#endif // _FILE_SYS_H_