#ifndef USBTMCLIB_ERRORS_H
#define USBTMCLIB_ERRORS_H

    #include <stddef.h>
    #include <stdint.h>
    #include "usbd_def.h"

    //----------------------------------------------------------------
    // Refer to:
    // [1] USBTMC Standard, rev. 1.0, 14/04/2003
    //     "Universal Serial Bus Test and Measurement Class Specification (USBTMC)"
    // [2] USBTMC-USB488 Standard, rev. 1.0, 14/04/2003
    //     "Universal Serial Bus Test and Measurement Class, Subclass USB488 Specification (USBTMC-USB488)
    //----------------------------------------------------------------

    // @eUSBTMCStatusCodes_t
    // USBTMC specific requests via USB-Control protocol
    // see section 4.2.1 [1]
    typedef enum
    {
       // @eUSBTMC_STATUS_SUCCESS
       // Macro: STATUS_SUCCESS
       // A success status code.
       eUSBTMC_STATUS_SUCCESS = 0x01,

       // @eUSBTMC_STATUS_PENDING
       // Macro: STATUS_PENDING
       // This status is valid if a device has received a
       // USBTMC split transaction CHECK_STATUS
       // request and the request is still being processed.
       // See 4.2.1.1. [1]
       eUSBTMC_STATUS_PENDING = 0x02,

       // @eUSBTMC_STATUS_FAILED
       // Macro: STATUS_FAILED
       // Failure, unspecified reason, and a more specific
       // USBTMC_status is not defined.
       eUSBTMC_STATUS_FAILED = 0x80,

       // @eUSBTMC_STATUS_TRANSFER_NOT_IN_PROGRESS
       // Macro: STATUS_TRANSFER_NOT_IN_PROGRESS
       // This status is only valid if a device has received
       // an INITIATE_ABORT_BULK_OUT or INITIATE_ABORT_BULK_IN 
       // request and the specified transfer to abort is not in progress.
       eUSBTMC_STATUS_TRANSFER_NOT_IN_PROGRESS = 0x81,

       // @eUSBTMC_STATUS_SPLIT_NOT_IN_PROGRESS
       // Macro: STATUS_SPLIT_NOT_IN_PROGRESS
       // This status is valid if the device received a
       // CHECK_STATUS request and the device is not
       // processing an INITIATE request.
       eUSBTMC_STATUS_SPLIT_NOT_IN_PROGRESS = 0x82,

       // @eUSBTMC_STATUS_SPLIT_IN_PROGRESS
       // Macro: STATUS_SPLIT_IN_PROGRESS
       // This status is valid if the device received a new
       // class-specific request and the device is still
       // processing an INITIATE. 
       eUSBTMC_STATUS_SPLIT_IN_PROGRESS = 0x83,       
    }
    eUSBTMCStatusCodes_t;
    
#endif