?? vs10xx_8c-source.html
字號:
00186 <a class="code" href="board_8h.html#a43">SPIWait</a>();00187 <a class="code" href="board_8h.html#a8">Mp3DeselectData</a>();00188 } 00189 00190 <span class="comment">//Link in experimental AVI file sound track playing</span><a name="l00191"></a><a class="code" href="vs10xx_8c.html#a0">00191</a> <span class="preprocessor">#define AVIPLAY</span>00192 <span class="preprocessor"></span>00193 <span class="preprocessor">#ifdef AVIPLAY</span>00194 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="aviplay_8c.html">aviplay.c</a>"</span>00195 <span class="preprocessor">#endif</span>00196 <span class="preprocessor"></span>00197 00198 <a name="l00202"></a><a class="code" href="vs10xx_8h.html#a40">00202</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> <a class="code" href="vs10xx_8h.html#a40">PlayDiskSectors</a> (<span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> nSectorsToPlay){00203 00205 <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> fallbackCount = 0;00206 00207 00208 <span class="preprocessor">#ifdef AVIPLAY</span>00209 <span class="preprocessor"></span> <span class="keywordflow">if</span> (!<a class="code" href="aviplay_8c.html#a6">PlayAvi</a>()) <span class="keywordflow">return</span> 0; <span class="comment">//try to play AVI file soundtrack starting from</span>00210 <span class="comment">//current sector, if avifile is played, return.</span>00211 <span class="preprocessor">#endif</span>00212 <span class="preprocessor"></span>00213 00214 <a class="code" href="storage_8h.html#a1">PrepareToReadDiskSector</a>(<a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a>);00215 <span class="keywordflow">while</span> (nSectorsToPlay--){00216 00217 <a class="code" href="player_8c.html#a12">AvailableProcessorTime</a>();00218 00219 <a class="code" href="storage_8h.html#a2">ReadDiskSector</a>(<a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a>);00220 00221 <span class="comment">/* If playing state is something else than "play normally",</span>00222 <span class="comment"> exit returning the request number. */</span>00223 <span class="keywordflow">if</span> ((<a class="code" href="player_8c.html#a3">playingState</a>==<a class="code" href="ui_8h.html#a25a13">PS_END_OF_SONG</a>)||00224 (<a class="code" href="player_8c.html#a3">playingState</a>==<a class="code" href="ui_8h.html#a25a14">PS_NEXT_SONG</a>)||00225 (<a class="code" href="player_8c.html#a3">playingState</a>==<a class="code" href="ui_8h.html#a25a23">PS_RECORDING</a>)||00226 (<a class="code" href="player_8c.html#a3">playingState</a>==<a class="code" href="ui_8h.html#a25a15">PS_PREVIOUS_SONG</a>)){00227 <span class="keywordflow">return</span> <a class="code" href="player_8c.html#a3">playingState</a>;00228 }00229 00230 00231 <span class="comment">/* === REWIND / FAST FORWARD FUNCTIONALITY CODE BEGINS === */</span>00232 <span class="comment">/* If you don't implement rewind / fast forward, leave these lines out */</span>00233 00234 <span class="keywordflow">if</span> (<a class="code" href="player_8c.html#a3">playingState</a>==<a class="code" href="ui_8h.html#a25a22">PS_FALLBACK_N</a>){00235 <span class="keywordflow">if</span> ((--fallbackCount)==0){00236 <a class="code" href="player_8c.html#a3">playingState</a>=<a class="code" href="ui_8h.html#a25a12">PS_NORMAL</a>;00237 }00238 }00239 00240 <span class="keywordflow">if</span> (<a class="code" href="player_8c.html#a3">playingState</a>==<a class="code" href="ui_8h.html#a25a21">PS_FALLBACK_1</a>){00241 <span class="comment">/* Now we should have brand new sector in memory ready for sending to</span>00242 <span class="comment"> VS1003, so let's send zeroes between old and new data. */</span>00243 ConsoleWrite(<span class="stringliteral">"(Zeros)"</span>);00244 <a class="code" href="vs10xx_8c.html#a5">SendZerosToVS10xx</a>();00245 ConsoleWrite(<span class="stringliteral">"->Fallback to normal"</span>);00246 fallbackCount = 24;00247 <a class="code" href="player_8c.html#a3">playingState</a> = <a class="code" href="ui_8h.html#a25a22">PS_FALLBACK_N</a>;00248 }00249 00250 00251 <span class="keywordflow">if</span> (<a class="code" href="player_8c.html#a3">playingState</a>==<a class="code" href="ui_8h.html#a25a16">PS_CUE</a>){ <span class="comment">//Request to start fast forward </span>00252 <span class="keywordflow">if</span> (<a class="code" href="vs10xx_8h.html#a38">Mp3ReadRegister</a>(<a class="code" href="vs10xx_8h.html#a11">SPI_HDAT1</a>)==((<span class="keywordtype">int</span>)<span class="charliteral">'W'</span><< 8)+<span class="charliteral">'m'</span>){00253 ConsoleWrite(<span class="stringliteral">"\rWmCUE->Wait"</span>);00254 <a class="code" href="vs10xx_8h.html#a32">Mp3WriteRegister</a>(<a class="code" href="vs10xx_8h.html#a16">SPI_AICTRL2</a>, 0x12, 0x34);00255 <a class="code" href="player_8c.html#a3">playingState</a> = <a class="code" href="ui_8h.html#a25a17">PS_CUE_WAIT1003</a>;00256 }<span class="keywordflow">else</span>{00257 <a class="code" href="player_8c.html#a3">playingState</a> = <a class="code" href="ui_8h.html#a25a18">PS_CUE_ACTION</a>;00258 }00259 }00260 00261 <span class="keywordflow">if</span> (<a class="code" href="player_8c.html#a3">playingState</a>==<a class="code" href="ui_8h.html#a25a17">PS_CUE_WAIT1003</a>){ <span class="comment">//Wait for permission to break data flow</span>00262 <span class="keywordflow">if</span> (<a class="code" href="vs10xx_8h.html#a38">Mp3ReadRegister</a>(<a class="code" href="vs10xx_8h.html#a16">SPI_AICTRL2</a>)==0x2345){ <span class="comment">//permission granted</span>00263 ConsoleWrite(<span class="stringliteral">"->Action"</span>);00264 <a class="code" href="player_8c.html#a3">playingState</a> = <a class="code" href="ui_8h.html#a25a18">PS_CUE_ACTION</a>;00265 }00266 }00267 00268 <span class="keywordflow">if</span> (<a class="code" href="player_8c.html#a3">playingState</a>==<a class="code" href="ui_8h.html#a25a18">PS_CUE_ACTION</a>){00269 <span class="keywordflow">if</span> (nSectorsToPlay>128){00270 <a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a> += 128; <span class="comment">//Skip sectors</span>00271 nSectorsToPlay -= 128;00272 <span class="comment">//adjust vs1003 song left </span>00273 ConsoleWrite(<span class="stringliteral">"->Fallback(5)"</span>);00274 <a class="code" href="player_8c.html#a3">playingState</a> = <a class="code" href="ui_8h.html#a25a21">PS_FALLBACK_1</a>; <span class="comment">//Sector already in memory still goes.</span>00275 }00276 }00277 00278 <span class="keywordflow">if</span> (<a class="code" href="player_8c.html#a3">playingState</a>==<a class="code" href="ui_8h.html#a25a19">PS_REWIND</a>){ <span class="comment">//Request to start fast forward </span>00279 <a class="code" href="vs10xx_8h.html#a32">Mp3WriteRegister</a>(<a class="code" href="vs10xx_8h.html#a16">SPI_AICTRL2</a>, 0x12, 0x34);00280 <a class="code" href="player_8c.html#a3">playingState</a> = <a class="code" href="ui_8h.html#a25a20">PS_REW_WAIT1003</a>;00281 }00282 00283 <span class="keywordflow">if</span> (<a class="code" href="player_8c.html#a3">playingState</a>==<a class="code" href="ui_8h.html#a25a20">PS_REW_WAIT1003</a>){ <span class="comment">//Wait for permission to break data flow</span>00284 <span class="keywordflow">if</span> (1){00285 <span class="keywordflow">if</span> (1 || (<a class="code" href="vs10xx_8h.html#a38">Mp3ReadRegister</a>(<a class="code" href="vs10xx_8h.html#a16">SPI_AICTRL2</a>)==0x2345)){ <span class="comment">//permission granted</span>00286 <a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a> -= 128;00287 nSectorsToPlay += 128;00288 <a class="code" href="player_8c.html#a3">playingState</a> = <a class="code" href="ui_8h.html#a25a21">PS_FALLBACK_1</a>; <span class="comment">//Sector already in memory still goes.</span>00289 }00290 }00291 }00292 00293 00294 <span class="comment">/* === END OF REWIND / FAST FORWARD FUNCTIONALITY CODE === */</span>00295 00296 00297 00298 <a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a>++;00299 <span class="keywordflow">if</span> (nSectorsToPlay){00300 <span class="comment">/*Do not seek after the last sector*/</span>00301 <a class="code" href="storage_8h.html#a1">PrepareToReadDiskSector</a>(<a class="code" href="buffer_8c.html#a2">sectorAddress</a>.<a class="code" href="unionAddress.html#o0">l</a>);00302 }00303 00304 <a class="code" href="board_8h.html#a7">Mp3SelectData</a>();00305 00306 <a class="code" href="buffer_8c.html#a1">dataBufPtr</a> = <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o1">raw</a>.<a class="code" href="structDiskBlock_1_1Raw.html#o0">buf</a>;00307 <span class="keywordflow">while</span> (<a class="code" href="buffer_8c.html#a1">dataBufPtr</a> < <a class="code" href="buffer_8c.html#a0">diskSect</a>.<a class="code" href="unionDiskBlock.html#o1">raw</a>.<a class="code" href="structDiskBlock_1_1Raw.html#o0">buf</a>+512){00308 00309 <span class="keywordflow">if</span> (!<a class="code" href="board_8h.html#a9">MP3_DREQ</a>){00310 <a class="code" href="board_8h.html#a11">GREEN_LED</a> = <a class="code" href="board_8h.html#a12">LED_ON</a>;00311 <span class="keywordflow">while</span> (!<a class="code" href="board_8h.html#a9">MP3_DREQ</a>){00312 <a class="code" href="board_8h.html#a8">Mp3DeselectData</a>();00313 <a class="code" href="player_8c.html#a12">AvailableProcessorTime</a>();00314 <a class="code" href="board_8h.html#a7">Mp3SelectData</a>();00315 }00316 }00317 <a class="code" href="board_8h.html#a11">GREEN_LED</a> = <a class="code" href="board_8h.html#a13">LED_OFF</a>;00318 00319 <span class="comment">/* Send 32 octets of disk block data to VS10xx */</span>00320 <a class="code" href="board_8h.html#a45">SPIPutCharWithoutWaiting</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00321 <a class="code" href="board_8h.html#a43">SPIWait</a>();00322 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00323 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00324 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00325 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00326 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00327 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00328 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00329 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00330 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00331 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00332 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00333 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00334 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00335 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00336 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00337 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00338 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00339 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00340 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00341 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00342 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00343 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00344 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00345 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00346 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00347 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00348 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00349 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00350 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00351 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00352 <a class="code" href="board_8h.html#a44">SPIPutChar</a>(*<a class="code" href="buffer_8c.html#a1">dataBufPtr</a>++);00353 <a class="code" href="board_8h.html#a43">SPIWait</a>();00354 }00355 00356 00357 <a class="code" href="board_8h.html#a43">SPIWait</a>();00358 <a class="code" href="board_8h.html#a8">Mp3DeselectData</a>();00359 }00360 00361 00362 <span class="keywordflow">return</span> 0; <span class="comment">//OK Exit</span>00363 }00364 00365 </div></pre><hr><FONT SIZE="-1">All software copyright 2000-2004 <a href="http://www.vlsi.fi/"> VLSI Solution OY.</a>Redistribution of these software modules are limited to promotional use onlyand only with the VS1011 / VS1002 / VS1003 MP3-Evakit evaluation boards. Free orcommercial use of these software modules in MP3 players is ok if theproduct includes MP3 decoder chip(s) from VLSI. You can request the complete(compilable) package from mp3@vlsi.fi</FONT>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -