Make the old motor FSM into a Legacy_FSM and default to the new FSM

This commit is contained in:
Douglas Clowes
2013-08-02 10:47:48 +10:00
parent 88f788e9cc
commit 59e5539d5e

View File

@@ -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;
}