pub enum StatusCode {
Success,
NotImplemented,
InvalidParameter,
InvalidAddress,
WriteProtect,
BadAlignment,
AccessDenied,
Busy,
GenericError,
Unknown(u16),
}Expand description
Status codes shared by the GVCP and GenCP acknowledgement tables.
Only the codes both protocols define identically live here:
0x0000, 0x8001–0x8007 and 0x8FFF. Above that the tables diverge,
and at 0x800B they actively disagree — GVCP calls it NO_MSG
(deprecated), GenCP calls it MSG_TIMEOUT — so a transport-specific code
must be decoded by that transport, not here. See ADR-0020.
Values corroborated by Wireshark’s GVCP dissector
(epan/dissectors/packet-gvcp.c, GEV_STATUS_*) and aravis
(arvgvcpprivate.h, arvuvcpprivate.h), which agree with each other.
Variants§
Success
Command completed successfully.
NotImplemented
The requested command is not implemented by the device.
InvalidParameter
One of the command parameters was invalid or out of range.
InvalidAddress
The requested address does not exist on the device.
WriteProtect
Attempt to write to a read-only register.
A permanent condition: retrying cannot make it succeed.
BadAlignment
The access was not aligned as the underlying technology requires.
AccessDenied
Attempt to read a non-readable, or write a non-writable, register.
Distinct from StatusCode::WriteProtect: the register accepts
writes in principle but the device is refusing this one, typically
because a GenApi lock is engaged or control privilege is not held.
Busy
The device is busy and the command may succeed if retried.
The only status in this table worth a retry.
GenericError
The device reported a generic error with nothing more specific.
Unknown(u16)
A status code not known to this implementation, or specific to one transport. Carries the raw value so a caller can still report it.
Implementations§
Source§impl StatusCode
impl StatusCode
Sourcepub fn from_raw(raw: u16) -> Self
pub fn from_raw(raw: u16) -> Self
Convert from the raw status field in an acknowledgement header.
Sourcepub const fn name(self) -> &'static str
pub const fn name(self) -> &'static str
The specification’s name for this code, for diagnostics.
Sourcepub const fn is_retryable(self) -> bool
pub const fn is_retryable(self) -> bool
Whether retrying the command could plausibly succeed.
True only for StatusCode::Busy. Notably not WriteProtect or
AccessDenied, which are refusals rather than congestion.
Trait Implementations§
Source§impl Clone for StatusCode
impl Clone for StatusCode
Source§fn clone(&self) -> StatusCode
fn clone(&self) -> StatusCode
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for StatusCode
impl Debug for StatusCode
Source§impl Display for StatusCode
Prints the specification name and the raw hex value.
impl Display for StatusCode
Prints the specification name and the raw hex value.
Both halves matter: the name is what makes an error actionable, and the
raw value is what lets a reporter match it against a capture. A bare
decimal — which is what {:?} on the old Unknown(32774) produced —
sent a user to the issue tracker in #45 unable to tell us anything.
Source§impl PartialEq for StatusCode
impl PartialEq for StatusCode
Source§fn eq(&self, other: &StatusCode) -> bool
fn eq(&self, other: &StatusCode) -> bool
self and other values to be equal, and is used by ==.