Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Abstract Global status bits #114

Merged
merged 2 commits into from
Nov 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 1 addition & 33 deletions pmacApp/src/pmacController.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -97,38 +97,6 @@ const epicsUInt32 pmacController::PMAC_STATUS2_FORE_IN_POS = (0x1 << 13);
const epicsUInt32 pmacController::PMAC_STATUS2_NA14 = (0x1 << 14);
const epicsUInt32 pmacController::PMAC_STATUS2_ASSIGNED_CS = (0x1 << 15);

/*Global status ???*/
const epicsUInt32 pmacController::PMAC_GSTATUS_CARD_ADDR = (0x1 << 0);
const epicsUInt32 pmacController::PMAC_GSTATUS_ALL_CARD_ADDR = (0x1 << 1);
const epicsUInt32 pmacController::PMAC_GSTATUS_RESERVED = (0x1 << 2);
const epicsUInt32 pmacController::PMAC_GSTATUS_PHASE_CLK_MISS = (0x1 << 3);
const epicsUInt32 pmacController::PMAC_GSTATUS_MACRO_RING_ERRORCHECK = (0x1 << 4);
const epicsUInt32 pmacController::PMAC_GSTATUS_MACRO_RING_COMMS = (0x1 << 5);
const epicsUInt32 pmacController::PMAC_GSTATUS_TWS_PARITY_ERROR = (0x1 << 6);
const epicsUInt32 pmacController::PMAC_GSTATUS_CONFIG_ERROR = (0x1 << 7);
const epicsUInt32 pmacController::PMAC_GSTATUS_ILLEGAL_LVAR = (0x1 << 8);
const epicsUInt32 pmacController::PMAC_GSTATUS_REALTIME_INTR = (0x1 << 9);
const epicsUInt32 pmacController::PMAC_GSTATUS_FLASH_ERROR = (0x1 << 10);
const epicsUInt32 pmacController::PMAC_GSTATUS_DPRAM_ERROR = (0x1 << 11);
const epicsUInt32 pmacController::PMAC_GSTATUS_CKSUM_ACTIVE = (0x1 << 12);
const epicsUInt32 pmacController::PMAC_GSTATUS_CKSUM_ERROR = (0x1 << 13);
const epicsUInt32 pmacController::PMAC_GSTATUS_LEADSCREW_COMP = (0x1 << 14);
const epicsUInt32 pmacController::PMAC_GSTATUS_WATCHDOG = (0x1 << 15);
const epicsUInt32 pmacController::PMAC_GSTATUS_SERVO_REQ = (0x1 << 16);
const epicsUInt32 pmacController::PMAC_GSTATUS_DATA_GATHER_START = (0x1 << 17);
const epicsUInt32 pmacController::PMAC_GSTATUS_RESERVED2 = (0x1 << 18);
const epicsUInt32 pmacController::PMAC_GSTATUS_DATA_GATHER_ON = (0x1 << 19);
const epicsUInt32 pmacController::PMAC_GSTATUS_SERVO_ERROR = (0x1 << 20);
const epicsUInt32 pmacController::PMAC_GSTATUS_CPUTYPE = (0x1 << 21);
const epicsUInt32 pmacController::PMAC_GSTATUS_REALTIME_INTR_RE = (0x1 << 22);
const epicsUInt32 pmacController::PMAC_GSTATUS_RESERVED3 = (0x1 << 23);

const epicsUInt32 pmacController::PMAC_HARDWARE_PROB = (PMAC_GSTATUS_REALTIME_INTR |
PMAC_GSTATUS_FLASH_ERROR |
PMAC_GSTATUS_DPRAM_ERROR |
PMAC_GSTATUS_CKSUM_ERROR |
PMAC_GSTATUS_WATCHDOG |
PMAC_GSTATUS_SERVO_ERROR);

const epicsUInt32 pmacController::PMAX_AXIS_GENERAL_PROB1 = 0;
const epicsUInt32 pmacController::PMAX_AXIS_GENERAL_PROB2 = (PMAC_STATUS2_DESIRED_STOP |
Expand Down Expand Up @@ -1954,7 +1922,7 @@ asynStatus pmacController::fastUpdate(pmacCommandStore *sPtr) {
//Set any controller specific parameters.
//Some of these may be used by the axis poll to set axis problem bits.
if (status == asynSuccess) {
hardwareProblem = ((gStatus & PMAC_HARDWARE_PROB) != 0);
hardwareProblem = ((gStatus & pHardware_->getGlobalStatusError()) != 0);
status = setIntegerParam(this->PMAC_C_GlobalStatus_, hardwareProblem);
if (hardwareProblem) {
debug(DEBUG_ERROR, functionName, "*** Hardware Problem *** global status [???]",
Expand Down
27 changes: 0 additions & 27 deletions pmacApp/src/pmacController.h
Original file line number Diff line number Diff line change
Expand Up @@ -622,33 +622,6 @@ class pmacController
static const epicsUInt32 PMAC_STATUS2_NA14;
static const epicsUInt32 PMAC_STATUS2_ASSIGNED_CS;

/*Global status ???*/
static const epicsUInt32 PMAC_GSTATUS_CARD_ADDR;
static const epicsUInt32 PMAC_GSTATUS_ALL_CARD_ADDR;
static const epicsUInt32 PMAC_GSTATUS_RESERVED;
static const epicsUInt32 PMAC_GSTATUS_PHASE_CLK_MISS;
static const epicsUInt32 PMAC_GSTATUS_MACRO_RING_ERRORCHECK;
static const epicsUInt32 PMAC_GSTATUS_MACRO_RING_COMMS;
static const epicsUInt32 PMAC_GSTATUS_TWS_PARITY_ERROR;
static const epicsUInt32 PMAC_GSTATUS_CONFIG_ERROR;
static const epicsUInt32 PMAC_GSTATUS_ILLEGAL_LVAR;
static const epicsUInt32 PMAC_GSTATUS_REALTIME_INTR;
static const epicsUInt32 PMAC_GSTATUS_FLASH_ERROR;
static const epicsUInt32 PMAC_GSTATUS_DPRAM_ERROR;
static const epicsUInt32 PMAC_GSTATUS_CKSUM_ACTIVE;
static const epicsUInt32 PMAC_GSTATUS_CKSUM_ERROR;
static const epicsUInt32 PMAC_GSTATUS_LEADSCREW_COMP;
static const epicsUInt32 PMAC_GSTATUS_WATCHDOG;
static const epicsUInt32 PMAC_GSTATUS_SERVO_REQ;
static const epicsUInt32 PMAC_GSTATUS_DATA_GATHER_START;
static const epicsUInt32 PMAC_GSTATUS_RESERVED2;
static const epicsUInt32 PMAC_GSTATUS_DATA_GATHER_ON;
static const epicsUInt32 PMAC_GSTATUS_SERVO_ERROR;
static const epicsUInt32 PMAC_GSTATUS_CPUTYPE;
static const epicsUInt32 PMAC_GSTATUS_REALTIME_INTR_RE;
static const epicsUInt32 PMAC_GSTATUS_RESERVED3;

static const epicsUInt32 PMAC_HARDWARE_PROB;
static const epicsUInt32 PMAX_AXIS_GENERAL_PROB1;
static const epicsUInt32 PMAX_AXIS_GENERAL_PROB2;

Expand Down
2 changes: 2 additions & 0 deletions pmacApp/src/pmacHardwareInterface.h
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,8 @@ class pmacHardwareInterface {

virtual std::string getGlobalStatusCmd() = 0;

virtual int getGlobalStatusError() = 0;

virtual asynStatus parseGlobalStatus(const std::string &statusString, globalStatus &status) = 0;

virtual std::string getAxisStatusCmd(int axis) = 0;
Expand Down
34 changes: 34 additions & 0 deletions pmacApp/src/pmacHardwarePower.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,36 @@ const int pmacHardwarePower::PMAC_STATUS1_IN_POSITION = (0x1 << 11);
const int pmacHardwarePower::PMAC_STATUS1_BLOCK_REQUEST = (0x1 << 9);
const int pmacHardwarePower::PMAC_STATUS1_PHASED_MOTOR = (0x1 << 8);

/*Global status ?*/
const int pmacHardwarePower::PMAC_GSTATUS_FOREGROUND_WDT_FAULT = (0x1 << 0); // Foreground soft watchdog timer fault - WDTFault bit 0
const int pmacHardwarePower::PMAC_GSTATUS_BACKGROUND_WDT_FAULT = (0x1 << 1); // Background soft watchdog timer fault - WDTFault bit 1
const int pmacHardwarePower::PMAC_GSTATUS_PWR_ON_FAULT = (0x1 << 2); // Power-up/reset load fault - PwrOnFault
const int pmacHardwarePower::PMAC_GSTATUS_PROJECT_LOAD_ERROR = (0x1 << 3); // Project load error - ProjectLoadErr
const int pmacHardwarePower::PMAC_GSTATUS_CONFIG_LOAD_ERROR = (0x1 << 4); // Saved configuration load error - ConfigLoadErr
const int pmacHardwarePower::PMAC_GSTATUS_HW_CHANGE_ERROR = (0x1 << 5); // Hardware change detected - HWChangeErr
const int pmacHardwarePower::PMAC_GSTATUS_FILE_CONFIG_ERROR = (0x1 << 6); // System file configuration error - FileConfigErr
const int pmacHardwarePower::PMAC_GSTATUS_DEFAULT = (0x1 << 7); // Factory default configuration set - Default
const int pmacHardwarePower::PMAC_GSTATUS_NO_CLOCKS = (0x1 << 8); // No system clocks found - NoClocks
const int pmacHardwarePower::PMAC_GSTATUS_ABORTALL = (0x1 << 9); // “Abort all” input - AbortAll
const int pmacHardwarePower::PMAC_GSTATUS_BUF_SIZE_ERROR = (0x1 << 10); // Insufficient user buffer size error - BufSizeErr
const int pmacHardwarePower::PMAC_GSTATUS_FLASH_SIZE_ERROR = (0x1 << 11); // Insufficient flash size error - FlashSizeErr
const int pmacHardwarePower::PMAC_GSTATUS_CK3W_CONFIG_ERROR0 = (0x1 << 12); // CK3W module configuration error - CK3WConfigErr bit 0
const int pmacHardwarePower::PMAC_GSTATUS_CK3W_CONFIG_ERROR1 = (0x1 << 13); // CK3W module configuration error - CK3WConfigErr bit 1
const int pmacHardwarePower::PMAC_GSTATUS_CK3W_CONFIG_ERROR2 = (0x1 << 14); // CK3W module configuration error - CK3WConfigErr bit 2
const int pmacHardwarePower::PMAC_GSTATUS_CK3W_HW_CHANGE = (0x1 << 15); // CK3W module change detected - CK3WHWChange

const int pmacHardwarePower::PMAC_HARDWARE_PROB = (PMAC_GSTATUS_FOREGROUND_WDT_FAULT |
PMAC_GSTATUS_BACKGROUND_WDT_FAULT |
PMAC_GSTATUS_PROJECT_LOAD_ERROR |
PMAC_GSTATUS_CONFIG_LOAD_ERROR |
PMAC_GSTATUS_HW_CHANGE_ERROR |
PMAC_GSTATUS_FILE_CONFIG_ERROR |
PMAC_GSTATUS_NO_CLOCKS |
//PMAC_GSTATUS_ABORTALL | // Not included to not affect CS that ignores the abort input (Coord[x].AbortAllMode=3)
PMAC_GSTATUS_BUF_SIZE_ERROR |
PMAC_GSTATUS_FLASH_SIZE_ERROR);


pmacHardwarePower::pmacHardwarePower() : pmacDebugger("pmacHardwarePower") {
}

Expand All @@ -51,6 +81,10 @@ std::string pmacHardwarePower::getGlobalStatusCmd() {
return GLOBAL_STATUS;
}

int pmacHardwarePower::getGlobalStatusError() {
return PMAC_HARDWARE_PROB;
}

asynStatus
pmacHardwarePower::parseGlobalStatus(const std::string &statusString, globalStatus &globStatus) {
asynStatus status = asynSuccess;
Expand Down
31 changes: 31 additions & 0 deletions pmacApp/src/pmacHardwarePower.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class pmacHardwarePower : public pmacHardwareInterface, pmacDebugger {

std::string getGlobalStatusCmd();

int getGlobalStatusError();

asynStatus parseGlobalStatus(const std::string &statusString, globalStatus &globStatus);

std::string getAxisStatusCmd(int axis);
Expand Down Expand Up @@ -88,6 +90,35 @@ class pmacHardwarePower : public pmacHardwareInterface, pmacDebugger {
static const int PMAC_STATUS1_BLOCK_REQUEST;
static const int PMAC_STATUS1_PHASED_MOTOR;

/*Global status ?*/
static const int PMAC_GSTATUS_FOREGROUND_WDT_FAULT; // (0x1 << 0);
static const int PMAC_GSTATUS_BACKGROUND_WDT_FAULT; // (0x1 << 1);
static const int PMAC_GSTATUS_PWR_ON_FAULT; // (0x1 << 2);
static const int PMAC_GSTATUS_PROJECT_LOAD_ERROR; // (0x1 << 3);
static const int PMAC_GSTATUS_CONFIG_LOAD_ERROR; // (0x1 << 4);
static const int PMAC_GSTATUS_HW_CHANGE_ERROR; // (0x1 << 5);
static const int PMAC_GSTATUS_FILE_CONFIG_ERROR; // (0x1 << 6);
static const int PMAC_GSTATUS_DEFAULT; // (0x1 << 7);
static const int PMAC_GSTATUS_NO_CLOCKS; // (0x1 << 8);
static const int PMAC_GSTATUS_ABORTALL; // (0x1 << 9);
static const int PMAC_GSTATUS_BUF_SIZE_ERROR; // (0x1 << 10);
static const int PMAC_GSTATUS_FLASH_SIZE_ERROR; // (0x1 << 11);
static const int PMAC_GSTATUS_CK3W_CONFIG_ERROR0; // (0x1 << 12);
static const int PMAC_GSTATUS_CK3W_CONFIG_ERROR1; // (0x1 << 13);
static const int PMAC_GSTATUS_CK3W_CONFIG_ERROR2; // (0x1 << 14);
static const int PMAC_GSTATUS_CK3W_HW_CHANGE; // (0x1 << 15);

static const int PMAC_HARDWARE_PROB; // (PMAC_GSTATUS_FOREGROUND_WDT_FAULT |
// PMAC_GSTATUS_BACKGROUND_WDT_FAULT |
// PMAC_GSTATUS_PROJECT_LOAD_ERROR |
// PMAC_GSTATUS_CONFIG_LOAD_ERROR |
// PMAC_GSTATUS_HW_CHANGE_ERROR |
// PMAC_GSTATUS_FILE_CONFIG_ERROR |
// PMAC_GSTATUS_NO_CLOCKS |
// //PMAC_GSTATUS_ABORTALL |
// PMAC_GSTATUS_BUF_SIZE_ERROR |
// PMAC_GSTATUS_FLASH_SIZE_ERROR);

};

#endif /* PMACAPP_SRC_PMACHARDWAREPOWER_H_ */
37 changes: 37 additions & 0 deletions pmacApp/src/pmacHardwareTurbo.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,39 @@ const int pmacHardwareTurbo::CS_STATUS2_LOOKAHEAD = (0x1 << 23);

const int pmacHardwareTurbo::CS_STATUS3_LIMIT = (0x1 << 1);

/*Global status ?*/
const int pmacHardwareTurbo::PMAC_GSTATUS_CARD_ADDR = (0x1 << 0);
const int pmacHardwareTurbo::PMAC_GSTATUS_ALL_CARD_ADDR = (0x1 << 1);
const int pmacHardwareTurbo::PMAC_GSTATUS_RESERVED = (0x1 << 2);
const int pmacHardwareTurbo::PMAC_GSTATUS_PHASE_CLK_MISS = (0x1 << 3);
const int pmacHardwareTurbo::PMAC_GSTATUS_MACRO_RING_ERRORCHECK = (0x1 << 4);
const int pmacHardwareTurbo::PMAC_GSTATUS_MACRO_RING_COMMS = (0x1 << 5);
const int pmacHardwareTurbo::PMAC_GSTATUS_TWS_PARITY_ERROR = (0x1 << 6);
const int pmacHardwareTurbo::PMAC_GSTATUS_CONFIG_ERROR = (0x1 << 7);
const int pmacHardwareTurbo::PMAC_GSTATUS_ILLEGAL_LVAR = (0x1 << 8);
const int pmacHardwareTurbo::PMAC_GSTATUS_REALTIME_INTR = (0x1 << 9);
const int pmacHardwareTurbo::PMAC_GSTATUS_FLASH_ERROR = (0x1 << 10);
const int pmacHardwareTurbo::PMAC_GSTATUS_DPRAM_ERROR = (0x1 << 11);
const int pmacHardwareTurbo::PMAC_GSTATUS_CKSUM_ACTIVE = (0x1 << 12);
const int pmacHardwareTurbo::PMAC_GSTATUS_CKSUM_ERROR = (0x1 << 13);
const int pmacHardwareTurbo::PMAC_GSTATUS_LEADSCREW_COMP = (0x1 << 14);
const int pmacHardwareTurbo::PMAC_GSTATUS_WATCHDOG = (0x1 << 15);
const int pmacHardwareTurbo::PMAC_GSTATUS_SERVO_REQ = (0x1 << 16);
const int pmacHardwareTurbo::PMAC_GSTATUS_DATA_GATHER_START = (0x1 << 17);
const int pmacHardwareTurbo::PMAC_GSTATUS_RESERVED2 = (0x1 << 18);
const int pmacHardwareTurbo::PMAC_GSTATUS_DATA_GATHER_ON = (0x1 << 19);
const int pmacHardwareTurbo::PMAC_GSTATUS_SERVO_ERROR = (0x1 << 20);
const int pmacHardwareTurbo::PMAC_GSTATUS_CPUTYPE = (0x1 << 21);
const int pmacHardwareTurbo::PMAC_GSTATUS_REALTIME_INTR_RE = (0x1 << 22);
const int pmacHardwareTurbo::PMAC_GSTATUS_RESERVED3 = (0x1 << 23);

const int pmacHardwareTurbo::PMAC_HARDWARE_PROB = (PMAC_GSTATUS_REALTIME_INTR |
PMAC_GSTATUS_FLASH_ERROR |
PMAC_GSTATUS_DPRAM_ERROR |
PMAC_GSTATUS_CKSUM_ERROR |
PMAC_GSTATUS_WATCHDOG |
PMAC_GSTATUS_SERVO_ERROR);

pmacHardwareTurbo::pmacHardwareTurbo() : pmacDebugger("pmacHardwareTurbo") {
}

Expand All @@ -120,6 +153,10 @@ std::string pmacHardwareTurbo::getGlobalStatusCmd() {
return GLOBAL_STATUS;
}

int pmacHardwareTurbo::getGlobalStatusError() {
return PMAC_HARDWARE_PROB;
}

asynStatus
pmacHardwareTurbo::parseGlobalStatus(const std::string &statusString, globalStatus &globStatus) {
asynStatus status = asynSuccess;
Expand Down
35 changes: 35 additions & 0 deletions pmacApp/src/pmacHardwareTurbo.h
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ class pmacHardwareTurbo : public pmacHardwareInterface, pmacDebugger {

std::string getGlobalStatusCmd();

int getGlobalStatusError();

asynStatus parseGlobalStatus(const std::string &statusString, globalStatus &globStatus);

std::string getAxisStatusCmd(int axis);
Expand Down Expand Up @@ -160,6 +162,39 @@ class pmacHardwareTurbo : public pmacHardwareInterface, pmacDebugger {

static const int CS_STATUS3_LIMIT; // (0x1<<1)

/*Global status ???*/
static const int PMAC_GSTATUS_CARD_ADDR; // (0x1 << 0)
static const int PMAC_GSTATUS_ALL_CARD_ADDR; // (0x1 << 1)
static const int PMAC_GSTATUS_RESERVED; // (0x1 << 2)
static const int PMAC_GSTATUS_PHASE_CLK_MISS; // (0x1 << 3)
static const int PMAC_GSTATUS_MACRO_RING_ERRORCHECK; // (0x1 << 4)
static const int PMAC_GSTATUS_MACRO_RING_COMMS; // (0x1 << 5)
static const int PMAC_GSTATUS_TWS_PARITY_ERROR; // (0x1 << 6)
static const int PMAC_GSTATUS_CONFIG_ERROR; // (0x1 << 7)
static const int PMAC_GSTATUS_ILLEGAL_LVAR; // (0x1 << 8)
static const int PMAC_GSTATUS_REALTIME_INTR; // (0x1 << 9)
static const int PMAC_GSTATUS_FLASH_ERROR; // (0x1 << 10)
static const int PMAC_GSTATUS_DPRAM_ERROR; // (0x1 << 11)
static const int PMAC_GSTATUS_CKSUM_ACTIVE; // (0x1 << 12)
static const int PMAC_GSTATUS_CKSUM_ERROR; // (0x1 << 13)
static const int PMAC_GSTATUS_LEADSCREW_COMP; // (0x1 << 14)
static const int PMAC_GSTATUS_WATCHDOG; // (0x1 << 15)
static const int PMAC_GSTATUS_SERVO_REQ; // (0x1 << 16)
static const int PMAC_GSTATUS_DATA_GATHER_START; // (0x1 << 17)
static const int PMAC_GSTATUS_RESERVED2; // (0x1 << 18)
static const int PMAC_GSTATUS_DATA_GATHER_ON; // (0x1 << 19)
static const int PMAC_GSTATUS_SERVO_ERROR; // (0x1 << 20)
static const int PMAC_GSTATUS_CPUTYPE; // (0x1 << 21)
static const int PMAC_GSTATUS_REALTIME_INTR_RE; // (0x1 << 22)
static const int PMAC_GSTATUS_RESERVED3; // (0x1 << 23)

static const int PMAC_HARDWARE_PROB; // (PMAC_GSTATUS_REALTIME_INTR |
// PMAC_GSTATUS_FLASH_ERROR |
// PMAC_GSTATUS_DPRAM_ERROR |
// PMAC_GSTATUS_CKSUM_ERROR |
// PMAC_GSTATUS_WATCHDOG |
// PMAC_GSTATUS_SERVO_ERROR);

};

#endif /* PMACAPP_SRC_PMACHARDWARETURBO_H_ */