epics-modules / Dante

EPICS module for support of Dante digital pulse processors
1 stars 4 forks source link

Boards that are disabled in EPICS should also be disabled with disableBoard() #23

Closed MarkRivers closed 3 years ago

MarkRivers commented 3 years ago

Currently disabling a board only disables it in EPICS. It should also be disabled in the library to improve performance.

I will work on this.

MarkRivers commented 3 years ago

I tested this and it does not work.

I just added the 2 commented out lines below:

    else if (function == DanteEnableBoard) {
        activeBoards_.clear();
        for (int board=0; board<totalBoards_; board++) {
            int enable;
            getIntegerParam(board, DanteEnableBoard, &enable);
            if (enable) {
                activeBoards_.push_back(board);
//                disableBoard(danteIdentifier_, board, false);
            } else {
//                disableBoard(danteIdentifier_, board, true);
            }
        }
    }

I would have expected this to work.

Is it possible that disableBoard can only disable a board if the argument is true, but cannot re-enable it if the argument is false. It seems like that is what is happening. If those 2 lines are uncommented the system freezes and nothing works.

MarkRivers commented 3 years ago

This has been fixed in dante.cpp.