#ifndef Parms_ADI #define Parms_ADI 1 #define PARMSIZE 140 int32_t parm[PARMSIZE]; int32_t tempParm[PARMSIZE]; // used to store parms of slave unit int32_t remoteParm[PARMSIZE]; const int32_t parmlimits[][6] = // default, min, max, 1 = allow-default, 1 = needs-unlock-code { {0, 0, 2653999, 0, 0, 0}, // 0 Checksum {0, 0, 2653999, 1, 0, 0}, // 1 Adnet address 0 = single door master, 100 = slave {10, 0, 100, 1, 0, 0}, // 2 Gasket Delay {10, 0, 10000, 1, 0, 0}, // 3 Bug Screen Button Time seconds * 10 {1, 0, 10000, 1, 0, 0}, // 4 Use Obstruction Sensor {600, 0, 10000, 1, 0, 0}, // 5 Door Open Travel Timeout {600, 1, 10000, 1, 0, 0}, // 6 Door Close Jog Limit -time from open to hit upper switch {-6, -12, 12, 1, 0, 0}, // 7 Time Zone {0, 0, 10000, 1, 0, 0}, // 8 Security Code Access {0, 0, 1, 1, 0, 0}, // 9 Enable WiFi {115, 0, 10000, 1, 0, 0}, // 10 Lo Battery voltage *10 / 0 = off {0, 0, 10000, 0, 0, 0}, // 11 Open counter {0, 0, 100000, 1, 0, 0}, // 12 auto setup script {0, 0, 10000, 1, 0, 0}, // 13 0 = 2.4" Display, 1 = 5" Display {0, 0, 10000, 0, 1, 0}, // 14 Store FIRMWARE Version Here {1, 0, 15, 1, 0, 0}, // 15 bug screen channel {0, 0, 10000, 1, 0, 0}, // 16 use SPARE relay for lock circuit ENERGIZE to UNLOCK {1, 0, 10000, 1, 0, 0}, // 17 {1253, 0, 10000, 1, 0, 0}, // 18 batteryvoltage cal {0, 0, 10000, 1, 0, 0}, // 19 number of 5" displays at address 181+ {0, 0, 10000, 1, 0, 0}, // 20 number of 2" displays at address 191+ {0, 0, 10000, 1, 0, 0}, // 21 number of motor controls at address 200+ {5, 1, 10000, 1, 0, 0}, // 22 WiFi service timer {800, 200, 10000, 1, 0, 0}, // 23 WiFi Update timer {0, 0, 10000, 0, 0, 0}, // 24 set to 1 to use NC interlock on spare 1 {0, 0, 2, 1, 0, 0}, // 25 #io expanders {0, 0, 10000, 1, 0, 0}, // 26 ioExpander #0 remote open/close button mode -optos 0 and 1 {190, 0, 240, 1, 0, 0}, // 27 motor max current * 10 {0, 0, 10000, 1, 0, 538}, // 28 use ioExpander relays for Somfy screen control {0, 0, 10000, 1, 0, 538}, // 29 splash screen timeout to blank screen 0 = off 1 = on {30, 20, 10000, 1, 0, 538}, // 30 timeout for start motor {10, 5, 10000, 1, 0, 538}, // 31 timeout for running motor {0, 0, 10000, 1, 0, 0}, // 32 {0, 0, 20000, 1, 0, 0}, // 33 time between cycles for exercise mode / seconds * 10 {0, 0, 10000, 1, 0, 0}, // 34 {0, 0, 10000, 1, 0, 0}, // 35 {0, 0, 10000, 1, 0, 0}, // 36 {0, 0, 10000, 1, 0, 0}, // 37 {0, 0, 10000, 1, 0, 0}, // 38 {10, 0, 10000, 1, 0, 0}, // 39 Learned close position {2000, 100, 10000, 1, 0, 0}, // 40 Learned open position {5, 0, 10000, 1, 0, 0}, // 41 SYNC Inteval {100, 0, 10000, 1, 0, 0}, // 42 SYNC Integral {50, 0, 10000, 1, 0, 0}, // 43 SYNC Proportional {200, 0, 10000, 1, 0, 0}, // 44 MAX_DELTA {250, 0, 10000, 1, 0, 0}, // 45 MAX_CURRENT {50, 0, 10000, 1, 0, 0}, // 46 MOTOR_SPEED {3000, 0, 10000, 1, 0, 0}, // 47 EXTEND_LIMIT {0, -10000, 10000, 1, 0, 0}, // 48 SLAVE OFFSET {0, -1000, 1000, 1, 0, 0}, // 49 setCurrentBalance open {0, -1000, 1000, 1, 0, 0}, // 50 setCurrentBalance close {0, 0, 10000, 1, 0, 0}, // 51 {0, 0, 10000, 1, 0, 538}, // 52 number of slaves {0, 0, 10000, 1, 0, 0}, // 53 {0, 0, 10000, 1, 0, 0}, // 54 Use Lidar {0, 0, 10000, 1, 0, 0}, // 55 Lidar parm 2 door height {0, 0, 10000, 1, 0, 0}, // 56 Lidar parm 3 door width {0, 0, 10000, 1, 0, 0}, // 57 Lidar parm 4 deadband {5, 0, 10000, 1, 0, 0}, // 58 Lidar parm 5 debounce count {0, 0, 10000, 1, 0, 0}, // 59 Lidar parm 6 mounting angle {0, 0, 10000, 1, 0, 0}, // 60 Lidar parm 7 run mode {0, 0, 10000, 1, 0, 0}, // 61 {0, 0, 10000, 1, 0, 0}, // 62 {0, 0, 10000, 1, 0, 0}, // 63 {2002, 3, 9000000, 0, 1, 0}, // 64 serial# stored here.. not included in factory default set {400, 0, 10000, 1, 0, 0}, // 65 Lidar down from open deadband {300, 0, 10000, 1, 0, 0}, // 66 Lidar up from closed deadband {0, 0, 10000, 1, 0, 538}, // 67 splash screen timeout to blank screen 0 = off 1 = on {0, 0, 10000, 1, 0, 0}, // 68 {0, 0, 999999999, 1, 0, 0}, // 69 temp storage of last rtc set {0, 0, 999999999, 1, 0, 0}, // 70 {0, 0, 999999999, 1, 0, 0}, // 71 {0, 0, 999999999, 1, 0, 0}, // 72 {0, 0, 999999999, 1, 0, 0}, // 73 {0, 0, 999999999, 1, 0, 0}, // 74 {1, 1, 1, 1, 0, 0}, // 75 Device type {0, 0, 2147000000, 1, 0, 0}, // 76 Last Service time {0, 0, 999999999, 1, 0, 0}, // 77 {0, 0, 999999999, 1, 0, 0}, // 78 {0, 0, 999999999, 1, 0, 0}, // 79 {0, 0, 999999999, 1, 0, 0}, // 80 {0, 0, 999999999, 1, 0, 0}, // 81 {0, 0, 999999999, 1, 0, 0}, // 82 {0, 0, 999999999, 1, 0, 0}, // 83 {0, 0, 999999999, 1, 0, 0}, // 84 {0, 0, 999999999, 1, 0, 0}, // 85 {0, 0, 999999999, 1, 0, 0}, // 86 {0, 0, 999999999, 1, 0, 0}, // 87 {0, 0, 999999999, 1, 0, 0}, // 88 {0, 0, 999999999, 1, 0, 0}, // 89 {0, 0, 999999999, 1, 0, 0}, // 90 {0, 0, 999999999, 1, 0, 0}, // 91 {0, 0, 999999999, 1, 0, 0}, // 92 {0, 0, 999999999, 1, 0, 0}, // 93 {0, 0, 999999999, 1, 0, 0}, // 94 {0, 0, 999999999, 1, 0, 0}, // 95 {0, 0, 999999999, 1, 0, 0}, // 96 {0, 0, 999999999, 1, 0, 0}, // 97 {0, 0, 999999999, 1, 0, 0}, // 98 {0, 0, 999999999, 1, 0, 0}, // 99 {0, 0, 999999999, 1, 0, 0}, // 100 {10, 0, 500, 1, 0, 0}, // 101 Clarity advertising repeat count v534 {0, 0, 999999999, 1, 0, 0}, // 102 {0, 0, 999999999, 1, 0, 0}, // 103 {0, 0, 999999999, 1, 0, 0}, // 104 {0, 0, 999999999, 1, 0, 0}, // 105 {0, 0, 999999999, 1, 0, 0}, // 106 {0, 0, 999999999, 1, 0, 0}, // 107 {0, 0, 999999999, 1, 0, 0}, // 108 {0, 0, 999999999, 1, 0, 0}, // 109 {0, 0, 999999999, 1, 0, 0}, // 110 {0, 0, 999999999, 1, 0, 0}, // 111 {0, 0, 999999999, 1, 0, 0}, // 112 {0, 0, 999999999, 1, 0, 0}, // 113 {0, 0, 999999999, 1, 0, 0}, // 114 {0, 0, 999999999, 1, 0, 0}, // 115 {0, 0, 999999999, 1, 0, 0}, // 116 {0, 0, 999999999, 1, 0, 0}, // 117 {0, 0, 999999999, 1, 0, 0}, // 118 {0, 0, 999999999, 1, 0, 0}, // 119 {0, 0, 999999999, 1, 0, 0}, // 120 {0, 0, 999999999, 1, 0, 0}, // 121 {0, 0, 999999999, 1, 0, 0}, // 122 {0, 0, 999999999, 1, 0, 0}, // 123 {0, 0, 999999999, 1, 0, 0}, // 124 {0, 0, 999999999, 1, 0, 0}, // 125 {0, 0, 999999999, 1, 0, 0}, // 126 {0, 0, 999999999, 1, 0, 0}, // 127 {0, 0, 999999999, 1, 0, 0}, // 128 {0, 0, 999999999, 1, 0, 0}, // 129 {0, 0, 999999999, 1, 0, 0}, // 130 {0, 0, 999999999, 1, 0, 0}, // 131 {0, 0, 999999999, 1, 0, 0}, // 132 {0, 0, 999999999, 1, 0, 0}, // 133 {0, 0, 999999999, 1, 0, 0}, // 134 {0, 0, 999999999, 1, 0, 0}, // 135 {0, 0, 999999999, 1, 0, 0}, // 136 {0, 0, 999999999, 1, 0, 0}, // 137 {0, 0, 999999999, 1, 0, 0}, // 138 {0, 0, 999999999, 1, 0, 0}, // 139 }; #endif /* if 255, factory default, // if 19315, set serial to parm 22 // if 6911, set RLY08 at address 1 to parm 22 valid numbers are 2-4 // if 257, ssid = ADITEST, pass = 12345678 // if 6011, OTA // if 6013, Sensor screen // if 6012, Timer screen // if 6014, Toggle VB */ #ifndef PARMS_LIB_H #define PARMS_LIB_H #include "FileLib.h" class ParmsLibClass { private: /** * File system */ FileLibClass &_fileLib; /** * Verbose mode flag */ bool _verbose = false; /** * Qualify a single parm * @param pnum Index of the parm to qualify * @param pdat Value to qualify * * @return true if parm is valid */ bool _qualify(uint16_t pnum, int32_t pdat); /** * Qualify all parms and set parm to default if invalid */ void _qualifyAll(void); /** * Print out message, if verbose mode is enabled */ void _printMessage(const char *message, ...); /** * Calculate the checksum * * @return Checksum value */ int32_t _calcChecksum(void); public: /** * Constructor */ ParmsLibClass(FileLibClass &fileLib) : _fileLib(fileLib){}; /** * Destructor */ ~ParmsLibClass(); /** * Set verbose mode * @param verbose true to enable verbose mode */ void setVerbose(bool verbose) { _verbose = verbose; } /** * Read parm * @param pnum Index of the parm to read * * @returns Value at the parm index */ int32_t read(uint16_t pnum); /** * Write parm * @param pnum Index of the parm to write * @param pdat Value to write * * @return true if successful */ bool write(uint16_t pnum, int32_t pdat); /** * Set factory parms */ void factoryReset(void); /** * Read from FS * @param filename Optional, default "/PARMS.ADI". Filename to write to. * * @return true if successful */ bool loadFromFS(char *filename = "/PARMS.ADI"); /** * Write to FS * @param filename Optional, default "/PARMS.ADI". Filename to write to. * * @return true if successful */ bool saveToFS(char *filename = "/PARMS.ADI"); }; #endif