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:
shawe
Date:
Fri Feb 17 12:53:06 2017 +0000
Revision:
10:3d3dfc12f674
Parent:
8:01f0225408cf
first commit;

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