MP3 Player without external hardware MP3 Player without external hardware. A software based MP3 player based on a modified version of libmad. Mono output (at the moment) via AnalogOut. Files are read from an USB drive. This is a demo program, it plays only one file at the moment. Documentation is in "main.cpp" and "config.h"

Dependencies:   mbed

Committer:
Gruenfrosch
Date:
Fri Nov 26 12:18:30 2010 +0000
Revision:
0:7627c79db971
First Version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Gruenfrosch 0:7627c79db971 1 /*
Gruenfrosch 0:7627c79db971 2 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 3 * NXP USB Host Stack
Gruenfrosch 0:7627c79db971 4 *
Gruenfrosch 0:7627c79db971 5 * (c) Copyright 2008, NXP SemiConductors
Gruenfrosch 0:7627c79db971 6 * (c) Copyright 2008, OnChip Technologies LLC
Gruenfrosch 0:7627c79db971 7 * All Rights Reserved
Gruenfrosch 0:7627c79db971 8 *
Gruenfrosch 0:7627c79db971 9 * www.nxp.com
Gruenfrosch 0:7627c79db971 10 * www.onchiptech.com
Gruenfrosch 0:7627c79db971 11 *
Gruenfrosch 0:7627c79db971 12 * File : usbhost_ms.h
Gruenfrosch 0:7627c79db971 13 * Programmer(s) : Ravikanth.P
Gruenfrosch 0:7627c79db971 14 * Version :
Gruenfrosch 0:7627c79db971 15 *
Gruenfrosch 0:7627c79db971 16 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 17 */
Gruenfrosch 0:7627c79db971 18
Gruenfrosch 0:7627c79db971 19 #ifndef USBHOST_MS_H
Gruenfrosch 0:7627c79db971 20 #define USBHOST_MS_H
Gruenfrosch 0:7627c79db971 21
Gruenfrosch 0:7627c79db971 22 /*
Gruenfrosch 0:7627c79db971 23 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 24 * INCLUDE HEADER FILES
Gruenfrosch 0:7627c79db971 25 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 26 */
Gruenfrosch 0:7627c79db971 27
Gruenfrosch 0:7627c79db971 28 #include "usbhost_inc.h"
Gruenfrosch 0:7627c79db971 29
Gruenfrosch 0:7627c79db971 30 /*
Gruenfrosch 0:7627c79db971 31 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 32 * MASS STORAGE SPECIFIC DEFINITIONS
Gruenfrosch 0:7627c79db971 33 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 34 */
Gruenfrosch 0:7627c79db971 35
Gruenfrosch 0:7627c79db971 36 #define MS_GET_MAX_LUN_REQ 0xFE
Gruenfrosch 0:7627c79db971 37 #define MASS_STORAGE_CLASS 0x08
Gruenfrosch 0:7627c79db971 38 #define MASS_STORAGE_SUBCLASS_SCSI 0x06
Gruenfrosch 0:7627c79db971 39 #define MASS_STORAGE_PROTOCOL_BO 0x50
Gruenfrosch 0:7627c79db971 40
Gruenfrosch 0:7627c79db971 41 #define INQUIRY_LENGTH 36
Gruenfrosch 0:7627c79db971 42 /*
Gruenfrosch 0:7627c79db971 43 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 44 * SCSI SPECIFIC DEFINITIONS
Gruenfrosch 0:7627c79db971 45 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 46 */
Gruenfrosch 0:7627c79db971 47
Gruenfrosch 0:7627c79db971 48 #define CBW_SIGNATURE 0x43425355
Gruenfrosch 0:7627c79db971 49 #define CSW_SIGNATURE 0x53425355
Gruenfrosch 0:7627c79db971 50 #define CBW_SIZE 31
Gruenfrosch 0:7627c79db971 51 #define CSW_SIZE 13
Gruenfrosch 0:7627c79db971 52 #define CSW_CMD_PASSED 0x00
Gruenfrosch 0:7627c79db971 53 #define SCSI_CMD_REQUEST_SENSE 0x03
Gruenfrosch 0:7627c79db971 54 #define SCSI_CMD_TEST_UNIT_READY 0x00
Gruenfrosch 0:7627c79db971 55 #define SCSI_CMD_INQUIRY 0x12
Gruenfrosch 0:7627c79db971 56 #define SCSI_CMD_READ_10 0x28
Gruenfrosch 0:7627c79db971 57 #define SCSI_CMD_READ_CAPACITY 0x25
Gruenfrosch 0:7627c79db971 58 #define SCSI_CMD_WRITE_10 0x2A
Gruenfrosch 0:7627c79db971 59
Gruenfrosch 0:7627c79db971 60 /*
Gruenfrosch 0:7627c79db971 61 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 62 * TYPE DEFINITIONS
Gruenfrosch 0:7627c79db971 63 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 64 */
Gruenfrosch 0:7627c79db971 65
Gruenfrosch 0:7627c79db971 66 typedef enum ms_data_dir {
Gruenfrosch 0:7627c79db971 67
Gruenfrosch 0:7627c79db971 68 MS_DATA_DIR_IN = 0x80,
Gruenfrosch 0:7627c79db971 69 MS_DATA_DIR_OUT = 0x00,
Gruenfrosch 0:7627c79db971 70 MS_DATA_DIR_NONE = 0x01
Gruenfrosch 0:7627c79db971 71
Gruenfrosch 0:7627c79db971 72 } MS_DATA_DIR;
Gruenfrosch 0:7627c79db971 73
Gruenfrosch 0:7627c79db971 74 /*
Gruenfrosch 0:7627c79db971 75 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 76 * FUNCTION PROTOTYPES
Gruenfrosch 0:7627c79db971 77 **************************************************************************************************************
Gruenfrosch 0:7627c79db971 78 */
Gruenfrosch 0:7627c79db971 79
Gruenfrosch 0:7627c79db971 80 USB_INT32S MS_BulkRecv ( USB_INT32U block_number,
Gruenfrosch 0:7627c79db971 81 USB_INT16U num_blocks,
Gruenfrosch 0:7627c79db971 82 volatile USB_INT08U *user_buffer);
Gruenfrosch 0:7627c79db971 83
Gruenfrosch 0:7627c79db971 84 USB_INT32S MS_BulkSend ( USB_INT32U block_number,
Gruenfrosch 0:7627c79db971 85 USB_INT16U num_blocks,
Gruenfrosch 0:7627c79db971 86 volatile USB_INT08U *user_buffer);
Gruenfrosch 0:7627c79db971 87 USB_INT32S MS_ParseConfiguration(void);
Gruenfrosch 0:7627c79db971 88 USB_INT32S MS_TestUnitReady (void);
Gruenfrosch 0:7627c79db971 89 USB_INT32S MS_ReadCapacity (USB_INT32U *numBlks, USB_INT32U *blkSize);
Gruenfrosch 0:7627c79db971 90 USB_INT32S MS_GetMaxLUN (void);
Gruenfrosch 0:7627c79db971 91 USB_INT32S MS_GetSenseInfo (void);
Gruenfrosch 0:7627c79db971 92 USB_INT32S MS_Init (USB_INT32U *blkSize, USB_INT32U *numBlks, USB_INT08U *inquiryResult);
Gruenfrosch 0:7627c79db971 93 USB_INT32S MS_Inquire (USB_INT08U *response);
Gruenfrosch 0:7627c79db971 94
Gruenfrosch 0:7627c79db971 95 void Fill_MSCommand ( USB_INT32U block_number,
Gruenfrosch 0:7627c79db971 96 USB_INT32U block_size,
Gruenfrosch 0:7627c79db971 97 USB_INT16U num_blocks,
Gruenfrosch 0:7627c79db971 98 MS_DATA_DIR direction,
Gruenfrosch 0:7627c79db971 99 USB_INT08U scsi_cmd,
Gruenfrosch 0:7627c79db971 100 USB_INT08U scsi_cmd_len);
Gruenfrosch 0:7627c79db971 101 #endif