Critical Link MityCam SoC Firmware  1.0
Critical Link MityCam SoC Firmware
RegisterFile.h
Go to the documentation of this file.
1 
47 #ifndef REGISTERFILE_H
48 #define REGISTERFILE_H
49 
50 #include <map>
51 #include <iostream>
52 
53 #include <climits>
54 #include <stdint.h>
55 #include <sys/types.h>
56 #include <sys/socket.h>
57 #include <netinet/in.h>
58 #include <netdb.h>
59 
61 #include "Utility/Observable.h"
62 #include "GigE.h"
63 
64 #include "PayloadSetter.h"
65 
66 #include "Sensors/SensorBoard.h"
67 
68 
69 const uint32_t MANUFACTURER_REGISTER_SIZE_B = 0xA000;
70 const uint32_t BOOTSTRAP_REGISTER_SIZE_B = 0xA000;
71 const uint32_t XML_FILE_SIZE_B = 0xA000;
73 
74 // Yea macros shouldn't be used too often, but these make it a whole lot faster to add an element to the
75 // register definition table. They make it even an order of magnitude faster when adding fields to the
76 // tsRegDefinition structure.
77 #define REG_ACCESS_NA 0,0 //<! Access mode NA - Not Available.
78 #define REG_ACCESS_WO 0,1 //<! Access mode WO - Write Only
79 #define REG_ACCESS_RO 1,0 //<! Access mode RO - Read Only
80 #define REG_ACCESS_RW 1,1 //<! Access mode RW - Readable & Writable
81 
82 //typedef struct
83 //{
84 // uint64_t address;
85 // const char* name;
86 // uint32_t size;
87 // teRegType type;
88 // bool rdaccess;
89 // bool wraccess;
90 // union {
91 // uint32_t dfltnval;
92 // float dfltfval;
93 // uint64_t dfltlval;
94 // };
95 // const char* dfltsval;
96 //} tsRegDefinition;
97 
98 #define REGDEF_I64(name,access,dflt) { name ## _ADDR, #name, sizeof(uint64_t), SocCamera::eeRegUint64, REG_ACCESS_ ## access, { .dfltlval = dflt }, std::string() }
99 #define REGDEF_INT(name,access,dflt) { name ## _ADDR, #name, sizeof(uint32_t), SocCamera::eeRegUint32, REG_ACCESS_ ## access, { .dfltnval = dflt }, std::string() }
100 #define REGDEF_FLT(name,access,dflt) { name ## _ADDR, #name, sizeof(float), SocCamera::eeRegFloat, REG_ACCESS_ ## access, { .dfltfval = dflt }, std::string() }
101 #define REGDEF_STR(name,access,size,dflt) { name ## _ADDR, #name, size, SocCamera::eeRegString, REG_ACCESS_ ## access, { .dfltnval = 0 }, dflt }
102 #define REGDEF_BUF(name,access,size) { name ## _ADDR, #name, size, SocCamera::eeRegNoType, REG_ACCESS_ ## access, { .dfltrptr = nullptr }, std::string() }
103 #define REGDEF_END_OF_TABLE { 0xFFFFFFFF,NULL,0,SocCamera::eeRegUint32,0,0,{ .dfltnval = 0 },std::string() }
104 
105 namespace SocCamera
106 {
110 typedef enum {
116 } teRegType;
117 
122 {
123 public:
124 
125  static const uint32_t cnNOADDRESS;
126 
128  //{
129  static const uint32_t cnMAX_IMAGE_WIDTH = 3360;
130  static const uint32_t cnMAX_IMAGE_HEIGHT = 2496;
132  //}
133 
134  typedef union {
135  uint32_t dfltnval;
136  float dfltfval;
137  uint64_t dfltlval;
138  void* dfltrptr;
139  } tuDataType;
140 
141  typedef enum {
144  } teEndianness;
145 
151  typedef struct
152  {
153  uint64_t address;
154  const char* name;
155  uint32_t size;
157  bool rdaccess;
158  bool wraccess;
160  std::string dfltsval;
161  } tsRegDefinition;
162 
163  static bool instanceMade();
164 
165  static tcRegisterFile* getInstance(tsRegDefinition * apRegs = NULL, bool abBigEndian = true);
166  void initialize(tcSensorBoard* apSensor, tcPayloadSetter *apIface);
167 
168  int get_array (uint32_t address, uint8_t* buff, uint16_t length) const;
169 
170  int get_buffer (uint32_t address, const char*& ptr, uint32_t& length) const;
171  void update_buffer (uint32_t address, const uint8_t* buff, uint32_t length);
172  GEV_STATUS set_buffer (uint32_t address, const uint8_t* buff, uint32_t length);
173 
174  uint32_t get_word (uint32_t address);
175  void update_word (uint32_t address, uint32_t data);
176  GEV_STATUS set_word (uint32_t address, uint32_t data);
177 
178  uint64_t get_long (uint32_t address);
179  void update_long (uint32_t address, uint64_t data);
180  GEV_STATUS set_long (uint32_t address, uint64_t data);
181 
182  float get_float (uint32_t address);
183  void update_float (uint32_t address, float data);
184  GEV_STATUS set_float (uint32_t address, float data);
185 
186  std::string get_string (uint32_t address);
187  void update_string (uint32_t address, const char* data, int len = -1);
188  GEV_STATUS set_string (uint32_t address, const char* data);
189 
190  void sync_manifest_table(const std::string &arXmlFile, const uint64_t fpga_version);
191  void sync_user_name(uint64_t anAddress);
192 
193  void check_and_update_payload_size(uint64_t address);
194 
195  template <typename T>
196  static T swap_endian(T u)
197  {
198  union
199  {
200  T u;
201  unsigned char u8[sizeof(T)];
202  } source, dest;
203 
204  source.u = u;
205 
206  for (size_t k = 0; k < sizeof(T); k++)
207  dest.u8[k] = source.u8[sizeof(T) - k - 1];
208 
209  return dest.u;
210  }
211 
212  tsRegDefinition* reg_def (const char *name) const;
213  tsRegDefinition* reg_def (uint64_t address, bool sloppy = false) const;
214  tsRegDefinition* next_reg(uint64_t address) const;
215 
216  uint32_t reg_addr (const char *name);
217  int reg_size (uint32_t address);
218  std::string reg_name (uint32_t address);
219  bool reg_valid (uint32_t address);
220  bool reg_rd (uint32_t address);
221  bool reg_wr (uint32_t address);
222  bool reg_a_valid (uint32_t address, int16_t size);
223  bool reg_a_rd (uint32_t address, int16_t size);
224  bool reg_a_wr (uint32_t address, int16_t size);
225 
226  void show_register (const tsRegDefinition* pregdef);
227  void show_all_registers ();
228  static std::string format_memdump (uint8_t* pbuff, uint16_t length);
229 
230  void update_payload_size ();
231 
232  void latch_timestamp ();
233  void reset_timestamp ();
234 
235  void sharedInit();
236 
237  const struct timespec* get_resettime() { return &m_ts_resettime; }
238 
239  int addRegister(tsRegDefinition* pdef);
240 
241 protected:
242  tcRegisterFile(tsRegDefinition* apRegs, bool abBigEndian);
243 
248  template <typename ValueType, teRegType RegEnum>
249  ValueType get_value (uint64_t address) {
250  ValueType retv = 0;
251  const tsRegDefinition* preg = this->reg_def (address, false);
252  if (preg != NULL && preg->type == RegEnum)
253  {
254  memcpy(&retv, &(preg->numData), sizeof(ValueType));
255  }
256  return retv;
257  }
258 
265  template <typename ValueType, teRegType RegEnum>
266  void update_value(uint64_t address, ValueType data)
267  {
268  tsRegDefinition* preg = reg_def (address, false);
269  if (preg != NULL /*&& preg->type == RegEnum*/) // Don't look at the register type here as; this is a quick and dirty update.
270  {
271  ValueType uitemp;
272  memcpy(&uitemp, &data, sizeof(ValueType));
273  memcpy(&(preg->numData), &uitemp, sizeof(ValueType));
274 
275  // this will ensure that any register change that impacts payload size
276  // is caught and handled.
278  }
279  }
280 
287  template <typename ValueType, teRegType RegEnum, typename UpdateMsg>
288  GEV_STATUS set_value (uint32_t address, ValueType data) {
290  const tsRegDefinition* preg = reg_def (address, false);
291 
292  if (preg != NULL && preg->type == RegEnum)
293  {
294  ValueType old_value;
295  memcpy(&old_value, &(preg->numData), sizeof(ValueType));
296 
297  if(mbBigEndian)
298  old_value = swap_endian<ValueType>(old_value);
299 
300  tsRegDefinition pdef = *preg;
301  pdef.address = address;
302  UpdateMsg *regMsg = new UpdateMsg (&pdef, old_value, data);
303 
304  // Pass this register write through all of the command handlers.
305  // Note: The command handler linked list is mostly setup in tcCommandInterface::tcCommandInterface(),
306  // but a few other handlers are setup somewhere else which I cant find yet i.e. tcGigEIO::update()
307  // gets called, but I'll be bejiggered if I can figure out how.
308  tsUpdate notifyMsg;
309  notifyMsg.mpMessage = regMsg;
310  notifyMsg.mpObservable = this;
311  notifyChange(notifyMsg);
312 
313  // If everything went well, then we can update the register.
314  // Actually update even if we did get an error. We're making it the handler's
315  // responsiblity to put the "old" value into the "fix" value when there is an
316  // error, or if for some wierd reason they want something other than the old
317  // value, I'm okay with that what do I know here as a mere observable.
318  if(mbBigEndian)
319  regMsg->m_fixval = swap_endian<ValueType>(regMsg->m_fixval);
320 
321  update_value<ValueType, RegEnum>(address, regMsg->m_fixval);
322 
323  retv = regMsg->m_status;
324  delete regMsg;
325  }
326  return retv;
327  }
328 
329 private:
330  static tcRegisterFile* _instance;
331  // Map of key address to RegDefinition pointer. (this is a sparse "array").
332  std::map<uint64_t, tsRegDefinition*> maRegisters;
333 
334  tcPayloadSetter *mpIface;
335 
336  struct timespec m_ts_resettime;
337 
338  bool mbBigEndian;
339 
340  tcSensorBoard *mpSensor;
341 };
342 
343 
352 {
353 public:
355  {
356  m_reg_def = preg;
357  m_regtype = preg->type;
358  m_address = preg->address;
359  m_handled = false;
361  m_length = 0;
362  }
364  teRegType m_regtype; //<! Specifies what kind of data the register holds.
365  uint32_t m_address; //<! Specifies the registers address.
366  bool m_handled; //<! Set to true if the register update was handled by an observer. (TODO MAW - I don't think anything uses this field)
367  GEV_STATUS m_status; //<! return errors here if there are any, starts life assuming success.
368  uint32_t m_length; //<! desired number of bytes to change, 0 = change entire register size
369 };
370 
371 template<typename T>
373 {
374 public:
375  tcRegUpdateTypeMsg (const tcRegisterFile::tsRegDefinition *preg, T oldval, T newval)
376  : tcRegUpdateMsg (preg)
377  { m_oldval = oldval; m_newval = newval; m_fixval = newval; }
378 
382 };
383 
385 
397 
409 
421 
433 
434 }
435 
436 
437 
438 //===================================================
439 // GigEV Bootstrap Registers
440 //===================================================
441 const uint32_t VERSION_ADDR = 0x0000'0000; //!< This register indicates the version of the GigE Vision specification implemented by this device. Version 1.0 of this specification shall return 0x00010000.
442 const uint32_t DEVICE_MODE_ADDR = 0x0000'0004;
443 const uint32_t DEVICE_MAC_HIGH0_ADDR = 0x0000'0008; //!< This register stores the MAC address (upper 16-bit) of the given network interface.
444 const uint32_t DEVICE_MAC_LOW0_ADDR = 0x0000'000C;
445 const uint32_t NET_IFACE_CAPABILITY0_ADDR = 0x0000'0010; //!< This register indicates the IP configuration scheme supported on the given network interface. Multiple schemes can be supported simultaneously.
446 const uint32_t NET_IFACE_CONFIG0_ADDR = 0x0000'0014;
447 const uint32_t CURRENT_IP_ADDR0_ADDR = 0x0000'0024; //!< This register reports the IP address for the given network interface once it has been configured.
448 const uint32_t CURRENT_SUBNET0_ADDR = 0x0000'0034;
449 const uint32_t CURRENT_GATEWAY0_ADDR = 0x0000'0044; //!< This register indicates the default gateway IP address to be used on the given network interface.
450 const uint32_t MANUFACTURER_NAME_ADDR = 0x0000'0048;
451 const uint32_t MODEL_NAME_ADDR = 0x0000'0068; //!< This registers stores a string containing the device model name. This string uses the character set indicated in the "string character set" register.
452 const uint32_t DEVICE_VERSION_ADDR = 0x0000'0088;
453 const uint32_t MANUFACTURER_INFO_ADDR = 0x0000'00A8; //!< This register stores a string containing additional manufacturer-specific information about the device. This string uses the character set indicated in the "string character set" register.
454 const uint32_t SERIAL_NUMBER_ADDR = 0x0000'00D8;
455 const uint32_t USER_NAME_ADDR = 0x0000'00E8; //!< String providing the device name.
456 const uint32_t FIRST_URL_ADDR = 0x0000'0200;
457 const uint32_t SECOND_URL_ADDR = 0x0000'0400; //!< This register stores the second URsi_meL to the XML device description file. This URL is an alternative if the application was unsuccessful to retrieve the device description file using the first URL. This string uses the character set indicated in the "string character set" register.
458 const uint32_t NB_INTERFACES_ADDR = 0x0000'0600;
459 const uint32_t PERSISTENT_IP_ADDR0_ADDR = 0x0000'064C; //!< This register indicates the Persistent IP address for this network interface. It is only used when the device boots with the Persistent IP configuration scheme.
460 const uint32_t PERSISTENT_SUBNET0_ADDR = 0x0000'065C;
461 const uint32_t PERSISTENT_GATEWAY0_ADDR = 0x0000'066C; //!< This register indicates the persistent default gateway for this network interface. It is only used when the device boots with the Persistent IP configuration scheme.
462 const uint32_t NB_MSG_CHANNELS_ADDR = 0x0000'0900;
463 const uint32_t NB_STREAM_CHANNELS_ADDR = 0x0000'0904; //!< This register reports the number of stream channels supported by this device. A device must support at least one stream channel. A device can support up to 512 stream channels.
464 const uint32_t NB_ACTIVE_LINKS_ADDR = 0x0000'0910;
465 const uint32_t GVSP_CAPABILITY_ADDR = 0x0000'092C; //!< Bit 1 indicates SCSP availability, bit 2 indicates legacy 16 bit block ID support available. 2-31 reserved.
466 const uint32_t MSG_CAPABILITY_ADDR = 0x0000'0930;
467 const uint32_t GVCP_CAPABILITY_ADDR = 0x0000'0934; //!< This register reports the optional GVCP command supported by this device.
468 const uint32_t HEARTBEAT_TIMEOUT_ADDR = 0x0000'0938;
469 const uint32_t TIMESTAMP_FREQ_HIGH_ADDR = 0x0000'093C; //!< This register indicates the number of timestamp tick during 1 second. This corresponds to the timestamp frequency in Hertz. Upper 32-bit.
470 const uint32_t TIMESTAMP_FREQ_LOW_ADDR = 0x0000'0940;
471 const uint32_t TIMESTAMP_CTRL_ADDR = 0x0000'0944; //!< This register is used to control the timestamp counter.
472 const uint32_t TIMESTAMP_VALUE_HIGH_ADDR = 0x0000'0948;
473 const uint32_t TIMESTAMP_VALUE_LOW_ADDR = 0x0000'094C; //!< This register reports the latched value of the timestamp counter. It is necessary to latch the 64-bit timestamp value to guaranty its integrity when performing the two 32-bit read accesses to retrieve the higher and lower 32-bit portions. Lower 32-bit.
474 const uint32_t GVCP_CONFIGURATION_ADDR = 0x0000'0954; //<! Configuration of GVCP optional features.
475 const uint32_t PENDING_TIMEOUT_ADDR = 0x0000'0958; //!< Pending Timeout to report the longest GVCP command execution time before issuing a PENDING_ACK. If PENDING_ACK is not supported, then this is the worst-case execution time before command completion.
476 const uint32_t CTRL_SWITCHOVER_KEY_ADDR = 0x0000'095C;
477 const uint32_t GVSP_CONFIGURATION_ADDR = 0x0000'0960; //!< This register enables the 64-bit block_id64 for GVSP.
478 const uint32_t PHY_CAPABILITY_ADDR = 0x0000'0964;
479 const uint32_t PHY_CONFIG_ADDR = 0x0000'0968; //!< Indicates the currently active physical link configuration
480 const uint32_t IEEE_1588_STATUS_ADDR = 0x0000'096C;
481 const uint32_t SCHEDULED_ACTION_Q_SIZE_ADDR = 0x0000'0970; //!< Indicates the number of Scheduled Action Commands that can be queued (size of the queue).
482 const uint32_t CCP_ADDR = 0x0000'0A00;
483 const uint32_t PA_PORT_ADDR = 0x0000'0A04; //!< UDP source port of the control channel of the primary application.
484 const uint32_t PA_IP_ADDR = 0x0000'0A14;
485 const uint32_t MCP_ADDR = 0x0000'0B00; //!< This register provides port information about the message channel. The message channel is activated when the host_port field is different from 0. Otherwise, the channel is closed.
486 const uint32_t MCDA_ADDR = 0x0000'0B10;
487 const uint32_t MCTT_ADDR = 0x0000'0B14; //!< This register provides the transmission timeout value in milliseconds. This indicates the amount of time to wait for acknowledge after a message is sent on the message channel before timeout.
488 const uint32_t MCRC_ADDR = 0x0000'0B18;
489 const uint32_t MCSP_ADDR = 0x0000'0B1C; //!< Message Channel Source Port.
490 const uint32_t SCP0_ADDR = 0x0000'0D00;
491 const uint32_t SCPS0_ADDR = 0x0000'0D04; //!< This register indicates the packet size in bytes for this stream channel. This is the total packet size, including all headers (Ethernet, IP, UDP and GVSP). It also provides a way to set the IP header "do not fragment" bit and to send stream test packet to the application.
492 const uint32_t SCPD0_ADDR = 0x0000'0D08;
493 const uint32_t SCDA0_ADDR = 0x0000'0D18; //!< This register indicates the destination IP address for this stream channel.
494 const uint32_t SCSP0_ADDR = 0x0000'0D1C;
495 const uint32_t SCC0_ADDR = 0x0000'0D20; //!< First Stream Channel Capability register.
496 const uint32_t SCCFG0_ADDR = 0x0000'0D24;
497 const uint32_t MANIFEST_TABLE_ADDR = 0x1000'0000; //!<
498 
499 // GenCP Technology Agnostic Boostrap Registers.
500 const uint32_t ABRM_GENCP_VERSION_ADDR = 0x00000;
501 const uint32_t ABRM_MANUFACTURER_NAME_ADDR = 0x00004;
502 const uint32_t ABRM_MODEL_NAME_ADDR = 0x00044;
503 const uint32_t ABRM_FAMILY_NAME_ADDR = 0x00084;
504 const uint32_t ABRM_DEVICE_VERSION_ADDR = 0x000C4;
505 const uint32_t ABRM_MANUFACTURER_INFO_ADDR = 0x00104;
506 const uint32_t ABRM_SERIAL_NUMBER_ADDR = 0x00144;
507 const uint32_t ABRM_USER_DEFINED_NAME_ADDR = 0x00184;
508 const uint32_t ABRM_DEVICE_CAPABILITY_ADDR = 0x001C4;
509 const uint32_t ABRM_MAX_DEVICE_RESPONSE_TIME_ADDR = 0x001CC;
510 const uint32_t ABRM_MANIFEST_TABLE_ADDRESS_ADDR = 0x001D0;
511 const uint32_t ABRM_SBRM_ADDRESS_ADDR = 0x001D8;
512 const uint32_t ABRM_DEVICE_CONFIGURATION_ADDR = 0x001E0;
513 const uint32_t ABRM_HEARTBEAT_TIMEOUT_ADDR = 0x001E8;
514 const uint32_t ABRM_MESSAGE_CHANNEL_ID_ADDR = 0x001EC;
515 const uint32_t ABRM_TIMESTAMP_ADDR = 0x001F0;
516 const uint32_t ABRM_TIMESTAMP_LATCH_ADDR = 0x001F8;
517 const uint32_t ABRM_TIMESTAMP_INCREMENT_ADDR = 0x001FC;
518 const uint32_t ABRM_ACCESS_PRIVILEGE_ADDR = 0x00204;
519 const uint32_t ABRM_PROTOCOL_ENDIANESS_ADDR = 0x00208;
520 const uint32_t ABRM_IMPLEMENTATION_ENDIANESS_ADDR = 0x0020C;
521 const uint32_t ABRM_RESERVED_ADDR = 0x00210;
522 
523 // ABRM Device Capability register flags
524 #define GENCP_USER_DEFINED_NAME (1 << 0)
525 #define GENCP_ACCESS_PRIVILEGE (1 << 1)
526 #define GENCP_MESSAGE_CHANNEL (1 << 2)
527 #define GENCP_TIMESTAMP (1 << 3)
528 #define GENCP_STRING_ENCODING_ASCII (0 << 4)
529 #define GENCP_STRING_ENCODING_UTF8 (1 << 4)
530 #define GENCP_STRING_ENCODING_UTF16 (2 << 4)
531 #define GENCP_FAMILY_NAME (1 << 8)
532 #define GENCP_SBRM_SUPPORT (1 << 9)
533 #define GENCP_ENDIANESS_REGISTER (1 << 10)
534 #define GENCP_WRITTEN_LENGTH_FIELD (1 << 11)
535 #define GENCP_MULTIEVENT (1 << 12)
536 
537 const uint64_t U3V_DEVICE_CAPABILITY = GENCP_ENDIANESS_REGISTER | GENCP_USER_DEFINED_NAME | GENCP_FAMILY_NAME | GENCP_TIMESTAMP | GENCP_STRING_ENCODING_ASCII | GENCP_SBRM_SUPPORT | GENCP_WRITTEN_LENGTH_FIELD;
538 
539 // ABRM Device Configuration register flags
540 #define GENCP_CONFIG_HEARTBEAT_ENABLE (1 << 0)
541 #define GENCP_CONFIG_MULTIEVENT_ENABLE (1 << 1)
542 const uint64_t U3V_DEVICE_CONFIGURATION = 0;
543 
544 // SBRM Addresses
545 #define SBRM_TABLE_ADDR (0x10000)
546 
547 // U3V SBRM
548 const uint32_t U3V_VERSION_ADDR = SBRM_TABLE_ADDR;
549 const uint32_t U3V_CP_CABABILITY_ADDR = SBRM_TABLE_ADDR + 0x04;
550 const uint32_t U3V_CP_CONFIGURATION_ADDR = SBRM_TABLE_ADDR + 0x0C;
551 const uint32_t U3V_MAX_COMMAND_TRANS_ADDR = SBRM_TABLE_ADDR + 0x14;
552 const uint32_t U3V_MAX_ACK_TRANS_ADDR = SBRM_TABLE_ADDR + 0x18;
553 const uint32_t U3V_NB_STRTEAM_ADDR = SBRM_TABLE_ADDR + 0x1C;
554 const uint32_t U3V_SIRM_ADDRESS_ADDR = SBRM_TABLE_ADDR + 0x20;
555 const uint32_t U3V_SIRM_LENGTH_ADDR = SBRM_TABLE_ADDR + 0x28;
556 const uint32_t U3V_EIRM_ADDRESS_ADDR = SBRM_TABLE_ADDR + 0x2C;
557 const uint32_t U3V_EIRM_LENGTH_ADDR = SBRM_TABLE_ADDR + 0x34;
558 const uint32_t U3V_IIDC2_ADDRESS_ADDR = SBRM_TABLE_ADDR + 0x38;
559 const uint32_t U3V_CURRENT_SPEED_ADDR = SBRM_TABLE_ADDR + 0x40;
560 
561 // U3V Control Protocol Capability Register
562 #define U3V_SIRM_AVAILABLE (1 << 0)
563 #define U3V_EIRM_AVAILABLE (1 << 1)
564 #define U3V_IIDC2_AVAILABLE (1 << 2)
565 
566 // U3V SBRM Flags/Defaults
567 #define U3V_CMD_EP_BUFF_SIZE (1020) /* Smaller buffer so that the FX3 doesn't get into an error state with something too large for it */
568 /* WORKAROUND: GenTL CMDs that are 1024 in size caused the FX3 to get into an error state.
569  * Instead of fixing the FX3 code, we are just going to use a smaller buffer size.
570  * This bug was triggered by doing a LUTValueAll load file using the HWK1411.
571  *
572  * GenTL Violation: Per the spec, U3V_MAX_CMD_LEN/U3V_MAX_ACK_LEN has to be >= to the endpoint max packet size. We are violating that with this change
573  */
574 
575 const uint32_t U3V_VERSION = 0x00010001;
577 const uint64_t U3V_CP_CONFIGURATION = 0; // No configuration in the standard
580 const uint32_t U3V_NB_STREAMS = 1;
581 
582 // SIRM Table.
583 const uint32_t U3V_SIRM_LENGTH = 0x30;
584 #define U3V_MAX_HEADER (52) /* Maximum number of bytes in USB3V packet header */
585 #define U3V_MAX_FOOTER (32) /* Maximum number of bytes in USB3V packet footer */
586 
587 const uint32_t U3V_SIRM_TABLE_ADDR = 0x20000;
589 const uint32_t U3V_SIRM_CTRL_ADDR = U3V_SIRM_TABLE_ADDR + 0x04;
593 const uint32_t U3V_MAX_LEADER_ADDR = U3V_SIRM_TABLE_ADDR + 0x18;
599 
600 // Misc GenCP Flags
601 #define GENCP_LITTLE_ENDIAN (0xFFFFFFFF)
602 
603 //===================================================
604 // Manufacturer Specific Registers
605 //===================================================
606 #define XML_REGS_OFFSET (0x30000)
607 
608 // Reference: GenICamSharedRegs.h
609 const uint32_t DEVICE_FIRMWARE_VERSION_ADDR = XML_REGS_OFFSET + 0x0000'2000;
610 const uint32_t DEVICE_RESET_ADDR = XML_REGS_OFFSET + 0x0000'2100;
611 
612 const uint32_t DEVICE_FPGA_VERSION_ADDR = XML_REGS_OFFSET + 0x0000'3000;
613 const uint32_t DEVICE_SOFTWARE_DATE_ADDR = XML_REGS_OFFSET + 0x0000'3008;
614 const uint32_t DEVICE_FX3_DATE_ADDR = XML_REGS_OFFSET + 0x0000'3048;
615 
616 const uint32_t AQUISITION_FRAMERATE_ADDR = XML_REGS_OFFSET + 0x0000'A000;
617 const uint32_t EXPOSURE_TIME_ADDR = XML_REGS_OFFSET + 0x0000'A004; //!< SFNC 5.7.4 ExposureTime - This register sets the Exposure time (uS).
618 const uint32_t ROI_WIDTH_ADDR = XML_REGS_OFFSET + 0x0000'A008;
619 const uint32_t ROI_HEIGHT_ADDR = XML_REGS_OFFSET + 0x0000'A00C; //!< SFNC 4.19 Height - This register sets the height of the ROI
620 const uint32_t ROI_OFFSET_X_ADDR = XML_REGS_OFFSET + 0x0000'A010;
621 const uint32_t ROI_OFFSET_Y_ADDR = XML_REGS_OFFSET + 0x0000'A014; //!< SFNC 4.21 OffsetY - This register stores the starting row of the ROI
622 const uint32_t ACQUISITION_START_ADDR = XML_REGS_OFFSET + 0x0000'A018;
623 const uint32_t ACQUISITION_MODE_ADDR = XML_REGS_OFFSET + 0x0000'A01C; //!< SFNC 5.5.2 AcquisitionMode - Controls acquisition mode.
624 const uint32_t PIXEL_FORMAT_ADDR = XML_REGS_OFFSET + 0x0000'A020;
625 const uint32_t PAYLOAD_SIZE_ADDR = XML_REGS_OFFSET + 0x0000'A024; //!< SFNC 25.2.5 PayloadSize - Size of frame without headers
626 const uint32_t BINNING_HORIZONTAL_ADDR = XML_REGS_OFFSET + 0x0000'A028;
627 const uint32_t BINNING_VERTICAL_ADDR = XML_REGS_OFFSET + 0x0000'A02C; //!< SFNC 4.28 BinningVertical - Number of pixels to bin in the vertical direction
628 const uint32_t REVERSE_X_ADDR = XML_REGS_OFFSET + 0x0000'A030;
629 const uint32_t REVERSE_Y_ADDR = XML_REGS_OFFSET + 0x0000'A034; //!< SFNC 4.34 ReverseY - "Bool" that flips Y when true
630 const uint32_t ACQUISITION_NUM_FRAMES_ADDR = XML_REGS_OFFSET + 0x0000'A038;
631 const uint32_t ACQUISITION_STOP_ADDR = XML_REGS_OFFSET + 0x0000'A03C; //!< SFNC 5.5.4 AquisitionStop - Start/stop image acquisition using the specified acquision mode in the Acquisition Mode register
632 const uint32_t DECIMATION_VERTICAL_ADDR = XML_REGS_OFFSET + 0x0000'A040;
633 
634 const uint32_t SENSOR_TEMPERATURE_ADDR = XML_REGS_OFFSET + 0x0000'A044; //<! Sensor temperature (legacy address)
635 const uint32_t BOARD_TEMPERATURE_ADDR = XML_REGS_OFFSET + 0x0000'A048; //<! Board temperature (legacy address)
636 const uint32_t EDGE_DETECTION_ADDR = XML_REGS_OFFSET + 0x0000'A04C; //<! Enable or disable edge detection.
637 const uint32_t SHUTTER_MODE_ADDR = XML_REGS_OFFSET + 0x0000'A050; //<! SFNC 4.2 SensorShutterMode - Set the shutter mode.
638 const uint32_t SENSOR_GAINMODE_ADDR = XML_REGS_OFFSET + 0x0000'A054; //<!
639 const uint32_t SENSOR_CALIBRATE_ADDR = XML_REGS_OFFSET + 0x0000'A058; //<!
640 
641 const uint32_t TEST_PATTERN_ADDR = XML_REGS_OFFSET + 0x0000'A05C; //<! SFNC 4.44 TestPattern - Set the test pattern.
642 const uint32_t CLOCK_SPEED_ADDR = XML_REGS_OFFSET + 0x0000'A060; //<! Set the clock speed to the sensor.
643 
644 const uint32_t SQRT_COMPRESS_ADDR = XML_REGS_OFFSET + 0x0000'A064; //<! Set the enable/disable of square root compression
645 
646 const uint32_t HOT_PIXEL_CORRECT_ADDR = XML_REGS_OFFSET + 0x0000'A068; //<! Set the hot pixel correction mode.
647 
648 const uint32_t BAD_PIXEL_CTRL_ADDR = XML_REGS_OFFSET + 0x0000'A070; //<! Set the enable/disable of the bad pixel correction map
649 const uint32_t BAD_PIXEL_CTRL_MAP_ADDR = XML_REGS_OFFSET + 0x0000'A074;
650 
651 const uint32_t VOLTAGE_SENSOR_SELECT_ADDR = XML_REGS_OFFSET + 0x0000'A078; //!< Selects which ADC / voltage sensor to read back
652 const uint32_t VOLTAGE_SENSOR_VALUE_ADDR = XML_REGS_OFFSET + 0x0000'A07C;
653 
654 const uint32_t DEVICE_TEMPERATURE_SELECT_ADDR= XML_REGS_OFFSET + 0x0000'A080; //!< SFNC 3.60 DeviceTemperatureSelector
655 const uint32_t DEVICE_TEMPERATURE_ADDR = XML_REGS_OFFSET + 0x0000'A084;
656 
657 const uint32_t EXPOSURE_TIME_SELECT_ADDR = XML_REGS_OFFSET + 0x0000'A08C; //!< SFNC 5.7.3 ExposureTimeSelector - This optional register allows selecting different exposure times (see SFNC).
658 
659 const uint32_t SENSOR_WIDTH_ADDR = XML_REGS_OFFSET + 0x0000'A090;
660 const uint32_t SENSOR_HEIGHT_ADDR = XML_REGS_OFFSET + 0x0000'A094; //!< SFNC 4.3 SensorHeight - Effective height of sensor in pixels
661 
662 const uint32_t FREE_RAM_CFG_ADDR = XML_REGS_OFFSET + 0x0000'A100; //<! Free RAM the system can support (for XML to use in calculations rather than being coded there and in ram_cfg.ini)
663 
664 const uint32_t INTERNAL_EXP_MODE_ADDR = XML_REGS_OFFSET + 0x0000'A200; //<! External exposure mode control.
665 
666 // LUT Control SFNC 7.x
667 const uint32_t LUT_SELECTOR_ADDR = XML_REGS_OFFSET + 0x0000'A300; //<! SFNC LUTSelector
668 const uint32_t LUT_ENABLE_ADDR = XML_REGS_OFFSET + 0x0000'A304; //<! SFNC LUTEnable
669 const uint32_t LUT_MAXINDEX_ADDR = XML_REGS_OFFSET + 0x0000'A308; //<! Custom LUTMaxIndex - Maximum index of LUT in bytes
670 const uint32_t LUT_INDEX_ADDR = XML_REGS_OFFSET + 0x0000'A30C; //<! SFNC LUTIndex
671 const uint32_t LUT_MAXVALUE_ADDR = XML_REGS_OFFSET + 0x0000'A310; //<! Custom LUTMaxValue - Maximum value to store in LUT
672 const uint32_t LUT_VALUE_ADDR = XML_REGS_OFFSET + 0x0000'A314; //<! SFNC LUTValue
673 // const uint32_t LUT_VALUEALL_ADDR = XML_REGS_OFFSET + TODO; //<! SFNC LUTValueAll - WIP: How does this work?
674 
675 namespace LUTSelector {
676  enum eeLUTSelected {
677  eeLuminance = 0,
678  eeRed = 1,
679  eeGreen = 2,
680  eeBlue = 3,
681  eeDeviceSpecific = 10,
682  };
683 }
684 
685 // Analog Control SFNC 6.x
686 const uint32_t GAIN_SELECTOR_ADDR = XML_REGS_OFFSET + 0x0000'A400; //<! SFNC 6.2 GainSelector
687 const uint32_t GAIN_ADDR = XML_REGS_OFFSET + 0x0000'A404; //<! SFNC 6.3 Gain[GainSelector]
688 const uint32_t GAIN_AUTO_ADDR = XML_REGS_OFFSET + 0x0000'A408; //<! SFNC 6.4 GainAuto[GainSelector] WIP
689 const uint32_t GAIN_AUTOBALANCE_ADDR = XML_REGS_OFFSET + 0x0000'A40C; //<! SFNC 6.5 GainAutoBalance WIP
690 const uint32_t BLACK_LEVEL_SELECTOR_ADDR = XML_REGS_OFFSET + 0x0000'A410; //<! SFNC 6.6 BlackLevelSelector
691 const uint32_t BLACK_LEVEL_ADDR = XML_REGS_OFFSET + 0x0000'A414; //<! SFNC 6.7 BlackLevel[BlackLevelSelector]
692 const uint32_t BLACK_LEVEL_AUTO_ADDR = XML_REGS_OFFSET + 0x0000'A418; //<! SFNC 6.9 BlackLevelAuto[BlackLevelSelector]
693 const uint32_t BLACK_LEVEL_AUTOBALANCE_ADDR = XML_REGS_OFFSET + 0x0000'A41C; //<! SFNC 6.9 BlackLevelAutoBalance WIP
694 const uint32_t WHITE_CLIP_SELECTOR_ADDR = XML_REGS_OFFSET + 0x0000'A420; //<! SFNC 6.10 WhiteClipSelector WIP
695 const uint32_t WHITE_CLIP_ADDR = XML_REGS_OFFSET + 0x0000'A424; //<! SFNC 6.11 WhiteClip[WhiteClipSelector] WIP
696 const uint32_t BALANCE_RATIO_SELECTOR_ADDR = XML_REGS_OFFSET + 0x0000'A428; //<! SFNC 6.12 BalanceRatioSelector WIP
697 const uint32_t BALANCE_RATIO_ADDR = XML_REGS_OFFSET + 0x0000'A42C; //<! SFNC 6.13 BalanceRatio[BalanceRatioSelector] WIP
698 const uint32_t BALANCE_WHITE_AUTO_ADDR = XML_REGS_OFFSET + 0x0000'A430; //<! SFNC 6.14 BalanceWhiteAuto WIP
699 const uint32_t GAMMA_ADDR = XML_REGS_OFFSET + 0x0000'A434; //<! SFNC 6.15 Gamma WIP
700 const uint32_t BLACK_LEVEL_BIAS_ADDR = XML_REGS_OFFSET + 0x0000'A440; //<! Bias to add after black level is subtracted
701 
702 namespace AnalogControl {
704  eeAll = 0,
705  eeRed = 1,
706  eeGreen = 2,
707  eeBlue = 3,
708  eeY = 4,
709  eeU = 5,
710  eeV = 6,
715  eeAnalogY = 14,
716  eeAnalogU = 15,
717  eeAnalogV = 16,
725  };
727  eeOff = 0,
728  eeOnce = 1,
731  };
732 }
733 
734 // Color Transformation SFNC 8.x
735 const uint32_t COLOR_TRANSF_SELECTOR_ADDR = XML_REGS_OFFSET + 0x0000'A500; //<! SFNC 8.2 ColorTransformationSelector
736 const uint32_t COLOR_TRANSF_ENABLE_ADDR = XML_REGS_OFFSET + 0x0000'A504; //<! SFNC 8.3 ColorTransformationEnable[ColorTransformationSelector]
737 const uint32_t COLOR_TRANSF_VALUE_SELECTOR_ADDR = XML_REGS_OFFSET + 0x0000'A508; //<! SFNC 8.4 ColorTransformationValueSelector[ColorTransformationSelector]
738 const uint32_t COLOR_TRANSF_VALUE_ADDR = XML_REGS_OFFSET + 0x0000'A50C; //<! SFNC 8.5 ColorTransformationValue[ColorTransformationSelector][ColorTransformationValueSelector]
739 
740 namespace ColorTransf {
745  };
747  eeGain00 = 0,
748  eeGain01 = 1,
749  eeGain02 = 2,
750  eeGain10 = 3,
751  eeGain11 = 4,
752  eeGain12 = 5,
753  eeGain20 = 6,
754  eeGain21 = 7,
755  eeGain22 = 8,
757  eeOffset1 = 10,
758  eeOffset2 = 11,
759  };
760 }
761 
762 // Trigger Control SFNC 5.6.x
763 const uint32_t TRIGGER_SELECTOR_ADDR = XML_REGS_OFFSET + 0x0000'B000; //<! SFNC TriggerSelector - Trigger selector (basically a mux for the registers that follow it)
764 const uint32_t TRIGGER_MODE_ADDR = XML_REGS_OFFSET + 0x0000'B004; //<! SFNC TriggerMode - Enable/disable for the trigger chosen by selector
765 const uint32_t TRIGGER_SOURCE_ADDR = XML_REGS_OFFSET + 0x0000'B008; //<! SFNC TriggerSource - Source for the trigger chosen by selector
766 const uint32_t TRIGGER_ACTIVATION_ADDR = XML_REGS_OFFSET + 0x0000'B00C; //<! SFNC TriggerActivation - Edge/level selection for the trigger chosen by selector
767 
768 namespace TriggerSelector {
783 };
784 }
785 namespace TriggerActivation {
792 };
793 }
794 
795 // DigitalIOControl SFNC 9.2.x
796 const uint32_t DIGITAL_IO_LINE_SELECT_ADDR = XML_REGS_OFFSET + 0x0000'B100; //<! SFNC 9.2.2 LineSelector - Line selector register for Digital IO Control
797 const uint32_t DIGITAL_IO_LINE_MODE_ADDR = XML_REGS_OFFSET + 0x0000'B104; //<! SFNC 9.2.3 LineMode
798 const uint32_t DIGITAL_IO_LINE_SOURCE_ADDR = XML_REGS_OFFSET + 0x0000'B10C; //<! SFNC 9.2.7 LineSource
799 const uint32_t USER_OUTPUT_SELECTOR_ADDR = XML_REGS_OFFSET + 0x0000'B110; //<! SFNC 9.2.9 UserOutputSelector
800 const uint32_t USER_OUTPUT_VALUE_ADDR = XML_REGS_OFFSET + 0x0000'B114; //<! SFNC 9.2.10 UserOutputValue
801 const uint32_t DIGITAL_IO_LINE_STATUS_ADDR = XML_REGS_OFFSET + 0x0000'B118; //<! SFNC 9.2.5 LineStatus
802 const uint32_t DIGITAL_IO_LINE_INVERTER_ADDR = XML_REGS_OFFSET + 0x0000'B11C; //<! SFNC 9.2.4 LineInverter
803 
804 namespace LineSource {
805 enum teLineSource {
806  eeOff = 0,
807  eeZero = 1,
808  eeOne = 2,
809  eeExposureActive = 5,
810  eeUserOutput0 = 22,
811  eeUserOutput1 = 23,
812  eeFabricInput1 = 32,
813  eeFabricInput2 = 33,
814  eeFabricInput3 = 34,
815  eeFabricInput4 = 35
816 };
817 }
818 
819 const uint32_t INDICATOR_CONTROL_ADDR = XML_REGS_OFFSET + 0x0000'B120;
820 const uint32_t FAN_CONTROL_ADDR = XML_REGS_OFFSET + 0x0000'B124; //!< control for FAN
821 
822 const uint32_t IS_CAMERA_COLOR_ADDR = XML_REGS_OFFSET + 0x0000'B200;
823 
824 const uint32_t SENS_REG_ADDR_ADDR = XML_REGS_OFFSET + 0x0000'C000; //<! Register address to peek/poke
825 const uint32_t SENS_VAL_ADDR = XML_REGS_OFFSET + 0x0000'C004; //<! Register value from peek or to poke
826 const uint32_t SENS_READ_ADDR = XML_REGS_OFFSET + 0x0000'C008; //<! Register address for the "read" command
827 const uint32_t SENS_WRITE_ADDR = XML_REGS_OFFSET + 0x0000'C00C; //<! Register address for the "write" command
828 
829 const uint32_t SENS_MIN_FRAME_PERIOD_ADDR = XML_REGS_OFFSET + 0x0000'C020; //<! Register address for the cameras minimum frame interval in microseconds
830 
831 // Reusable sensor specific registers. Every camera can use these registers for whatever they need. Registers are int32 unless otherwise mentioned.
832 const uint32_t SENS_SPECIFIC_1_ADDR = XML_REGS_OFFSET + 0x0000'D000; // Sensor specific functionality.
833 const uint32_t SENS_SPECIFIC_2_ADDR = XML_REGS_OFFSET + 0x0000'D004; // Sensor specific functionality.
834 const uint32_t SENS_SPECIFIC_3_ADDR = XML_REGS_OFFSET + 0x0000'D008; // Sensor specific functionality.
835 const uint32_t SENS_SPECIFIC_4_ADDR = XML_REGS_OFFSET + 0x0000'D00C; // Sensor specific functionality.
836 const uint32_t SENS_SPECIFIC_5_ADDR = XML_REGS_OFFSET + 0x0000'D010; // Sensor specific functionality.
837 const uint32_t SENS_SPECIFIC_6_ADDR = XML_REGS_OFFSET + 0x0000'D014; // Sensor specific functionality.
838 const uint32_t SENS_SPECIFIC_7_ADDR = XML_REGS_OFFSET + 0x0000'D018; // Sensor specific functionality.
839 const uint32_t SENS_SPECIFIC_8_ADDR = XML_REGS_OFFSET + 0x0000'D01C; // Sensor specific functionality.
840 const uint32_t SENS_SPECIFIC_9_ADDR = XML_REGS_OFFSET + 0x0000'D020; // Sensor specific functionality.
841 const uint32_t SENS_SPECIFIC_10_ADDR = XML_REGS_OFFSET + 0x0000'D024; // Sensor specific functionality (string of 64 in size).
842 const uint32_t SENS_SPECIFIC_11_ADDR = XML_REGS_OFFSET + 0x0000'D064; // Sensor specific functionality (float).
843 const uint32_t SENS_SPECIFIC_12_ADDR = XML_REGS_OFFSET + 0x0000'D068; // Sensor specific functionality (float).
844 const uint32_t SENS_SPECIFIC_13_ADDR = XML_REGS_OFFSET + 0x0000'D06C; // Sensor specific functionality.
845 const uint32_t SENS_SPECIFIC_14_ADDR = XML_REGS_OFFSET + 0x0000'D070; // Sensor specific functionality.
846 const uint32_t SENS_SPECIFIC_15_ADDR = XML_REGS_OFFSET + 0x0000'D074; // Sensor specific functionality.
847 const uint32_t SENS_SPECIFIC_16_ADDR = XML_REGS_OFFSET + 0x0000'D078; // Sensor specific functionality.
848 const uint32_t SENS_SPECIFIC_17_ADDR = XML_REGS_OFFSET + 0x0000'D07C; // Sensor specific functionality.
849 const uint32_t SENS_SPECIFIC_18_ADDR = XML_REGS_OFFSET + 0x0000'D080; // Sensor specific functionality.
850 const uint32_t SENS_SPECIFIC_19_ADDR = XML_REGS_OFFSET + 0x0000'D084; // Sensor specific functionality.
851 const uint32_t SENS_SPECIFIC_20_ADDR = XML_REGS_OFFSET + 0x0000'D088; // Sensor specific functionality.
852 const uint32_t SENS_SPECIFIC_21_ADDR = XML_REGS_OFFSET + 0x0000'D08C; // Sensor specific functionality.
853 const uint32_t SENS_SPECIFIC_22_ADDR = XML_REGS_OFFSET + 0x0000'D090; // Sensor specific functionality.
854 const uint32_t SENS_SPECIFIC_23_ADDR = XML_REGS_OFFSET + 0x0000'D094; // Sensor specific functionality.
855 const uint32_t SENS_SPECIFIC_24_ADDR = XML_REGS_OFFSET + 0x0000'D098; // Sensor specific functionality.
856 const uint32_t SENS_SPECIFIC_25_ADDR = XML_REGS_OFFSET + 0x0000'D09C; // Sensor specific functionality.
857 const uint32_t SENS_SPECIFIC_26_ADDR = XML_REGS_OFFSET + 0x0000'D0A0; // Sensor specific functionality.
858 const uint32_t SENS_SPECIFIC_27_ADDR = XML_REGS_OFFSET + 0x0000'D0A4; // Sensor specific functionality.
859 const uint32_t SENS_SPECIFIC_28_ADDR = XML_REGS_OFFSET + 0x0000'D0A8; // Sensor specific functionality.
860 const uint32_t SENS_SPECIFIC_29_ADDR = XML_REGS_OFFSET + 0x0000'D0AC; // Sensor specific functionality.
861 const uint32_t SENS_SPECIFIC_30_ADDR = XML_REGS_OFFSET + 0x0000'D0B0; // Sensor specific functionality.
862 
863 const uint32_t SENS_SPECIFIC_FLOAT_1_ADDR = XML_REGS_OFFSET + 0x0000'D100; // Sensor specific functionality (float).
864 const uint32_t SENS_SPECIFIC_FLOAT_2_ADDR = XML_REGS_OFFSET + 0x0000'D104; // Sensor specific functionality (float).
865 const uint32_t SENS_SPECIFIC_FLOAT_3_ADDR = XML_REGS_OFFSET + 0x0000'D108; // Sensor specific functionality (float).
866 const uint32_t SENS_SPECIFIC_FLOAT_4_ADDR = XML_REGS_OFFSET + 0x0000'D10c; // Sensor specific functionality (float).
867 const uint32_t SENS_SPECIFIC_FLOAT_5_ADDR = XML_REGS_OFFSET + 0x0000'D110; // Sensor specific functionality (float).
868 
869 const uint32_t SENS_PEEKPOKE_ADDR = XML_REGS_OFFSET + 0x0020'0000; //<! Arbitrary PEEK register; all addresses above this are translated into a peek address.
870 const uint32_t SENS_PEEKPOKE_ADDR_END = XML_REGS_OFFSET + 0x0023'FFFF; //<! End of poke-able registers.
871 
872 //===================================================
873 // XML File Registers
874 //===================================================
875 const uint32_t XML_FILE_ADDR = XML_REGS_OFFSET + 0x0001'4000; //!< This is where the XML file is loaded into memory
876 
877 //===================================================
878 // Debug Buffer Registers
879 // Dynamically registered by GenICamStatusReporter
880 //===================================================
881 const uint32_t DEBUG_BUFFER_BYTESWRITTEN_ADDR = 0x0030'0000;
882 const uint32_t DEBUG_BUFFER_ADDR = 0x0030'1000;
883 
884 
885 // Set these addresses correctly.
886 const uint32_t MANIFEST_TABLE_COUNT_ADDR = MANIFEST_TABLE_ADDR;
887 const uint32_t MANIFEST_VER_ADDR = MANIFEST_TABLE_ADDR + 0x08;
888 const uint32_t MANIFEST_TYPE_ADDR = MANIFEST_VER_ADDR + 0x04;
889 const uint32_t MANIFEST_REG_ADDR = MANIFEST_TYPE_ADDR + 0x04;
890 const uint32_t MANIFEST_FILE_SIZE_ADDR = MANIFEST_REG_ADDR + 0x08;
891 const uint32_t MANIFEST_SHA1_ADDR = MANIFEST_FILE_SIZE_ADDR + 0x08;
892 
893 //===================================================
894 // Beyond Manifest
895 // TODO What does this mean?
896 //===================================================
897 const uint32_t BEYOND_MANIFEST_ADDR = 0x20000000;
898 const uint32_t TEST_PENDING_ACK_ADDR = BEYOND_MANIFEST_ADDR;
899 
900 const uint32_t HDMI_START_ADDR = BEYOND_MANIFEST_ADDR + 0x04;
901 const uint32_t HDMI_STOP_ADDR = BEYOND_MANIFEST_ADDR + 0x08;
902 const uint32_t HDMI_OFFSET_X_ADDR = BEYOND_MANIFEST_ADDR + 0x0c;
903 const uint32_t HDMI_OFFSET_Y_ADDR = BEYOND_MANIFEST_ADDR + 0x10;
904 const uint32_t HDMI_WIDTH_ADDR = BEYOND_MANIFEST_ADDR + 0x14;
905 const uint32_t HDMI_HEIGHT_ADDR = BEYOND_MANIFEST_ADDR + 0x18;
906 const uint32_t HDMI_OUTPUT_SEL_ADDR = BEYOND_MANIFEST_ADDR + 0x1c;
907 // const uint32_t HDMI_COLOR_SEL_ADDR = BEYOND_MANIFEST_ADDR + 0x20; This is deprecated
908 const uint32_t HDMI_GAMMA_ADDR = BEYOND_MANIFEST_ADDR + 0x24;
909 const uint32_t HDMI_WBRED_ADDR = BEYOND_MANIFEST_ADDR + 0x28;
910 const uint32_t HDMI_WBGREEN_ADDR = BEYOND_MANIFEST_ADDR + 0x2C;
911 const uint32_t HDMI_WBBLUE_ADDR = BEYOND_MANIFEST_ADDR + 0x30;
912 const uint32_t HDMI_TESTPATEN_ADDR = BEYOND_MANIFEST_ADDR + 0x34;
913 const uint32_t HDMI_BPP_ADDR = BEYOND_MANIFEST_ADDR + 0x38;
914 
915 
916 //===================================================
917 // REGISTER FLAG BIT DEFINITIONS
918 //===================================================
919 
920 
923 //{
924 const uint32_t GIGE_VERSION_1_2 = 0x00010002; //<! GigE version 1.2 (Not used just for reference)
925 const uint32_t GIGE_VERSION_2_0 = 0x00020000; //<! GigE version 2.0 (We use this one)
926 //}
927 
930 //{
931 const uint32_t PIXEL_FORMAT_MONO16 = 0x01100007; //<! 16 bit mono
932 const uint32_t PIXEL_FORMAT_MONO8 = 0x01080001; //<! 8 bit mono
933 const uint32_t PIXEL_FORMAT_MONO12 = 0x01100005; //<! 12 bit mono
934 const uint32_t PIXEL_FORMAT_MONO12P = 0x010C0047; //<! 12 bit mono packed
935 const uint32_t PIXEL_FORMAT_MONO12PACKED = 0x010C0007; //<! 12 bit mono packed
936 
937 const uint32_t PIXEL_FORMAT_BAYERGR8 = 0x01080008;
938 const uint32_t PIXEL_FORMAT_BAYERRG8 = 0x01080009;
939 const uint32_t PIXEL_FORMAT_BAYERGB8 = 0x0108000A;
940 const uint32_t PIXEL_FORMAT_BAYERBG8 = 0x0108000B;
941 
942 const uint32_t PIXEL_FORMAT_BAYERGR16 = 0x0110002E;
943 const uint32_t PIXEL_FORMAT_BAYERRG16 = 0x0110002F;
944 const uint32_t PIXEL_FORMAT_BAYERGB16 = 0x01100030;
945 const uint32_t PIXEL_FORMAT_BAYERBG16 = 0x01100031;
946 
947 const uint32_t PIXEL_FORMAT_BAYERBG12P = 0x010C0053;
948 const uint32_t PIXEL_FORMAT_BAYERGB12P = 0x010C0055;
949 const uint32_t PIXEL_FORMAT_BAYERGR12P = 0x010C0057;
950 const uint32_t PIXEL_FORMAT_BAYERRG12P = 0x010C0059;
951 
952 const uint32_t PIXEL_FORMAT_BAYERGR12PACKED = 0x010C002A;
953 const uint32_t PIXEL_FORMAT_BAYERRG12PACKED = 0x010C002B;
954 const uint32_t PIXEL_FORMAT_BAYERGB12PACKED = 0x010C002C;
955 const uint32_t PIXEL_FORMAT_BAYERBG12PACKED = 0x010C002D;
956 
957 /* 32-bit value layout */
958 /* |31 24|23 16|15 08|07 00| */
959 /* | C| Comp. Layout| Effective Size | Pixel ID | */
960 
961 /* Custom flag */
962 #define PFNC_CUSTOM 0x80000000
963 /* Component layout */
964 #define PFNC_SINGLE_COMPONENT 0x01000000
965 #define PFNC_MULTIPLE_COMPONENT 0x02000000
966 #define PFNC_COMPONENT_MASK 0x7F000000
967 /* Effective size */
968 #define PFNC_OCCUPY1BIT 0x00010000
969 #define PFNC_OCCUPY2BIT 0x00020000
970 #define PFNC_OCCUPY4BIT 0x00040000
971 #define PFNC_OCCUPY8BIT 0x00080000
972 #define PFNC_OCCUPY10BIT 0x000A0000
973 #define PFNC_OCCUPY12BIT 0x000C0000
974 #define PFNC_OCCUPY16BIT 0x00100000
975 #define PFNC_OCCUPY24BIT 0x00180000
976 #define PFNC_OCCUPY30BIT 0x001E0000
977 #define PFNC_OCCUPY32BIT 0x00200000
978 #define PFNC_OCCUPY36BIT 0x00240000
979 #define PFNC_OCCUPY40BIT 0x00280000
980 #define PFNC_OCCUPY48BIT 0x00300000
981 #define PFNC_OCCUPY64BIT 0x00400000
982 #define PFNC_PIXEL_SIZE_MASK 0x00FF0000
983 #define PFNC_PIXEL_SIZE_SHIFT 16
984 /* Pixel ID */
985 #define PFNC_PIXEL_ID_MASK 0x0000FFFF
986 /* Pixel format value dissection helpers */
987 #define PFNC_PIXEL_SIZE(X) ((X & PFNC_PIXEL_SIZE_MASK) >> PFNC_PIXEL_SIZE_SHIFT)
988 #define PFNC_IS_PIXEL_SINGLE_COMPONENT(X) ((X & PFNC_COMPONENT_MASK) == PFNC_SINGLE_COMPONENT)
989 #define PFNC_IS_PIXEL_MULTIPLE_COMPONENT(X) ((X & PFNC_COMPONENT_MASK) == PFNC_MULTIPLE_COMPONENT)
990 #define PFNC_IS_PIXEL_CUSTOM(X) ((X & PFNC_CUSTOM) == PFNC_CUSTOM)
991 #define PFNC_PIXEL_ID(X) (X & PFNC_PIXEL_ID_MASK)
992 
993 //}
994 
997 //{
998 const uint32_t PRIVILEGE_EXCLUSIVE = 0x00000001; //!< Exclusive control privilege (read-write)
999 const uint32_t PRIVILEGE_CONTROL = 0x00000002; //!< Control privilege (read-write)
1000 //}
1001 
1004 //{
1005 const uint32_t GVCP_CAP_UN = 0x80000000; //<! Device has a user defined name register [O-442cd].
1006 const uint32_t GVCP_CAP_SN = 0x40000000; //<! Device has a serial number register [O-441cd].
1007 const uint32_t GVCP_CAP_HD = 0x20000000; //<! Heart beat can be disabled.
1008 const uint32_t GVCP_CAP_LS = 0x10000000; //<! Device has link speed registers.
1009 const uint32_t GVCP_CAP_CAP = 0x08000000; //<! CCP Application Port and IP address registers are supported.
1010 const uint32_t GVCP_CAP_MT = 0x04000000; //<! Manifest Table is supported.
1011 const uint32_t GVCP_CAP_TD = 0x02000000; //<! Test packet is filled with data from the LFSR generator.
1012 const uint32_t GVCP_CAP_DD = 0x01000000; //<! Device has discovery ack delay registers [O-468cd].
1013 const uint32_t GVCP_CAP_WD = 0x00800000; //<! When Discovery ACK Delay register is supported, this bit indicates that the register is writable.
1014 const uint32_t GVCP_CAP_ES = 0x00400000; //<! Support generation of extended status codes introduces in specification 1.1.
1015 const uint32_t GVCP_CAP_PAS = 0x00200000; //<! Primary application switchover capability is supported.
1016 const uint32_t GVCP_CAP_UA = 0x00100000; //<! Unconditional ACTION_CMD is supported.
1017 const uint32_t GVCP_CAP_PTP = 0x00080000; //<! Support for IEEE 1588 PTP.
1018 const uint32_t GVCP_CAP_ES2 = 0x00040000; //<! Support generation of extended status codes introduces in specification 2.0.
1019 const uint32_t GVCP_CAP_SAC = 0x00020000; //<! Scheduled Action Commands are supported.
1020 const uint32_t GVCP_CAP_A = 0x00000040; //<! ACTION_CMD and ACTION_ACK are supported.
1021 const uint32_t GVCP_CAP_PA = 0x00000020; //<! PENDING_ACK is supported.
1022 const uint32_t GVCP_CAP_ED = 0x00000010; //<! EVENTDATA_CMD and EVENTDATA_ACK are supported.
1023 const uint32_t GVCP_CAP_E = 0x00000008; //<! EVENT_CMD and EVENT_ACK are supported.
1024 const uint32_t GVCP_CAP_PR = 0x00000004; //<! PACKETRESEND_CMD is supported.
1025 const uint32_t GVCP_CAP_W = 0x00000002; //<! WRITEMEM_CMD and WRITEMEM_ACK are supported.
1026 const uint32_t GVCP_CAP_C = 0x00000001; //<! Multiple operations in a single message are supported.
1027 const uint32_t GVCP_CAP_VALUE = GVCP_CAP_UN | GVCP_CAP_SN | GVCP_CAP_CAP | GVCP_CAP_W | GVCP_CAP_PR;
1028 
1031 //{
1032 const uint32_t GVsP_CAP_SP = 0x80000000; //<! Indicates the SCSPx registers (stream channel source port) are available for all supported stream channels.
1033 const uint32_t GVsP_CAP_LB = 0x40000000; //<! Indicates this GVSP transmitter or receiver can support 16-bit block_id.
1034 const uint32_t GVsP_CAP_VALUE = GVsP_CAP_SP | GVsP_CAP_LB;
1035 
1038 //{
1039 const uint32_t GVsP_CFG_BL = 0x40000000; //<! Enable the 64-bit block_id64 for GVSP.
1040 
1043 //{
1044 const uint32_t PHY_CAP_DLAG = 0x00000008; //!< This device supports dynamic link aggregation configuration.
1045 const uint32_t PHY_CAP_SLAG = 0x00000004; //!< This device supports static link aggregation configuration.
1046 const uint32_t PHY_CAP_ML = 0x00000002; //!< This device supports multiple link (ML) configuration.
1047 const uint32_t PHY_CAP_SL = 0x00000001; //!< This device supports single link (SL) configuration.
1048 //}
1049 
1052 //{
1053 const uint32_t PHY_CONFIG_DLAG = 3; //!< Dynamic link aggregation configuration.
1054 const uint32_t PHY_CONFIG_SLAG = 2; //!< Static link aggregation configuration.
1055 const uint32_t PHY_CONFIG_ML = 1; //!< Multiple link (ML) configuration.
1056 const uint32_t PHY_CONFIG_SL = 0; //!< Single link (SL) configuration.
1057 //}
1058 
1061 //{
1062 const uint32_t DEVMODE_BIGENDIAN = 0x80000000; //<! Big Endian (required).
1063 const uint32_t DEVMODE_ASCII = 0x00000002; //<! ASCII Character set.
1064 const uint32_t DEVMODE_UTF8 = 0x00000001; //<! UTF-8 Character set.
1065 //}
1066 
1069 //{
1070 const uint32_t SHUTTERMODE_ROLLING = 0x00000000; //<! Rolling shutter mode.
1071 const uint32_t SHUTTERMODE_GLOBAL = 0x00000001; //<! Global shutter mode.
1072 //}
1073 
1076 //{
1077 const uint32_t NET_IFACE_C_PR = 0x80000000; //<! Pause Reception (we don't use this).
1078 const uint32_t NET_IFACE_C_PG = 0x40000000; //<! Pause Generation (we don't use this).
1079 const uint32_t NET_IFACE_C_L = 0x00000004; //<! Link-local address is activated. Always 1.
1080 const uint32_t NET_IFACE_C_D = 0x00000002; //<! DHCP is activated on this interface. Factory default is 1.
1081 const uint32_t NET_IFACE_C_P = 0x00000001; //<! Persistent IP is activated on this interface. Factory default is 0.
1083 //}
1084 
1087 //{
1088 const uint32_t SCPS_F = 0x80000000; //<! Fire a test packet.
1089 const uint32_t SCPS_D = 0x40000000; //<! Do not fragment stream data.
1090 const uint32_t SCPS_P = 0x20000000; //<! Pixel endianness (not supported).
1091 const uint32_t SCPS_PKT_SIZE_MASK = 0x0000FFFF; //<! Bits to mask off the packet size portion of the message.
1093 //}
1094 
1097 //{
1098 const uint32_t SC_CAP_BE = 0x80000000; //<! Indicates this stream channel supports both big and little-endian.
1099 const uint32_t SC_CAP_R = 0x40000000; //<! For GVSP receivers, indicates this stream channel supports the reassembly of fragmented IP packets.
1100 const uint32_t SC_CAP_MZ = 0x00000010; //<! Multi zone support, 1 indicate this stream channel supports the SCZx and SCZDx
1101 const uint32_t SC_CAP_PRD = 0x00000008; //<! Indicates if an alternate destination exists for Packet resend request.
1102 const uint32_t SC_CAP_AIT = 0x00000004; //<! For GVSP transmitters, indicates that the stream channel supports the All-in Transmission mode.
1103 const uint32_t SC_CAP_US = 0x00000002; //<! For GVSP transmitters, indicates that the stream channel supports unconditional streaming capabilities.
1104 const uint32_t SC_CAP_EC = 0x00000001; //<! Indicates that the stream channel supports the deprecated extended chunk data payload type.
1105 const uint32_t SC_CAP_VALUE = 0;
1106 //}
1107 
1110 //{
1111 const uint32_t TIMESTAMP_CTRL_L = 0x00000002; //<! Latch current time into Timestamp Value registers.
1112 const uint32_t TIMESTAMP_CTRL_R = 0x00000001; //<! Reset timestamp 64-bit counter to 0.
1113 //}
1114 
1115 
1116 #endif // REGISTERFILE_H
GigE.h
BALANCE_RATIO_ADDR
const uint32_t BALANCE_RATIO_ADDR
Definition: RegisterFile.h:697
U3V_CP_CAPABILITY
const uint64_t U3V_CP_CAPABILITY
Definition: RegisterFile.h:576
SocCamera::tcRegisterFile::cnMAX_IMAGE_WIDTH
static const uint32_t cnMAX_IMAGE_WIDTH
These may be dependant on the sensor type, but for now just want a handy place to put them.
Definition: RegisterFile.h:129
SCPS_D
const uint32_t SCPS_D
Definition: RegisterFile.h:1089
SocCamera::tcRegisterFile::tsRegDefinition::address
uint64_t address
the logical address of the register
Definition: RegisterFile.h:153
AnalogControl::eeBlue
@ eeBlue
Definition: RegisterFile.h:707
SC_CAP_R
const uint32_t SC_CAP_R
Definition: RegisterFile.h:1099
U3V_REQ_TRAILER_SIZE_ADDR
const uint32_t U3V_REQ_TRAILER_SIZE_ADDR
Definition: RegisterFile.h:592
BINNING_VERTICAL_ADDR
const uint32_t BINNING_VERTICAL_ADDR
SFNC 4.28 BinningVertical - Number of pixels to bin in the vertical direction.
Definition: RegisterFile.h:627
SENS_SPECIFIC_10_ADDR
const uint32_t SENS_SPECIFIC_10_ADDR
Definition: RegisterFile.h:841
USER_OUTPUT_VALUE_ADDR
const uint32_t USER_OUTPUT_VALUE_ADDR
Definition: RegisterFile.h:800
DEVICE_MAC_HIGH0_ADDR
const uint32_t DEVICE_MAC_HIGH0_ADDR
This register stores the MAC address (upper 16-bit) of the given network interface.
Definition: RegisterFile.h:443
SCPS_P
const uint32_t SCPS_P
Definition: RegisterFile.h:1090
SCC0_ADDR
const uint32_t SCC0_ADDR
First Stream Channel Capability register.
Definition: RegisterFile.h:495
AnalogControl::eeOff
@ eeOff
Definition: RegisterFile.h:727
SocCamera::tcRegisterFile::reg_name
std::string reg_name(uint32_t address)
Definition: RegisterFile.cpp:164
tsUpdate
Definition: Observer.h:6
U3V_PAYLOAD_SIZE_ADDR
const uint32_t U3V_PAYLOAD_SIZE_ADDR
Definition: RegisterFile.h:594
SC_CAP_MZ
const uint32_t SC_CAP_MZ
Definition: RegisterFile.h:1100
SocCamera::tcRegisterFile::tsRegDefinition::type
teRegType type
the register type
Definition: RegisterFile.h:156
SocCamera::tcRegisterFile::show_all_registers
void show_all_registers()
Definition: RegisterFile.cpp:1283
TriggerSelector::eeFrameStart
@ eeFrameStart
Definition: RegisterFile.h:773
GAIN_AUTOBALANCE_ADDR
const uint32_t GAIN_AUTOBALANCE_ADDR
Definition: RegisterFile.h:689
BOOTSTRAP_REGISTER_SIZE_B
const uint32_t BOOTSTRAP_REGISTER_SIZE_B
Size of bootstrap register space.
Definition: RegisterFile.h:70
tsUpdate::mpObservable
tcObservable * mpObservable
Definition: Observer.h:8
SocCamera::tcRegisterFile::cnMAX_IMAGE_HEIGHT
static const uint32_t cnMAX_IMAGE_HEIGHT
Definition: RegisterFile.h:130
U3V_NB_STREAMS
const uint32_t U3V_NB_STREAMS
Definition: RegisterFile.h:580
TriggerSelector::eeFrameActive
@ eeFrameActive
Definition: RegisterFile.h:775
VOLTAGE_SENSOR_SELECT_ADDR
const uint32_t VOLTAGE_SENSOR_SELECT_ADDR
Selects which ADC / voltage sensor to read back.
Definition: RegisterFile.h:651
MANUFACTURER_REGISTER_SIZE_B
const uint32_t MANUFACTURER_REGISTER_SIZE_B
Size of manufacturer register space.
Definition: RegisterFile.h:69
GEV_STATUS_INVALID_ADDRESS
const GEV_STATUS GEV_STATUS_INVALID_ADDRESS
An attempt was made to access a non existent address space location.
Definition: GigE.h:28
TriggerSelector::eeFrameEnd
@ eeFrameEnd
Definition: RegisterFile.h:774
SENS_REG_ADDR_ADDR
const uint32_t SENS_REG_ADDR_ADDR
Definition: RegisterFile.h:824
SC_CAP_VALUE
const uint32_t SC_CAP_VALUE
Definition: RegisterFile.h:1105
SocCamera::tcRegUpdateStringMsg
tcRegUpdateTypeMsg< std::string > tcRegUpdateStringMsg
Definition: RegisterFile.h:420
AnalogControl::eeAnalogRed
@ eeAnalogRed
Definition: RegisterFile.h:712
SENS_SPECIFIC_4_ADDR
const uint32_t SENS_SPECIFIC_4_ADDR
Definition: RegisterFile.h:835
SocCamera::tcRegisterFile::get_string
std::string get_string(uint32_t address)
Definition: RegisterFile.cpp:937
SocCamera::tcRegisterFile::reg_addr
uint32_t reg_addr(const char *name)
Definition: RegisterFile.cpp:136
SocCamera::tcRegisterFile::update_float
void update_float(uint32_t address, float data)
Lean and mean write to shadow. Does not ripple through observers.
Definition: RegisterFile.cpp:906
ACQUISITION_STOP_ADDR
const uint32_t ACQUISITION_STOP_ADDR
SFNC 5.5.4 AquisitionStop - Start/stop image acquisition using the specified acquision mode in the Ac...
Definition: RegisterFile.h:631
EXPOSURE_TIME_ADDR
const uint32_t EXPOSURE_TIME_ADDR
SFNC 5.7.4 ExposureTime - This register sets the Exposure time (uS).
Definition: RegisterFile.h:617
ColorTransf::eeGain02
@ eeGain02
Definition: RegisterFile.h:749
BLACK_LEVEL_ADDR
const uint32_t BLACK_LEVEL_ADDR
Definition: RegisterFile.h:691
GVSP_CONFIGURATION_ADDR
const uint32_t GVSP_CONFIGURATION_ADDR
This register enables the 64-bit block_id64 for GVSP.
Definition: RegisterFile.h:477
NB_STREAM_CHANNELS_ADDR
const uint32_t NB_STREAM_CHANNELS_ADDR
This register reports the number of stream channels supported by this device. A device must support a...
Definition: RegisterFile.h:463
TIMESTAMP_VALUE_LOW_ADDR
const uint32_t TIMESTAMP_VALUE_LOW_ADDR
This register reports the latched value of the timestamp counter. It is necessary to latch the 64-bit...
Definition: RegisterFile.h:473
LUT_INDEX_ADDR
const uint32_t LUT_INDEX_ADDR
Definition: RegisterFile.h:670
SocCamera::tcRegisterFile::tuDataType::dfltlval
uint64_t dfltlval
storage for 8 byte integer (signed or unsigned)
Definition: RegisterFile.h:137
SocCamera::tcRegisterFile::tuDataType::dfltrptr
void * dfltrptr
storage for RAW binary buffer pointer
Definition: RegisterFile.h:138
SocCamera::tcRegisterFile::next_reg
tsRegDefinition * next_reg(uint64_t address) const
Definition: RegisterFile.cpp:106
U3V_SIRM_TABLE_ADDR
const uint32_t U3V_SIRM_TABLE_ADDR
Definition: RegisterFile.h:587
SocCamera::tcRegisterFile::set_value
GEV_STATUS set_value(uint32_t address, ValueType data)
Definition: RegisterFile.h:288
SocCamera::tcRegisterFile::update_payload_size
void update_payload_size()
This function is called whenever a register has been changed that will effect the payload size.
Definition: RegisterFile.cpp:1035
SocCamera::tcRegUpdateTypeMsg::m_newval
T m_newval
This is the new value that we are trying to change to.
Definition: RegisterFile.h:380
AnalogControl
Definition: RegisterFile.h:702
RegisterFileObserver.h
ColorTransf::eeOffset0
@ eeOffset0
Definition: RegisterFile.h:756
SocCamera::tcRegUpdateMsg::m_regtype
teRegType m_regtype
Definition: RegisterFile.h:364
SocCamera::tcRegUpdateBufferMsg
tcRegUpdateTypeMsg< void * > tcRegUpdateBufferMsg
Definition: RegisterFile.h:432
U3V_MAX_LEADER_ADDR
const uint32_t U3V_MAX_LEADER_ADDR
Definition: RegisterFile.h:593
SQRT_COMPRESS_ADDR
const uint32_t SQRT_COMPRESS_ADDR
Definition: RegisterFile.h:644
SocCamera::tcRegisterFile::get_float
float get_float(uint32_t address)
Definition: RegisterFile.cpp:891
ColorTransf::eeGain10
@ eeGain10
Definition: RegisterFile.h:750
EDGE_DETECTION_ADDR
const uint32_t EDGE_DETECTION_ADDR
Definition: RegisterFile.h:636
TIMESTAMP_CTRL_L
const uint32_t TIMESTAMP_CTRL_L
Flags for TIMESTAMP_CTRL Register.
Definition: RegisterFile.h:1111
PA_PORT_ADDR
const uint32_t PA_PORT_ADDR
UDP source port of the control channel of the primary application.
Definition: RegisterFile.h:483
ColorTransf::eeGain00
@ eeGain00
Definition: RegisterFile.h:747
SENS_SPECIFIC_8_ADDR
const uint32_t SENS_SPECIFIC_8_ADDR
Definition: RegisterFile.h:839
TriggerSelector::eeFrameBurstStart
@ eeFrameBurstStart
Definition: RegisterFile.h:776
SocCamera::tcRegisterFile::reg_a_rd
bool reg_a_rd(uint32_t address, int16_t size)
Is the specified register address space readable.
Definition: RegisterFile.cpp:275
SocCamera::tcRegisterFile::update_value
void update_value(uint64_t address, ValueType data)
Definition: RegisterFile.h:266
COLOR_TRANSF_VALUE_SELECTOR_ADDR
const uint32_t COLOR_TRANSF_VALUE_SELECTOR_ADDR
Definition: RegisterFile.h:737
U3V_REQ_LEADER_SIZE_ADDR
const uint32_t U3V_REQ_LEADER_SIZE_ADDR
Definition: RegisterFile.h:591
TriggerSelector::eeTriggerSelected
eeTriggerSelected
Definition: RegisterFile.h:769
SocCamera::tcRegisterFile::addRegister
int addRegister(tsRegDefinition *pdef)
Definition: RegisterFile.cpp:443
SocCamera::eeRegFloat
@ eeRegFloat
Single precision interface.
Definition: RegisterFile.h:113
GVCP_CAPABILITY_ADDR
const uint32_t GVCP_CAPABILITY_ADDR
This register reports the optional GVCP command supported by this device.
Definition: RegisterFile.h:467
ColorTransf::eeGain20
@ eeGain20
Definition: RegisterFile.h:753
TriggerSelector::eeFrameBurstEnd
@ eeFrameBurstEnd
Definition: RegisterFile.h:777
SENSOR_GAINMODE_ADDR
const uint32_t SENSOR_GAINMODE_ADDR
Definition: RegisterFile.h:638
AnalogControl::eeGreen
@ eeGreen
Definition: RegisterFile.h:706
GVSP_CAPABILITY_ADDR
const uint32_t GVSP_CAPABILITY_ADDR
Bit 1 indicates SCSP availability, bit 2 indicates legacy 16 bit block ID support available....
Definition: RegisterFile.h:465
SocCamera::tcRegisterFile::tsRegDefinition::numData
tuDataType numData
union for literal value of register (int, float, raw pointer)
Definition: RegisterFile.h:159
SENS_SPECIFIC_26_ADDR
const uint32_t SENS_SPECIFIC_26_ADDR
Definition: RegisterFile.h:857
ColorTransf::eeGain12
@ eeGain12
Definition: RegisterFile.h:752
BAD_PIXEL_CTRL_ADDR
const uint32_t BAD_PIXEL_CTRL_ADDR
Definition: RegisterFile.h:648
SocCamera::tcRegisterFile::latch_timestamp
void latch_timestamp()
Definition: RegisterFile.cpp:1111
SocCamera::tcRegisterFile::reg_a_wr
bool reg_a_wr(uint32_t address, int16_t size)
Is the specified register address space writeable.
Definition: RegisterFile.cpp:306
SocCamera::tcRegisterFile::sync_manifest_table
void sync_manifest_table(const std::string &arXmlFile, const uint64_t fpga_version)
Definition: RegisterFile.cpp:1162
SocCamera::tcRegUpdateMsg::m_handled
bool m_handled
Definition: RegisterFile.h:366
SensorBoard.h
FAN_CONTROL_ADDR
const uint32_t FAN_CONTROL_ADDR
control for FAN
Definition: RegisterFile.h:820
U3V_PAYLOAD_FINAL1_ADDR
const uint32_t U3V_PAYLOAD_FINAL1_ADDR
Definition: RegisterFile.h:596
AnalogControl::eeY
@ eeY
Definition: RegisterFile.h:708
TriggerActivation
Definition: RegisterFile.h:785
SocCamera::tcRegisterFile::tuDataType::dfltnval
uint32_t dfltnval
storage for 4 byte integer (signed or unsigned)
Definition: RegisterFile.h:135
SocCamera::tcRegisterFile::initialize
void initialize(tcSensorBoard *apSensor, tcPayloadSetter *apIface)
Definition: RegisterFile.cpp:610
NET_IFACE_C_L
const uint32_t NET_IFACE_C_L
Definition: RegisterFile.h:1079
SocCamera::tcRegUpdateMsg::m_reg_def
const tcRegisterFile::tsRegDefinition * m_reg_def
Definition: RegisterFile.h:363
DEVICE_FPGA_VERSION_ADDR
const uint32_t DEVICE_FPGA_VERSION_ADDR
Definition: RegisterFile.h:612
SocCamera::tcRegUpdateMsg::m_address
uint32_t m_address
Definition: RegisterFile.h:365
SENS_PEEKPOKE_ADDR
const uint32_t SENS_PEEKPOKE_ADDR
Definition: RegisterFile.h:869
SENSOR_HEIGHT_ADDR
const uint32_t SENSOR_HEIGHT_ADDR
SFNC 4.3 SensorHeight - Effective height of sensor in pixels.
Definition: RegisterFile.h:660
XML_REGS_OFFSET
#define XML_REGS_OFFSET
Definition: RegisterFile.h:606
TriggerSelector::eeAcquisitionActive
@ eeAcquisitionActive
Definition: RegisterFile.h:772
SocCamera::tcRegisterFile::reg_a_valid
bool reg_a_valid(uint32_t address, int16_t size)
Is the specified register address space valid.
Definition: RegisterFile.cpp:244
SocCamera::tcRegisterFile::reg_def
tsRegDefinition * reg_def(const char *name) const
Definition: RegisterFile.cpp:48
SocCamera::tcRegisterFile::sync_user_name
void sync_user_name(uint64_t anAddress)
Definition: RegisterFile.cpp:388
SENS_SPECIFIC_24_ADDR
const uint32_t SENS_SPECIFIC_24_ADDR
Definition: RegisterFile.h:855
AnalogControl::eeDigitalBlue
@ eeDigitalBlue
Definition: RegisterFile.h:721
AnalogControl::eeAnalogGreen
@ eeAnalogGreen
Definition: RegisterFile.h:713
AnalogControl::eeDigitalV
@ eeDigitalV
Definition: RegisterFile.h:724
TriggerSelector::eeExposureEnd
@ eeExposureEnd
Definition: RegisterFile.h:781
SocCamera::tcRegisterFile::get_buffer
int get_buffer(uint32_t address, const char *&ptr, uint32_t &length) const
Definition: RegisterFile.cpp:748
ColorTransf
Definition: RegisterFile.h:740
PayloadSetter.h
SocCamera::tcRegisterFile::get_word
uint32_t get_word(uint32_t address)
Definition: RegisterFile.cpp:846
tcRegisterFileObservable
Definition: RegisterFileObserver.h:18
ACQUISITION_MODE_ADDR
const uint32_t ACQUISITION_MODE_ADDR
SFNC 5.5.2 AcquisitionMode - Controls acquisition mode.
Definition: RegisterFile.h:623
GEV_STATUS_SUCCESS
const GEV_STATUS GEV_STATUS_SUCCESS
Requested operation was completed successfully.
Definition: GigE.h:25
SocCamera::tcRegisterFile::tsRegDefinition::wraccess
bool wraccess
whether the register may be written by an external interface
Definition: RegisterFile.h:158
U3V_REQ_PAYLOAD_SIZE_ADDR
const uint32_t U3V_REQ_PAYLOAD_SIZE_ADDR
Definition: RegisterFile.h:590
SCHEDULED_ACTION_Q_SIZE_ADDR
const uint32_t SCHEDULED_ACTION_Q_SIZE_ADDR
Indicates the number of Scheduled Action Commands that can be queued (size of the queue).
Definition: RegisterFile.h:481
XML_FILE_SIZE_B
const uint32_t XML_FILE_SIZE_B
Size allocated for XML file in register space.
Definition: RegisterFile.h:71
SocCamera::tcRegisterFile::get_resettime
const struct timespec * get_resettime()
Definition: RegisterFile.h:237
U3V_SIRM_CTRL_ADDR
const uint32_t U3V_SIRM_CTRL_ADDR
Definition: RegisterFile.h:589
SCPS_PKT_SIZE_MASK
const uint32_t SCPS_PKT_SIZE_MASK
Definition: RegisterFile.h:1091
SocCamera::tcRegUpdateMsg::m_status
GEV_STATUS m_status
Definition: RegisterFile.h:367
AnalogControl::eeV
@ eeV
Definition: RegisterFile.h:710
tsUpdate::mpMessage
void * mpMessage
Definition: Observer.h:9
TIMESTAMP_FREQ_HIGH_ADDR
const uint32_t TIMESTAMP_FREQ_HIGH_ADDR
This register indicates the number of timestamp tick during 1 second. This corresponds to the timesta...
Definition: RegisterFile.h:469
tcObservable
Definition: Observable.h:7
AnalogControl::eeAnalogAuto
eeAnalogAuto
Definition: RegisterFile.h:726
SENSOR_TEMPERATURE_ADDR
const uint32_t SENSOR_TEMPERATURE_ADDR
Definition: RegisterFile.h:634
SocCamera::tcRegisterFile::reset_timestamp
void reset_timestamp()
Definition: RegisterFile.cpp:1214
SENS_SPECIFIC_FLOAT_4_ADDR
const uint32_t SENS_SPECIFIC_FLOAT_4_ADDR
Definition: RegisterFile.h:866
VERSION_ADDR
const uint32_t VERSION_ADDR
This register indicates the version of the GigE Vision specification implemented by this device....
Definition: RegisterFile.h:441
SC_CAP_PRD
const uint32_t SC_CAP_PRD
Definition: RegisterFile.h:1101
TriggerActivation::eeRisingEdge
@ eeRisingEdge
Definition: RegisterFile.h:787
TriggerActivation::eeLevelLow
@ eeLevelLow
Definition: RegisterFile.h:791
NET_IFACE_C_P
const uint32_t NET_IFACE_C_P
Definition: RegisterFile.h:1081
SENS_SPECIFIC_FLOAT_2_ADDR
const uint32_t SENS_SPECIFIC_FLOAT_2_ADDR
Definition: RegisterFile.h:864
tcObservable::notifyChange
void notifyChange(tsUpdate asMessage)
Definition: Observable.cpp:17
SocCamera::tcRegisterFile::get_value
ValueType get_value(uint64_t address)
Definition: RegisterFile.h:249
SCPS_MASK
const uint32_t SCPS_MASK
Definition: RegisterFile.h:1092
SocCamera::tcRegUpdateMsg::m_length
uint32_t m_length
Definition: RegisterFile.h:368
AnalogControl::eeContinuous
@ eeContinuous
Definition: RegisterFile.h:729
U3V_CP_CONFIGURATION
const uint64_t U3V_CP_CONFIGURATION
Definition: RegisterFile.h:577
TOTAL_REGISTER_SIZE_B
const uint32_t TOTAL_REGISTER_SIZE_B
Definition: RegisterFile.h:72
GAIN_ADDR
const uint32_t GAIN_ADDR
Definition: RegisterFile.h:687
SENS_SPECIFIC_12_ADDR
const uint32_t SENS_SPECIFIC_12_ADDR
Definition: RegisterFile.h:843
ROI_HEIGHT_ADDR
const uint32_t ROI_HEIGHT_ADDR
SFNC 4.19 Height - This register sets the height of the ROI.
Definition: RegisterFile.h:619
PHY_CONFIG_ADDR
const uint32_t PHY_CONFIG_ADDR
Indicates the currently active physical link configuration.
Definition: RegisterFile.h:479
SocCamera::tcRegisterFile::tsRegDefinition
Definition: RegisterFile.h:151
SocCamera::tcRegUpdateTypeMsg::tcRegUpdateTypeMsg
tcRegUpdateTypeMsg(const tcRegisterFile::tsRegDefinition *preg, T oldval, T newval)
Definition: RegisterFile.h:375
U3V_VERSION
const uint32_t U3V_VERSION
Definition: RegisterFile.h:575
SENS_SPECIFIC_16_ADDR
const uint32_t SENS_SPECIFIC_16_ADDR
Definition: RegisterFile.h:847
SC_CAP_US
const uint32_t SC_CAP_US
Definition: RegisterFile.h:1103
REVERSE_Y_ADDR
const uint32_t REVERSE_Y_ADDR
SFNC 4.34 ReverseY - "Bool" that flips Y when true.
Definition: RegisterFile.h:629
SocCamera::tcRegisterFile::set_buffer
GEV_STATUS set_buffer(uint32_t address, const uint8_t *buff, uint32_t length)
Definition: RegisterFile.cpp:798
MANIFEST_TABLE_ADDR
const uint32_t MANIFEST_TABLE_ADDR
Definition: RegisterFile.h:497
U3V_PAYLOAD_COUNT_ADDR
const uint32_t U3V_PAYLOAD_COUNT_ADDR
Definition: RegisterFile.h:595
CURRENT_GATEWAY0_ADDR
const uint32_t CURRENT_GATEWAY0_ADDR
This register indicates the default gateway IP address to be used on the given network interface.
Definition: RegisterFile.h:449
SocCamera::tcRegisterFile::eeBigEndian
@ eeBigEndian
Definition: RegisterFile.h:143
SocCamera::tcRegUpdateTypeMsg::m_oldval
T m_oldval
This is the old value before we decided to try and change it.
Definition: RegisterFile.h:379
SocCamera::tcRegisterFile::reg_wr
bool reg_wr(uint32_t address)
Is the specified register address writeable.
Definition: RegisterFile.cpp:221
SocCamera::tcRegisterFile::cnNOADDRESS
static const uint32_t cnNOADDRESS
Definition: RegisterFile.h:125
SENS_SPECIFIC_22_ADDR
const uint32_t SENS_SPECIFIC_22_ADDR
Definition: RegisterFile.h:853
SocCamera::tcRegisterFile::eeLittleEndian
@ eeLittleEndian
Definition: RegisterFile.h:142
SocCamera::tcRegisterFile::tuDataType
Definition: RegisterFile.h:134
TEST_PATTERN_ADDR
const uint32_t TEST_PATTERN_ADDR
Definition: RegisterFile.h:641
NET_IFACE_C_MASK
const uint32_t NET_IFACE_C_MASK
Definition: RegisterFile.h:1082
SocCamera::tcRegUpdateTypeMsg
Definition: RegisterFile.h:372
SocCamera::tcRegisterFile::update_word
void update_word(uint32_t address, uint32_t data)
Lean and mean write to shadow. Does not ripple through observers.
Definition: RegisterFile.cpp:861
ROI_OFFSET_Y_ADDR
const uint32_t ROI_OFFSET_Y_ADDR
SFNC 4.21 OffsetY - This register stores the starting row of the ROI.
Definition: RegisterFile.h:621
DEVICE_FIRMWARE_VERSION_ADDR
const uint32_t DEVICE_FIRMWARE_VERSION_ADDR
Definition: RegisterFile.h:609
SocCamera::eeRegUint32
@ eeRegUint32
Generic 32-bit unsigned integer interface (for endian management)
Definition: RegisterFile.h:112
PENDING_TIMEOUT_ADDR
const uint32_t PENDING_TIMEOUT_ADDR
Pending Timeout to report the longest GVCP command execution time before issuing a PENDING_ACK....
Definition: RegisterFile.h:475
TIMESTAMP_CTRL_ADDR
const uint32_t TIMESTAMP_CTRL_ADDR
This register is used to control the timestamp counter.
Definition: RegisterFile.h:471
AnalogControl::eeU
@ eeU
Definition: RegisterFile.h:709
SC_CAP_AIT
const uint32_t SC_CAP_AIT
Definition: RegisterFile.h:1102
U3V_MAX_ACK_LEN
const uint32_t U3V_MAX_ACK_LEN
Definition: RegisterFile.h:579
AnalogControl::eeAnalogU
@ eeAnalogU
Definition: RegisterFile.h:716
SECOND_URL_ADDR
const uint32_t SECOND_URL_ADDR
This register stores the second URsi_meL to the XML device description file. This URL is an alternati...
Definition: RegisterFile.h:457
SENS_SPECIFIC_2_ADDR
const uint32_t SENS_SPECIFIC_2_ADDR
Definition: RegisterFile.h:833
ColorTransf::eeRGBtoRGB
@ eeRGBtoRGB
Definition: RegisterFile.h:742
ColorTransf::eeColorTransfSelected
eeColorTransfSelected
Definition: RegisterFile.h:741
TriggerActivation::eeLevelHigh
@ eeLevelHigh
Definition: RegisterFile.h:790
TriggerSelector::eeAcquisitionStart
@ eeAcquisitionStart
Definition: RegisterFile.h:770
LUT_VALUE_ADDR
const uint32_t LUT_VALUE_ADDR
Definition: RegisterFile.h:672
AnalogControl::eeAnalogSelected
eeAnalogSelected
Definition: RegisterFile.h:703
U3V_PAYLOAD_FINAL2_ADDR
const uint32_t U3V_PAYLOAD_FINAL2_ADDR
Definition: RegisterFile.h:597
MODEL_NAME_ADDR
const uint32_t MODEL_NAME_ADDR
This registers stores a string containing the device model name. This string uses the character set i...
Definition: RegisterFile.h:451
SocCamera::tcRegisterFile::set_word
GEV_STATUS set_word(uint32_t address, uint32_t data)
Definition: RegisterFile.cpp:877
DEVICE_TEMPERATURE_SELECT_ADDR
const uint32_t DEVICE_TEMPERATURE_SELECT_ADDR
SFNC 3.60 DeviceTemperatureSelector.
Definition: RegisterFile.h:654
SocCamera::tcRegisterFile::reg_size
int reg_size(uint32_t address)
Definition: RegisterFile.cpp:150
MCTT_ADDR
const uint32_t MCTT_ADDR
This register provides the transmission timeout value in milliseconds. This indicates the amount of t...
Definition: RegisterFile.h:487
SocCamera::eeRegString
@ eeRegString
A string interface (for variable size / null termination)
Definition: RegisterFile.h:115
tcPayloadSetter
Definition: PayloadSetter.h:11
DIGITAL_IO_LINE_SOURCE_ADDR
const uint32_t DIGITAL_IO_LINE_SOURCE_ADDR
Definition: RegisterFile.h:798
ColorTransf::eeOffset1
@ eeOffset1
Definition: RegisterFile.h:757
SocCamera::tcRegisterFile::set_long
GEV_STATUS set_long(uint32_t address, uint64_t data)
Definition: RegisterFile.cpp:377
Observable.h
SCPS_F
const uint32_t SCPS_F
Flags for SCPS0 Register.
Definition: RegisterFile.h:1088
TriggerSelector
Definition: RegisterFile.h:768
TriggerSelector::eeExposureActive
@ eeExposureActive
Definition: RegisterFile.h:782
SocCamera::tcRegisterFile::tuDataType::dfltfval
float dfltfval
storage for 4 byte single precision float
Definition: RegisterFile.h:136
ColorTransf::eeRGBtoYUV
@ eeRGBtoYUV
Definition: RegisterFile.h:743
AnalogControl::eeDigitalU
@ eeDigitalU
Definition: RegisterFile.h:723
SocCamera::tcRegisterFile::set_float
GEV_STATUS set_float(uint32_t address, float data)
Definition: RegisterFile.cpp:922
AnalogControl::eeDigitalAll
@ eeDigitalAll
Definition: RegisterFile.h:718
PERSISTENT_IP_ADDR0_ADDR
const uint32_t PERSISTENT_IP_ADDR0_ADDR
This register indicates the Persistent IP address for this network interface. It is only used when th...
Definition: RegisterFile.h:459
MANUFACTURER_INFO_ADDR
const uint32_t MANUFACTURER_INFO_ADDR
This register stores a string containing additional manufacturer-specific information about the devic...
Definition: RegisterFile.h:453
DIGITAL_IO_LINE_SELECT_ADDR
const uint32_t DIGITAL_IO_LINE_SELECT_ADDR
Definition: RegisterFile.h:796
SC_CAP_EC
const uint32_t SC_CAP_EC
Definition: RegisterFile.h:1104
EXPOSURE_TIME_SELECT_ADDR
const uint32_t EXPOSURE_TIME_SELECT_ADDR
SFNC 5.7.3 ExposureTimeSelector - This optional register allows selecting different exposure times (s...
Definition: RegisterFile.h:657
SENS_READ_ADDR
const uint32_t SENS_READ_ADDR
Definition: RegisterFile.h:826
SocCamera
Definition: CameraTypes.h:7
SocCamera::tcRegisterFile::update_buffer
void update_buffer(uint32_t address, const uint8_t *buff, uint32_t length)
Definition: RegisterFile.cpp:772
SENS_SPECIFIC_14_ADDR
const uint32_t SENS_SPECIFIC_14_ADDR
Definition: RegisterFile.h:845
SocCamera::tcRegisterFile::cnMAX_PAYLOAD_SIZE
static const uint32_t cnMAX_PAYLOAD_SIZE
Definition: RegisterFile.h:131
TRIGGER_SELECTOR_ADDR
const uint32_t TRIGGER_SELECTOR_ADDR
Definition: RegisterFile.h:763
SCPS0_ADDR
const uint32_t SCPS0_ADDR
This register indicates the packet size in bytes for this stream channel. This is the total packet si...
Definition: RegisterFile.h:491
SocCamera::tcRegisterFile::reg_rd
bool reg_rd(uint32_t address)
Is the specified register address readable.
Definition: RegisterFile.cpp:208
SocCamera::tcRegisterFile::teEndianness
teEndianness
Definition: RegisterFile.h:141
AnalogControl::eeRed
@ eeRed
Definition: RegisterFile.h:705
CURRENT_IP_ADDR0_ADDR
const uint32_t CURRENT_IP_ADDR0_ADDR
This register reports the IP address for the given network interface once it has been configured.
Definition: RegisterFile.h:447
TRIGGER_SOURCE_ADDR
const uint32_t TRIGGER_SOURCE_ADDR
Definition: RegisterFile.h:765
INTERNAL_EXP_MODE_ADDR
const uint32_t INTERNAL_EXP_MODE_ADDR
Definition: RegisterFile.h:664
SocCamera::tcRegisterFile
Definition: RegisterFile.h:121
SENS_SPECIFIC_30_ADDR
const uint32_t SENS_SPECIFIC_30_ADDR
Definition: RegisterFile.h:861
SocCamera::tcRegisterFile::swap_endian
static T swap_endian(T u)
Definition: RegisterFile.h:196
SENS_SPECIFIC_20_ADDR
const uint32_t SENS_SPECIFIC_20_ADDR
Definition: RegisterFile.h:851
AnalogControl::eeAnalogBlue
@ eeAnalogBlue
Definition: RegisterFile.h:714
U3V_CMD_EP_BUFF_SIZE
#define U3V_CMD_EP_BUFF_SIZE
Definition: RegisterFile.h:567
TriggerActivation::eeAnyEdge
@ eeAnyEdge
Definition: RegisterFile.h:789
TriggerSelector::eeLineStart
@ eeLineStart
Definition: RegisterFile.h:779
ColorTransf::eeGain21
@ eeGain21
Definition: RegisterFile.h:754
MCP_ADDR
const uint32_t MCP_ADDR
This register provides port information about the message channel. The message channel is activated w...
Definition: RegisterFile.h:485
PERSISTENT_GATEWAY0_ADDR
const uint32_t PERSISTENT_GATEWAY0_ADDR
This register indicates the persistent default gateway for this network interface....
Definition: RegisterFile.h:461
SocCamera::tcRegisterFile::get_long
uint64_t get_long(uint32_t address)
Definition: RegisterFile.cpp:366
DIGITAL_IO_LINE_INVERTER_ADDR
const uint32_t DIGITAL_IO_LINE_INVERTER_ADDR
Definition: RegisterFile.h:802
SocCamera::tcRegisterFile::tsRegDefinition::name
const char * name
the logical name of the register
Definition: RegisterFile.h:154
SocCamera::tcRegisterFile::tsRegDefinition::size
uint32_t size
the size of the register in bytes
Definition: RegisterFile.h:155
SocCamera::tcRegUpdateUint32Msg
tcRegUpdateTypeMsg< uint32_t > tcRegUpdateUint32Msg
Definition: RegisterFile.h:396
TriggerSelector::eeFrameBurstActive
@ eeFrameBurstActive
Definition: RegisterFile.h:778
SocCamera::tcRegisterFile::check_and_update_payload_size
void check_and_update_payload_size(uint64_t address)
Definition: RegisterFile.cpp:1016
SocCamera::eeRegNoType
@ eeRegNoType
Generic Register interface (an array of Binary Data)
Definition: RegisterFile.h:111
AnalogControl::eeAnalogY
@ eeAnalogY
Definition: RegisterFile.h:715
ColorTransf::eeDeviceSpecific
@ eeDeviceSpecific
Definition: RegisterFile.h:744
LUT_ENABLE_ADDR
const uint32_t LUT_ENABLE_ADDR
Definition: RegisterFile.h:668
SENS_SPECIFIC_28_ADDR
const uint32_t SENS_SPECIFIC_28_ADDR
Definition: RegisterFile.h:859
NET_IFACE_C_D
const uint32_t NET_IFACE_C_D
Definition: RegisterFile.h:1080
SocCamera::tcRegisterFile::instanceMade
static bool instanceMade()
Definition: RegisterFile.cpp:383
U3V_MAX_TRAILER_SIZE_ADDR
const uint32_t U3V_MAX_TRAILER_SIZE_ADDR
Definition: RegisterFile.h:598
SocCamera::tcRegisterFile::tsRegDefinition::rdaccess
bool rdaccess
whether the register may be read by an external interface
Definition: RegisterFile.h:157
SocCamera::tcRegisterFile::getInstance
static tcRegisterFile * getInstance(tsRegDefinition *apRegs=NULL, bool abBigEndian=true)
Definition: RegisterFile.cpp:355
DEVICE_FX3_DATE_ADDR
const uint32_t DEVICE_FX3_DATE_ADDR
Definition: RegisterFile.h:614
SocCamera::tcRegisterFile::set_string
GEV_STATUS set_string(uint32_t address, const char *data)
Definition: RegisterFile.cpp:980
AnalogControl::eeAnalogAll
@ eeAnalogAll
Definition: RegisterFile.h:711
SocCamera::tcRegisterFile::reg_valid
bool reg_valid(uint32_t address)
Is the specified register address valid.
Definition: RegisterFile.cpp:195
MCSP_ADDR
const uint32_t MCSP_ADDR
Message Channel Source Port.
Definition: RegisterFile.h:489
SocCamera::tcRegisterFile::sharedInit
void sharedInit()
Definition: RegisterFile.cpp:411
GEV_STATUS
uint16_t GEV_STATUS
Definition: GigE.h:24
SocCamera::eeRegUint64
@ eeRegUint64
Generic 64-bit unsigned integer interface (for endian management)
Definition: RegisterFile.h:114
SCDA0_ADDR
const uint32_t SCDA0_ADDR
This register indicates the destination IP address for this stream channel.
Definition: RegisterFile.h:493
SocCamera::tcRegisterFile::format_memdump
static std::string format_memdump(uint8_t *pbuff, uint16_t length)
This function is for debugging. It formats a multiline string.
Definition: RegisterFile.cpp:1295
SENS_SPECIFIC_18_ADDR
const uint32_t SENS_SPECIFIC_18_ADDR
Definition: RegisterFile.h:849
ColorTransf::eeOffset2
@ eeOffset2
Definition: RegisterFile.h:758
U3V_MAX_CMD_LEN
const uint32_t U3V_MAX_CMD_LEN
Definition: RegisterFile.h:578
SocCamera::tcRegUpdateFloatMsg
tcRegUpdateTypeMsg< float > tcRegUpdateFloatMsg
Definition: RegisterFile.h:408
AnalogControl::eeDeviceSpecific
@ eeDeviceSpecific
Definition: RegisterFile.h:730
PAYLOAD_SIZE_ADDR
const uint32_t PAYLOAD_SIZE_ADDR
SFNC 25.2.5 PayloadSize - Size of frame without headers.
Definition: RegisterFile.h:625
SocCamera::tcRegUpdateUint64Msg
tcRegUpdateTypeMsg< uint64_t > tcRegUpdateUint64Msg
Definition: RegisterFile.h:384
SocCamera::tcSensorBoard
Definition: SensorBoard.h:40
SocCamera::tcRegisterFile::update_long
void update_long(uint32_t address, uint64_t data)
Lean and mean write to shadow. Does not ripple through observers.
Definition: RegisterFile.cpp:372
SocCamera::tcRegisterFile::tcRegisterFile
tcRegisterFile(tsRegDefinition *apRegs, bool abBigEndian)
Definition: RegisterFile.cpp:526
USER_NAME_ADDR
const uint32_t USER_NAME_ADDR
String providing the device name.
Definition: RegisterFile.h:455
DEBUG_BUFFER_ADDR
const uint32_t DEBUG_BUFFER_ADDR
Definition: RegisterFile.h:882
SocCamera::teRegType
teRegType
Specifies what kind of data a register holds.
Definition: RegisterFile.h:110
XML_FILE_ADDR
const uint32_t XML_FILE_ADDR
This is where the XML file is loaded into memory.
Definition: RegisterFile.h:875
TriggerSelector::eeAcquisitionEnd
@ eeAcquisitionEnd
Definition: RegisterFile.h:771
SC_CAP_BE
const uint32_t SC_CAP_BE
Flags for SCC0 Register.
Definition: RegisterFile.h:1098
U3V_SIRM_AVAILABLE
#define U3V_SIRM_AVAILABLE
Definition: RegisterFile.h:562
SocCamera::tcRegisterFile::get_array
int get_array(uint32_t address, uint8_t *buff, uint16_t length) const
Retrieve RAW memory from register space.
Definition: RegisterFile.cpp:668
U3V_SIRM_LENGTH
const uint32_t U3V_SIRM_LENGTH
Definition: RegisterFile.h:583
WHITE_CLIP_ADDR
const uint32_t WHITE_CLIP_ADDR
Definition: RegisterFile.h:695
TIMESTAMP_CTRL_R
const uint32_t TIMESTAMP_CTRL_R
Definition: RegisterFile.h:1112
AnalogControl::eeAll
@ eeAll
Definition: RegisterFile.h:704
AnalogControl::eeDigitalRed
@ eeDigitalRed
Definition: RegisterFile.h:719
U3V_SIRM_INFO_ADDR
const uint32_t U3V_SIRM_INFO_ADDR
Definition: RegisterFile.h:588
AnalogControl::eeDigitalY
@ eeDigitalY
Definition: RegisterFile.h:722
GAMMA_ADDR
const uint32_t GAMMA_ADDR
Definition: RegisterFile.h:699
ColorTransf::eeColorTransfValueSelected
eeColorTransfValueSelected
Definition: RegisterFile.h:746
SocCamera::tcRegUpdateTypeMsg::m_fixval
T m_fixval
This is the new value after all the handlers have had a chance verify it. It' may be different than t...
Definition: RegisterFile.h:381
SocCamera::tcRegUpdateMsg::tcRegUpdateMsg
tcRegUpdateMsg(const tcRegisterFile::tsRegDefinition *preg)
Definition: RegisterFile.h:354
SocCamera::tcRegisterFile::tsRegDefinition::dfltsval
std::string dfltsval
used to store the string value of a string register
Definition: RegisterFile.h:160
BLACK_LEVEL_AUTOBALANCE_ADDR
const uint32_t BLACK_LEVEL_AUTOBALANCE_ADDR
Definition: RegisterFile.h:693
SocCamera::tcRegUpdateMsg
Definition: RegisterFile.h:351
ColorTransf::eeGain11
@ eeGain11
Definition: RegisterFile.h:751
COLOR_TRANSF_SELECTOR_ADDR
const uint32_t COLOR_TRANSF_SELECTOR_ADDR
Definition: RegisterFile.h:735
AnalogControl::eeOnce
@ eeOnce
Definition: RegisterFile.h:728
SENS_MIN_FRAME_PERIOD_ADDR
const uint32_t SENS_MIN_FRAME_PERIOD_ADDR
Definition: RegisterFile.h:829
TriggerActivation::teTriggerActivation
teTriggerActivation
Definition: RegisterFile.h:786
SocCamera::tcRegisterFile::show_register
void show_register(const tsRegDefinition *pregdef)
Definition: RegisterFile.cpp:1224
SENS_SPECIFIC_6_ADDR
const uint32_t SENS_SPECIFIC_6_ADDR
Definition: RegisterFile.h:837
NET_IFACE_CAPABILITY0_ADDR
const uint32_t NET_IFACE_CAPABILITY0_ADDR
This register indicates the IP configuration scheme supported on the given network interface....
Definition: RegisterFile.h:445
TriggerActivation::eeFallingEdge
@ eeFallingEdge
Definition: RegisterFile.h:788
TriggerSelector::eeExposureStart
@ eeExposureStart
Definition: RegisterFile.h:780
AnalogControl::eeAnalogV
@ eeAnalogV
Definition: RegisterFile.h:717
SocCamera::tcRegisterFile::update_string
void update_string(uint32_t address, const char *data, int len=-1)
Lean and mean write to shadow. Does not ripple through observers.
Definition: RegisterFile.cpp:956
NET_IFACE_C_PG
const uint32_t NET_IFACE_C_PG
Definition: RegisterFile.h:1078
ColorTransf::eeGain01
@ eeGain01
Definition: RegisterFile.h:748
AnalogControl::eeDigitalGreen
@ eeDigitalGreen
Definition: RegisterFile.h:720
ColorTransf::eeGain22
@ eeGain22
Definition: RegisterFile.h:755