X-Git-Url: http://sigrok.org/gitweb/?a=blobdiff_plain;f=error.c;h=7d991fdbc11857f1b78986993552abde501097f1;hb=f6b59690146fc45050cef965a6be1590b47852b9;hp=d0697bc84e84fda1f9e4046ab317176bbd1d4c88;hpb=b5a8e848256f54b32ca988be5a1ec2db5048873a;p=libsigrok.git diff --git a/error.c b/error.c index d0697bc8..7d991fdb 100644 --- a/error.c +++ b/error.c @@ -1,5 +1,5 @@ /* - * This file is part of the sigrok project. + * This file is part of the libsigrok project. * * Copyright (C) 2012 Uwe Hermann * @@ -20,46 +20,65 @@ #include "libsigrok.h" +/** + * @file + * + * Error handling in libsigrok. + */ + +/** + * @defgroup grp_error Error handling + * + * Error handling in libsigrok. + * + * libsigrok functions usually return @ref SR_OK upon success, or a negative + * error code on failure. + * + * @{ + */ + /** * Return a human-readable error string for the given libsigrok error code. * * @param error_code A libsigrok error code number, such as SR_ERR_MALLOC. + * * @return A const string containing a short, human-readable (English) * description of the error, such as "memory allocation error". * The string must NOT be free'd by the caller! + * * @see sr_strerror_name + * + * @since 0.2.0 */ SR_API const char *sr_strerror(int error_code) { - const char *str; - /* - * Note: All defined SR_* error macros from libsigrok.h should have + * Note: All defined SR_* error macros from libsigrok.h must have * an entry in this function, as well as in sr_strerror_name(). */ switch (error_code) { case SR_OK: - str = "no error"; - break; + return "no error"; case SR_ERR: - str = "generic/unspecified error"; - break; + return "generic/unspecified error"; case SR_ERR_MALLOC: - str = "memory allocation error"; - break; + return "memory allocation error"; + case SR_ERR_ARG: + return "invalid argument"; case SR_ERR_BUG: - str = "internal error"; - break; + return "internal error"; case SR_ERR_SAMPLERATE: - str = "invalid samplerate"; - break; + return "invalid samplerate"; + case SR_ERR_NA: + return "not applicable"; + case SR_ERR_DEV_CLOSED: + return "device closed but should be open"; + case SR_ERR_TIMEOUT: + return "timeout occurred"; default: - str = "unknown error"; - break; + return "unknown error"; } - - return str; } /** @@ -72,39 +91,43 @@ SR_API const char *sr_strerror(int error_code) * a libsigrok error code is useful. * * @param error_code A libsigrok error code number, such as SR_ERR_MALLOC. + * * @return A const string containing the "name" of the error code as string. * The string must NOT be free'd by the caller! + * * @see sr_strerror + * + * @since 0.2.0 */ SR_API const char *sr_strerror_name(int error_code) { - const char *str; - /* - * Note: All defined SR_* error macros from libsigrok.h should have + * Note: All defined SR_* error macros from libsigrok.h must have * an entry in this function, as well as in sr_strerror(). */ switch (error_code) { case SR_OK: - str = "SR_OK"; - break; + return "SR_OK"; case SR_ERR: - str = "SR_ERR"; - break; + return "SR_ERR"; case SR_ERR_MALLOC: - str = "SR_ERR_MALLOC"; - break; + return "SR_ERR_MALLOC"; + case SR_ERR_ARG: + return "SR_ERR_ARG"; case SR_ERR_BUG: - str = "SR_ERR_BUG"; - break; + return "SR_ERR_BUG"; case SR_ERR_SAMPLERATE: - str = "SR_ERR_SAMPLERATE"; - break; + return "SR_ERR_SAMPLERATE"; + case SR_ERR_NA: + return "SR_ERR_NA"; + case SR_ERR_DEV_CLOSED: + return "SR_ERR_DEV_CLOSED"; + case SR_ERR_TIMEOUT: + return "SR_ERR_TIMEOUT"; default: - str = "unknown error code"; - break; + return "unknown error code"; } - - return str; } + +/** @} */