Uzetherm
Speaking thermometer with video output
|
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