Erick / Mbed 2 deprecated ICE_BLE_TEST

Dependencies:   NaturalTinyShell_ice libmDot-12Sept mbed-rtos mbed

Fork of ICE by Erick

Committer:
davidjhoward
Date:
Tue Oct 04 16:08:49 2016 +0000
Revision:
180:b548e289b648
Parent:
177:9ec90c8e3ce1
Parent:
179:a31ea334e2b7
Child:
185:5ac6ab1ed875
merge of simulation fixes

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 74:03ccf04998b5 19
jmarkel44 177:9ec90c8e3ce1 20 #define MAX_FILE_SIZE 350
jmarkel44 177:9ec90c8e3ce1 21
jmarkel44 75:96512ccc0443 22 extern int sig_output_continue;
jmarkel44 75:96512ccc0443 23 extern int sig_config_continue;
jmarkel44 75:96512ccc0443 24
jmarkel44 3:8ea4db957749 25 extern osThreadId mainThreadId;
jmarkel44 0:65cfa4873284 26
jmarkel44 0:65cfa4873284 27 typedef enum action_tag {
jmarkel44 0:65cfa4873284 28 ACTION_CREATE,
jmarkel44 0:65cfa4873284 29 ACTION_MODIFY,
davidjhoward 31:4b1587034318 30 ACTION_DESTROY,
davidjhoward 31:4b1587034318 31 ACTION_READ_FILE,
jmarkel44 0:65cfa4873284 32 } Action_t;
jmarkel44 0:65cfa4873284 33
jmarkel44 0:65cfa4873284 34 typedef enum control_tag {
jmarkel44 0:65cfa4873284 35 CONTROL_TIMER = 0,
jmarkel44 0:65cfa4873284 36 CONTROL_PID = 1,
jmarkel44 0:65cfa4873284 37 CONTROL_SETPOINT = 2,
jmarkel44 0:65cfa4873284 38 CONTROL_COMPOSITE = 3,
jmarkel44 0:65cfa4873284 39 CONTROL_MANUAL = 4
jmarkel44 0:65cfa4873284 40 } Control_t;
jmarkel44 0:65cfa4873284 41
jmarkel44 0:65cfa4873284 42
jmarkel44 0:65cfa4873284 43 // message data type
jmarkel44 0:65cfa4873284 44 typedef struct message_tag {
jmarkel44 0:65cfa4873284 45 Action_t action;
jmarkel44 0:65cfa4873284 46 Control_t control;
davidjhoward 31:4b1587034318 47 char controlFile[64];
jmarkel44 0:65cfa4873284 48 } Message_t;
jmarkel44 0:65cfa4873284 49
davidjhoward 149:950c90425f7c 50 typedef enum {
davidjhoward 149:950c90425f7c 51 OFF = 0,
davidjhoward 149:950c90425f7c 52 ON = 1
davidjhoward 149:950c90425f7c 53 } State;
jmarkel44 56:225786c56315 54
jmarkel44 63:0ded43237b22 55 typedef enum output_action {
jmarkel44 63:0ded43237b22 56 ACTION_NEW,
jmarkel44 71:34856d21f2bf 57 ACTION_CONTROL_ON,
jmarkel44 71:34856d21f2bf 58 ACTION_CONTROL_OFF,
jmarkel44 71:34856d21f2bf 59 ACTION_CONTROL_REGISTER,
jmarkel44 71:34856d21f2bf 60 ACTION_CONTROL_UNREGISTER
jmarkel44 63:0ded43237b22 61 } OutputAction;
jmarkel44 63:0ded43237b22 62
davidjhoward 149:950c90425f7c 63 // output control request message
jmarkel44 51:66b820f203a5 64 typedef struct output_control_req_t {
jmarkel44 63:0ded43237b22 65 OutputAction action;
jmarkel44 115:1558e01d04c6 66 Control_t controlType;
jmarkel44 71:34856d21f2bf 67 char controlFile[32];
jmarkel44 115:1558e01d04c6 68 char input_tag[32];
jmarkel44 115:1558e01d04c6 69 char output_tag[32];
jmarkel44 71:34856d21f2bf 70 char id[32];
jmarkel44 51:66b820f203a5 71 unsigned int priority;
jmarkel44 63:0ded43237b22 72 } OutputControlMsg_t;
jmarkel44 51:66b820f203a5 73
davidjhoward 149:950c90425f7c 74 // analytics logger request message
davidjhoward 58:a4422d19b2ea 75 typedef struct analytics_logger_req_t {
davidjhoward 58:a4422d19b2ea 76 char timestamp[32];
davidjhoward 58:a4422d19b2ea 77 char log_entry[96];
davidjhoward 58:a4422d19b2ea 78 } AnalyticsLoggerReq_t;
davidjhoward 58:a4422d19b2ea 79
jmarkel44 0:65cfa4873284 80 extern Mail<Message_t, 16> MailBox;
davidjhoward 31:4b1587034318 81 extern Mail<Message_t, 16> ModbusMasterMailBox;
jmarkel44 63:0ded43237b22 82 extern Mail<OutputControlMsg_t, 16> OutputMasterMailBox;
davidjhoward 58:a4422d19b2ea 83 extern Mail<AnalyticsLoggerReq_t, 16> AnalyticsLoggerMailBox;
jmarkel44 0:65cfa4873284 84
jmarkel44 0:65cfa4873284 85 extern ntshell_t ntshell;
jmarkel44 0:65cfa4873284 86
jmarkel44 0:65cfa4873284 87 extern int func_read(char *buf, int cnt);
jmarkel44 0:65cfa4873284 88 extern int func_write(const char *buf, int cnt);
jmarkel44 0:65cfa4873284 89 extern int func_cb_ntshell(const char *text);
jmarkel44 0:65cfa4873284 90 extern void func_cb_ntopt(int argc, char **argv);
davidjhoward 7:c0c03193612d 91 extern mDot *GLOBAL_mdot;
jmarkel44 0:65cfa4873284 92
davidjhoward 149:950c90425f7c 93 typedef enum register_type_tag {
davidjhoward 149:950c90425f7c 94 REG_TYPE_NONE,
davidjhoward 149:950c90425f7c 95 REG_TYPE_INPUT,
davidjhoward 149:950c90425f7c 96 REG_TYPE_OUTPUT,
davidjhoward 149:950c90425f7c 97 REG_TYPE_VINPUT,
davidjhoward 149:950c90425f7c 98 REG_TYPE_VOUTPUT,
davidjhoward 149:950c90425f7c 99 } RegisterType_t;
davidjhoward 149:950c90425f7c 100
davidjhoward 9:ef0ca2f8a8a6 101 struct ModbusRegister {
davidjhoward 9:ef0ca2f8a8a6 102 std::string name;
davidjhoward 9:ef0ca2f8a8a6 103 std::string units;
davidjhoward 9:ef0ca2f8a8a6 104 double min;
davidjhoward 9:ef0ca2f8a8a6 105 double max;
davidjhoward 9:ef0ca2f8a8a6 106 int node;
davidjhoward 9:ef0ca2f8a8a6 107 int reg;
davidjhoward 9:ef0ca2f8a8a6 108 int rtype;
davidjhoward 9:ef0ca2f8a8a6 109 int type;
davidjhoward 15:a6ee32969e8e 110 int size;
davidjhoward 15:a6ee32969e8e 111 int order;
davidjhoward 49:0456ee2271be 112 int rfreq;
davidjhoward 149:950c90425f7c 113 RegisterType_t regType;
davidjhoward 149:950c90425f7c 114 std::string vcmd;
davidjhoward 9:ef0ca2f8a8a6 115 std::string fmt;
davidjhoward 15:a6ee32969e8e 116 float float_value;
davidjhoward 15:a6ee32969e8e 117 uint32_t uint32_value;
davidjhoward 15:a6ee32969e8e 118 uint16_t uint16_value;
davidjhoward 148:ee3cbaafe355 119 bool valid;
davidjhoward 82:f3e495a98877 120 bool simulated;
davidjhoward 82:f3e495a98877 121 };
davidjhoward 82:f3e495a98877 122
davidjhoward 149:950c90425f7c 123 struct VirtualCommand {
davidjhoward 149:950c90425f7c 124 float constant;
davidjhoward 149:950c90425f7c 125 std::string opl;
davidjhoward 149:950c90425f7c 126 std::string opr;
davidjhoward 149:950c90425f7c 127 std::string op;
davidjhoward 149:950c90425f7c 128 };
davidjhoward 149:950c90425f7c 129
davidjhoward 82:f3e495a98877 130 struct SimulateInput {
davidjhoward 82:f3e495a98877 131 float start_value;
davidjhoward 82:f3e495a98877 132 float min;
davidjhoward 82:f3e495a98877 133 float max;
davidjhoward 150:4db35c8234b4 134 float up_step;
davidjhoward 150:4db35c8234b4 135 float down_step;
davidjhoward 179:a31ea334e2b7 136 bool moving_up;
davidjhoward 9:ef0ca2f8a8a6 137 };
davidjhoward 9:ef0ca2f8a8a6 138
davidjhoward 15:a6ee32969e8e 139 typedef enum byte_order {
davidjhoward 15:a6ee32969e8e 140 BigEndian = 0,
davidjhoward 15:a6ee32969e8e 141 LittleEndian = 1,
davidjhoward 15:a6ee32969e8e 142 BigEndianReverseWord = 2,
davidjhoward 15:a6ee32969e8e 143 LittleEndianReversWord = 3,
davidjhoward 15:a6ee32969e8e 144 } Byte_Order;
davidjhoward 9:ef0ca2f8a8a6 145
davidjhoward 104:ddf0a8bdaad7 146 typedef enum event_reason_tag {
davidjhoward 104:ddf0a8bdaad7 147 EVENT_REASON_AUTO,
davidjhoward 104:ddf0a8bdaad7 148 EVENT_REASON_MANUAL,
jmarkel44 133:c871de2d2b90 149 EVENT_REASON_TIMER,
davidjhoward 104:ddf0a8bdaad7 150 EVENT_REASON_FLOW,
davidjhoward 104:ddf0a8bdaad7 151 EVENT_REASON_FAILSAFE,
jmarkel44 128:534bf29132f8 152 EVENT_REASON_NO_CONTROL
davidjhoward 104:ddf0a8bdaad7 153 } EventReason_t;
davidjhoward 104:ddf0a8bdaad7 154
davidjhoward 104:ddf0a8bdaad7 155 typedef struct event_reason_struct_t {
davidjhoward 104:ddf0a8bdaad7 156 EventReason_t eventReason;
davidjhoward 104:ddf0a8bdaad7 157 char inputTag[32];
davidjhoward 106:c0ddba334e93 158 char outputTag[32];
davidjhoward 104:ddf0a8bdaad7 159 float inputValue;
davidjhoward 149:950c90425f7c 160 float outputValue;
davidjhoward 104:ddf0a8bdaad7 161 } EventReasonStruct_t;
davidjhoward 104:ddf0a8bdaad7 162
davidjhoward 15:a6ee32969e8e 163 extern std::map<std::string,ModbusRegister> ModbusRegisterMap;
davidjhoward 82:f3e495a98877 164 extern std::map<std::string,SimulateInput> SimulateInputMap;
davidjhoward 15:a6ee32969e8e 165
davidjhoward 58:a4422d19b2ea 166 extern I2C* i2c;
davidjhoward 58:a4422d19b2ea 167
jmarkel44 34:f345fdec711d 168 extern Thread *GLOBAL_analyticsLogger_thread;
jmarkel44 34:f345fdec711d 169 extern Thread *GLOBAL_modbusMaster_thread;
jmarkel44 34:f345fdec711d 170 extern Thread *GLOBAL_BLE_thread;
jmarkel44 34:f345fdec711d 171 extern Thread *GLOBAL_CDH_thread;
jmarkel44 34:f345fdec711d 172 extern Thread *GLOBAL_configHandler_thread;
jmarkel44 34:f345fdec711d 173 extern Thread *GLOBAL_controlTask_thread;
jmarkel44 48:1c7861d80d16 174 extern Thread *GLOBAL_outputTask_thread;
jmarkel44 34:f345fdec711d 175
davidjhoward 15:a6ee32969e8e 176 #endif