/****************************************************************************** * * Title : primFunc_dspReset.c * Version 0.0 * * Description: DSP reset primitive function. * Related files: * * Author: Jan Valenta, valenta@fzu.cz * ******************************************************************************/ /****************************************************************************** * Header files * ******************************************************************************/ #include #include #include "primFunc_dspReset.h" #include "globalDefinitions.h" #include "uirUtility.h" #include "primParamsUir.h" #include #include "primFunctionInit.h" /****************************************************************************** * Global functions * ******************************************************************************/ /*============================================================================= * primFunction_dspReset() *============================================================================= * * * */ ERROR_ID primFunction_dspReset(PRIM_FUNC_OPTION funcOption, struct PRIM_TABLE *primTable, void *primitive, UINT32 inputParameter, UINT8 slotNumber){ FILE *file; ERROR_ID errorId=SUCCESS; char errorMessage[200]; int status; struct MSG_HEAD* primHeader=(struct MSG_HEAD*) primitive; UINT32 *primDataPtr=(UINT32*)((UINT32)primHeader+sizeof(struct MSG_HEAD)); struct DSP_RESET_IN *dspReset=&primTable->params.dspReset; UINT32 primBodyLength; UINT32 primitiveId; int slave; const int panel=global.panel.primEdit[getPrimArrayId(DSP_RESET)]; if(R_DSP_RESET!=R_DSP_RESET_HOST){ ERROR_CHECK(PROGRAM_ERROR, primitive DSP_RESET - wrong revision number); return(PROGRAM_ERROR); } switch(funcOption){ case PRIM_PANEL_TO_TABLE: dspReset->slvBits=0; GetCtrlVal(panel, DSPRESETP_SLV0, &slave); if(slave) SET_BIT(dspReset->slvBits, 0); GetCtrlVal(panel, DSPRESETP_SLV1, &slave); if(slave) SET_BIT(dspReset->slvBits, 1); GetCtrlVal(panel, DSPRESETP_SLV2, &slave); if(slave) SET_BIT(dspReset->slvBits, 2); GetCtrlVal(panel, DSPRESETP_SLV3, &slave); if(slave) SET_BIT(dspReset->slvBits, 3); status = GetCtrlVal(panel, DSPRESETP_NATTEMPTS, &dspReset->nAttempts); status = GetCtrlVal(panel, DSPRESETP_TIME_OUT, &dspReset->timeOut); status = GetCtrlVal(panel, DSPRESETP_FORCE_SYNC, &dspReset->forceSync); /* NO BREAK HERE!!!*/ case PRIM_PARAMS_TO_TABLE: /* add table headers - don't set indexes!!! */ primTable->inPrimHeader.length=SIZEOF(struct MSG_HEAD) + sizeof(struct DSP_RESET_IN); primTable->inPrimHeader.id=DSP_RESET; primTable->inPrimHeader.primRevision=R_DSP_RESET_HOST; primTable->replyLength=0; /* no reply */ break; case PRIM_TABLE_TO_PANEL: if(primTable->inPrimHeader.primRevision!=R_DSP_RESET){ ERROR_CHECK(PROGRAM_ERROR, primitive DSP_RESET - wrong revision number); return(PROGRAM_ERROR); } SetCtrlVal(panel, DSPRESETP_SLV0, READ_BIT(dspReset->slvBits, 0)); SetCtrlVal(panel, DSPRESETP_SLV1, READ_BIT(dspReset->slvBits, 1)); SetCtrlVal(panel, DSPRESETP_SLV2, READ_BIT(dspReset->slvBits, 2)); SetCtrlVal(panel, DSPRESETP_SLV3, READ_BIT(dspReset->slvBits, 3)); SetCtrlVal(panel, DSPRESETP_NATTEMPTS, dspReset->nAttempts); SetCtrlVal(panel, DSPRESETP_TIME_OUT, dspReset->timeOut); SetCtrlVal(panel, DSPRESETP_FORCE_SYNC, dspReset->forceSync); break; case PRIM_BUILD: /* copy data */ *(struct DSP_RESET_IN *)primDataPtr = *dspReset; break; case REP_DATA_PROCESS: /* no reply */ break; case WRITE_TO_FILE: file=(FILE*)inputParameter; fprintf(file, "slvBits= %d, forceSync= %d, nAttempts= 0x%X, timeOut= 0x%X\n", dspReset->slvBits, dspReset->forceSync, dspReset->nAttempts, dspReset->timeOut); break; case READ_FROM_FILE: file=(FILE*)inputParameter; status=fscanf(file, "slvBits= %d, forceSync= %d, nAttempts= 0x%X, timeOut= 0x%X\n", &dspReset->slvBits, &dspReset->forceSync, &dspReset->nAttempts, &dspReset->timeOut); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} break; default: ; } return(SUCCESS); } /******************************************************************************/