3 #ifndef LIBJAYLINK_LIBJAYLINK_H
4 #define LIBJAYLINK_LIBJAYLINK_H
13 #include <arpa/inet.h>
73 #define JAYLINK_LOG_DOMAIN_DEFAULT "jaylink: "
76 #define JAYLINK_LOG_DOMAIN_MAX_LENGTH 32
350 char hid[INET_ADDRSTRLEN];
364 #define JAYLINK_SPEED_ADAPTIVE_CLOCKING 0xffff
367 #define JAYLINK_DEV_CONFIG_SIZE 256
370 #define JAYLINK_DEV_CAPS_SIZE 4
373 #define JAYLINK_DEV_EXT_CAPS_SIZE 32
376 #define JAYLINK_MAX_CONNECTIONS 16
379 #define JAYLINK_MAC_ADDRESS_LENGTH 6
385 #define JAYLINK_NICKNAME_MAX_LENGTH 32
391 #define JAYLINK_PRODUCT_NAME_MAX_LENGTH 32
394 #define JAYLINK_FILE_NAME_MAX_LENGTH 255
397 #define JAYLINK_FILE_MAX_TRANSFER_SIZE 0x100000
405 #define JAYLINK_EMUCOM_CHANNEL_TIME 0x0
413 #define JAYLINK_EMUCOM_CHANNEL_USER 0x10000
416 #define JAYLINK_C2_MAX_LENGTH 64
440 #if defined(_WIN32) || defined(__MSYS__) || defined(__CYGWIN__)
443 #define JAYLINK_API __attribute__ ((visibility ("default")))
475 uint8_t *data, uint8_t length);
477 const uint8_t *data, uint8_t length);
495 uint8_t **ports,
size_t *length);
519 uint32_t mask, uint32_t *info);
521 uint32_t mask, uint32_t *values);
536 const uint8_t *config);
552 uint32_t channel, uint8_t *buffer, uint32_t *length);
554 uint32_t channel,
const uint8_t *buffer, uint32_t *length);
564 const char *filename, uint8_t *buffer, uint32_t offset,
567 const char *filename,
const uint8_t *buffer, uint32_t offset,
570 const char *filename, uint32_t *size);
572 const char *filename);
577 const uint8_t *tms,
const uint8_t *tdi, uint8_t *tdo,
602 const uint8_t *mosi, uint8_t *miso, uint32_t length,
608 uint32_t *serial_number);
617 const uint8_t *direction,
const uint8_t *out, uint8_t *in,
626 uint8_t *buffer, uint32_t *length);
jaylink_host_interface
Host interfaces.
Definition: libjaylink.h:85
Current consumption of the target in mA.
Definition: libjaylink.h:161
int jaylink_swo_get_speeds(struct jaylink_device_handle *devh, enum jaylink_swo_mode mode, struct jaylink_swo_speed *speed)
Retrieve SWO speeds.
Definition: swo.c:328
Joint Test Action Group, IEEE 1149.1 (JTAG).
Definition: libjaylink.h:223
Input/output error.
Definition: libjaylink.h:45
jaylink_usb_address
USB addresses.
Definition: libjaylink.h:98
Compact JTAG (cJTAG).
Definition: libjaylink.h:237
jaylink_counter
Device counters.
Definition: libjaylink.h:200
int jaylink_log_set_callback(struct jaylink_context *ctx, jaylink_log_callback callback, void *user_data)
Set the libjaylink log callback function.
Definition: log.c:79
int jaylink_file_read(struct jaylink_device_handle *devh, const char *filename, uint8_t *buffer, uint32_t offset, uint32_t *length)
Read from a file.
Definition: fileio.c:60
int jaylink_init(struct jaylink_context **ctx)
Initialize libjaylink.
Definition: core.c:74
int jaylink_get_hardware_version(struct jaylink_device_handle *devh, struct jaylink_hardware_version *version)
Retrieve the hardware version of a device.
Definition: device.c:936
int jaylink_parse_serial_number(const char *str, uint32_t *serial_number)
Convert a string representation of a serial number to an integer.
Definition: strutil.c:31
Memory allocation error.
Definition: libjaylink.h:35
jaylink_spi_flag
Serial Peripheral Interface (SPI) flags.
Definition: libjaylink.h:265
const char * jaylink_log_get_domain(const struct jaylink_context *ctx)
Get the libjaylink log domain.
Definition: log.c:144
bool tck
TCK pin state.
Definition: libjaylink.h:319
int jaylink_discovery_scan(struct jaylink_context *ctx, uint32_t ifaces)
Scan for devices.
Definition: discovery.c:55
jaylink_log_level
libjaylink log levels.
Definition: libjaylink.h:57
Unspecified error.
Definition: libjaylink.h:31
const char * jaylink_strerror(int error_code)
Return a human-readable description of a libjaylink error code.
Definition: error.c:23
int jaylink_open(struct jaylink_device *dev, struct jaylink_device_handle **devh)
Open a device.
Definition: device.c:587
int jaylink_file_get_size(struct jaylink_device_handle *devh, const char *filename, uint32_t *size)
Retrieve the size of a file.
Definition: fileio.c:321
Device supports retrieval of counter values.
Definition: libjaylink.h:130
No error.
Definition: libjaylink.h:29
uint32_t freq
Base frequency in Hz.
Definition: libjaylink.h:291
int jaylink_c2_read_data(struct jaylink_device_handle *devh, uint8_t *data, uint8_t length)
Read the C2 data register.
Definition: c2.c:192
IPv4 netmask in network byte order.
Definition: libjaylink.h:180
const char * jaylink_version_package_get_string(void)
Get the version number string of the libjaylink package.
Definition: version.c:56
int jaylink_exit(struct jaylink_context *ctx)
Shutdown libjaylink.
Definition: core.c:154
Library supports USB as host interface.
Definition: libjaylink.h:81
struct jaylink_device * jaylink_get_device(struct jaylink_device_handle *devh)
Get the device instance from a device handle.
Definition: device.c:650
int jaylink_device_get_ipv4_address(const struct jaylink_device *dev, char *address)
Get the IPv4 address string of a device.
Definition: device.c:343
Entity not available.
Definition: libjaylink.h:41
Device's IPv4 address in network byte order.
Definition: libjaylink.h:173
int jaylink_close(struct jaylink_device_handle *devh)
Close a device.
Definition: device.c:626
int jaylink_unregister(struct jaylink_device_handle *devh, const struct jaylink_connection *connection, struct jaylink_connection *connections, size_t *count)
Unregister a connection from a device.
Definition: device.c:1641
bool tms
TMS pin state.
Definition: libjaylink.h:325
J-Link Pro.
Definition: libjaylink.h:217
int jaylink_swo_read(struct jaylink_device_handle *devh, uint8_t *buffer, uint32_t *length)
Read SWO trace data.
Definition: swo.c:213
Drive chip select (CS) low after the transfer is complete.
Definition: libjaylink.h:275
JTAG command version 2.
Definition: libjaylink.h:253
int jaylink_file_delete(struct jaylink_device_handle *devh, const char *filename)
Delete a file.
Definition: fileio.c:413
int jaylink_version_library_get_age(void)
Get the age version number of the libjaylink libtool interface.
Definition: version.c:94
int jaylink_jtag_clear_tck(struct jaylink_device_handle *devh)
Clear the JTAG test clock (TCK) signal.
Definition: jtag.c:349
int jaylink_select_interface(struct jaylink_device_handle *devh, enum jaylink_target_interface iface, enum jaylink_target_interface *prev_iface)
Select the target interface.
Definition: target.c:186
uint8_t minor
Minor version.
Definition: libjaylink.h:309
int jaylink_register(struct jaylink_device_handle *devh, struct jaylink_connection *connection, struct jaylink_connection *connections, size_t *count)
Register a connection on a device.
Definition: device.c:1495
Do not drive chip select (CS) before the transfer begins.
Definition: libjaylink.h:267
Universal Serial Bus (USB).
Definition: libjaylink.h:87
int jaylink_swd_io(struct jaylink_device_handle *devh, const uint8_t *direction, const uint8_t *out, uint8_t *in, uint16_t length)
Perform a SWD I/O operation.
Definition: swd.c:54
uint32_t max_div
Maximum frequency divider.
Definition: libjaylink.h:295
Output no messages.
Definition: libjaylink.h:59
USB address 2 (Product ID 0x0103).
Definition: libjaylink.h:104
Invalid argument.
Definition: libjaylink.h:33
Opaque structure representing a device.
Definition: libjaylink.h:423
int jaylink_version_package_get_minor(void)
Get the minor version number of the libjaylink package.
Definition: version.c:30
jaylink_swo_mode
Serial Wire Output (SWO) capture modes.
Definition: libjaylink.h:259
int jaylink_jtag_clear_trst(struct jaylink_device_handle *devh)
Clear the JTAG test reset (TRST) signal.
Definition: jtag.c:173
Device hardware version.
Definition: libjaylink.h:303
int jaylink_device_get_product_name(const struct jaylink_device *dev, char *name)
Get the product name of a device.
Definition: device.c:442
J-Link.
Definition: libjaylink.h:213
Time the device is connected to a target in milliseconds.
Definition: libjaylink.h:202
Device supports writing configuration data.
Definition: libjaylink.h:118
Do not drive chip select (CS) after the transfer is complete.
Definition: libjaylink.h:273
uint8_t major
Major version.
Definition: libjaylink.h:307
Device supports ethernet connectivity.
Definition: libjaylink.h:142
jaylink_device_capability
Device capabilities.
Definition: libjaylink.h:110
int jaylink_get_extended_caps(struct jaylink_device_handle *devh, uint8_t *caps)
Retrieve the extended capabilities of a device.
Definition: device.c:1141
const char * jaylink_strerror_name(int error_code)
Return the name of a libjaylink error code.
Definition: error.c:69
uint16_t handle
Handle.
Definition: libjaylink.h:335
jaylink_hardware_type
Device hardware types.
Definition: libjaylink.h:211
Serial Wire Output (SWO) speed information.
Definition: libjaylink.h:289
Device supports retrieval of hardware information.
Definition: libjaylink.h:124
uint8_t cid
CID.
Definition: libjaylink.h:354
uint32_t freq
Base frequency in Hz.
Definition: libjaylink.h:283
USB address 1 (Product ID 0x0102).
Definition: libjaylink.h:102
Drive chip select (CS) low before the transfer begins.
Definition: libjaylink.h:269
int jaylink_get_counters(struct jaylink_device_handle *devh, uint32_t mask, uint32_t *values)
Retrieve the counter values of a device.
Definition: device.c:860
int jaylink_get_hardware_status(struct jaylink_device_handle *devh, struct jaylink_hardware_status *status)
Retrieve the hardware status of a device.
Definition: device.c:999
Opaque structure representing a libjaylink context.
int jaylink_swo_start(struct jaylink_device_handle *devh, enum jaylink_swo_mode mode, uint32_t baudrate, uint32_t size)
Start SWO capture.
Definition: swo.c:54
int jaylink_set_speed(struct jaylink_device_handle *devh, uint16_t speed)
Set the target interface speed.
Definition: target.c:46
uint16_t target_voltage
Target reference voltage in mV.
Definition: libjaylink.h:317
Serial Peripheral Interface (SPI).
Definition: libjaylink.h:233
uint32_t timestamp
Timestamp of the last registration in milliseconds.
Definition: libjaylink.h:360
Device supports reading configuration data.
Definition: libjaylink.h:116
int jaylink_device_get_usb_bus_ports(const struct jaylink_device *dev, uint8_t *bus, uint8_t **ports, size_t *length)
Get the USB bus and port numbers of a device.
Definition: device.c:291
Device supports retrieval of free memory size.
Definition: libjaylink.h:122
Status of the target power supply.
Definition: libjaylink.h:159
int jaylink_device_get_serial_number(const struct jaylink_device *dev, uint32_t *serial_number)
Get the serial number of a device.
Definition: device.c:219
int jaylink_spi_io(struct jaylink_device_handle *devh, const uint8_t *mosi, uint8_t *miso, uint32_t length, uint32_t flags)
Perform SPI I/O operation.
Definition: spi.c:47
bool jaylink_has_cap(const uint8_t *caps, uint32_t cap)
Check for a capability.
Definition: util.c:30
Device supports retrieval of target interface speeds.
Definition: libjaylink.h:120
int jaylink_jtag_set_tms(struct jaylink_device_handle *devh)
Set the JTAG test mode select (TMS) signal.
Definition: jtag.c:305
int jaylink_version_package_get_major(void)
Get the major version number of the libjaylink package.
Definition: version.c:18
void jaylink_free_devices(struct jaylink_device **devs, bool unref)
Free devices.
Definition: device.c:166
int jaylink_c2_read_address(struct jaylink_device_handle *devh, uint8_t *address)
Read the C2 address register.
Definition: c2.c:42
jaylink_error
Error codes returned by libjaylink functions.
Definition: libjaylink.h:27
int jaylink_get_free_memory(struct jaylink_device_handle *devh, uint32_t *size)
Retrieve the size of free memory of a device.
Definition: device.c:1200
int jaylink_emucom_write(struct jaylink_device_handle *devh, uint32_t channel, const uint8_t *buffer, uint32_t *length)
Write to an EMUCOM channel.
Definition: emucom.c:189
jaylink_target_interface
Target interfaces.
Definition: libjaylink.h:221
int jaylink_version_library_get_revision(void)
Get the revision version number of the libjaylink libtool interface.
Definition: version.c:82
int jaylink_get_available_interfaces(struct jaylink_device_handle *devh, uint32_t *ifaces)
Retrieve the available target interfaces.
Definition: target.c:269
jaylink_capability
libjaylink capabilities.
Definition: libjaylink.h:79
int jaylink_c2_write_data(struct jaylink_device_handle *devh, const uint8_t *data, uint8_t length)
Write to the C2 data register.
Definition: c2.c:273
int jaylink_device_get_nickname(const struct jaylink_device *dev, char *nickname)
Get the nickname of a device.
Definition: device.c:475
int jaylink_get_selected_interface(struct jaylink_device_handle *devh, enum jaylink_target_interface *iface)
Retrieve the selected target interface.
Definition: target.c:335
Renesas’ single-wire debug interface (FINE).
Definition: libjaylink.h:229
int jaylink_device_get_hardware_version(const struct jaylink_device *dev, struct jaylink_hardware_version *version)
Get the hardware version of a device.
Definition: device.c:408
int jaylink_file_write(struct jaylink_device_handle *devh, const char *filename, const uint8_t *buffer, uint32_t offset, uint32_t *length)
Write to a file.
Definition: fileio.c:195
char hid[INET_ADDRSTRLEN]
Host ID (HID).
Definition: libjaylink.h:350
Transmission Control Protocol (TCP).
Definition: libjaylink.h:89
bool tdi
TDI pin state.
Definition: libjaylink.h:321
Drive chip select (CS) high before the transfer begins.
Definition: libjaylink.h:271
int jaylink_clear_reset(struct jaylink_device_handle *devh)
Clear the target reset signal.
Definition: target.c:392
Device supports retrieval of the hardware version.
Definition: libjaylink.h:112
USB voltage in mV.
Definition: libjaylink.h:196
int jaylink_get_hardware_info(struct jaylink_device_handle *devh, uint32_t mask, uint32_t *info)
Retrieve the hardware information of a device.
Definition: device.c:781
Peak current consumption of the target in mA.
Definition: libjaylink.h:163
struct jaylink_device * jaylink_ref_device(struct jaylink_device *dev)
Increment the reference count of a device.
Definition: device.c:498
const char * jaylink_target_interface_string(enum jaylink_target_interface iface)
Get the string representation of a target interface.
Definition: strutil.c:88
Output error messages.
Definition: libjaylink.h:61
int jaylink_device_get_host_interface(const struct jaylink_device *dev, enum jaylink_host_interface *iface)
Get the host interface of a device.
Definition: device.c:191
int jaylink_jtag_io(struct jaylink_device_handle *devh, const uint8_t *tms, const uint8_t *tdi, uint8_t *tdo, uint16_t length, enum jaylink_jtag_version version)
Perform a JTAG I/O operation.
Definition: jtag.c:62
Package and library version macros.
int jaylink_write_raw_config(struct jaylink_device_handle *devh, const uint8_t *config)
Write the raw configuration data of a device.
Definition: device.c:1322
Drive chip select (CS) high after the transfer is complete.
Definition: libjaylink.h:277
int jaylink_swo_stop(struct jaylink_device_handle *devh)
Stop SWO capture.
Definition: swo.c:139
JTAG command version 3.
Definition: libjaylink.h:255
Protocol violation.
Definition: libjaylink.h:39
int jaylink_read_raw_config(struct jaylink_device_handle *devh, uint8_t *config)
Read the raw configuration data of a device.
Definition: device.c:1262
Silicon Labs 2-wire interface (C2).
Definition: libjaylink.h:235
uint8_t revision
Revision number.
Definition: libjaylink.h:311
int(* jaylink_log_callback)(const struct jaylink_context *ctx, enum jaylink_log_level level, const char *format, va_list args, void *user_data)
Log callback function type.
Definition: libjaylink.h:458
Opaque structure representing a handle of a device.
Definition: libjaylink.h:430
int jaylink_set_reset(struct jaylink_device_handle *devh)
Set the target reset signal.
Definition: target.c:436
Device connection.
Definition: libjaylink.h:333
Device supports registration of connections.
Definition: libjaylink.h:136
int jaylink_jtag_clear_tms(struct jaylink_device_handle *devh)
Clear the JTAG test mode select (TMS) signal.
Definition: jtag.c:261
int jaylink_set_target_power(struct jaylink_device_handle *devh, bool enable)
Set the target power supply.
Definition: target.c:488
int jaylink_emucom_read(struct jaylink_device_handle *devh, uint32_t channel, uint8_t *buffer, uint32_t *length)
Read from an EMUCOM channel.
Definition: emucom.c:76
Device supports capturing of SWO trace data.
Definition: libjaylink.h:132
int jaylink_jtag_set_trst(struct jaylink_device_handle *devh)
Set the JTAG test reset (TRST) signal.
Definition: jtag.c:217
Device supports target interface selection.
Definition: libjaylink.h:128
Universal Asynchronous Receiver Transmitter (UART).
Definition: libjaylink.h:261
Device supports the setting of the target power supply.
Definition: libjaylink.h:126
int jaylink_get_devices(struct jaylink_context *ctx, struct jaylink_device ***devs, size_t *count)
Get available devices.
Definition: device.c:120
bool jaylink_library_has_cap(enum jaylink_capability cap)
Check for a capability of libjaylink.
Definition: core.c:192
Device: entity not available.
Definition: libjaylink.h:51
Device supports file I/O operations.
Definition: libjaylink.h:134
Device supports EMUCOM.
Definition: libjaylink.h:140
int jaylink_get_caps(struct jaylink_device_handle *devh, uint8_t *caps)
Retrieve the capabilities of a device.
Definition: device.c:1074
Device supports retrieval of extended capabilities.
Definition: libjaylink.h:138
Output warnings.
Definition: libjaylink.h:63
const char * jaylink_version_library_get_string(void)
Get the version number string of the libjaylink libtool interface.
Definition: version.c:108
Device supports adaptive clocking.
Definition: libjaylink.h:114
USB address 3 (Product ID 0x0104).
Definition: libjaylink.h:106
Output I/O debug messages.
Definition: libjaylink.h:69
uint32_t max_prescaler
Maximum prescaler.
Definition: libjaylink.h:299
int jaylink_version_library_get_current(void)
Get the current version number of the libjaylink libtool interface.
Definition: version.c:69
uint32_t min_prescaler
Minimum prescaler.
Definition: libjaylink.h:297
int jaylink_get_firmware_version(struct jaylink_device_handle *devh, char **version, size_t *length)
Retrieve the firmware version of a device.
Definition: device.c:680
bool tres
TRES pin state.
Definition: libjaylink.h:327
#define JAYLINK_API
Macro to mark public libjaylink API symbol.
Definition: libjaylink.h:443
Operation not supported.
Definition: libjaylink.h:43
Number of times the device was connected or disconnected from a target.
Definition: libjaylink.h:207
2-wire JTAG for PIC32 compliant devices.
Definition: libjaylink.h:231
Output debug messages.
Definition: libjaylink.h:67
jaylink_hardware_info
Hardware information.
Definition: libjaylink.h:150
Device: operation not supported.
Definition: libjaylink.h:49
Flasher.
Definition: libjaylink.h:215
int jaylink_device_get_usb_address(const struct jaylink_device *dev, enum jaylink_usb_address *address)
Get the USB address of a device.
Definition: device.c:252
Device: not enough memory to perform operation.
Definition: libjaylink.h:53
int jaylink_log_get_level(const struct jaylink_context *ctx, enum jaylink_log_level *level)
Get the libjaylink log level.
Definition: log.c:55
enum jaylink_hardware_type type
Hardware type.
Definition: libjaylink.h:305
USB address 0 (Product ID 0x0101).
Definition: libjaylink.h:100
int jaylink_c2_write_address(struct jaylink_device_handle *devh, uint8_t address)
Write to the C2 address register.
Definition: c2.c:119
Device supports SPI.
Definition: libjaylink.h:146
int jaylink_jtag_set_tck(struct jaylink_device_handle *devh)
Set the JTAG test clock (TCK) signal.
Definition: jtag.c:393
Output informational messages.
Definition: libjaylink.h:65
uint8_t iid
IID.
Definition: libjaylink.h:352
Device: unspecified error.
Definition: libjaylink.h:47
Timeout occurred.
Definition: libjaylink.h:37
Device supports virtual COM (VCOM) port.
Definition: libjaylink.h:144
bool trst
TRST pin state.
Definition: libjaylink.h:329
int jaylink_log_set_domain(struct jaylink_context *ctx, const char *domain)
Set the libjaylink log domain.
Definition: log.c:116
const char * jaylink_hardware_type_string(enum jaylink_hardware_type type)
Get the string representation of a hardware type.
Definition: strutil.c:61
int jaylink_log_set_level(struct jaylink_context *ctx, enum jaylink_log_level level)
Set the libjaylink log level.
Definition: log.c:30
uint16_t div
Minimum frequency divider.
Definition: libjaylink.h:285
int jaylink_get_speeds(struct jaylink_device_handle *devh, struct jaylink_speed *speed)
Retrieve target interface speeds.
Definition: target.c:111
DNS server IPv4 address in network byte order.
Definition: libjaylink.h:194
Target interface speed information.
Definition: libjaylink.h:281
void jaylink_unref_device(struct jaylink_device *dev)
Decrement the reference count of a device.
Definition: device.c:516
int jaylink_version_package_get_micro(void)
Get the micro version number of the libjaylink package.
Definition: version.c:42
Background Debug Mode 3 (BDM3).
Definition: libjaylink.h:227
Device hardware status.
Definition: libjaylink.h:315
Gateway IPv4 address in network byte order.
Definition: libjaylink.h:187
uint32_t min_div
Minimum frequency divider.
Definition: libjaylink.h:293
Serial Wire Debug (SWD).
Definition: libjaylink.h:225
uint32_t pid
Process ID (PID).
Definition: libjaylink.h:342
jaylink_jtag_version
JTAG command versions.
Definition: libjaylink.h:246
bool tdo
TDO pin state.
Definition: libjaylink.h:323
int jaylink_device_get_mac_address(const struct jaylink_device *dev, uint8_t *address)
Get the MAC address of a device.
Definition: device.c:373