Update all demos, projects and bootloaders to indent all function parameters, one...
[pub/lufa.git] / Demos / Device / Incomplete / Sideshow / Lib / SideshowCommands.h
1 /*
2 LUFA Library
3 Copyright (C) Dean Camera, 2010.
4
5 dean [at] fourwalledcubicle [dot] com
6 www.fourwalledcubicle.com
7 */
8
9 /*
10 Copyright 2010 Dean Camera (dean [at] fourwalledcubicle [dot] com)
11
12 Permission to use, copy, modify, distribute, and sell this
13 software and its documentation for any purpose is hereby granted
14 without fee, provided that the above copyright notice appear in
15 all copies and that both that the copyright notice and this
16 permission notice and warranty disclaimer appear in supporting
17 documentation, and that the name of the author not be used in
18 advertising or publicity pertaining to distribution of the
19 software without specific, written prior permission.
20
21 The author disclaim all warranties with regard to this
22 software, including all implied warranties of merchantability
23 and fitness. In no event shall the author be liable for any
24 special, indirect or consequential damages or any damages
25 whatsoever resulting from loss of use, data or profits, whether
26 in an action of contract, negligence or other tortious action,
27 arising out of or in connection with the use or performance of
28 this software.
29 */
30
31 #ifndef _SIDESHOW_COMMANDS_H_
32 #define _SIDESHOW_COMMANDS_H_
33
34 /* Includes: */
35 #include <avr/io.h>
36 #include <stdbool.h>
37 #include <string.h>
38
39 #include "Sideshow.h"
40 #include "SideshowCommon.h"
41 #include "SideshowApplications.h"
42 #include "SideshowContent.h"
43
44 /* Enumerations: */
45 enum SideShow_PropertyKey_Types_t
46 {
47 VT_EMPTY = 0,
48 VT_NULL = 1,
49 VT_I2 = 2,
50 VT_I4 = 3,
51 VT_R4 = 4,
52 VT_R8 = 5,
53 VT_CY = 6,
54 VT_DATE = 7,
55 VT_BSTR = 8,
56 VT_DISPATCH = 9,
57 VT_ERROR = 10,
58 VT_BOOL = 11,
59 VT_VARIANT = 12,
60 VT_UNKNOWN = 13,
61 VT_UI1 = 17,
62 VT_UI2 = 18,
63 VT_UI4 = 19,
64 VT_LPWSTR = 31,
65 };
66
67 enum SideShow_ScreenTypeText_t
68 {
69 ScreenBitmap = 0,
70 ScreenText = 1,
71 };
72
73 enum SideShow_ColorTypes_t
74 {
75 ColorDisplay = 0,
76 GrayscaleDisplay = 1,
77 BlackAndWhiteDisplay = 2,
78 };
79
80 enum SideShow_DeviceTypes_t
81 {
82 GenericDevice = 0,
83 CameraDevice = 1,
84 MediaPlayerDevice = 2,
85 PhoneDevice = 3,
86 VideoDevice = 4,
87 PIMDevice = 5,
88 AudioRecorderDevice = 6
89 };
90
91 /* Type Defines: */
92 typedef struct
93 {
94 GUID_t PropertyGUID;
95 uint32_t PropertyID;
96 } SideShow_PropertyKey_t;
97
98 typedef struct
99 {
100 uint32_t DataType;
101
102 union
103 {
104 void* DataPointer;
105 uint8_t Data8;
106 uint16_t Data16;
107 uint32_t Data32;
108 } Data;
109 } SideShow_PropertyData_t;
110
111 /* Macros: */
112 #define SIDESHOW_CMD_PING 0x001
113 #define SIDESHOW_CMD_SET_CURRENT_USER 0x100
114 #define SIDESHOW_CMD_GET_CURRENT_USER 0x101
115 #define SIDESHOW_CMD_GET_CAPABILITIES 0x103
116 #define SIDESHOW_CMD_GET_APPLICATION_ORDER 0x104
117 #define SIDESHOW_CMD_ADD_APPLICATION 0x10D
118 #define SIDESHOW_CMD_DELETE_APPLICATION 0x10E
119 #define SIDESHOW_CMD_DELETE_ALL_APPLICATIONS 0x10F
120 #define SIDESHOW_CMD_ADD_CONTENT 0x114
121 #define SIDESHOW_CMD_DELETE_CONTENT 0x115
122 #define SIDESHOW_CMD_DELETE_ALL_CONTENT 0x116
123 #define SIDESHOW_CMD_GET_SUPPORTED_ENDPOINTS 0x117
124 #define SIDESHOW_CMD_GET_DEVICE_NAME 0x500
125 #define SIDESHOW_CMD_GET_MANUFACTURER 0x501
126 #define SIDESHOW_CMD_SYNC 0x502
127
128 #define PROPERTY_SIDESHOW_DEVICEID 1
129 #define PROPERTY_SIDESHOW_SCREENTYPE 2
130 #define PROPERTY_SIDESHOW_SCREENWIDTH 3
131 #define PROPERTY_SIDESHOW_SCREENHEIGHT 4
132 #define PROPERTY_SIDESHOW_COLORDEPTH 5
133 #define PROPERTY_SIDESHOW_COLORTYPE 6
134 #define PROPERTY_SIDESHOW_DATACACHE 7
135 #define PROPERTY_SIDESHOW_SUPPORTEDLANGS 8
136 #define PROPERTY_SIDESHOW_CURRENTLANG 9
137 #define PROPERTY_SIDESHOW_SUPPORTEDTHEMES 10
138 #define PROPERTY_SIDESHOW_IMAGEFORMAT 14
139 #define PROPERTY_SIDESHOW_CLIENTWIDTH 15
140 #define PROPERTY_SIDESHOW_CLIENTHEIGHT 16
141 #define PROPERTY_SIDESHOW_DEVICEICON 17
142
143 #define PROPERTY_DEVICE_DEVICETYPE 15
144
145 /* Function Prototypes: */
146 void Sideshow_ProcessCommandPacket(void);
147
148 #if defined(INCLUDE_FROM_SIDESHOWCOMMANDS_H)
149 static void SideShow_Ping(SideShow_PacketHeader_t* const PacketHeader);
150 static void SideShow_Sync(SideShow_PacketHeader_t* const PacketHeader);
151 static void SideShow_GetCurrentUser(SideShow_PacketHeader_t* const PacketHeader);
152 static void SideShow_SetCurrentUser(SideShow_PacketHeader_t* const PacketHeader);
153 static void SideShow_GetCapabilities(SideShow_PacketHeader_t* const PacketHeader);
154 static void SideShow_GetString(SideShow_PacketHeader_t* const PacketHeader,
155 void* const UnicodeStruct);
156 static void SideShow_GetApplicationOrder(SideShow_PacketHeader_t* const PacketHeader);
157 static void SideShow_GetSupportedEndpoints(SideShow_PacketHeader_t* const PacketHeader);
158 static void SideShow_AddApplication(SideShow_PacketHeader_t* const PacketHeader);
159 static void SideShow_DeleteApplication(SideShow_PacketHeader_t* const PacketHeader);
160 static void SideShow_DeleteAllApplications(SideShow_PacketHeader_t* const PacketHeader);
161 static void SideShow_AddContent(SideShow_PacketHeader_t* const PacketHeader);
162 static void SideShow_DeleteContent(SideShow_PacketHeader_t* const PacketHeader);
163 static void SideShow_DeleteAllContent(SideShow_PacketHeader_t* const PacketHeader);
164 #endif
165
166 #endif