From 59e5539d5e2b326656c46fcf8614f063ab48cb63 Mon Sep 17 00:00:00 2001 From: Douglas Clowes Date: Fri, 2 Aug 2013 10:47:48 +1000 Subject: [PATCH] Make the old motor FSM into a Legacy_FSM and default to the new FSM --- site_ansto/motor_dmc2280.c | 127 ++++++++++++++----------------------- 1 file changed, 46 insertions(+), 81 deletions(-) diff --git a/site_ansto/motor_dmc2280.c b/site_ansto/motor_dmc2280.c index 83f3d354..113d48d2 100644 --- a/site_ansto/motor_dmc2280.c +++ b/site_ansto/motor_dmc2280.c @@ -244,7 +244,7 @@ struct __MoDriv { int bias_bits; /**< number of bits to mask */ int bias_bias; /**< bias to add to encoder value */ char ao_id[256]; - bool testing; /**< flag for testing new code */ + bool legacy_fsm; /**< flag for legacy_fsm new code */ bool doStats; /**< flag to request stats collection */ double S_x; double S_y; @@ -2449,7 +2449,7 @@ static void DMCState_MotorOn(pDMC2280Driv self, pEvtEvent event) { self->maxPosition = self->currPosition; self->stepCount = 0; self->moveStartTime = DoubleTime(); - if (self->testing) { + if (!self->legacy_fsm) { self->myNextState = NULL; if (self->backlash_offset != 0) { change_state(self, DMCState_BacklashStart); @@ -4498,20 +4498,14 @@ static int DMC2280SetPar(void *pData, SConnection *pCon, * \param *pCon (r) connection object. */ static void DMC2280StrList(pDMC2280Driv self, char *name, SConnection *pCon){ - char buffer[BUFFLEN]; - snprintf(buffer, BUFFLEN, "%s.part = %s\n", name, self->part); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.long_name = %s\n", name, self->long_name); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.axis = %c\n", name, self->axisLabel); - SCWrite(pCon, buffer, eStatus); + SCPrintf(pCon, eStatus, "%s.part = %s\n", name, self->part); + SCPrintf(pCon, eStatus, "%s.long_name = %s\n", name, self->long_name); + SCPrintf(pCon, eStatus, "%s.axis = %c\n", name, self->axisLabel); if (self->encoderAxis) { - snprintf(buffer, BUFFLEN, "%s.encoderAxis = %c\n", name, self->encoderAxis); - SCWrite(pCon, buffer, eStatus); + SCPrintf(pCon, eStatus, "%s.encoderAxis = %c\n", name, self->encoderAxis); } - snprintf(buffer, BUFFLEN, "%s.units = %s\n", name, self->units); - SCWrite(pCon, buffer, eStatus); + SCPrintf(pCon, eStatus, "%s.units = %s\n", name, self->units); if (self->asyncUnit) { mkChannel* sock = AsyncUnitGetSocket(self->asyncUnit); if (sock) { @@ -4519,8 +4513,7 @@ static void DMC2280StrList(pDMC2280Driv self, char *name, SConnection *pCon){ int port = ntohs(sock->adresse.sin_port); strncpy(addr, inet_ntoa(sock->adresse.sin_addr), 80); addr[79] = '\0'; - snprintf(buffer, BUFFLEN, "%s.address = %s:%d\n", self->name, addr, port); - SCWrite(pCon, buffer, eStatus); + SCPrintf(pCon, eStatus, "%s.address = %s:%d\n", self->name, addr, port); } } if (self->errorCode) { @@ -4538,75 +4531,47 @@ static void DMC2280StrList(pDMC2280Driv self, char *name, SConnection *pCon){ */ static void DMC2280List(void *pData, char *name, SConnection *pCon){ pDMC2280Driv self = (pDMC2280Driv) pData; - char buffer[BUFFLEN]; - snprintf(buffer, BUFFLEN, "%s.home = %f\n", name, self->fHome); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.speed = %f\n", name, self->speed); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.maxSpeed = %f\n", name, self->maxSpeed); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.accel = %f\n", name, self->accel); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.maxAccel = %f\n", name, self->maxAccel); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.decel = %f\n", name, self->decel); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.maxDecel = %f\n", name, self->maxDecel); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.motOnDelay = %d\n", name, self->motOnDelay); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.motOffDelay = %d\n", name, self->motOffDelay); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.motorPollFast = %d\n", name, self->motorPollFast); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.motorPollSlow = %d\n", name, self->motorPollSlow); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.airPollTimer = %d\n", name, self->airPollTimer); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.Debug = %d\n", name, self->debug); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.Settle = %d\n", name, self->settle); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.Blockage_Check_Interval = %f\n", name, self->blockage_ckInterval); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.Blockage_Thresh = %f\n", name, self->blockage_thresh); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.Blockage_Ratio = %f\n", name, self->blockage_ratio); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.Blockage_Fail = %d\n", name, self->blockage_fail); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.Backlash_offset = %f\n", name, self->backlash_offset); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.Protocol = %d\n", name, self->protocol); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.absEncoder = %d\n", name, self->abs_encoder); - SCWrite(pCon, buffer, eStatus); + SCPrintf(pCon, eStatus, "%s.home = %f\n", name, self->fHome); + SCPrintf(pCon, eStatus, "%s.speed = %f\n", name, self->speed); + SCPrintf(pCon, eStatus, "%s.maxSpeed = %f\n", name, self->maxSpeed); + SCPrintf(pCon, eStatus, "%s.accel = %f\n", name, self->accel); + SCPrintf(pCon, eStatus, "%s.maxAccel = %f\n", name, self->maxAccel); + SCPrintf(pCon, eStatus, "%s.decel = %f\n", name, self->decel); + SCPrintf(pCon, eStatus, "%s.maxDecel = %f\n", name, self->maxDecel); + SCPrintf(pCon, eStatus, "%s.motOnDelay = %d\n", name, self->motOnDelay); + SCPrintf(pCon, eStatus, "%s.motOffDelay = %d\n", name, self->motOffDelay); + SCPrintf(pCon, eStatus, "%s.motorPollFast = %d\n", name, self->motorPollFast); + SCPrintf(pCon, eStatus, "%s.motorPollSlow = %d\n", name, self->motorPollSlow); + SCPrintf(pCon, eStatus, "%s.airPollTimer = %d\n", name, self->airPollTimer); + SCPrintf(pCon, eStatus, "%s.Debug = %d\n", name, self->debug); + SCPrintf(pCon, eStatus, "%s.Settle = %d\n", name, self->settle); + SCPrintf(pCon, eStatus, "%s.Blockage_Check_Interval = %f\n", name, self->blockage_ckInterval); + SCPrintf(pCon, eStatus, "%s.Blockage_Thresh = %f\n", name, self->blockage_thresh); + SCPrintf(pCon, eStatus, "%s.Blockage_Ratio = %f\n", name, self->blockage_ratio); + SCPrintf(pCon, eStatus, "%s.Blockage_Fail = %d\n", name, self->blockage_fail); + SCPrintf(pCon, eStatus, "%s.Backlash_offset = %f\n", name, self->backlash_offset); + SCPrintf(pCon, eStatus, "%s.Protocol = %d\n", name, self->protocol); + SCPrintf(pCon, eStatus, "%s.Legacy_FSM = %s\n", name, self->legacy_fsm ? "ON" : "OFF"); + SCPrintf(pCon, eStatus, "%s.absEncoder = %d\n", name, self->abs_encoder); if (self->abs_encoder) { - snprintf(buffer, BUFFLEN, "%s.absEncHome = %d\n", name, self->absEncHome); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.cntsPerX = %f\n", name, self->cntsPerX); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.Creep_Offset = %f\n", name, self->creep_offset); - SCWrite(pCon, buffer, eStatus); - snprintf(buffer, BUFFLEN, "%s.Creep_Precision = %f\n", name, self->creep_precision); - snprintf(buffer, BUFFLEN, "%s.Creep_Factor = %f\n", name, self->creep_factor); - snprintf(buffer, BUFFLEN, "%s.Creep_Substep = %f\n", name, self->creep_substep); - SCWrite(pCon, buffer, eStatus); + SCPrintf(pCon, eStatus, "%s.absEncHome = %d\n", name, self->absEncHome); + SCPrintf(pCon, eStatus, "%s.cntsPerX = %f\n", name, self->cntsPerX); + SCPrintf(pCon, eStatus, "%s.Creep_Offset = %f\n", name, self->creep_offset); + SCPrintf(pCon, eStatus, "%s.Creep_Precision = %f\n", name, self->creep_precision); + SCPrintf(pCon, eStatus, "%s.Creep_Factor = %f\n", name, self->creep_factor); + SCPrintf(pCon, eStatus, "%s.Creep_Substep = %f\n", name, self->creep_substep); } if (self->posit_count > 0) { int i; - snprintf(buffer, BUFFLEN, "%s.posit_count = %d\n", name, + SCPrintf(pCon, eStatus, "%s.posit_count = %d\n", name, self->posit_count); - SCWrite(pCon, buffer, eStatus); for (i = 0; i < self->posit_count; ++i) { - snprintf(buffer, BUFFLEN, "%s.posit_%d = %lld\n", name, i + 1, + SCPrintf(pCon, eStatus, "%s.posit_%d = %lld\n", name, i + 1, posit2count(self, i + 1)); - SCWrite(pCon, buffer, eStatus); } } - snprintf(buffer, BUFFLEN, "%s.stepsPerX = %f\n", name, self->stepsPerX); - SCWrite(pCon, buffer, eStatus); + SCPrintf(pCon, eStatus, "%s.stepsPerX = %f\n", name, self->stepsPerX); return; } @@ -5361,20 +5326,20 @@ int DMC2280Action(SConnection *pCon, SicsInterp *pSics, void *pData, SCWrite(pCon, line, eValue); return 1; } - else if(strcasecmp("testing", argv[1]) == 0) { + else if(strcasecmp("legacy_fsm", argv[1]) == 0) { if (argc > 2) { if (strcasecmp("on", argv[2]) == 0) { - self->testing = true; - SCWrite(pCon, "TESTING ON", eValue); + self->legacy_fsm = true; + SCWrite(pCon, "LEGACY_FSM ON", eValue); } else { - self->testing = false; - SCWrite(pCon, "TESTING OFF", eValue); + self->legacy_fsm = false; + SCWrite(pCon, "LEGACY_FSM OFF", eValue); } } else { - SCPrintf(pCon, eValue, "%s.testing = %s", + SCPrintf(pCon, eValue, "%s.LEGACY_FSM = %s", self->name, - self->testing ? "ON" : "OFF"); + self->legacy_fsm ? "ON" : "OFF"); } return 1; }