Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Wed Oct 26 21:02:04 2016 +0000
Revision:
279:b60379a9eb1a
Parent:
251:e730d7077e46
Child:
282:2dc06137f1ec
Updates for BLE and added mailbox for BLE

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jmarkel44 0:65cfa4873284 1 /******************************************************************************
davidjhoward 15:a6ee32969e8e 2 *
jmarkel44 0:65cfa4873284 3 * File: global.h
davidjhoward 15:a6ee32969e8e 4 * Desciption: global data
jmarkel44 0:65cfa4873284 5 *
jmarkel44 0:65cfa4873284 6 *****************************************************************************/
jmarkel44 0:65cfa4873284 7 #ifndef GLOBAL_H
jmarkel44 0:65cfa4873284 8 #define GLOBAL_H
jmarkel44 0:65cfa4873284 9
jmarkel44 0:65cfa4873284 10 #include "mbed.h"
jmarkel44 0:65cfa4873284 11 #include "rtos.h"
jmarkel44 0:65cfa4873284 12 #include "ntshell.h"
davidjhoward 7:c0c03193612d 13 #include "mDot.h"
jmarkel44 0:65cfa4873284 14
davidjhoward 149:950c90425f7c 15 // file naming prefix conventions
jmarkel44 74:03ccf04998b5 16 #define CONTROL_SP_STR "control_sp_"
jmarkel44 74:03ccf04998b5 17 #define CONTROL_TM_STR "control_tm_"
jmarkel44 74:03ccf04998b5 18 #define CONTROL_MN_STR "control_mn_"
jmarkel44 230:11765008ff3a 19 #define CONTROL_COMP_STR "control_comp_"
jmarkel44 230:11765008ff3a 20 #define CONTROL_CA_STR "control_ca_"
jmarkel44 250:1cd8ec63e9e9 21 #define CONTROL_FS_STR "control_fs_"
jmarkel44 74:03ccf04998b5 22
jmarkel44 218:e0c05b4f470b 23 // declare max file sizes
jmarkel44 218:e0c05b4f470b 24 #define MAX_FILE_SIZE 350
jmarkel44 177:9ec90c8e3ce1 25
jmarkel44 218:e0c05b4f470b 26 // declare stack sizes
davidjhoward 237:ecf34419ce5d 27 #define MODBUS_MASTER_STACK_SIZE (1024 * 2)
jmarkel44 245:6665796174c3 28 #define OUTPUT_TASK_STACK_SIZE (1024 * 4)
jmarkel44 218:e0c05b4f470b 29 #define CONFIG_HANDLER_STACK_SIZE (1024*4 + 512)
jmarkel44 218:e0c05b4f470b 30 #define CONTROL_TASK_STACK_SIZE (1024)
davidjhoward 248:e156e33b8b38 31 #define BLE_DATA_HANDLER_STACK_SIZE (1024 * 2)
davidjhoward 246:ca91a441b4dc 32 #define CLOUD_DATA_HANDLER_STACK_SIZE (1024 * 4)
jmarkel44 219:2b6c5782f291 33 #define ANALYTICS_LOGGER_STACK_SIZE (1024 * 2)
jmarkel44 218:e0c05b4f470b 34
jmarkel44 75:96512ccc0443 35 extern int sig_output_continue;
jmarkel44 75:96512ccc0443 36 extern int sig_config_continue;
jmarkel44 75:96512ccc0443 37
jmarkel44 3:8ea4db957749 38 extern osThreadId mainThreadId;
jmarkel44 0:65cfa4873284 39
jmarkel44 0:65cfa4873284 40 typedef enum action_tag {
jmarkel44 0:65cfa4873284 41 ACTION_CREATE,
jmarkel44 0:65cfa4873284 42 ACTION_MODIFY,
davidjhoward 31:4b1587034318 43 ACTION_DESTROY,
davidjhoward 31:4b1587034318 44 ACTION_READ_FILE,
davidjhoward 197:594afd088f32 45 ACTION_EXEC_CMD
jmarkel44 0:65cfa4873284 46 } Action_t;
jmarkel44 0:65cfa4873284 47
jmarkel44 0:65cfa4873284 48 typedef enum control_tag {
jmarkel44 0:65cfa4873284 49 CONTROL_TIMER = 0,
jmarkel44 0:65cfa4873284 50 CONTROL_PID = 1,
jmarkel44 0:65cfa4873284 51 CONTROL_SETPOINT = 2,
jmarkel44 0:65cfa4873284 52 CONTROL_COMPOSITE = 3,
jmarkel44 221:2a5e9902003c 53 CONTROL_MANUAL = 4,
jmarkel44 250:1cd8ec63e9e9 54 CONTROL_ALGORITHM = 5,
jmarkel44 250:1cd8ec63e9e9 55 CONTROL_FAILSAFE = 6
jmarkel44 0:65cfa4873284 56 } Control_t;
jmarkel44 0:65cfa4873284 57
jmarkel44 0:65cfa4873284 58
jmarkel44 0:65cfa4873284 59 // message data type
jmarkel44 0:65cfa4873284 60 typedef struct message_tag {
jmarkel44 0:65cfa4873284 61 Action_t action;
jmarkel44 0:65cfa4873284 62 Control_t control;
davidjhoward 197:594afd088f32 63 char controlFile[128];
jmarkel44 0:65cfa4873284 64 } Message_t;
jmarkel44 0:65cfa4873284 65
davidjhoward 149:950c90425f7c 66 typedef enum {
davidjhoward 149:950c90425f7c 67 OFF = 0,
davidjhoward 149:950c90425f7c 68 ON = 1
davidjhoward 149:950c90425f7c 69 } State;
jmarkel44 56:225786c56315 70
jmarkel44 63:0ded43237b22 71 typedef enum output_action {
jmarkel44 63:0ded43237b22 72 ACTION_NEW,
jmarkel44 71:34856d21f2bf 73 ACTION_CONTROL_ON,
jmarkel44 71:34856d21f2bf 74 ACTION_CONTROL_OFF,
jmarkel44 71:34856d21f2bf 75 ACTION_CONTROL_REGISTER,
jmarkel44 71:34856d21f2bf 76 ACTION_CONTROL_UNREGISTER
jmarkel44 63:0ded43237b22 77 } OutputAction;
jmarkel44 63:0ded43237b22 78
davidjhoward 149:950c90425f7c 79 // output control request message
jmarkel44 51:66b820f203a5 80 typedef struct output_control_req_t {
jmarkel44 63:0ded43237b22 81 OutputAction action;
jmarkel44 115:1558e01d04c6 82 Control_t controlType;
jmarkel44 71:34856d21f2bf 83 char controlFile[32];
jmarkel44 115:1558e01d04c6 84 char input_tag[32];
jmarkel44 115:1558e01d04c6 85 char output_tag[32];
jmarkel44 71:34856d21f2bf 86 char id[32];
jmarkel44 51:66b820f203a5 87 unsigned int priority;
jmarkel44 63:0ded43237b22 88 } OutputControlMsg_t;
jmarkel44 51:66b820f203a5 89
davidjhoward 149:950c90425f7c 90 // analytics logger request message
davidjhoward 58:a4422d19b2ea 91 typedef struct analytics_logger_req_t {
davidjhoward 58:a4422d19b2ea 92 char timestamp[32];
davidjhoward 58:a4422d19b2ea 93 char log_entry[96];
davidjhoward 58:a4422d19b2ea 94 } AnalyticsLoggerReq_t;
davidjhoward 58:a4422d19b2ea 95
davidjhoward 279:b60379a9eb1a 96 // analytics logger request message
davidjhoward 279:b60379a9eb1a 97 typedef struct ble_handler_req_t {
davidjhoward 279:b60379a9eb1a 98 char reply[500];
davidjhoward 279:b60379a9eb1a 99 } BLEHandlerReq_t;
davidjhoward 279:b60379a9eb1a 100
jmarkel44 0:65cfa4873284 101 extern Mail<Message_t, 16> MailBox;
davidjhoward 31:4b1587034318 102 extern Mail<Message_t, 16> ModbusMasterMailBox;
jmarkel44 63:0ded43237b22 103 extern Mail<OutputControlMsg_t, 16> OutputMasterMailBox;
davidjhoward 279:b60379a9eb1a 104 extern Mail<BLEHandlerReq_t, 1> BLEHandlerMailBox;
jmarkel44 0:65cfa4873284 105
jmarkel44 0:65cfa4873284 106 extern ntshell_t ntshell;
jmarkel44 0:65cfa4873284 107
jmarkel44 0:65cfa4873284 108 extern int func_read(char *buf, int cnt);
jmarkel44 0:65cfa4873284 109 extern int func_write(const char *buf, int cnt);
jmarkel44 0:65cfa4873284 110 extern int func_cb_ntshell(const char *text);
jmarkel44 0:65cfa4873284 111 extern void func_cb_ntopt(int argc, char **argv);
davidjhoward 7:c0c03193612d 112 extern mDot *GLOBAL_mdot;
jmarkel44 0:65cfa4873284 113
davidjhoward 149:950c90425f7c 114 typedef enum register_type_tag {
davidjhoward 149:950c90425f7c 115 REG_TYPE_NONE,
davidjhoward 149:950c90425f7c 116 REG_TYPE_INPUT,
davidjhoward 149:950c90425f7c 117 REG_TYPE_OUTPUT,
davidjhoward 149:950c90425f7c 118 REG_TYPE_VINPUT,
davidjhoward 149:950c90425f7c 119 REG_TYPE_VOUTPUT,
davidjhoward 149:950c90425f7c 120 } RegisterType_t;
davidjhoward 149:950c90425f7c 121
davidjhoward 9:ef0ca2f8a8a6 122 struct ModbusRegister {
davidjhoward 9:ef0ca2f8a8a6 123 std::string name;
davidjhoward 9:ef0ca2f8a8a6 124 std::string units;
davidjhoward 9:ef0ca2f8a8a6 125 double min;
davidjhoward 9:ef0ca2f8a8a6 126 double max;
davidjhoward 9:ef0ca2f8a8a6 127 int node;
davidjhoward 9:ef0ca2f8a8a6 128 int reg;
davidjhoward 9:ef0ca2f8a8a6 129 int rtype;
davidjhoward 9:ef0ca2f8a8a6 130 int type;
davidjhoward 15:a6ee32969e8e 131 int size;
davidjhoward 15:a6ee32969e8e 132 int order;
davidjhoward 49:0456ee2271be 133 int rfreq;
davidjhoward 149:950c90425f7c 134 RegisterType_t regType;
davidjhoward 149:950c90425f7c 135 std::string vcmd;
davidjhoward 9:ef0ca2f8a8a6 136 std::string fmt;
davidjhoward 15:a6ee32969e8e 137 float float_value;
davidjhoward 15:a6ee32969e8e 138 uint32_t uint32_value;
davidjhoward 15:a6ee32969e8e 139 uint16_t uint16_value;
davidjhoward 190:af7ab603c9fe 140 uint32_t errflag;
davidjhoward 82:f3e495a98877 141 bool simulated;
davidjhoward 82:f3e495a98877 142 };
davidjhoward 82:f3e495a98877 143
davidjhoward 149:950c90425f7c 144 struct VirtualCommand {
davidjhoward 214:52ef35bc44ec 145 float c;
davidjhoward 214:52ef35bc44ec 146 std::string tag;
davidjhoward 149:950c90425f7c 147 std::string opl;
davidjhoward 149:950c90425f7c 148 std::string opr;
davidjhoward 149:950c90425f7c 149 std::string op;
davidjhoward 149:950c90425f7c 150 };
davidjhoward 149:950c90425f7c 151
davidjhoward 82:f3e495a98877 152 struct SimulateInput {
davidjhoward 82:f3e495a98877 153 float start_value;
davidjhoward 82:f3e495a98877 154 float min;
davidjhoward 82:f3e495a98877 155 float max;
davidjhoward 150:4db35c8234b4 156 float up_step;
davidjhoward 150:4db35c8234b4 157 float down_step;
davidjhoward 179:a31ea334e2b7 158 bool moving_up;
davidjhoward 9:ef0ca2f8a8a6 159 };
davidjhoward 9:ef0ca2f8a8a6 160
davidjhoward 15:a6ee32969e8e 161 typedef enum byte_order {
davidjhoward 15:a6ee32969e8e 162 BigEndian = 0,
davidjhoward 15:a6ee32969e8e 163 LittleEndian = 1,
davidjhoward 15:a6ee32969e8e 164 BigEndianReverseWord = 2,
davidjhoward 15:a6ee32969e8e 165 LittleEndianReversWord = 3,
davidjhoward 15:a6ee32969e8e 166 } Byte_Order;
davidjhoward 9:ef0ca2f8a8a6 167
davidjhoward 104:ddf0a8bdaad7 168 typedef enum event_reason_tag {
davidjhoward 104:ddf0a8bdaad7 169 EVENT_REASON_AUTO,
davidjhoward 104:ddf0a8bdaad7 170 EVENT_REASON_MANUAL,
jmarkel44 133:c871de2d2b90 171 EVENT_REASON_TIMER,
davidjhoward 104:ddf0a8bdaad7 172 EVENT_REASON_FLOW,
davidjhoward 104:ddf0a8bdaad7 173 EVENT_REASON_FAILSAFE,
jmarkel44 128:534bf29132f8 174 EVENT_REASON_NO_CONTROL
davidjhoward 104:ddf0a8bdaad7 175 } EventReason_t;
davidjhoward 104:ddf0a8bdaad7 176
davidjhoward 104:ddf0a8bdaad7 177 typedef struct event_reason_struct_t {
davidjhoward 104:ddf0a8bdaad7 178 EventReason_t eventReason;
davidjhoward 104:ddf0a8bdaad7 179 char inputTag[32];
davidjhoward 106:c0ddba334e93 180 char outputTag[32];
davidjhoward 104:ddf0a8bdaad7 181 float inputValue;
davidjhoward 149:950c90425f7c 182 float outputValue;
davidjhoward 104:ddf0a8bdaad7 183 } EventReasonStruct_t;
davidjhoward 104:ddf0a8bdaad7 184
davidjhoward 15:a6ee32969e8e 185 extern std::map<std::string,ModbusRegister> ModbusRegisterMap;
davidjhoward 82:f3e495a98877 186 extern std::map<std::string,SimulateInput> SimulateInputMap;
davidjhoward 15:a6ee32969e8e 187
davidjhoward 58:a4422d19b2ea 188 extern I2C* i2c;
davidjhoward 58:a4422d19b2ea 189
jmarkel44 34:f345fdec711d 190 extern Thread *GLOBAL_analyticsLogger_thread;
jmarkel44 34:f345fdec711d 191 extern Thread *GLOBAL_modbusMaster_thread;
jmarkel44 34:f345fdec711d 192 extern Thread *GLOBAL_BLE_thread;
jmarkel44 34:f345fdec711d 193 extern Thread *GLOBAL_CDH_thread;
jmarkel44 34:f345fdec711d 194 extern Thread *GLOBAL_configHandler_thread;
jmarkel44 34:f345fdec711d 195 extern Thread *GLOBAL_controlTask_thread;
jmarkel44 48:1c7861d80d16 196 extern Thread *GLOBAL_outputTask_thread;
jmarkel44 34:f345fdec711d 197
jmarkel44 185:5ac6ab1ed875 198 #define RELAY_STATUS_AUTO_ON 129
jmarkel44 185:5ac6ab1ed875 199 #define RELAY_STATUS_AUTO_OFF 128
jmarkel44 185:5ac6ab1ed875 200 #define RELAY_STATUS_MANUAL_ON 65
jmarkel44 185:5ac6ab1ed875 201 #define RELAY_STATUS_MANUAL_OFF 64
jmarkel44 185:5ac6ab1ed875 202 #define RELAY_STATUS_FAILSAFE_ON 33
jmarkel44 185:5ac6ab1ed875 203 #define RELAY_STATUS_FAILSAFE_OFF 32
jmarkel44 185:5ac6ab1ed875 204 #define RELAY_STATUS_FORCED_OFF 16
jmarkel44 185:5ac6ab1ed875 205 #define RELAY_STATUS_FLOW_FAILSAFE_ON 9
jmarkel44 185:5ac6ab1ed875 206 #define RELAY_STATUS_FLOW_FAILSAFE_OFF 8
jmarkel44 185:5ac6ab1ed875 207 #define RELAY_STATUS_NOT_CONTROLLED 0
jmarkel44 185:5ac6ab1ed875 208
davidjhoward 190:af7ab603c9fe 209 // ---------------------------------------------------------------------------------------------------------------------
davidjhoward 190:af7ab603c9fe 210 // pinout
davidjhoward 190:af7ab603c9fe 211
davidjhoward 190:af7ab603c9fe 212 #define XBEE_P01 VIN // pin 01
davidjhoward 190:af7ab603c9fe 213 #define MOD_TX PA_2 // pin 02
davidjhoward 190:af7ab603c9fe 214 #define MOD_RX PA_3 // pin 03
davidjhoward 190:af7ab603c9fe 215 #define SPI_MISO PA_6 // pin 04
davidjhoward 190:af7ab603c9fe 216 #define XBEE_P05 NRST // pin 05
davidjhoward 190:af7ab603c9fe 217 #define I2C_SCL PA_8 // pin 06
davidjhoward 190:af7ab603c9fe 218 #define I2C_SDA PC_9 // pin 07
davidjhoward 190:af7ab603c9fe 219 #define XBEE_P08 NC // pin 08
davidjhoward 190:af7ab603c9fe 220 #define DMOD PA_11 // pin 09
davidjhoward 190:af7ab603c9fe 221 #define XBEE_P10 GND // pin 10
davidjhoward 190:af7ab603c9fe 222
davidjhoward 190:af7ab603c9fe 223 #define MOD_RE PB_1 // pin 20
davidjhoward 190:af7ab603c9fe 224 #define MOD_DE PB_0 // pin 19
davidjhoward 190:af7ab603c9fe 225 #define SPI_SCK PA_5 // pin 18
davidjhoward 190:af7ab603c9fe 226 #define SPI_CS PA_4 // pin 17
davidjhoward 190:af7ab603c9fe 227 #define DOUT2 PA_1 // pin 16
davidjhoward 190:af7ab603c9fe 228 #define DOUT1 PC_1 // pin 15
davidjhoward 190:af7ab603c9fe 229 #define XBEE_P14 NC // pin 14
davidjhoward 190:af7ab603c9fe 230 #define DINP2 PC_13 // pin 13
davidjhoward 190:af7ab603c9fe 231 #define DINP1 PA_0 // pin 12
davidjhoward 190:af7ab603c9fe 232 #define SPI_MOSI PA_7 // pin 11
davidjhoward 190:af7ab603c9fe 233
davidjhoward 190:af7ab603c9fe 234 #define XBEE_P21 VOUT
davidjhoward 190:af7ab603c9fe 235 #define XBEE_P22 GND
davidjhoward 190:af7ab603c9fe 236 #define XBEE_P23 PA_14
davidjhoward 190:af7ab603c9fe 237 #define XBEE_P24 PA_13
davidjhoward 190:af7ab603c9fe 238 #define XBEE_P25 PB_4
davidjhoward 190:af7ab603c9fe 239 #define XBEE_P26 PB_3
davidjhoward 190:af7ab603c9fe 240 #define CON_RX PA_10
davidjhoward 190:af7ab603c9fe 241 #define CON_TX PA_9
davidjhoward 190:af7ab603c9fe 242
davidjhoward 190:af7ab603c9fe 243 // ---------------------------------------------------------------------------------------------------------------------
davidjhoward 190:af7ab603c9fe 244 // globals
davidjhoward 190:af7ab603c9fe 245
davidjhoward 190:af7ab603c9fe 246 #define CON_BAUD 115200
davidjhoward 190:af7ab603c9fe 247 #define MOD_BAUD 19200
davidjhoward 190:af7ab603c9fe 248
davidjhoward 190:af7ab603c9fe 249 extern I2C* i2c;
davidjhoward 190:af7ab603c9fe 250
davidjhoward 190:af7ab603c9fe 251 // -------------------------------------------------------------------------------------------------
davidjhoward 190:af7ab603c9fe 252 // typedefs
davidjhoward 190:af7ab603c9fe 253
davidjhoward 190:af7ab603c9fe 254 typedef struct word2byte { union
davidjhoward 190:af7ab603c9fe 255 {
davidjhoward 190:af7ab603c9fe 256 unsigned short int value;
davidjhoward 190:af7ab603c9fe 257 struct { unsigned char byte0; unsigned char byte1; };
davidjhoward 190:af7ab603c9fe 258 };}
davidjhoward 190:af7ab603c9fe 259 WORD2BYTE;
davidjhoward 190:af7ab603c9fe 260
davidjhoward 190:af7ab603c9fe 261 typedef struct sint2byte { union
davidjhoward 190:af7ab603c9fe 262 {
davidjhoward 190:af7ab603c9fe 263 signed long int value;
davidjhoward 190:af7ab603c9fe 264 struct { unsigned short int word0; unsigned short int word1; };
davidjhoward 190:af7ab603c9fe 265 struct { unsigned char byte0; unsigned char byte1; unsigned char byte2; unsigned char byte3; };
davidjhoward 190:af7ab603c9fe 266 };}
davidjhoward 190:af7ab603c9fe 267 SINT2BYTE;
davidjhoward 190:af7ab603c9fe 268
davidjhoward 190:af7ab603c9fe 269 typedef struct uint2byte { union
davidjhoward 190:af7ab603c9fe 270 {
davidjhoward 190:af7ab603c9fe 271 unsigned long int value;
davidjhoward 190:af7ab603c9fe 272 struct { unsigned short int word0; unsigned short int word1; };
davidjhoward 190:af7ab603c9fe 273 struct { unsigned char byte0; unsigned char byte1; unsigned char byte2; unsigned char byte3; };
davidjhoward 190:af7ab603c9fe 274 };}
davidjhoward 190:af7ab603c9fe 275 UINT2BYTE;
davidjhoward 190:af7ab603c9fe 276
davidjhoward 190:af7ab603c9fe 277 typedef struct float2byte { union
davidjhoward 190:af7ab603c9fe 278 {
davidjhoward 190:af7ab603c9fe 279 float value;
davidjhoward 190:af7ab603c9fe 280 struct { unsigned short int word0; unsigned short int word1; };
davidjhoward 190:af7ab603c9fe 281 struct { unsigned char byte0; unsigned char byte1; unsigned char byte2; unsigned char byte3; };
davidjhoward 190:af7ab603c9fe 282 };}
davidjhoward 190:af7ab603c9fe 283 FLOAT2BYTE;
davidjhoward 190:af7ab603c9fe 284
davidjhoward 190:af7ab603c9fe 285 typedef struct float2uint { union
davidjhoward 190:af7ab603c9fe 286 {
davidjhoward 190:af7ab603c9fe 287 float value;
davidjhoward 190:af7ab603c9fe 288 unsigned long int uint_value;
davidjhoward 190:af7ab603c9fe 289 };}
davidjhoward 190:af7ab603c9fe 290 FLOAT2UINT;
davidjhoward 190:af7ab603c9fe 291 // -------------------------------------------------------------------------------------------------
davidjhoward 190:af7ab603c9fe 292
davidjhoward 15:a6ee32969e8e 293 #endif