Merge branch 'add-ax5805-support' into add-ax5100-support
This commit is contained in:
@@ -34,11 +34,19 @@
|
||||
#include "lcec_stmds5k.h"
|
||||
#include "lcec_el6900.h"
|
||||
|
||||
typedef enum {
|
||||
MODPARAM_TYPE_BIT,
|
||||
MODPARAM_TYPE_U32,
|
||||
MODPARAM_TYPE_S32,
|
||||
MODPARAM_TYPE_FLOAT,
|
||||
MODPARAM_TYPE_STRING
|
||||
} LCEC_CONF_MODPARAM_TYPE_T;
|
||||
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
int id;
|
||||
hal_type_t type;
|
||||
int pdoMappingCount;
|
||||
LCEC_CONF_MODPARAM_TYPE_T type;
|
||||
} LCEC_CONF_MODPARAM_DESC_T;
|
||||
|
||||
typedef struct {
|
||||
@@ -53,13 +61,15 @@ typedef struct {
|
||||
} LCEC_CONF_HAL_T;
|
||||
|
||||
static const LCEC_CONF_MODPARAM_DESC_T slaveStMDS5kParams[] = {
|
||||
{ "isMultiturn", LCEC_STMDS5K_PARAM_MULTITURN, HAL_BIT, 0 } ,
|
||||
{ "extEnc", LCEC_STMDS5K_PARAM_EXTENC, HAL_U32, LCEC_STMDS5K_EXTINC_PDOS } ,
|
||||
{ "isMultiturn", LCEC_STMDS5K_PARAM_MULTITURN, MODPARAM_TYPE_BIT } ,
|
||||
{ "extEnc", LCEC_STMDS5K_PARAM_EXTENC, MODPARAM_TYPE_U32 } ,
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
static const LCEC_CONF_MODPARAM_DESC_T slaveEL6900Params[] = {
|
||||
{ "fsoeSlaveIdx", LCEC_EL6900_PARAM_SLAVEID, HAL_U32, LCEC_EL6900_PARAM_SLAVEID_PDOS } ,
|
||||
{ "fsoeSlaveIdx", LCEC_EL6900_PARAM_SLAVEID, MODPARAM_TYPE_U32 } ,
|
||||
{ "stdInName", LCEC_EL6900_PARAM_STDIN_NAME, MODPARAM_TYPE_STRING } ,
|
||||
{ "stdOutName", LCEC_EL6900_PARAM_STDOUT_NAME, MODPARAM_TYPE_STRING } ,
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
@@ -184,6 +194,7 @@ static const LCEC_CONF_TYPELIST_T slaveTypes[] = {
|
||||
{ "EL6900", lcecSlaveTypeEL6900, slaveEL6900Params },
|
||||
{ "EL1904", lcecSlaveTypeEL1904, NULL },
|
||||
{ "EL2904", lcecSlaveTypeEL2904, NULL },
|
||||
{ "AX5805", lcecSlaveTypeAX5805, NULL },
|
||||
|
||||
// multi axis interface
|
||||
{ "EM7004", lcecSlaveTypeEM7004, NULL },
|
||||
@@ -1381,7 +1392,7 @@ static void parseModParamAttrs(LCEC_CONF_XML_INST_T *inst, int next, const char
|
||||
// try to parse value
|
||||
char *s = NULL;
|
||||
switch (modParams->type) {
|
||||
case HAL_BIT:
|
||||
case MODPARAM_TYPE_BIT:
|
||||
if ((strcmp("1", pval) == 0) || (strcasecmp("TRUE", pval) == 0)) {
|
||||
p->value.bit = 1;
|
||||
} else if ((strcmp("0", pval) == 0) || (strcasecmp("FALSE", pval)) == 0) {
|
||||
@@ -1392,7 +1403,8 @@ static void parseModParamAttrs(LCEC_CONF_XML_INST_T *inst, int next, const char
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case HAL_U32:
|
||||
|
||||
case MODPARAM_TYPE_U32:
|
||||
p->value.u32 = strtoul(pval, &s, 0);
|
||||
if (*s != 0) {
|
||||
fprintf(stderr, "%s: ERROR: Invalid modParam u32 value '%s' for param '%s'\n", modname, pval, pname);
|
||||
@@ -1400,7 +1412,8 @@ static void parseModParamAttrs(LCEC_CONF_XML_INST_T *inst, int next, const char
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case HAL_S32:
|
||||
|
||||
case MODPARAM_TYPE_S32:
|
||||
p->value.s32 = strtol(pval, &s, 0);
|
||||
if (*s != 0) {
|
||||
fprintf(stderr, "%s: ERROR: Invalid modParam s32 value '%s' for param '%s'\n", modname, pval, pname);
|
||||
@@ -1408,7 +1421,8 @@ static void parseModParamAttrs(LCEC_CONF_XML_INST_T *inst, int next, const char
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case HAL_FLOAT:
|
||||
|
||||
case MODPARAM_TYPE_FLOAT:
|
||||
p->value.flt = strtod(pval, &s);
|
||||
if (*s != 0) {
|
||||
fprintf(stderr, "%s: ERROR: Invalid modParam float value '%s' for param '%s'\n", modname, pval, pname);
|
||||
@@ -1416,12 +1430,16 @@ static void parseModParamAttrs(LCEC_CONF_XML_INST_T *inst, int next, const char
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case MODPARAM_TYPE_STRING:
|
||||
strncpy(p->value.str, pval, LCEC_CONF_STR_MAXLEN - 1);
|
||||
break;
|
||||
|
||||
default:
|
||||
p->value.u32 = 0;
|
||||
break;
|
||||
}
|
||||
|
||||
(state->currSlave->pdoMappingCount) += modParams->pdoMappingCount;
|
||||
(state->currSlave->modParamCount)++;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user