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 Orefatoi

Committer:
wataloh
Date:
Thu Jan 19 09:17:16 2017 +0000
Revision:
1:b2a9a6f2c30e
Child:
2:dfe671e31221
simplified

Who changed what in which revision?

UserRevisionLine numberNew 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_