Skip to content

Commit 3dfceeb

Browse files
authored
Merge pull request #4274 from BsAtHome/halgs_mb2hal
hal: Update mb2hal to getter/setter
2 parents b4edaaa + 691993e commit 3dfceeb

4 files changed

Lines changed: 72 additions & 86 deletions

File tree

src/hal/user_comps/mb2hal/mb2hal.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -224,15 +224,15 @@ void *link_loop_and_logic(void *thrd_link_num)
224224
}
225225

226226
if (ret != retOK && modbus_get_socket(this_mb_link->modbus) < 0) { //link failure
227-
(**this_mb_tx->num_errors)++;
227+
hal_set_ui32(*this_mb_tx->num_errors, hal_get_ui32(*this_mb_tx->num_errors) + 1);
228228
ERR(this_mb_tx->cfg_debug, "mb_tx_num[%d] mb_links[%d] thread[%d] fd[%d] link failure, going to close link",
229229
this_mb_tx_num, this_mb_tx->mb_link_num, this_mb_link_num, modbus_get_socket(this_mb_link->modbus));
230230
modbus_close(this_mb_link->modbus);
231231
}
232232
else if (ret != retOK) { //transaction failure but link OK
233-
(**this_mb_tx->num_errors)++;
233+
hal_set_ui32(*this_mb_tx->num_errors, hal_get_ui32(*this_mb_tx->num_errors) + 1);
234234
ERR(this_mb_tx->cfg_debug, "mb_tx_num[%d] mb_links[%d] thread[%d] fd[%d] transaction failure, num_errors[%u]",
235-
this_mb_tx_num, this_mb_tx->mb_link_num, this_mb_link_num, modbus_get_socket(this_mb_link->modbus), **this_mb_tx->num_errors);
235+
this_mb_tx_num, this_mb_tx->mb_link_num, this_mb_link_num, modbus_get_socket(this_mb_link->modbus), hal_get_ui32(*this_mb_tx->num_errors));
236236
// Clear any unread data. Otherwise the link might get out of sync
237237
modbus_flush(this_mb_link->modbus);
238238
}
@@ -241,7 +241,7 @@ void *link_loop_and_logic(void *thrd_link_num)
241241
this_mb_tx_num, this_mb_tx->mb_link_num, this_mb_link_num, modbus_get_socket(this_mb_link->modbus),
242242
1.0/(get_time()-this_mb_tx->last_time_ok));
243243
this_mb_tx->last_time_ok = get_time();
244-
(**this_mb_tx->num_errors) = 0;
244+
hal_set_ui32(*this_mb_tx->num_errors, 0);
245245
}
246246

247247
//set the next (waiting) time for update rate
@@ -348,7 +348,7 @@ retCode get_tx_connection(const int this_mb_tx_num, int *ret_connected)
348348
ret = modbus_connect(this_mb_link->modbus);
349349
if (ret != 0 || modbus_get_socket(this_mb_link->modbus) < 0) {
350350
modbus_set_socket(this_mb_link->modbus, -1); //some times ret was < 0 and fd > 0
351-
(**this_mb_tx->num_errors)++;
351+
hal_set_ui32(*this_mb_tx->num_errors, hal_get_ui32(*this_mb_tx->num_errors) + 1);
352352
ERR(this_mb_tx->cfg_debug, "mb_tx_num[%d] mb_links[%d] cannot connect to link, ret[%d] fd[%d]",
353353
this_mb_tx_num, this_mb_tx->mb_link_num, ret, modbus_get_socket(this_mb_link->modbus));
354354
return retOK; //not connected

src/hal/user_comps/mb2hal/mb2hal.h

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,13 +102,13 @@ typedef struct {
102102
double last_time_ok; //last OK tx time
103103
//HAL related params
104104
char hal_tx_name[HAL_NAME_LEN + 1];
105-
hal_float_t **float_value;
106-
hal_s32_t **int_value;
107-
//hal_float_t *scale; //not yet implemented
108-
//hal_float_t *offset; //not yet implemented
109-
hal_bit_t **bit;
110-
hal_bit_t **bit_inv;
111-
hal_u32_t **num_errors; //num of acummulated errors (0=last tx OK)
105+
hal_real_t *float_value;
106+
hal_sint_t *int_value;
107+
//hal_real_t *scale; //not yet implemented
108+
//hal_real_t *offset; //not yet implemented
109+
hal_bool_t *bit;
110+
hal_bool_t *bit_inv;
111+
hal_uint_t *num_errors; //num of acummulated errors (0=last tx OK)
112112
} mb_tx_t;
113113

114114
//Modbus link structure (mb_link_t)

src/hal/user_comps/mb2hal/mb2hal_hal.c

Lines changed: 40 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -29,19 +29,18 @@ retCode create_each_mb_tx_hal_pins(mb_tx_t *mb_tx)
2929
}
3030

3131
//num_errors hal pin
32-
mb_tx->num_errors = hal_malloc(sizeof(hal_u32_t *));
32+
mb_tx->num_errors = hal_malloc(sizeof(*mb_tx->num_errors));
3333
if (mb_tx->num_errors == NULL) {
3434
ERR(gbl.init_dbg, "[%d] [%s] NULL hal_malloc num_errors",
3535
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name);
3636
return retERR;
3737
}
38-
memset(mb_tx->num_errors, 0, sizeof(hal_u32_t *));
38+
memset(mb_tx->num_errors, 0, sizeof(*mb_tx->num_errors));
3939
ret = snprintf(hal_pin_name, HAL_NAME_LEN, "%s.%s.num_errors", gbl.hal_mod_name, mb_tx->hal_tx_name);
40-
if (ret >= HAL_NAME_LEN || ret < 0 || 0 != hal_pin_u32_newf(HAL_OUT, mb_tx->num_errors, gbl.hal_mod_id, "%s", hal_pin_name)) {
41-
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_u32_newf failed", mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
40+
if (ret >= HAL_NAME_LEN || ret < 0 || 0 != (ret = hal_pin_new_ui32(gbl.hal_mod_id, HAL_OUT, mb_tx->num_errors, 0, "%s", hal_pin_name))) {
41+
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_new_ui32 failed (ret=%d)", mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name, ret);
4242
return retERR;
4343
}
44-
**(mb_tx->num_errors) = 0;
4544
DBG(gbl.init_dbg, "mb_tx_num [%d] pin_name [%s]", mb_tx->mb_tx_num, hal_pin_name);
4645

4746
switch (mb_tx->mb_tx_fnct) {
@@ -50,37 +49,37 @@ retCode create_each_mb_tx_hal_pins(mb_tx_t *mb_tx)
5049
case mbtx_02_READ_DISCRETE_INPUTS:
5150
case mbtx_05_WRITE_SINGLE_COIL:
5251
case mbtx_15_WRITE_MULTIPLE_COILS:
53-
mb_tx->bit = hal_malloc(sizeof(hal_bit_t *) * mb_tx->mb_tx_nelem);
54-
mb_tx->bit_inv = hal_malloc(sizeof(hal_bit_t *) * mb_tx->mb_tx_nelem);
52+
mb_tx->bit = hal_malloc(sizeof(*mb_tx->bit) * mb_tx->mb_tx_nelem);
53+
mb_tx->bit_inv = hal_malloc(sizeof(*mb_tx->bit_inv) * mb_tx->mb_tx_nelem);
5554

5655
if (mb_tx->bit == NULL || mb_tx->bit_inv == NULL) {
5756
ERR(gbl.init_dbg, "[%d] [%s] NULL hal_malloc [%d] elements",
5857
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, mb_tx->mb_tx_nelem);
5958
return retERR;
6059
}
61-
memset(mb_tx->bit, 0, sizeof(hal_bit_t *) * mb_tx->mb_tx_nelem);
62-
memset(mb_tx->bit_inv, 0, sizeof(hal_bit_t *) * mb_tx->mb_tx_nelem);
60+
memset(mb_tx->bit, 0, sizeof(*mb_tx->bit) * mb_tx->mb_tx_nelem);
61+
memset(mb_tx->bit_inv, 0, sizeof(*mb_tx->bit_inv) * mb_tx->mb_tx_nelem);
6362
break;
6463

6564
case mbtx_03_READ_HOLDING_REGISTERS:
6665
case mbtx_04_READ_INPUT_REGISTERS:
6766
case mbtx_06_WRITE_SINGLE_REGISTER:
6867
case mbtx_16_WRITE_MULTIPLE_REGISTERS:
69-
mb_tx->float_value= hal_malloc(sizeof(hal_float_t *) * mb_tx->mb_tx_nelem);
70-
mb_tx->int_value = hal_malloc(sizeof(hal_s32_t *) * mb_tx->mb_tx_nelem);
71-
//mb_tx->scale = hal_malloc(sizeof(hal_float_t) * mb_tx->mb_tx_nelem);
72-
//mb_tx->offset = hal_malloc(sizeof(hal_float_t) * mb_tx->mb_tx_nelem);
68+
mb_tx->float_value= hal_malloc(sizeof(*mb_tx->float_value) * mb_tx->mb_tx_nelem);
69+
mb_tx->int_value = hal_malloc(sizeof(*mb_tx->int_value) * mb_tx->mb_tx_nelem);
70+
//mb_tx->scale = hal_malloc(sizeof(*mb_tx->scale ) * mb_tx->mb_tx_nelem);
71+
//mb_tx->offset = hal_malloc(sizeof(*mb_tx->offset) * mb_tx->mb_tx_nelem);
7372
//if (mb_tx->float_value == NULL || mb_tx->int_value == NULL
7473
// || mb_tx->scale == NULL || mb_tx->offset == NULL) {
7574
if (mb_tx->float_value == NULL || mb_tx->int_value == NULL) {
7675
ERR(gbl.init_dbg, "[%d] [%s] NULL hal_malloc [%d] elements",
7776
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, mb_tx->mb_tx_nelem);
7877
return retERR;
7978
}
80-
memset(mb_tx->float_value, 0, sizeof(hal_float_t *) * mb_tx->mb_tx_nelem);
81-
memset(mb_tx->int_value, 0, sizeof(hal_s32_t *) * mb_tx->mb_tx_nelem);
82-
//memset((void *) mb_tx->scale, 0, sizeof(hal_float_t) * mb_tx->mb_tx_nelem);
83-
//memset((void *) mb_tx->offset, 0, sizeof(hal_float_t) * mb_tx->mb_tx_nelem);
79+
memset(mb_tx->float_value, 0, sizeof(*mb_tx->float_value) * mb_tx->mb_tx_nelem);
80+
memset(mb_tx->int_value, 0, sizeof(*mb_tx->int_value) * mb_tx->mb_tx_nelem);
81+
//memset(mb_tx->scale, 0, sizeof(*mb_tx->scale ) * mb_tx->mb_tx_nelem);
82+
//memset(mb_tx->offset, 0, sizeof(*mb_tx->offset) * mb_tx->mb_tx_nelem);
8483
break;
8584

8685
default:
@@ -102,115 +101,102 @@ retCode create_each_mb_tx_hal_pins(mb_tx_t *mb_tx)
102101
case mbtx_05_WRITE_SINGLE_COIL:
103102
case mbtx_15_WRITE_MULTIPLE_COILS:
104103
if(gbl.version < 1001){
105-
if (0 != hal_pin_bit_newf(HAL_IN, mb_tx->bit + pin_counter, gbl.hal_mod_id,
104+
if (0 != hal_pin_new_bool(gbl.hal_mod_id, HAL_IN, mb_tx->bit + pin_counter, 0,
106105
"%s", hal_pin_name)) {
107-
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_bit_newf failed",
106+
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_new_bool failed",
108107
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
109108
return retERR;
110109
}
111110
} else {
112-
if (0 != hal_pin_bit_newf(HAL_IN, mb_tx->bit + pin_counter, gbl.hal_mod_id,
111+
if (0 != hal_pin_new_bool(gbl.hal_mod_id, HAL_IN, mb_tx->bit + pin_counter, 0,
113112
"%s.bit", hal_pin_name)) {
114-
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_bit_newf failed",
113+
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_new_bool failed",
115114
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
116115
return retERR;
117116
}
118117
}
119-
*mb_tx->bit[pin_counter] = 0;
120118
break;
121119
case mbtx_01_READ_COILS:
122120
case mbtx_02_READ_DISCRETE_INPUTS:
123121
if (gbl.version < 1001) {
124-
if (0 != hal_pin_bit_newf(HAL_OUT, mb_tx->bit + pin_counter, gbl.hal_mod_id,
122+
if (0 != hal_pin_new_bool(gbl.hal_mod_id, HAL_OUT, mb_tx->bit + pin_counter, 0,
125123
"%s", hal_pin_name)) {
126-
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_bit_newf failed",
124+
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_new_bool failed",
127125
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
128126
return retERR;
129127
}
130-
*mb_tx->bit[pin_counter] = 0;
131128
} else {
132-
if (0 != hal_pin_bit_newf(HAL_OUT, mb_tx->bit + pin_counter, gbl.hal_mod_id,
129+
if (0 != hal_pin_new_bool(gbl.hal_mod_id, HAL_OUT, mb_tx->bit + pin_counter, 0,
133130
"%s.bit", hal_pin_name)) {
134-
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_bit_newf failed",
131+
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_new_bool failed",
135132
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
136133
return retERR;
137134
}
138-
if (0 != hal_pin_bit_newf(HAL_OUT, mb_tx->bit_inv + pin_counter, gbl.hal_mod_id,
135+
if (0 != hal_pin_new_bool(gbl.hal_mod_id, HAL_OUT, mb_tx->bit_inv + pin_counter, 1,
139136
"%s.bit-inv", hal_pin_name)) {
140-
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_bit_newf failed",
137+
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_new_bool failed",
141138
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
142139
return retERR;
143140
}
144-
*mb_tx->bit[pin_counter] = 0;
145-
*mb_tx->bit_inv[pin_counter] = 1;
146141
}
147142
break;
148143
case mbtx_04_READ_INPUT_REGISTERS:
149144
case mbtx_03_READ_HOLDING_REGISTERS:
150-
if (0 != hal_pin_float_newf(HAL_OUT, mb_tx->float_value + pin_counter, gbl.hal_mod_id,
145+
if (0 != hal_pin_new_real(gbl.hal_mod_id, HAL_OUT, mb_tx->float_value + pin_counter, 0.0,
151146
"%s.float", hal_pin_name)) {
152-
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_float_newf failed",
147+
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_new_real failed",
153148
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
154149
return retERR;
155150
}
156-
if (0 != hal_pin_s32_newf(HAL_OUT, mb_tx->int_value + pin_counter, gbl.hal_mod_id,
151+
if (0 != hal_pin_new_si32(gbl.hal_mod_id, HAL_OUT, mb_tx->int_value + pin_counter, 0,
157152
"%s.int", hal_pin_name)) {
158-
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_s32_newf failed",
153+
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_new_si32 failed",
159154
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
160155
return retERR;
161156
}
162-
//if (0 != hal_param_float_newf(HAL_RW, mb_tx->scale + pin_counter, gbl.hal_mod_id,
157+
//if (0 != hal_param_new_real(gbl.hal_mod_id, HAL_RW, mb_tx->scale + pin_counter, 1.0,
163158
// "%s.scale", hal_pin_name)) {
164159
// ERR(gbl.init_dbg, "[%d] [%s] [%s]", mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
165160
// return retERR;
166161
//}
167-
//if (0 != hal_param_float_newf(HAL_RW, mb_tx->offset + pin_counter, gbl.hal_mod_id,
162+
//if (0 != hal_param_new_real(gbl.hal_mod_id, HAL_RW, mb_tx->offset + pin_counter, 0.0
168163
// "%s.offset", hal_pin_name)) {
169164
// ERR(gbl.init_dbg, "[%d] [%s] [%s]", mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
170165
// return retERR;
171166
//}
172-
*mb_tx->float_value[pin_counter] = 0;
173-
*mb_tx->int_value[pin_counter] = 0;
174-
//mb_tx->scale[pin_counter] = 1;
175-
//mb_tx->offset[pin_counter] = 0;
176167
break;
177168
case mbtx_06_WRITE_SINGLE_REGISTER:
178169
case mbtx_16_WRITE_MULTIPLE_REGISTERS:
179170
if (gbl.version < 1001) {
180-
if (0 != hal_pin_float_newf(HAL_IN, mb_tx->float_value + pin_counter, gbl.hal_mod_id,
171+
if (0 != hal_pin_new_real(gbl.hal_mod_id, HAL_IN, mb_tx->float_value + pin_counter, 0.0,
181172
"%s", hal_pin_name)) {
182-
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_float_newf failed",
173+
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_new_real failed",
183174
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
184175
return retERR;
185176
}
186-
*mb_tx->float_value[pin_counter] = 0;
187177
} else {
188-
if (0 != hal_pin_float_newf(HAL_IN, mb_tx->float_value + pin_counter, gbl.hal_mod_id,
178+
if (0 != hal_pin_new_real(gbl.hal_mod_id, HAL_IN, mb_tx->float_value + pin_counter, 0.0,
189179
"%s.float", hal_pin_name)) {
190-
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_float_newf failed",
180+
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_new_real failed",
191181
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
192182
return retERR;
193183
}
194-
if (0 != hal_pin_s32_newf(HAL_IN, mb_tx->int_value + pin_counter, gbl.hal_mod_id,
184+
if (0 != hal_pin_new_si32(gbl.hal_mod_id, HAL_IN, mb_tx->int_value + pin_counter, 0,
195185
"%s.int", hal_pin_name)) {
196-
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_s32_newf failed",
186+
ERR(gbl.init_dbg, "[%d] [%s] [%s] hal_pin_new_si32 failed",
197187
mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
198188
return retERR;
199189
}
200-
//if (0 != hal_param_float_newf(HAL_RW, mb_tx->scale + pin_counter, gbl.hal_mod_id,
190+
//if (0 != hal_param_new_real(gbl.hal_mod_id, HAL_RW, mb_tx->scale + pin_counter, 1.0
201191
// "%s.scale", hal_pin_name)) {
202192
// ERR(gbl.init_dbg, "[%d] [%s] [%s]", mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name, hal_pin_name);
203193
// return retERR;
204194
//}
205-
//if (0 != hal_param_float_newf(HAL_RW, mb_tx->offset + pin_counter, gbl.hal_mod_id,
195+
//if (0 != hal_param_new_real(gbl.hal_mod_id, HAL_RW, mb_tx->offset + pin_counter, 0.0
206196
// "%s.offset", hal_pin_name)) {
207197
// ERR(gbl.init_dbg, "[%d] [%s]", mb_tx->mb_tx_fnct, mb_tx->mb_tx_fnct_name);
208198
// return retERR;
209199
//}
210-
*mb_tx->float_value[pin_counter] = 0;
211-
*mb_tx->int_value[pin_counter] = 0;
212-
//mb_tx->scale[pin_counter] = 1;
213-
//mb_tx->offset[pin_counter] = 0;
214200
}
215201
break;
216202
default:

0 commit comments

Comments
 (0)