blob: 87704bfe34a74e8292d2c5a259e0a39e95021a37 [file] [log] [blame]
/*******************************************************************************
* 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