OpenCores
URL https://opencores.org/ocsvn/gecko3/gecko3/trunk

Subversion Repositories gecko3

[/] [gecko3/] [trunk/] [GECKO3COM/] [gecko3com-fw/] [firmware/] [include/] [usb_tmc.h] - Diff between revs 9 and 32

Only display areas with differences | Details | Blame | View Log

Rev 9 Rev 32
/* GECKO3COM
/* GECKO3COM
 *
 *
 * Copyright (C) 2008 by
 * Copyright (C) 2008 by
 *   ___    ____  _   _
 *   ___    ____  _   _
 *  (  _`\ (  __)( ) ( )
 *  (  _`\ (  __)( ) ( )
 *  | (_) )| (_  | |_| |   Berne University of Applied Sciences
 *  | (_) )| (_  | |_| |   Berne University of Applied Sciences
 *  |  _ <'|  _) |  _  |   School of Engineering and
 *  |  _ <'|  _) |  _  |   School of Engineering and
 *  | (_) )| |   | | | |   Information Technology
 *  | (_) )| |   | | | |   Information Technology
 *  (____/'(_)   (_) (_)
 *  (____/'(_)   (_) (_)
 *
 *
 *
 *
 * This program is free software: you can redistribute it and/or modify
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * (at your option) any later version.
 *
 *
 * This program is distributed in the hope that it will be useful,
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 */
 
 
/*********************************************************************/
/*********************************************************************/
/** \file     usb_tmc.h
/** \file     usb_tmc.h
 *********************************************************************
 *********************************************************************
 * \brief     header file for the USB Test and Measurement Class (TMC)
 * \brief     header file for the USB Test and Measurement Class (TMC)
 *            functions.
 *            functions.
 *
 *
 *            According to USBTMC Specification Revision 1.0 and
 *            According to USBTMC Specification Revision 1.0 and
 *            USBTMC-USB488 Subclass Specification Revision 1.0.
 *            USBTMC-USB488 Subclass Specification Revision 1.0.
 *
 *
 * \author    Christoph Zimmermann bfh.ch, Eldo José dos Santos
 * \author    Christoph Zimmermann bfh.ch, Eldo José dos Santos
 * \date      2009-02-04
 * \date      2009-02-04
 *
 *
*/
*/
 
 
#ifndef _USBTMC_H_
#ifndef _USBTMC_H_
#define _USBTMC_H_
#define _USBTMC_H_
 
 
/** length of the buffer to hold the response messages to be sent to the host */
/** length of the buffer to hold the response messages to be sent to the host */
#define TMC_RESPONSE_QUEUE_LENGTH 256  
#define TMC_RESPONSE_QUEUE_LENGTH 256  
 
 
/*****************************************************************************/
/*****************************************************************************/
/* definitions, data structures and related stuff
/* definitions, data structures and related stuff
 * according to USBTMC standard */
 * according to USBTMC standard */
 
 
#define USB_TMC_HEADER_SIZE 12  /**< length of a USBTMC header */
#define USB_TMC_HEADER_SIZE 12  /**< length of a USBTMC header */
 
 
 
 
/* USBTMC MsgID. Values, Ref.: Table 2 */
/* USBTMC MsgID. Values, Ref.: Table 2 */
#define DEV_DEP_MSG_OUT              1   /**< device dependent command message */
#define DEV_DEP_MSG_OUT              1   /**< device dependent command message */
#define REQUEST_DEV_DEP_MSG_IN       2   /**< command message that requests the device to send a USBTMC response */
#define REQUEST_DEV_DEP_MSG_IN      2   /**< command message that requests the 
#define DEV_DEP_MSG_IN               2   /**< response message to the REQUEST_DEV_DEP_MSG_IN */
                                           device to send a USBTMC response */
 
#define DEV_DEP_MSG_IN              2   /**< response message to the 
 
                                           REQUEST_DEV_DEP_MSG_IN */
#define VENDOR_SPECIFIC_OUT          126 /**< vendor specific command message */
#define VENDOR_SPECIFIC_OUT          126 /**< vendor specific command message */
#define REQUEST_VENDOR_SPECIFIC_IN   127 /**< command message that requests the device to send a vendor specific USBTMC response */
#define REQUEST_VENDOR_SPECIFIC_IN  127 /**< command message that requests the
#define VENDOR_SPECIFIC_IN           127 /**< response message to the REQUEST_VENDOR_SPECIFIC_IN */
                                           device to send a vendor specific
 
                                           USBTMC response */
 
#define VENDOR_SPECIFIC_IN          127 /**< response message to the 
 
                                           REQUEST_VENDOR_SPECIFIC_IN */
 
 
 
 
/* format of bmRequestType byte */
/* format of bmRequestType byte */
#define bmRT_TMC_OUT   0x21             
#define bmRT_TMC_OUT   0x21             
#define bmRT_TMC_IN    0xA1
#define bmRT_TMC_IN    0xA1
 
 
 
 
/* USBTMC commands (bRequest values, Ref.: Table 15) */
/* USBTMC commands (bRequest values, Ref.: Table 15) */
#define INITIATE_ABORT_BULK_OUT      1
#define INITIATE_ABORT_BULK_OUT      1
#define CHECK_ABORT_BULK_OUT_STATUS  2
#define CHECK_ABORT_BULK_OUT_STATUS  2
#define INITIATE_ABORT_BULK_IN       3
#define INITIATE_ABORT_BULK_IN       3
#define CHECK_ABORT_BULK_IN_STATUS   4
#define CHECK_ABORT_BULK_IN_STATUS   4
#define INITIATE_CLEAR               5
#define INITIATE_CLEAR               5
#define CHECK_CLEAR_STATUS           6
#define CHECK_CLEAR_STATUS           6
#define GET_CAPABILITIES             7
#define GET_CAPABILITIES             7
#define INDICATOR_PULSE              64
#define INDICATOR_PULSE              64
 
 
/* USBTMC USB488 Subclass commands (bRequest values, Ref.: Table 9) */
/* USBTMC USB488 Subclass commands (bRequest values, Ref.: Table 9) */
#define READ_STATUS_BYTE             128
#define READ_STATUS_BYTE             128
#define REN_CONTROL                  160
#define REN_CONTROL                  160
#define GO_TO_LOCAL                  161
#define GO_TO_LOCAL                  161
#define LOCAL_LOCKOUT                162
#define LOCAL_LOCKOUT                162
 
 
/* bmTransfer attributes */
/* bmTransfer attributes */
#define bmTA_EOM       0x01  /**< bmTransfer Attribute: End of Message */
#define bmTA_EOM       0x01  /**< bmTransfer Attribute: End of Message */
#define bmTA_TERMCHAR  0x02  /**< bmTransfer Attribute: Terminate transfer with Terminate Character */
#define bmTA_TERMCHAR  0x02  /**< bmTransfer Attribute: Terminate transfer with Terminate Character */
 
 
/** \brief status values according to USBTMC specificaton, Ref.: Table 16 */
/** \brief status values according to USBTMC specificaton, Ref.: Table 16 */
typedef enum {
typedef enum {
        TMC_STATUS_SUCCESS                   = 0x01,
        TMC_STATUS_SUCCESS                   = 0x01,
        TMC_STATUS_PENDING                   = 0x02,
        TMC_STATUS_PENDING                   = 0x02,
 
 
        /* USB488 defined USBTMC status values */
        /* USB488 defined USBTMC status values */
        TMC_STATUS_INTERRUPT_IN_BUSY         = 0x20,
        TMC_STATUS_INTERRUPT_IN_BUSY         = 0x20,
 
 
        TMC_STATUS_FAILED                    = 0x80,
        TMC_STATUS_FAILED                    = 0x80,
        TMC_STATUS_TRANSFER_NOT_IN_PROGRESS  = 0x81,
        TMC_STATUS_TRANSFER_NOT_IN_PROGRESS  = 0x81,
        TMC_STATUS_SPLIT_NOT_IN_PROGRESS     = 0x82,
        TMC_STATUS_SPLIT_NOT_IN_PROGRESS     = 0x82,
        TMC_STATUS_SPLIT_IN_PROGRESS         = 0x83,
        TMC_STATUS_SPLIT_IN_PROGRESS         = 0x83,
} TMC_Status;
} TMC_Status;
 
 
/* defines for the device capablilities, Ref.: Table 37 and Table 8 USB488 */
/* defines for the device capablilities, Ref.: Table 37 and Table 8 USB488 */
#define HAS_INDICATOR_PULSE 0x04
#define HAS_INDICATOR_PULSE 0x04
#define TALK_ONLY       0x02
#define TALK_ONLY       0x02
#define LISTEN_ONLY     0x01
#define LISTEN_ONLY     0x01
#define TERMCHAR_BULKIN 0x01
#define TERMCHAR_BULKIN 0x01
#define IS_488_2        0x04
#define IS_488_2        0x04
#define ACCEPTS_LOCAL_LOCKOUT 0x02
#define ACCEPTS_LOCAL_LOCKOUT 0x02
#define TRIGGER         0x01
#define TRIGGER         0x01
#define SCPI_COMPILIANT 0x08
#define SCPI_COMPILIANT 0x08
#define SR1_CAPABLE     0x04
#define SR1_CAPABLE     0x04
#define RL1_CAPABLE     0x02
#define RL1_CAPABLE     0x02
#define DT1_CAPABLE     0x01
#define DT1_CAPABLE     0x01
 
 
/** \brief Structure to handle get_capabilities command.
/** \brief Structure to handle get_capabilities command.
 *
 *
 *  contains all required parameters for a correct device specification */
 *  contains all required parameters for a correct device specification */
typedef struct {
typedef struct {
  uint8_t USBTMC_status;
  uint8_t USBTMC_status;
  uint8_t reserved0;
  uint8_t reserved0;
  uint8_t bcdUSBTMC_lsb;
  uint8_t bcdUSBTMC_lsb;
  uint8_t bcdUSBTMC_msb;
  uint8_t bcdUSBTMC_msb;
  uint8_t TMCInterface;
  uint8_t TMCInterface;
  uint8_t TMCDevice;
  uint8_t TMCDevice;
  uint8_t reserved1[6];
  uint8_t reserved1[6];
  /* place here USB488 subclass capabilities */
  /* place here USB488 subclass capabilities */
  uint8_t bcdUSB488_lsb;
  uint8_t bcdUSB488_lsb;
  uint8_t bcdUSB488_msb;
  uint8_t bcdUSB488_msb;
  uint8_t USB488Interface;
  uint8_t USB488Interface;
  uint8_t USB488Device;
  uint8_t USB488Device;
  uint8_t reserved2[8];
  uint8_t reserved2[8];
} USB_TMC_Capabilities;
} USB_TMC_Capabilities;
 
 
/* Structure to handle Bulk-OUT Header for a DEV_DEP_MSG
/* Structure to handle Bulk-OUT Header for a DEV_DEP_MSG
 *
 *
 * Ref.: Table 3 or Bulk-IN Header for a DEV_DEP_MSG, Ref.: Table 9 */
 * Ref.: Table 3 or Bulk-IN Header for a DEV_DEP_MSG, Ref.: Table 9 */
typedef struct
typedef struct
{
{
        uint32_t TransferSize;
        uint32_t TransferSize;
        int8_t   bmTransferAttributes;
        int8_t   bmTransferAttributes;
        int8_t   Reserved[3];
        int8_t   Reserved[3];
} DEV_DEP_MSG_OUT_Header, /**< \brief Bulk-OUT Header for a DEV_DEP_MSG, Ref.: Table 3 */
} DEV_DEP_MSG_OUT_Header, /**< Bulk-OUT Header for a DEV_DEP_MSG,
  DEV_DEP_MSG_IN_Header;  /**< \brief Bulk-IN Header for a DEV_DEP_MSG, Ref.: Table 9 */
                            Ref.: Table 3 */
 
  DEV_DEP_MSG_IN_Header;  /**< Bulk-IN Header for a DEV_DEP_MSG,
 
                             Ref.: Table 9 */
 
 
/** \brief Structure to handle USBTMC device dependent message IN requests.
/** \brief Structure to handle USBTMC device dependent message IN requests.
 *
 *
 *  Ref.: Table 4 */
 *  Ref.: Table 4 */
typedef struct
typedef struct
{
{
        uint32_t TransferSize;
        uint32_t TransferSize;
        int8_t   bmTransferAttributes;
        int8_t   bmTransferAttributes;
        int8_t   TermChar;
        int8_t   TermChar;
        int8_t   Reserved[2];
        int8_t   Reserved[2];
} REQUEST_DEV_DEP_MSG_IN_Header; /* Ref.: Table 4 */
} REQUEST_DEV_DEP_MSG_IN_Header; /* Ref.: Table 4 */
 
 
/* \brief structure to handle vendor specific IN/OUT or REQUESTS according
/* \brief structure to handle vendor specific IN/OUT or REQUESTS according
 *  to USBTMC */
 *  to USBTMC */
typedef struct
typedef struct
{
{
        uint32_t TransferSize;
        uint32_t TransferSize;
        int8_t   Reserved[4];
        int8_t   Reserved[4];
} VENDOR_SPECIFIC_OUT_Header, /**< \brief structure to handle vendor specific
} VENDOR_SPECIFIC_OUT_Header, /**< structure to handle vendor specific
                               *IN/OUT or REQUESTS according to Ref.: Table 5 */
                               *IN/OUT or REQUESTS according to Ref.: Table 5 */
  REQUEST_VENDOR_SPECIFIC_IN_Header, /**< \brief structure to handle vendor
  REQUEST_VENDOR_SPECIFIC_IN_Header, /**< structure to handle vendor
                                      * specific IN/OUT or REQUESTS according
                                      * specific IN/OUT or REQUESTS according
                                      * Ref.: Table 6 */
                                      * Ref.: Table 6 */
  VENDOR_SPECIFIC_IN_Header; /**< \brief structure to handle vendor specific
  VENDOR_SPECIFIC_IN_Header; /**< structure to handle vendor specific
                              * IN/OUT or REQUESTS according Ref.: Table 10 */
                              * IN/OUT or REQUESTS according Ref.: Table 10 */
 
 
/** \brief general Header structure for USBTMC bulk messages. The MsgID value
/** \brief general Header structure for USBTMC bulk messages. The MsgID value
 *  determines the type of the msg_specific part of these structure */
 *  determines the type of the msg_specific part of these structure */
typedef struct _tHeader
typedef struct _tHeader
{
{
        int8_t MsgID; /**< The MsgID value determines the type of the
        int8_t MsgID; /**< The MsgID value determines the type of the
                       * msg_specific part of these structure */
                       * msg_specific part of these structure */
        int8_t bTag;
        int8_t bTag;
        int8_t bTagInverse;
        int8_t bTagInverse;
        int8_t Reserved;
        int8_t Reserved;
        int8_t msg_specific[8];
        int8_t msg_specific[8];
 
 
} BulkOUT_Header, /**< \brief According to USBTMC Ref.: Table 1 */
} BulkOUT_Header, /**< \brief According to USBTMC Ref.: Table 1 */
  BulkIN_Header,  /**< \brief According to USBTMC Ref.: Table 8 */
  BulkIN_Header,  /**< \brief According to USBTMC Ref.: Table 8 */
  tHeader; /**< \brief general Header structure for USBTMC bulk messages. */
  tHeader; /**< \brief general Header structure for USBTMC bulk messages. */
 
 
 
 
/*****************************************************************************/
/*****************************************************************************/
/* IEEE488 related stuff */
/* IEEE488 related stuff */
 
 
#define bmPOWER_ON                0x80
#define bmPOWER_ON                0x80
#define bmUSER_REQUEST            0x40
#define bmUSER_REQUEST            0x40
#define bmCOMMAND_ERROR           0x20
#define bmCOMMAND_ERROR           0x20
#define bmEXECUTION_ERROR         0x10
#define bmEXECUTION_ERROR         0x10
#define bmDEVICEDEPENDENT_ERROR   0x08
#define bmDEVICEDEPENDENT_ERROR   0x08
#define bmQUERY_ERROR             0x04
#define bmQUERY_ERROR             0x04
#define bmREQUEST_CONTROL         0x02
#define bmREQUEST_CONTROL         0x02
#define bmOPERATION_COMPLETE      0x01
#define bmOPERATION_COMPLETE      0x01
 
 
/** \brief struct that contains all registers needed for the IEEE488.2
/** \brief struct that contains all registers needed for the IEEE488.2
 *  compiliant status reporting */
 *  compiliant status reporting */
typedef struct {
typedef struct {
        uint8_t EventStatusRegister;
        uint8_t EventStatusRegister;
        uint8_t EventStatusEnable;
        uint8_t EventStatusEnable;
        uint8_t StatusByteRegister;
        uint8_t StatusByteRegister;
        uint8_t ServiceRequestEnable;
        uint8_t ServiceRequestEnable;
        uint8_t OPC_Received;
        uint8_t OPC_Received;
} IEEE488_status_registers;
} IEEE488_status_registers;
 
 
 
 
/*****************************************************************************/
/*****************************************************************************/
/* internal definitions and typedef's needed for this implementation */
/* internal definitions and typedef's needed for this implementation */
 
 
#define NEWTRANSFER 1
#define NEWTRANSFER 1
 
 
/** \brief Internal state of tmc system.
/** \brief Internal state of tmc system.
 *
 *
 *  used by this implementation, no reference in standard */
 *  used by this implementation, no reference in standard */
typedef enum {
typedef enum {
        TMC_STATE_IDLE = 0x01,
        TMC_STATE_IDLE = 0x01,
        TMC_STATE_OUT_TRANSFER = 0x02,
        TMC_STATE_OUT_TRANSFER = 0x02,
        TMC_STATE_IN_TRANSFER = 0x03,
        TMC_STATE_IN_TRANSFER = 0x03,
        TMC_STATE_ABORTING_OUT = 0x04,
        TMC_STATE_ABORTING_OUT = 0x04,
        TMC_STATE_ABORTING_IN = 0x05,
        TMC_STATE_ABORTING_IN = 0x05,
        TMC_STATE_HALT = 0x06,
        TMC_STATE_HALT = 0x06,
} TMC_State;
} TMC_State;
 
 
/** \brief struct to hold all usb tmc transfer relevant information */
/** \brief struct to hold all usb tmc transfer relevant information */
typedef struct {
typedef struct {
  uint8_t bTag; /**< contains the bTag value of the currently active transfer */
  uint8_t bTag; /**< contains the bTag value of the currently active transfer */
  uint32_t transfer_size;
  uint32_t transfer_size;
  uint8_t new_transfer; /**< flag to signal the start of a new transfer, else 0 */
  uint8_t new_transfer; /**< flag to signal the start of a new transfer,
  uint32_t nbytes_rxd; /**< contains the number of bytes received in active tmc OUT transfer */
                           else 0 */
  uint32_t nbytes_txd; /**< contains the number of bytes transmitted in active tmc IN transfer */
  uint32_t nbytes_rxd; /**< contains the number of bytes received in active
 
                          tmc OUT transfer */
 
  uint32_t nbytes_txd; /**< contains the number of bytes transmitted in active
 
                          tmc IN transfer */
 
 
} TMC_Transfer_Info;
} TMC_Transfer_Info;
 
 
 
 
/** \brief response queue to hold the data for requests */
/** \brief response queue to hold the data for requests */
typedef struct {
typedef struct {
  unsigned char buf[TMC_RESPONSE_QUEUE_LENGTH]; /**< message buffer */
  unsigned char buf[TMC_RESPONSE_QUEUE_LENGTH]; /**< message buffer */
  uint16_t length;  /**< length of message. is 0 when no message is available */
  uint16_t length;  /**< length of message. is 0 when no message is available */
} TMC_Response_Queue;
} TMC_Response_Queue;
 
 
 
 
/* Global variables */
/* Global variables */
extern volatile static TMC_Status usb_tmc_status;       /**< Global variable contains the status of the last tmc operation. normally USB_TMC_SUCCESS */
extern volatile static TMC_Status usb_tmc_status;       /**< Global variable
extern volatile TMC_State usb_tmc_state;         /**< Global variable contains the state of the tmc system. Example USB_TMC_IDLE or USB_TMC_IN_TRANSFER */
contains the status of the last tmc operation. normally USB_TMC_SUCCESS */
extern volatile idata TMC_Transfer_Info usb_tmc_transfer; /** Global struct to hold all usb tmc transfer relevant information */
extern volatile TMC_State usb_tmc_state;         /**< Global variable contains
extern volatile idata IEEE488_status_registers ieee488_status;   /**< Struct that contains all status and enable registers for the IEEE488 status reporting capabilities */
the state of the tmc system. Example USB_TMC_IDLE or USB_TMC_IN_TRANSFER */
 
extern volatile idata TMC_Transfer_Info usb_tmc_transfer; /**< Global struct
 
to hold all usb tmc transfer relevant information */
 
extern volatile idata IEEE488_status_registers ieee488_status;   /**< Struct
 
that contains all status and enable registers for the IEEE488 status reporting
 
capabilities */
 
 
 
 
/** Makro to check if this setup package is a USBTMC request */
/** Makro to check if this setup package is a USBTMC request */
#define usb_tmc_request() ((wIndexL == USB_TMC_INTERFACE && \
#define usb_tmc_request() ((wIndexL == USB_TMC_INTERFACE && \
                            (bRequestType & bmRT_RECIP_INTERFACE) == bmRT_RECIP_INTERFACE) \
                            (bRequestType & bmRT_RECIP_INTERFACE) == bmRT_RECIP_INTERFACE) \
                           ||                                           \
                           ||                                           \
                           (wIndexL == USB_TMC_EP_OUT && \
                           (wIndexL == USB_TMC_EP_OUT && \
                            (bRequestType & bmRT_RECIP_ENDPOINT) == bmRT_RECIP_ENDPOINT) \
                            (bRequestType & bmRT_RECIP_ENDPOINT) == bmRT_RECIP_ENDPOINT) \
                           ||                                           \
                           ||                                           \
                           (wIndexL == (bmRT_DIR_IN | USB_TMC_EP_IN) && \
                           (wIndexL == (bmRT_DIR_IN | USB_TMC_EP_IN) && \
                            (bRequestType & bmRT_RECIP_ENDPOINT) == bmRT_RECIP_ENDPOINT) \
                            (bRequestType & bmRT_RECIP_ENDPOINT) == bmRT_RECIP_ENDPOINT) \
                          )
                          )
 
 
/** \brief general function to handle the TMC requests.
/** \brief general function to handle the TMC requests.
 *
 *
 *  Parses the TMC header to provide needed information to the
 *  Parses the TMC header to provide needed information to the
 *  following message parser.
 *  following message parser.
 *  \return returns non-zero if it handled the command successfully.
 *  \return returns non-zero if it handled the command successfully.
 */
 */
uint8_t usb_handle_tmc_packet (void);
uint8_t usb_handle_tmc_packet (void);
 
 
 
 
/** \brief clears all global variables to known states. sets the POWER_ON bit */
/** \brief clears all global variables to known states. sets the POWER_ON bit */
void init_usb_tmc();
void init_usb_tmc();
 
 
/** set the mav bit (Message available or "Queue not empty") in the IEEE488 status structure */
/** set the mav bit (Message available or "Queue not empty") in the IEEE488
 
    status structure */
#define IEEE488_set_mav() (ieee488_status.StatusByteRegister |= 0x10)
#define IEEE488_set_mav() (ieee488_status.StatusByteRegister |= 0x10)
 
 
/** clear the mav bit (Message available or "Queue not empty") in the IEEE488 status structure */
/** clear the mav bit (Message available or "Queue not empty") in the IEEE488
 
    status structure */
#define IEEE488_clear_mav() (ieee488_status.StatusByteRegister &= 0xEF)
#define IEEE488_clear_mav() (ieee488_status.StatusByteRegister &= 0xEF)
 
 
/** \brief evalutates the status IEEE488 status byte. represents the current
/** \brief evalutates the status IEEE488 status byte. represents the current
 *         device state
 *         device state
 *
 *
 * executes the process to evaluate the current state of the status byte
 * executes the process to evaluate the current state of the status byte
 * according to the IEEE488.2 standard status reporting capabilities.
 * according to the IEEE488.2 standard status reporting capabilities.
 * Reference: IEC60488-2:2004 figure 4-1
 * Reference: IEC60488-2:2004 figure 4-1
 *
 *
 * \param[in] *status pointer to a IEEE488_status_registers struct.
 * \param[in] *status pointer to a IEEE488_status_registers struct.
 *            Status byte in the struct is updated
 *            Status byte in the struct is updated
 * \return return value is the current value of the status byte
 * \return return value is the current value of the status byte
 */
 */
uint8_t IEEE488_status_query(idata IEEE488_status_registers *status);
uint8_t IEEE488_status_query(idata IEEE488_status_registers *status);
 
 
#endif
#endif /* _USBTMC_H_ */
 
 
 No newline at end of file
 No newline at end of file

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.