mirror of
https://git.planet-casio.com/Lephenixnoir/fxsdk.git
synced 2025-06-05 02:15:11 +02:00
Compare commits
2 commits
f1721186bb
...
b7803a6aed
Author | SHA1 | Date | |
---|---|---|---|
|
b7803a6aed | ||
|
a98bbff1c9 |
3 changed files with 41 additions and 0 deletions
|
@ -113,6 +113,9 @@ static void TUI_render_status(void)
|
|||
struct fxlink_device *fdev = &TUI.devices.devices[i];
|
||||
struct fxlink_calc *calc = fdev->calc;
|
||||
|
||||
if(fdev->idVendor != 0x07cf)
|
||||
continue;
|
||||
|
||||
if(fdev->status == FXLINK_FDEV_STATUS_CONNECTED) {
|
||||
wattron(win, fmt_to_ncurses_attr(FMT_BGSELECTED));
|
||||
mvwhline(win, y, 0, ' ', w);
|
||||
|
|
|
@ -632,6 +632,29 @@ bool fxlink_device_start_bulk_OUT(struct fxlink_device *fdev,
|
|||
return true;
|
||||
}
|
||||
|
||||
bool fxlink_device_has_bulk_OUT(struct fxlink_device *fdev)
|
||||
{
|
||||
struct fxlink_comm *comm = fdev->comm;
|
||||
return comm && comm->claimed && comm->ftransfer_OUT;
|
||||
}
|
||||
|
||||
void fxlink_device_wait_bulk_OUT(
|
||||
libusb_context *ctx, struct fxlink_device *fdev)
|
||||
{
|
||||
while(fxlink_device_has_bulk_OUT(fdev))
|
||||
libusb_handle_events(ctx);
|
||||
}
|
||||
|
||||
bool fxlink_device_send_bulk_OUT(
|
||||
libusb_context *ctx, struct fxlink_device *fdev,
|
||||
char const *app, char const *type, void const *data, int size)
|
||||
{
|
||||
if(!fxlink_device_start_bulk_OUT(fdev, app, type, data, size, false))
|
||||
return false;
|
||||
fxlink_device_wait_bulk_OUT(ctx, fdev);
|
||||
return true;
|
||||
}
|
||||
|
||||
//---
|
||||
// Polled file descriptor tracking
|
||||
//---
|
||||
|
|
|
@ -235,6 +235,21 @@ bool fxlink_device_start_bulk_OUT(struct fxlink_device *fdev,
|
|||
char const *app, char const *type, void const *data, int size,
|
||||
bool own_data);
|
||||
|
||||
/* Check whether a device currently has an ongoing OUT transfer. */
|
||||
bool fxlink_device_has_bulk_OUT(struct fxlink_device *fdev);
|
||||
|
||||
/* Wait for an ongoing OUT transfer to finish. If there is no such transfer
|
||||
ongoing, this function is a no-op. */
|
||||
void fxlink_device_wait_bulk_OUT(
|
||||
libusb_context *ctx, struct fxlink_device *fdev);
|
||||
|
||||
/* Run an OUT transfer on the device and wait for its completion. Note that if
|
||||
the calculator does not properly receive the data for whatever reason, this
|
||||
function will never return. */
|
||||
bool fxlink_device_send_bulk_OUT(
|
||||
libusb_context *ctx, struct fxlink_device *fdev,
|
||||
char const *app, char const *type, void const *data, int size);
|
||||
|
||||
/* Interrupt any active transfers on the device. */
|
||||
void fxlink_device_interrupt_transfers(struct fxlink_device *fdev);
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue