Hello,
I am facing a weird issue with the execution of a script (from a script table) of type DLMS_SCRIPT_ACTION_TYPE_WRITE.
Here is a code snippet showing how the action is initialized:
/* define action(s) for script 1 */
diconnectControl_ACTIONS[0][0].type = DLMS_SCRIPT_ACTION_TYPE_WRITE;
diconnectControl_ACTIONS[0][0].target = (gxObject *)pdisc_ctrl;
diconnectControl_ACTIONS[0][0].index = 3; /* attribute index 3 = control state */
var_init(&diconnectControl_ACTIONS[0][0].parameter);
var_setEnum(&diconnectControl_ACTIONS[0][0].parameter, DLMS_CONTROL_STATE_READY_FOR_RECONNECTION);
/* link action array to script */
diconnectControl_SCRIPTS[0].id = 1;
ARR_ATTACH(diconnectControl_SCRIPTS[0].actions, diconnectControl_ACTIONS[0], 1);
As soon as the script is executed, the function cosem_setValue (called by invoke_ScriptTable) is run and calls cosem_setDisconnectControl (as expected).
cosem_setDisconnectControl, in turn, calls cosem_getEnum which eventually leads to a hard fault while running bb_getUInt8.
I changed the initialization of the parameter field of the script in order to overcome the issue.
For instance, I applied the following change:
GX_INT8(diconnectControl_ACTIONS[0][0].parameter) = DLMS_CONTROL_STATE_READY_FOR_RECONNECTION;
instead of
var_setEnum(&diconnectControl_ACTIONS[0][0].parameter, DLMS_CONTROL_STATE_READY_FOR_RECONNECTION);
but the issue still occurred.
Any help would be highly appreciated.
Thanks in advance for your support and best regards.
Hi, DLMS_SCRIPT_ACTION_TYPE…
Hi,
DLMS_SCRIPT_ACTION_TYPE_WRITE is implemented for the latest version.
BR,
Mikko