Simon Hawe / D7_MLX_AND_BAT

Dependencies:   X_NUCLEO_IKS01A1 MLX90614 d7a_1x wizzi-utils

Fork of D7A_1x_demo_sensors_OS5 by WizziLab

Committer:
yordan
Date:
Fri Feb 03 14:36:58 2017 +0000
Revision:
8:01f0225408cf
Parent:
0:7e1fdc4d6e1c
Child:
10:3d3dfc12f674
added light sensor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jeej 0:7e1fdc4d6e1c 1 #include "files.h"
Jeej 0:7e1fdc4d6e1c 2 #include "dbg.h"
Jeej 0:7e1fdc4d6e1c 3 #include "sensors.h"
Jeej 0:7e1fdc4d6e1c 4
Jeej 0:7e1fdc4d6e1c 5 GENERIC_FILE_INIT(dev_rev,
Jeej 0:7e1fdc4d6e1c 6 .rev.manufacturer_id = 0x01BC50C7,
Jeej 0:7e1fdc4d6e1c 7 /// Device ID: Arbitrary number, at user/customer choice
Jeej 0:7e1fdc4d6e1c 8 .rev.device_id = 0x00000010,
Jeej 0:7e1fdc4d6e1c 9 /// Hardware Board ID:
Jeej 0:7e1fdc4d6e1c 10 .rev.hw_version = 0x00000152,
Jeej 0:7e1fdc4d6e1c 11 /// Firmware Version: made of
Jeej 0:7e1fdc4d6e1c 12 /// - major,minor and patch indexes
Jeej 0:7e1fdc4d6e1c 13 /// - fw_id : "build-flavour"
Jeej 0:7e1fdc4d6e1c 14 /// FW_ID | MAJOR | MINOR | PATCH | HASH |
Jeej 0:7e1fdc4d6e1c 15 // 1B | 1B | 1B | 2B | 4B |
yordan 8:01f0225408cf 16 #if defined(TARGET_STM32L152RE)
yordan 8:01f0225408cf 17 #ifdef TARGET_HAS_IKS01A1
yordan 8:01f0225408cf 18 .rev.fw_version.id = 0,
yordan 8:01f0225408cf 19 #else // simulated sensors
Jeej 0:7e1fdc4d6e1c 20 .rev.fw_version.id = 1,
yordan 8:01f0225408cf 21 #endif // TARGET_HAS_IKS01A1
yordan 8:01f0225408cf 22 #elif defined(TARGET_STM32L432KC)
yordan 8:01f0225408cf 23 .rev.fw_version.id = 2,
Jeej 0:7e1fdc4d6e1c 24 #else
yordan 8:01f0225408cf 25 #error "Please choose or add the right platform."
Jeej 0:7e1fdc4d6e1c 26 #endif
Jeej 0:7e1fdc4d6e1c 27 .rev.fw_version.major = 1,
Jeej 0:7e1fdc4d6e1c 28 .rev.fw_version.minor = 0,
Jeej 0:7e1fdc4d6e1c 29 .rev.fw_version.patch = 0,
Jeej 0:7e1fdc4d6e1c 30 .rev.fw_version.hash = 0x00000000,
Jeej 0:7e1fdc4d6e1c 31 /// "file-system" signature
Jeej 0:7e1fdc4d6e1c 32 .rev.fs_crc = 0x00000000,
Jeej 0:7e1fdc4d6e1c 33 );
Jeej 0:7e1fdc4d6e1c 34
Jeej 0:7e1fdc4d6e1c 35 GENERIC_FILE_INIT(simul,
Jeej 0:7e1fdc4d6e1c 36 .divider = 500, // Boot value
Jeej 0:7e1fdc4d6e1c 37 );
Jeej 0:7e1fdc4d6e1c 38
Jeej 0:7e1fdc4d6e1c 39 GENERIC_FILE_INIT(mag_cfg,
Jeej 0:7e1fdc4d6e1c 40 .cfg.report_type = REPORT_ON_DIFFERENCE,
Jeej 0:7e1fdc4d6e1c 41 .cfg.period = 1000,
Jeej 0:7e1fdc4d6e1c 42 .cfg.max_period = 300,
Jeej 0:7e1fdc4d6e1c 43 .cfg.max_diff = 500,
Jeej 0:7e1fdc4d6e1c 44 .cfg.threshold_high = 1000,
Jeej 0:7e1fdc4d6e1c 45 .cfg.threshold_low = -1000,
Jeej 0:7e1fdc4d6e1c 46 );
Jeej 0:7e1fdc4d6e1c 47
Jeej 0:7e1fdc4d6e1c 48 GENERIC_FILE_INIT(acc_cfg,
Jeej 0:7e1fdc4d6e1c 49 .cfg.report_type = REPORT_ON_DIFFERENCE,
Jeej 0:7e1fdc4d6e1c 50 .cfg.period = 1000,
Jeej 0:7e1fdc4d6e1c 51 .cfg.max_period = 300,
Jeej 0:7e1fdc4d6e1c 52 .cfg.max_diff = 100,
Jeej 0:7e1fdc4d6e1c 53 .cfg.threshold_high = 500,
Jeej 0:7e1fdc4d6e1c 54 .cfg.threshold_low = -500,
Jeej 0:7e1fdc4d6e1c 55 );
Jeej 0:7e1fdc4d6e1c 56
Jeej 0:7e1fdc4d6e1c 57 GENERIC_FILE_INIT(gyr_cfg,
Jeej 0:7e1fdc4d6e1c 58 .cfg.report_type = REPORT_ON_DIFFERENCE,
Jeej 0:7e1fdc4d6e1c 59 .cfg.period = 1000,
Jeej 0:7e1fdc4d6e1c 60 .cfg.max_period = 300,
Jeej 0:7e1fdc4d6e1c 61 .cfg.max_diff = 1000,
Jeej 0:7e1fdc4d6e1c 62 .cfg.threshold_high = 10000,
Jeej 0:7e1fdc4d6e1c 63 .cfg.threshold_low = -10000,
Jeej 0:7e1fdc4d6e1c 64 );
Jeej 0:7e1fdc4d6e1c 65
Jeej 0:7e1fdc4d6e1c 66 GENERIC_FILE_INIT(pre_cfg,
Jeej 0:7e1fdc4d6e1c 67 .cfg.report_type = REPORT_ON_DIFFERENCE,
Jeej 0:7e1fdc4d6e1c 68 .cfg.period = 1000,
Jeej 0:7e1fdc4d6e1c 69 .cfg.max_period = 60,
Jeej 0:7e1fdc4d6e1c 70 .cfg.max_diff = 100,
Jeej 0:7e1fdc4d6e1c 71 .cfg.threshold_high = 120000,
Jeej 0:7e1fdc4d6e1c 72 .cfg.threshold_low = 90000,
Jeej 0:7e1fdc4d6e1c 73 );
Jeej 0:7e1fdc4d6e1c 74
Jeej 0:7e1fdc4d6e1c 75 GENERIC_FILE_INIT(hum_cfg,
Jeej 0:7e1fdc4d6e1c 76 .cfg.report_type = REPORT_ON_DIFFERENCE,
Jeej 0:7e1fdc4d6e1c 77 .cfg.period = 1000,
Jeej 0:7e1fdc4d6e1c 78 .cfg.max_period = 60,
Jeej 0:7e1fdc4d6e1c 79 .cfg.max_diff = 100,
Jeej 0:7e1fdc4d6e1c 80 .cfg.threshold_high = 7000,
Jeej 0:7e1fdc4d6e1c 81 .cfg.threshold_low = 3000,
Jeej 0:7e1fdc4d6e1c 82 );
Jeej 0:7e1fdc4d6e1c 83
Jeej 0:7e1fdc4d6e1c 84 GENERIC_FILE_INIT(tem1_cfg,
Jeej 0:7e1fdc4d6e1c 85 .cfg.report_type = REPORT_ON_DIFFERENCE,
Jeej 0:7e1fdc4d6e1c 86 .cfg.period = 1000,
Jeej 0:7e1fdc4d6e1c 87 .cfg.max_period = 60,
Jeej 0:7e1fdc4d6e1c 88 .cfg.max_diff = 100,
Jeej 0:7e1fdc4d6e1c 89 .cfg.threshold_high = 3500,
Jeej 0:7e1fdc4d6e1c 90 .cfg.threshold_low = 2000,
Jeej 0:7e1fdc4d6e1c 91 );
Jeej 0:7e1fdc4d6e1c 92
Jeej 0:7e1fdc4d6e1c 93 GENERIC_FILE_INIT(tem2_cfg,
Jeej 0:7e1fdc4d6e1c 94 .cfg.report_type = REPORT_ON_DIFFERENCE,
Jeej 0:7e1fdc4d6e1c 95 .cfg.period = 1000,
Jeej 0:7e1fdc4d6e1c 96 .cfg.max_period = 60,
Jeej 0:7e1fdc4d6e1c 97 .cfg.max_diff = 100,
Jeej 0:7e1fdc4d6e1c 98 .cfg.threshold_high = 9000,
Jeej 0:7e1fdc4d6e1c 99 .cfg.threshold_low = 7000,
Jeej 0:7e1fdc4d6e1c 100 );
Jeej 0:7e1fdc4d6e1c 101
yordan 8:01f0225408cf 102 GENERIC_FILE_INIT(light_cfg,
yordan 8:01f0225408cf 103 .cfg.report_type = REPORT_ON_DIFFERENCE,
yordan 8:01f0225408cf 104 .cfg.period = 1000, // ms
yordan 8:01f0225408cf 105 .cfg.max_period = 60, // sec
yordan 8:01f0225408cf 106 .cfg.max_diff = 10, // percent
yordan 8:01f0225408cf 107 .cfg.threshold_high = 0, // disabled
yordan 8:01f0225408cf 108 .cfg.threshold_low = 100, // disabled
yordan 8:01f0225408cf 109 );
yordan 8:01f0225408cf 110
yordan 8:01f0225408cf 111 #define FILE_QTY 9
Jeej 0:7e1fdc4d6e1c 112
Jeej 0:7e1fdc4d6e1c 113 static const void* file_map[FILE_QTY][2] = {
Jeej 0:7e1fdc4d6e1c 114 GENERIC_FILE_MAP(MAG_CFG_FILE_ID, mag_cfg),
Jeej 0:7e1fdc4d6e1c 115 GENERIC_FILE_MAP(ACC_CFG_FILE_ID, acc_cfg),
Jeej 0:7e1fdc4d6e1c 116 GENERIC_FILE_MAP(GYR_CFG_FILE_ID, gyr_cfg),
Jeej 0:7e1fdc4d6e1c 117 GENERIC_FILE_MAP(PRE_CFG_FILE_ID, pre_cfg),
Jeej 0:7e1fdc4d6e1c 118 GENERIC_FILE_MAP(HUM_CFG_FILE_ID, hum_cfg),
Jeej 0:7e1fdc4d6e1c 119 GENERIC_FILE_MAP(TEM1_CFG_FILE_ID, tem1_cfg),
Jeej 0:7e1fdc4d6e1c 120 GENERIC_FILE_MAP(TEM2_CFG_FILE_ID, tem2_cfg),
yordan 8:01f0225408cf 121 GENERIC_FILE_MAP(LIGHT_CFG_FILE_ID, light_cfg),
Jeej 0:7e1fdc4d6e1c 122 GENERIC_FILE_MAP(SIMUL_FILE_ID, simul),
Jeej 0:7e1fdc4d6e1c 123 };
Jeej 0:7e1fdc4d6e1c 124
Jeej 0:7e1fdc4d6e1c 125 void* file_get( uint8_t file_id )
Jeej 0:7e1fdc4d6e1c 126 {
Jeej 0:7e1fdc4d6e1c 127 for (uint8_t i=0 ; i<FILE_QTY ; i++)
Jeej 0:7e1fdc4d6e1c 128 {
Jeej 0:7e1fdc4d6e1c 129 if ((uint8_t)file_map[i][0] == file_id)
Jeej 0:7e1fdc4d6e1c 130 {
Jeej 0:7e1fdc4d6e1c 131 return (void*)file_map[i][1];
Jeej 0:7e1fdc4d6e1c 132 }
Jeej 0:7e1fdc4d6e1c 133 }
Jeej 0:7e1fdc4d6e1c 134
Jeej 0:7e1fdc4d6e1c 135 ASSERT(false, "File %d does not exist\r\n");
Jeej 0:7e1fdc4d6e1c 136
Jeej 0:7e1fdc4d6e1c 137 return NULL;
Jeej 0:7e1fdc4d6e1c 138 }
Jeej 0:7e1fdc4d6e1c 139
Jeej 0:7e1fdc4d6e1c 140 uint32_t fs_write_file(const uint8_t file_id,
Jeej 0:7e1fdc4d6e1c 141 const uint16_t offset,
Jeej 0:7e1fdc4d6e1c 142 const uint16_t size,
Jeej 0:7e1fdc4d6e1c 143 const uint8_t* const content)
Jeej 0:7e1fdc4d6e1c 144 {
Jeej 0:7e1fdc4d6e1c 145 uint32_t file = 0;
Jeej 0:7e1fdc4d6e1c 146
Jeej 0:7e1fdc4d6e1c 147 DPRINT("WF %d\r\n", file_id);
Jeej 0:7e1fdc4d6e1c 148
Jeej 0:7e1fdc4d6e1c 149 // Retrieve pointer to file
Jeej 0:7e1fdc4d6e1c 150 file = (uint32_t)file_get(file_id);
Jeej 0:7e1fdc4d6e1c 151
Jeej 0:7e1fdc4d6e1c 152 if (!file)
Jeej 0:7e1fdc4d6e1c 153 {
Jeej 0:7e1fdc4d6e1c 154 return 0;
Jeej 0:7e1fdc4d6e1c 155 }
Jeej 0:7e1fdc4d6e1c 156
Jeej 0:7e1fdc4d6e1c 157 // Write the new data
Jeej 0:7e1fdc4d6e1c 158 memcpy((void*)(file+offset), (void*)content, size);
Jeej 0:7e1fdc4d6e1c 159
Jeej 0:7e1fdc4d6e1c 160 return size;
Jeej 0:7e1fdc4d6e1c 161 }
Jeej 0:7e1fdc4d6e1c 162
Jeej 0:7e1fdc4d6e1c 163 uint32_t fs_read_file( const uint8_t file_id,
Jeej 0:7e1fdc4d6e1c 164 const uint16_t offset,
Jeej 0:7e1fdc4d6e1c 165 const uint16_t size,
Jeej 0:7e1fdc4d6e1c 166 uint8_t* buf)
Jeej 0:7e1fdc4d6e1c 167 {
Jeej 0:7e1fdc4d6e1c 168 uint32_t file = 0;
Jeej 0:7e1fdc4d6e1c 169
Jeej 0:7e1fdc4d6e1c 170 DPRINT("RF %d\r\n", file_id);
Jeej 0:7e1fdc4d6e1c 171
Jeej 0:7e1fdc4d6e1c 172 // Retrieve pointer to file
Jeej 0:7e1fdc4d6e1c 173 file = (uint32_t)file_get(file_id);
Jeej 0:7e1fdc4d6e1c 174
Jeej 0:7e1fdc4d6e1c 175 if (!file)
Jeej 0:7e1fdc4d6e1c 176 {
Jeej 0:7e1fdc4d6e1c 177 return 0;
Jeej 0:7e1fdc4d6e1c 178 }
Jeej 0:7e1fdc4d6e1c 179
Jeej 0:7e1fdc4d6e1c 180 // Read data
Jeej 0:7e1fdc4d6e1c 181 memcpy((void*)buf, (void*)(file+offset), size);
Jeej 0:7e1fdc4d6e1c 182
Jeej 0:7e1fdc4d6e1c 183 return size;
Jeej 0:7e1fdc4d6e1c 184 }