pwm period is now 200us instead of the default 20ms veml6040 config is now AF_BIT | TRIG_BIT
Dependencies: mbed MMA8451Q USBDevice WakeUp vt100
Fork of afero_node_suntory_2017_06_15 by
preferences/Preferences.hpp@1:b2a9a6f2c30e, 2017-01-19 (annotated)
- Committer:
- wataloh
- Date:
- Thu Jan 19 09:17:16 2017 +0000
- Revision:
- 1:b2a9a6f2c30e
- Child:
- 2:dfe671e31221
simplified
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
wataloh | 1:b2a9a6f2c30e | 1 | #ifndef _PREFERENCES_HPP_ |
wataloh | 1:b2a9a6f2c30e | 2 | #define _PREFERENCES_HPP_ |
wataloh | 1:b2a9a6f2c30e | 3 | |
wataloh | 1:b2a9a6f2c30e | 4 | #include "mbed.h" |
wataloh | 1:b2a9a6f2c30e | 5 | |
wataloh | 1:b2a9a6f2c30e | 6 | namespace MaruSolSensorManager |
wataloh | 1:b2a9a6f2c30e | 7 | { |
wataloh | 1:b2a9a6f2c30e | 8 | |
wataloh | 1:b2a9a6f2c30e | 9 | typedef union |
wataloh | 1:b2a9a6f2c30e | 10 | { |
wataloh | 1:b2a9a6f2c30e | 11 | bool b; |
wataloh | 1:b2a9a6f2c30e | 12 | int16_t i_16; |
wataloh | 1:b2a9a6f2c30e | 13 | uint16_t ui_16; |
wataloh | 1:b2a9a6f2c30e | 14 | struct |
wataloh | 1:b2a9a6f2c30e | 15 | { |
wataloh | 1:b2a9a6f2c30e | 16 | short X, Y, Z; |
wataloh | 1:b2a9a6f2c30e | 17 | }; |
wataloh | 1:b2a9a6f2c30e | 18 | struct |
wataloh | 1:b2a9a6f2c30e | 19 | { |
wataloh | 1:b2a9a6f2c30e | 20 | uint16_t R, G, B; |
wataloh | 1:b2a9a6f2c30e | 21 | }; |
wataloh | 1:b2a9a6f2c30e | 22 | } VAR; |
wataloh | 1:b2a9a6f2c30e | 23 | |
wataloh | 1:b2a9a6f2c30e | 24 | template<typename A> struct SENSORS_BASE |
wataloh | 1:b2a9a6f2c30e | 25 | { |
wataloh | 1:b2a9a6f2c30e | 26 | enum INDEX |
wataloh | 1:b2a9a6f2c30e | 27 | { |
wataloh | 1:b2a9a6f2c30e | 28 | ACCELEROMETER = 0, |
wataloh | 1:b2a9a6f2c30e | 29 | COLOR, |
wataloh | 1:b2a9a6f2c30e | 30 | PRESSURE, |
wataloh | 1:b2a9a6f2c30e | 31 | CURRENT_TRANS, |
wataloh | 1:b2a9a6f2c30e | 32 | TEMPERATURE, |
wataloh | 1:b2a9a6f2c30e | 33 | SIZE, |
wataloh | 1:b2a9a6f2c30e | 34 | }; |
wataloh | 1:b2a9a6f2c30e | 35 | static bool ACTIVE[SIZE]; |
wataloh | 1:b2a9a6f2c30e | 36 | }; |
wataloh | 1:b2a9a6f2c30e | 37 | |
wataloh | 1:b2a9a6f2c30e | 38 | struct SENSORS : public SENSORS_BASE<SENSORS> |
wataloh | 1:b2a9a6f2c30e | 39 | { |
wataloh | 1:b2a9a6f2c30e | 40 | template<typename A> struct COMMONPARAMS; |
wataloh | 1:b2a9a6f2c30e | 41 | struct MAX44008; |
wataloh | 1:b2a9a6f2c30e | 42 | struct MMA8451Q; |
wataloh | 1:b2a9a6f2c30e | 43 | template<typename A> struct SEMITEC_502AT_11_CALIB; |
wataloh | 1:b2a9a6f2c30e | 44 | struct SEMITEC_502AT_11; |
wataloh | 1:b2a9a6f2c30e | 45 | struct SR_3702_150N_14Z; |
wataloh | 1:b2a9a6f2c30e | 46 | template<typename A> struct KEYENCE_PRESSURE_COMMON_PARAMS; |
wataloh | 1:b2a9a6f2c30e | 47 | struct AP_53A_KEYENCE; //AP-53A KEYENCE gas |
wataloh | 1:b2a9a6f2c30e | 48 | struct GP_M010_KEYENCE; //"GP-M010 KEYENCE" liquid |
wataloh | 1:b2a9a6f2c30e | 49 | }; |
wataloh | 1:b2a9a6f2c30e | 50 | |
wataloh | 1:b2a9a6f2c30e | 51 | template<typename A> struct SENSORS::KEYENCE_PRESSURE_COMMON_PARAMS |
wataloh | 1:b2a9a6f2c30e | 52 | { |
wataloh | 1:b2a9a6f2c30e | 53 | static float V_REF; |
wataloh | 1:b2a9a6f2c30e | 54 | static float PRESSURE_INTERVAL; |
wataloh | 1:b2a9a6f2c30e | 55 | static float SHUNT_R; |
wataloh | 1:b2a9a6f2c30e | 56 | static float LOWEST_CUR; |
wataloh | 1:b2a9a6f2c30e | 57 | static float PRESSURE_COEF; |
wataloh | 1:b2a9a6f2c30e | 58 | }; |
wataloh | 1:b2a9a6f2c30e | 59 | |
wataloh | 1:b2a9a6f2c30e | 60 | template<typename A> float SENSORS::KEYENCE_PRESSURE_COMMON_PARAMS<A>::V_REF = 3.3; |
wataloh | 1:b2a9a6f2c30e | 61 | template<typename A> float SENSORS::KEYENCE_PRESSURE_COMMON_PARAMS<A>::PRESSURE_INTERVAL = 1.0; |
wataloh | 1:b2a9a6f2c30e | 62 | template<typename A> float SENSORS::KEYENCE_PRESSURE_COMMON_PARAMS<A>::SHUNT_R = 165; |
wataloh | 1:b2a9a6f2c30e | 63 | template<typename A> float SENSORS::KEYENCE_PRESSURE_COMMON_PARAMS<A>::LOWEST_CUR = 0.004; |
wataloh | 1:b2a9a6f2c30e | 64 | template<typename A> float SENSORS::KEYENCE_PRESSURE_COMMON_PARAMS<A>::PRESSURE_COEF = 62500; |
wataloh | 1:b2a9a6f2c30e | 65 | |
wataloh | 1:b2a9a6f2c30e | 66 | template<> bool SENSORS_BASE<SENSORS>::ACTIVE[SENSORS::SIZE] = { false, false, true, false, false }; |
wataloh | 1:b2a9a6f2c30e | 67 | |
wataloh | 1:b2a9a6f2c30e | 68 | template<typename A> struct SENSORS::COMMONPARAMS |
wataloh | 1:b2a9a6f2c30e | 69 | { |
wataloh | 1:b2a9a6f2c30e | 70 | static char* TYPE; |
wataloh | 1:b2a9a6f2c30e | 71 | static char* PN; |
wataloh | 1:b2a9a6f2c30e | 72 | static char* UNIT; |
wataloh | 1:b2a9a6f2c30e | 73 | static char* JSON_FMT; |
wataloh | 1:b2a9a6f2c30e | 74 | }; |
wataloh | 1:b2a9a6f2c30e | 75 | |
wataloh | 1:b2a9a6f2c30e | 76 | struct SENSORS::MAX44008 : public SENSORS::COMMONPARAMS<SENSORS::MAX44008> |
wataloh | 1:b2a9a6f2c30e | 77 | { |
wataloh | 1:b2a9a6f2c30e | 78 | enum |
wataloh | 1:b2a9a6f2c30e | 79 | { |
wataloh | 1:b2a9a6f2c30e | 80 | ADDRESS = 0x41, |
wataloh | 1:b2a9a6f2c30e | 81 | AMB_CONFIG = 0x00, // most sensitive gain |
wataloh | 1:b2a9a6f2c30e | 82 | RAW_MODE = 0x20 // MODE_CLEAR_RGB_IR |
wataloh | 1:b2a9a6f2c30e | 83 | }; |
wataloh | 1:b2a9a6f2c30e | 84 | struct TRIM |
wataloh | 1:b2a9a6f2c30e | 85 | { |
wataloh | 1:b2a9a6f2c30e | 86 | enum |
wataloh | 1:b2a9a6f2c30e | 87 | { |
wataloh | 1:b2a9a6f2c30e | 88 | R = 0x50, |
wataloh | 1:b2a9a6f2c30e | 89 | G = 0x01, |
wataloh | 1:b2a9a6f2c30e | 90 | B = 0x20 |
wataloh | 1:b2a9a6f2c30e | 91 | }; |
wataloh | 1:b2a9a6f2c30e | 92 | }; |
wataloh | 1:b2a9a6f2c30e | 93 | }; |
wataloh | 1:b2a9a6f2c30e | 94 | |
wataloh | 1:b2a9a6f2c30e | 95 | template<> char* SENSORS::COMMONPARAMS<SENSORS::MAX44008>::TYPE = "COLOR"; |
wataloh | 1:b2a9a6f2c30e | 96 | template<> char* SENSORS::COMMONPARAMS<SENSORS::MAX44008>::PN = "MAX44008"; |
wataloh | 1:b2a9a6f2c30e | 97 | template<> char* SENSORS::COMMONPARAMS<SENSORS::MAX44008>::UNIT = "mW/cm2"; |
wataloh | 1:b2a9a6f2c30e | 98 | template<> char* SENSORS::COMMONPARAMS<SENSORS::MAX44008>::JSON_FMT( |
wataloh | 1:b2a9a6f2c30e | 99 | "{\"DEVICE\":\"%s\",\"PN\":\"%s\",\"DATA\":[{\"TIME\":\"%ld\",\"VAL\":\"%d\",\"UNIT\":\"%s\"}]}" |
wataloh | 1:b2a9a6f2c30e | 100 | ); |
wataloh | 1:b2a9a6f2c30e | 101 | |
wataloh | 1:b2a9a6f2c30e | 102 | struct SENSORS::MMA8451Q : |
wataloh | 1:b2a9a6f2c30e | 103 | public SENSORS::COMMONPARAMS<SENSORS::MMA8451Q> |
wataloh | 1:b2a9a6f2c30e | 104 | { |
wataloh | 1:b2a9a6f2c30e | 105 | enum |
wataloh | 1:b2a9a6f2c30e | 106 | { |
wataloh | 1:b2a9a6f2c30e | 107 | #if defined (TARGET_KL25Z) |
wataloh | 1:b2a9a6f2c30e | 108 | ADDRESS = 0x1D |
wataloh | 1:b2a9a6f2c30e | 109 | #elif defined (TARGET_TEENSY3_1) |
wataloh | 1:b2a9a6f2c30e | 110 | ADDRESS = 0x1C |
wataloh | 1:b2a9a6f2c30e | 111 | #endif |
wataloh | 1:b2a9a6f2c30e | 112 | }; |
wataloh | 1:b2a9a6f2c30e | 113 | }; |
wataloh | 1:b2a9a6f2c30e | 114 | template<> char* SENSORS::COMMONPARAMS<SENSORS::MMA8451Q>::TYPE = "ACCELEROMETER"; |
wataloh | 1:b2a9a6f2c30e | 115 | template<> char* SENSORS::COMMONPARAMS<SENSORS::MMA8451Q>::PN = "MMA8451Q"; |
wataloh | 1:b2a9a6f2c30e | 116 | template<> char* SENSORS::COMMONPARAMS<SENSORS::MMA8451Q>::UNIT = "g"; |
wataloh | 1:b2a9a6f2c30e | 117 | template<> char* SENSORS::COMMONPARAMS<SENSORS::MMA8451Q>::JSON_FMT = |
wataloh | 1:b2a9a6f2c30e | 118 | "{\"DEVICE\":\"%s\",\"PN\":\"%s\",\"DATA\":[{\"TIME\":\"%ld\",\"VAL\":[\"%.1f\",\"%.1f\",\"%.1f\"],\"UNIT\":\"%s\"}]}"; |
wataloh | 1:b2a9a6f2c30e | 119 | |
wataloh | 1:b2a9a6f2c30e | 120 | template<typename A> struct SENSORS::SEMITEC_502AT_11_CALIB |
wataloh | 1:b2a9a6f2c30e | 121 | { |
wataloh | 1:b2a9a6f2c30e | 122 | static float B; |
wataloh | 1:b2a9a6f2c30e | 123 | static float T0; |
wataloh | 1:b2a9a6f2c30e | 124 | static float R0; |
wataloh | 1:b2a9a6f2c30e | 125 | static float R1; |
wataloh | 1:b2a9a6f2c30e | 126 | }; |
wataloh | 1:b2a9a6f2c30e | 127 | |
wataloh | 1:b2a9a6f2c30e | 128 | struct SENSORS::SEMITEC_502AT_11 : |
wataloh | 1:b2a9a6f2c30e | 129 | public SENSORS::COMMONPARAMS<SENSORS::SEMITEC_502AT_11>, |
wataloh | 1:b2a9a6f2c30e | 130 | public SENSORS::SEMITEC_502AT_11_CALIB<SENSORS::SEMITEC_502AT_11>{}; |
wataloh | 1:b2a9a6f2c30e | 131 | template<> float SENSORS::SEMITEC_502AT_11_CALIB<SENSORS::SEMITEC_502AT_11>::B = 3324; |
wataloh | 1:b2a9a6f2c30e | 132 | template<> float SENSORS::SEMITEC_502AT_11_CALIB<SENSORS::SEMITEC_502AT_11>::T0 = 298.15; |
wataloh | 1:b2a9a6f2c30e | 133 | template<> float SENSORS::SEMITEC_502AT_11_CALIB<SENSORS::SEMITEC_502AT_11>::R0 = 5.0; //kOhm |
wataloh | 1:b2a9a6f2c30e | 134 | template<> float SENSORS::SEMITEC_502AT_11_CALIB<SENSORS::SEMITEC_502AT_11>::R1 = 4.95; //kOhm |
wataloh | 1:b2a9a6f2c30e | 135 | |
wataloh | 1:b2a9a6f2c30e | 136 | template<> char* SENSORS::COMMONPARAMS<SENSORS::SEMITEC_502AT_11>::TYPE = "TEMP"; |
wataloh | 1:b2a9a6f2c30e | 137 | template<> char* SENSORS::COMMONPARAMS<SENSORS::SEMITEC_502AT_11>::PN = "SEMITEC 502AT-11"; |
wataloh | 1:b2a9a6f2c30e | 138 | template<> char* SENSORS::COMMONPARAMS<SENSORS::SEMITEC_502AT_11>::UNIT = "degC"; |
wataloh | 1:b2a9a6f2c30e | 139 | template<> char* SENSORS::COMMONPARAMS<SENSORS::SEMITEC_502AT_11>::JSON_FMT( |
wataloh | 1:b2a9a6f2c30e | 140 | "{\"DEVICE\":\"%s\",\"PN\":\"%s\",\"DATA\":[{\"TIME\":\"%ld\",\"VAL\":\"%0.1f\",\"UNIT\":\"%s\"}]}" |
wataloh | 1:b2a9a6f2c30e | 141 | ); |
wataloh | 1:b2a9a6f2c30e | 142 | |
wataloh | 1:b2a9a6f2c30e | 143 | struct SENSORS::SR_3702_150N_14Z : public SENSORS::COMMONPARAMS<SENSORS::SR_3702_150N_14Z>{}; |
wataloh | 1:b2a9a6f2c30e | 144 | template<> char* SENSORS::COMMONPARAMS<SENSORS::SR_3702_150N_14Z>::TYPE = "CURRENT_TRANS";; |
wataloh | 1:b2a9a6f2c30e | 145 | template<> char* SENSORS::COMMONPARAMS<SENSORS::SR_3702_150N_14Z>::PN = "SR-3702-150N/14Z"; |
wataloh | 1:b2a9a6f2c30e | 146 | template<> char* SENSORS::COMMONPARAMS<SENSORS::SR_3702_150N_14Z>::UNIT = "V"; |
wataloh | 1:b2a9a6f2c30e | 147 | template<> char* SENSORS::COMMONPARAMS<SENSORS::SR_3702_150N_14Z>::JSON_FMT( |
wataloh | 1:b2a9a6f2c30e | 148 | "{\"DEVICE\":\"%s\",\"PN\":\"%s\",\"DATA\":[{\"TIME\":\"%ld\",\"VAL\":\"%0.1f\",\"UNIT\":\"%s\"}]}" |
wataloh | 1:b2a9a6f2c30e | 149 | ); |
wataloh | 1:b2a9a6f2c30e | 150 | struct SENSORS::AP_53A_KEYENCE : |
wataloh | 1:b2a9a6f2c30e | 151 | public SENSORS::COMMONPARAMS<SENSORS::AP_53A_KEYENCE>, |
wataloh | 1:b2a9a6f2c30e | 152 | public SENSORS::KEYENCE_PRESSURE_COMMON_PARAMS<SENSORS::AP_53A_KEYENCE> {}; |
wataloh | 1:b2a9a6f2c30e | 153 | template<> char *SENSORS::COMMONPARAMS<SENSORS::AP_53A_KEYENCE>::TYPE = "GAS PRESSURE"; |
wataloh | 1:b2a9a6f2c30e | 154 | template<> char *SENSORS::COMMONPARAMS<SENSORS::AP_53A_KEYENCE>::PN = "AP-53A KEYENCE"; |
wataloh | 1:b2a9a6f2c30e | 155 | template<> char *SENSORS::COMMONPARAMS<SENSORS::AP_53A_KEYENCE>::UNIT = "KPa"; |
wataloh | 1:b2a9a6f2c30e | 156 | template<> char* SENSORS::COMMONPARAMS<SENSORS::AP_53A_KEYENCE>::JSON_FMT( |
wataloh | 1:b2a9a6f2c30e | 157 | "{\"DEVICE\":\"%s\",\"PN\":\"%s\",\"DATA\":[{\"TIME\":\"%ld\",\"VAL\":\"%0.1f\",\"UNIT\":\"%s\"}]}" |
wataloh | 1:b2a9a6f2c30e | 158 | ); |
wataloh | 1:b2a9a6f2c30e | 159 | |
wataloh | 1:b2a9a6f2c30e | 160 | struct SENSORS::GP_M010_KEYENCE : |
wataloh | 1:b2a9a6f2c30e | 161 | public SENSORS::COMMONPARAMS<SENSORS::GP_M010_KEYENCE>, |
wataloh | 1:b2a9a6f2c30e | 162 | public SENSORS::KEYENCE_PRESSURE_COMMON_PARAMS<SENSORS::GP_M010_KEYENCE> {}; |
wataloh | 1:b2a9a6f2c30e | 163 | template<> char *SENSORS::COMMONPARAMS<SENSORS::GP_M010_KEYENCE>::TYPE = "LIQUID PRESSURE"; |
wataloh | 1:b2a9a6f2c30e | 164 | template<> char *SENSORS::COMMONPARAMS<SENSORS::GP_M010_KEYENCE>::PN = "AGP-M010 KEYENCE"; |
wataloh | 1:b2a9a6f2c30e | 165 | template<> char *SENSORS::COMMONPARAMS<SENSORS::GP_M010_KEYENCE>::UNIT = "KPa"; |
wataloh | 1:b2a9a6f2c30e | 166 | template<> char* SENSORS::COMMONPARAMS<SENSORS::GP_M010_KEYENCE>::JSON_FMT( |
wataloh | 1:b2a9a6f2c30e | 167 | "{\"DEVICE\":\"%s\",\"PN\":\"%s\",\"DATA\":[{\"TIME\":\"%ld\",\"VAL\":\"%0.1f\",\"UNIT\":\"%s\"}]}" |
wataloh | 1:b2a9a6f2c30e | 168 | ); |
wataloh | 1:b2a9a6f2c30e | 169 | |
wataloh | 1:b2a9a6f2c30e | 170 | struct PINS |
wataloh | 1:b2a9a6f2c30e | 171 | { |
wataloh | 1:b2a9a6f2c30e | 172 | struct LED_4_COLOR; |
wataloh | 1:b2a9a6f2c30e | 173 | struct COLOR; |
wataloh | 1:b2a9a6f2c30e | 174 | struct ACCELEROMETER; |
wataloh | 1:b2a9a6f2c30e | 175 | struct CURRENT_TRANS; |
wataloh | 1:b2a9a6f2c30e | 176 | struct TEMPERATURE; |
wataloh | 1:b2a9a6f2c30e | 177 | struct UART; |
wataloh | 1:b2a9a6f2c30e | 178 | struct ASR_1; |
wataloh | 1:b2a9a6f2c30e | 179 | struct GAS; |
wataloh | 1:b2a9a6f2c30e | 180 | struct LIQUID; |
wataloh | 1:b2a9a6f2c30e | 181 | }; |
wataloh | 1:b2a9a6f2c30e | 182 | |
wataloh | 1:b2a9a6f2c30e | 183 | struct PINS::LED_4_COLOR |
wataloh | 1:b2a9a6f2c30e | 184 | { |
wataloh | 1:b2a9a6f2c30e | 185 | enum |
wataloh | 1:b2a9a6f2c30e | 186 | { |
wataloh | 1:b2a9a6f2c30e | 187 | R = PTA5, |
wataloh | 1:b2a9a6f2c30e | 188 | G = PTA4, |
wataloh | 1:b2a9a6f2c30e | 189 | B = PTA12 |
wataloh | 1:b2a9a6f2c30e | 190 | }; |
wataloh | 1:b2a9a6f2c30e | 191 | }; |
wataloh | 1:b2a9a6f2c30e | 192 | |
wataloh | 1:b2a9a6f2c30e | 193 | struct PINS::COLOR |
wataloh | 1:b2a9a6f2c30e | 194 | { |
wataloh | 1:b2a9a6f2c30e | 195 | enum |
wataloh | 1:b2a9a6f2c30e | 196 | { |
wataloh | 1:b2a9a6f2c30e | 197 | SDA = PTE0, |
wataloh | 1:b2a9a6f2c30e | 198 | SCL = PTE1 |
wataloh | 1:b2a9a6f2c30e | 199 | }; |
wataloh | 1:b2a9a6f2c30e | 200 | }; |
wataloh | 1:b2a9a6f2c30e | 201 | |
wataloh | 1:b2a9a6f2c30e | 202 | struct PINS::ACCELEROMETER |
wataloh | 1:b2a9a6f2c30e | 203 | { |
wataloh | 1:b2a9a6f2c30e | 204 | enum |
wataloh | 1:b2a9a6f2c30e | 205 | { |
wataloh | 1:b2a9a6f2c30e | 206 | #if defined (TARGET_KL25Z) |
wataloh | 1:b2a9a6f2c30e | 207 | SDA = PTE25, |
wataloh | 1:b2a9a6f2c30e | 208 | SCL = PTE24 |
wataloh | 1:b2a9a6f2c30e | 209 | #elif defined (TARGET_TEENSY3_1) |
wataloh | 1:b2a9a6f2c30e | 210 | SDA = PTB3, |
wataloh | 1:b2a9a6f2c30e | 211 | SCL = PTB2 |
wataloh | 1:b2a9a6f2c30e | 212 | #endif |
wataloh | 1:b2a9a6f2c30e | 213 | }; |
wataloh | 1:b2a9a6f2c30e | 214 | }; |
wataloh | 1:b2a9a6f2c30e | 215 | |
wataloh | 1:b2a9a6f2c30e | 216 | struct PINS::CURRENT_TRANS |
wataloh | 1:b2a9a6f2c30e | 217 | { |
wataloh | 1:b2a9a6f2c30e | 218 | enum |
wataloh | 1:b2a9a6f2c30e | 219 | { |
wataloh | 1:b2a9a6f2c30e | 220 | AIN = PTB0 |
wataloh | 1:b2a9a6f2c30e | 221 | }; |
wataloh | 1:b2a9a6f2c30e | 222 | }; |
wataloh | 1:b2a9a6f2c30e | 223 | |
wataloh | 1:b2a9a6f2c30e | 224 | struct PINS::TEMPERATURE |
wataloh | 1:b2a9a6f2c30e | 225 | { |
wataloh | 1:b2a9a6f2c30e | 226 | enum |
wataloh | 1:b2a9a6f2c30e | 227 | { |
wataloh | 1:b2a9a6f2c30e | 228 | AIN = PTB1 |
wataloh | 1:b2a9a6f2c30e | 229 | }; |
wataloh | 1:b2a9a6f2c30e | 230 | }; |
wataloh | 1:b2a9a6f2c30e | 231 | |
wataloh | 1:b2a9a6f2c30e | 232 | struct PINS::GAS |
wataloh | 1:b2a9a6f2c30e | 233 | { |
wataloh | 1:b2a9a6f2c30e | 234 | enum |
wataloh | 1:b2a9a6f2c30e | 235 | { |
wataloh | 1:b2a9a6f2c30e | 236 | AIN = PTB2 |
wataloh | 1:b2a9a6f2c30e | 237 | }; |
wataloh | 1:b2a9a6f2c30e | 238 | }; |
wataloh | 1:b2a9a6f2c30e | 239 | |
wataloh | 1:b2a9a6f2c30e | 240 | struct PINS::LIQUID |
wataloh | 1:b2a9a6f2c30e | 241 | { |
wataloh | 1:b2a9a6f2c30e | 242 | enum |
wataloh | 1:b2a9a6f2c30e | 243 | { |
wataloh | 1:b2a9a6f2c30e | 244 | AIN = PTB3 |
wataloh | 1:b2a9a6f2c30e | 245 | }; |
wataloh | 1:b2a9a6f2c30e | 246 | }; |
wataloh | 1:b2a9a6f2c30e | 247 | |
wataloh | 1:b2a9a6f2c30e | 248 | struct PINS::ASR_1 |
wataloh | 1:b2a9a6f2c30e | 249 | { |
wataloh | 1:b2a9a6f2c30e | 250 | struct SPI; |
wataloh | 1:b2a9a6f2c30e | 251 | enum |
wataloh | 1:b2a9a6f2c30e | 252 | { |
wataloh | 1:b2a9a6f2c30e | 253 | #if defined (TARGET_KL25Z) |
wataloh | 1:b2a9a6f2c30e | 254 | RESET = PTC9 //PSOC //PTA20 |
wataloh | 1:b2a9a6f2c30e | 255 | #elif defined (TARGET_TEENSY3_1) |
wataloh | 1:b2a9a6f2c30e | 256 | RESET = PTD6 |
wataloh | 1:b2a9a6f2c30e | 257 | #endif |
wataloh | 1:b2a9a6f2c30e | 258 | }; |
wataloh | 1:b2a9a6f2c30e | 259 | struct SIG |
wataloh | 1:b2a9a6f2c30e | 260 | { |
wataloh | 1:b2a9a6f2c30e | 261 | template<typename A> struct RESET_BASE |
wataloh | 1:b2a9a6f2c30e | 262 | { |
wataloh | 1:b2a9a6f2c30e | 263 | static time_t INTERVAL; |
wataloh | 1:b2a9a6f2c30e | 264 | }; |
wataloh | 1:b2a9a6f2c30e | 265 | struct RESET : public RESET_BASE<RESET> |
wataloh | 1:b2a9a6f2c30e | 266 | { |
wataloh | 1:b2a9a6f2c30e | 267 | enum |
wataloh | 1:b2a9a6f2c30e | 268 | { |
wataloh | 1:b2a9a6f2c30e | 269 | ASSERT = 0, |
wataloh | 1:b2a9a6f2c30e | 270 | DEASSERT = 1 |
wataloh | 1:b2a9a6f2c30e | 271 | }; |
wataloh | 1:b2a9a6f2c30e | 272 | }; |
wataloh | 1:b2a9a6f2c30e | 273 | }; |
wataloh | 1:b2a9a6f2c30e | 274 | }; |
wataloh | 1:b2a9a6f2c30e | 275 | |
wataloh | 1:b2a9a6f2c30e | 276 | template<> time_t PINS::ASR_1::SIG::RESET_BASE<PINS::ASR_1::SIG::RESET>::INTERVAL = 60*5; |
wataloh | 1:b2a9a6f2c30e | 277 | |
wataloh | 1:b2a9a6f2c30e | 278 | struct PINS::ASR_1::SPI |
wataloh | 1:b2a9a6f2c30e | 279 | { |
wataloh | 1:b2a9a6f2c30e | 280 | enum |
wataloh | 1:b2a9a6f2c30e | 281 | { |
wataloh | 1:b2a9a6f2c30e | 282 | #if defined (TARGET_KL25Z) |
wataloh | 1:b2a9a6f2c30e | 283 | MOSI = PTD2, |
wataloh | 1:b2a9a6f2c30e | 284 | MISO = PTD3, |
wataloh | 1:b2a9a6f2c30e | 285 | SCK = PTD1, |
wataloh | 1:b2a9a6f2c30e | 286 | CS = PTD0, |
wataloh | 1:b2a9a6f2c30e | 287 | SR = PTD4 // request from slave |
wataloh | 1:b2a9a6f2c30e | 288 | #elif defined (TARGET_TEENSY3_1) |
wataloh | 1:b2a9a6f2c30e | 289 | MOSI = PTC6, |
wataloh | 1:b2a9a6f2c30e | 290 | MISO = PTC7, |
wataloh | 1:b2a9a6f2c30e | 291 | SCK = PTC5, |
wataloh | 1:b2a9a6f2c30e | 292 | CS = PTC4, |
wataloh | 1:b2a9a6f2c30e | 293 | SR = PTD1 // request from slave |
wataloh | 1:b2a9a6f2c30e | 294 | #endif |
wataloh | 1:b2a9a6f2c30e | 295 | }; |
wataloh | 1:b2a9a6f2c30e | 296 | struct SIG |
wataloh | 1:b2a9a6f2c30e | 297 | { |
wataloh | 1:b2a9a6f2c30e | 298 | struct CS |
wataloh | 1:b2a9a6f2c30e | 299 | { |
wataloh | 1:b2a9a6f2c30e | 300 | enum |
wataloh | 1:b2a9a6f2c30e | 301 | { |
wataloh | 1:b2a9a6f2c30e | 302 | ASSERT = 0, |
wataloh | 1:b2a9a6f2c30e | 303 | DEASSERT = 1 |
wataloh | 1:b2a9a6f2c30e | 304 | }; |
wataloh | 1:b2a9a6f2c30e | 305 | }; |
wataloh | 1:b2a9a6f2c30e | 306 | }; |
wataloh | 1:b2a9a6f2c30e | 307 | enum |
wataloh | 1:b2a9a6f2c30e | 308 | { |
wataloh | 1:b2a9a6f2c30e | 309 | NUM_BITS_PER_FRAME = 8, |
wataloh | 1:b2a9a6f2c30e | 310 | MODE_0 = 0, |
wataloh | 1:b2a9a6f2c30e | 311 | FREQUENCY = 1*1000*1000 |
wataloh | 1:b2a9a6f2c30e | 312 | }; |
wataloh | 1:b2a9a6f2c30e | 313 | }; |
wataloh | 1:b2a9a6f2c30e | 314 | |
wataloh | 1:b2a9a6f2c30e | 315 | struct PINS::UART |
wataloh | 1:b2a9a6f2c30e | 316 | { |
wataloh | 1:b2a9a6f2c30e | 317 | #if defined (TARGET_TEENSY3_1) |
wataloh | 1:b2a9a6f2c30e | 318 | enum |
wataloh | 1:b2a9a6f2c30e | 319 | { |
wataloh | 1:b2a9a6f2c30e | 320 | uart0_tx = PTA2, |
wataloh | 1:b2a9a6f2c30e | 321 | uart0_rx = PTA1 |
wataloh | 1:b2a9a6f2c30e | 322 | }; |
wataloh | 1:b2a9a6f2c30e | 323 | #endif |
wataloh | 1:b2a9a6f2c30e | 324 | #if defined (TARGET_KL25Z) && (WICED_SMART_UART_CONNECTION) |
wataloh | 1:b2a9a6f2c30e | 325 | struct WICED |
wataloh | 1:b2a9a6f2c30e | 326 | { |
wataloh | 1:b2a9a6f2c30e | 327 | struct TAG3 |
wataloh | 1:b2a9a6f2c30e | 328 | { |
wataloh | 1:b2a9a6f2c30e | 329 | enum |
wataloh | 1:b2a9a6f2c30e | 330 | { |
wataloh | 1:b2a9a6f2c30e | 331 | TO_RX = PTE22 // -> TAG3 J7-1 |
wataloh | 1:b2a9a6f2c30e | 332 | ,TO_TX = PTE23 // -> TAG3 J8-5 |
wataloh | 1:b2a9a6f2c30e | 333 | //power 3v3 -> TAG J9-1 |
wataloh | 1:b2a9a6f2c30e | 334 | //GND -> TAGJ9-4 |
wataloh | 1:b2a9a6f2c30e | 335 | }; |
wataloh | 1:b2a9a6f2c30e | 336 | }; |
wataloh | 1:b2a9a6f2c30e | 337 | }; |
wataloh | 1:b2a9a6f2c30e | 338 | #endif |
wataloh | 1:b2a9a6f2c30e | 339 | }; |
wataloh | 1:b2a9a6f2c30e | 340 | |
wataloh | 1:b2a9a6f2c30e | 341 | template<typename A> struct PREFERENCES_BASE |
wataloh | 1:b2a9a6f2c30e | 342 | { |
wataloh | 1:b2a9a6f2c30e | 343 | static uint32_t SENSING_INTERVAL[SENSORS::SIZE]; |
wataloh | 1:b2a9a6f2c30e | 344 | static time_t EPOCH_UTC; |
wataloh | 1:b2a9a6f2c30e | 345 | typedef union |
wataloh | 1:b2a9a6f2c30e | 346 | { |
wataloh | 1:b2a9a6f2c30e | 347 | uint32_t ui32; |
wataloh | 1:b2a9a6f2c30e | 348 | uint8_t ui8[sizeof(uint32_t)]; |
wataloh | 1:b2a9a6f2c30e | 349 | } _crc32; |
wataloh | 1:b2a9a6f2c30e | 350 | static _crc32 CRC32; |
wataloh | 1:b2a9a6f2c30e | 351 | }; |
wataloh | 1:b2a9a6f2c30e | 352 | |
wataloh | 1:b2a9a6f2c30e | 353 | struct PREFERENCES : PREFERENCES_BASE<PREFERENCES> |
wataloh | 1:b2a9a6f2c30e | 354 | { |
wataloh | 1:b2a9a6f2c30e | 355 | struct NOTIFICATION; |
wataloh | 1:b2a9a6f2c30e | 356 | struct DATA_TRANSFER_MODE |
wataloh | 1:b2a9a6f2c30e | 357 | { |
wataloh | 1:b2a9a6f2c30e | 358 | enum |
wataloh | 1:b2a9a6f2c30e | 359 | { |
wataloh | 1:b2a9a6f2c30e | 360 | JSON = 0, |
wataloh | 1:b2a9a6f2c30e | 361 | BASE64 = 1 |
wataloh | 1:b2a9a6f2c30e | 362 | }; |
wataloh | 1:b2a9a6f2c30e | 363 | }; |
wataloh | 1:b2a9a6f2c30e | 364 | struct THRESHOLD |
wataloh | 1:b2a9a6f2c30e | 365 | { |
wataloh | 1:b2a9a6f2c30e | 366 | struct RANGE |
wataloh | 1:b2a9a6f2c30e | 367 | { |
wataloh | 1:b2a9a6f2c30e | 368 | enum |
wataloh | 1:b2a9a6f2c30e | 369 | { |
wataloh | 1:b2a9a6f2c30e | 370 | MIN = 0, |
wataloh | 1:b2a9a6f2c30e | 371 | MAX, |
wataloh | 1:b2a9a6f2c30e | 372 | DELTA, |
wataloh | 1:b2a9a6f2c30e | 373 | SIZE |
wataloh | 1:b2a9a6f2c30e | 374 | }; |
wataloh | 1:b2a9a6f2c30e | 375 | }; |
wataloh | 1:b2a9a6f2c30e | 376 | }; |
wataloh | 1:b2a9a6f2c30e | 377 | template<typename A> struct NOTIFICATION_BASE |
wataloh | 1:b2a9a6f2c30e | 378 | { |
wataloh | 1:b2a9a6f2c30e | 379 | static bool ENABLED[SENSORS::SIZE][THRESHOLD::RANGE::SIZE]; |
wataloh | 1:b2a9a6f2c30e | 380 | static VAR THRESHOLD[SENSORS::SIZE][THRESHOLD::RANGE::SIZE]; // not used ... for now. |
wataloh | 1:b2a9a6f2c30e | 381 | }; |
wataloh | 1:b2a9a6f2c30e | 382 | }; |
wataloh | 1:b2a9a6f2c30e | 383 | |
wataloh | 1:b2a9a6f2c30e | 384 | template<> uint32_t PREFERENCES_BASE<PREFERENCES>::SENSING_INTERVAL[SENSORS::SIZE] = { 0 }; |
wataloh | 1:b2a9a6f2c30e | 385 | template<> time_t PREFERENCES_BASE<PREFERENCES>::EPOCH_UTC = 0; |
wataloh | 1:b2a9a6f2c30e | 386 | template<> PREFERENCES_BASE<PREFERENCES>::_crc32 PREFERENCES_BASE<PREFERENCES>::CRC32; |
wataloh | 1:b2a9a6f2c30e | 387 | |
wataloh | 1:b2a9a6f2c30e | 388 | struct PREFERENCES::NOTIFICATION : public PREFERENCES::NOTIFICATION_BASE<PREFERENCES::NOTIFICATION> |
wataloh | 1:b2a9a6f2c30e | 389 | { |
wataloh | 1:b2a9a6f2c30e | 390 | }; |
wataloh | 1:b2a9a6f2c30e | 391 | |
wataloh | 1:b2a9a6f2c30e | 392 | template<> bool PREFERENCES::NOTIFICATION_BASE<PREFERENCES::NOTIFICATION>::ENABLED[SENSORS::SIZE][THRESHOLD::RANGE::SIZE]; |
wataloh | 1:b2a9a6f2c30e | 393 | template<> VAR PREFERENCES::NOTIFICATION_BASE<PREFERENCES::NOTIFICATION>::THRESHOLD[SENSORS::SIZE][THRESHOLD::RANGE::SIZE]; |
wataloh | 1:b2a9a6f2c30e | 394 | |
wataloh | 1:b2a9a6f2c30e | 395 | typedef union |
wataloh | 1:b2a9a6f2c30e | 396 | { |
wataloh | 1:b2a9a6f2c30e | 397 | typedef struct |
wataloh | 1:b2a9a6f2c30e | 398 | { |
wataloh | 1:b2a9a6f2c30e | 399 | time_t timeStamp; |
wataloh | 1:b2a9a6f2c30e | 400 | SENSORS::INDEX index; |
wataloh | 1:b2a9a6f2c30e | 401 | } PACKET_BASE; |
wataloh | 1:b2a9a6f2c30e | 402 | struct : PACKET_BASE |
wataloh | 1:b2a9a6f2c30e | 403 | { |
wataloh | 1:b2a9a6f2c30e | 404 | short x,y,z; |
wataloh | 1:b2a9a6f2c30e | 405 | } accelerometer; |
wataloh | 1:b2a9a6f2c30e | 406 | struct : PACKET_BASE |
wataloh | 1:b2a9a6f2c30e | 407 | { |
wataloh | 1:b2a9a6f2c30e | 408 | uint16_t R, G, B; |
wataloh | 1:b2a9a6f2c30e | 409 | } color; |
wataloh | 1:b2a9a6f2c30e | 410 | struct : PACKET_BASE |
wataloh | 1:b2a9a6f2c30e | 411 | { |
wataloh | 1:b2a9a6f2c30e | 412 | float val; |
wataloh | 1:b2a9a6f2c30e | 413 | } temperature; |
wataloh | 1:b2a9a6f2c30e | 414 | struct : PACKET_BASE |
wataloh | 1:b2a9a6f2c30e | 415 | { |
wataloh | 1:b2a9a6f2c30e | 416 | float val; |
wataloh | 1:b2a9a6f2c30e | 417 | } current_trans; |
wataloh | 1:b2a9a6f2c30e | 418 | struct : PACKET_BASE |
wataloh | 1:b2a9a6f2c30e | 419 | { |
wataloh | 1:b2a9a6f2c30e | 420 | float val; |
wataloh | 1:b2a9a6f2c30e | 421 | } pressure; |
wataloh | 1:b2a9a6f2c30e | 422 | } PACKET; |
wataloh | 1:b2a9a6f2c30e | 423 | |
wataloh | 1:b2a9a6f2c30e | 424 | }; |
wataloh | 1:b2a9a6f2c30e | 425 | |
wataloh | 1:b2a9a6f2c30e | 426 | #endif //_PREFERENCES_HPP_ |