mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

targets/cmsis/TARGET_Atmel/TARGET_SAM21/utils/status_codes.h

Committer:
mbed_official
Date:
2015-07-17
Revision:
592:a274ee790e56
Parent:
579:53297373a894

File content as of revision 592:a274ee790e56:

#ifndef STATUS_CODES_H_INCLUDED
#define STATUS_CODES_H_INCLUDED

#include <stdint.h>

/**
 * \defgroup group_sam0_utils_status_codes Status Codes
 *
 * \ingroup group_sam0_utils
 *
 * @{
 */

/** Mask to retrieve the error category of a status code. */
#define STATUS_CATEGORY_MASK  0xF0

/** Mask to retrieve the error code within the category of a status code. */
#define STATUS_ERROR_MASK     0x0F

/** Status code error categories. */
enum status_categories {
    STATUS_CATEGORY_OK                = 0x00,
    STATUS_CATEGORY_COMMON            = 0x10,
    STATUS_CATEGORY_ANALOG            = 0x30,
    STATUS_CATEGORY_COM               = 0x40,
    STATUS_CATEGORY_IO                = 0x50,
};

/**
 * Status code that may be returned by shell commands and protocol
 * implementations.
 *
 * \note Any change to these status codes and the corresponding
 * message strings is strictly forbidden. New codes can be added,
 * however, but make sure that any message string tables are updated
 * at the same time.
 */
enum status_code {
    STATUS_OK                         = STATUS_CATEGORY_OK     | 0x00,
    STATUS_VALID_DATA                 = STATUS_CATEGORY_OK     | 0x01,
    STATUS_NO_CHANGE                  = STATUS_CATEGORY_OK     | 0x02,
    STATUS_ABORTED                    = STATUS_CATEGORY_OK     | 0x04,
    STATUS_BUSY                       = STATUS_CATEGORY_OK     | 0x05,
    STATUS_SUSPEND                    = STATUS_CATEGORY_OK     | 0x06,

    STATUS_ERR_IO                     = STATUS_CATEGORY_COMMON | 0x00,
    STATUS_ERR_REQ_FLUSHED            = STATUS_CATEGORY_COMMON | 0x01,
    STATUS_ERR_TIMEOUT                = STATUS_CATEGORY_COMMON | 0x02,
    STATUS_ERR_BAD_DATA               = STATUS_CATEGORY_COMMON | 0x03,
    STATUS_ERR_NOT_FOUND              = STATUS_CATEGORY_COMMON | 0x04,
    STATUS_ERR_UNSUPPORTED_DEV        = STATUS_CATEGORY_COMMON | 0x05,
    STATUS_ERR_NO_MEMORY              = STATUS_CATEGORY_COMMON | 0x06,
    STATUS_ERR_INVALID_ARG            = STATUS_CATEGORY_COMMON | 0x07,
    STATUS_ERR_BAD_ADDRESS            = STATUS_CATEGORY_COMMON | 0x08,
    STATUS_ERR_BAD_FORMAT             = STATUS_CATEGORY_COMMON | 0x0A,
    STATUS_ERR_BAD_FRQ                = STATUS_CATEGORY_COMMON | 0x0B,
    STATUS_ERR_DENIED                 = STATUS_CATEGORY_COMMON | 0x0c,
    STATUS_ERR_ALREADY_INITIALIZED    = STATUS_CATEGORY_COMMON | 0x0d,
    STATUS_ERR_OVERFLOW               = STATUS_CATEGORY_COMMON | 0x0e,
    STATUS_ERR_NOT_INITIALIZED        = STATUS_CATEGORY_COMMON | 0x0f,

    STATUS_ERR_SAMPLERATE_UNAVAILABLE = STATUS_CATEGORY_ANALOG | 0x00,
    STATUS_ERR_RESOLUTION_UNAVAILABLE = STATUS_CATEGORY_ANALOG | 0x01,

    STATUS_ERR_BAUDRATE_UNAVAILABLE   = STATUS_CATEGORY_COM    | 0x00,
    STATUS_ERR_PACKET_COLLISION       = STATUS_CATEGORY_COM    | 0x01,
    STATUS_ERR_PROTOCOL               = STATUS_CATEGORY_COM    | 0x02,

    STATUS_ERR_PIN_MUX_INVALID        = STATUS_CATEGORY_IO     | 0x00,
};
typedef enum status_code status_code_genare_t;

/**
  Status codes used by MAC stack.
 */
enum status_code_wireless {
    //STATUS_OK               =  0, //!< Success
    ERR_IO_ERROR            =  -1, //!< I/O error
    ERR_FLUSHED             =  -2, //!< Request flushed from queue
    ERR_TIMEOUT             =  -3, //!< Operation timed out
    ERR_BAD_DATA            =  -4, //!< Data integrity check failed
    ERR_PROTOCOL            =  -5, //!< Protocol error
    ERR_UNSUPPORTED_DEV     =  -6, //!< Unsupported device
    ERR_NO_MEMORY           =  -7, //!< Insufficient memory
    ERR_INVALID_ARG         =  -8, //!< Invalid argument
    ERR_BAD_ADDRESS         =  -9, //!< Bad address
    ERR_BUSY                =  -10, //!< Resource is busy
    ERR_BAD_FORMAT          =  -11, //!< Data format not recognized
    ERR_NO_TIMER            =  -12, //!< No timer available
    ERR_TIMER_ALREADY_RUNNING   =  -13, //!< Timer already running
    ERR_TIMER_NOT_RUNNING   =  -14, //!< Timer not running

    /**
     * \brief Operation in progress
     *
     * This status code is for driver-internal use when an operation
     * is currently being performed.
     *
     * \note Drivers should never return this status code to any
     * callers. It is strictly for internal use.
     */
    OPERATION_IN_PROGRESS	= -128,
};

typedef enum status_code_wireless status_code_t;

/** @} */

#endif /* STATUS_CODES_H_INCLUDED */