| /******************************************************************************* | |
| * Copyright (c) 2012 AIT, fortiss GmbH | |
| * This program and the accompanying materials are made available under the | |
| * terms of the Eclipse Public License 2.0 which is available at | |
| * http://www.eclipse.org/legal/epl-2.0. | |
| * | |
| * SPDX-License-Identifier: EPL-2.0 | |
| * | |
| * Contributors: | |
| * Filip Andren, Alois Zoitl - initial API and implementation and/or initial documentation | |
| *******************************************************************************/ | |
| #ifndef _PROCIMAGEMATRIX_H_ | |
| #define _PROCIMAGEMATRIX_H_ | |
| //#include <vector> | |
| #include <fortelist.h> | |
| class CProcessImageMatrix{ | |
| public: | |
| CProcessImageMatrix(); | |
| ~CProcessImageMatrix(); | |
| void addEntry(unsigned int pa_nCN, unsigned int pa_nModule, unsigned int pa_nIoId, unsigned int pa_nDataSize, unsigned int pa_nPiOffset, unsigned int pa_nBitOffset); | |
| // getEntry: Returns an array with [dataSize, PIOffset, BitOffset] | |
| unsigned int* getEntry(unsigned int pa_nCN, unsigned int pa_nModule, unsigned int pa_nIoId); | |
| unsigned int* getEntry(unsigned int pa_nIndex); | |
| unsigned int getNrOfEntries() const; | |
| //ProcessImageMatrix* is owned by caller | |
| CProcessImageMatrix* getModuleEntries(unsigned int pa_nCN, unsigned int pa_nModule); | |
| unsigned long getProcessImageSize() const ; | |
| void clearAll(); | |
| private: | |
| struct SChannelEntry{ | |
| unsigned int m_nCN; | |
| unsigned int m_nModuleId; | |
| unsigned int m_nIOid; | |
| unsigned int m_nDataSize; | |
| unsigned int m_nPIOffset; | |
| unsigned int m_nBitOffset; | |
| SChannelEntry(unsigned int pa_nCN, unsigned int pa_nModuleId, unsigned int pa_nIOid, unsigned int pa_nDataSize, unsigned int pa_nPIOffset, unsigned int pa_nBitOffset) : | |
| m_nCN(pa_nCN), m_nModuleId(pa_nModuleId), m_nIOid(pa_nIOid), m_nDataSize(pa_nDataSize), m_nPIOffset(pa_nPIOffset), m_nBitOffset(pa_nBitOffset){ | |
| } | |
| ; | |
| }; | |
| typedef CSinglyLinkedList<SChannelEntry*> TChannelList; | |
| TChannelList m_lMatrix; | |
| unsigned long m_nBitSize; | |
| unsigned int m_nNumberOfEntries; | |
| }; | |
| #endif |