VLSI Solution Oy / MegaLib Documentation

player.h File Reference

#include <vstypes.h>

Include dependency graph for player.h:

Go to the source code of this file.

Data Structures

struct  Player
struct  KeyMapping

Defines

#define LED1   4
#define LED2   8
#define KEY_1   1
#define KEY_2   2
#define KEY_3   4
#define KEY_4   8
#define KEY_5   16
#define KEY_POWER   256
#define KEY_RELEASED   0x4000
#define KEY_LONG_PRESS   0x8000
#define KEY_LONG_ONESHOT   0x8000
#define SHORT_LIMIT   16
#define OFF_LIMIT   32

Enumerations

enum  keyEvent {
  ke_null = 0, ke_previous, ke_next, ke_rewind,
  ke_forward, ke_volumeUp, ke_volumeDown, ke_earSpeaker,
  ke_earSpeakerToggle, ke_randomToggle, ke_randomToggleNewSong, ke_pauseToggle,
  ke_powerOff, ke_ff_faster, ke_ff_slower, ke_ff_off,
  ke_volumeUp2, ke_volumeDown2
}

Functions

void putch (register __a0 short dat)
void KeyScan (void)
auto void CleanDisk (register __c1 u_int16 tryBoot)
void PlayerVolume (void)
auto u_int16 USBIsAttached (void)
auto void MassStorage (void)
auto void RealMassStorage (void)
void KeyEventHandler (enum keyEvent event)
void RealKeyEventHandler (enum keyEvent event)
auto u_int16 ReadGPIO (void)
void USBSuspend (u_int16 timeOut)
void RealUSBSuspend (u_int16 timeOut)
void UserInterfaceIdleHook (void)
u_int16 CsRead (struct CodecServices *cs, u_int16 *data, u_int16 firstOdd, u_int16 bytes)
s_int16 CsSeek (struct CodecServices *cs, s_int32 offset, s_int16 whence)
s_int16 CsOutput (struct CodecServices *cs, s_int16 *data, s_int16 n)

Variables

s_int16 tmpBuf [2 *32]
Player player
const struct KeyMappingcurrentKeyMap
const struct KeyMapping sixKeyMap []
const struct KeyMapping fiveKeyMap []
const struct KeyMapping shiftFourKeyMap []
const struct KeyMapping threeKeyMap []
u_int16 keyOld
s_int16 keyOldTime
__y u_int16 mallocAreaY []
u_int16 mallocAreaX []
const u_int32supportedFiles
const u_int32 defSupportedFiles []
u_int16 keyCheck
__y u_int16 vs1000d_BitReverse [256]
__y u_int16 vs1000d_Latin1 [256 *3]


Detailed Description

Routines related to the default player implementation.

Definition in file player.h.


Define Documentation

#define KEY_1   1
 

Definition at line 63 of file player.h.

#define KEY_2   2
 

Definition at line 64 of file player.h.

#define KEY_3   4
 

Definition at line 65 of file player.h.

#define KEY_4   8
 

Definition at line 66 of file player.h.

#define KEY_5   16
 

Definition at line 67 of file player.h.

#define KEY_LONG_ONESHOT   0x8000
 

Definition at line 71 of file player.h.

#define KEY_LONG_PRESS   0x8000
 

Definition at line 70 of file player.h.

#define KEY_POWER   256
 

Definition at line 68 of file player.h.

#define KEY_RELEASED   0x4000
 

Definition at line 69 of file player.h.

#define LED1   4
 

Definition at line 28 of file player.h.

#define LED2   8
 

Definition at line 29 of file player.h.

#define OFF_LIMIT   32
 

Definition at line 76 of file player.h.

#define SHORT_LIMIT   16
 

Definition at line 75 of file player.h.


Enumeration Type Documentation

enum keyEvent
 

Actions for keypresses.

Enumerator:
ke_null 
ke_previous  skip to previous song or start of song (if >= 5 seconds played)
ke_next  goto next song
ke_rewind  skip 5 seconds back
ke_forward  skip 5 seconds forward
ke_volumeUp  increase volume by 0.5dB
ke_volumeDown  decrease volume by 0.5dB
ke_earSpeaker  rotate earSpeaker setting: 0, 16000U, 38000U, 54000U
ke_earSpeakerToggle  toggle earSpeaker setting: 0, 38000U
ke_randomToggle  toggle random play mode
ke_randomToggleNewSong  toggle random play mode, start new song immediately when activated
ke_pauseToggle  toggle pause mode
ke_powerOff  power off the unit
ke_ff_faster  increase play speed (needs ke_ff_off as release event)
ke_ff_slower  decrease play speed (needs ke_ff_off as release event)
ke_ff_off  back to normal play speed
ke_volumeUp2  increase volume by 1.0dB
ke_volumeDown2  decrease volume by 1.0dB

Definition at line 32 of file player.h.

00032               {
00033   ke_null = 0,
00034   ke_previous,   
00035   ke_next,       
00036   ke_rewind,     
00037   ke_forward,    
00038   ke_volumeUp,   
00039   ke_volumeDown, 
00040   ke_earSpeaker, 
00041   ke_earSpeakerToggle, 
00042   ke_randomToggle, 
00043   ke_randomToggleNewSong, 
00044   ke_pauseToggle, 
00045   ke_powerOff,    
00046   ke_ff_faster,  
00047   ke_ff_slower,  
00048   ke_ff_off,     
00049   ke_volumeUp2,  
00050   ke_volumeDown2,
00051 };


Function Documentation

auto void CleanDisk register __c1 u_int16  tryBoot  ) 
 

Cleans unused sectors from FAT16/FAT32 disks. If tryBoot is non-zero, checks for VS1000_B.RUN.

s_int16 CsOutput struct CodecServices cs,
s_int16 data,
s_int16  n
 

Implements codec service Output function. Implements pause mode (player.pauseOn) by inserting zero samples, and low-power pause mode (USBSuspend()) between key presses. Updates audio sample rate. Converts mono input to stereo for AudioOutputSamples().

u_int16 CsRead struct CodecServices cs,
u_int16 data,
u_int16  firstOdd,
u_int16  bytes
 

Implements codec service Read function. Uses the Read() hook function.

s_int16 CsSeek struct CodecServices cs,
s_int32  offset,
s_int16  whence
 

Implements codec service Seek function. Uses Seek() and Tell() hook functions.

void KeyEventHandler enum keyEvent  event  ) 
 

Hook: performs actions for key events. Default: RealKeyEventHandler.

void KeyScan void   ) 
 

Performs key scanning of 5 keys on GPIO0 and the power key. Processes the results to generate short and long key press events, then calls the KeyEventHandler with the appropriate key events. Short press is generated if press was shorter than 16 ui ticks (1 second). Long presses are generated when press lasts longer than 16 ui ticks. Long press generates events 16 times a second unless the KEY_LONG_ONESHOT is added. Any key combination containing power key requires longer press (2 seconds).

KeyScan also cancels play and resets pause mode if USB is attached.

auto void MassStorage void   ) 
 

Hook: Implements MassStorage. Default: RealMassStorage.

void PlayerVolume void   ) 
 

Updates volume using player.volume and player.volumeOffset.

void putch register __a0 short  dat  ) 
 

Waits for UART TX ready, then writes next byte.

auto u_int16 ReadGPIO void   ) 
 

Read GPIO0[0:7] values. Turns the bits to GPIO mode and restores the state afterwards.

void RealKeyEventHandler enum keyEvent  event  ) 
 

Performs actions for key events.

auto void RealMassStorage void   ) 
 

Implements MassStorage.

void RealUSBSuspend u_int16  timeOut  ) 
 

Activates low-power mode. Wakes up if changes in USB pin or GPIO0[0:4] pins are detected. Restores USB voltages.

Parameters:
timeOut 0, or calls PowerOff() when timeout reached.

auto u_int16 USBIsAttached void   ) 
 

Non-zero if USBN is low for at least two cycles in 20000 cycles. Note: this routine may be too slow in some applications, so you can check (PERIP(SCI_STATUS) & SCISTF_USB_DN) == 0 directly.

void USBSuspend u_int16  timeOut  ) 
 

Hook: Activate low-power mode. Default: RealUSBSuspend.

Parameters:
timeOut 0, or calls PowerOff() when timeout reached.

void UserInterfaceIdleHook void   ) 
 

The default idle hook function that scans keys 16 timer per second.


Variable Documentation

const struct KeyMapping* currentKeyMap
 

const u_int32 defSupportedFiles[]
 

const struct KeyMapping fiveKeyMap[]
 

u_int16 keyCheck
 

u_int16 keyOld
 

s_int16 keyOldTime
 

u_int16 mallocAreaX[]
 

__y u_int16 mallocAreaY[]
 

struct Player player
 

Structure used by the default firmwares play loop.

const struct KeyMapping shiftFourKeyMap[]
 

const struct KeyMapping sixKeyMap[]
 

const u_int32* supportedFiles
 

const struct KeyMapping threeKeyMap[]
 

s_int16 tmpBuf[2 *32]
 

__y u_int16 vs1000d_BitReverse[256]
 

Helper array to quickly reverse bits in a byte.

__y u_int16 vs1000d_Latin1[256 *3]
 

Latin1-compatible font stored in Vertical format, LSb is the top pixel. 3 words (6 bytes) per character, high 8 bits first, add one empty line as space between characters. Contains block characters and special symbols in codes 0..31 and 128..159.


All software copyright 2005-2006 VLSI Solution OY. Redistribution of this software is strictly forbidden.