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
47
55
56
64
65
70
71
76
77
84
85
92
93
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
118
119
123
124
131
132
137
138
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
/* ... */
#ifndef __MAIN_H
#define __MAIN_H
#include "stdio.h"
#include "usbh_core.h"
#include "stm324xg_eval_io.h"
#include "lcd_log.h"
#include "usbh_audio.h"
#include "stm324xg_eval_sd.h"
#include "usbh_msc.h"
#include "ff.h"
#include "usbh_hid.h"
#include "usbh_hid_parser.h"
#include "ff_gen_drv.h"
#include "sd_diskio.h"
#include "usbh_diskio_dma.h"
13 includes
Includes
#define FILEMGR_LIST_DEPDTH 24
#define FILEMGR_FILE_NAME_SIZE 40
#define FILEMGR_FULL_PATH_SIZE 256
#define FILEMGR_MAX_LEVEL 4
#define FILETYPE_DIR 0
#define FILETYPE_FILE 1
6 defines
Exported constants
typedef enum {
APPLICATION_IDLE = 0,
APPLICATION_DISCONNECT,
APPLICATION_MSC,
APPLICATION_HID,
APPLICATION_AUDIO,
APPLICATION_RUNNING,
...}DS_ApplicationTypeDef;
typedef enum {
HID_DEMO_IDLE = 0,
HID_DEMO_WAIT,
HID_DEMO_START,
HID_DEMO_MOUSE,
HID_DEMO_KEYBOARD,
HID_DEMO_REENUMERATE,
...}HID_Demo_State;
typedef enum {
HID_MOUSE_IDLE = 0,
HID_MOUSE_WAIT,
HID_MOUSE_START,
...}HID_mouse_State;
typedef enum {
HID_KEYBOARD_IDLE = 0,
HID_KEYBOARD_WAIT,
HID_KEYBOARD_START,
...}HID_keyboard_State;
typedef struct _DemoStateMachine {
__IO HID_Demo_State state;
__IO HID_mouse_State mouse_state;
__IO HID_keyboard_State keyboard_state;
__IO uint8_t select;
__IO uint8_t lock;
...}HID_DEMO_StateMachine;
typedef enum {
MSC_DEMO_IDLE = 0,
MSC_DEMO_WAIT,
MSC_DEMO_FILE_OPERATIONS,
MSC_DEMO_EXPLORER,
MSC_REENUMERATE,
...}MSC_Demo_State;
typedef struct _MSC_DemoStateMachine {
__IO MSC_Demo_State state;
__IO uint8_t select;
...}MSC_DEMO_StateMachine;
typedef struct AUDIO_Info_t {
uint32_t ChunkID;
uint32_t FileSize;
uint32_t FileFormat;
uint32_t SubChunk1ID;
uint32_t SubChunk1Size;
uint16_t AudioFormat;
uint16_t NbrChannels;
uint32_t SampleRate;
uint32_t ByteRate;
uint16_t BlockAlign;
uint16_t BitPerSample;
uint32_t SubChunk2ID;
uint32_t SubChunk2Size;
...}WAV_InfoTypedef;
typedef struct _FILELIST_LineTypeDef {
uint8_t type;
uint8_t name[FILEMGR_FILE_NAME_SIZE];
...}FILELIST_LineTypeDef;
typedef struct _FILELIST_FileTypeDef {
FILELIST_LineTypeDef file[FILEMGR_LIST_DEPDTH] ;
uint16_t ptr;
...}FILELIST_FileTypeDef;
typedef enum {
AUDIO_DEMO_IDLE = 0,
AUDIO_DEMO_WAIT,
AUDIO_DEMO_EXPLORE,
AUDIO_DEMO_PLAYBACK,
AUDIO_REENUMERATE
...}AUDIO_Demo_State;
typedef struct _AUDIO_DemoStateMachine {
__IO AUDIO_Demo_State state;
__IO uint8_t select;
__IO uint8_t lock;
...}AUDIO_DEMO_StateMachine;
typedef enum {
AUDIO_SELECT_MENU = 0,
AUDIO_PLAYBACK_CONTROL ,
...}AUDIO_DEMO_SelectMode;
typedef enum {
AUDIO_STATE_IDLE = 0,
AUDIO_STATE_WAIT,
AUDIO_STATE_INIT,
AUDIO_STATE_CONFIG,
AUDIO_STATE_PLAY,
AUDIO_STATE_NEXT,
AUDIO_STATE_PREVIOUS,
AUDIO_STATE_FORWARD,
AUDIO_STATE_BACKWARD,
AUDIO_STATE_PAUSE,
AUDIO_STATE_RESUME,
AUDIO_STATE_VOLUME_UP,
AUDIO_STATE_VOLUME_DOWN,
...}AUDIO_PLAYBACK_StateTypeDef;
typedef enum {
AUDIO_ERROR_NONE = 0,
AUDIO_ERROR_IO,
AUDIO_ERROR_EOF,
...}AUDIO_ErrorTypeDef;
extern uint8_t prev_select;
extern FATFS USBH_fatfs;
extern DS_ApplicationTypeDef Appli_state;
extern USBH_HandleTypeDef hUSBHost;
extern HID_MOUSE_Info_TypeDef mouse_info;
extern uint8_t *DEMO_MOUSE_menu[];
extern HID_DEMO_StateMachine hid_demo;
extern AUDIO_DEMO_StateMachine audio_demo;
extern FILELIST_FileTypeDef FileList;
extern AUDIO_PLAYBACK_StateTypeDef audio_state;
extern MSC_DEMO_StateMachine msc_demo;
extern AUDIO_DEMO_SelectMode audio_select_mode;
Exported types
void DS_MenuProcess(void);
void Toggle_Leds(void);
void Menu_Init(void);
void AUDIO_MenuSelectItem(uint8_t **menu, uint8_t item);
void AUDIO_MenuProcess(void);
void AUDIO_MenuProbeKey(JOYState_TypeDef state);
void AUDIO_PlaybackProbeKey(JOYState_TypeDef state);
uint8_t SD_StorageInit(void);
FRESULT SD_StorageParse(void);
AUDIO_ErrorTypeDef AUDIO_Start(uint8_t idx);
AUDIO_ErrorTypeDef AUDIO_Process(void);
AUDIO_ErrorTypeDef AUDIO_Stop(void);
FRESULT Explore_Disk(char *path, uint8_t recu_level);
void Audio_ChangeSelectMode(AUDIO_DEMO_SelectMode select_mode);
void MSC_File_Operations(void);
void MSC_MenuProcess(void);
void MSC_DEMO_ProbeKey(JOYState_TypeDef state);
void HID_SelectItem(uint8_t **menu, uint8_t item);
void HID_MenuProcess(void);
void HID_MouseMenuProcess(void);
void HID_KeyboardMenuProcess(void);
void HID_MOUSE_ButtonReleased(uint8_t button_idx);
void HID_MOUSE_ButtonPressed(uint8_t button_idx);
void USR_MOUSE_ProcessData(HID_MOUSE_Info_TypeDef *data);
void USR_KEYBRD_ProcessData(uint8_t data);
void HID_DEMO_ProbeKey(JOYState_TypeDef state);Exported functions
/* ... */#endif