gclib 2.5.0
Galil Communications Library
Loading...
Searching...
No Matches
gclib.h
Go to the documentation of this file.
1
3
4#pragma once
5
6#ifdef __cplusplus
7extern "C" {
8#endif
9
10#include <string.h>
11#include <stdlib.h>
12#include <stdint.h>
13#include <stdbool.h>
14#include <stdarg.h>
15
16#include "gclib_compat.h"
17
18#ifndef _WIN32
19#pragma GCC visibility push(default)
20#endif
21
23typedef struct gclib_context* gclib_handle;
26
55typedef struct gclib_interrupt_t {
57 union {
58 char axis;
59 uint8_t digital_input;
61 };
62 uint8_t status;
78typedef enum gclib_axis_flags {
80 GCLIB_AXIS_A = 1 << 0,
81 GCLIB_AXIS_B = 1 << 1,
82 GCLIB_AXIS_C = 1 << 2,
83 GCLIB_AXIS_D = 1 << 3,
84 GCLIB_AXIS_E = 1 << 4,
85 GCLIB_AXIS_F = 1 << 5,
86 GCLIB_AXIS_G = 1 << 6,
87 GCLIB_AXIS_H = 1 << 7,
88 GCLIB_ALL_AXES = (1 << 8) - 1
90
91
98gclib_result gclib_version(char* version, size_t len);
99
106gclib_result gclib_gcaps_version(char* gcaps_version, size_t len);
107
111
112
132gclib_result gclib_addresses(char* addresses, size_t len);
133
147gclib_result gclib_ip_requests(char* ip_requests, size_t len);
148
157gclib_result gclib_assign_ip(const char* mac, const char* ip);
158
168
179
185
186
193gclib_result gclib_list_servers(char* servers, size_t len);
194
203gclib_result gclib_server(char* name, size_t len);
204
213
221gclib_result gclib_published(char* name, size_t len);
222
231
233
234
245void gclib_force_gcaps(bool on);
246
260gclib_result gclib_open(gclib_handle* h, const char* address);
261
270
278
292
300gclib_result gclib_address(gclib_handle h, char* address, size_t len);
307
315
320
321
333
342
358gclib_result gclib_command(gclib_handle h, const char* command, char* buf, size_t len);
359
360
367
368
402
416
440gclib_result gclib_subscribe_messages(gclib_handle h, void(callback)(void* user_data, const char* message), void* user_data);
441
466gclib_result gclib_subscribe_interrupts(gclib_handle h, void(callback)(void* user_data, gclib_interrupt_t interrupt), void* user_data);
467
492gclib_result gclib_subscribe_data_records(gclib_handle h, void(callback)(void* user_data, gclib_data_record_handle data_record), void* user_data);
493
509gclib_result gclib_subscribe_progress(gclib_handle h, void(callback)(void* user_data, size_t current, size_t max), void* user_data);
510
520
532gclib_result gclib_message(gclib_handle h, char* message, size_t len, int timeout);
533
543
555
560
561
569gclib_result gclib_program(gclib_handle h, char* program, size_t len);
570
580gclib_result gclib_set_program(gclib_handle h, const char* program, const char* insert);
581
592gclib_result gclib_array(gclib_handle h, const char* name, char* buf, size_t len, size_t start, size_t end);
593
611gclib_result gclib_set_array(gclib_handle h, const char* name, const char* buf, size_t start, size_t end);
612
621
623
630
643
654
657
684
692
706
767
782
801
802// Undoc methods for gclibo
803void gclib_set_compat();
804gclib_result gclib_set_timeout(gclib_handle h, size_t timeout);
805
806#ifdef __cplusplus
807}
808#endif
809
810#ifndef _WIN32
811#pragma GCC visibility pop
812#endif
813
bool gclib_data_record_electronic_lock_out(gclib_data_record_handle h, size_t amp)
Returns electronic lockout (ELO) status for a bank.
bool gclib_data_record_over_voltage(gclib_data_record_handle h, size_t amp)
Returns over voltage status.
bool gclib_data_record_over_temp(gclib_data_record_handle h, size_t amp)
Returns over temperature status.
bool gclib_data_record_under_voltage(gclib_data_record_handle h, size_t amp)
Returns under voltage status.
bool gclib_data_record_over_current(gclib_data_record_handle h, size_t amp)
Returns over current status.
int32_t gclib_data_record_variable(gclib_data_record_handle h, char axis)
Returns the value of a user variable for an axis.
int32_t gclib_data_record_reference_position(gclib_data_record_handle h, char axis)
Returns the reference position.
bool gclib_data_record_reverse_limit(gclib_data_record_handle h, char axis)
Returns the state of the reverse limit.
int32_t gclib_data_record_velocity(gclib_data_record_handle h, char axis)
Returns the velocity.
int gclib_data_record_home_phase(gclib_data_record_handle h, char axis)
Returns home phase when in GCLIB_HOME mode.
bool gclib_data_record_moving(gclib_data_record_handle h, char axis)
Returns true if motion is being profiled.
bool gclib_data_record_stopping(gclib_data_record_handle h, char axis)
Returns true if axis is stopping.
bool gclib_data_record_forward_limit(gclib_data_record_handle h, char axis)
Returns the state of the forward limit.
gclib_mode_of_motion_t gclib_data_record_mode_of_motion(gclib_data_record_handle h, char axis)
Returns the mode of motion being profiled.
bool gclib_data_record_hall_error(gclib_data_record_handle h, char axis)
Returns true if the amplifier for this axis has triggered a hall error.
int32_t gclib_data_record_aux_position(gclib_data_record_handle h, char axis)
Returns the auxiliary position.
bool gclib_data_record_slewing(gclib_data_record_handle h, char axis)
Returns true if axis is slewing.
int32_t gclib_data_record_position_error(gclib_data_record_handle h, char axis)
Returns the position error.
bool gclib_data_record_home_input(gclib_data_record_handle h, char axis)
Returns the state of the home input.
bool gclib_data_record_final_deceleration(gclib_data_record_handle h, char axis)
Returns true when axis is in final deceleration.
uint8_t gclib_data_record_stop_code(gclib_data_record_handle h, char axis)
Returns a code indicating why the motor has stopped. See the SC command reference for details.
double gclib_data_record_analog_input(gclib_data_record_handle h, char axis)
Returns the analog input.
bool gclib_data_record_latch_armed(gclib_data_record_handle h, char axis)
Get latch armed.
bool gclib_data_record_latch_occurred(gclib_data_record_handle h, char axis)
Returns whether the latch was triggered.
bool gclib_data_record_latch_input(gclib_data_record_handle h, char axis)
Returns the state of the latch input.
bool gclib_data_record_negative_direction_move(gclib_data_record_handle h, char axis)
Returns true if axis velocity is negative.
int32_t gclib_data_record_position(gclib_data_record_handle h, char axis)
Returns the position.
bool gclib_data_record_motor_off(gclib_data_record_handle h, char axis)
Get motor off status.
double gclib_data_record_torque(gclib_data_record_handle h, char axis)
Returns the torque.
bool gclib_data_record_stepper_mode(gclib_data_record_handle h, char axis)
Returns true if axis is configured as a stepper motor.
uint8_t gclib_data_record_halls(gclib_data_record_handle h, char axis)
Returns the hall state.
bool gclib_data_record_peak_current(gclib_data_record_handle h, char axis)
Returns true if the amplifier for this axis has triggered a peak current error.
gclib_result gclib_close(gclib_handle *h)
Close connection to controller.
gclib_result gclib_assign_ip(const char *mac, const char *ip)
Assign IP to a controller.
gclib_result gclib_address(gclib_handle h, char *address, size_t len)
Get connection address.
gclib_result gclib_set_dhcp_enabled(bool enabled)
Enable or disable gcaps DHCP server.
gclib_connection_t
Connection type, as returned by gclib_connection_type().
Definition gclib.h:302
gclib_result gclib_set_baud_rate(gclib_handle h, size_t baud_rate)
Set baud rate of serial connection.
gclib_result gclib_ip_requests(char *ip_requests, size_t len)
Show MAC address, model, and serial of all controllers requesting IP addresses, comma-separated....
gclib_result gclib_addresses(char *addresses, size_t len)
Show address, model, and serial of detected controllers, where available. Detected controllers are ne...
const char * gclib_error(gclib_handle h)
Get library error string.
gclib_result gclib_open(gclib_handle *h, const char *address)
Open a connection to a controller.
gclib_result gclib_dhcp_enabled(bool *enabled)
Check if DHCP server is enabled.
void gclib_force_gcaps(bool on)
Force future library calls to use either gcaps or direct connections.
gclib_result gclib_connection_type(gclib_handle h, gclib_connection_t *type)
Get connection type.
@ GCLIB_SERIAL
Definition gclib.h:304
@ GCLIB_ETHERNET
Definition gclib.h:303
@ GCLIB_PCI
Definition gclib.h:305
gclib_result gclib_command(gclib_handle h, const char *command, char *buf, size_t len)
Issues a command to the controller and provides the response.
gclib_result gclib_serial_number(gclib_handle h, uint32_t *serial_number)
Get serial number from controller.
gclib_result gclib_revision_information(gclib_handle h, char *rev_info, size_t len)
Get revision information (^R^V) from controller.
gclib_result gclib_published(char *name, size_t len)
Provides published status of local gcaps server.
gclib_result gclib_set_server(const char *name)
Set gcaps server.
gclib_result gclib_list_servers(char *servers, size_t len)
List available gcaps servers separated by newline.
gclib_result gclib_server(char *name, size_t len)
Current gcaps server.
gclib_result gclib_set_published(const char *name)
Set published status of local gcaps server.
gclib_result gclib_set_program(gclib_handle h, const char *program, const char *insert)
Set the program on the controller.
gclib_result gclib_set_array(gclib_handle h, const char *name, const char *buf, size_t start, size_t end)
Set an array on the controller.
gclib_result gclib_array(gclib_handle h, const char *name, char *buf, size_t len, size_t start, size_t end)
Get an array from the controller.
gclib_result gclib_set_firmware(gclib_handle h, const char *file_path)
Set the firmware on the controller.
gclib_result gclib_program(gclib_handle h, char *program, size_t len)
Get the controller's current program.
gclib_result gclib_interrupt(gclib_handle h, gclib_interrupt_t *interrupt, int timeout)
Get a queued interrupt, or wait up to timeout ms for one to arrive.
gclib_result gclib_message(gclib_handle h, char *message, size_t len, int timeout)
Get a queued unsolicited message, or wait up to timeout ms for one to arrive.
gclib_result gclib_subscribe_data_records(gclib_handle h, void(callback)(void *user_data, gclib_data_record_handle data_record), void *user_data)
Subscribe to data records.
gclib_result gclib_set_interrupts(gclib_handle h, gclib_interrupt_type interrupt_mask, gclib_axis_flags motion_complete_axes, gclib_digital_input_flags digital_inputs)
Configure which interrupts will be generated by the controller.
gclib_result gclib_subscribe_interrupts(gclib_handle h, void(callback)(void *user_data, gclib_interrupt_t interrupt), void *user_data)
Subscribe to interrupts.
gclib_result gclib_unsubscribe(gclib_handle h, void *callback)
Unsubscribe from messages, interrupts, data records, or progress.
gclib_result gclib_set_data_records(gclib_handle h, size_t period_ms)
Configure controller data records.
gclib_result gclib_subscribe_progress(gclib_handle h, void(callback)(void *user_data, size_t current, size_t max), void *user_data)
Subscribe to progress for gclib_set_program(), gclib_set_array(), and gclib_set_firmware().
gclib_result gclib_subscribe_messages(gclib_handle h, void(callback)(void *user_data, const char *message), void *user_data)
Subscribe to unsolicited messages.
gclib_result gclib_data_record(gclib_handle h, gclib_data_record_handle *data_record, int timeout)
Get a queued data record, or wait up to timeout ms for one to arrive.
void * gclib_data_record_handle
A handle to a data record, for use in Data Record API calls.
Definition gclib.h:25
gclib_digital_input_flags
Flags to enable or disable GCLIB_DIGITAL_INPUT_LOW interrupts per digital input, for use in gclib_set...
Definition gclib.h:65
gclib_axis_flags
Flags for building an axis mask, for example in gclib_set_interrupts().
Definition gclib.h:78
gclib_result gclib_gcaps_version(char *gcaps_version, size_t len)
Get library version used by current gcaps server.
gclib_result gclib_version(char *version, size_t len)
Get library version.
gclib_interrupt_type
Definition gclib.h:41
struct gclib_context * gclib_handle
A handle to an open connection given by gclib_open() for use in future API calls.
Definition gclib.h:23
gclib_result
Definition gclib.h:29
@ GCLIB_ALL_DIGITAL_INPUTS
Definition gclib.h:75
@ GCLIB_DIGITAL_INPUT_2
Definition gclib.h:68
@ GCLIB_DIGITAL_INPUT_3
Definition gclib.h:69
@ GCLIB_NO_DIGITAL_INPUTS
Definition gclib.h:66
@ GCLIB_DIGITAL_INPUT_5
Definition gclib.h:71
@ GCLIB_DIGITAL_INPUT_4
Definition gclib.h:70
@ GCLIB_DIGITAL_INPUT_7
Definition gclib.h:73
@ GCLIB_DIGITAL_INPUT_1
Definition gclib.h:67
@ GCLIB_DIGITAL_INPUT_8
Definition gclib.h:74
@ GCLIB_DIGITAL_INPUT_6
Definition gclib.h:72
@ GCLIB_AXIS_G
Definition gclib.h:86
@ GCLIB_AXIS_B
Definition gclib.h:81
@ GCLIB_AXIS_E
Definition gclib.h:84
@ GCLIB_AXIS_F
Definition gclib.h:85
@ GCLIB_AXIS_H
Definition gclib.h:87
@ GCLIB_AXIS_C
Definition gclib.h:82
@ GCLIB_NO_AXES
Definition gclib.h:79
@ GCLIB_AXIS_D
Definition gclib.h:83
@ GCLIB_AXIS_A
Definition gclib.h:80
@ GCLIB_ALL_AXES
Definition gclib.h:88
@ GCLIB_USER_INTERRUPT
Definition gclib.h:43
@ GCLIB_PROGRAM_STOPPED
If multiple threads are running, this interrupt is only triggered when all threads are finished.
Definition gclib.h:49
@ GCLIB_EXCESS_POSITION_ERROR
Must be reenabled with gclib_set_interrupts() after occurrence.
Definition gclib.h:46
@ GCLIB_WATCHDOG_TIMER
Definition gclib.h:48
@ GCLIB_ALL_INTERRUPTS
Definition gclib.h:52
@ GCLIB_ALL_AXES_MOTION_COMPLETE
Definition gclib.h:45
@ GCLIB_COMMAND_DONE
Definition gclib.h:50
@ GCLIB_MOTION_COMPLETE
Definition gclib.h:44
@ GCLIB_NO_INTERRUPTS
Definition gclib.h:42
@ GCLIB_LIMIT_SWITCH
Must be reenabled with gclib_set_interrupts() after each occurrence.
Definition gclib.h:47
@ GCLIB_DIGITAL_INPUT_LOW
Must be reenabled with gclib_set_interrupts() after each occurrence.
Definition gclib.h:51
@ GCLIB_INTERNAL_ERROR
Definition gclib.h:32
@ GCLIB_INVALID_ARGUMENT
Definition gclib.h:31
@ GCLIB_COMMAND_ERROR
Definition gclib.h:34
@ GCLIB_NOT_CONNECTED
Definition gclib.h:36
@ GCLIB_BUFFER_TOO_SMALL
Definition gclib.h:35
@ GCLIB_NOT_SUBSCRIBED
Definition gclib.h:37
@ GCLIB_TIMEOUT
Definition gclib.h:33
@ GCLIB_SUCCESS
Definition gclib.h:30
bool gclib_data_record_coordinated_move_slewing(gclib_data_record_handle h, char plane)
Returns true if slewing.
uint16_t gclib_data_record_coordinated_move_status(gclib_data_record_handle h, char plane)
Returns the coordinated move status word.
bool gclib_data_record_coordinated_move_stopping(gclib_data_record_handle h, char plane)
Returns true if stopping.
uint16_t gclib_data_record_coordinated_move_segment_count(gclib_data_record_handle h, char plane)
Returns the segment count for the current move.
uint16_t gclib_data_record_coordinated_move_buffer_available(gclib_data_record_handle h, char plane)
Returns the available buffer space.
int32_t gclib_data_record_coordinated_move_distance(gclib_data_record_handle h, char plane)
Returns the distance covered in the current move.
bool gclib_data_record_coordinated_move_moving(gclib_data_record_handle h, char plane)
Returns true if moving.
bool gclib_data_record_coordinated_move_final_deceleration(gclib_data_record_handle h, char plane)
Returns true if in final deceleration.
uint8_t gclib_data_record_input_bank(gclib_data_record_handle h, size_t index)
Get a bank of inputs.
gclib_mode_of_motion_t
The controller's current mode of motion, given by gclib_data_record_mode_of_motion().
Definition gclib.h:632
uint8_t gclib_data_record_error_code(gclib_data_record_handle h)
Get the error code.
gclib_ethernet_status_t gclib_data_record_ethernet_status(gclib_data_record_handle h, char handle)
Get ethernet handle status.
gclib_result gclib_data_record_bytes(gclib_data_record_handle h, char *data_record, size_t len)
Copy data record to user buffer.
bool gclib_data_record_output(gclib_data_record_handle h, size_t index)
Get an output.
uint32_t gclib_data_record_contour_segment_count(gclib_data_record_handle h)
Get the contour segment count.
bool gclib_data_record_thread_running(gclib_data_record_handle h, size_t thread)
Returns true if a given thread is running.
bool gclib_data_record_input(gclib_data_record_handle h, size_t index)
Get an input.
uint16_t gclib_data_record_contour_buffer_available(gclib_data_record_handle h)
Get remaining contour buffer.
gclib_ethernet_status_t
The current status of an ethernet handle, given by gclib_data_record_ethernet_status().
Definition gclib.h:645
uint8_t gclib_data_record_output_bank(gclib_data_record_handle h, size_t index)
Get a bank of outputs.
uint16_t gclib_data_record_sample(gclib_data_record_handle h)
The sample in which this data record was generated.
@ GCLIB_CONTOUR
Definition gclib.h:634
@ GCLIB_LINEAR_MOVE
Definition gclib.h:641
@ GCLIB_POSITION_RELATIVE
Definition gclib.h:636
@ GCLIB_HOME
Definition gclib.h:639
@ GCLIB_FIND_EDGE
Definition gclib.h:637
@ GCLIB_VECTOR_MOVE
Definition gclib.h:640
@ GCLIB_NO_MOTION
Definition gclib.h:633
@ GCLIB_POSITION_ABSOLUTE
Definition gclib.h:635
@ GCLIB_FIND_INDEX
Definition gclib.h:638
@ UDP_MASTER
Definition gclib.h:649
@ TCP_MASTER
Definition gclib.h:650
@ HANDLE_FREE
Definition gclib.h:646
@ UDP_SLAVE
Definition gclib.h:647
@ ESTABLISHING_TCP
Definition gclib.h:652
@ TCP_SLAVE
Definition gclib.h:648
@ ESTABLISHING_UDP
Definition gclib.h:651
An interrupt generated by the controller.
Definition gclib.h:55
uint8_t digital_input
If type is GCLIB_DIGITAL_INPUT_LOW, holds the digital input that triggered the interrupt.
Definition gclib.h:59
uint8_t user_interrupt
If type is GCLIB_USER_INTERRUPT, holds the user interrupt that was triggered.
Definition gclib.h:60
char axis
If type is GCLIB_MOTION_COMPLETE, holds the axis that triggered the interrupt.
Definition gclib.h:58
uint8_t status
The raw status byte generated by the controller. See the EI command reference for all possible values...
Definition gclib.h:62
gclib_interrupt_type type
Definition gclib.h:56