From 62b41c4150f52087c4c5f7c16ca2b35c324c7677 Mon Sep 17 00:00:00 2001 From: sluiter Date: Tue, 23 Aug 2016 13:20:51 -0500 Subject: [PATCH] On comm. error, signal motorAxisProblem to user and skip controller initialization --- motorApp/AerotechSrc/drvA3200Asyn.cc | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/motorApp/AerotechSrc/drvA3200Asyn.cc b/motorApp/AerotechSrc/drvA3200Asyn.cc index ec8eff8b..91b16d6f 100644 --- a/motorApp/AerotechSrc/drvA3200Asyn.cc +++ b/motorApp/AerotechSrc/drvA3200Asyn.cc @@ -879,18 +879,22 @@ int A3200AsynConfig(int card, /* Controller number */ /* Get axes info */ for (axis = 0; axis < numAxes; axis++) { - sprintf(outputBuff, "$strtask0 = GETPARMSTRING %d, PARAMETERID_AxisName", axis); - sendAndReceive(pController, outputBuff, inputBuff, sizeof(inputBuff)); + AXIS_HDL pAxis = &pController->pAxis[axis]; + pAxis->pController = pController; + pAxis->card = card; + pAxis->axis = axis; + pAxis->mutexId = epicsMutexMustCreate(); + pAxis->params = motorParam->create(0, MOTOR_AXIS_NUM_PARAMS); - sendAndReceive(pController, "~GETVARIABLE $strtask0", inputBuff, sizeof(inputBuff)); - if (inputBuff[0] == ASCII_ACK_CHAR) + if (inputBuff[0] != ASCII_ACK_CHAR) + motorParam->setInteger(pAxis->params, motorAxisProblem, 1); /* Signal "Controller Error" to user. */ + else { - AXIS_HDL pAxis = &pController->pAxis[axis]; - pAxis->pController = pController; - pAxis->card = card; - pAxis->axis = axis; - pAxis->mutexId = epicsMutexMustCreate(); - pAxis->params = motorParam->create(0, MOTOR_AXIS_NUM_PARAMS); + sprintf(outputBuff, "$strtask0 = GETPARMSTRING %d, PARAMETERID_AxisName", axis); + sendAndReceive(pController, outputBuff, inputBuff, sizeof(inputBuff)); + + sendAndReceive(pController, "~GETVARIABLE $strtask0", inputBuff, sizeof(inputBuff)); + strncpy(pAxis->axisName, &inputBuff[1], sizeof(pAxis->axisName) - 1); sprintf(outputBuff, GET_PARAM_FORMAT_STRING, "PositionFeedbackType", pAxis->axisName); @@ -936,6 +940,9 @@ int A3200AsynConfig(int card, /* Controller number */ } } + if (inputBuff[0] != ASCII_ACK_CHAR) + return MOTOR_AXIS_ERROR; + sendAndReceive(pController, "~INITQUEUE", inputBuff, sizeof(inputBuff)); /* Prevent Task #2 and #3 from blocking during LINEAR commands. */