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:
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?

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 |
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 }