From a8b87b4a8f14f21011ac326eed01be7ceaf82b6e Mon Sep 17 00:00:00 2001 From: cvs <sdos@astron.nl> Date: Tue, 13 Jun 2006 07:36:16 +0000 Subject: [PATCH] %lofarcvsmv%: Moved to LOFAR/JAVA/MAC/jRSP --- .../nl_astron_lofar_mac_apl_gui_jrsp_Board.cc | 656 ------------------ 1 file changed, 656 deletions(-) delete mode 100644 MAC/APL/GUI/jRSP/src/nl_astron_lofar_mac_apl_gui_jrsp_Board.cc diff --git a/MAC/APL/GUI/jRSP/src/nl_astron_lofar_mac_apl_gui_jrsp_Board.cc b/MAC/APL/GUI/jRSP/src/nl_astron_lofar_mac_apl_gui_jrsp_Board.cc deleted file mode 100644 index 1d65c30806d..00000000000 --- a/MAC/APL/GUI/jRSP/src/nl_astron_lofar_mac_apl_gui_jrsp_Board.cc +++ /dev/null @@ -1,656 +0,0 @@ -// Always include lofar_config.h -#include <lofar_config.h> - -// Includes -#include <jRSP/nl_astron_lofar_mac_apl_gui_jrsp_Board.h> -#include <RSP/RSPport.h> -using namespace LOFAR; -using namespace LOFAR::RSP; - -#include <cstdio> -#include <iostream> -using namespace std; - -// Define function's -jobject ConvertBoardStatus(JNIEnv*, BoardStatus&); - -/** - * Returns a pointer to a new instance of RSPport. The returned pointer can be - * used by the other functions to call functions from RSPport without using - * a different RSPport. - * Every RSPport makes a connection with the RSP driver, so we only want one - * RSPport. - * @param env The java environment interface pointer. - * @param obj The "this" pointer. - * @return ptrRSPport Pointer to the RSPport object. - */ -JNIEXPORT jint JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_init(JNIEnv * env, jobject obj, jstring hostname) -{ - // Convert the jstring hostname to a C++ string. - const char * charsHostname = env->GetStringUTFChars(hostname, 0); - string strHostname (charsHostname); - - RSPport * IOport; - jint ptrRSPport = 0; // the return value, pointer to RSPport. - - try { - IOport = new RSPport(strHostname); - ptrRSPport = (jint)IOport; // set return value to pointer. - } catch (exception &ex) { - env->ThrowNew(env->FindClass("java/lang/Exception"), ex.what()); - } - - // Free local references. - env->ReleaseStringUTFChars(hostname, charsHostname); - - return ptrRSPport; -} - -/** - * Deletes the instance of RSPport we have created in init() based on the jint - * we have passed with this method. - * @param env The Java environment interface pointer. - * @param obj The "this" pointer. - * @param ptrRSPport Pointer to the RSPport that will be deleted. - */ -JNIEXPORT void JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_delete(JNIEnv * env, jobject obj, jint ptrRSPport) { - RSPport * IOport = (RSPport*)ptrRSPport; - delete(IOport); -} - -/** - * Implementation of the JNI method declared in the java file (nl.astron.lofar.mac.apl.gui.jrsp.Board). - * This function fills a BoardStatus object, that is returned by this method, with data from RSPIO. - * @param env The Java environment interface pointer. - * @param obj The "this" pointer. - * @param ptrRSPport Pointer to the RSPport that should be used. - * @return status A array of StatusBoard class instances filled with information. - */ -JNIEXPORT jobjectArray JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_retrieveStatus(JNIEnv * env, jobject obj, jint rcuMask, jint ptrRSPport) -{ - // Use RSPport to get a vector with BoardStatus. - vector<BoardStatus> vecBoardStatus; - - RSPport * IOport = (RSPport*)ptrRSPport; - vecBoardStatus = IOport->getBoardStatus(rcuMask); - - // The jobjectArray that is going to be returned. - jobjectArray arrBoardStatus = (jobjectArray)env->NewObjectArray(vecBoardStatus.size(), env->FindClass("nl/astron/lofar/mac/apl/gui/jrsp/BoardStatus"), NULL); - - for(uint i=0; i<vecBoardStatus.size(); i++) - { - env->SetObjectArrayElement(arrBoardStatus, i, ConvertBoardStatus(env, vecBoardStatus[i])); - } - - return arrBoardStatus; -} - -/** - * This method converts an C++ BoardStatus to a Java BoardStatus. - * @param BoardStatus C++ BoardStatus - * @return jobject Java BoardStatus - */ -jobject ConvertBoardStatus(JNIEnv * env, BoardStatus &boardStatus) -{ - // TODO: Deze code buiten deze functie plaatsen zodat het niet vaker dan een keer aangeroepen hoeft te worden. - // Get a reference to the class of the status (BoardStatus). - jclass clsStatus = env->FindClass("nl/astron/lofar/mac/apl/gui/jrsp/BoardStatus"); - if(clsStatus == NULL) - { - return NULL; - } - static jmethodID sbConstructorId = env->GetMethodID(clsStatus, "<init>", "()V"); - if(sbConstructorId == NULL) - { - return NULL; - } - jobject status = env->NewObject(clsStatus, sbConstructorId, NULL); - - // Get field identifiers for the member variables of the StatusBoard class. - jfieldID fidVoltage1V2 = env->GetFieldID(clsStatus, "voltage1V2", "D"); - jfieldID fidVoltage2V5 = env->GetFieldID(clsStatus, "voltage2V5", "D"); - jfieldID fidVoltage3V3 = env->GetFieldID(clsStatus, "voltage3V3", "D"); - jfieldID fidPcbTemp = env->GetFieldID(clsStatus, "pcbTemp", "S"); - jfieldID fidBpTemp = env->GetFieldID(clsStatus, "bpTemp", "S"); - jfieldID fidAp0Temp = env->GetFieldID(clsStatus, "ap0Temp", "S"); - jfieldID fidAp1Temp = env->GetFieldID(clsStatus, "ap1Temp", "S"); - jfieldID fidAp2Temp = env->GetFieldID(clsStatus, "ap2Temp", "S"); - jfieldID fidAp3Temp = env->GetFieldID(clsStatus, "ap3Temp", "S"); - jfieldID fidBpClock = env->GetFieldID(clsStatus, "bpClock", "S"); - jfieldID fidNofFrames = env->GetFieldID(clsStatus, "nofFrames", "I"); - jfieldID fidNofErrors = env->GetFieldID(clsStatus, "nofErrors", "I"); - jfieldID fidLastError = env->GetFieldID(clsStatus, "lastError", "S"); - jfieldID fidSeqNr = env->GetFieldID(clsStatus, "seqNr", "I"); - jfieldID fidError = env->GetFieldID(clsStatus, "error", "S"); - jfieldID fidIfUnderTest = env->GetFieldID(clsStatus, "ifUnderTest", "S"); - jfieldID fidMode = env->GetFieldID(clsStatus, "mode", "S"); - jfieldID fidRiErrors = env->GetFieldID(clsStatus, "riErrors", "I"); - jfieldID fidRcuxErrors = env->GetFieldID(clsStatus, "rcuxErrors", "I"); - jfieldID fidRcuyErrors = env->GetFieldID(clsStatus, "rcuyErrors", "I"); - jfieldID fidLcuErrors = env->GetFieldID(clsStatus, "lcuErrors", "I"); - jfieldID fidCepErrors = env->GetFieldID(clsStatus, "cepErrors", "I"); - jfieldID fidSerdesErrors = env->GetFieldID(clsStatus, "serdesErrors", "I"); - jfieldID fidAp0RiErrors = env->GetFieldID(clsStatus, "ap0RiErrors", "I"); - jfieldID fidAp1RiErrors = env->GetFieldID(clsStatus, "ap1RiErrors", "I"); - jfieldID fidAp2RiErrors = env->GetFieldID(clsStatus, "ap2RiErrors", "I"); - jfieldID fidAp3RiErrors = env->GetFieldID(clsStatus, "ap3RiErrors", "I"); - jfieldID fidBlp0Sync = env->GetFieldID(clsStatus, "blp0Sync", "Lnl/astron/lofar/mac/apl/gui/jrsp/SyncStatus;"); - jfieldID fidBlp1Sync = env->GetFieldID(clsStatus, "blp1Sync", "Lnl/astron/lofar/mac/apl/gui/jrsp/SyncStatus;"); - jfieldID fidBlp2Sync = env->GetFieldID(clsStatus, "blp2Sync", "Lnl/astron/lofar/mac/apl/gui/jrsp/SyncStatus;"); - jfieldID fidBlp3Sync = env->GetFieldID(clsStatus, "blp3Sync", "Lnl/astron/lofar/mac/apl/gui/jrsp/SyncStatus;"); - jfieldID fidBlp0Rcu = env->GetFieldID(clsStatus, "blp0Rcu", "Lnl/astron/lofar/mac/apl/gui/jrsp/RCUStatus;"); - jfieldID fidBlp1Rcu = env->GetFieldID(clsStatus, "blp1Rcu", "Lnl/astron/lofar/mac/apl/gui/jrsp/RCUStatus;"); - jfieldID fidBlp2Rcu = env->GetFieldID(clsStatus, "blp2Rcu", "Lnl/astron/lofar/mac/apl/gui/jrsp/RCUStatus;"); - jfieldID fidBlp3Rcu = env->GetFieldID(clsStatus, "blp3Rcu", "Lnl/astron/lofar/mac/apl/gui/jrsp/RCUStatus;"); - jfieldID fidCpRdy = env->GetFieldID(clsStatus, "cpRdy", "Z"); - jfieldID fidCpErr = env->GetFieldID(clsStatus, "cpErr", "Z"); - jfieldID fidCpFpga = env->GetFieldID(clsStatus, "cpFpga", "Z"); - jfieldID fidCpIm = env->GetFieldID(clsStatus, "cpIm", "Z"); - jfieldID fidCpTrig = env->GetFieldID(clsStatus, "cpTrig", "S"); - jfieldID fidBlp0AdcOffset = env->GetFieldID(clsStatus, "blp0AdcOffset", "Lnl/astron/lofar/mac/apl/gui/jrsp/ADOStatus;"); - jfieldID fidBlp1AdcOffset = env->GetFieldID(clsStatus, "blp1AdcOffset", "Lnl/astron/lofar/mac/apl/gui/jrsp/ADOStatus;"); - jfieldID fidBlp2AdcOffset = env->GetFieldID(clsStatus, "blp2AdcOffset", "Lnl/astron/lofar/mac/apl/gui/jrsp/ADOStatus;"); - jfieldID fidBlp3AdcOffset = env->GetFieldID(clsStatus, "blp3AdcOffset", "Lnl/astron/lofar/mac/apl/gui/jrsp/ADOStatus;"); - - // Access fields and fill them - if(fidVoltage1V2 != 0) - { - env->SetDoubleField(status, fidVoltage1V2, boardStatus.rsp.voltage_1_2 / 192.0 * 2.5); - } - if(fidVoltage2V5 != 0) - { - env->SetDoubleField(status, fidVoltage2V5, boardStatus.rsp.voltage_2_5 / 192.0 * 3.3); - } - if(fidVoltage3V3 != 0) - { - env->SetDoubleField(status, fidVoltage3V3, boardStatus.rsp.voltage_3_3 / 192.0 * 5.0); - } - if(fidPcbTemp != 0) - { - env->SetShortField(status, fidPcbTemp, boardStatus.rsp.pcb_temp); - } - if(fidBpTemp != 0) - { - env->SetShortField(status, fidBpTemp, boardStatus.rsp.bp_temp); - } - if(fidAp0Temp != 0) - { - env->SetShortField(status, fidAp0Temp, boardStatus.rsp.ap0_temp); - } - if(fidAp1Temp != 0) - { - env->SetShortField(status, fidAp1Temp, boardStatus.rsp.ap1_temp); - } - if(fidAp2Temp != 0) - { - env->SetShortField(status, fidAp2Temp, boardStatus.rsp.ap2_temp); - } - if(fidAp3Temp != 0) - { - env->SetShortField(status, fidAp3Temp, boardStatus.rsp.ap3_temp); - } - if(fidBpClock != 0) - { - env->SetShortField(status, fidBpClock, boardStatus.rsp.bp_clock); - } - if(fidNofFrames != 0) - { - env->SetIntField(status, fidNofFrames, boardStatus.eth.nof_frames); - } - if(fidNofErrors != 0) - { - env->SetIntField(status, fidNofErrors, boardStatus.eth.nof_errors); - } - if(fidLastError != 0) - { - env->SetShortField(status, fidLastError, boardStatus.eth.last_error); - } - if(fidSeqNr != 0) - { - env->SetIntField(status, fidSeqNr, boardStatus.mep.seqnr); - } - if(fidError != 0) - { - env->SetShortField(status, fidError, boardStatus.mep.error); - } - if(fidIfUnderTest != 0) - { - env->SetShortField(status, fidIfUnderTest, boardStatus.diag.interface); - } - if(fidMode != 0) - { - env->SetShortField(status, fidMode, boardStatus.diag.mode); - } - if(fidRiErrors != 0) - { - env->SetIntField(status, fidRiErrors, boardStatus.diag.ri_errors); - } - if(fidRcuxErrors != 0) - { - env->SetIntField(status, fidRcuxErrors, boardStatus.diag.rcux_errors); - } - if(fidRcuyErrors != 0) - { - env->SetIntField(status, fidRcuyErrors, boardStatus.diag.rcuy_errors); - } - if(fidLcuErrors != 0) - { - env->SetIntField(status, fidLcuErrors, boardStatus.diag.lcu_errors); - } - if(fidCepErrors != 0) - { - env->SetIntField(status, fidCepErrors, boardStatus.diag.cep_errors); - } - if(fidSerdesErrors != 0) - { - env->SetIntField(status, fidSerdesErrors, boardStatus.diag.serdes_errors); - } - if(fidAp0RiErrors != 0) - { - env->SetIntField(status, fidAp0RiErrors, boardStatus.diag.ap0_ri_errors); - } - if(fidAp1RiErrors != 0) - { - env->SetIntField(status, fidAp1RiErrors, boardStatus.diag.ap1_ri_errors); - } - if(fidAp2RiErrors != 0) - { - env->SetIntField(status, fidAp2RiErrors, boardStatus.diag.ap2_ri_errors); - } - if(fidAp3RiErrors != 0) - { - env->SetIntField(status, fidAp3RiErrors, boardStatus.diag.ap3_ri_errors); - } - - // SyncStatus: blp0Sync - blp3Sync - jclass clsSyncStatus = env->FindClass("nl/astron/lofar/mac/apl/gui/jrsp/SyncStatus"); - jfieldID fidExtCount = env->GetFieldID(clsSyncStatus, "extCount", "I"); - jfieldID fidSyncCount = env->GetFieldID(clsSyncStatus, "syncCount", "I"); - jfieldID fidSampleOffset = env->GetFieldID(clsSyncStatus, "sampleOffset", "I"); - jfieldID fidSliceCount = env->GetFieldID(clsSyncStatus, "sliceCount", "I"); - - if(fidBlp0Sync != 0) - { - jobject objBlp0Sync = env->GetObjectField(status, fidBlp0Sync); - if(fidExtCount != 0 && fidSyncCount != 0 && fidSampleOffset != 0 && fidSliceCount != 0) - { - env->SetIntField(objBlp0Sync, fidExtCount, boardStatus.ap0_sync.ext_count); - env->SetIntField(objBlp0Sync, fidSyncCount, boardStatus.ap0_sync.sync_count); - env->SetIntField(objBlp0Sync, fidSampleOffset, boardStatus.ap0_sync.sample_offset); - env->SetIntField(objBlp0Sync, fidSliceCount, boardStatus.ap0_sync.slice_count); - } - } - - if(fidBlp1Sync != 0) - { - jobject objBlp1Sync = env->GetObjectField(status, fidBlp1Sync); - if(fidExtCount != 0 && fidSyncCount != 0 && fidSampleOffset != 0 && fidSliceCount != 0) - { - env->SetIntField(objBlp1Sync, fidExtCount, boardStatus.ap1_sync.ext_count); - env->SetIntField(objBlp1Sync, fidSyncCount, boardStatus.ap1_sync.sync_count); - env->SetIntField(objBlp1Sync, fidSampleOffset, boardStatus.ap1_sync.sample_offset); - env->SetIntField(objBlp1Sync, fidSliceCount, boardStatus.ap1_sync.slice_count); - } - } - - if(fidBlp2Sync != 0) - { - jobject objBlp2Sync = env->GetObjectField(status, fidBlp2Sync); - if(fidExtCount != 0 && fidSyncCount != 0 && fidSampleOffset != 0 && fidSliceCount != 0) - { - env->SetIntField(objBlp2Sync, fidExtCount, boardStatus.ap2_sync.ext_count); - env->SetIntField(objBlp2Sync, fidSyncCount, boardStatus.ap2_sync.sync_count); - env->SetIntField(objBlp2Sync, fidSampleOffset, boardStatus.ap2_sync.sample_offset); - env->SetIntField(objBlp2Sync, fidSliceCount, boardStatus.ap2_sync.slice_count); - } - } - - if(fidBlp3Sync != 0) - { - jobject objBlp3Sync = env->GetObjectField(status, fidBlp3Sync); - if(fidExtCount != 0 && fidSyncCount != 0 && fidSampleOffset != 0 && fidSliceCount != 0) - { - env->SetIntField(objBlp3Sync, fidExtCount, boardStatus.ap3_sync.ext_count); - env->SetIntField(objBlp3Sync, fidSyncCount, boardStatus.ap3_sync.sync_count); - env->SetIntField(objBlp3Sync, fidSampleOffset, boardStatus.ap3_sync.sample_offset); - env->SetIntField(objBlp3Sync, fidSliceCount, boardStatus.ap3_sync.slice_count); - } - } - - // RCUStatus: blp0Rcu - blp3Rcu - jclass clsRCUStatus = env->FindClass("nl/astron/lofar/mac/apl/gui/jrsp/RCUStatus"); - jfieldID fidNofOverflowX = env->GetFieldID(clsRCUStatus, "nofOverflowX", "I"); - jfieldID fidNofOverflowY = env->GetFieldID(clsRCUStatus, "nofOverflowY", "I"); - - if(fidBlp0Rcu != 0) - { - jobject objBlp0Rcu = env->GetObjectField(status, fidBlp0Rcu); - if(fidNofOverflowX != 0 && fidNofOverflowY != 0) - { - env->SetIntField(objBlp0Rcu, fidNofOverflowX, boardStatus.blp0_rcu.nof_overflowx); - env->SetIntField(objBlp0Rcu, fidNofOverflowY, boardStatus.blp0_rcu.nof_overflowy); - } - } - - if(fidBlp1Rcu != 0) - { - jobject objBlp1Rcu = env->GetObjectField(status, fidBlp1Rcu); - if(fidNofOverflowX != 0 && fidNofOverflowY != 0) - { - env->SetIntField(objBlp1Rcu, fidNofOverflowX, boardStatus.blp1_rcu.nof_overflowx); - env->SetIntField(objBlp1Rcu, fidNofOverflowY, boardStatus.blp1_rcu.nof_overflowy); - } - } - - if(fidBlp2Rcu != 0) - { - jobject objBlp2Rcu = env->GetObjectField(status, fidBlp2Rcu); - if(fidNofOverflowX != 0 && fidNofOverflowY != 0) - { - env->SetIntField(objBlp2Rcu, fidNofOverflowX, boardStatus.blp2_rcu.nof_overflowx); - env->SetIntField(objBlp2Rcu, fidNofOverflowY, boardStatus.blp2_rcu.nof_overflowy); - } - } - - if(fidBlp3Rcu != 0) - { - jobject objBlp3Rcu = env->GetObjectField(status, fidBlp3Rcu); - if(fidNofOverflowX != 0 && fidNofOverflowY != 0) - { - env->SetIntField(objBlp3Rcu, fidNofOverflowX, boardStatus.blp3_rcu.nof_overflowx); - env->SetIntField(objBlp3Rcu, fidNofOverflowY, boardStatus.blp3_rcu.nof_overflowy); - } - } - - if(fidCpRdy != 0) - { - env->SetBooleanField(status, fidCpRdy, boardStatus.cp_status.rdy); - } - if(fidCpErr != 0) - { - env->SetBooleanField(status, fidCpErr, boardStatus.cp_status.err); - } - if(fidCpFpga != 0) - { - env->SetBooleanField(status, fidCpFpga, boardStatus.cp_status.fpga); - } - if(fidCpIm != 0) - { - env->SetBooleanField(status, fidCpIm, boardStatus.cp_status.im); - } - if(fidCpTrig != 0) - { - env->SetShortField(status, fidCpTrig, boardStatus.cp_status.trig); - } - - // ADOStatus: blp0AdcOffset - blp3AdcOffset - jclass clsADOStatus = env->FindClass("nl/astron/lofar/mac/apl/gui/jrsp/ADOStatus"); - jfieldID fidAdcOffsetX = env->GetFieldID(clsADOStatus, "adcOffsetX", "I"); - jfieldID fidAdcOffsetY = env->GetFieldID(clsADOStatus, "adcOffsetY", "I"); - - if(fidBlp0AdcOffset != 0) - { - jobject objBlp0AdcOffset = env->GetObjectField(status, fidBlp0AdcOffset); - if(fidAdcOffsetX != 0 && fidAdcOffsetY != 0) - { - env->SetIntField(objBlp0AdcOffset, fidAdcOffsetX, boardStatus.blp0_adc_offset.adc_offset_x); - env->SetIntField(objBlp0AdcOffset, fidAdcOffsetY, boardStatus.blp0_adc_offset.adc_offset_y); - } - } - if(fidBlp1AdcOffset != 0) - { - jobject objBlp1AdcOffset = env->GetObjectField(status, fidBlp1AdcOffset); - if(fidAdcOffsetX != 0 && fidAdcOffsetY != 0) - { - env->SetIntField(objBlp1AdcOffset, fidAdcOffsetX, boardStatus.blp1_adc_offset.adc_offset_x); - env->SetIntField(objBlp1AdcOffset, fidAdcOffsetY, boardStatus.blp1_adc_offset.adc_offset_y); - } - } - if(fidBlp2AdcOffset != 0) - { - jobject objBlp2AdcOffset = env->GetObjectField(status, fidBlp2AdcOffset); - if(fidAdcOffsetX != 0 && fidAdcOffsetY != 0) - { - env->SetIntField(objBlp2AdcOffset, fidAdcOffsetX, boardStatus.blp2_adc_offset.adc_offset_x); - env->SetIntField(objBlp2AdcOffset, fidAdcOffsetY, boardStatus.blp2_adc_offset.adc_offset_y); - } - } - if(fidBlp3AdcOffset != 0) - { - jobject objBlp3AdcOffset = env->GetObjectField(status, fidBlp3AdcOffset); - if(fidAdcOffsetX != 0 && fidAdcOffsetY != 0) - { - env->SetIntField(objBlp3AdcOffset, fidAdcOffsetX, boardStatus.blp3_adc_offset.adc_offset_x); - env->SetIntField(objBlp3AdcOffset, fidAdcOffsetY, boardStatus.blp3_adc_offset.adc_offset_y); - } - } - - // Free local references. - env->DeleteLocalRef(clsStatus); - - // Return status. - return status; -} - -/** - * Sets the waveform settings. - * @param env - * @param obj - * @param rcuMask - * @param mode - * @param frequency - * @param amplitude - */ -JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_setWaveformSettings(JNIEnv * env, jobject obj, jint rcuMask, jint mode, jdouble frequency, jshort phase, jint amplitude, jint ptrRSPport) -{ - RSPport * IOport = (RSPport*)ptrRSPport; - return IOport->setWaveformSettings(rcuMask, mode, frequency, phase, amplitude); -} - -/** - * Returns the subband stats. - * @param env - * @param obj - * @param rcuMask - * @param ptrRSPport - * @return jdoubleArray - */ -JNIEXPORT jdoubleArray JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_getSubbandStats(JNIEnv * env, jobject obj, jint rcuMask, jint ptrRSPport) -{ - RSPport * IOport = (RSPport *) ptrRSPport; - - // get a vector with the subband stats - vector<double> vecData = IOport->getSubbandStats(rcuMask); - - // make a jdouble array to return to Java - jdoubleArray ret = env->NewDoubleArray(vecData.size()); - - // move vecData elements to ret - for (int i = 0; i < vecData.size(); i++) - { - env->SetDoubleArrayRegion(ret, i, 1, &vecData[i]); - } - - // return array - return ret; -} - -/** - * Returns a array of nl.astron.lofar.mac.apl.gui.jrsp.WGRegisterType elements. - */ -JNIEXPORT jobjectArray JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_getWaveformSettings(JNIEnv * env, jobject obj, jint rcuMask, jint ptrRSPport) -{ - // get pointer to RSPport - RSPport * IOport = (RSPport *) ptrRSPport; - - // get vector with register types - vector<struct WGSettings::WGRegisterType> vecData = IOport->getWaveformSettings(rcuMask); - - /* - * JNI part - * get class, constructor and field identifiers. - */ - - // jni: class - jclass clsWGRegisterType = env->FindClass("nl/astron/lofar/mac/apl/gui/jrsp/WGRegisterType"); - if (clsWGRegisterType == NULL) { - return NULL; - } - - // jni: constructor - static jmethodID midConstructor = env->GetMethodID(clsWGRegisterType, "<init>", "()V"); - if (midConstructor == NULL) { - return NULL; - } - - // jni: fields - jfieldID fidMode = env->GetFieldID(clsWGRegisterType, "mode", "S"); - jfieldID fidPhase = env->GetFieldID(clsWGRegisterType, "phase", "S"); - jfieldID fidNofSamples = env->GetFieldID(clsWGRegisterType, "nofSamples", "I"); - jfieldID fidFrequency = env->GetFieldID(clsWGRegisterType, "frequency", "D"); - jfieldID fidAmplitude = env->GetFieldID(clsWGRegisterType, "amplitude", "J"); - if (fidMode == 0 || fidPhase == 0 || fidNofSamples == 0 || fidFrequency == 0 || fidAmplitude == 0) { - return NULL; - } - - // construct return array - jobjectArray arrResults = (jobjectArray) env->NewObjectArray(vecData.size(), clsWGRegisterType, NULL); - - // process vector and add itens to array - for (int i = 0; i < vecData.size(); i++) { - // make new (j)WGRegisterType - jobject temp = env->NewObject(clsWGRegisterType, midConstructor, NULL); - - env->SetShortField(temp, fidMode, vecData[i].mode); - env->SetShortField(temp, fidPhase, vecData[i].phase); - env->SetIntField(temp, fidNofSamples, vecData[i].nof_samples); - env->SetDoubleField(temp, fidFrequency, vecData[i].freq); - env->SetLongField(temp, fidAmplitude, vecData[i].ampl); - - // add object to return array - env->SetObjectArrayElement(arrResults, i, temp); - } - - // return array - return arrResults; -} // getWaveformSettings() - -/** - * Returns the number of connected RCU's. - */ -JNIEXPORT jint JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_getNrRCUs(JNIEnv * env, jobject obj, jint ptrRSPport) -{ - // get pointer to RSPport - RSPport * IOport = (RSPport *) ptrRSPport; - - return IOport->getNrRCUs(); -} - -/** - * Returns the number of connected boards. - */ -JNIEXPORT jint JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_getNrRSPBoards(JNIEnv * env, jobject obj, jint ptrRSPport) -{ - // get pointer to RSPport - RSPport * IOport = (RSPport *) ptrRSPport; - - return IOport->getNrRSPboards(); -} - -/** - * Returns the maximum number of boards that could be connected. - */ -JNIEXPORT jint JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_getMaxRSPBoards(JNIEnv * env, jobject obj, jint ptrRSPport) -{ - // get pointer to RSPport - RSPport * IOport = (RSPport *) ptrRSPport; - - return IOport->getMaxRSPboards(); -} - -/** - * Sets filter. - * @param env - * @param obj - * @param rcuMask - * @param filterNr The number of the filter to apply. - * @param ptrRSPport Pointer to the RSPport instance. - */ -JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_setFilter(JNIEnv * env, jobject obj, jint rcuMask, jint filterNr, jint ptrRSPport) -{ - // get pointer to RSPport - RSPport * IOport = (RSPport *) ptrRSPport; - - return IOport->setFilter(rcuMask, filterNr); -} - -/** - * Sends clear signal to the selected board. - * @param env - * @param obj - * @param rcuMask A mask holding the selected board. - * @param ptrRSPport Pointer to the RSPport instance - */ -JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_sendClear(JNIEnv * env, jobject obj, jint rcuMask, jint ptrRSPport) -{ - // get pointer to RSPport - RSPport * IOport = (RSPport *) ptrRSPport; - - return IOport->sendClear(rcuMask); -} - -/** - * Sends reset signal to the selected board. - * @param env - * @param obj - * @param rcuMask A mask holding the selected board. - * @param ptrRSPport Pointer to the RSPport instance - */ -JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_sendReset(JNIEnv * env, jobject obj, jint rcuMask, jint ptrRSPport) -{ - // get pointer to RSPport - RSPport * IOport = (RSPport *) ptrRSPport; - - return IOport->sendReset(rcuMask); -} - -/** - * Sends sync signal to the selected board. - * @param env - * @param obj - * @param rcuMask A mask holding the selected board. - * @param ptrRSPport Pointer to the RSPport instance - */ -JNIEXPORT jboolean JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_sendSync(JNIEnv * env, jobject obj, jint rcuMask, jint ptrRSPport) -{ - // get pointer to RSPport - RSPport * IOport = (RSPport *) ptrRSPport; - - return IOport->sendSync(rcuMask); -} - -/** - * @param env - * @param obj - * @param mask - * @param ptrRSPport - */ -JNIEXPORT jdoubleArray JNICALL Java_nl_astron_lofar_mac_apl_gui_jrsp_Board_getBeamletStats(JNIEnv * env, jobject obj, jint rcuMask, jint ptrRSPport) -{ - RSPport * IOport = (RSPport *) ptrRSPport; - - // get a vector with the subband stats - vector<double> vecData = IOport->getBeamletStats(rcuMask); - - // make a jdouble array to return to Java - jdoubleArray ret = env->NewDoubleArray(vecData.size()); - - // move vecData elements to ret - for (int i = 0; i < vecData.size(); i++) - { - env->SetDoubleArrayRegion(ret, i, 1, &vecData[i]); - } - - // return array - return ret; -} -- GitLab