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
365 char hid[INET_ADDRSTRLEN];
379 #define JAYLINK_SPEED_ADAPTIVE_CLOCKING 0xffff
382 #define JAYLINK_DEV_CONFIG_SIZE 256
385 #define JAYLINK_DEV_CAPS_SIZE 4
388 #define JAYLINK_DEV_EXT_CAPS_SIZE 32
391 #define JAYLINK_MAX_CONNECTIONS 16
394 #define JAYLINK_MAC_ADDRESS_LENGTH 6
400 #define JAYLINK_NICKNAME_MAX_LENGTH 32
406 #define JAYLINK_PRODUCT_NAME_MAX_LENGTH 32
409 #define JAYLINK_FILE_NAME_MAX_LENGTH 255
412 #define JAYLINK_FILE_MAX_TRANSFER_SIZE 0x100000
420 #define JAYLINK_EMUCOM_CHANNEL_TIME 0x0
428 #define JAYLINK_EMUCOM_CHANNEL_USER 0x10000
431 #define JAYLINK_C2_MAX_LENGTH 64
458 #define JAYLINK_API __attribute__ ((visibility ("default")))
490 uint8_t *data, uint8_t length);
492 const uint8_t *data, uint8_t length);
510 uint8_t **ports,
size_t *length);
534 uint32_t mask, uint32_t *info);
536 uint32_t mask, uint32_t *values);
551 const uint8_t *config);
567 uint32_t channel, uint8_t *buffer, uint32_t *length);
569 uint32_t channel,
const uint8_t *buffer, uint32_t *length);
579 const char *filename, uint8_t *buffer, uint32_t offset,
582 const char *filename,
const uint8_t *buffer, uint32_t offset,
585 const char *filename, uint32_t *size);
587 const char *filename);
592 const uint8_t *tms,
const uint8_t *tdi, uint8_t *tdo,
617 const uint8_t *mosi, uint8_t *miso, uint32_t length,
623 uint32_t *serial_number);
632 const uint8_t *direction,
const uint8_t *out, uint8_t *in,
641 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:176
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:238
Input/output error.
Definition: libjaylink.h:62
jaylink_usb_address
USB addresses.
Definition: libjaylink.h:115
Compact JTAG (cJTAG).
Definition: libjaylink.h:252
jaylink_counter
Device counters.
Definition: libjaylink.h:215
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
jaylink_spi_flag
Serial Peripheral Interface (SPI) flags.
Definition: libjaylink.h:280
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:334
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:306
int jaylink_c2_read_data(struct jaylink_device_handle *devh, uint8_t *data, uint8_t length)
Read the C2 data register.
Definition: c2.c:209
IPv4 netmask in network byte order.
Definition: libjaylink.h:195
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:188
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:340
J-Link Pro.
Definition: libjaylink.h:232
int jaylink_swo_read(struct jaylink_device_handle *devh, uint8_t *buffer, uint32_t *length)
Read SWO trace data.
Definition: swo.c:230
Drive chip select (CS) low after the transfer is complete.
Definition: libjaylink.h:290
JTAG command version 2.
Definition: libjaylink.h:268
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_jtag_clear_tck(struct jaylink_device_handle *devh)
Clear the JTAG test clock (TCK) signal.
Definition: jtag.c:366
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:324
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
Do not drive chip select (CS) before the transfer begins.
Definition: libjaylink.h:282
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:310
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:438
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:274
int jaylink_jtag_clear_trst(struct jaylink_device_handle *devh)
Clear the JTAG test reset (TRST) signal.
Definition: jtag.c:190
Device hardware version.
Definition: libjaylink.h:318
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:228
Time the device is connected to a target in milliseconds.
Definition: libjaylink.h:217
Device supports writing configuration data.
Definition: libjaylink.h:135
Do not drive chip select (CS) after the transfer is complete.
Definition: libjaylink.h:288
uint8_t major
Major version.
Definition: libjaylink.h:322
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:350
jaylink_hardware_type
Device hardware types.
Definition: libjaylink.h:226
Serial Wire Output (SWO) speed information.
Definition: libjaylink.h:304
Device supports retrieval of hardware information.
Definition: libjaylink.h:141
uint8_t cid
CID.
Definition: libjaylink.h:369
uint32_t freq
Base frequency in Hz.
Definition: libjaylink.h:298
USB address 1 (Product ID 0x0102).
Definition: libjaylink.h:119
Drive chip select (CS) low before the transfer begins.
Definition: libjaylink.h:284
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:332
Serial Peripheral Interface (SPI).
Definition: libjaylink.h:248
uint32_t timestamp
Timestamp of the last registration in milliseconds.
Definition: libjaylink.h:375
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:174
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
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:64
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_jtag_set_tms(struct jaylink_device_handle *devh)
Set the JTAG test mode select (TMS) signal.
Definition: jtag.c:322
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
int jaylink_c2_read_address(struct jaylink_device_handle *devh, uint8_t *address)
Read the C2 address register.
Definition: c2.c:59
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:236
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:286
jaylink_capability
libjaylink capabilities.
Definition: libjaylink.h:96
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:290
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:352
Renesas’ single-wire debug interface (FINE).
Definition: libjaylink.h:244
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:365
Transmission Control Protocol (TCP).
Definition: libjaylink.h:106
bool tdi
TDI pin state.
Definition: libjaylink.h:336
Drive chip select (CS) high before the transfer begins.
Definition: libjaylink.h:286
int jaylink_clear_reset(struct jaylink_device_handle *devh)
Clear the target reset signal.
Definition: target.c:409
Device supports retrieval of the hardware version.
Definition: libjaylink.h:129
USB voltage in mV.
Definition: libjaylink.h:211
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:178
struct jaylink_device * jaylink_ref_device(struct jaylink_device *dev)
Increment the reference count of a device.
Definition: device.c:518
const char * jaylink_target_interface_string(enum jaylink_target_interface iface)
Get the string representation of a target interface.
Definition: strutil.c:105
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:79
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
Drive chip select (CS) high after the transfer is complete.
Definition: libjaylink.h:292
int jaylink_swo_stop(struct jaylink_device_handle *devh)
Stop SWO capture.
Definition: swo.c:156
JTAG command version 3.
Definition: libjaylink.h:270
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
Silicon Labs 2-wire interface (C2).
Definition: libjaylink.h:250
uint8_t revision
Revision number.
Definition: libjaylink.h:326
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:473
Opaque structure representing a handle of a device.
Definition: libjaylink.h:445
int jaylink_set_reset(struct jaylink_device_handle *devh)
Set the target reset signal.
Definition: target.c:453
Device connection.
Definition: libjaylink.h:348
Device supports registration of connections.
Definition: libjaylink.h:153
int jaylink_jtag_clear_tms(struct jaylink_device_handle *devh)
Clear the JTAG test mode select (TMS) signal.
Definition: jtag.c:278
int jaylink_set_target_power(struct jaylink_device_handle *devh, bool enable)
Set the target power supply.
Definition: target.c:505
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:234
Device supports target interface selection.
Definition: libjaylink.h:145
Universal Asynchronous Receiver Transmitter (UART).
Definition: libjaylink.h:276
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:314
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:312
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:342
#define JAYLINK_API
Macro to mark public libjaylink API symbol.
Definition: libjaylink.h:458
Operation not supported.
Definition: libjaylink.h:60
Number of times the device was connected or disconnected from a target.
Definition: libjaylink.h:222
2-wire JTAG for PIC32 compliant devices.
Definition: libjaylink.h:246
Output debug messages.
Definition: libjaylink.h:84
jaylink_hardware_info
Hardware information.
Definition: libjaylink.h:165
Device: operation not supported.
Definition: libjaylink.h:66
Flasher.
Definition: libjaylink.h:230
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:320
USB address 0 (Product ID 0x0101).
Definition: libjaylink.h:117
int jaylink_c2_write_address(struct jaylink_device_handle *devh, uint8_t address)
Write to the C2 address register.
Definition: c2.c:136
Device supports SPI.
Definition: libjaylink.h:161
int jaylink_jtag_set_tck(struct jaylink_device_handle *devh)
Set the JTAG test clock (TCK) signal.
Definition: jtag.c:410
Output informational messages.
Definition: libjaylink.h:82
uint8_t iid
IID.
Definition: libjaylink.h:367
Device: unspecified error.
Definition: libjaylink.h:64
Timeout occurred.
Definition: libjaylink.h:54
bool trst
TRST pin state.
Definition: libjaylink.h:344
int jaylink_log_set_domain(struct jaylink_context *ctx, const char *domain)
Set the libjaylink log domain.
Definition: log.c:133
const char * jaylink_hardware_type_string(enum jaylink_hardware_type type)
Get the string representation of a hardware type.
Definition: strutil.c:78
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:300
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:209
Target interface speed information.
Definition: libjaylink.h:296
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:242
Device hardware status.
Definition: libjaylink.h:330
Gateway IPv4 address in network byte order.
Definition: libjaylink.h:202
uint32_t min_div
Minimum frequency divider.
Definition: libjaylink.h:308
Serial Wire Debug (SWD).
Definition: libjaylink.h:240
uint32_t pid
Process ID (PID).
Definition: libjaylink.h:357
jaylink_jtag_version
JTAG command versions.
Definition: libjaylink.h:261
bool tdo
TDO pin state.
Definition: libjaylink.h:338
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