20 #ifndef LIBJAYLINK_LIBJAYLINK_H
21 #define LIBJAYLINK_LIBJAYLINK_H
30 #include <arpa/inet.h>
90 #define JAYLINK_LOG_DOMAIN_DEFAULT "jaylink: "
93 #define JAYLINK_LOG_DOMAIN_MAX_LENGTH 32
339 char hid[INET_ADDRSTRLEN];
353 #define JAYLINK_SPEED_ADAPTIVE_CLOCKING 0xffff
356 #define JAYLINK_DEV_CONFIG_SIZE 256
359 #define JAYLINK_DEV_CAPS_SIZE 4
362 #define JAYLINK_DEV_EXT_CAPS_SIZE 32
365 #define JAYLINK_MAX_CONNECTIONS 16
368 #define JAYLINK_MAC_ADDRESS_LENGTH 6
374 #define JAYLINK_NICKNAME_MAX_LENGTH 32
380 #define JAYLINK_PRODUCT_NAME_MAX_LENGTH 32
383 #define JAYLINK_FILE_NAME_MAX_LENGTH 255
386 #define JAYLINK_FILE_MAX_TRANSFER_SIZE 0x100000
394 #define JAYLINK_EMUCOM_CHANNEL_TIME 0x0
402 #define JAYLINK_EMUCOM_CHANNEL_USER 0x10000
429 #define JAYLINK_API __attribute__ ((visibility ("default")))
470 uint8_t **ports,
size_t *length);
494 uint32_t mask, uint32_t *info);
496 uint32_t mask, uint32_t *values);
511 const uint8_t *config);
527 uint32_t channel, uint8_t *buffer, uint32_t *length);
529 uint32_t channel,
const uint8_t *buffer, uint32_t *length);
539 const char *filename, uint8_t *buffer, uint32_t offset,
542 const char *filename,
const uint8_t *buffer, uint32_t offset,
545 const char *filename, uint32_t *size);
547 const char *filename);
552 const uint8_t *tms,
const uint8_t *tdi, uint8_t *tdo,
573 uint32_t *serial_number);
578 const uint8_t *direction,
const uint8_t *out, uint8_t *in,
587 uint8_t *buffer, uint32_t *length);
jaylink_host_interface
Host interfaces.
Definition: libjaylink.h:102
Current consumption of the target in mA.
Definition: libjaylink.h:174
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:345
Joint Test Action Group, IEEE 1149.1 (JTAG).
Definition: libjaylink.h:234
Input/output error.
Definition: libjaylink.h:62
jaylink_usb_address
USB addresses.
Definition: libjaylink.h:115
jaylink_counter
Device counters.
Definition: libjaylink.h:211
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:96
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:77
int jaylink_init(struct jaylink_context **ctx)
Initialize libjaylink.
Definition: core.c:91
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:956
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:48
Memory allocation error.
Definition: libjaylink.h:52
const char * jaylink_log_get_domain(const struct jaylink_context *ctx)
Get the libjaylink log domain.
Definition: log.c:161
bool tck
TCK pin state.
Definition: libjaylink.h:308
int jaylink_discovery_scan(struct jaylink_context *ctx, uint32_t ifaces)
Scan for devices.
Definition: discovery.c:72
jaylink_log_level
libjaylink log levels.
Definition: libjaylink.h:74
Unspecified error.
Definition: libjaylink.h:48
const char * jaylink_strerror(int error_code)
Return a human-readable description of a libjaylink error code.
Definition: error.c:40
int jaylink_open(struct jaylink_device *dev, struct jaylink_device_handle **devh)
Open a device.
Definition: device.c:607
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:338
Device supports retrieval of counter values.
Definition: libjaylink.h:147
No error.
Definition: libjaylink.h:46
uint32_t freq
Base frequency in Hz.
Definition: libjaylink.h:280
IPv4 netmask in network byte order.
Definition: libjaylink.h:193
const char * jaylink_version_package_get_string(void)
Get the version number string of the libjaylink package.
Definition: version.c:73
int jaylink_exit(struct jaylink_context *ctx)
Shutdown libjaylink.
Definition: core.c:171
Library supports USB as host interface.
Definition: libjaylink.h:98
struct jaylink_device * jaylink_get_device(struct jaylink_device_handle *devh)
Get the device instance from a device handle.
Definition: device.c:670
int jaylink_device_get_ipv4_address(const struct jaylink_device *dev, char *address)
Get the IPv4 address string of a device.
Definition: device.c:360
Entity not available.
Definition: libjaylink.h:58
Device's IPv4 address in network byte order.
Definition: libjaylink.h:186
int jaylink_close(struct jaylink_device_handle *devh)
Close a device.
Definition: device.c:646
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:1656
bool tms
TMS pin state.
Definition: libjaylink.h:314
J-Link Pro.
Definition: libjaylink.h:228
int jaylink_swo_read(struct jaylink_device_handle *devh, uint8_t *buffer, uint32_t *length)
Read SWO trace data.
Definition: swo.c:230
JTAG command version 2.
Definition: libjaylink.h:258
int jaylink_file_delete(struct jaylink_device_handle *devh, const char *filename)
Delete a file.
Definition: fileio.c:430
int jaylink_version_library_get_age(void)
Get the age version number of the libjaylink libtool interface.
Definition: version.c:111
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:203
uint8_t minor
Minor version.
Definition: libjaylink.h:298
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:1515
Universal Serial Bus (USB).
Definition: libjaylink.h:104
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:71
uint32_t max_div
Maximum frequency divider.
Definition: libjaylink.h:284
Output no messages.
Definition: libjaylink.h:76
USB address 2 (Product ID 0x0103).
Definition: libjaylink.h:121
Invalid argument.
Definition: libjaylink.h:50
Opaque structure representing a device.
Definition: libjaylink.h:409
int jaylink_version_package_get_minor(void)
Get the minor version number of the libjaylink package.
Definition: version.c:47
jaylink_swo_mode
Serial Wire Output (SWO) capture modes.
Definition: libjaylink.h:264
int jaylink_jtag_clear_trst(struct jaylink_device_handle *devh)
Clear the JTAG test reset (TRST) signal.
Definition: jtag.c:186
Device hardware version.
Definition: libjaylink.h:292
int jaylink_device_get_product_name(const struct jaylink_device *dev, char *name)
Get the product name of a device.
Definition: device.c:459
J-Link.
Definition: libjaylink.h:224
Time the device is connected to a target in milliseconds.
Definition: libjaylink.h:213
Device supports writing configuration data.
Definition: libjaylink.h:135
uint8_t major
Major version.
Definition: libjaylink.h:296
Device supports ethernet connectivity.
Definition: libjaylink.h:159
jaylink_device_capability
Device capabilities.
Definition: libjaylink.h:127
int jaylink_get_extended_caps(struct jaylink_device_handle *devh, uint8_t *caps)
Retrieve the extended capabilities of a device.
Definition: device.c:1161
const char * jaylink_strerror_name(int error_code)
Return the name of a libjaylink error code.
Definition: error.c:86
uint16_t handle
Handle.
Definition: libjaylink.h:324
jaylink_hardware_type
Device hardware types.
Definition: libjaylink.h:222
Serial Wire Output (SWO) speed information.
Definition: libjaylink.h:278
Device supports retrieval of hardware information.
Definition: libjaylink.h:141
uint8_t cid
CID.
Definition: libjaylink.h:343
uint32_t freq
Base frequency in Hz.
Definition: libjaylink.h:272
USB address 1 (Product ID 0x0102).
Definition: libjaylink.h:119
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:880
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:1019
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:71
int jaylink_set_speed(struct jaylink_device_handle *devh, uint16_t speed)
Set the target interface speed.
Definition: target.c:63
uint16_t target_voltage
Target reference voltage in mV.
Definition: libjaylink.h:306
uint32_t timestamp
Timestamp of the last registration in milliseconds.
Definition: libjaylink.h:349
Device supports reading configuration data.
Definition: libjaylink.h:133
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:308
Device supports retrieval of free memory size.
Definition: libjaylink.h:139
Status of the target power supply.
Definition: libjaylink.h:172
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:236
bool jaylink_has_cap(const uint8_t *caps, uint32_t cap)
Check for a capability.
Definition: util.c:47
Device supports retrieval of target interface speeds.
Definition: libjaylink.h:137
int jaylink_version_package_get_major(void)
Get the major version number of the libjaylink package.
Definition: version.c:35
void jaylink_free_devices(struct jaylink_device **devs, bool unref)
Free devices.
Definition: device.c:183
jaylink_error
Error codes returned by libjaylink functions.
Definition: libjaylink.h:44
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:1220
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:206
jaylink_target_interface
Target interfaces.
Definition: libjaylink.h:232
int jaylink_version_library_get_revision(void)
Get the revision version number of the libjaylink libtool interface.
Definition: version.c:99
int jaylink_get_available_interfaces(struct jaylink_device_handle *devh, uint32_t *ifaces)
Retrieve the available target interfaces.
Definition: target.c:283
jaylink_capability
libjaylink capabilities.
Definition: libjaylink.h:96
int jaylink_device_get_nickname(const struct jaylink_device *dev, char *nickname)
Get the nickname of a device.
Definition: device.c:492
int jaylink_get_selected_interface(struct jaylink_device_handle *devh, enum jaylink_target_interface *iface)
Retrieve the selected target interface.
Definition: target.c:349
Renesas’ single-wire debug interface (FINE).
Definition: libjaylink.h:240
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:425
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:212
char hid[INET_ADDRSTRLEN]
Host ID (HID).
Definition: libjaylink.h:339
Transmission Control Protocol (TCP).
Definition: libjaylink.h:106
bool tdi
TDI pin state.
Definition: libjaylink.h:310
int jaylink_clear_reset(struct jaylink_device_handle *devh)
Clear the target reset signal.
Definition: target.c:406
Device supports retrieval of the hardware version.
Definition: libjaylink.h:129
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:801
Peak current consumption of the target in mA.
Definition: libjaylink.h:176
struct jaylink_device * jaylink_ref_device(struct jaylink_device *dev)
Increment the reference count of a device.
Definition: device.c:518
Output error messages.
Definition: libjaylink.h:78
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:208
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:75
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:1342
int jaylink_swo_stop(struct jaylink_device_handle *devh)
Stop SWO capture.
Definition: swo.c:156
JTAG command version 3.
Definition: libjaylink.h:260
Protocol violation.
Definition: libjaylink.h:56
int jaylink_read_raw_config(struct jaylink_device_handle *devh, uint8_t *config)
Read the raw configuration data of a device.
Definition: device.c:1282
uint8_t revision
Revision number.
Definition: libjaylink.h:300
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:444
Opaque structure representing a handle of a device.
Definition: libjaylink.h:416
int jaylink_set_reset(struct jaylink_device_handle *devh)
Set the target reset signal.
Definition: target.c:450
Device connection.
Definition: libjaylink.h:322
Device supports registration of connections.
Definition: libjaylink.h:153
int jaylink_set_target_power(struct jaylink_device_handle *devh, bool enable)
Set the target power supply.
Definition: target.c:502
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:93
Device supports capturing of SWO trace data.
Definition: libjaylink.h:149
int jaylink_jtag_set_trst(struct jaylink_device_handle *devh)
Set the JTAG test reset (TRST) signal.
Definition: jtag.c:230
Device supports target interface selection.
Definition: libjaylink.h:145
Universal Asynchronous Receiver Transmitter (UART).
Definition: libjaylink.h:266
Device supports the setting of the target power supply.
Definition: libjaylink.h:143
int jaylink_get_devices(struct jaylink_context *ctx, struct jaylink_device ***devs, size_t *count)
Get available devices.
Definition: device.c:137
bool jaylink_library_has_cap(enum jaylink_capability cap)
Check for a capability of libjaylink.
Definition: core.c:209
Device: entity not available.
Definition: libjaylink.h:68
Device supports file I/O operations.
Definition: libjaylink.h:151
Device supports EMUCOM.
Definition: libjaylink.h:157
int jaylink_get_caps(struct jaylink_device_handle *devh, uint8_t *caps)
Retrieve the capabilities of a device.
Definition: device.c:1094
Device supports retrieval of extended capabilities.
Definition: libjaylink.h:155
Output warnings.
Definition: libjaylink.h:80
const char * jaylink_version_library_get_string(void)
Get the version number string of the libjaylink libtool interface.
Definition: version.c:125
Device supports adaptive clocking.
Definition: libjaylink.h:131
USB address 3 (Product ID 0x0104).
Definition: libjaylink.h:123
Output I/O debug messages.
Definition: libjaylink.h:86
uint32_t max_prescaler
Maximum prescaler.
Definition: libjaylink.h:288
int jaylink_version_library_get_current(void)
Get the current version number of the libjaylink libtool interface.
Definition: version.c:86
uint32_t min_prescaler
Minimum prescaler.
Definition: libjaylink.h:286
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:700
bool tres
TRES pin state.
Definition: libjaylink.h:316
#define JAYLINK_API
Macro to mark public libjaylink API symbol.
Definition: libjaylink.h:429
Operation not supported.
Definition: libjaylink.h:60
Number of times the device was connected or disconnected from a target.
Definition: libjaylink.h:218
2-wire JTAG for PIC32 compliant devices.
Definition: libjaylink.h:242
Output debug messages.
Definition: libjaylink.h:84
jaylink_hardware_info
Hardware information.
Definition: libjaylink.h:163
Device: operation not supported.
Definition: libjaylink.h:66
Flasher.
Definition: libjaylink.h:226
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:269
Device: not enough memory to perform operation.
Definition: libjaylink.h:70
int jaylink_log_get_level(const struct jaylink_context *ctx, enum jaylink_log_level *level)
Get the libjaylink log level.
Definition: log.c:72
enum jaylink_hardware_type type
Hardware type.
Definition: libjaylink.h:294
USB address 0 (Product ID 0x0101).
Definition: libjaylink.h:117
Output informational messages.
Definition: libjaylink.h:82
uint8_t iid
IID.
Definition: libjaylink.h:341
Device: unspecified error.
Definition: libjaylink.h:64
Timeout occurred.
Definition: libjaylink.h:54
bool trst
TRST pin state.
Definition: libjaylink.h:318
int jaylink_log_set_domain(struct jaylink_context *ctx, const char *domain)
Set the libjaylink log domain.
Definition: log.c:133
int jaylink_log_set_level(struct jaylink_context *ctx, enum jaylink_log_level level)
Set the libjaylink log level.
Definition: log.c:47
uint16_t div
Minimum frequency divider.
Definition: libjaylink.h:274
int jaylink_get_speeds(struct jaylink_device_handle *devh, struct jaylink_speed *speed)
Retrieve target interface speeds.
Definition: target.c:128
DNS server IPv4 address in network byte order.
Definition: libjaylink.h:207
Target interface speed information.
Definition: libjaylink.h:270
void jaylink_unref_device(struct jaylink_device *dev)
Decrement the reference count of a device.
Definition: device.c:536
int jaylink_version_package_get_micro(void)
Get the micro version number of the libjaylink package.
Definition: version.c:59
Background Debug Mode 3 (BDM3).
Definition: libjaylink.h:238
Device hardware status.
Definition: libjaylink.h:304
Gateway IPv4 address in network byte order.
Definition: libjaylink.h:200
uint32_t min_div
Minimum frequency divider.
Definition: libjaylink.h:282
Serial Wire Debug (SWD).
Definition: libjaylink.h:236
uint32_t pid
Process ID (PID).
Definition: libjaylink.h:331
jaylink_jtag_version
JTAG command versions.
Definition: libjaylink.h:251
bool tdo
TDO pin state.
Definition: libjaylink.h:312
int jaylink_device_get_mac_address(const struct jaylink_device *dev, uint8_t *address)
Get the MAC address of a device.
Definition: device.c:390