read and push
Dependencies: X_NUCLEO_IKS01A1 MLX90614 d7a_1x wizzi-utils
Fork of D7A_1x_demo_sensors_OS5 by
files.cpp@16:ad7842fcd376, 2017-02-27 (annotated)
- Committer:
- shawe
- Date:
- Mon Feb 27 08:46:36 2017 +0000
- Revision:
- 16:ad7842fcd376
- Parent:
- 10:3d3dfc12f674
Add config for small nucleo;
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 | |
| 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 | |
| Jeej | 0:7e1fdc4d6e1c | 40 | |
| Jeej | 0:7e1fdc4d6e1c | 41 | GENERIC_FILE_INIT(tem1_cfg, |
| shawe | 10:3d3dfc12f674 | 42 | .cfg.report_type = REPORT_ALWAYS, |
| shawe | 10:3d3dfc12f674 | 43 | .cfg.period = 5000, |
| shawe | 10:3d3dfc12f674 | 44 | .cfg.max_period = 5, |
| Jeej | 0:7e1fdc4d6e1c | 45 | .cfg.max_diff = 100, |
| Jeej | 0:7e1fdc4d6e1c | 46 | .cfg.threshold_high = 3500, |
| Jeej | 0:7e1fdc4d6e1c | 47 | .cfg.threshold_low = 2000, |
| Jeej | 0:7e1fdc4d6e1c | 48 | ); |
| Jeej | 0:7e1fdc4d6e1c | 49 | |
| shawe | 10:3d3dfc12f674 | 50 | GENERIC_FILE_INIT(volt_cfg, |
| shawe | 10:3d3dfc12f674 | 51 | .cfg.report_type = REPORT_ALWAYS, |
| shawe | 10:3d3dfc12f674 | 52 | .cfg.period = 20000, // ms |
| yordan | 8:01f0225408cf | 53 | .cfg.max_period = 60, // sec |
| yordan | 8:01f0225408cf | 54 | .cfg.max_diff = 10, // percent |
| yordan | 8:01f0225408cf | 55 | .cfg.threshold_high = 0, // disabled |
| yordan | 8:01f0225408cf | 56 | .cfg.threshold_low = 100, // disabled |
| yordan | 8:01f0225408cf | 57 | ); |
| yordan | 8:01f0225408cf | 58 | |
| shawe | 10:3d3dfc12f674 | 59 | #define FILE_QTY 3 |
| Jeej | 0:7e1fdc4d6e1c | 60 | |
| Jeej | 0:7e1fdc4d6e1c | 61 | static const void* file_map[FILE_QTY][2] = { |
| Jeej | 0:7e1fdc4d6e1c | 62 | GENERIC_FILE_MAP(TEM1_CFG_FILE_ID, tem1_cfg), |
| Jeej | 0:7e1fdc4d6e1c | 63 | GENERIC_FILE_MAP(SIMUL_FILE_ID, simul), |
| shawe | 10:3d3dfc12f674 | 64 | GENERIC_FILE_MAP(VOLT_CFG_FILE_ID, volt_cfg), |
| Jeej | 0:7e1fdc4d6e1c | 65 | }; |
| Jeej | 0:7e1fdc4d6e1c | 66 | |
| Jeej | 0:7e1fdc4d6e1c | 67 | void* file_get( uint8_t file_id ) |
| Jeej | 0:7e1fdc4d6e1c | 68 | { |
| Jeej | 0:7e1fdc4d6e1c | 69 | for (uint8_t i=0 ; i<FILE_QTY ; i++) |
| Jeej | 0:7e1fdc4d6e1c | 70 | { |
| Jeej | 0:7e1fdc4d6e1c | 71 | if ((uint8_t)file_map[i][0] == file_id) |
| Jeej | 0:7e1fdc4d6e1c | 72 | { |
| Jeej | 0:7e1fdc4d6e1c | 73 | return (void*)file_map[i][1]; |
| Jeej | 0:7e1fdc4d6e1c | 74 | } |
| Jeej | 0:7e1fdc4d6e1c | 75 | } |
| Jeej | 0:7e1fdc4d6e1c | 76 | |
| Jeej | 0:7e1fdc4d6e1c | 77 | ASSERT(false, "File %d does not exist\r\n"); |
| Jeej | 0:7e1fdc4d6e1c | 78 | |
| Jeej | 0:7e1fdc4d6e1c | 79 | return NULL; |
| Jeej | 0:7e1fdc4d6e1c | 80 | } |
| Jeej | 0:7e1fdc4d6e1c | 81 | |
| Jeej | 0:7e1fdc4d6e1c | 82 | uint32_t fs_write_file(const uint8_t file_id, |
| Jeej | 0:7e1fdc4d6e1c | 83 | const uint16_t offset, |
| Jeej | 0:7e1fdc4d6e1c | 84 | const uint16_t size, |
| Jeej | 0:7e1fdc4d6e1c | 85 | const uint8_t* const content) |
| Jeej | 0:7e1fdc4d6e1c | 86 | { |
| Jeej | 0:7e1fdc4d6e1c | 87 | uint32_t file = 0; |
| Jeej | 0:7e1fdc4d6e1c | 88 | |
| Jeej | 0:7e1fdc4d6e1c | 89 | DPRINT("WF %d\r\n", file_id); |
| Jeej | 0:7e1fdc4d6e1c | 90 | |
| Jeej | 0:7e1fdc4d6e1c | 91 | // Retrieve pointer to file |
| Jeej | 0:7e1fdc4d6e1c | 92 | file = (uint32_t)file_get(file_id); |
| Jeej | 0:7e1fdc4d6e1c | 93 | |
| Jeej | 0:7e1fdc4d6e1c | 94 | if (!file) |
| Jeej | 0:7e1fdc4d6e1c | 95 | { |
| Jeej | 0:7e1fdc4d6e1c | 96 | return 0; |
| Jeej | 0:7e1fdc4d6e1c | 97 | } |
| Jeej | 0:7e1fdc4d6e1c | 98 | |
| Jeej | 0:7e1fdc4d6e1c | 99 | // Write the new data |
| Jeej | 0:7e1fdc4d6e1c | 100 | memcpy((void*)(file+offset), (void*)content, size); |
| Jeej | 0:7e1fdc4d6e1c | 101 | |
| Jeej | 0:7e1fdc4d6e1c | 102 | return size; |
| Jeej | 0:7e1fdc4d6e1c | 103 | } |
| Jeej | 0:7e1fdc4d6e1c | 104 | |
| Jeej | 0:7e1fdc4d6e1c | 105 | uint32_t fs_read_file( const uint8_t file_id, |
| Jeej | 0:7e1fdc4d6e1c | 106 | const uint16_t offset, |
| Jeej | 0:7e1fdc4d6e1c | 107 | const uint16_t size, |
| Jeej | 0:7e1fdc4d6e1c | 108 | uint8_t* buf) |
| Jeej | 0:7e1fdc4d6e1c | 109 | { |
| Jeej | 0:7e1fdc4d6e1c | 110 | uint32_t file = 0; |
| Jeej | 0:7e1fdc4d6e1c | 111 | |
| Jeej | 0:7e1fdc4d6e1c | 112 | DPRINT("RF %d\r\n", file_id); |
| Jeej | 0:7e1fdc4d6e1c | 113 | |
| Jeej | 0:7e1fdc4d6e1c | 114 | // Retrieve pointer to file |
| Jeej | 0:7e1fdc4d6e1c | 115 | file = (uint32_t)file_get(file_id); |
| Jeej | 0:7e1fdc4d6e1c | 116 | |
| Jeej | 0:7e1fdc4d6e1c | 117 | if (!file) |
| Jeej | 0:7e1fdc4d6e1c | 118 | { |
| Jeej | 0:7e1fdc4d6e1c | 119 | return 0; |
| Jeej | 0:7e1fdc4d6e1c | 120 | } |
| Jeej | 0:7e1fdc4d6e1c | 121 | |
| Jeej | 0:7e1fdc4d6e1c | 122 | // Read data |
| Jeej | 0:7e1fdc4d6e1c | 123 | memcpy((void*)buf, (void*)(file+offset), size); |
| Jeej | 0:7e1fdc4d6e1c | 124 | |
| Jeej | 0:7e1fdc4d6e1c | 125 | return size; |
| Jeej | 0:7e1fdc4d6e1c | 126 | } |
