libximc  2.13.1
ximc.h
Go to the documentation of this file.
1 #ifndef INC_XIMC_H
2 #define INC_XIMC_H
3 
19 #if defined(_WIN32) || defined(LABVIEW64_IMPORT) || defined(LABVIEW32_IMPORT) || defined(MATLAB_IMPORT)
20  #define XIMC_API __stdcall
21 #else
22  #ifdef LIBXIMC_EXPORTS
23  #define XIMC_API __attribute__((visibility("default")))
24  #else
25  #define XIMC_API
26  #endif
27 #endif
28 
33 #if defined(_WIN32) || defined(LABVIEW64_IMPORT) || defined(LABVIEW32_IMPORT) || defined(MATLAB_IMPORT)
34  #define XIMC_CALLCONV __stdcall
35 #else
36  #define XIMC_CALLCONV
37 #endif
38 
43 #if defined(_WIN32) || defined(LABVIEW64_IMPORT) || defined(LABVIEW32_IMPORT) || defined(MATLAB_IMPORT)
44 #define XIMC_RETTYPE unsigned int
45 #else
46 #define XIMC_RETTYPE void*
47 #endif
48 
49 
50 #if !defined(XIMC_NO_STDINT)
51 
52 #if ( (defined(_MSC_VER) && (_MSC_VER < 1600)) || defined(LABVIEW64_IMPORT) || defined(LABVIEW32_IMPORT)) && !defined(MATLAB_IMPORT)
53 // msvc types burden
54 typedef __int8 int8_t;
55 typedef __int16 int16_t;
56 typedef __int32 int32_t;
57 typedef __int64 int64_t;
58 typedef unsigned __int8 uint8_t;
59 typedef unsigned __int16 uint16_t;
60 typedef unsigned __int32 uint32_t;
61 typedef unsigned __int64 uint64_t;
62 #else
63 #include <stdint.h>
64 #endif
65 
66 /* labview doesn't speak C99 */
67 #if defined(LABVIEW64_IMPORT) || defined(LABVIEW32_IMPORT)
68 typedef unsigned __int64 ulong_t;
69 typedef __int64 long_t;
70 #else
71 typedef unsigned long long ulong_t;
72 typedef long long long_t;
73 #endif
74 
75 #endif
76 
77 #include <time.h>
78 
79 #if defined(__cplusplus)
80 extern "C"
81 {
82 #endif
83 
84 
93  typedef int device_t;
94 
103  typedef int result_t;
104 
113  #if defined(_WIN64) || defined(__LP64__) || defined(LABVIEW64_IMPORT)
114  typedef uint64_t device_enumeration_t;
115  #else
116  typedef uint32_t device_enumeration_t;
117  #endif
118  //typedef device_enumeration_t* pdevice_enumeration_t;
119 
128 #define device_undefined -1
129 
138 
147 #define result_ok 0
148 
157 #define result_error -1
158 
167 #define result_not_implemented -2
168 
177 #define result_value_error -3
178 
187 #define result_nodevice -4
188 
190 
199 
208 #define LOGLEVEL_ERROR 0x01
209 
217 #define LOGLEVEL_WARNING 0x02
218 
226 #define LOGLEVEL_INFO 0x03
227 
235 #define LOGLEVEL_DEBUG 0x04
236 
237 
238 
246  typedef struct calibration_t
247  {
248  double A;
249  unsigned int MicrostepMode;
250  } calibration_t;
251 
260  {
261  uint32_t ipv4;
262  char nodename[16];
263  uint32_t axis_state;
264  char locker_username[16];
265  char locker_nodename[16];
266  time_t locked_time;
268 
269 
270 
272 #define LIBXIMC_VERSION 2.13.1
273 
277 #define LIBXIMC_PROTOCOL_VERSION 20.5
278 
281 /*
282  ------------------------------------------
283  BEGIN OF GENERATED struct declarations
284  ------------------------------------------
285 */
286 
296 #define ENUMERATE_PROBE 0x01
297 #define ENUMERATE_ALL_COM 0x02
298 #define ENUMERATE_NETWORK 0x04
300 
301 
316 #define MOVE_STATE_MOVING 0x01
317 #define MOVE_STATE_TARGET_SPEED 0x02
318 #define MOVE_STATE_ANTIPLAY 0x04
320 
321 
335 #define EEPROM_PRECEDENCE 0x01
337 
338 
353 #define PWR_STATE_UNKNOWN 0x00
354 #define PWR_STATE_OFF 0x01
355 #define PWR_STATE_NORM 0x03
356 #define PWR_STATE_REDUCT 0x04
357 #define PWR_STATE_MAX 0x05
359 
360 
377 #define STATE_CONTR 0x000003F
378 #define STATE_ERRC 0x0000001
379 #define STATE_ERRD 0x0000002
380 #define STATE_ERRV 0x0000004
381 #define STATE_EEPROM_CONNECTED 0x0000010
382 #define STATE_IS_HOMED 0x0000020
383 #define STATE_SECUR 0x1B3FFC0
384 #define STATE_ALARM 0x0000040
385 #define STATE_CTP_ERROR 0x0000080
386 #define STATE_POWER_OVERHEAT 0x0000100
387 #define STATE_CONTROLLER_OVERHEAT 0x0000200
388 #define STATE_OVERLOAD_POWER_VOLTAGE 0x0000400
389 #define STATE_OVERLOAD_POWER_CURRENT 0x0000800
390 #define STATE_OVERLOAD_USB_VOLTAGE 0x0001000
391 #define STATE_LOW_USB_VOLTAGE 0x0002000
392 #define STATE_OVERLOAD_USB_CURRENT 0x0004000
393 #define STATE_BORDERS_SWAP_MISSET 0x0008000
394 #define STATE_LOW_POWER_VOLTAGE 0x0010000
395 #define STATE_H_BRIDGE_FAULT 0x0020000
396 #define STATE_WINDING_RES_MISMATCH 0x0100000
397 #define STATE_ENCODER_FAULT 0x0200000
398 #define STATE_ENGINE_RESPONSE_ERROR 0x0800000
399 #define STATE_EXTIO_ALARM 0x1000000
401 
402 
419 #define STATE_DIG_SIGNAL 0xFFFF
420 #define STATE_RIGHT_EDGE 0x0001
421 #define STATE_LEFT_EDGE 0x0002
422 #define STATE_BUTTON_RIGHT 0x0004
423 #define STATE_BUTTON_LEFT 0x0008
424 #define STATE_GPIO_PINOUT 0x0010
425 #define STATE_GPIO_LEVEL 0x0020
426 #define STATE_BRAKE 0x0200
427 #define STATE_REV_SENSOR 0x0400
428 #define STATE_SYNC_INPUT 0x0800
429 #define STATE_SYNC_OUTPUT 0x1000
430 #define STATE_ENC_A 0x2000
431 #define STATE_ENC_B 0x4000
433 
434 
449 #define ENC_STATE_ABSENT 0x00
450 #define ENC_STATE_UNKNOWN 0x01
451 #define ENC_STATE_MALFUNC 0x02
452 #define ENC_STATE_REVERS 0x03
453 #define ENC_STATE_OK 0x04
455 
456 
471 #define WIND_A_STATE_ABSENT 0x00
472 #define WIND_A_STATE_UNKNOWN 0x01
473 #define WIND_A_STATE_MALFUNC 0x02
474 #define WIND_A_STATE_OK 0x03
475 #define WIND_B_STATE_ABSENT 0x00
476 #define WIND_B_STATE_UNKNOWN 0x10
477 #define WIND_B_STATE_MALFUNC 0x20
478 #define WIND_B_STATE_OK 0x30
480 
481 
498 #define MVCMD_NAME_BITS 0x3F
499 #define MVCMD_UKNWN 0x00
500 #define MVCMD_MOVE 0x01
501 #define MVCMD_MOVR 0x02
502 #define MVCMD_LEFT 0x03
503 #define MVCMD_RIGHT 0x04
504 #define MVCMD_STOP 0x05
505 #define MVCMD_HOME 0x06
506 #define MVCMD_LOFT 0x07
507 #define MVCMD_SSTP 0x08
508 #define MVCMD_ERROR 0x40
509 #define MVCMD_RUNNING 0x80
511 
512 
530 #define RPM_DIV_1000 0x01
532 
533 
551 #define ENGINE_REVERSE 0x01
552 #define ENGINE_CURRENT_AS_RMS 0x02
553 #define ENGINE_MAX_SPEED 0x04
554 #define ENGINE_ANTIPLAY 0x08
555 #define ENGINE_ACCEL_ON 0x10
556 #define ENGINE_LIMIT_VOLT 0x20
557 #define ENGINE_LIMIT_CURR 0x40
558 #define ENGINE_LIMIT_RPM 0x80
560 
561 
580 #define MICROSTEP_MODE_FULL 0x01
581 #define MICROSTEP_MODE_FRAC_2 0x02
582 #define MICROSTEP_MODE_FRAC_4 0x03
583 #define MICROSTEP_MODE_FRAC_8 0x04
584 #define MICROSTEP_MODE_FRAC_16 0x05
585 #define MICROSTEP_MODE_FRAC_32 0x06
586 #define MICROSTEP_MODE_FRAC_64 0x07
587 #define MICROSTEP_MODE_FRAC_128 0x08
588 #define MICROSTEP_MODE_FRAC_256 0x09
590 
591 
610 #define ENGINE_TYPE_NONE 0x00
611 #define ENGINE_TYPE_DC 0x01
612 #define ENGINE_TYPE_2DC 0x02
613 #define ENGINE_TYPE_STEP 0x03
614 #define ENGINE_TYPE_TEST 0x04
615 #define ENGINE_TYPE_BRUSHLESS 0x05
617 
618 
637 #define DRIVER_TYPE_DISCRETE_FET 0x01
638 #define DRIVER_TYPE_INTEGRATE 0x02
639 #define DRIVER_TYPE_EXTERNAL 0x03
641 
642 
658 #define POWER_REDUCT_ENABLED 0x01
659 #define POWER_OFF_ENABLED 0x02
660 #define POWER_SMOOTH_CURRENT 0x04
662 
663 
679 #define ALARM_ON_DRIVER_OVERHEATING 0x01
680 #define LOW_UPWR_PROTECTION 0x02
681 #define H_BRIDGE_ALERT 0x04
682 #define ALARM_ON_BORDERS_SWAP_MISSET 0x08
683 #define ALARM_FLAGS_STICKING 0x10
684 #define USB_BREAK_RECONNECT 0x20
685 #define ALARM_WINDING_MISMATCH 0x40
686 #define ALARM_ENGINE_RESPONSE 0x80
688 
689 
705 #define SETPOS_IGNORE_POSITION 0x01
706 #define SETPOS_IGNORE_ENCODER 0x02
708 
709 
723 #define FEEDBACK_ENCODER 0x01
724 #define FEEDBACK_EMF 0x04
725 #define FEEDBACK_NONE 0x05
726 #define FEEDBACK_ENCODER_MEDIATED 0x06
728 
729 
743 #define FEEDBACK_ENC_REVERSE 0x01
744 #define FEEDBACK_ENC_TYPE_BITS 0xC0
745 #define FEEDBACK_ENC_TYPE_AUTO 0x00
746 #define FEEDBACK_ENC_TYPE_SINGLE_ENDED 0x40
747 #define FEEDBACK_ENC_TYPE_DIFFERENTIAL 0x80
749 
750 
762 #define SYNCIN_ENABLED 0x01
763 #define SYNCIN_INVERT 0x02
764 #define SYNCIN_GOTOPOSITION 0x04
766 
767 
779 #define SYNCOUT_ENABLED 0x01
780 #define SYNCOUT_STATE 0x02
781 #define SYNCOUT_INVERT 0x04
782 #define SYNCOUT_IN_STEPS 0x08
783 #define SYNCOUT_ONSTART 0x10
784 #define SYNCOUT_ONSTOP 0x20
785 #define SYNCOUT_ONPERIOD 0x40
787 
788 
802 #define EXTIO_SETUP_OUTPUT 0x01
803 #define EXTIO_SETUP_INVERT 0x02
805 
806 
821 #define EXTIO_SETUP_MODE_IN_BITS 0x0F
822 #define EXTIO_SETUP_MODE_IN_NOP 0x00
823 #define EXTIO_SETUP_MODE_IN_STOP 0x01
824 #define EXTIO_SETUP_MODE_IN_PWOF 0x02
825 #define EXTIO_SETUP_MODE_IN_MOVR 0x03
826 #define EXTIO_SETUP_MODE_IN_HOME 0x04
827 #define EXTIO_SETUP_MODE_IN_ALARM 0x05
828 #define EXTIO_SETUP_MODE_OUT_BITS 0xF0
829 #define EXTIO_SETUP_MODE_OUT_OFF 0x00
830 #define EXTIO_SETUP_MODE_OUT_ON 0x10
831 #define EXTIO_SETUP_MODE_OUT_MOVING 0x20
832 #define EXTIO_SETUP_MODE_OUT_ALARM 0x30
833 #define EXTIO_SETUP_MODE_OUT_MOTOR_ON 0x40
835 
836 
854 #define BORDER_IS_ENCODER 0x01
855 #define BORDER_STOP_LEFT 0x02
856 #define BORDER_STOP_RIGHT 0x04
857 #define BORDERS_SWAP_MISSET_DETECTION 0x08
859 
860 
878 #define ENDER_SWAP 0x01
879 #define ENDER_SW1_ACTIVE_LOW 0x02
880 #define ENDER_SW2_ACTIVE_LOW 0x04
882 
883 
901 #define BRAKE_ENABLED 0x01
902 #define BRAKE_ENG_PWROFF 0x02
904 
905 
923 #define CONTROL_MODE_BITS 0x03
924 #define CONTROL_MODE_OFF 0x00
925 #define CONTROL_MODE_JOY 0x01
926 #define CONTROL_MODE_LR 0x02
927 #define CONTROL_BTN_LEFT_PUSHED_OPEN 0x04
928 #define CONTROL_BTN_RIGHT_PUSHED_OPEN 0x08
930 
931 
947 #define JOY_REVERSE 0x01
949 
950 
968 #define CTP_ENABLED 0x01
969 #define CTP_BASE 0x02
970 #define CTP_ALARM_ON_ERROR 0x04
971 #define REV_SENS_INV 0x08
972 #define CTP_ERROR_CORRECTION 0x10
974 
975 
994 #define HOME_DIR_FIRST 0x001
995 #define HOME_DIR_SECOND 0x002
996 #define HOME_MV_SEC_EN 0x004
997 #define HOME_HALF_MV 0x008
998 #define HOME_STOP_FIRST_BITS 0x030
999 #define HOME_STOP_FIRST_REV 0x010
1000 #define HOME_STOP_FIRST_SYN 0x020
1001 #define HOME_STOP_FIRST_LIM 0x030
1002 #define HOME_STOP_SECOND_BITS 0x0C0
1003 #define HOME_STOP_SECOND_REV 0x040
1004 #define HOME_STOP_SECOND_SYN 0x080
1005 #define HOME_STOP_SECOND_LIM 0x0C0
1006 #define HOME_USE_FAST 0x100
1008 
1009 
1021 #define UART_PARITY_BITS 0x03
1022 #define UART_PARITY_BIT_EVEN 0x00
1023 #define UART_PARITY_BIT_ODD 0x01
1024 #define UART_PARITY_BIT_SPACE 0x02
1025 #define UART_PARITY_BIT_MARK 0x03
1026 #define UART_PARITY_BIT_USE 0x04
1027 #define UART_STOP_BIT 0x08
1029 
1030 
1042 #define MOTOR_TYPE_UNKNOWN 0x00
1043 #define MOTOR_TYPE_STEP 0x01
1044 #define MOTOR_TYPE_DC 0x02
1045 #define MOTOR_TYPE_BLDC 0x03
1047 
1048 
1060 #define ENCSET_DIFFERENTIAL_OUTPUT 0x001
1061 #define ENCSET_PUSHPULL_OUTPUT 0x004
1062 #define ENCSET_INDEXCHANNEL_PRESENT 0x010
1063 #define ENCSET_REVOLUTIONSENSOR_PRESENT 0x040
1064 #define ENCSET_REVOLUTIONSENSOR_ACTIVE_HIGH 0x100
1066 
1067 
1079 #define MB_AVAILABLE 0x01
1080 #define MB_POWERED_HOLD 0x02
1082 
1083 
1095 #define TS_TYPE_BITS 0x07
1096 #define TS_TYPE_UNKNOWN 0x00
1097 #define TS_TYPE_THERMOCOUPLE 0x01
1098 #define TS_TYPE_SEMICONDUCTOR 0x02
1099 #define TS_AVAILABLE 0x08
1101 
1102 
1114 #define LS_ON_SW1_AVAILABLE 0x01
1115 #define LS_ON_SW2_AVAILABLE 0x02
1116 #define LS_SW1_ACTIVE_LOW 0x04
1117 #define LS_SW2_ACTIVE_LOW 0x08
1118 #define LS_SHORTED 0x10
1120 
1121 
1135 #define BACK_EMF_INDUCTANCE_AUTO 0x01
1136 #define BACK_EMF_RESISTANCE_AUTO 0x02
1137 #define BACK_EMF_KM_AUTO 0x04
1139 
1140 
1152  typedef struct
1153  {
1154  unsigned int IPS;
1155  unsigned int FeedbackType;
1156  unsigned int FeedbackFlags;
1157  unsigned int CountsPerTurn;
1159 
1175  typedef struct
1176  {
1177  unsigned int FastHome;
1178  unsigned int uFastHome;
1179  unsigned int SlowHome;
1180  unsigned int uSlowHome;
1183  unsigned int HomeFlags;
1184  } home_settings_t;
1185 
1201  typedef struct
1202  {
1203  float FastHome;
1204  float SlowHome;
1205  float HomeDelta;
1206  unsigned int HomeFlags;
1208 
1220  typedef struct
1221  {
1222  unsigned int Speed;
1223  unsigned int uSpeed;
1224  unsigned int Accel;
1225  unsigned int Decel;
1226  unsigned int AntiplaySpeed;
1227  unsigned int uAntiplaySpeed;
1228  unsigned int MoveFlags;
1229  } move_settings_t;
1230 
1242  typedef struct
1243  {
1244  float Speed;
1245  float Accel;
1246  float Decel;
1248  unsigned int MoveFlags;
1250 
1271  typedef struct
1272  {
1273  unsigned int NomVoltage;
1274  unsigned int NomCurrent;
1275  unsigned int NomSpeed;
1276  unsigned int uNomSpeed;
1277  unsigned int EngineFlags;
1278  int Antiplay;
1279  unsigned int MicrostepMode;
1280  unsigned int StepsPerRev;
1282 
1303  typedef struct
1304  {
1305  unsigned int NomVoltage;
1306  unsigned int NomCurrent;
1307  float NomSpeed;
1308  unsigned int EngineFlags;
1309  float Antiplay;
1310  unsigned int MicrostepMode;
1311  unsigned int StepsPerRev;
1313 
1330  typedef struct
1331  {
1332  unsigned int EngineType;
1333  unsigned int DriverType;
1335 
1347  typedef struct
1348  {
1349  unsigned int HoldCurrent;
1350  unsigned int CurrReductDelay;
1351  unsigned int PowerOffDelay;
1352  unsigned int CurrentSetTime;
1353  unsigned int PowerFlags;
1354  } power_settings_t;
1355 
1369  typedef struct
1370  {
1371  unsigned int LowUpwrOff;
1372  unsigned int CriticalIpwr;
1373  unsigned int CriticalUpwr;
1374  unsigned int CriticalT;
1375  unsigned int CriticalIusb;
1376  unsigned int CriticalUusb;
1377  unsigned int MinimumUusb;
1378  unsigned int Flags;
1380 
1398  typedef struct
1399  {
1400  unsigned int BorderFlags;
1401  unsigned int EnderFlags;
1406  } edges_settings_t;
1407 
1425  typedef struct
1426  {
1427  unsigned int BorderFlags;
1428  unsigned int EnderFlags;
1429  float LeftBorder;
1430  float RightBorder;
1432 
1456  typedef struct
1457  {
1458  unsigned int KpU;
1459  unsigned int KiU;
1460  unsigned int KdU;
1461  float Kpf;
1462  float Kif;
1463  float Kdf;
1464  } pid_settings_t;
1465 
1481  typedef struct
1482  {
1483  unsigned int SyncInFlags;
1484  unsigned int ClutterTime;
1485  int Position;
1487  unsigned int Speed;
1488  unsigned int uSpeed;
1490 
1506  typedef struct
1507  {
1508  unsigned int SyncInFlags;
1509  unsigned int ClutterTime;
1510  float Position;
1511  float Speed;
1513 
1529  typedef struct
1530  {
1531  unsigned int SyncOutFlags;
1532  unsigned int SyncOutPulseSteps;
1533  unsigned int SyncOutPeriod;
1534  unsigned int Accuracy;
1535  unsigned int uAccuracy;
1537 
1553  typedef struct
1554  {
1555  unsigned int SyncOutFlags;
1556  unsigned int SyncOutPulseSteps;
1557  unsigned int SyncOutPeriod;
1558  float Accuracy;
1560 
1577  typedef struct
1578  {
1579  unsigned int EXTIOSetupFlags;
1580  unsigned int EXTIOModeFlags;
1581  } extio_settings_t;
1582 
1596  typedef struct
1597  {
1598  unsigned int t1;
1599  unsigned int t2;
1600  unsigned int t3;
1601  unsigned int t4;
1602  unsigned int BrakeFlags;
1603  } brake_settings_t;
1604 
1634  typedef struct
1635  {
1636  unsigned int MaxSpeed[10];
1637  unsigned int uMaxSpeed[10];
1638  unsigned int Timeout[9];
1639  unsigned int MaxClickTime;
1640  unsigned int Flags;
1644 
1674  typedef struct
1675  {
1676  float MaxSpeed[10];
1677  unsigned int Timeout[9];
1678  unsigned int MaxClickTime;
1679  unsigned int Flags;
1682 
1711  typedef struct
1712  {
1713  unsigned int JoyLowEnd;
1714  unsigned int JoyCenter;
1715  unsigned int JoyHighEnd;
1716  unsigned int ExpFactor;
1717  unsigned int DeadZone;
1718  unsigned int JoyFlags;
1720 
1754  typedef struct
1755  {
1756  unsigned int CTPMinError;
1757  unsigned int CTPFlags;
1758  } ctp_settings_t;
1759 
1773  typedef struct
1774  {
1775  unsigned int Speed;
1776  unsigned int UARTSetupFlags;
1777  } uart_settings_t;
1778 
1792  typedef struct
1793  {
1794  float CSS1_A;
1795  float CSS1_B;
1796  float CSS2_A;
1797  float CSS2_B;
1801 
1811  typedef struct
1812  {
1813  char ControllerName[17];
1814  unsigned int CtrlFlags;
1816 
1826  typedef struct
1827  {
1828  unsigned int UserData[7];
1830 
1852  typedef struct
1853  {
1854  float L;
1855  float R;
1856  float Km;
1857  unsigned int BackEMFFlags;
1858  } emf_settings_t;
1859 
1874  typedef struct
1875  {
1876  unsigned int stepcloseloop_Kw;
1877  unsigned int stepcloseloop_Kp_low;
1878  unsigned int stepcloseloop_Kp_high;
1880 
1895  typedef struct
1896  {
1897  unsigned int Param1;
1899 
1914  typedef struct
1915  {
1916  int Position;
1918  long_t EncPosition;
1919  } get_position_t;
1920 
1934  typedef struct
1935  {
1936  float Position;
1937  long_t EncPosition;
1939 
1954  typedef struct
1955  {
1956  int Position;
1958  long_t EncPosition;
1959  unsigned int PosFlags;
1960  } set_position_t;
1961 
1976  typedef struct
1977  {
1978  float Position;
1979  long_t EncPosition;
1980  unsigned int PosFlags;
1982 
1994  typedef struct
1995  {
1996  unsigned int MoveSts;
1997  unsigned int MvCmdSts;
1998  unsigned int PWRSts;
1999  unsigned int EncSts;
2000  unsigned int WindSts;
2003  long_t EncPosition;
2004  int CurSpeed;
2006  int Ipwr;
2007  int Upwr;
2008  int Iusb;
2009  int Uusb;
2010  int CurT;
2011  unsigned int Flags;
2012  unsigned int GPIOFlags;
2013  unsigned int CmdBufFreeSpace;
2014  } status_t;
2015 
2027  typedef struct
2028  {
2029  unsigned int MoveSts;
2030  unsigned int MvCmdSts;
2031  unsigned int PWRSts;
2032  unsigned int EncSts;
2033  unsigned int WindSts;
2034  float CurPosition;
2035  long_t EncPosition;
2036  float CurSpeed;
2037  int Ipwr;
2038  int Upwr;
2039  int Iusb;
2040  int Uusb;
2041  int CurT;
2042  unsigned int Flags;
2043  unsigned int GPIOFlags;
2044  unsigned int CmdBufFreeSpace;
2045  } status_calb_t;
2046 
2057  typedef struct
2058  {
2059  int Speed[25];
2060  int Error[25];
2061  unsigned int Length;
2062  } measurements_t;
2063 
2076  typedef struct
2077  {
2084  unsigned int Pot;
2085  unsigned int Joy;
2087  } chart_data_t;
2088 
2105  typedef struct
2106  {
2107  char Manufacturer[5];
2108  char ManufacturerId[3];
2109  char ProductDescription[9];
2110  unsigned int Major;
2111  unsigned int Minor;
2112  unsigned int Release;
2114 
2130  typedef struct
2131  {
2132  unsigned int SN;
2133  uint8_t Key[32];
2134  unsigned int Major;
2135  unsigned int Minor;
2136  unsigned int Release;
2137  } serial_number_t;
2138 
2153  typedef struct
2154  {
2155  unsigned int A1Voltage_ADC;
2156  unsigned int A2Voltage_ADC;
2157  unsigned int B1Voltage_ADC;
2158  unsigned int B2Voltage_ADC;
2159  unsigned int SupVoltage_ADC;
2160  unsigned int ACurrent_ADC;
2161  unsigned int BCurrent_ADC;
2162  unsigned int FullCurrent_ADC;
2163  unsigned int Temp_ADC;
2164  unsigned int Joy_ADC;
2165  unsigned int Pot_ADC;
2166  unsigned int L5_ADC;
2167  unsigned int H5_ADC;
2173  int ACurrent;
2174  int BCurrent;
2176  int Temp;
2177  int Joy;
2178  int Pot;
2179  int L5;
2180  int H5;
2181  unsigned int deprecated;
2182  int R;
2183  int L;
2184  } analog_data_t;
2185 
2197  typedef struct
2198  {
2199  uint8_t DebugData[128];
2200  } debug_read_t;
2201 
2213  typedef struct
2214  {
2215  uint8_t DebugData[128];
2216  } debug_write_t;
2217 
2227  typedef struct
2228  {
2229  char PositionerName[17];
2230  } stage_name_t;
2231 
2243  typedef struct
2244  {
2245  char Manufacturer[17];
2246  char PartNumber[25];
2248 
2260  typedef struct
2261  {
2263  char Units[9];
2264  float MaxSpeed;
2265  float TravelRange;
2271  } stage_settings_t;
2272 
2284  typedef struct
2285  {
2286  char Manufacturer[17];
2287  char PartNumber[25];
2289 
2301  typedef struct
2302  {
2303  unsigned int MotorType;
2304  unsigned int ReservedField;
2305  unsigned int Poles;
2306  unsigned int Phases;
2315  float StallTorque;
2321  float MaxSpeed;
2322  float MaxCurrent;
2325  float NoLoadSpeed;
2326  } motor_settings_t;
2327 
2339  typedef struct
2340  {
2341  char Manufacturer[17];
2342  char PartNumber[25];
2344 
2356  typedef struct
2357  {
2362  unsigned int PPR;
2363  unsigned int EncoderSettings;
2365 
2377  typedef struct
2378  {
2379  char Manufacturer[17];
2380  char PartNumber[25];
2382 
2394  typedef struct
2395  {
2400  unsigned int PPR;
2402 
2414  typedef struct
2415  {
2416  char Manufacturer[17];
2417  char PartNumber[25];
2419 
2431  typedef struct
2432  {
2433  float ReductionIn;
2439  float Efficiency;
2440  } gear_settings_t;
2441 
2453  typedef struct
2454  {
2455  char MagneticBrakeInfo[25];
2458  float MBTorque;
2459  unsigned int MBSettings;
2460  char TemperatureSensorInfo[25];
2461  float TSMin;
2462  float TSMax;
2463  float TSGrad;
2464  unsigned int TSSettings;
2465  unsigned int LimitSwitchesSettings;
2467 
2479  typedef struct
2480  {
2481  uint8_t key[16];
2482  } init_random_t;
2483 
2493  typedef struct
2494  {
2495  unsigned int UniqueID0;
2496  unsigned int UniqueID1;
2497  unsigned int UniqueID2;
2498  unsigned int UniqueID3;
2500 
2501 /*
2502  --------------------------------------------
2503  BEGIN OF GENERATED function declarations
2504  --------------------------------------------
2505 */
2506 
2519 
2538  result_t XIMC_API set_feedback_settings (device_t id, const feedback_settings_t* feedback_settings);
2539 
2558  result_t XIMC_API get_feedback_settings (device_t id, feedback_settings_t* feedback_settings);
2559 
2576  result_t XIMC_API set_home_settings (device_t id, const home_settings_t* home_settings);
2577 
2596  result_t XIMC_API set_home_settings_calb (device_t id, const home_settings_calb_t* home_settings_calb, const calibration_t* calibration);
2597 
2614  result_t XIMC_API get_home_settings (device_t id, home_settings_t* home_settings);
2615 
2634  result_t XIMC_API get_home_settings_calb (device_t id, home_settings_calb_t* home_settings_calb, const calibration_t* calibration);
2635 
2648  result_t XIMC_API set_move_settings (device_t id, const move_settings_t* move_settings);
2649 
2664  result_t XIMC_API set_move_settings_calb (device_t id, const move_settings_calb_t* move_settings_calb, const calibration_t* calibration);
2665 
2678  result_t XIMC_API get_move_settings (device_t id, move_settings_t* move_settings);
2679 
2694  result_t XIMC_API get_move_settings_calb (device_t id, move_settings_calb_t* move_settings_calb, const calibration_t* calibration);
2695 
2717  result_t XIMC_API set_engine_settings (device_t id, const engine_settings_t* engine_settings);
2718 
2742  result_t XIMC_API set_engine_settings_calb (device_t id, const engine_settings_calb_t* engine_settings_calb, const calibration_t* calibration);
2743 
2763  result_t XIMC_API get_engine_settings (device_t id, engine_settings_t* engine_settings);
2764 
2786  result_t XIMC_API get_engine_settings_calb (device_t id, engine_settings_calb_t* engine_settings_calb, const calibration_t* calibration);
2787 
2800  result_t XIMC_API set_entype_settings (device_t id, const entype_settings_t* entype_settings);
2801 
2814  result_t XIMC_API get_entype_settings (device_t id, entype_settings_t* entype_settings);
2815 
2829  result_t XIMC_API set_power_settings (device_t id, const power_settings_t* power_settings);
2830 
2845  result_t XIMC_API get_power_settings (device_t id, power_settings_t* power_settings);
2846 
2860  result_t XIMC_API set_secure_settings (device_t id, const secure_settings_t* secure_settings);
2861 
2875  result_t XIMC_API get_secure_settings (device_t id, secure_settings_t* secure_settings);
2876 
2891  result_t XIMC_API set_edges_settings (device_t id, const edges_settings_t* edges_settings);
2892 
2917  result_t XIMC_API set_edges_settings_calb (device_t id, const edges_settings_calb_t* edges_settings_calb, const calibration_t* calibration);
2918 
2933  result_t XIMC_API get_edges_settings (device_t id, edges_settings_t* edges_settings);
2934 
2959  result_t XIMC_API get_edges_settings_calb (device_t id, edges_settings_calb_t* edges_settings_calb, const calibration_t* calibration);
2960 
2984  result_t XIMC_API set_pid_settings (device_t id, const pid_settings_t* pid_settings);
2985 
3006  result_t XIMC_API get_pid_settings (device_t id, pid_settings_t* pid_settings);
3007 
3025  result_t XIMC_API set_sync_in_settings (device_t id, const sync_in_settings_t* sync_in_settings);
3026 
3046  result_t XIMC_API set_sync_in_settings_calb (device_t id, const sync_in_settings_calb_t* sync_in_settings_calb, const calibration_t* calibration);
3047 
3065  result_t XIMC_API get_sync_in_settings (device_t id, sync_in_settings_t* sync_in_settings);
3066 
3086  result_t XIMC_API get_sync_in_settings_calb (device_t id, sync_in_settings_calb_t* sync_in_settings_calb, const calibration_t* calibration);
3087 
3105  result_t XIMC_API set_sync_out_settings (device_t id, const sync_out_settings_t* sync_out_settings);
3106 
3126  result_t XIMC_API set_sync_out_settings_calb (device_t id, const sync_out_settings_calb_t* sync_out_settings_calb, const calibration_t* calibration);
3127 
3142  result_t XIMC_API get_sync_out_settings (device_t id, sync_out_settings_t* sync_out_settings);
3143 
3163  result_t XIMC_API get_sync_out_settings_calb (device_t id, sync_out_settings_calb_t* sync_out_settings_calb, const calibration_t* calibration);
3164 
3183  result_t XIMC_API set_extio_settings (device_t id, const extio_settings_t* extio_settings);
3184 
3200  result_t XIMC_API get_extio_settings (device_t id, extio_settings_t* extio_settings);
3201 
3214  result_t XIMC_API set_brake_settings (device_t id, const brake_settings_t* brake_settings);
3215 
3228  result_t XIMC_API get_brake_settings (device_t id, brake_settings_t* brake_settings);
3229 
3258  result_t XIMC_API set_control_settings (device_t id, const control_settings_t* control_settings);
3259 
3290  result_t XIMC_API set_control_settings_calb (device_t id, const control_settings_calb_t* control_settings_calb, const calibration_t* calibration);
3291 
3320  result_t XIMC_API get_control_settings (device_t id, control_settings_t* control_settings);
3321 
3352  result_t XIMC_API get_control_settings_calb (device_t id, control_settings_calb_t* control_settings_calb, const calibration_t* calibration);
3353 
3389  result_t XIMC_API set_joystick_settings (device_t id, const joystick_settings_t* joystick_settings);
3390 
3426  result_t XIMC_API get_joystick_settings (device_t id, joystick_settings_t* joystick_settings);
3427 
3462  result_t XIMC_API set_ctp_settings (device_t id, const ctp_settings_t* ctp_settings);
3463 
3498  result_t XIMC_API get_ctp_settings (device_t id, ctp_settings_t* ctp_settings);
3499 
3516  result_t XIMC_API set_uart_settings (device_t id, const uart_settings_t* uart_settings);
3517 
3534  result_t XIMC_API get_uart_settings (device_t id, uart_settings_t* uart_settings);
3535 
3552  result_t XIMC_API set_calibration_settings (device_t id, const calibration_settings_t* calibration_settings);
3553 
3570  result_t XIMC_API get_calibration_settings (device_t id, calibration_settings_t* calibration_settings);
3571 
3584  result_t XIMC_API set_controller_name (device_t id, const controller_name_t* controller_name);
3585 
3598  result_t XIMC_API get_controller_name (device_t id, controller_name_t* controller_name);
3599 
3612  result_t XIMC_API set_nonvolatile_memory (device_t id, const nonvolatile_memory_t* nonvolatile_memory);
3613 
3626  result_t XIMC_API get_nonvolatile_memory (device_t id, nonvolatile_memory_t* nonvolatile_memory);
3627 
3646  result_t XIMC_API set_emf_settings (device_t id, const emf_settings_t* emf_settings);
3647 
3664  result_t XIMC_API get_emf_settings (device_t id, emf_settings_t* emf_settings);
3665 
3680  result_t XIMC_API set_engine_advansed_setup (device_t id, const engine_advansed_setup_t* engine_advansed_setup);
3681 
3696  result_t XIMC_API get_engine_advansed_setup (device_t id, engine_advansed_setup_t* engine_advansed_setup);
3697 
3712  result_t XIMC_API set_extended_settings (device_t id, const extended_settings_t* extended_settings);
3713 
3728  result_t XIMC_API get_extended_settings (device_t id, extended_settings_t* extended_settings);
3729 
3730 
3732 
3745 
3763  result_t XIMC_API command_stop (device_t id);
3764 
3783  result_t XIMC_API command_power_off (device_t id);
3784 
3804  result_t XIMC_API command_move (device_t id, int Position, int uPosition);
3805 
3833  result_t XIMC_API command_move_calb (device_t id, float Position, const calibration_t* calibration);
3834 
3858  result_t XIMC_API command_movr (device_t id, int DeltaPosition, int uDeltaPosition);
3859 
3891  result_t XIMC_API command_movr_calb (device_t id, float DeltaPosition, const calibration_t* calibration);
3892 
3932  result_t XIMC_API command_home (device_t id);
3933 
3944  result_t XIMC_API command_left (device_t id);
3945 
3956  result_t XIMC_API command_right (device_t id);
3957 
3970  result_t XIMC_API command_loft (device_t id);
3971 
3982  result_t XIMC_API command_sstp (device_t id);
3983 
3998  result_t XIMC_API get_position (device_t id, get_position_t* the_get_position);
3999 
4024  result_t XIMC_API get_position_calb (device_t id, get_position_calb_t* the_get_position_calb, const calibration_t* calibration);
4025 
4042  result_t XIMC_API set_position (device_t id, const set_position_t* the_set_position);
4043 
4061  result_t XIMC_API set_position_calb (device_t id, const set_position_calb_t* the_set_position_calb, const calibration_t* calibration);
4062 
4085  result_t XIMC_API command_zero (device_t id);
4086 
4087 
4089 
4102 
4113  result_t XIMC_API command_save_settings (device_t id);
4114 
4125  result_t XIMC_API command_read_settings (device_t id);
4126 
4137  result_t XIMC_API command_save_robust_settings (device_t id);
4138 
4149  result_t XIMC_API command_read_robust_settings (device_t id);
4150 
4163  result_t XIMC_API command_eesave_settings (device_t id);
4164 
4176  result_t XIMC_API command_eeread_settings (device_t id);
4177 
4188  result_t XIMC_API command_start_measurements (device_t id);
4189 
4208  result_t XIMC_API get_measurements (device_t id, measurements_t* measurements);
4209 
4226  result_t XIMC_API get_chart_data (device_t id, chart_data_t* chart_data);
4227 
4240  result_t XIMC_API get_serial_number (device_t id, unsigned int* SerialNumber);
4241 
4258  result_t XIMC_API get_firmware_version (device_t id, unsigned int* Major, unsigned int* Minor, unsigned int* Release);
4259 
4270  result_t XIMC_API service_command_updf (device_t id);
4271 
4272 
4274 
4287 
4306  result_t XIMC_API set_serial_number (device_t id, const serial_number_t* serial_number);
4307 
4322  result_t XIMC_API get_analog_data (device_t id, analog_data_t* analog_data);
4323 
4338  result_t XIMC_API get_debug_read (device_t id, debug_read_t* debug_read);
4339 
4352  result_t XIMC_API set_debug_write (device_t id, const debug_write_t* debug_write);
4353 
4354 
4356 
4369 
4382  result_t XIMC_API set_stage_name (device_t id, const stage_name_t* stage_name);
4383 
4396  result_t XIMC_API get_stage_name (device_t id, stage_name_t* stage_name);
4397 
4412  result_t XIMC_API set_stage_information (device_t id, const stage_information_t* stage_information);
4413 
4426  result_t XIMC_API get_stage_information (device_t id, stage_information_t* stage_information);
4427 
4442  result_t XIMC_API set_stage_settings (device_t id, const stage_settings_t* stage_settings);
4443 
4456  result_t XIMC_API get_stage_settings (device_t id, stage_settings_t* stage_settings);
4457 
4472  result_t XIMC_API set_motor_information (device_t id, const motor_information_t* motor_information);
4473 
4486  result_t XIMC_API get_motor_information (device_t id, motor_information_t* motor_information);
4487 
4502  result_t XIMC_API set_motor_settings (device_t id, const motor_settings_t* motor_settings);
4503 
4516  result_t XIMC_API get_motor_settings (device_t id, motor_settings_t* motor_settings);
4517 
4532  result_t XIMC_API set_encoder_information (device_t id, const encoder_information_t* encoder_information);
4533 
4546  result_t XIMC_API get_encoder_information (device_t id, encoder_information_t* encoder_information);
4547 
4562  result_t XIMC_API set_encoder_settings (device_t id, const encoder_settings_t* encoder_settings);
4563 
4576  result_t XIMC_API get_encoder_settings (device_t id, encoder_settings_t* encoder_settings);
4577 
4592  result_t XIMC_API set_hallsensor_information (device_t id, const hallsensor_information_t* hallsensor_information);
4593 
4606  result_t XIMC_API get_hallsensor_information (device_t id, hallsensor_information_t* hallsensor_information);
4607 
4622  result_t XIMC_API set_hallsensor_settings (device_t id, const hallsensor_settings_t* hallsensor_settings);
4623 
4636  result_t XIMC_API get_hallsensor_settings (device_t id, hallsensor_settings_t* hallsensor_settings);
4637 
4652  result_t XIMC_API set_gear_information (device_t id, const gear_information_t* gear_information);
4653 
4666  result_t XIMC_API get_gear_information (device_t id, gear_information_t* gear_information);
4667 
4682  result_t XIMC_API set_gear_settings (device_t id, const gear_settings_t* gear_settings);
4683 
4696  result_t XIMC_API get_gear_settings (device_t id, gear_settings_t* gear_settings);
4697 
4712  result_t XIMC_API set_accessories_settings (device_t id, const accessories_settings_t* accessories_settings);
4713 
4726  result_t XIMC_API get_accessories_settings (device_t id, accessories_settings_t* accessories_settings);
4727 
4744  result_t XIMC_API get_bootloader_version (device_t id, unsigned int* Major, unsigned int* Minor, unsigned int* Release);
4745 
4758  result_t XIMC_API get_init_random (device_t id, init_random_t* init_random);
4759 
4776  result_t XIMC_API get_globally_unique_identifier (device_t id, globally_unique_identifier_t* globally_unique_identifier);
4777 
4778 
4779 /*
4780  -------------------------
4781  END OF GENERATED CODE
4782  -------------------------
4783 */
4784 
4785 /* hand-crafted functions begin */
4786 
4799  result_t XIMC_API goto_firmware(device_t id, uint8_t* ret);
4800 
4813  result_t XIMC_API has_firmware(const char* uri, uint8_t* ret);
4814 
4830  result_t XIMC_API command_update_firmware(const char* uri, const uint8_t* data, uint32_t data_size);
4831 
4846  result_t XIMC_API write_key (const char* uri, uint8_t* key);
4847 
4860  result_t XIMC_API command_reset(device_t id);
4861 
4874  result_t XIMC_API command_clear_fram(device_t id);
4875 
4877 
4878  // ------------------------------------
4879 
4891 
4918  device_t XIMC_API open_device (const char* uri);
4919 
4934  result_t XIMC_API close_device (device_t* id);
4935 
4991  result_t XIMC_API load_correction_table(device_t* id, const char* namefile);
4992 
5042  result_t XIMC_API set_correction_table(device_t id, const char* namefile);
5043 
5056  result_t XIMC_API probe_device (const char* uri);
5057 
5070  result_t XIMC_API set_bindy_key(const char* keyfilepath);
5071 
5098  device_enumeration_t XIMC_API enumerate_devices(int enumerate_flags, const char *hints);
5099 
5110  result_t XIMC_API free_enumerate_devices(device_enumeration_t device_enumeration);
5111 
5122  int XIMC_API get_device_count(device_enumeration_t device_enumeration);
5123 
5132  typedef char* pchar;
5133 
5148  pchar XIMC_API get_device_name(device_enumeration_t device_enumeration, int device_index);
5149 
5150 
5167  result_t XIMC_API get_enumerate_device_serial(device_enumeration_t device_enumeration, int device_index, uint32_t* serial);
5168 
5185  result_t XIMC_API get_enumerate_device_information(device_enumeration_t device_enumeration, int device_index, device_information_t* device_information);
5186 
5203  result_t XIMC_API get_enumerate_device_controller_name(device_enumeration_t device_enumeration, int device_index, controller_name_t* controller_name);
5204 
5221  result_t XIMC_API get_enumerate_device_stage_name(device_enumeration_t device_enumeration, int device_index, stage_name_t* stage_name);
5222 
5239  result_t XIMC_API get_enumerate_device_network_information(device_enumeration_t device_enumeration, int device_index, device_network_information_t* device_network_information);
5240 
5248  result_t XIMC_API reset_locks ();
5249 
5269  result_t XIMC_API ximc_fix_usbser_sys(const char* device_uri);
5270 
5271 
5281  void XIMC_API msec_sleep (unsigned int msec);
5282 
5292  void XIMC_API ximc_version (char* version);
5293 
5294 #if !defined(MATLAB_IMPORT) && !defined(LABVIEW64_IMPORT) && !defined(LABVIEW32_IMPORT)
5295 
5307  typedef void (XIMC_CALLCONV *logging_callback_t)(int loglevel, const wchar_t* message, void* user_data);
5308 
5320  void XIMC_API logging_callback_stderr_wide(int loglevel, const wchar_t* message, void* user_data);
5321 
5333  void XIMC_API logging_callback_stderr_narrow(int loglevel, const wchar_t* message, void* user_data);
5334 
5347  void XIMC_API set_logging_callback(logging_callback_t logging_callback, void* user_data);
5348 
5349 #endif
5350 
5374  result_t XIMC_API get_status (device_t id, status_t* status);
5375 
5401  result_t XIMC_API get_status_calb (device_t id, status_calb_t* status, const calibration_t* calibration);
5402 
5428  result_t XIMC_API get_device_information (device_t id, device_information_t* device_information);
5429 
5448  result_t XIMC_API command_wait_for_stop(device_t id, uint32_t refresh_interval_ms);
5449 
5462  result_t XIMC_API command_homezero(device_t id);
5464 
5465 #if defined(__cplusplus)
5466 };
5467 #endif
5468 
5469 #endif
5470 
5471 // vim: ts=4 shiftwidth=4
5472