co_usb
Loading...
Searching...
No Matches
status.hpp
Go to the documentation of this file.
1
6
#pragma once
7
8
#include <libusb.h>
9
#include <system_error>
10
11
namespace
co_usb::transfer
12
{
13
21
enum class
status
22
{
23
completed
= LIBUSB_TRANSFER_COMPLETED,
24
26
error
= LIBUSB_TRANSFER_ERROR,
27
29
timed_out
= LIBUSB_TRANSFER_TIMED_OUT,
30
32
cancelled
= LIBUSB_TRANSFER_CANCELLED,
33
36
stall
= LIBUSB_TRANSFER_STALL,
37
39
no_device
= LIBUSB_TRANSFER_NO_DEVICE,
40
42
overflow
= LIBUSB_TRANSFER_OVERFLOW,
43
};
44
45
struct
transfer_status_category_t
:
public
std::error_category
46
{
47
const
char
*
name
() const noexcept
override
48
{
49
return
"co_usb transfer status"
;
50
}
51
52
std::string
message
(
int
v)
const override
53
{
54
switch
(
static_cast<
status
>
(v))
55
{
56
using
enum
status
;
57
case
completed
:
return
"completed"
;
58
case
error
:
return
"error"
;
59
case
cancelled
:
return
"cancelled"
;
60
case
stall
:
return
"device stalled"
;
61
case
no_device
:
return
"no such device"
;
62
case
overflow
:
return
"data overflow"
;
63
default
:
return
"unknown"
;
64
}
65
}
66
};
67
68
inline
const
std::error_category &
transfer_status_category
()
69
{
70
static
transfer_status_category_t
instance;
71
return
instance;
72
}
73
74
inline
std::error_code
make_transfer_status
(
status
e)
noexcept
75
{
76
return
{
static_cast<
int
>
(e),
transfer_status_category
()};
77
}
78
79
inline
std::error_code
make_transfer_status
(libusb_transfer_status e)
noexcept
80
{
81
return
{
static_cast<
int
>
(e),
transfer_status_category
()};
82
}
83
84
}
// namespace co_usb::transfer
85
86
namespace
std
87
{
88
89
template
<>
struct
is_error_code_enum<
co_usb
::transfer::status> : ::std::true_type
90
{
91
};
92
93
}
// namespace std
co_usb::transfer::status
status
Status codes for transfers.
Definition
status.hpp:22
co_usb::transfer::status::overflow
@ overflow
co_usb::transfer::status::cancelled
@ cancelled
co_usb::transfer::status::no_device
@ no_device
co_usb::transfer::status::timed_out
@ timed_out
co_usb::transfer::status::completed
@ completed
co_usb::transfer::status::error
@ error
co_usb::transfer::status::stall
@ stall
co_usb::transfer
Definition
complete_io.hpp:18
co_usb::transfer::transfer_status_category
const std::error_category & transfer_status_category()
Definition
status.hpp:68
co_usb::transfer::make_transfer_status
std::error_code make_transfer_status(status e) noexcept
Definition
status.hpp:74
co_usb
Definition
flag_type.hpp:6
std
Definition
status.hpp:87
co_usb::transfer::transfer_status_category_t
Definition
status.hpp:46
co_usb::transfer::transfer_status_category_t::name
const char * name() const noexcept override
Definition
status.hpp:47
co_usb::transfer::transfer_status_category_t::message
std::string message(int v) const override
Definition
status.hpp:52
include
co_usb
transfer
status.hpp
Generated by
1.9.8