Listing calculators connected by USB

In order to list calculators connected by USB, you must use cahute_detect_usb(), while providing it with a callback to either add the USB device to your list or display it.

An example program using this function is the following:

/* Compile using: gcc detect-usb.c `pkg-config cahute --cflags --libs`. */

#include <stdio.h>
#include <cahute.h>

int my_callback(void *cookie, cahute_usb_detection_entry const *entry) {
    char const *type_name;

    switch (entry->cahute_usb_detection_entry_type) {
    case CAHUTE_USB_DETECTION_ENTRY_TYPE_SERIAL:
        type_name =
            "Serial calculator (fx-9860G, Classpad 300 / 330 (+) or "
            "compatible)";
        break;

    case CAHUTE_USB_DETECTION_ENTRY_TYPE_SCSI:
        type_name = "UMS calculator (fx-CG, fx-CP400+, fx-GIII)";
        break;

    default:
        type_name = "(unknown)";
    }

    printf("New entry data:\n");
    printf(
        "- Address: %03d:%03d\n",
        entry->cahute_usb_detection_entry_bus,
        entry->cahute_usb_detection_entry_address
    );
    printf("- Type: %s\n", type_name);

    return 0;
}

int main(void) {
    int err;

    err = cahute_detect_usb(&my_callback, NULL);
    if (err)
        fprintf(stderr, "Cahute has returned error 0x%04X.\n", err);

    return 0;
}

An example output for this program is the following:

New entry data:
- Address: 003:042
- Type: Serial calculator (fx-9860G, Classpad 300 / 330 (+) or compatible)
New entry data:
- Address: 003:043
- Type: UMS calculator (fx-CG, fx-CP400+, fx-GIII)

Note

On Linux, you can compare this output to the output of lsusb, for example in the case above:

$ lsusb
...
Bus 003 Device 042: ID 07cf:6101 Casio Computer Co., Ltd fx-9750gII
Bus 003 Device 043: ID 07cf:6102 Casio Computer Co., Ltd fx-CP400
...