libximc  2.10.5
ximc.h
См. документацию.
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.10.5
273 
277 #define LIBXIMC_PROTOCOL_VERSION 18.3
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 
317 #define MOVE_STATE_MOVING 0x01
318 #define MOVE_STATE_TARGET_SPEED 0x02
319 #define MOVE_STATE_ANTIPLAY 0x04
321 
322 
336 #define EEPROM_PRECEDENCE 0x01
338 
339 
355 #define PWR_STATE_UNKNOWN 0x00
356 #define PWR_STATE_OFF 0x01
357 #define PWR_STATE_NORM 0x03
358 #define PWR_STATE_REDUCT 0x04
359 #define PWR_STATE_MAX 0x05
361 
362 
380 #define STATE_CONTR 0x00003F
381 #define STATE_ERRC 0x000001
382 #define STATE_ERRD 0x000002
383 #define STATE_ERRV 0x000004
384 #define STATE_EEPROM_CONNECTED 0x000010
385 #define STATE_IS_HOMED 0x000020
386 #define STATE_SECUR 0x73FFC0
387 #define STATE_ALARM 0x000040
388 #define STATE_CTP_ERROR 0x000080
389 #define STATE_POWER_OVERHEAT 0x000100
390 #define STATE_CONTROLLER_OVERHEAT 0x000200
391 #define STATE_OVERLOAD_POWER_VOLTAGE 0x000400
392 #define STATE_OVERLOAD_POWER_CURRENT 0x000800
393 #define STATE_OVERLOAD_USB_VOLTAGE 0x001000
394 #define STATE_LOW_USB_VOLTAGE 0x002000
395 #define STATE_OVERLOAD_USB_CURRENT 0x004000
396 #define STATE_BORDERS_SWAP_MISSET 0x008000
397 #define STATE_LOW_POWER_VOLTAGE 0x010000
398 #define STATE_H_BRIDGE_FAULT 0x020000
399 #define STATE_CURRENT_MOTOR_BITS 0x0C0000
400 #define STATE_CURRENT_MOTOR0 0x000000
401 #define STATE_CURRENT_MOTOR1 0x040000
402 #define STATE_CURRENT_MOTOR2 0x080000
403 #define STATE_CURRENT_MOTOR3 0x0C0000
404 #define STATE_WINDING_RES_MISMATCH 0x100000
405 #define STATE_ENCODER_FAULT 0x200000
406 #define STATE_MOTOR_CURRENT_LIMIT 0x400000
408 
409 
427 #define STATE_DIG_SIGNAL 0xFFFF
428 #define STATE_RIGHT_EDGE 0x0001
429 #define STATE_LEFT_EDGE 0x0002
430 #define STATE_BUTTON_RIGHT 0x0004
431 #define STATE_BUTTON_LEFT 0x0008
432 #define STATE_GPIO_PINOUT 0x0010
433 #define STATE_GPIO_LEVEL 0x0020
434 #define STATE_BRAKE 0x0200
435 #define STATE_REV_SENSOR 0x0400
436 #define STATE_SYNC_INPUT 0x0800
437 #define STATE_SYNC_OUTPUT 0x1000
438 #define STATE_ENC_A 0x2000
439 #define STATE_ENC_B 0x4000
441 
442 
458 #define ENC_STATE_ABSENT 0x00
459 #define ENC_STATE_UNKNOWN 0x01
460 #define ENC_STATE_MALFUNC 0x02
461 #define ENC_STATE_REVERS 0x03
462 #define ENC_STATE_OK 0x04
464 
465 
481 #define WIND_A_STATE_ABSENT 0x00
482 #define WIND_A_STATE_UNKNOWN 0x01
483 #define WIND_A_STATE_MALFUNC 0x02
484 #define WIND_A_STATE_OK 0x03
485 #define WIND_B_STATE_ABSENT 0x00
486 #define WIND_B_STATE_UNKNOWN 0x10
487 #define WIND_B_STATE_MALFUNC 0x20
488 #define WIND_B_STATE_OK 0x30
490 
491 
509 #define MVCMD_NAME_BITS 0x3F
510 #define MVCMD_UKNWN 0x00
511 #define MVCMD_MOVE 0x01
512 #define MVCMD_MOVR 0x02
513 #define MVCMD_LEFT 0x03
514 #define MVCMD_RIGHT 0x04
515 #define MVCMD_STOP 0x05
516 #define MVCMD_HOME 0x06
517 #define MVCMD_LOFT 0x07
518 #define MVCMD_SSTP 0x08
519 #define MVCMD_ERROR 0x40
520 #define MVCMD_RUNNING 0x80
522 
523 
542 #define ENGINE_REVERSE 0x01
543 #define ENGINE_CURRENT_AS_RMS 0x02
544 #define ENGINE_MAX_SPEED 0x04
545 #define ENGINE_ANTIPLAY 0x08
546 #define ENGINE_ACCEL_ON 0x10
547 #define ENGINE_LIMIT_VOLT 0x20
548 #define ENGINE_LIMIT_CURR 0x40
549 #define ENGINE_LIMIT_RPM 0x80
551 
552 
571 #define MICROSTEP_MODE_FULL 0x01
572 #define MICROSTEP_MODE_FRAC_2 0x02
573 #define MICROSTEP_MODE_FRAC_4 0x03
574 #define MICROSTEP_MODE_FRAC_8 0x04
575 #define MICROSTEP_MODE_FRAC_16 0x05
576 #define MICROSTEP_MODE_FRAC_32 0x06
577 #define MICROSTEP_MODE_FRAC_64 0x07
578 #define MICROSTEP_MODE_FRAC_128 0x08
579 #define MICROSTEP_MODE_FRAC_256 0x09
581 
582 
601 #define ENGINE_TYPE_NONE 0x00
602 #define ENGINE_TYPE_DC 0x01
603 #define ENGINE_TYPE_2DC 0x02
604 #define ENGINE_TYPE_STEP 0x03
605 #define ENGINE_TYPE_TEST 0x04
606 #define ENGINE_TYPE_BRUSHLESS 0x05
608 
609 
628 #define DRIVER_TYPE_DISCRETE_FET 0x01
629 #define DRIVER_TYPE_INTEGRATE 0x02
630 #define DRIVER_TYPE_EXTERNAL 0x03
632 
633 
650 #define POWER_REDUCT_ENABLED 0x01
651 #define POWER_OFF_ENABLED 0x02
652 #define POWER_SMOOTH_CURRENT 0x04
654 
655 
672 #define ALARM_ON_DRIVER_OVERHEATING 0x01
673 #define LOW_UPWR_PROTECTION 0x02
674 #define H_BRIDGE_ALERT 0x04
675 #define ALARM_ON_BORDERS_SWAP_MISSET 0x08
676 #define ALARM_FLAGS_STICKING 0x10
677 #define USB_BREAK_RECONNECT 0x20
679 
680 
696 #define SETPOS_IGNORE_POSITION 0x01
697 #define SETPOS_IGNORE_ENCODER 0x02
699 
700 
714 #define FEEDBACK_ENCODER 0x01
715 #define FEEDBACK_EMF 0x04
716 #define FEEDBACK_NONE 0x05
718 
719 
733 #define FEEDBACK_ENC_REVERSE 0x01
734 #define FEEDBACK_ENC_TYPE_BITS 0xC0
735 #define FEEDBACK_ENC_TYPE_AUTO 0x00
736 #define FEEDBACK_ENC_TYPE_SINGLE_ENDED 0x40
737 #define FEEDBACK_ENC_TYPE_DIFFERENTIAL 0x80
739 
740 
755 #define SYNCIN_ENABLED 0x01
756 #define SYNCIN_INVERT 0x02
757 #define SYNCIN_GOTOPOSITION 0x04
759 
760 
775 #define SYNCOUT_ENABLED 0x01
776 #define SYNCOUT_STATE 0x02
777 #define SYNCOUT_INVERT 0x04
778 #define SYNCOUT_IN_STEPS 0x08
779 #define SYNCOUT_ONSTART 0x10
780 #define SYNCOUT_ONSTOP 0x20
781 #define SYNCOUT_ONPERIOD 0x40
783 
784 
799 #define EXTIO_SETUP_OUTPUT 0x01
800 #define EXTIO_SETUP_INVERT 0x02
802 
803 
818 #define EXTIO_SETUP_MODE_IN_BITS 0x0F
819 #define EXTIO_SETUP_MODE_IN_NOP 0x00
820 #define EXTIO_SETUP_MODE_IN_STOP 0x01
821 #define EXTIO_SETUP_MODE_IN_PWOF 0x02
822 #define EXTIO_SETUP_MODE_IN_MOVR 0x03
823 #define EXTIO_SETUP_MODE_IN_HOME 0x04
824 #define EXTIO_SETUP_MODE_IN_ALARM 0x05
825 #define EXTIO_SETUP_MODE_OUT_BITS 0xF0
826 #define EXTIO_SETUP_MODE_OUT_OFF 0x00
827 #define EXTIO_SETUP_MODE_OUT_ON 0x10
828 #define EXTIO_SETUP_MODE_OUT_MOVING 0x20
829 #define EXTIO_SETUP_MODE_OUT_ALARM 0x30
830 #define EXTIO_SETUP_MODE_OUT_MOTOR_ON 0x40
831 #define EXTIO_SETUP_MODE_OUT_MOTOR_FOUND 0x50
833 
834 
852 #define BORDER_IS_ENCODER 0x01
853 #define BORDER_STOP_LEFT 0x02
854 #define BORDER_STOP_RIGHT 0x04
855 #define BORDERS_SWAP_MISSET_DETECTION 0x08
857 
858 
876 #define ENDER_SWAP 0x01
877 #define ENDER_SW1_ACTIVE_LOW 0x02
878 #define ENDER_SW2_ACTIVE_LOW 0x04
880 
881 
899 #define BRAKE_ENABLED 0x01
900 #define BRAKE_ENG_PWROFF 0x02
902 
903 
921 #define CONTROL_MODE_BITS 0x03
922 #define CONTROL_MODE_OFF 0x00
923 #define CONTROL_MODE_JOY 0x01
924 #define CONTROL_MODE_LR 0x02
925 #define CONTROL_BTN_LEFT_PUSHED_OPEN 0x04
926 #define CONTROL_BTN_RIGHT_PUSHED_OPEN 0x08
928 
929 
945 #define JOY_REVERSE 0x01
947 
948 
966 #define CTP_ENABLED 0x01
967 #define CTP_BASE 0x02
968 #define CTP_ALARM_ON_ERROR 0x04
969 #define REV_SENS_INV 0x08
970 #define CTP_ERROR_CORRECTION 0x10
972 
973 
992 #define HOME_DIR_FIRST 0x001
993 #define HOME_DIR_SECOND 0x002
994 #define HOME_MV_SEC_EN 0x004
995 #define HOME_HALF_MV 0x008
996 #define HOME_STOP_FIRST_BITS 0x030
997 #define HOME_STOP_FIRST_REV 0x010
998 #define HOME_STOP_FIRST_SYN 0x020
999 #define HOME_STOP_FIRST_LIM 0x030
1000 #define HOME_STOP_SECOND_BITS 0x0C0
1001 #define HOME_STOP_SECOND_REV 0x040
1002 #define HOME_STOP_SECOND_SYN 0x080
1003 #define HOME_STOP_SECOND_LIM 0x0C0
1004 #define HOME_USE_FAST 0x100
1006 
1007 
1019 #define UART_PARITY_BITS 0x03
1020 #define UART_PARITY_BIT_EVEN 0x00
1021 #define UART_PARITY_BIT_ODD 0x01
1022 #define UART_PARITY_BIT_SPACE 0x02
1023 #define UART_PARITY_BIT_MARK 0x03
1024 #define UART_PARITY_BIT_USE 0x04
1025 #define UART_STOP_BIT 0x08
1027 
1028 
1040 #define MOTOR_TYPE_UNKNOWN 0x00
1041 #define MOTOR_TYPE_STEP 0x01
1042 #define MOTOR_TYPE_DC 0x02
1043 #define MOTOR_TYPE_BLDC 0x03
1045 
1046 
1058 #define ENCSET_DIFFERENTIAL_OUTPUT 0x001
1059 #define ENCSET_PUSHPULL_OUTPUT 0x004
1060 #define ENCSET_INDEXCHANNEL_PRESENT 0x010
1061 #define ENCSET_REVOLUTIONSENSOR_PRESENT 0x040
1062 #define ENCSET_REVOLUTIONSENSOR_ACTIVE_HIGH 0x100
1064 
1065 
1077 #define MB_AVAILABLE 0x01
1078 #define MB_POWERED_HOLD 0x02
1080 
1081 
1093 #define TS_TYPE_BITS 0x07
1094 #define TS_TYPE_UNKNOWN 0x00
1095 #define TS_TYPE_THERMOCOUPLE 0x01
1096 #define TS_TYPE_SEMICONDUCTOR 0x02
1097 #define TS_AVAILABLE 0x08
1099 
1100 
1112 #define LS_ON_SW1_AVAILABLE 0x01
1113 #define LS_ON_SW2_AVAILABLE 0x02
1114 #define LS_SW1_ACTIVE_LOW 0x04
1115 #define LS_SW2_ACTIVE_LOW 0x08
1116 #define LS_SHORTED 0x10
1118 
1119 
1131  typedef struct
1132  {
1133  unsigned int IPS;
1134  unsigned int FeedbackType;
1135  unsigned int FeedbackFlags;
1136  unsigned int CountsPerTurn;
1138 
1154  typedef struct
1155  {
1156  unsigned int FastHome;
1157  unsigned int uFastHome;
1158  unsigned int SlowHome;
1159  unsigned int uSlowHome;
1162  unsigned int HomeFlags;
1163  } home_settings_t;
1164 
1165  typedef struct
1166  {
1167  float FastHome;
1168  float SlowHome;
1169  float HomeDelta;
1170  unsigned int HomeFlags;
1172 
1184  typedef struct
1185  {
1186  unsigned int Speed;
1187  unsigned int uSpeed;
1188  unsigned int Accel;
1189  unsigned int Decel;
1190  unsigned int AntiplaySpeed;
1191  unsigned int uAntiplaySpeed;
1192  } move_settings_t;
1193 
1194  typedef struct
1195  {
1196  float Speed;
1197  float Accel;
1198  float Decel;
1201 
1222  typedef struct
1223  {
1224  unsigned int NomVoltage;
1225  unsigned int NomCurrent;
1226  unsigned int NomSpeed;
1227  unsigned int uNomSpeed;
1228  unsigned int EngineFlags;
1229  int Antiplay;
1230  unsigned int MicrostepMode;
1231  unsigned int StepsPerRev;
1233 
1234  typedef struct
1235  {
1236  unsigned int NomVoltage;
1237  unsigned int NomCurrent;
1238  float NomSpeed;
1239  unsigned int EngineFlags;
1240  float Antiplay;
1241  unsigned int MicrostepMode;
1242  unsigned int StepsPerRev;
1244 
1261  typedef struct
1262  {
1263  unsigned int EngineType;
1264  unsigned int DriverType;
1266 
1278  typedef struct
1279  {
1280  unsigned int HoldCurrent;
1281  unsigned int CurrReductDelay;
1282  unsigned int PowerOffDelay;
1283  unsigned int CurrentSetTime;
1284  unsigned int PowerFlags;
1285  } power_settings_t;
1286 
1300  typedef struct
1301  {
1302  unsigned int LowUpwrOff;
1303  unsigned int CriticalIpwr;
1304  unsigned int CriticalUpwr;
1305  unsigned int CriticalT;
1306  unsigned int CriticalIusb;
1307  unsigned int CriticalUusb;
1308  unsigned int MinimumUusb;
1309  unsigned int Flags;
1311 
1329  typedef struct
1330  {
1331  unsigned int BorderFlags;
1332  unsigned int EnderFlags;
1337  } edges_settings_t;
1338 
1339  typedef struct
1340  {
1341  unsigned int BorderFlags;
1342  unsigned int EnderFlags;
1343  float LeftBorder;
1344  float RightBorder;
1346 
1370  typedef struct
1371  {
1372  unsigned int KpU;
1373  unsigned int KiU;
1374  unsigned int KdU;
1375  float Kpf;
1376  float Kif;
1377  float Kdf;
1378  } pid_settings_t;
1379 
1395  typedef struct
1396  {
1397  unsigned int SyncInFlags;
1398  unsigned int ClutterTime;
1399  int Position;
1401  unsigned int Speed;
1402  unsigned int uSpeed;
1404 
1405  typedef struct
1406  {
1407  unsigned int SyncInFlags;
1408  unsigned int ClutterTime;
1409  float Position;
1410  float Speed;
1412 
1428  typedef struct
1429  {
1430  unsigned int SyncOutFlags;
1431  unsigned int SyncOutPulseSteps;
1432  unsigned int SyncOutPeriod;
1433  unsigned int Accuracy;
1434  unsigned int uAccuracy;
1436 
1437  typedef struct
1438  {
1439  unsigned int SyncOutFlags;
1440  unsigned int SyncOutPulseSteps;
1441  unsigned int SyncOutPeriod;
1442  float Accuracy;
1444 
1461  typedef struct
1462  {
1463  unsigned int EXTIOSetupFlags;
1464  unsigned int EXTIOModeFlags;
1465  } extio_settings_t;
1466 
1480  typedef struct
1481  {
1482  unsigned int t1;
1483  unsigned int t2;
1484  unsigned int t3;
1485  unsigned int t4;
1486  unsigned int BrakeFlags;
1487  } brake_settings_t;
1488 
1518  typedef struct
1519  {
1520  unsigned int MaxSpeed[10];
1521  unsigned int uMaxSpeed[10];
1522  unsigned int Timeout[9];
1523  unsigned int MaxClickTime;
1524  unsigned int Flags;
1528 
1529  typedef struct
1530  {
1531  float MaxSpeed[10];
1532  unsigned int Timeout[9];
1533  unsigned int MaxClickTime;
1534  unsigned int Flags;
1537 
1566  typedef struct
1567  {
1568  unsigned int JoyLowEnd;
1569  unsigned int JoyCenter;
1570  unsigned int JoyHighEnd;
1571  unsigned int ExpFactor;
1572  unsigned int DeadZone;
1573  unsigned int JoyFlags;
1575 
1609  typedef struct
1610  {
1611  unsigned int CTPMinError;
1612  unsigned int CTPFlags;
1613  } ctp_settings_t;
1614 
1628  typedef struct
1629  {
1630  unsigned int Speed;
1631  unsigned int UARTSetupFlags;
1632  } uart_settings_t;
1633 
1647  typedef struct
1648  {
1649  float CSS1_A;
1650  float CSS1_B;
1651  float CSS2_A;
1652  float CSS2_B;
1656 
1666  typedef struct
1667  {
1668  char ControllerName[17];
1669  unsigned int CtrlFlags;
1671 
1681  typedef struct
1682  {
1683  unsigned int UserData[7];
1685 
1695  typedef struct
1696  {
1697  int Position;
1699  unsigned int Time;
1701 
1702  typedef struct
1703  {
1704  float Position;
1705  unsigned int Time;
1707 
1722  typedef struct
1723  {
1724  int Position;
1726  long_t EncPosition;
1727  } get_position_t;
1728 
1729  typedef struct
1730  {
1731  float Position;
1732  long_t EncPosition;
1734 
1749  typedef struct
1750  {
1751  int Position;
1753  long_t EncPosition;
1754  unsigned int PosFlags;
1755  } set_position_t;
1756 
1757  typedef struct
1758  {
1759  float Position;
1760  long_t EncPosition;
1761  unsigned int PosFlags;
1763 
1775  typedef struct
1776  {
1777  unsigned int MoveSts;
1778  unsigned int MvCmdSts;
1779  unsigned int PWRSts;
1780  unsigned int EncSts;
1781  unsigned int WindSts;
1784  long_t EncPosition;
1785  int CurSpeed;
1787  int Ipwr;
1788  int Upwr;
1789  int Iusb;
1790  int Uusb;
1791  int CurT;
1792  unsigned int Flags;
1793  unsigned int GPIOFlags;
1794  unsigned int CmdBufFreeSpace;
1795  } status_t;
1796 
1797  typedef struct
1798  {
1799  unsigned int MoveSts;
1800  unsigned int MvCmdSts;
1801  unsigned int PWRSts;
1802  unsigned int EncSts;
1803  unsigned int WindSts;
1804  float CurPosition;
1805  long_t EncPosition;
1806  float CurSpeed;
1807  int Ipwr;
1808  int Upwr;
1809  int Iusb;
1810  int Uusb;
1811  int CurT;
1812  unsigned int Flags;
1813  unsigned int GPIOFlags;
1814  unsigned int CmdBufFreeSpace;
1815  } status_calb_t;
1816 
1827  typedef struct
1828  {
1829  int Speed[25];
1830  int Error[25];
1831  unsigned int Length;
1832  } measurements_t;
1833 
1846  typedef struct
1847  {
1854  unsigned int Pot;
1855  unsigned int Joy;
1857  } chart_data_t;
1858 
1875  typedef struct
1876  {
1877  char Manufacturer[5];
1878  char ManufacturerId[3];
1879  char ProductDescription[9];
1880  unsigned int Major;
1881  unsigned int Minor;
1882  unsigned int Release;
1884 
1900  typedef struct
1901  {
1902  unsigned int SN;
1903  uint8_t Key[32];
1904  unsigned int Major;
1905  unsigned int Minor;
1906  unsigned int Release;
1907  } serial_number_t;
1908 
1923  typedef struct
1924  {
1925  unsigned int A1Voltage_ADC;
1926  unsigned int A2Voltage_ADC;
1927  unsigned int B1Voltage_ADC;
1928  unsigned int B2Voltage_ADC;
1929  unsigned int SupVoltage_ADC;
1930  unsigned int ACurrent_ADC;
1931  unsigned int BCurrent_ADC;
1932  unsigned int FullCurrent_ADC;
1933  unsigned int Temp_ADC;
1934  unsigned int Joy_ADC;
1935  unsigned int Pot_ADC;
1936  unsigned int L5_ADC;
1937  unsigned int H5_ADC;
1943  int ACurrent;
1944  int BCurrent;
1946  int Temp;
1947  int Joy;
1948  int Pot;
1949  int L5;
1950  int H5;
1951  unsigned int deprecated;
1952  int R;
1953  int L;
1954  } analog_data_t;
1955 
1967  typedef struct
1968  {
1969  uint8_t DebugData[128];
1970  } debug_read_t;
1971 
1983  typedef struct
1984  {
1985  uint8_t DebugData[128];
1986  } debug_write_t;
1987 
1997  typedef struct
1998  {
1999  char PositionerName[17];
2000  } stage_name_t;
2001 
2013  typedef struct
2014  {
2015  char Manufacturer[17];
2016  char PartNumber[25];
2018 
2030  typedef struct
2031  {
2033  char Units[9];
2034  float MaxSpeed;
2035  float TravelRange;
2041  } stage_settings_t;
2042 
2054  typedef struct
2055  {
2056  char Manufacturer[17];
2057  char PartNumber[25];
2059 
2071  typedef struct
2072  {
2073  unsigned int MotorType;
2074  unsigned int ReservedField;
2075  unsigned int Poles;
2076  unsigned int Phases;
2085  float StallTorque;
2091  float MaxSpeed;
2092  float MaxCurrent;
2095  float NoLoadSpeed;
2096  } motor_settings_t;
2097 
2109  typedef struct
2110  {
2111  char Manufacturer[17];
2112  char PartNumber[25];
2114 
2126  typedef struct
2127  {
2132  unsigned int PPR;
2133  unsigned int EncoderSettings;
2135 
2147  typedef struct
2148  {
2149  char Manufacturer[17];
2150  char PartNumber[25];
2152 
2164  typedef struct
2165  {
2170  unsigned int PPR;
2172 
2184  typedef struct
2185  {
2186  char Manufacturer[17];
2187  char PartNumber[25];
2189 
2201  typedef struct
2202  {
2203  float ReductionIn;
2209  float Efficiency;
2210  } gear_settings_t;
2211 
2223  typedef struct
2224  {
2225  char MagneticBrakeInfo[25];
2228  float MBTorque;
2229  unsigned int MBSettings;
2230  char TemperatureSensorInfo[25];
2231  float TSMin;
2232  float TSMax;
2233  float TSGrad;
2234  unsigned int TSSettings;
2235  unsigned int LimitSwitchesSettings;
2237 
2249  typedef struct
2250  {
2251  uint8_t key[16];
2252  } init_random_t;
2253 
2263  typedef struct
2264  {
2265  unsigned int UniqueID0;
2266  unsigned int UniqueID1;
2267  unsigned int UniqueID2;
2268  unsigned int UniqueID3;
2270 
2280  typedef struct
2281  {
2282  unsigned int Motor;
2284 
2285 /*
2286  --------------------------------------------
2287  BEGIN OF GENERATED function declarations
2288  --------------------------------------------
2289 */
2290 
2303 
2322  result_t XIMC_API set_feedback_settings (device_t id, const feedback_settings_t* feedback_settings);
2323 
2342  result_t XIMC_API get_feedback_settings (device_t id, feedback_settings_t* feedback_settings);
2343 
2360  result_t XIMC_API set_home_settings (device_t id, const home_settings_t* home_settings);
2361 
2362  result_t XIMC_API set_home_settings_calb (device_t id, const home_settings_calb_t* home_settings_calb, const calibration_t* calibration);
2363 
2380  result_t XIMC_API get_home_settings (device_t id, home_settings_t* home_settings);
2381 
2382  result_t XIMC_API get_home_settings_calb (device_t id, home_settings_calb_t* home_settings_calb, const calibration_t* calibration);
2383 
2396  result_t XIMC_API set_move_settings (device_t id, const move_settings_t* move_settings);
2397 
2398  result_t XIMC_API set_move_settings_calb (device_t id, const move_settings_calb_t* move_settings_calb, const calibration_t* calibration);
2399 
2412  result_t XIMC_API get_move_settings (device_t id, move_settings_t* move_settings);
2413 
2414  result_t XIMC_API get_move_settings_calb (device_t id, move_settings_calb_t* move_settings_calb, const calibration_t* calibration);
2415 
2437  result_t XIMC_API set_engine_settings (device_t id, const engine_settings_t* engine_settings);
2438 
2439  result_t XIMC_API set_engine_settings_calb (device_t id, const engine_settings_calb_t* engine_settings_calb, const calibration_t* calibration);
2440 
2460  result_t XIMC_API get_engine_settings (device_t id, engine_settings_t* engine_settings);
2461 
2462  result_t XIMC_API get_engine_settings_calb (device_t id, engine_settings_calb_t* engine_settings_calb, const calibration_t* calibration);
2463 
2478  result_t XIMC_API set_entype_settings (device_t id, const entype_settings_t* entype_settings);
2479 
2494  result_t XIMC_API get_entype_settings (device_t id, entype_settings_t* entype_settings);
2495 
2509  result_t XIMC_API set_power_settings (device_t id, const power_settings_t* power_settings);
2510 
2525  result_t XIMC_API get_power_settings (device_t id, power_settings_t* power_settings);
2526 
2540  result_t XIMC_API set_secure_settings (device_t id, const secure_settings_t* secure_settings);
2541 
2555  result_t XIMC_API get_secure_settings (device_t id, secure_settings_t* secure_settings);
2556 
2571  result_t XIMC_API set_edges_settings (device_t id, const edges_settings_t* edges_settings);
2572 
2573  result_t XIMC_API set_edges_settings_calb (device_t id, const edges_settings_calb_t* edges_settings_calb, const calibration_t* calibration);
2574 
2589  result_t XIMC_API get_edges_settings (device_t id, edges_settings_t* edges_settings);
2590 
2591  result_t XIMC_API get_edges_settings_calb (device_t id, edges_settings_calb_t* edges_settings_calb, const calibration_t* calibration);
2592 
2616  result_t XIMC_API set_pid_settings (device_t id, const pid_settings_t* pid_settings);
2617 
2638  result_t XIMC_API get_pid_settings (device_t id, pid_settings_t* pid_settings);
2639 
2657  result_t XIMC_API set_sync_in_settings (device_t id, const sync_in_settings_t* sync_in_settings);
2658 
2659  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);
2660 
2678  result_t XIMC_API get_sync_in_settings (device_t id, sync_in_settings_t* sync_in_settings);
2679 
2680  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);
2681 
2699  result_t XIMC_API set_sync_out_settings (device_t id, const sync_out_settings_t* sync_out_settings);
2700 
2701  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);
2702 
2717  result_t XIMC_API get_sync_out_settings (device_t id, sync_out_settings_t* sync_out_settings);
2718 
2719  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);
2720 
2739  result_t XIMC_API set_extio_settings (device_t id, const extio_settings_t* extio_settings);
2740 
2756  result_t XIMC_API get_extio_settings (device_t id, extio_settings_t* extio_settings);
2757 
2770  result_t XIMC_API set_brake_settings (device_t id, const brake_settings_t* brake_settings);
2771 
2784  result_t XIMC_API get_brake_settings (device_t id, brake_settings_t* brake_settings);
2785 
2814  result_t XIMC_API set_control_settings (device_t id, const control_settings_t* control_settings);
2815 
2816  result_t XIMC_API set_control_settings_calb (device_t id, const control_settings_calb_t* control_settings_calb, const calibration_t* calibration);
2817 
2846  result_t XIMC_API get_control_settings (device_t id, control_settings_t* control_settings);
2847 
2848  result_t XIMC_API get_control_settings_calb (device_t id, control_settings_calb_t* control_settings_calb, const calibration_t* calibration);
2849 
2885  result_t XIMC_API set_joystick_settings (device_t id, const joystick_settings_t* joystick_settings);
2886 
2922  result_t XIMC_API get_joystick_settings (device_t id, joystick_settings_t* joystick_settings);
2923 
2958  result_t XIMC_API set_ctp_settings (device_t id, const ctp_settings_t* ctp_settings);
2959 
2994  result_t XIMC_API get_ctp_settings (device_t id, ctp_settings_t* ctp_settings);
2995 
3012  result_t XIMC_API set_uart_settings (device_t id, const uart_settings_t* uart_settings);
3013 
3030  result_t XIMC_API get_uart_settings (device_t id, uart_settings_t* uart_settings);
3031 
3048  result_t XIMC_API set_calibration_settings (device_t id, const calibration_settings_t* calibration_settings);
3049 
3066  result_t XIMC_API get_calibration_settings (device_t id, calibration_settings_t* calibration_settings);
3067 
3080  result_t XIMC_API set_controller_name (device_t id, const controller_name_t* controller_name);
3081 
3094  result_t XIMC_API get_controller_name (device_t id, controller_name_t* controller_name);
3095 
3108  result_t XIMC_API set_nonvolatile_memory (device_t id, const nonvolatile_memory_t* nonvolatile_memory);
3109 
3122  result_t XIMC_API get_nonvolatile_memory (device_t id, nonvolatile_memory_t* nonvolatile_memory);
3123 
3124 
3126 
3139 
3157  result_t XIMC_API command_stop (device_t id);
3158 
3178  result_t XIMC_API command_add_sync_in_action (device_t id, const command_add_sync_in_action_t* the_command_add_sync_in_action);
3179 
3180  result_t XIMC_API command_add_sync_in_action_calb (device_t id, const command_add_sync_in_action_calb_t* the_command_add_sync_in_action_calb, const calibration_t* calibration);
3181 
3200  result_t XIMC_API command_power_off (device_t id);
3201 
3221  result_t XIMC_API command_move (device_t id, int Position, int uPosition);
3222 
3223  result_t XIMC_API command_move_calb (device_t id, float Position, const calibration_t* calibration);
3224 
3246  result_t XIMC_API command_movr (device_t id, int DeltaPosition, int uDeltaPosition);
3247 
3248  result_t XIMC_API command_movr_calb (device_t id, float DeltaPosition, const calibration_t* calibration);
3249 
3289  result_t XIMC_API command_home (device_t id);
3290 
3301  result_t XIMC_API command_left (device_t id);
3302 
3313  result_t XIMC_API command_right (device_t id);
3314 
3327  result_t XIMC_API command_loft (device_t id);
3328 
3339  result_t XIMC_API command_sstp (device_t id);
3340 
3355  result_t XIMC_API get_position (device_t id, get_position_t* the_get_position);
3356 
3357  result_t XIMC_API get_position_calb (device_t id, get_position_calb_t* the_get_position_calb, const calibration_t* calibration);
3358 
3375  result_t XIMC_API set_position (device_t id, const set_position_t* the_set_position);
3376 
3377  result_t XIMC_API set_position_calb (device_t id, const set_position_calb_t* the_set_position_calb, const calibration_t* calibration);
3378 
3401  result_t XIMC_API command_zero (device_t id);
3402 
3403 
3405 
3418 
3429  result_t XIMC_API command_save_settings (device_t id);
3430 
3441  result_t XIMC_API command_read_settings (device_t id);
3442 
3453  result_t XIMC_API command_save_robust_settings (device_t id);
3454 
3465  result_t XIMC_API command_read_robust_settings (device_t id);
3466 
3479  result_t XIMC_API command_eesave_settings (device_t id);
3480 
3492  result_t XIMC_API command_eeread_settings (device_t id);
3493 
3504  result_t XIMC_API command_start_measurements (device_t id);
3505 
3524  result_t XIMC_API get_measurements (device_t id, measurements_t* measurements);
3525 
3542  result_t XIMC_API get_chart_data (device_t id, chart_data_t* chart_data);
3543 
3556  result_t XIMC_API get_serial_number (device_t id, unsigned int* SerialNumber);
3557 
3574  result_t XIMC_API get_firmware_version (device_t id, unsigned int* Major, unsigned int* Minor, unsigned int* Release);
3575 
3586  result_t XIMC_API service_command_updf (device_t id);
3587 
3588 
3590 
3603 
3622  result_t XIMC_API set_serial_number (device_t id, const serial_number_t* serial_number);
3623 
3638  result_t XIMC_API get_analog_data (device_t id, analog_data_t* analog_data);
3639 
3654  result_t XIMC_API get_debug_read (device_t id, debug_read_t* debug_read);
3655 
3668  result_t XIMC_API set_debug_write (device_t id, const debug_write_t* debug_write);
3669 
3670 
3672 
3685 
3698  result_t XIMC_API set_stage_name (device_t id, const stage_name_t* stage_name);
3699 
3712  result_t XIMC_API get_stage_name (device_t id, stage_name_t* stage_name);
3713 
3728  result_t XIMC_API set_stage_information (device_t id, const stage_information_t* stage_information);
3729 
3742  result_t XIMC_API get_stage_information (device_t id, stage_information_t* stage_information);
3743 
3758  result_t XIMC_API set_stage_settings (device_t id, const stage_settings_t* stage_settings);
3759 
3772  result_t XIMC_API get_stage_settings (device_t id, stage_settings_t* stage_settings);
3773 
3788  result_t XIMC_API set_motor_information (device_t id, const motor_information_t* motor_information);
3789 
3802  result_t XIMC_API get_motor_information (device_t id, motor_information_t* motor_information);
3803 
3818  result_t XIMC_API set_motor_settings (device_t id, const motor_settings_t* motor_settings);
3819 
3832  result_t XIMC_API get_motor_settings (device_t id, motor_settings_t* motor_settings);
3833 
3848  result_t XIMC_API set_encoder_information (device_t id, const encoder_information_t* encoder_information);
3849 
3862  result_t XIMC_API get_encoder_information (device_t id, encoder_information_t* encoder_information);
3863 
3878  result_t XIMC_API set_encoder_settings (device_t id, const encoder_settings_t* encoder_settings);
3879 
3892  result_t XIMC_API get_encoder_settings (device_t id, encoder_settings_t* encoder_settings);
3893 
3908  result_t XIMC_API set_hallsensor_information (device_t id, const hallsensor_information_t* hallsensor_information);
3909 
3922  result_t XIMC_API get_hallsensor_information (device_t id, hallsensor_information_t* hallsensor_information);
3923 
3938  result_t XIMC_API set_hallsensor_settings (device_t id, const hallsensor_settings_t* hallsensor_settings);
3939 
3952  result_t XIMC_API get_hallsensor_settings (device_t id, hallsensor_settings_t* hallsensor_settings);
3953 
3968  result_t XIMC_API set_gear_information (device_t id, const gear_information_t* gear_information);
3969 
3982  result_t XIMC_API get_gear_information (device_t id, gear_information_t* gear_information);
3983 
3998  result_t XIMC_API set_gear_settings (device_t id, const gear_settings_t* gear_settings);
3999 
4012  result_t XIMC_API get_gear_settings (device_t id, gear_settings_t* gear_settings);
4013 
4028  result_t XIMC_API set_accessories_settings (device_t id, const accessories_settings_t* accessories_settings);
4029 
4042  result_t XIMC_API get_accessories_settings (device_t id, accessories_settings_t* accessories_settings);
4043 
4060  result_t XIMC_API get_bootloader_version (device_t id, unsigned int* Major, unsigned int* Minor, unsigned int* Release);
4061 
4074  result_t XIMC_API get_init_random (device_t id, init_random_t* init_random);
4075 
4092  result_t XIMC_API get_globally_unique_identifier (device_t id, globally_unique_identifier_t* globally_unique_identifier);
4093 
4104  result_t XIMC_API command_change_motor (device_t id, const command_change_motor_t* the_command_change_motor);
4105 
4106 
4107 /*
4108  -------------------------
4109  END OF GENERATED CODE
4110  -------------------------
4111 */
4112 
4113 /* hand-crafted functions begin */
4114 
4127  result_t XIMC_API goto_firmware(device_t id, uint8_t* ret);
4128 
4141  result_t XIMC_API has_firmware(const char* uri, uint8_t* ret);
4142 
4158  result_t XIMC_API command_update_firmware(const char* uri, const uint8_t* data, uint32_t data_size);
4159 
4174  result_t XIMC_API write_key (const char* uri, uint8_t* key);
4175 
4188  result_t XIMC_API command_reset(device_t id);
4189 
4202  result_t XIMC_API command_clear_fram(device_t id);
4203 
4205 
4206  // ------------------------------------
4207 
4219 
4246  device_t XIMC_API open_device (const char* uri);
4247 
4258  result_t XIMC_API close_device (device_t* id);
4259 
4272  result_t XIMC_API probe_device (const char* uri);
4273 
4286  result_t XIMC_API set_bindy_key(const char* keyfilepath);
4287 
4312  device_enumeration_t XIMC_API enumerate_devices(int enumerate_flags, const char *hints);
4313 
4324  result_t XIMC_API free_enumerate_devices(device_enumeration_t device_enumeration);
4325 
4336  int XIMC_API get_device_count(device_enumeration_t device_enumeration);
4337 
4346  typedef char* pchar;
4347 
4362  pchar XIMC_API get_device_name(device_enumeration_t device_enumeration, int device_index);
4363 
4364 
4381  result_t XIMC_API get_enumerate_device_serial(device_enumeration_t device_enumeration, int device_index, uint32_t* serial);
4382 
4399  result_t XIMC_API get_enumerate_device_information(device_enumeration_t device_enumeration, int device_index, device_information_t* device_information);
4400 
4417  result_t XIMC_API get_enumerate_device_controller_name(device_enumeration_t device_enumeration, int device_index, controller_name_t* controller_name);
4418 
4435  result_t XIMC_API get_enumerate_device_stage_name(device_enumeration_t device_enumeration, int device_index, stage_name_t* stage_name);
4436 
4453  result_t XIMC_API get_enumerate_device_network_information(device_enumeration_t device_enumeration, int device_index, device_network_information_t* device_network_information);
4454 
4462  result_t XIMC_API reset_locks ();
4463 
4483  result_t XIMC_API ximc_fix_usbser_sys(const char* device_uri);
4484 
4485 
4495  void XIMC_API msec_sleep (unsigned int msec);
4496 
4506  void XIMC_API ximc_version (char* version);
4507 
4508 #if !defined(MATLAB_IMPORT) && !defined(LABVIEW64_IMPORT) && !defined(LABVIEW32_IMPORT)
4509 
4521  typedef void (XIMC_CALLCONV *logging_callback_t)(int loglevel, const wchar_t* message, void* user_data);
4522 
4534  void XIMC_API logging_callback_stderr_wide(int loglevel, const wchar_t* message, void* user_data);
4535 
4547  void XIMC_API logging_callback_stderr_narrow(int loglevel, const wchar_t* message, void* user_data);
4548 
4561  void XIMC_API set_logging_callback(logging_callback_t logging_callback, void* user_data);
4562 
4563 #endif
4564 
4588  result_t XIMC_API get_status (device_t id, status_t* status);
4589 
4601  result_t XIMC_API get_status_calb (device_t id, status_calb_t* status, const calibration_t* calibration);
4602 
4628  result_t XIMC_API get_device_information (device_t id, device_information_t* device_information);
4629 
4648  result_t XIMC_API command_wait_for_stop(device_t id, uint32_t refresh_interval_ms);
4649 
4662  result_t XIMC_API command_homezero(device_t id);
4664 
4665 #if defined(__cplusplus)
4666 };
4667 #endif
4668 
4669 #endif
4670 
4671 // vim: ts=4 shiftwidth=4
4672