|
66 | 66 | */ |
67 | 67 | #define LADDER_VERTICAL_BAR(lctx, n, r, c) ((*lctx).network[n].cells[r][c].vertical_bar) |
68 | 68 |
|
69 | | -/** |
70 | | - * @def ladder_cell_data |
71 | | - * @brief |
72 | | - * |
73 | | - */ |
74 | | -#define ladder_cell_data(lctx, n, r, c, i, typ, val) \ |
75 | | - (*lctx).network[n].cells[r][c].data[i].type = typ; \ |
76 | | - switch (typ) { \ |
77 | | - case LADDER_TYPE_NONE: { \ |
78 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
79 | | - } break; \ |
80 | | - case LADDER_TYPE_M: { \ |
81 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
82 | | - } break; \ |
83 | | - case LADDER_TYPE_Q: { \ |
84 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
85 | | - } break; \ |
86 | | - case LADDER_TYPE_I: { \ |
87 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
88 | | - } break; \ |
89 | | - case LADDER_TYPE_Cd: { \ |
90 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
91 | | - } break; \ |
92 | | - case LADDER_TYPE_Cr: { \ |
93 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
94 | | - } break; \ |
95 | | - case LADDER_TYPE_Td: { \ |
96 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
97 | | - } break; \ |
98 | | - case LADDER_TYPE_Tr: { \ |
99 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
100 | | - } break; \ |
101 | | - case LADDER_TYPE_IW: { \ |
102 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
103 | | - } break; \ |
104 | | - case LADDER_TYPE_QW: { \ |
105 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
106 | | - } break; \ |
107 | | - case LADDER_TYPE_C: { \ |
108 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
109 | | - } break; \ |
110 | | - case LADDER_TYPE_T: { \ |
111 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
112 | | - } break; \ |
113 | | - case LADDER_TYPE_D: { \ |
114 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
115 | | - } break; \ |
116 | | - case LADDER_TYPE_REAL: { \ |
117 | | - (*lctx).network[n].cells[r][c].data[i].value.real = (float)val; \ |
118 | | - } break; \ |
119 | | - default: { \ |
120 | | - (*lctx).network[n].cells[r][c].data[i].value.i32 = (int32_t)val; \ |
121 | | - } break; \ |
122 | | - } |
123 | | - |
124 | | -/** |
125 | | - * @def ladder_cell_data_cstr |
126 | | - * @brief |
127 | | - * |
128 | | - */ |
129 | | -#define ladder_cell_data_cstr(lctx, n, r, c, i, val) \ |
130 | | - (*lctx).network[n].cells[r][c].data[i].type = LADDER_TYPE_CSTR; \ |
131 | | - (*lctx).network[n].cells[r][c].data[i].value.cstr = val |
132 | | - |
133 | 69 | /** |
134 | 70 | * @enum LADDER_INSTRUCTIONS |
135 | 71 | * @brief Ladder Instructions codes |
@@ -215,6 +151,7 @@ typedef enum LADDER_INS_ERROR { |
215 | 151 | * |
216 | 152 | */ |
217 | 153 | typedef enum LADDER_DATA_TYPE { |
| 154 | + LADDER_DATATYPE_BOOL, /**< Boolean */ |
218 | 155 | LADDER_DATATYPE_U8, /**< Unsigned 8 bits */ |
219 | 156 | LADDER_DATATYPE_U16, /**< Unsigned 16 bits */ |
220 | 157 | LADDER_DATATYPE_U32, /**< Unsigned 32 bits */ |
@@ -296,6 +233,7 @@ typedef struct moduleportvalue_s { |
296 | 233 | typedef struct ladder_value_s { |
297 | 234 | ladder_register_t type; /**< Data type */ |
298 | 235 | union { |
| 236 | + bool b; /**< Boolean */ |
299 | 237 | uint8_t u8; /**< Unsigned integer 8 bits */ |
300 | 238 | uint16_t u16; /**< Unsigned integer 16 bits */ |
301 | 239 | uint32_t u32; /**< Unsigned integer 32 bits */ |
|
0 commit comments