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.
Dependencies: X_NUCLEO_IKS01A1 MLX90614 d7a_1x wizzi-utils
Fork of D7A_1x_demo_sensors_OS5 by
files.cpp@0:7e1fdc4d6e1c, 2016-12-20 (annotated)
- Committer:
- Jeej
- Date:
- Tue Dec 20 14:07:12 2016 +0000
- Revision:
- 0:7e1fdc4d6e1c
- Child:
- 8:01f0225408cf
Sensor demo updated for mbed OS 5.
Who changed what in which revision?
| User | Revision | Line number | New 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 | |
| Jeej | 0:7e1fdc4d6e1c | 16 | #if _SENSORS_SIMU_ |
| Jeej | 0:7e1fdc4d6e1c | 17 | .rev.fw_version.id = 1, |
| Jeej | 0:7e1fdc4d6e1c | 18 | #else |
| Jeej | 0:7e1fdc4d6e1c | 19 | .rev.fw_version.id = 0, |
| Jeej | 0:7e1fdc4d6e1c | 20 | #endif |
| Jeej | 0:7e1fdc4d6e1c | 21 | .rev.fw_version.major = 1, |
| Jeej | 0:7e1fdc4d6e1c | 22 | .rev.fw_version.minor = 0, |
| Jeej | 0:7e1fdc4d6e1c | 23 | .rev.fw_version.patch = 0, |
| Jeej | 0:7e1fdc4d6e1c | 24 | .rev.fw_version.hash = 0x00000000, |
| Jeej | 0:7e1fdc4d6e1c | 25 | /// "file-system" signature |
| Jeej | 0:7e1fdc4d6e1c | 26 | .rev.fs_crc = 0x00000000, |
| Jeej | 0:7e1fdc4d6e1c | 27 | ); |
| Jeej | 0:7e1fdc4d6e1c | 28 | |
| Jeej | 0:7e1fdc4d6e1c | 29 | |
| Jeej | 0:7e1fdc4d6e1c | 30 | GENERIC_FILE_INIT(simul, |
| Jeej | 0:7e1fdc4d6e1c | 31 | .divider = 500, // Boot value |
| Jeej | 0:7e1fdc4d6e1c | 32 | ); |
| Jeej | 0:7e1fdc4d6e1c | 33 | |
| Jeej | 0:7e1fdc4d6e1c | 34 | |
| Jeej | 0:7e1fdc4d6e1c | 35 | GENERIC_FILE_INIT(mag_cfg, |
| Jeej | 0:7e1fdc4d6e1c | 36 | .cfg.report_type = REPORT_ON_DIFFERENCE, |
| Jeej | 0:7e1fdc4d6e1c | 37 | .cfg.period = 1000, |
| Jeej | 0:7e1fdc4d6e1c | 38 | .cfg.max_period = 300, |
| Jeej | 0:7e1fdc4d6e1c | 39 | .cfg.max_diff = 500, |
| Jeej | 0:7e1fdc4d6e1c | 40 | .cfg.threshold_high = 1000, |
| Jeej | 0:7e1fdc4d6e1c | 41 | .cfg.threshold_low = -1000, |
| Jeej | 0:7e1fdc4d6e1c | 42 | ); |
| Jeej | 0:7e1fdc4d6e1c | 43 | |
| Jeej | 0:7e1fdc4d6e1c | 44 | GENERIC_FILE_INIT(acc_cfg, |
| Jeej | 0:7e1fdc4d6e1c | 45 | .cfg.report_type = REPORT_ON_DIFFERENCE, |
| Jeej | 0:7e1fdc4d6e1c | 46 | .cfg.period = 1000, |
| Jeej | 0:7e1fdc4d6e1c | 47 | .cfg.max_period = 300, |
| Jeej | 0:7e1fdc4d6e1c | 48 | .cfg.max_diff = 100, |
| Jeej | 0:7e1fdc4d6e1c | 49 | .cfg.threshold_high = 500, |
| Jeej | 0:7e1fdc4d6e1c | 50 | .cfg.threshold_low = -500, |
| Jeej | 0:7e1fdc4d6e1c | 51 | ); |
| Jeej | 0:7e1fdc4d6e1c | 52 | |
| Jeej | 0:7e1fdc4d6e1c | 53 | GENERIC_FILE_INIT(gyr_cfg, |
| Jeej | 0:7e1fdc4d6e1c | 54 | .cfg.report_type = REPORT_ON_DIFFERENCE, |
| Jeej | 0:7e1fdc4d6e1c | 55 | .cfg.period = 1000, |
| Jeej | 0:7e1fdc4d6e1c | 56 | .cfg.max_period = 300, |
| Jeej | 0:7e1fdc4d6e1c | 57 | .cfg.max_diff = 1000, |
| Jeej | 0:7e1fdc4d6e1c | 58 | .cfg.threshold_high = 10000, |
| Jeej | 0:7e1fdc4d6e1c | 59 | .cfg.threshold_low = -10000, |
| Jeej | 0:7e1fdc4d6e1c | 60 | ); |
| Jeej | 0:7e1fdc4d6e1c | 61 | |
| Jeej | 0:7e1fdc4d6e1c | 62 | GENERIC_FILE_INIT(pre_cfg, |
| Jeej | 0:7e1fdc4d6e1c | 63 | .cfg.report_type = REPORT_ON_DIFFERENCE, |
| Jeej | 0:7e1fdc4d6e1c | 64 | .cfg.period = 1000, |
| Jeej | 0:7e1fdc4d6e1c | 65 | .cfg.max_period = 60, |
| Jeej | 0:7e1fdc4d6e1c | 66 | .cfg.max_diff = 100, |
| Jeej | 0:7e1fdc4d6e1c | 67 | .cfg.threshold_high = 120000, |
| Jeej | 0:7e1fdc4d6e1c | 68 | .cfg.threshold_low = 90000, |
| Jeej | 0:7e1fdc4d6e1c | 69 | ); |
| Jeej | 0:7e1fdc4d6e1c | 70 | |
| Jeej | 0:7e1fdc4d6e1c | 71 | GENERIC_FILE_INIT(hum_cfg, |
| Jeej | 0:7e1fdc4d6e1c | 72 | .cfg.report_type = REPORT_ON_DIFFERENCE, |
| Jeej | 0:7e1fdc4d6e1c | 73 | .cfg.period = 1000, |
| Jeej | 0:7e1fdc4d6e1c | 74 | .cfg.max_period = 60, |
| Jeej | 0:7e1fdc4d6e1c | 75 | .cfg.max_diff = 100, |
| Jeej | 0:7e1fdc4d6e1c | 76 | .cfg.threshold_high = 7000, |
| Jeej | 0:7e1fdc4d6e1c | 77 | .cfg.threshold_low = 3000, |
| Jeej | 0:7e1fdc4d6e1c | 78 | ); |
| Jeej | 0:7e1fdc4d6e1c | 79 | |
| Jeej | 0:7e1fdc4d6e1c | 80 | GENERIC_FILE_INIT(tem1_cfg, |
| Jeej | 0:7e1fdc4d6e1c | 81 | .cfg.report_type = REPORT_ON_DIFFERENCE, |
| Jeej | 0:7e1fdc4d6e1c | 82 | .cfg.period = 1000, |
| Jeej | 0:7e1fdc4d6e1c | 83 | .cfg.max_period = 60, |
| Jeej | 0:7e1fdc4d6e1c | 84 | .cfg.max_diff = 100, |
| Jeej | 0:7e1fdc4d6e1c | 85 | .cfg.threshold_high = 3500, |
| Jeej | 0:7e1fdc4d6e1c | 86 | .cfg.threshold_low = 2000, |
| Jeej | 0:7e1fdc4d6e1c | 87 | ); |
| Jeej | 0:7e1fdc4d6e1c | 88 | |
| Jeej | 0:7e1fdc4d6e1c | 89 | GENERIC_FILE_INIT(tem2_cfg, |
| Jeej | 0:7e1fdc4d6e1c | 90 | .cfg.report_type = REPORT_ON_DIFFERENCE, |
| Jeej | 0:7e1fdc4d6e1c | 91 | .cfg.period = 1000, |
| Jeej | 0:7e1fdc4d6e1c | 92 | .cfg.max_period = 60, |
| Jeej | 0:7e1fdc4d6e1c | 93 | .cfg.max_diff = 100, |
| Jeej | 0:7e1fdc4d6e1c | 94 | .cfg.threshold_high = 9000, |
| Jeej | 0:7e1fdc4d6e1c | 95 | .cfg.threshold_low = 7000, |
| Jeej | 0:7e1fdc4d6e1c | 96 | ); |
| Jeej | 0:7e1fdc4d6e1c | 97 | |
| Jeej | 0:7e1fdc4d6e1c | 98 | #define FILE_QTY 8 |
| Jeej | 0:7e1fdc4d6e1c | 99 | |
| Jeej | 0:7e1fdc4d6e1c | 100 | static const void* file_map[FILE_QTY][2] = { |
| Jeej | 0:7e1fdc4d6e1c | 101 | GENERIC_FILE_MAP(MAG_CFG_FILE_ID, mag_cfg), |
| Jeej | 0:7e1fdc4d6e1c | 102 | GENERIC_FILE_MAP(ACC_CFG_FILE_ID, acc_cfg), |
| Jeej | 0:7e1fdc4d6e1c | 103 | GENERIC_FILE_MAP(GYR_CFG_FILE_ID, gyr_cfg), |
| Jeej | 0:7e1fdc4d6e1c | 104 | GENERIC_FILE_MAP(PRE_CFG_FILE_ID, pre_cfg), |
| Jeej | 0:7e1fdc4d6e1c | 105 | GENERIC_FILE_MAP(HUM_CFG_FILE_ID, hum_cfg), |
| Jeej | 0:7e1fdc4d6e1c | 106 | GENERIC_FILE_MAP(TEM1_CFG_FILE_ID, tem1_cfg), |
| Jeej | 0:7e1fdc4d6e1c | 107 | GENERIC_FILE_MAP(TEM2_CFG_FILE_ID, tem2_cfg), |
| Jeej | 0:7e1fdc4d6e1c | 108 | GENERIC_FILE_MAP(SIMUL_FILE_ID, simul), |
| Jeej | 0:7e1fdc4d6e1c | 109 | }; |
| Jeej | 0:7e1fdc4d6e1c | 110 | |
| Jeej | 0:7e1fdc4d6e1c | 111 | void* file_get( uint8_t file_id ) |
| Jeej | 0:7e1fdc4d6e1c | 112 | { |
| Jeej | 0:7e1fdc4d6e1c | 113 | for (uint8_t i=0 ; i<FILE_QTY ; i++) |
| Jeej | 0:7e1fdc4d6e1c | 114 | { |
| Jeej | 0:7e1fdc4d6e1c | 115 | if ((uint8_t)file_map[i][0] == file_id) |
| Jeej | 0:7e1fdc4d6e1c | 116 | { |
| Jeej | 0:7e1fdc4d6e1c | 117 | return (void*)file_map[i][1]; |
| Jeej | 0:7e1fdc4d6e1c | 118 | } |
| Jeej | 0:7e1fdc4d6e1c | 119 | } |
| Jeej | 0:7e1fdc4d6e1c | 120 | |
| Jeej | 0:7e1fdc4d6e1c | 121 | ASSERT(false, "File %d does not exist\r\n"); |
| Jeej | 0:7e1fdc4d6e1c | 122 | |
| Jeej | 0:7e1fdc4d6e1c | 123 | return NULL; |
| Jeej | 0:7e1fdc4d6e1c | 124 | } |
| Jeej | 0:7e1fdc4d6e1c | 125 | |
| Jeej | 0:7e1fdc4d6e1c | 126 | uint32_t fs_write_file(const uint8_t file_id, |
| Jeej | 0:7e1fdc4d6e1c | 127 | const uint16_t offset, |
| Jeej | 0:7e1fdc4d6e1c | 128 | const uint16_t size, |
| Jeej | 0:7e1fdc4d6e1c | 129 | const uint8_t* const content) |
| Jeej | 0:7e1fdc4d6e1c | 130 | { |
| Jeej | 0:7e1fdc4d6e1c | 131 | uint32_t file = 0; |
| Jeej | 0:7e1fdc4d6e1c | 132 | |
| Jeej | 0:7e1fdc4d6e1c | 133 | DPRINT("WF %d\r\n", file_id); |
| Jeej | 0:7e1fdc4d6e1c | 134 | |
| Jeej | 0:7e1fdc4d6e1c | 135 | // Retrieve pointer to file |
| Jeej | 0:7e1fdc4d6e1c | 136 | file = (uint32_t)file_get(file_id); |
| Jeej | 0:7e1fdc4d6e1c | 137 | |
| Jeej | 0:7e1fdc4d6e1c | 138 | if (!file) |
| Jeej | 0:7e1fdc4d6e1c | 139 | { |
| Jeej | 0:7e1fdc4d6e1c | 140 | return 0; |
| Jeej | 0:7e1fdc4d6e1c | 141 | } |
| Jeej | 0:7e1fdc4d6e1c | 142 | |
| Jeej | 0:7e1fdc4d6e1c | 143 | // Write the new data |
| Jeej | 0:7e1fdc4d6e1c | 144 | memcpy((void*)(file+offset), (void*)content, size); |
| Jeej | 0:7e1fdc4d6e1c | 145 | |
| Jeej | 0:7e1fdc4d6e1c | 146 | return size; |
| Jeej | 0:7e1fdc4d6e1c | 147 | } |
| Jeej | 0:7e1fdc4d6e1c | 148 | |
| Jeej | 0:7e1fdc4d6e1c | 149 | uint32_t fs_read_file( const uint8_t file_id, |
| Jeej | 0:7e1fdc4d6e1c | 150 | const uint16_t offset, |
| Jeej | 0:7e1fdc4d6e1c | 151 | const uint16_t size, |
| Jeej | 0:7e1fdc4d6e1c | 152 | uint8_t* buf) |
| Jeej | 0:7e1fdc4d6e1c | 153 | { |
| Jeej | 0:7e1fdc4d6e1c | 154 | uint32_t file = 0; |
| Jeej | 0:7e1fdc4d6e1c | 155 | |
| Jeej | 0:7e1fdc4d6e1c | 156 | DPRINT("RF %d\r\n", file_id); |
| Jeej | 0:7e1fdc4d6e1c | 157 | |
| Jeej | 0:7e1fdc4d6e1c | 158 | // Retrieve pointer to file |
| Jeej | 0:7e1fdc4d6e1c | 159 | file = (uint32_t)file_get(file_id); |
| Jeej | 0:7e1fdc4d6e1c | 160 | |
| Jeej | 0:7e1fdc4d6e1c | 161 | if (!file) |
| Jeej | 0:7e1fdc4d6e1c | 162 | { |
| Jeej | 0:7e1fdc4d6e1c | 163 | return 0; |
| Jeej | 0:7e1fdc4d6e1c | 164 | } |
| Jeej | 0:7e1fdc4d6e1c | 165 | |
| Jeej | 0:7e1fdc4d6e1c | 166 | // Read data |
| Jeej | 0:7e1fdc4d6e1c | 167 | memcpy((void*)buf, (void*)(file+offset), size); |
| Jeej | 0:7e1fdc4d6e1c | 168 | |
| Jeej | 0:7e1fdc4d6e1c | 169 | return size; |
| Jeej | 0:7e1fdc4d6e1c | 170 | } |
