# generated from XKB map th include common map 0x41e exclam 0x02 shift Thai_lakkhangyao 0x02 altgr plus 0x02 shift altgr at 0x03 shift slash 0x03 altgr Thai_leknung 0x03 shift altgr numbersign 0x04 shift minus 0x04 altgr Thai_leksong 0x04 shift altgr dollar 0x05 shift Thai_phosamphao 0x05 altgr Thai_leksam 0x05 shift altgr percent 0x06 shift Thai_thothung 0x06 altgr Thai_leksi 0x06 shift altgr asciicircum 0x07 shift Thai_sarau 0x07 altgr Thai_sarauu 0x07 shift altgr ampersand 0x08 shift Thai_saraue 0x08 altgr Thai_baht 0x08 shift altgr asterisk 0x09 shift Thai_khokhwai 0x09 altgr Thai_lekha 0x09 shift altgr parenleft 0x0a shift Thai_totao 0x0a altgr Thai_lekhok 0x0a shift altgr parenright 0x0b shift Thai_chochan 0x0b altgr Thai_lekchet 0x0b shift altgr minus 0x0c underscore 0x0c shift Thai_khokhai 0x0c altgr Thai_lekpaet 0x0c shift altgr equal 0x0d plus 0x0d shift Thai_chochang 0x0d altgr Thai_lekkao 0x0d shift altgr Thai_maiyamok 0x10 altgr Thai_leksun 0x10 shift altgr Thai_saraaimaimalai 0x11 altgr quotedbl 0x11 shift altgr Thai_saraam 0x12 altgr Thai_dochada 0x12 shift altgr Thai_phophan 0x13 altgr Thai_thonangmontho 0x13 shift altgr Thai_saraa 0x14 altgr Thai_thothong 0x14 shift altgr Thai_maihanakat 0x15 altgr Thai_nikhahit 0x15 shift altgr Thai_saraii 0x16 altgr Thai_maitri 0x16 shift altgr Thai_rorua 0x17 altgr Thai_nonen 0x17 shift altgr Thai_nonu 0x18 altgr Thai_paiyannoi 0x18 shift altgr Thai_yoyak 0x19 altgr Thai_yoying 0x19 shift altgr bracketleft 0x1a braceleft 0x1a shift Thai_bobaimai 0x1a altgr Thai_thothan 0x1a shift altgr bracketright 0x1b braceright 0x1b shift Thai_loling 0x1b altgr comma 0x1b shift altgr Thai_fofan 0x1e altgr Thai_ru 0x1e shift altgr Thai_hohip 0x1f altgr Thai_khorakhang 0x1f shift altgr Thai_kokai 0x20 altgr Thai_topatak 0x20 shift altgr Thai_dodek 0x21 altgr Thai_sarao 0x21 shift altgr Thai_sarae 0x22 altgr Thai_chochoe 0x22 shift altgr Thai_maitho 0x23 altgr Thai_maitaikhu 0x23 shift altgr Thai_maiek 0x24 altgr Thai_maichattawa 0x24 shift altgr Thai_saraaa 0x25 altgr Thai_sorusi 0x25 shift altgr Thai_sosua 0x26 altgr Thai_sosala 0x26 shift altgr semicolon 0x27 colon 0x27 shift Thai_wowaen 0x27 altgr Thai_soso 0x27 shift altgr apostrophe 0x28 quotedbl 0x28 shift Thai_ngongu 0x28 altgr period 0x28 shift altgr grave 0x29 asciitilde 0x29 shift underscore 0x29 altgr percent 0x29 shift altgr ISO_First_Group 0x2a shift backslash 0x2b bar 0x2b shift Thai_khokhuat 0x2b altgr Thai_khokhon 0x2b shift altgr Thai_phophung 0x2c altgr parenleft 0x2c shift altgr Thai_popla 0x2d altgr parenright 0x2d shift altgr Thai_saraae 0x2e altgr Thai_choching 0x2e shift altgr Thai_oang 0x2f altgr Thai_honokhuk 0x2f shift altgr Thai_sarai 0x30 altgr Thai_phinthu 0x30 shift altgr Thai_sarauee 0x31 altgr Thai_thanthakhat 0x31 shift altgr Thai_thothahan 0x32 altgr question 0x32 shift altgr comma 0x33 less 0x33 shift Thai_moma 0x33 altgr Thai_thophuthao 0x33 shift altgr period 0x34 greater 0x34 shift Thai_saraaimaimuan 0x34 altgr Thai_lochula 0x34 shift altgr slash 0x35 question 0x35 shift Thai_fofa 0x35 altgr Thai_lu 0x35 shift altgr ISO_Last_Group 0x36 shift ects/MIDIToneGenerator?id=9b0a5486875089f64e21ef10a1c80503bed7bb80'>MIDIToneGenerator/Descriptors.h
blob: f973b4da786a6ccfad45ed775a69c807319b7f64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
/*
             LUFA Library
     Copyright (C) Dean Camera, 2017.

  dean [at] fourwalledcubicle [dot] com
           www.lufa-lib.org
*/

/*
  Copyright 2017  Dean Camera (dean [at] fourwalledcubicle [dot] com)

  Permission to use, copy, modify, distribute, and sell this
  software and its documentation for any purpose is hereby granted
  without fee, provided that the above copyright notice appear in
  all copies and that both that the copyright notice and this
  permission notice and warranty disclaimer appear in supporting
  documentation, and that the name of the author not be used in
  advertising or publicity pertaining to distribution of the
  software without specific, written prior permission.

  The author disclaims all warranties with regard to this
  software, including all implied warranties of merchantability
  and fitness.  In no event shall the author be liable for any
  special, indirect or consequential damages or any damages
  whatsoever resulting from loss of use, data or profits, whether
  in an action of contract, negligence or other tortious action,
  arising out of or in connection with the use or performance of
  this software.
*/

/** \file
 *
 *  Header file for Descriptors.c.
 */

#ifndef _DESCRIPTORS_H_
#define _DESCRIPTORS_H_

	/* Includes: */
		#include <LUFA/Drivers/USB/USB.h>

		#include <avr/pgmspace.h>

		#include "Config/AppConfig.h"

	/* Macros: */
		/** Endpoint address of the MIDI streaming data IN endpoint, for device-to-host data transfers. */
		#define MIDI_STREAM_IN_EPADDR       (ENDPOINT_DIR_IN  | 2)

		/** Endpoint address of the MIDI streaming data OUT endpoint, for host-to-device data transfers. */
		#define MIDI_STREAM_OUT_EPADDR      (ENDPOINT_DIR_OUT | 1)

		/** Endpoint size in bytes of the Audio isochronous streaming data IN and OUT endpoints. */
		#define MIDI_STREAM_EPSIZE          64

	/* Type Defines: */
		/** Type define for the device configuration descriptor structure. This must be defined in the
		 *  application code, as the configuration descriptor contains several sub-descriptors which
		 *  vary between devices, and which describe the device's usage to the host.
		 */
		typedef struct
		{
			USB_Descriptor_Configuration_Header_t     Config;

			// MIDI Audio Control Interface
			USB_Descriptor_Interface_t                Audio_ControlInterface;
			USB_Audio_Descriptor_Interface_AC_t       Audio_ControlInterface_SPC;

			// MIDI Audio Streaming Interface
			USB_Descriptor_Interface_t                Audio_StreamInterface;
			USB_MIDI_Descriptor_AudioInterface_AS_t   Audio_StreamInterface_SPC;
			USB_MIDI_Descriptor_InputJack_t           MIDI_In_Jack_Emb;
			USB_MIDI_Descriptor_InputJack_t           MIDI_In_Jack_Ext;
			USB_MIDI_Descriptor_OutputJack_t          MIDI_Out_Jack_Emb;
			USB_MIDI_Descriptor_OutputJack_t          MIDI_Out_Jack_Ext;
			USB_Audio_Descriptor_StreamEndpoint_Std_t MIDI_In_Jack_Endpoint;
			USB_MIDI_Descriptor_Jack_Endpoint_t       MIDI_In_Jack_Endpoint_SPC;
			USB_Audio_Descriptor_StreamEndpoint_Std_t MIDI_Out_Jack_Endpoint;
			USB_MIDI_Descriptor_Jack_Endpoint_t       MIDI_Out_Jack_Endpoint_SPC;
		} USB_Descriptor_Configuration_t;

		/** Enum for the device interface descriptor IDs within the device. Each interface descriptor
		 *  should have a unique ID index associated with it, which can be used to refer to the
		 *  interface from other descriptors.
		 */
		enum InterfaceDescriptors_t
		{
			INTERFACE_ID_AudioControl = 0, /**< Audio control interface descriptor ID */
			INTERFACE_ID_AudioStream  = 1, /**< Audio stream interface descriptor ID */
		};

		/** Enum for the device string descriptor IDs within the device. Each string descriptor should
		 *  have a unique ID index associated with it, which can be used to refer to the string from
		 *  other descriptors.
		 */
		enum StringDescriptors_t
		{
			STRING_ID_Language     = 0, /**< Supported Languages string descriptor ID (must be zero) */
			STRING_ID_Manufacturer = 1, /**< Manufacturer string ID */
			STRING_ID_Product      = 2, /**< Product string ID */
		};

	/* Function Prototypes: */
		uint16_t CALLBACK_USB_GetDescriptor(const uint16_t wValue,
		                                    const uint16_t wIndex,
		                                    const void** const DescriptorAddress)
		                                    ATTR_WARN_UNUSED_RESULT ATTR_NON_NULL_PTR_ARG(3);

#endif