gclib 2.4.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 Context* gclib_handle;
25typedef struct DataRecord* gclib_data_record_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
164
165
172gclib_result gclib_list_servers(char* servers, size_t len);
173
182gclib_result gclib_server(char* name, size_t len);
183
192
200gclib_result gclib_published(char* name, size_t len);
201
208
210
211
222void gclib_force_gcaps(bool on);
223
237gclib_result gclib_open(gclib_handle* h, const char* address);
238
247
255
266
274gclib_result gclib_address(gclib_handle h, char* address, size_t len);
281
289
294
295
307
316
332gclib_result gclib_command(gclib_handle h, const char* command, char* buf, size_t len);
333
334
341
342
376
390
413gclib_result gclib_subscribe_messages(gclib_handle h, void(callback)(void* user_data, const char* message), void* user_data);
414
438gclib_result gclib_subscribe_interrupts(gclib_handle h, void(callback)(void* user_data, gclib_interrupt_t interrupt), void* user_data);
439
463gclib_result gclib_subscribe_data_records(gclib_handle h, void(callback)(void* user_data, gclib_data_record_handle data_record), void* user_data);
464
479gclib_result gclib_subscribe_progress(gclib_handle h, void(callback)(void* user_data, size_t current, size_t max), void* user_data);
480
490
502gclib_result gclib_message(gclib_handle h, char* message, size_t len, int timeout);
503
513
525
530
531
539gclib_result gclib_program(gclib_handle h, char* program, size_t len);
540
550gclib_result gclib_set_program(gclib_handle h, const char* program, const char* insert);
551
562gclib_result gclib_array(gclib_handle h, const char* name, char* buf, size_t len, size_t start, size_t end);
563
580gclib_result gclib_set_array(gclib_handle h, const char* name, const char* buf, size_t start, size_t end);
581
590
592
599
612
623
626
653
661
675
736
751
770
771// Undoc methods for gclibo
774
775#ifdef __cplusplus
776}
777#endif
778
779#ifndef _WIN32
780#pragma GCC visibility pop
781#endif
782
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_connection_t
Connection type, as returned by gclib_connection_type().
Definition gclib.h:276
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.
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.
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:278
@ GCLIB_ETHERNET
Definition gclib.h:277
@ GCLIB_PCI
Definition gclib.h:279
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_set_timeout(gclib_handle h, size_t timeout)
void gclib_set_compat()
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.
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
All interrupt status types.
Definition gclib.h:41
gclib_interrupt_type type
Definition gclib.h:56
char axis
If type is GCLIB_MOTION_COMPLETE, holds the axis that triggered the interrupt.
Definition gclib.h:58
gclib_result
All gclib function return values.
Definition gclib.h:29
uint8_t status
The raw status byte generated by the controller. See the EI command reference for all possible values...
Definition gclib.h:62
uint8_t digital_input
If type is GCLIB_DIGITAL_INPUT_LOW, holds the digital input that triggered the interrupt.
Definition gclib.h:59
struct DataRecord * gclib_data_record_handle
A handle to a data record, for use in Data Record API calls.
Definition gclib.h:25
uint8_t user_interrupt
If type is GCLIB_USER_INTERRUPT, holds the user input that was triggered.
Definition gclib.h:60
struct Context * gclib_handle
A handle to an open connection given by gclib_open() for use in future API calls.
Definition gclib.h:23
@ 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:601
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:614
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:603
@ GCLIB_LINEAR_MOVE
Definition gclib.h:610
@ GCLIB_POSITION_RELATIVE
Definition gclib.h:605
@ GCLIB_HOME
Definition gclib.h:608
@ GCLIB_FIND_EDGE
Definition gclib.h:606
@ GCLIB_VECTOR_MOVE
Definition gclib.h:609
@ GCLIB_NO_MOTION
Definition gclib.h:602
@ GCLIB_POSITION_ABSOLUTE
Definition gclib.h:604
@ GCLIB_FIND_INDEX
Definition gclib.h:607
@ UDP_MASTER
Definition gclib.h:618
@ TCP_MASTER
Definition gclib.h:619
@ HANDLE_FREE
Definition gclib.h:615
@ UDP_SLAVE
Definition gclib.h:616
@ ESTABLISHING_TCP
Definition gclib.h:621
@ TCP_SLAVE
Definition gclib.h:617
@ ESTABLISHING_UDP
Definition gclib.h:620
An interrupt generated by the controller.
Definition gclib.h:55