/****************************************************************************** * * Title : primFunc_setMemory.c * Version 0.0 * * Description: set memory primitive function. * Related files: * * Author: Lukas Tomasek, tomasekl@fzu.cz * ******************************************************************************/ /****************************************************************************** * Header files * ******************************************************************************/ #include #include "primFunc_setMemory.h" #include "globalDefinitions.h" #include "uirUtility.h" #include "primParamsUir.h" #include #include "primFunctionInit.h" /****************************************************************************** * Global functions * ******************************************************************************/ /*============================================================================= * primFunction_setMemory() *============================================================================= * * Set memory primitive function * */ ERROR_ID primFunction_setMemory(PRIM_FUNC_OPTION funcOption, struct PRIM_TABLE *primTable, void *primitive, UINT32 inputParameter, UINT8 slotNumber){ FILE *file; struct MSG_HEAD* primHeader=(struct MSG_HEAD*) primitive; UINT32 *primDataPtr=(UINT32*)((UINT32)primHeader+sizeof(struct MSG_HEAD)); ERROR_ID errorId=SUCCESS; int status; struct SET_MEMORY_IN *setMemory=&primTable->params.setMemory; const int panel=global.panel.primEdit[getPrimArrayId(SET_MEMORY)]; if(R_SET_MEMORY!=R_SET_MEMORY_HOST){ // ERROR_CHECK(PROGRAM_ERROR, primitive SET_MEMORY - wrong revision number); return(PROGRAM_ERROR); } switch(funcOption){ case PRIM_PANEL_TO_TABLE: GetCtrlVal(panel, SET_MEMP_START_ADDR, (UINT32*)&setMemory->start); GetCtrlVal(panel, SET_MEMP_SIZE, &setMemory->size); GetCtrlVal(panel, SET_MEMP_VALUE, &setMemory->val); /* NO BREAK HERE!!!*/ case PRIM_PARAMS_TO_TABLE: /* add table headers - don't set indexes!!! */ primTable->inPrimHeader.length=SIZEOF(struct SET_MEMORY_IN)+SIZEOF(struct MSG_HEAD); primTable->inPrimHeader.id=SET_MEMORY; primTable->inPrimHeader.primRevision=R_SET_MEMORY; primTable->replyLength=0; /* no reply data */ break; case PRIM_TABLE_TO_PANEL: if(primTable->inPrimHeader.primRevision!=R_SET_MEMORY){ ERROR_CHECK(PROGRAM_ERROR, primitive SET_MEMORY - wrong revision number); return(PROGRAM_ERROR); } SetCtrlVal(panel, SET_MEMP_START_ADDR, (unsigned int)setMemory->start); SetCtrlVal(panel, SET_MEMP_SIZE, setMemory->size); SetCtrlVal(panel, SET_MEMP_VALUE, setMemory->val); break; case PRIM_BUILD: /* copy data */ *(struct SET_MEMORY_IN*)(primDataPtr)=*setMemory; break; case REP_DATA_PROCESS: /* no reply */ break; case WRITE_TO_FILE: file=(FILE*)inputParameter; fprintf(file, "*start= 0x%X, size= 0x%X, val= 0x%X\n", (UINT32)setMemory->start, setMemory->size, setMemory->val); break; case READ_FROM_FILE: file=(FILE*)inputParameter; status=fscanf(file, "*start= 0x%X, size= 0x%X, val= 0x%X\n", (UINT32*)&setMemory->start, &setMemory->size, &setMemory->val); if(status==-1) {ERROR_CHECK(FATAL_ERROR, Read from prim file error!); return(FATAL_ERROR);} break; default: ; } return(SUCCESS); } /******************************************************************************/