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_bits; /**< number of bits to mask */
int bias_bias; /**< bias to add to encoder value */ int bias_bias; /**< bias to add to encoder value */
char ao_id[256]; 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 */ bool doStats; /**< flag to request stats collection */
double S_x; double S_x;
double S_y; double S_y;
@@ -2449,7 +2449,7 @@ static void DMCState_MotorOn(pDMC2280Driv self, pEvtEvent event) {
self->maxPosition = self->currPosition; self->maxPosition = self->currPosition;
self->stepCount = 0; self->stepCount = 0;
self->moveStartTime = DoubleTime(); self->moveStartTime = DoubleTime();
if (self->testing) { if (!self->legacy_fsm) {
self->myNextState = NULL; self->myNextState = NULL;
if (self->backlash_offset != 0) { if (self->backlash_offset != 0) {
change_state(self, DMCState_BacklashStart); change_state(self, DMCState_BacklashStart);
@@ -4498,20 +4498,14 @@ static int DMC2280SetPar(void *pData, SConnection *pCon,
* \param *pCon (r) connection object. * \param *pCon (r) connection object.
*/ */
static void DMC2280StrList(pDMC2280Driv self, char *name, SConnection *pCon){ static void DMC2280StrList(pDMC2280Driv self, char *name, SConnection *pCon){
char buffer[BUFFLEN];
snprintf(buffer, BUFFLEN, "%s.part = %s\n", name, self->part); SCPrintf(pCon, eStatus, "%s.part = %s\n", name, self->part);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.long_name = %s\n", name, self->long_name);
snprintf(buffer, BUFFLEN, "%s.long_name = %s\n", name, self->long_name); SCPrintf(pCon, eStatus, "%s.axis = %c\n", name, self->axisLabel);
SCWrite(pCon, buffer, eStatus);
snprintf(buffer, BUFFLEN, "%s.axis = %c\n", name, self->axisLabel);
SCWrite(pCon, buffer, eStatus);
if (self->encoderAxis) { if (self->encoderAxis) {
snprintf(buffer, BUFFLEN, "%s.encoderAxis = %c\n", name, self->encoderAxis); SCPrintf(pCon, eStatus, "%s.encoderAxis = %c\n", name, self->encoderAxis);
SCWrite(pCon, buffer, eStatus);
} }
snprintf(buffer, BUFFLEN, "%s.units = %s\n", name, self->units); SCPrintf(pCon, eStatus, "%s.units = %s\n", name, self->units);
SCWrite(pCon, buffer, eStatus);
if (self->asyncUnit) { if (self->asyncUnit) {
mkChannel* sock = AsyncUnitGetSocket(self->asyncUnit); mkChannel* sock = AsyncUnitGetSocket(self->asyncUnit);
if (sock) { if (sock) {
@@ -4519,8 +4513,7 @@ static void DMC2280StrList(pDMC2280Driv self, char *name, SConnection *pCon){
int port = ntohs(sock->adresse.sin_port); int port = ntohs(sock->adresse.sin_port);
strncpy(addr, inet_ntoa(sock->adresse.sin_addr), 80); strncpy(addr, inet_ntoa(sock->adresse.sin_addr), 80);
addr[79] = '\0'; addr[79] = '\0';
snprintf(buffer, BUFFLEN, "%s.address = %s:%d\n", self->name, addr, port); SCPrintf(pCon, eStatus, "%s.address = %s:%d\n", self->name, addr, port);
SCWrite(pCon, buffer, eStatus);
} }
} }
if (self->errorCode) { 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){ static void DMC2280List(void *pData, char *name, SConnection *pCon){
pDMC2280Driv self = (pDMC2280Driv) pData; pDMC2280Driv self = (pDMC2280Driv) pData;
char buffer[BUFFLEN];
snprintf(buffer, BUFFLEN, "%s.home = %f\n", name, self->fHome); SCPrintf(pCon, eStatus, "%s.home = %f\n", name, self->fHome);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.speed = %f\n", name, self->speed);
snprintf(buffer, BUFFLEN, "%s.speed = %f\n", name, self->speed); SCPrintf(pCon, eStatus, "%s.maxSpeed = %f\n", name, self->maxSpeed);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.accel = %f\n", name, self->accel);
snprintf(buffer, BUFFLEN, "%s.maxSpeed = %f\n", name, self->maxSpeed); SCPrintf(pCon, eStatus, "%s.maxAccel = %f\n", name, self->maxAccel);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.decel = %f\n", name, self->decel);
snprintf(buffer, BUFFLEN, "%s.accel = %f\n", name, self->accel); SCPrintf(pCon, eStatus, "%s.maxDecel = %f\n", name, self->maxDecel);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.motOnDelay = %d\n", name, self->motOnDelay);
snprintf(buffer, BUFFLEN, "%s.maxAccel = %f\n", name, self->maxAccel); SCPrintf(pCon, eStatus, "%s.motOffDelay = %d\n", name, self->motOffDelay);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.motorPollFast = %d\n", name, self->motorPollFast);
snprintf(buffer, BUFFLEN, "%s.decel = %f\n", name, self->decel); SCPrintf(pCon, eStatus, "%s.motorPollSlow = %d\n", name, self->motorPollSlow);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.airPollTimer = %d\n", name, self->airPollTimer);
snprintf(buffer, BUFFLEN, "%s.maxDecel = %f\n", name, self->maxDecel); SCPrintf(pCon, eStatus, "%s.Debug = %d\n", name, self->debug);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.Settle = %d\n", name, self->settle);
snprintf(buffer, BUFFLEN, "%s.motOnDelay = %d\n", name, self->motOnDelay); SCPrintf(pCon, eStatus, "%s.Blockage_Check_Interval = %f\n", name, self->blockage_ckInterval);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.Blockage_Thresh = %f\n", name, self->blockage_thresh);
snprintf(buffer, BUFFLEN, "%s.motOffDelay = %d\n", name, self->motOffDelay); SCPrintf(pCon, eStatus, "%s.Blockage_Ratio = %f\n", name, self->blockage_ratio);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.Blockage_Fail = %d\n", name, self->blockage_fail);
snprintf(buffer, BUFFLEN, "%s.motorPollFast = %d\n", name, self->motorPollFast); SCPrintf(pCon, eStatus, "%s.Backlash_offset = %f\n", name, self->backlash_offset);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.Protocol = %d\n", name, self->protocol);
snprintf(buffer, BUFFLEN, "%s.motorPollSlow = %d\n", name, self->motorPollSlow); SCPrintf(pCon, eStatus, "%s.Legacy_FSM = %s\n", name, self->legacy_fsm ? "ON" : "OFF");
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.absEncoder = %d\n", name, self->abs_encoder);
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);
if (self->abs_encoder) { if (self->abs_encoder) {
snprintf(buffer, BUFFLEN, "%s.absEncHome = %d\n", name, self->absEncHome); SCPrintf(pCon, eStatus, "%s.absEncHome = %d\n", name, self->absEncHome);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.cntsPerX = %f\n", name, self->cntsPerX);
snprintf(buffer, BUFFLEN, "%s.cntsPerX = %f\n", name, self->cntsPerX); SCPrintf(pCon, eStatus, "%s.Creep_Offset = %f\n", name, self->creep_offset);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.Creep_Precision = %f\n", name, self->creep_precision);
snprintf(buffer, BUFFLEN, "%s.Creep_Offset = %f\n", name, self->creep_offset); SCPrintf(pCon, eStatus, "%s.Creep_Factor = %f\n", name, self->creep_factor);
SCWrite(pCon, buffer, eStatus); SCPrintf(pCon, eStatus, "%s.Creep_Substep = %f\n", name, self->creep_substep);
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);
} }
if (self->posit_count > 0) { if (self->posit_count > 0) {
int i; int i;
snprintf(buffer, BUFFLEN, "%s.posit_count = %d\n", name, SCPrintf(pCon, eStatus, "%s.posit_count = %d\n", name,
self->posit_count); self->posit_count);
SCWrite(pCon, buffer, eStatus);
for (i = 0; i < self->posit_count; ++i) { 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)); posit2count(self, i + 1));
SCWrite(pCon, buffer, eStatus);
} }
} }
snprintf(buffer, BUFFLEN, "%s.stepsPerX = %f\n", name, self->stepsPerX); SCPrintf(pCon, eStatus, "%s.stepsPerX = %f\n", name, self->stepsPerX);
SCWrite(pCon, buffer, eStatus);
return; return;
} }
@@ -5361,20 +5326,20 @@ int DMC2280Action(SConnection *pCon, SicsInterp *pSics, void *pData,
SCWrite(pCon, line, eValue); SCWrite(pCon, line, eValue);
return 1; return 1;
} }
else if(strcasecmp("testing", argv[1]) == 0) { else if(strcasecmp("legacy_fsm", argv[1]) == 0) {
if (argc > 2) { if (argc > 2) {
if (strcasecmp("on", argv[2]) == 0) { if (strcasecmp("on", argv[2]) == 0) {
self->testing = true; self->legacy_fsm = true;
SCWrite(pCon, "TESTING ON", eValue); SCWrite(pCon, "LEGACY_FSM ON", eValue);
} }
else { else {
self->testing = false; self->legacy_fsm = false;
SCWrite(pCon, "TESTING OFF", eValue); SCWrite(pCon, "LEGACY_FSM OFF", eValue);
} }
} else { } else {
SCPrintf(pCon, eValue, "%s.testing = %s", SCPrintf(pCon, eValue, "%s.LEGACY_FSM = %s",
self->name, self->name,
self->testing ? "ON" : "OFF"); self->legacy_fsm ? "ON" : "OFF");
} }
return 1; return 1;
} }