Merge PCB updates
[SCSI2SD.git] / software / SCSI2SD / v4 / SCSI2SD.cydsn / Generated_Source / PSoC5 / USBFS_midi.h
1 /*******************************************************************************
2 * File Name: USBFS_midi.h
3 * Version 2.60
4 *
5 * Description:
6 *  Header File for the USBFS MIDI module.
7 *  Contains prototypes and constant values.
8 *
9 ********************************************************************************
10 * Copyright 2008-2013, Cypress Semiconductor Corporation.  All rights reserved.
11 * You may use this file only in accordance with the license, terms, conditions,
12 * disclaimers, and limitations in the end user license agreement accompanying
13 * the software package with which this file was provided.
14 *******************************************************************************/
15
16 #if !defined(CY_USBFS_USBFS_midi_H)
17 #define CY_USBFS_USBFS_midi_H
18
19 #include "cytypes.h"
20 #include "USBFS.h"
21
22
23 /***************************************
24 *    Data Struct Definition
25 ***************************************/
26
27 /* The following structure is used to hold status information for
28    building and parsing incoming MIDI messages. */
29 typedef struct
30 {
31     uint8    length;        /* expected length */
32     uint8    count;         /* current byte count */
33     uint8    size;          /* complete size */
34     uint8    runstat;       /* running status */
35     uint8    msgBuff[4];    /* message buffer */
36 } USBFS_MIDI_RX_STATUS;
37
38
39 /***************************************
40 *           MIDI Constants.
41 ***************************************/
42
43 #define USBFS_ONE_EXT_INTRF              (0x01u)
44 #define USBFS_TWO_EXT_INTRF              (0x02u)
45
46 /* Flag definitions for use with MIDI device inquiry */
47 #define USBFS_INQ_SYSEX_FLAG             (0x01u)
48 #define USBFS_INQ_IDENTITY_REQ_FLAG      (0x02u)
49
50 /* USB-MIDI Code Index Number Classifications (MIDI Table 4-1) */
51 #define USBFS_CIN_MASK                   (0x0Fu)
52 #define USBFS_RESERVED0                  (0x00u)
53 #define USBFS_RESERVED1                  (0x01u)
54 #define USBFS_2BYTE_COMMON               (0x02u)
55 #define USBFS_3BYTE_COMMON               (0x03u)
56 #define USBFS_SYSEX                      (0x04u)
57 #define USBFS_1BYTE_COMMON               (0x05u)
58 #define USBFS_SYSEX_ENDS_WITH1           (0x05u)
59 #define USBFS_SYSEX_ENDS_WITH2           (0x06u)
60 #define USBFS_SYSEX_ENDS_WITH3           (0x07u)
61 #define USBFS_NOTE_OFF                   (0x08u)
62 #define USBFS_NOTE_ON                    (0x09u)
63 #define USBFS_POLY_KEY_PRESSURE          (0x0Au)
64 #define USBFS_CONTROL_CHANGE             (0x0Bu)
65 #define USBFS_PROGRAM_CHANGE             (0x0Cu)
66 #define USBFS_CHANNEL_PRESSURE           (0x0Du)
67 #define USBFS_PITCH_BEND_CHANGE          (0x0Eu)
68 #define USBFS_SINGLE_BYTE                (0x0Fu)
69
70 #define USBFS_CABLE_MASK                 (0xF0u)
71 #define USBFS_MIDI_CABLE_00              (0x00u)
72 #define USBFS_MIDI_CABLE_01              (0x10u)
73
74 #define USBFS_EVENT_BYTE0                (0x00u)
75 #define USBFS_EVENT_BYTE1                (0x01u)
76 #define USBFS_EVENT_BYTE2                (0x02u)
77 #define USBFS_EVENT_BYTE3                (0x03u)
78 #define USBFS_EVENT_LENGTH               (0x04u)
79
80 #define USBFS_MIDI_STATUS_BYTE_MASK      (0x80u)
81 #define USBFS_MIDI_STATUS_MASK           (0xF0u)
82 #define USBFS_MIDI_SINGLE_BYTE_MASK      (0x08u)
83 #define USBFS_MIDI_NOTE_OFF              (0x80u)
84 #define USBFS_MIDI_NOTE_ON               (0x90u)
85 #define USBFS_MIDI_POLY_KEY_PRESSURE     (0xA0u)
86 #define USBFS_MIDI_CONTROL_CHANGE        (0xB0u)
87 #define USBFS_MIDI_PROGRAM_CHANGE        (0xC0u)
88 #define USBFS_MIDI_CHANNEL_PRESSURE      (0xD0u)
89 #define USBFS_MIDI_PITCH_BEND_CHANGE     (0xE0u)
90 #define USBFS_MIDI_SYSEX                 (0xF0u)
91 #define USBFS_MIDI_EOSEX                 (0xF7u)
92 #define USBFS_MIDI_QFM                   (0xF1u)
93 #define USBFS_MIDI_SPP                   (0xF2u)
94 #define USBFS_MIDI_SONGSEL               (0xF3u)
95 #define USBFS_MIDI_TUNEREQ               (0xF6u)
96 #define USBFS_MIDI_ACTIVESENSE           (0xFEu)
97
98 /* MIDI Universal System Exclusive defines */
99 #define USBFS_MIDI_SYSEX_NON_REAL_TIME   (0x7Eu)
100 #define USBFS_MIDI_SYSEX_REALTIME        (0x7Fu)
101 /* ID of target device */
102 #define USBFS_MIDI_SYSEX_ID_ALL          (0x7Fu)
103 /* Sub-ID#1*/
104 #define USBFS_MIDI_SYSEX_GEN_INFORMATION (0x06u)
105 #define USBFS_MIDI_SYSEX_GEN_MESSAGE     (0x09u)
106 /* Sub-ID#2*/
107 #define USBFS_MIDI_SYSEX_IDENTITY_REQ    (0x01u)
108 #define USBFS_MIDI_SYSEX_IDENTITY_REPLY  (0x02u)
109 #define USBFS_MIDI_SYSEX_SYSTEM_ON       (0x01u)
110 #define USBFS_MIDI_SYSEX_SYSTEM_OFF      (0x02u)
111
112 #define USBFS_CUSTOM_UART_TX_PRIOR_NUM   (0x04u)
113 #define USBFS_CUSTOM_UART_RX_PRIOR_NUM   (0x02u)
114
115 #define USBFS_ISR_SERVICE_MIDI_OUT     \
116         ( (USBFS_ENABLE_MIDI_API != 0u) && \
117           (USBFS_MIDI_OUT_BUFF_SIZE > 0) && (USBFS_EP_MM == USBFS__EP_DMAAUTO) )
118 #define USBFS_ISR_SERVICE_MIDI_IN     \
119         ( (USBFS_ENABLE_MIDI_API != 0u) && (USBFS_MIDI_IN_BUFF_SIZE > 0) )
120
121 /***************************************
122 * External function references
123 ***************************************/
124
125 void USBFS_callbackLocalMidiEvent(uint8 cable, uint8 *midiMsg)
126                                                      ;
127
128
129 /***************************************
130 *    External references
131 ***************************************/
132
133 #if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)
134     #include "MIDI1_UART.h"
135 #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */
136 #if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)
137     #include "MIDI2_UART.h"
138 #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */
139 #if(USBFS_EP_MM != USBFS__EP_MANUAL)
140     #include <CyDmac.h>
141 #endif /* End USBFS_EP_MM */
142
143
144 /***************************************
145 *    Private function prototypes
146 ***************************************/
147
148 void USBFS_PrepareInBuffer(uint8 ic, const uint8 srcBuff[], uint8 eventLen, uint8 cable)
149                                                                  ;
150 #if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)
151     void USBFS_MIDI_Init(void) ;
152     uint8 USBFS_ProcessMidiIn(uint8 mData, USBFS_MIDI_RX_STATUS *rxStat)
153                                                                 ;
154     uint8 USBFS_MIDI1_GetEvent(void) ;
155     void USBFS_MIDI1_ProcessUsbOut(const uint8 epBuf[])
156                                                      ;
157
158     #if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)
159         uint8 USBFS_MIDI2_GetEvent(void) ;
160         void USBFS_MIDI2_ProcessUsbOut(const uint8 epBuf[])
161                                                     ;
162     #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */
163 #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */
164
165
166 /***************************************
167 * External data references
168 ***************************************/
169
170 #if defined(USBFS_ENABLE_MIDI_STREAMING)
171
172 #if (USBFS_MIDI_IN_BUFF_SIZE > 0)
173     #if (USBFS_MIDI_IN_BUFF_SIZE >= 256)
174         extern volatile uint16 USBFS_midiInPointer;                       /* Input endpoint buffer pointer */
175     #else
176         extern volatile uint8 USBFS_midiInPointer;                        /* Input endpoint buffer pointer */
177     #endif /* End USBFS_MIDI_IN_BUFF_SIZE >=256 */
178     extern volatile uint8 USBFS_midi_in_ep;                               /* Input endpoint number */
179     extern uint8 USBFS_midiInBuffer[USBFS_MIDI_IN_BUFF_SIZE];  /* Input endpoint buffer */
180 #endif /* USBFS_MIDI_IN_BUFF_SIZE > 0 */
181
182 #if (USBFS_MIDI_OUT_BUFF_SIZE > 0)
183     extern volatile uint8 USBFS_midi_out_ep;                               /* Output endpoint number */
184     extern uint8 USBFS_midiOutBuffer[USBFS_MIDI_OUT_BUFF_SIZE]; /* Output endpoint buffer */
185 #endif /* USBFS_MIDI_OUT_BUFF_SIZE > 0 */
186
187 #if (USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF)
188     extern volatile uint8 USBFS_MIDI1_InqFlags;                              /* Device inquiry flag */
189     #if (USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF)
190         extern volatile uint8 USBFS_MIDI2_InqFlags;                          /* Device inquiry flag */
191     #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_TWO_EXT_INTRF */
192 #endif /* End USBFS_MIDI_EXT_MODE >= USBFS_ONE_EXT_INTRF */
193
194 #endif /* USBFS_ENABLE_MIDI_STREAMING */
195
196
197 #endif /* End CY_USBFS_USBFS_midi_H */
198
199
200 /* [] END OF FILE */