diff --git a/vmmTblApp/src/vmm_tbl.cpp b/vmmTblApp/src/vmm_tbl.cpp index b2c535efbd33681fd10a2c6490adf3cfee20853a..d890ff756805900b7ce55cdaf4a861b9905b7d13 100644 --- a/vmmTblApp/src/vmm_tbl.cpp +++ b/vmmTblApp/src/vmm_tbl.cpp @@ -286,6 +286,24 @@ asynStatus VMMTbl::readInt8Array(asynUser *pasynUser, epicsInt8 *value, size_t n if (function < FIRST_VMM_PARAM) return asynPortDriver::readInt8Array(pasynUser, value, nElements, nIn); + found_param = VecUtils::getIndex(vmmSC_, function, hyb_index, vmm_index); + if (found_param == 0) { + for (size_t i = 0; i < nElements; i++) { + status |= (int)this->pVmmAPI->getSC(hyb_index, vmm_index, i, data); + value[i] = data; + } + goto endOfReadInt8Array; + } + + found_param = VecUtils::getIndex(vmmSL_, function, hyb_index, vmm_index); + if (found_param == 0) { + for (size_t i = 0; i < nElements; i++) { + status |= (int)this->pVmmAPI->getSL(hyb_index, vmm_index, i, data); + value[i] = data; + } + goto endOfReadInt8Array; + } + found_param = VecUtils::getIndex(vmmST_, function, hyb_index, vmm_index); if (found_param == 0) { for (size_t i = 0; i < nElements; i++) { @@ -295,6 +313,33 @@ asynStatus VMMTbl::readInt8Array(asynUser *pasynUser, epicsInt8 *value, size_t n goto endOfReadInt8Array; } + found_param = VecUtils::getIndex(vmmSTH_, function, hyb_index, vmm_index); + if (found_param == 0) { + for (size_t i = 0; i < nElements; i++) { + status |= (int)this->pVmmAPI->getSTH(hyb_index, vmm_index, i, data); + value[i] = data; + } + goto endOfReadInt8Array; + } + + found_param = VecUtils::getIndex(vmmSM_, function, hyb_index, vmm_index); + if (found_param == 0) { + for (size_t i = 0; i < nElements; i++) { + status |= (int)this->pVmmAPI->getSM(hyb_index, vmm_index, i, data); + value[i] = data; + } + goto endOfReadInt8Array; + } + + found_param = VecUtils::getIndex(vmmSMX_, function, hyb_index, vmm_index); + if (found_param == 0) { + for (size_t i = 0; i < nElements; i++) { + status |= (int)this->pVmmAPI->getSMX(hyb_index, vmm_index, i, data); + value[i] = data; + } + goto endOfReadInt8Array; + } + endOfReadInt8Array: if (found_param != 0) { asynPrint(pasynUserSelf, ASYN_TRACE_ERROR, @@ -328,6 +373,22 @@ asynStatus VMMTbl::writeInt8Array(asynUser *pasynUser, epicsInt8 *value, size_t if (function < FIRST_VMM_PARAM) return asynPortDriver::writeInt8Array(pasynUser, value, nElements); + found_param = VecUtils::getIndex(vmmSC_, function, hyb_index, vmm_index); + if (found_param == 0) { + for (size_t i = 0; i < nElements; i++) { + status |= (int)this->pVmmAPI->setSC(hyb_index, vmm_index, i, (bool)value[i]); + } + goto endOfWriteInt8Array; + } + + found_param = VecUtils::getIndex(vmmSL_, function, hyb_index, vmm_index); + if (found_param == 0) { + for (size_t i = 0; i < nElements; i++) { + status |= (int)this->pVmmAPI->setSL(hyb_index, vmm_index, i, (bool)value[i]); + } + goto endOfWriteInt8Array; + } + found_param = VecUtils::getIndex(vmmST_, function, hyb_index, vmm_index); if (found_param == 0) { for (size_t i = 0; i < nElements; i++) { @@ -336,6 +397,30 @@ asynStatus VMMTbl::writeInt8Array(asynUser *pasynUser, epicsInt8 *value, size_t goto endOfWriteInt8Array; } + found_param = VecUtils::getIndex(vmmSTH_, function, hyb_index, vmm_index); + if (found_param == 0) { + for (size_t i = 0; i < nElements; i++) { + status |= (int)this->pVmmAPI->setSTH(hyb_index, vmm_index, i, (bool)value[i]); + } + goto endOfWriteInt8Array; + } + + found_param = VecUtils::getIndex(vmmSM_, function, hyb_index, vmm_index); + if (found_param == 0) { + for (size_t i = 0; i < nElements; i++) { + status |= (int)this->pVmmAPI->setSM(hyb_index, vmm_index, i, (bool)value[i]); + } + goto endOfWriteInt8Array; + } + + found_param = VecUtils::getIndex(vmmSMX_, function, hyb_index, vmm_index); + if (found_param == 0) { + for (size_t i = 0; i < nElements; i++) { + status |= (int)this->pVmmAPI->setSMX(hyb_index, vmm_index, i, (bool)value[i]); + } + goto endOfWriteInt8Array; + } + endOfWriteInt8Array: status |= (int)doCallbacksInt8Array(value, nElements, function, 0); // Comparing different statuses, yes. if (found_param != 0) {