| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- #ifndef _USBTMC_MAIN_H
- #define _USBTMC_MAIN_H
- #include "types.h"
- #include "queue.h"
- #define USB_EP_LOG_ADDRESS_INT_IN ((TENDPOINT_LOG_ADDRESS)(0x01 | (1<<7)))
- #define USB_EP_LOG_ADDRESS_BULK_IN ((TENDPOINT_LOG_ADDRESS)(0x02 | (1<<7)))
- #define USB_EP_LOG_ADDRESS_BULK_OUT ((TENDPOINT_LOG_ADDRESS)(0x02 | (0<<7)))
- #define USB_EP_PHY_ADDRESS_BULK_IN ((TENDPOINT_PHY_ADDRESS)(0x05 ))
- #define USB_EP_PHY_ADDRESS_BULK_OUT ((TENDPOINT_PHY_ADDRESS)(0x04 ))
- #define USB_EP_PHY_ADDRESS_INT_IN ((TENDPOINT_PHY_ADDRESS)(0x03 ))
- #define MAX_INBUFFER_SIZE 1536
- //#defineUSB_MAX_PACKET0 64 //-- 8,16,32,64 // for USB2.0 can be only 64 !!!
- #define USB_MAX_PACKET1 2 // -- 1 to 64, âûáåðåì 2
- #define USB_MAX_PACKET2 64 //-- Ep4,Ep5 buffer size -- 64
- static inline void USB_INTERRUPT_ENABLE_BULKOUT()
- {
- rUSBEpIntEn |= (1<<(USB_EP_PHY_ADDRESS_BULK_OUT));
- }
- static inline void USB_INTERRUPT_DISABLE_BULKOUT()
- {
- rUSBEpIntEn &= (~(1<<(USB_EP_PHY_ADDRESS_BULK_OUT)));
- }
-
- static inline void USB_INTERRUPT_ENABLE_BULKIN()
- {
- rUSBEpIntEn |= (1<<(USB_EP_PHY_ADDRESS_BULK_IN));
- }
- static inline void USB_INTERRUPT_DISABLE_BULKIN()
- {
- rUSBEpIntEn &= (~(1<<(USB_EP_PHY_ADDRESS_BULK_IN)));
- }
- /* moved to "endpoints.c"
- static inline void USB_INTERRUPT_CLEAR_BULKIN()
- {
- // rUSBEpIntClr = 1<<(USB_EP_PHY_ADDRESS_BULK_IN);
- USB_EpIntrClr( USB_EP_PHY_ADDRESS_BULK_IN );
- }
- static inline void USB_INTERRUPT_CLEAR_BULKOUT()
- {
- // rUSBEpIntClr = 1<<(USB_EP_PHY_ADDRESS_BULK_OUT);
- USB_EpIntrClr( USB_EP_PHY_ADDRESS_BULK_OUT );
- }
- static inline void USB_INTERRUPT_CLEAR_INTIN()
- {
- //rUSBEpIntClr = 1<<(USB_EP_PHY_ADDRESS_INT_IN);
- USB_EpIntrClr( USB_EP_PHY_ADDRESS_INT_IN );
- }
- */
- /*
- #define USB_INTERRUPT_ENABLE_NAK() ?(usb_lpc_cmd_write(CMD_DEV_SET_MODE,(1<<3)|(1<<5)|(1<<6)))
- #define USB_INTERRUPT_DISABLE_NAK() ?(usb_lpc_cmd_write(CMD_DEV_SET_MODE,(1<<6)))
- */
- /*
- #define USB_INTERRUPT_DISABLE_INT_NAK() (usb_lpc_cmd_write(CMD_DEV_SET_MODE,(1<<3)|(1<<5)|(1<<6))) // setup NAK for BULK only
- */
- /*
- #define USB_INTERRUPT_ENABLE_BULKIN_NAK() ?(usb_lpc_cmd_write(CMD_DEV_SET_MODE,(1<<5)|(1<<6)))
- #define USB_INTERRUPT_DISABLE_BULKIN_NAK() ?(usb_lpc_cmd_write(CMD_DEV_SET_MODE,(1<<6)))
- #define USB_INTERRUPT_ENABLE_INT_NAK() ?(usb_lpc_cmd_write(CMD_DEV_SET_MODE,(1<<3)|(1<<5)|(1<<6)))
- #define USB_INTERRUPT_DISABLE_INT_NAK() ?(usb_lpc_cmd_write(CMD_DEV_SET_MODE,(1<<5)|(1<<6))) // setup NAK for BULK only, fixed 30/08/18
- */
- void USB_INTERRUPT_DISABLE_NAK(); // fixed 30/08/18, see "usb_hardware.c"
- void USB_INTERRUPT_ENABLE_BULKIN_NAK(); // fixed 30/08/18, see "usb_hardware.c"
- void USB_INTERRUPT_DISABLE_BULKIN_NAK(); // fixed 30/08/18, see "usb_hardware.c"
- void USB_INTERRUPT_ENABLE_BULKOUT_NAK(); // added 30/08/18, see "usb_hardware.c"
- void USB_INTERRUPT_DISABLE_BULKOUT_NAK(); // added 30/08/18, see "usb_hardware.c"
- void USB_INTERRUPT_ENABLE_INTIN_NAK(); // fixed 30/08/18, see "usb_hardware.c"
- void USB_INTERRUPT_DISABLE_INTIN_NAK(); // fixed 30/08/18, see "usb_hardware.c"
- #include "critical.h"
- struct __sScpiCommand; // forward declaration
- typedef struct _USB_BULKMESSAGE_STATUS
- {
- BOOL bEOM; // see USBTMC spec, rev 1.0, 2003, page 7, table 3, description of bmTransferAttributes.D0
- BYTE MsgID; // see usbtmc.h
- BYTE bTag; // see usbtmc.h
- //----------------------------------------
- BYTE bTagLast;
- BOOL OUTTransferInProgress; // ïîêàçûâàåò, ÷òî ïðîèñõîäèò ïåðåäà÷à äàííûõ ñ êåøèðîâàíèåì. íóæíî äëÿ îáðàáîòêè çàïðîñà INITIATE_ABORT_BULK_OUT
- BYTE bBulkHeaderRecieved; // true = ïðèíÿò çàãîëîâîê BULK-OUT
- DWORD nBytesRecieved; // êîëè÷åñòâî áàéò óæå ïðèíÿòûõ â ýòîì ñîîáùåíèè
- BYTE * pData; // óêàçàòåëü íà áóôåð, ñîäåðæàùèé ïðèíÿòîå ñîîáùåíèå (ïîëíîñòüþ ïðèíÿòîå)
- int OutTransferSize; // êîëè÷åñòâî áàéò ïåðåäàâàåìûõ â ýòîì ñîîáùåíèè, áåðåòñÿ èç çàãîëîâêà
- }
- USB_BULKMESSAGE_STATUS;
- typedef struct _USB_BULKRESPOND_STATUS
- {
- BOOL bEOM; // see USBTMC spec, rev 1.0, 2003, page 7, table 3, description of bmTransferAttributes.D0
- BYTE MsgID; // see usbtmc.h
- BYTE bTag; // see usbtmc.h
- //----------------------------------------
- BOOL INTransferInProgress; // ïîêàçûâàåò, ÷òî ïðîèñõîäèò ïåðåäà÷à äàííûõ îò Device ê Host è îíà íå çàâåðøåíà
- BOOL INTransferTerminating; // ïîêàçûâàåò, ÷òî Bulk-In ïåðåäà÷à íàõîäèòñÿ â ïðîöåññå çàâåðøåíèÿ (ïðèøåë ïàêåò INITIATE_ABORT_BULK_IN)
- DWORD nBytesSent; // êîëè÷åñòâî áàéò, óæå îòîñëàíûõ â ýòîì ñîîáùåíèè (äëÿ ïåðåäà÷ Bulk-IN)
-
- int InTransferSize; // êîëè÷åñòâî áàéò, êîòîðûå õîñò çàïðîñèë èç óñòðîéñòâà, áåðåòñÿ èç çàãîëîâêà
- unsigned int dwDeviceOut; // êîëè÷åñòâî áàéò, êîòîðîå ñîáèðàåòñÿ ïåðåäàòü óñòðîéñòâî
- int RespondBufferSize; // äîñòóïíîå êîëè÷åñòâî áàéò â âûõîäíîì áóôåðå óñòðîéñòà. èíèöèàëèçèðóåòñÿ â usbtmc_DEV_DEP_MSG_OUT()
- BOOL bIsLastTransfer; // TRUE åñëè ýòî ïîñëåäíÿÿ Transfer â ýòîì USBTMC-message
-
- BOOL bEndOfMessage; // 27/08/18
- }
- USB_BULKRESPOND_STATUS;
- typedef struct _USB_USBTMC_GPIBEMULATION_STATEMACHINE
- {
- //--------------------
- BYTE bTag_Interrupt;
- //---------------------
- BYTE STB;
- BYTE SRE;
- // -----------------
- BYTE ESR;
- BYTE ESE;
- // -----------------
- QUEUE qErrorQueue;
- QUEUE qErrorQueue_backup;
-
- }
- USB_USBTMC_GPIBEMULATION_STATEMACHINE;
- typedef struct _GPIB_COMMAND_TREE
- {
- struct __sScpiCommand * gpib_root; // root êîììàíäà äðåâà GPIB êîììàíä
- struct __sScpiCommand * gpib_search; // óêàçàòåëü íà íîä ãäå èùåì
- struct __sScpiCommand * gpib_owner; // óêàçàòåëü íà íîä-âëàäåëüöà òåêóùåé êîììàíäû
- char * sgpib_current; // òåêóùàÿ âûïîëíÿåìàÿ êîììàíäà
- BYTE * pData; // óêàçàòåëü íà áóôåð, êóäà ñêëàäûâàòü îòâåòû
-
- USB_USBTMC_GPIBEMULATION_STATEMACHINE StateMachine;
- int cRequestCountSupport;
- }
- GPIB_COMMAND_TREE;
-
- typedef struct _USB_USBTMC_CLASS_STATUS
- {
-
- BYTE USBTMC_status; // STATUS_SUCCESS, STATUS_PENDING, ...
- BOOL USBTMC_InitiateRecieved; // true/false
-
- // volatile FLAG_PROTECTED USBTMC_RequestPending; // õîñò îæèäàåò îòâåòà // #!#
- }
- USB_USBTMC_CLASS_STATUS;
- typedef struct _USB_TRANSFER_CONTEXT
- {
- void * LastFunction;
- QUEUE Context;
- BOOL bEnable;
- }
- USB_TRANSFER_CONTEXT;
- #endif
|