versadac  1
versadac - Scalable Recorder Firmware
exec.h
1 #ifndef EXEC_H
2 #define EXEC_H
3 /*****************************************************************************
4 * Copyright (c) 2001 Eurotherm Controls Ltd.
5 *
6 * FILENAME : exec.h
7 * AUTHORS : Ported by Steve Robinson
8 * CREATED : Feb 2009
9 * DESCRIPTION : Execution engine external header file
10 * DESIGN SPEC : Ported from 3500
11 *****************************************************************************/
12 
13 #include "stdtypes.h"
14 #include "template.h"
15 
16 
17 extern void exe_init_exec ();
18 extern void exe_run_fblocks ();
19 extern uint8 exe_modify_wire (CISP_t z_src, CISP_t z_dest); /* Cached until end of exec */
20 extern void exe_cold_start_wiring ();
21 extern CISP_t exe_get_source (CISP_t z_dest);
22 extern CISP_t exe_get_destination (CISP_t z_src, uint8 start);
23 extern bool is_source(CISP_t z_cisp);
24 
25 extern void * exe_get_nv_data (CI_t z_instance);
26 extern void * exe_get_RAM_data (CI_t z_instance);
27 extern void exe_cold_start ();
28 extern bool exe_wires_used_up();
29 extern float32 exe_get_sample_period(void);
30 extern int32 exe_get_ticks_since_last_exec(void);
31 extern uint8 GetMaxInstances (uint8 z_class);
32 
33 extern void exit_from_configuration(bool hmi, bool standby);
34 extern void hmi_logged_out_actions(void);
35 
36 extern void cisp_to_text (CISP_t param_cisp, unicode_p ptr);
37 
38 
39 #define EXE_DELETE_WIRING 0
40 #define EXE_ADD_WIRING 1
41 
42 #define DELETE_LOGIC_INPUT_WIRE 0
43 #define ADD_NEXT_LOGIC_INPUT_WIRE 1
44 #define ADD_LOGIC_BLOCK 2
45 #define DELETE_ADD_LOGIC_WIRE 3
46 #define DELETE_LOGIC_INPUT_DST_WIRE 4
47 
48 #define EXEC_RELEASE_TAKE 1
49 
50 #define EXE_ERROR_OK 0
51 #define EXE_ERROR_DEST_NOT_FOUND 1
52 #define EXE_ERROR_SRC_NOT_FOUND 2
53 #define EXE_ERROR_WIRING_FULL 3
54 #define EXE_ERROR_NOT_FOUND 4
55 #define EXE_ERROR_PARAM_DOES_NOT_EXIST 5
56 #define EXE_ERROR_WIRES_NOT_SORTED 6
57 #define EXE_ERROR_MISSING_SOURCE 7
58 #define EXE_ERROR_CACHE_FULL 8
59 #define EXE_ERROR_FATAL_BUG 9
60 #define EXE_ERROR_WIRE_NOT_PERMITTED 10
61 #define EXE_ERROR_LOGIC_BLOCK_FULL 11
62 #define EXE_ERROR_NO_LOGIC_BLOCKS_AVAIL 12
63 #define EXE_ERROR_PARTIAL_MODIFICATION 13
64 #define EXE_ERROR_NON_BOOLEAN_DST_ALREADY_WIRED 14
65 #define EXE_ERROR_MISSING_DEST 15
66 #define EXE_ERROR_DEST_ALREADY_WIRED 16
67 
68 #define MASTER_SLAVE_ENABLE 1
69 #define MASTER_SLAVE_DISABLE 2
70 
71 /* Defines for types in wiring */
72 #define N0_SPARE_WIRES 255
73 #define BOTH_TYPES_F32_S (F32_STATUS_T + (F32_STATUS_T << 4))
74 #define BOTH_TYPES_I16 (INT16_T + (INT16_T << 4))
75 #define BOTH_TYPES_U8 (UINT8_T + (UINT8_T << 4))
76 #define BOTH_TYPES_BOOL_OR_EDGE_TO_BOOL (BOOL_T + (BOOL_T << 4))
77 #define BOTH_TYPES_EDGE (EDGE_T + (EDGE_T << 4))
78 #define BOTH_TYPES_F32 (FLOAT32_T + (FLOAT32_T << 4))
79 #define BOTH_TYPES_TIME (TIME_T + (TIME_T << 4))
80 #define BOTH_TYPES_I32 (INT32_T + (INT32_T << 4))
81 #define EDGE_TO_BOOL (EDGE_T + (BOOL_T << 4))
82 #define F32S_TO_F32 (F32_STATUS_T + (FLOAT32_T << 4))
83 #define F32_TO_F32S (FLOAT32_T + (F32_STATUS_T << 4))
84 #define F32S_TO_EDGE (F32_STATUS_T + (EDGE_T << 4))
85 #define BOOL_TO_EDGE (BOOL_T + (EDGE_T << 4))
86 #define BOOL_OR_EDGE_TO_EDGE (BOOL_T + (EDGE_T << 4))
87 #define F32S_TO_BOOL (F32_STATUS_T + (BOOL_T << 4))
88 #define F32S_TO_UINT8 (F32_STATUS_T + (UINT8_T << 4))
89 #define F32S_TO_TIME (F32_STATUS_T + (TIME_T << 4))
90 #define F32S_TO_INT16 (F32_STATUS_T + (INT16_T << 4))
91 #define F32S_TO_INT32 (F32_STATUS_T + (INT32_T << 4))
92 #define TIME_TO_F32S (TIME_T + (F32_STATUS_T << 4))
93 #define INT16_TO_F32S (INT16_T + (F32_STATUS_T << 4))
94 #define INT32_TO_F32S (INT32_T + (F32_STATUS_T << 4))
95 #define UINT8_TO_F32S (UINT8_T + (F32_STATUS_T << 4))
96 #define EDGE_TO_F32S (EDGE_T + (F32_STATUS_T << 4))
97 #define BOOL_TO_F32S (BOOL_T + (F32_STATUS_T << 4))
98 #define EDGE_OR_BOOL_TO_F32S (BOOL_T + (F32_STATUS_T << 4))
99 #define UINT8_TO_BOOL (UINT8_T + (BOOL_T << 4))
100 #define UINT8_TO_EDGE (UINT8_T + (EDGE_T << 4))
101 #define EDGE_OR_BOOL_TO_UINT8 (EDGE_T + (UINT8_T << 4))
102 #define BOOL_TO_UINT8 (BOOL_T + (UINT8_T << 4))
103 #define F32_TO_EDGE (FLOAT32_T + (EDGE_T << 4))
104 #define F32_TO_BOOL (FLOAT32_T + (BOOL_T << 4))
105 #define F32_TO_UINT8 (FLOAT32_T + (UINT8_T << 4))
106 #define BOOL_TO_F32 (BOOL_T + (FLOAT32_T << 4))
107 #define EDGE_TO_F32 (EDGE_T + (FLOAT32_T << 4))
108 #define UINT8_TO_F32 (UINT8_T + (FLOAT32_T << 4))
109 #define INT32_TO_EDGE (INT32_T + (EDGE_T << 4))
110 #define INT16_TO_EDGE (INT16_T + (EDGE_T << 4))
111 #define INT16_TO_BOOL (INT16_T + (BOOL_T << 4))
112 #define INT32_TO_BOOL (INT32_T + (BOOL_T << 4))
113 #define INT16_TO_UINT8 (INT16_T + (UINT8_T << 4))
114 #define INT32_TO_UINT8 (INT32_T + (UINT8_T << 4))
115 #define INT16_TO_INT32 (INT16_T + (INT32_T << 4))
116 #define INT32_TO_INT16 (INT32_T + (INT16_T << 4))
117 #define UINT8_TO_INT16 (UINT8_T + (INT16_T << 4))
118 #define EDGE_TO_INT16 (EDGE_T + (INT16_T << 4))
119 #define BOOL_TO_INT16 (BOOL_T + (INT16_T << 4))
120 #define EDGE_TO_INT32 (EDGE_T + (INT32_T << 4))
121 #define BOOL_TO_INT32 (BOOL_T + (INT32_T << 4))
122 #define UINT8_TO_INT32 (UINT8_T + (INT32_T << 4))
123 #define F32_TO_INT32 (FLOAT32_T + (INT32_T << 4))
124 #define INT16_TO_F32 (INT16_T + (FLOAT32_T << 4))
125 #define INT32_TO_F32 (INT32_T + (FLOAT32_T << 4))
126 #define F32_TO_INT16 (FLOAT32_T + (INT16_T << 4))
127 #define F32_TO_TIME (FLOAT32_T + (TIME_T << 4))
128 #define TIME_TO_F32 (TIME_T + (FLOAT32_T << 4))
129 
130 //conversion defines
131 #define MAX_TIME_AS_FLOAT (4294967.295F)
132 #define MAX_INT16_AS_FLOAT (32767.0F)
133 #define MIN_INT16_AS_FLOAT (-32768.0F)
134 #define MAX_I32_AS_FLOAT (2147483520.0F)
135 #define MIN_I32_AS_FLOAT (-2147483520.0F)
136 #define MAX_UINT8_AS_FLOAT (255.0F)
137 #define MIN_UINT8_AS_FLOAT (0.0F)
138 #define MAX_INT16 32767
139 #define MIN_INT16 -32768
140 
141 #endif
142 
143 /* Reply callback for DHCP replies. */
144 #define IPDHCPC_REPLY_CB_EVENT_ACK 1
145 #define IPDHCPC_REPLY_CB_EVENT_NAK 2
146 #define IPDHCPC_REPLY_CB_EVENT_EXPIRE 3
147 #define IPDHCPC_REPLY_CB_EVENT_FAIL_IFLOST 4
148 #define IPDHCPC_REPLY_CB_EVENT_BOOTREPLY 5
149 #define IPDHCPC_REPLY_CB_EVENT_OFFER 6
150 #define IPDHCPC_REPLY_CB_EVENT_FAIL_RETRY 7
151 #define IPDHCPC_REPLY_CB_EVENT_FAIL_DUPLICATE 8
152 
153 /* Reply callback return values */
154 
155 #define IPDHCPC_REPLY_CB_ERROR -1
156 #define IPDHCPC_REPLY_CB_SUCCESS 0
157