Uzetherm
Speaking thermometer with video output
uzewav.h
Go to the documentation of this file.
00001 
00028 #ifndef __UZEWAV_H_
00029         #define __UZEWAV_H_
00030 
00031 extern void mmc_processMixer();
00032 extern void mmc_mixerStart(uint32_t lba);
00033 extern void mmc_mixerStop();
00034 extern uint32_t mmc_mixerGetCurrentSector();
00035 
00036 
00037 #define FAT_ATTR_READONLY       0x01
00038 #define FAT_ATTR_HIDDEN         0x02
00039 #define FAT_ATTR_SYSTEM         0x04
00040 #define FAT_ATTR_VOLUME         0x08
00041 #define FAT_ATTR_DIRECTORY      0x10
00042 #define FAT_ATTR_ARCHIVE        0x20
00043 #define FAT_ATTR_DEVICE         0x40
00044 
00048 #define BYTES_PER_SECTOR 512    //fixed for regular SD
00049 
00053 #define MAX_WAVES       32
00054 
00055 typedef struct{
00056         //header
00057         unsigned char chunkID[4];
00058         unsigned long chunkSize;
00059         unsigned char format[4];
00060         
00061         //fmt chunk
00062         unsigned char subchunk1ID[4];
00063         unsigned long subchunk1Size;
00064         unsigned int audioFormat;
00065         unsigned int numChannels;
00066         unsigned long sampleRate;
00067         unsigned long byteRate;
00068         unsigned int blockAlign;
00069         unsigned int bitsPerSample;
00070 
00071         //data chunk
00072         unsigned char subchunk2ID[4];
00073         unsigned long subchunk2Size;
00074 
00075 } RIFFheader;
00076 
00077 typedef struct{
00078         unsigned char filename[8]; //zero padded
00079         unsigned char extension[3];//
00080         unsigned char fileAttributes;
00081         unsigned char reserved;
00082         unsigned char creationTimeMillis;
00083         unsigned int creationTime;
00084         unsigned int creationDate;
00085         unsigned int lastAccessDate;
00086         unsigned int eaIndex;
00087         unsigned int lastModifiedTime;
00088         unsigned int lastModifiedDate;
00089         unsigned int firstCluster;
00090         unsigned long fileSize;
00091 
00092 } DirectoryTableEntry;
00093 
00094 
00095 typedef struct{
00096         unsigned char state;
00097         unsigned char startHead;
00098         unsigned int startCylinder;
00099         unsigned char type;
00100         unsigned char endHead;
00101         unsigned int endCylinder;
00102         unsigned long startSector; //boot record starts at this sector
00103         unsigned long size; //in sectors
00104 
00105 } PartitionEntry;
00106 
00107 
00108 typedef struct {
00109         unsigned char execCode[446];
00110         PartitionEntry partition1;
00111         PartitionEntry partition2;
00112         PartitionEntry partition3;
00113         PartitionEntry partition4;
00114         int marker;
00115 } MBR;
00116 
00117 typedef struct {
00118         unsigned char jmp[3];
00119         unsigned char oemName[8];
00120         unsigned int bytesPerSector;
00121         unsigned char sectorsPerCluster;
00122         unsigned int reservedSectors;
00123         unsigned char fatCopies;
00124         unsigned int maxRootDirectoryEntries;
00125         unsigned int totalSectorsLegacy;
00126         unsigned char mediaDescriptor;
00127         unsigned int sectorsPerFat;
00128         unsigned int sectorPerTrack;
00129         unsigned int numbersOfHeads;
00130         unsigned long hiddenSectors;
00131         unsigned long totalSectors;
00132         unsigned char physicalDriveNumber;
00133         unsigned char reserved;
00134         unsigned char extendedBootSignature;
00135         unsigned long serialNumber;
00136         unsigned char volumeLabel[11];  
00137         unsigned char bootCode[448];
00138         unsigned int signature;
00139 
00140 } BootRecord;
00141 
00142 union SectorData {
00143         unsigned char buffer[BYTES_PER_SECTOR];
00144         BootRecord bootRecord;
00145         MBR mbr;
00146         DirectoryTableEntry files[16];
00147         RIFFheader riffHeader;
00148 } sector;
00149 
00150 
00151 // program modes
00157 typedef struct{
00158         unsigned long firstSector;
00159         unsigned long fileSize; 
00160 } File;
00161 
00162 
00163 u8 SD_init(void);
00164 int convert_filename(unsigned char *fname);
00165 long GetFileSector(DirectoryTableEntry *file);
00166 
00167 void fat_init(unsigned char *buffer);
00168 u8 find_files(const char *s);
00169 
00170 void startSong();
00171 void stopSong();
00172 void stop_auto();
00173 void play_queue();
00174 
00175 
00176 
00177 #define SPR_SONG_CUR 0
00178 #define SPR_MOUSE 2
00179 
00180 
00181 // german voices
00182 #define ger_0                   0
00183 #define ger_1                   1
00184 #define ger_2                   2
00185 #define ger_3                   3
00186 #define ger_4                   4
00187 #define ger_5                   5
00188 #define ger_6                   6
00189 #define ger_7                   7
00190 #define ger_8                   8
00191 #define ger_9                   9
00192 #define ger_10                  10
00193 #define ger_11                  11
00194 #define ger_12                  12
00195 #define ger_14                  13
00196 #define ger_16                  14
00197 #define ger_17                  15
00198 #define ger_20                  16
00199 #define ger_30                  17
00200 #define ger_40                  18
00201 #define ger_50                  19
00202 #define ger_60                  20
00203 #define ger_70                  21
00204 #define ger_80                  22
00205 #define ger_90                  23
00206 #define ger_100                 24
00207 #define ger_minus               25
00208 #define ger_grad                26
00209 #define ger_celsius             27
00210 #define ger_fahrenheit  28
00211 #define ger_und                 29
00212 
00213 
00214 // english voices
00215 #define eng_0                   0
00216 #define eng_1                   1
00217 #define eng_2                   2
00218 #define eng_3                   3
00219 #define eng_4                   4
00220 #define eng_5                   5
00221 #define eng_6                   6
00222 #define eng_7                   7
00223 #define eng_8                   8
00224 #define eng_9                   9
00225 #define eng_10                  10
00226 #define eng_11                  11
00227 #define eng_12                  12
00228 #define eng_13                  13
00229 #define eng_15                  14
00230 #define eng_teen                15
00231 #define eng_20                  16
00232 #define eng_30                  17
00233 #define eng_40                  18
00234 #define eng_50                  19
00235 #define eng_60                  20
00236 #define eng_70                  21
00237 #define eng_80                  22
00238 #define eng_90                  23
00239 #define eng_100                 24
00240 #define eng_minus               25
00241 #define eng_degree              26
00242 #define eng_celsius             27
00243 #define eng_fahrenheit  28
00244 
00245 
00246 
00247 
00248 #endif
 All Data Structures Files Functions Variables Defines