INOS
cinoscopmaster.h
Go to the documentation of this file.
1 //******************************************************************************
27 //******************************************************************************
28 
29 #ifndef INC_CINOSCOPMASTER_H
30 #define INC_CINOSCOPMASTER_H
31 
32 
33 //------------------------------------------------------------------------------
34 // defines
35 //------------------------------------------------------------------------------
36 //
37 // commands
38 #define DF_COP_CMD_READ 0x80003000
39 #define DF_COP_CMD_WRITE 0x80007000
40 //
41 // blink job
42 #define DF_COP_BLINK_JOB0 0x80005FFC
43 #define DF_COP_BLINK_JOB1 0x00010192
44 // port communication job
45 #define DF_COP_PORTCOMM_JOB0 0x80003F00
46 #define DF_COP_PORTCOMM_JOB1 0x00010000
47 
48 // eeprom commands
49 #define DF_COP_EEPROM_CMD 0x10000000
50 #define DF_COP_EEPROM_CMD_READ 0x11000000
51 #define DF_COP_EEPROM_CMD_WRITE 0x12000000
52 #define DF_COP_CMD_MASK 0x0F000000
53 
54 // spi commands
55 #define DF_COP_SPI_CMD 0x30000000
56 #define DF_COP_SPI_CMD_COMM 0x31000000
57 
58 #define DF_COP_INTERNAL_ADDRESS 8
60 #define DF_COP_MASTER_ADDRESS 9
62 
64 #define ER_COP_CONFIG_MISMATCH 0x00000001
65 
67 #define DF_COP_MOD_XDB "xcfg-mod-cop"
68 
69 
70 //------------------------------------------------------------------------------
71 // includes
72 //------------------------------------------------------------------------------
73 //
74 // system
75 #include <inos_lib.h>
76 #include <inos_xml.h>
77 #include <cincocopdevice.h>
78 
79 // C++
80 
81 // project
82 #include <cinoscopmodule.h>
83 
84 
85 //------------------------------------------------------------------------------
86 // helper macros
87 //------------------------------------------------------------------------------
88 
90 #define DPR_OFFSET(aMember) inos_offsetof(SINOSCOPMaster, aMember)
91 #define DPR_MAX_OFFSET(aMember) (inos_offsetof(SINOSCOPMaster, aMember) + sizeofm(SINOSCOPMaster, aMember))
93 #define DPR_OFFSET8K(aMember) inos_offsetof(SINOSCOPMaster8K, aMember)
95 #define DPR_MAX_OFFSET8K(aMember) (inos_offsetof(SINOSCOPMaster8K, aMember) + sizeofm(SINOSCOPMaster8K, aMember))
97 
98 
99 //------------------------------------------------------------------------------
100 // structures
101 //------------------------------------------------------------------------------
102 
105 {
107  uint8 m_uMisc1[0x1C0];
109  uint32 m_uRevision;
111  uint8 m_uMisc2[0x300-0x1C0-4];
115  uint32 m_uReserved[2];
119  uint16 m_uGlTlgTime;
120  uint16 m_uGlTlgCounter;
122  uint32 m_uReserved1;
124  uint32 m_uCmdDesc;
126  uint32 m_uCmdJob;
128  uint32 m_uBlinkJob[2];
130  uint8 m_uMasterTable[(0xA00-0x320)-2*4];
132  uint8 m_uTransData[0x200-4*4];
134  uint32 m_uPortCommRead[2];
136  uint32 m_uPortCommWrite[2];
138  uint8 m_uReceiveData0[0x200];
140  uint8 m_uReceiveData1[0x200];
141 
144 };
145 
148 {
150  uint8 m_uMisc1[0x1C0];
152  uint32 m_uRevision;
154  uint8 m_uMisc2[0x300-0x1C0-4];
158  uint32 m_uReserved[2];
162  uint16 m_uGlTlgTime;
163  uint16 m_uGlTlgCounter;
165  uint32 m_uReserved1;
167  uint32 m_uCmdDesc;
169  uint32 m_uCmdJob;
171  uint32 m_uBlinkJob[2];
173  uint8 m_uMasterTable[(0x800-0x328)];
175  uint8 m_uTransData[0x600-4*4];
177  uint32 m_uPortCommRead[2];
179  uint32 m_uPortCommWrite[2];
181  uint8 m_uTransInco[0x200];
183  uint8 m_uReserved2[0x7000];
185  uint8 m_uReceiveData0[0x600];
187  uint8 m_uReceiveInco0[0x200];
189  uint8 m_uReceiveData1[0x600];
191  uint8 m_uReceiveInco1[0x200];
192 
195 };
196 
197 
201  uint16 m_uAppRev;
203  const char* m_pModName;
207  bool m_bEeprom;
215  XMLNode m_xCard;
219  bool m_bOnline;
223  const char* m_pModXml;
224 
227 };
228 
231 {
232  enum {
233  eMaxCode = 0x100,
234  };
236  uint32 m_uId;
238  uint32 m_uIndex;
240  uint32 m_uCode[eMaxCode];
243 };
244 
245 //------------------------------------------------------------------------------
246 // class definition
247 //------------------------------------------------------------------------------
248 
251 {
252  //--- user interface ---------------------------------------------------
253 
254  public :
261  eNone = 0,
262 
263  eEepromRead = (1<<0),
264  eEepromWrite = (1<<1),
265  eSpiRead = (1<<2),
266  eSpiWrite = (1<<3),
267 
268  e8kLayout = (1<<4), // 8k layout
269  eActive = (1<<5), // running on active master
270  // CopBus is running as a parasite in the following situation:
271  // 1. we're running on core 0
272  // 2. we're running on a asymmetric system
273  // 3. core 1 is also running a CopBus instance
274  eParasite = (1<<6),
275  // CopBus is running as a chief in the following situation:
276  // 1. we're running on core 1
277  // 2. we're running on a asymmetric system
278  eChief = (1<<7),
279 
280  eAll = (eEepromRead | eEepromWrite | eSpiRead | eSpiWrite)
281  };
282 
283  // constants
284  enum {
285  eIrqMax = 8, // max. number of interrupt vectors
286  eIrqMain = 1, // main interrupt number
287  eIrqCore1 = 2, // core 1 interrupt number
288  eIrqMotor = 2, // motor control interrupt number
289  eIrqOverrun = 8,// overrun interrupt number
290  };
291 
293  void Reset();
295  void BusScan(XMLNode aConfigNode);
297  void BusStartup();
298 
300  void SeqStart(uint32 auCycleTimeNs, uint32 auSyncPage=0, bool abSoftSync = false);
302  void SeqStop();
304  void SeqWatchdog(uint32 auBusControl, int16 aiCycleAdjust);
306  void ToggleWatchdog();
308  void SeqClear();
310  void SeqWrite(uint32* apTable, bool abForceIrq = false, SINOSCOPSubroutine* apSubChain = 0);
312  void SeqEnableIrq();
314  uint32 SeqGetTime(uint32 uSubCycle=0);
315 
316  // modules
317 
320  return m_pModules;
321  };
324  return apModule->GetNext();
325  };
327  CINOSCOPModule* GetModule(uint32 auAddress);
332  CINOSCOPModule* GetModule(const char* apName);
333 
338  bool HasModuleType(const char* apType);
339 
340  // misc
341 
343  void* GetDprAddress(uint16 auDprOffset) {
344  return m_pDevice->GetDprAddress(auDprOffset);
345  };
347  CINCOCOPDevice* GetDevice() {
348  return m_pDevice;
349  };
350 
358  bool ReadModuleSpiData(uint32 auNumber, uint32 auCount, uint8* apBuffer,
359  uint32 auBufferSize);
360 
367  bool WriteModuleSpiData(uint32 auNumber, uint32 auCount, uint8* apBuffer);
368 
369 
370  //--- internals --------------------------------------------------------
371 
372  friend class CGINModuleActive;
373  friend class CINOSMcTargetFieldbusMasterCopBus;
374 
375  // public member functions but just for internal use
376  public :
378  CINOSCOPMaster(CINCOCOPDevice* apDevice, bool abCopPas = false);
380  virtual ~CINOSCOPMaster();
381 
385  uint32 GetError() {
386  return m_uErrors;
387  }
388 
390  bool ReadModuleEeprom(uint32 auNumber, SINOSCOPModuleEeprom& aEeprom, uint32 auSize);
391 
397  bool WriteModuleEeprom(uint32 auNumber, SINOSCOPModuleEeprom& aEeprom, uint32 auSize);
398 
402  uint32* GetSeqTable() {
403  return m_uSeqTable;
404  }
408  uint32 GetSeqTableSize() {
409  return m_uSeqTableSize;
410  }
411 
417  bool CheckRangeCondition(const char* apModule, CINOSBusPortHandlerRangeCondition* apCond);
418 
422  void CreateModules(XMLNode aConfigNode);
423 
432  CINOSCOPModule* CreateModule(XMLNode xCard, const char* apModName,
433  uint32 auAddress, uint32 auAppRev, uint32 auProductCode);
434 
438  bool IsModuleOnline();
439 
446  void SetOptionalFeatures(uint32 auFeatures) {
447  m_uOptionalFeatures = auFeatures;
448  }
449 
453  void AddOptionalFeatures(uint32 auFeature) {
454  m_uOptionalFeatures |= auFeature;
455  }
456 
460  return (m_uOptionalFeatures & aeFeature);
461  }
462 
464  bool IsParasite() const {
465  return (m_uOptionalFeatures & eParasite);
466  }
467 
469  bool IsChief() const {
470  return (m_uOptionalFeatures & eChief);
471  }
472 
474  uint32 GetCycleTimer() const;
475 
476  // private methods
477  private :
479  void uSleep(uint32 auMicroseconds);
480 
482  static const char* GetXmlFile(const char* apcProductCode);
483 
493  static EXmlError GetModuleConfig(const char* apModuleXml, SINOSCOPModuleEeprom& aEeprom,
494  uint32 auType, uint32 auAddress, XMLNode aParentNode, XMLNode& axDestNode);
495 
502  static XMLNode GetSystemModuleConfig(const char* apcProductCode,
503  uint8 auType, bool abConfigLib);
504 
506  void StartReadModuleEeprom(uint32 auNumber, uint32 auSize);
508  void StartWriteModuleEeprom(uint32 auNumber, SINOSCOPModuleEeprom& aEeprom, uint32 auSize);
510  void GetEepromData(SINOSCOPModuleEeprom& aEeprom);
511 
513  bool ReadModuleSpi(uint32 auNumber, uint32 auAddress, uint32 auCount,
514  uint8* apBuffer, uint32 auBufferSize);
515 
524  void StartModuleSpiComm(uint32 auNumber, uint32 auAddress, uint32 auSize,
525  uint32 auCommand, uint32 auCmdSize, bool abRound);
526 
534  bool WriteModuleSpi(uint32 auNumber, uint32 auAddress, uint32 auCount,
535  uint8* apBuffer);
536 
541  uint32 SpiGetFlashStatus(uint32 auNumber);
542 
547  bool SpiEnableWrite(uint32 auNumber);
548 
553  bool SpiUnlock(uint32 auNumber);
554 
559  bool SpiLock(uint32 auNumber);
560 
565  bool SpiWaitForCompletion(uint32 auNumber);
566 
572  bool SpiDoEraseSectorAt(uint32 auNumber, uint32 auSectorAddress);
573 
575  void StopModuleSpiAccess();
577  void GetSpiData(uint8* apBuffer, uint32 auBufferSize);
579  void PutSpiData(uint8* apBuffer, uint32 auBufferSize);
580 
582  bool IsCmdRunning();
583 
585  void SetSupportedModules(const char* apModules)
586  {
587  // set string
588  inos_strncpy(m_cSupportedModules, apModules, sizeof(m_cSupportedModules));
589  }
590 
591  // private members
592  private :
594  CINCOCOPDevice* m_pDevice;
596  CINOSCOPModule* m_pModules;
598  uint32 m_uSeqTable[1024];
600  uint32 m_uSeqTableSize;
602  uint32 m_uWatchdog;
604  volatile uint32* m_pWatchdog;
606  uint32 m_uErrors;
608  uint32 m_uOptionalFeatures;
609 
611  enum {
612  eFlgForceMainIrq = 0x00000001,
613  eFlgTableValid = 0x00000002,
614  };
615  uint32 m_uFlags;
616 
618  #ifdef INOSV
619  class CINOSSharedMemoryCopBus* m_pShared = 0;
620  uint8* m_pScanData = 0;
621  uint32 m_uScanDataIndex = 0;
622  #endif
623 
625  char m_cSupportedModules[256] = {0};
626 
629 };
630 
631 
632 //------------------------------------------------------------------------------
633 
634 #endif // INC_CINOSCOPMASTER_H
635 
636 
637 //------------------------------------------------------------------------------
638 // end of file
SINOSCOPMaster8K::m_uGlTlgTime
uint16 m_uGlTlgTime
GinLink Tlg-Cnt / Tlg-Time // 0x0310.
Definition: cinoscopmaster.h:162
CINOSCOPMaster::IsParasite
bool IsParasite() const
Definition: cinoscopmaster.h:464
SINOSCOPMaster::m_uReserved1
uint32 m_uReserved1
reserved // 0x0314
Definition: cinoscopmaster.h:122
CINOSCOPMaster::GetSeqTable
uint32 * GetSeqTable()
Get pointer to sequence backup table.
Definition: cinoscopmaster.h:402
SINOSCOPScanMod::m_xCard
XMLNode m_xCard
The parsed xml file.
Definition: cinoscopmaster.h:215
SINOSCOPMaster::m_uReceiveData0
uint8 m_uReceiveData0[0x200]
receive data 0 // 0x0C00
Definition: cinoscopmaster.h:138
SINOSCOPMaster8K::m_uMisc2
uint8 m_uMisc2[0x300-0x1C0-4]
misc
Definition: cinoscopmaster.h:154
CINOSCOPMaster::IsChief
bool IsChief() const
Definition: cinoscopmaster.h:469
SINOSCOPScanMod::m_pModXml
const char * m_pModXml
Module's xml file.
Definition: cinoscopmaster.h:223
SINOSCOPScanMod::m_bEeprom
bool m_bEeprom
Flag if the module's eeprom is valid.
Definition: cinoscopmaster.h:207
CINOSCOPMaster::GetError
uint32 GetError()
Get errors of cop bus master.
Definition: cinoscopmaster.h:385
CINOSCOPMaster::SeqEnableIrq
void SeqEnableIrq()
enable irq
SINOSCOPScanMod::m_pModName
const char * m_pModName
The module name from the xml file or eeprom.
Definition: cinoscopmaster.h:203
SINOSCOPMaster::m_uTransData
uint8 m_uTransData[0x200-4 *4]
trans data // 0x0A00
Definition: cinoscopmaster.h:132
inos_xml.h
General xml functions.
CINOSCOPMaster::WriteModuleEeprom
bool WriteModuleEeprom(uint32 auNumber, SINOSCOPModuleEeprom &aEeprom, uint32 auSize)
Write a module's eeprom.
SINOSCOPSubroutine::m_pNext
SINOSCOPSubroutine * m_pNext
Pointer to next subroutine.
Definition: cinoscopmaster.h:242
SINOSCOPMaster8K::m_uCmdDesc
uint32 m_uCmdDesc
command desc // 0x0318
Definition: cinoscopmaster.h:167
SINOSCOPMaster::m_uRevision
uint32 m_uRevision
revision // 0x01C0
Definition: cinoscopmaster.h:109
CINOSCOPMaster::IsModuleOnline
bool IsModuleOnline()
Return online state of device's bus module.
SINOSCOPMaster8K::m_uBlinkJob
uint32 m_uBlinkJob[2]
blink job // 0x0320
Definition: cinoscopmaster.h:171
SINOSCOPMaster8K::m_uCycleTimer
uint32 m_uCycleTimer
cycle timer // 0x0300
Definition: cinoscopmaster.h:156
SINOSCOPScanMod::m_bNameUnique
bool m_bNameUnique
Flag if the module name is unique (no need to add address)
Definition: cinoscopmaster.h:221
CINOSCOPMaster::WriteModuleSpiData
bool WriteModuleSpiData(uint32 auNumber, uint32 auCount, uint8 *apBuffer)
Write some data into a module's spi flash (fixed memory address).
CINOSCOPMaster::SeqClear
void SeqClear()
clear sequencer table
CINOSCOPMaster::IsOptionalFeatureEnabled
bool IsOptionalFeatureEnabled(EOptionalFeatures aeFeature) const
Definition: cinoscopmaster.h:459
SINOSCOPMaster8K::m_uCmdJob
uint32 m_uCmdJob
eeprom/jtag/spi // 0x031C
Definition: cinoscopmaster.h:169
SINOSCOPMaster8K::m_uRevision
uint32 m_uRevision
revision // 0x01C0
Definition: cinoscopmaster.h:152
CINOSCOPMaster::GetModule
CINOSCOPModule * GetModule(uint32 auAddress)
Get module by address.
SINOSCOPScanMod::m_bOnline
bool m_bOnline
Flag if the module is online (scanned) or not.
Definition: cinoscopmaster.h:219
SINOSCOPSubroutine::m_uId
uint32 m_uId
Subroutine id.
Definition: cinoscopmaster.h:236
SINOSCOPMaster::m_uPortCommRead
uint32 m_uPortCommRead[2]
port communication 'read' part // 0x0BF0
Definition: cinoscopmaster.h:134
CINOSCOPMaster::HasModuleType
bool HasModuleType(const char *apType)
Return true if copbus has a module of the given type.
SINOSCOPMaster8K::m_uMasterTable
uint8 m_uMasterTable[(0x800-0x328)]
busmaster table // 0x0328
Definition: cinoscopmaster.h:173
CINOSCOPMaster::ReadModuleEeprom
bool ReadModuleEeprom(uint32 auNumber, SINOSCOPModuleEeprom &aEeprom, uint32 auSize)
Complete sequence to read a module's eeprom.
SINOSCOPMaster8K::m_uPortCommWrite
uint32 m_uPortCommWrite[2]
port communication 'write' part // 0x0DF8
Definition: cinoscopmaster.h:179
SINOSCOPMaster::m_uMasterTable
uint8 m_uMasterTable[(0xA00-0x320) -2 *4]
busmaster table // 0x0328
Definition: cinoscopmaster.h:130
SINOSCOPMaster::DECLARE_DYNAMIC
DECLARE_DYNAMIC(SINOSCOPMaster)
Support dynamic object handling.
CINOSCOPMaster::GetCycleTimer
uint32 GetCycleTimer() const
SINOSCOPMaster::m_uMisc2
uint8 m_uMisc2[0x300-0x1C0-4]
misc
Definition: cinoscopmaster.h:111
CINOSCOPModule::GetNext
CINOSCOPModule * GetNext()
module pointer to next cop module
Definition: cinoscopmodule.h:293
SINOSCOPScanMod::m_uAppRev
uint16 m_uAppRev
The application revision as read from the module.
Definition: cinoscopmaster.h:201
SINOSCOPScanMod::m_uProductCode
uint32 m_uProductCode
The product code from the eeprom or xml file.
Definition: cinoscopmaster.h:211
CINOSCOPMaster::CheckRangeCondition
bool CheckRangeCondition(const char *apModule, CINOSBusPortHandlerRangeCondition *apCond)
Check if the condition of a range is met.
CINOSCOPMaster::SeqGetTime
uint32 SeqGetTime(uint32 uSubCycle=0)
get table length [ns]
CINOSCOPMaster::ToggleWatchdog
void ToggleWatchdog()
toggle watchdog (only on active master)
SINOSCOPMaster::m_uCycleCount
uint32 m_uCycleCount
cycle counter // 0x030C
Definition: cinoscopmaster.h:117
SINOSCOPMaster::m_uMisc1
uint8 m_uMisc1[0x1C0]
misc
Definition: cinoscopmaster.h:107
SINOSCOPScanMod::m_Eeprom
SINOSCOPModuleEeprom m_Eeprom
The content of the module's eeprom.
Definition: cinoscopmaster.h:209
CINOSCOPMaster::CreateModules
void CreateModules(XMLNode aConfigNode)
Create modules with given xml config file.
SINOSCOPMaster8K::m_uReceiveInco0
uint8 m_uReceiveInco0[0x200]
Receive data 0 for inco. // 0x8600.
Definition: cinoscopmaster.h:187
SINOSCOPMaster::m_uReceiveData1
uint8 m_uReceiveData1[0x200]
receive data 1 // 0x0E00
Definition: cinoscopmaster.h:140
CINOSCOPMaster::GetDevice
CINCOCOPDevice * GetDevice()
get pointer to cop device
Definition: cinoscopmaster.h:347
SINOSCOPMaster8K::m_uReserved1
uint32 m_uReserved1
reserved // 0x0314
Definition: cinoscopmaster.h:165
CINOSCOPMaster::GetFirst
CINOSCOPModule * GetFirst()
get first module
Definition: cinoscopmaster.h:319
SINOSCOPSubroutine::m_uCode
uint32 m_uCode[eMaxCode]
Subroutine code (max. 1kB).
Definition: cinoscopmaster.h:240
cinoscopmodule.h
COP slave definition.
CINOSCOPMaster::GetNext
CINOSCOPModule * GetNext(CINOSCOPModule *apModule)
get next module
Definition: cinoscopmaster.h:323
SINOSCOPMaster::m_uCycleTimer
uint32 m_uCycleTimer
cycle timer // 0x0300
Definition: cinoscopmaster.h:113
SINOSCOPScanMod::m_uEepromSize
uint32 m_uEepromSize
Eeprom size.
Definition: cinoscopmaster.h:213
CINOSCOPMaster::EOptionalFeatures
EOptionalFeatures
Definition: cinoscopmaster.h:260
SINOSCOPMaster::m_uCmdJob
uint32 m_uCmdJob
eeprom/jtag/spi // 0x031C
Definition: cinoscopmaster.h:126
SINOSCOPMaster8K::m_uReceiveData0
uint8 m_uReceiveData0[0x600]
receive data 0 // 0x8000
Definition: cinoscopmaster.h:185
SINOSCOPMaster8K::m_uPortCommRead
uint32 m_uPortCommRead[2]
port communication // 0x0DF0
Definition: cinoscopmaster.h:177
SINOSCOPSubroutine
COP bus subroutines.
Definition: cinoscopmaster.h:230
CINOSCOPMaster::BusScan
void BusScan(XMLNode aConfigNode)
scan bus
CINOSCOPMaster::CINOSCOPMaster
CINOSCOPMaster(CINCOCOPDevice *apDevice, bool abCopPas=false)
Constructor.
SINOSCOPMaster::m_uGlTlgTime
uint16 m_uGlTlgTime
GinLink Tlg-Cnt / Tlg-Time // 0x0310.
Definition: cinoscopmaster.h:119
SINOSCOPMaster::m_uPortCommWrite
uint32 m_uPortCommWrite[2]
port communication 'write' part // 0x0BF8
Definition: cinoscopmaster.h:136
CINOSCOPMaster::SeqWatchdog
void SeqWatchdog(uint32 auBusControl, int16 aiCycleAdjust)
handle watchdog (only on active master)
SINOSCOPMaster8K::m_uMisc1
uint8 m_uMisc1[0x1C0]
misc
Definition: cinoscopmaster.h:150
SINOSCOPScanMod::m_bCreateModule
bool m_bCreateModule
Flag if the module should be created in the software.
Definition: cinoscopmaster.h:217
CINOSCOPMaster::SeqStop
void SeqStop()
stop sequencer
SINOSCOPMaster::m_uCmdDesc
uint32 m_uCmdDesc
command desc // 0x0318
Definition: cinoscopmaster.h:124
CINOSCOPModule
The class handling a single COP module.
Definition: cinoscopmodule.h:215
CINOSCOPMaster::Reset
void Reset()
reset bus
SINOSCOPMaster8K::m_uReserved2
uint8 m_uReserved2[0x7000]
reserved
Definition: cinoscopmaster.h:183
SINOSCOPScanMod::m_bModXmlValid
bool m_bModXmlValid
Flag if the module's xml file is valid.
Definition: cinoscopmaster.h:205
SINOSCOPMaster8K::m_uReceiveInco1
uint8 m_uReceiveInco1[0x200]
Receive data 1 for inco. // 0x8E00.
Definition: cinoscopmaster.h:191
SINOSCOPMaster8K::m_uTransData
uint8 m_uTransData[0x600-4 *4]
trans data // 0x0800
Definition: cinoscopmaster.h:175
CINOSCOPMaster::SetOptionalFeatures
void SetOptionalFeatures(uint32 auFeatures)
Definition: cinoscopmaster.h:446
SINOSCOPModuleEeprom
Struct of the eeprom data of a COP module.
Definition: cinoscopmodule.h:173
SINOSCOPMaster::m_uBlinkJob
uint32 m_uBlinkJob[2]
blink job // 0x0320
Definition: cinoscopmaster.h:128
CINOSCOPMaster::GetSeqTableSize
uint32 GetSeqTableSize()
Get size of sequence table in uint32 units.
Definition: cinoscopmaster.h:408
CINOSCOPMaster
The main class handling a COP bus, local or remote (GinLink passive).
Definition: cinoscopmaster.h:250
SINOSCOPSubroutine::m_uIndex
uint32 m_uIndex
Subroutine index.
Definition: cinoscopmaster.h:238
CINOSCOPMaster::BusStartup
void BusStartup()
call startup actions of all modules
SINOSCOPMaster::m_uReserved
uint32 m_uReserved[2]
reserved
Definition: cinoscopmaster.h:115
EXmlError
EXmlError
Errors that can occur while handling xml data.
Definition: inos_xml.h:586
SINOSCOPScanMod
Struct to hold info about scanned or configured modules.
Definition: cinoscopmaster.h:199
CINOSCOPMaster::SeqStart
void SeqStart(uint32 auCycleTimeNs, uint32 auSyncPage=0, bool abSoftSync=false)
start sequencer
CINOSCOPMaster::SeqWrite
void SeqWrite(uint32 *apTable, bool abForceIrq=false, SINOSCOPSubroutine *apSubChain=0)
write sequencer table
CINOSCOPMaster::ReadModuleSpiData
bool ReadModuleSpiData(uint32 auNumber, uint32 auCount, uint8 *apBuffer, uint32 auBufferSize)
Read some data from a module's spi flash (fixed memory address).
DECLARE_DYNAMIC
#define DECLARE_DYNAMIC(aClass)
Definition: cinospartitionmemory.h:328
CINOSCOPMaster::CreateModule
CINOSCOPModule * CreateModule(XMLNode xCard, const char *apModName, uint32 auAddress, uint32 auAppRev, uint32 auProductCode)
Create a module with the given information.
SINOSCOPMaster8K
COP layout for master with an 8K area.
Definition: cinoscopmaster.h:147
SINOSCOPMaster8K::DECLARE_DYNAMIC
DECLARE_DYNAMIC(SINOSCOPMaster8K)
Support dynamic object handling.
CINOSCOPMaster::~CINOSCOPMaster
virtual ~CINOSCOPMaster()
Destructor.
SINOSCOPMaster8K::m_uReceiveData1
uint8 m_uReceiveData1[0x600]
receive data 1 // 0x8800
Definition: cinoscopmaster.h:189
SINOSCOPMaster8K::m_uReserved
uint32 m_uReserved[2]
reserved
Definition: cinoscopmaster.h:158
CINOSCOPMaster::GetDprAddress
void * GetDprAddress(uint16 auDprOffset)
get dpr address
Definition: cinoscopmaster.h:343
SINOSCOPMaster8K::m_uCycleCount
uint32 m_uCycleCount
cycle counter // 0x030C
Definition: cinoscopmaster.h:160
SINOSCOPScanMod::DECLARE_DYNAMIC
DECLARE_DYNAMIC(SINOSCOPScanMod)
Support dynamic object handling.
SINOSCOPMaster
COP layout for master with a small area.
Definition: cinoscopmaster.h:104
SINOSCOPMaster8K::m_uTransInco
uint8 m_uTransInco[0x200]
Transmit data for inco. // 0x0E00.
Definition: cinoscopmaster.h:181
CINOSCOPMaster::AddOptionalFeatures
void AddOptionalFeatures(uint32 auFeature)
Definition: cinoscopmaster.h:453