Karpova Lab fork of smartWAV library

Fork of SMARTWAV by Mattias Karlsson

SMARTWAV.cpp

Committer:
mkarlsso
Date:
2015-05-19
Revision:
1:bfb321f3d233
Parent:
0:d3cb5755b201
Child:
2:fa9a64f4935d

File content as of revision 1:bfb321f3d233:

/*********************************************************
VIZIC TECHNOLOGIES. COPYRIGHT 2012.
THE DATASHEETS, SOFTWARE AND LIBRARIES ARE PROVIDED "AS IS." 
VIZIC EXPRESSLY DISCLAIM ANY WARRANTY OF ANY KIND, WHETHER 
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO, THE IMPLIED 
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE,
OR NONINFRINGEMENT. IN NO EVENT SHALL VIZIC BE LIABLE FOR 
ANY INCIDENTAL, SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES, 
LOST PROFITS OR LOST DATA, HARM TO YOUR EQUIPMENT, COST OF 
PROCUREMENT OF SUBSTITUTE GOODS, TECHNOLOGY OR SERVICES, 
ANY CLAIMS BY THIRD PARTIES (INCLUDING BUT NOT LIMITED TO 
ANY DEFENCE THEREOF), ANY CLAIMS FOR INDEMNITY OR CONTRIBUTION,
OR OTHER SIMILAR COSTS.
*********************************************************/

/********************************************************
 IMPORTANT : This library is created for the mbed Microcontroller Software IDE
********************************************************/
 
 
#include "mbed.h"
#include "SMARTWAV.h"
        
// SMART WAV DEFAULT BAUD RATE: 9600bps
//It shoud be used like this : SMARTWAV audio(p13,p14,p15); for serial communication with SMARTWAV
SMARTWAV::SMARTWAV(PinName TXPin, PinName RXPin, PinName resetPin): _serialSMARTWAV(TXPin,RXPin), _resetPin(resetPin){    
    init();
}

/********** high level commands, for the user! */
void SMARTWAV::init(){         //configure the mbed for SMARTWAV board    
    _serialSMARTWAV.baud(9600);
    _resetPin=1;               //set the pin to 3.3v to avoid reset 
}
 
void SMARTWAV::reset(){        //Reset the SMARTWAV board
    _resetPin=0;               //set the pin to GND to reset 
    wait_ms(500);
    _resetPin=1;               //set the pin to 3.3v to end reset
    wait_ms(500);    
}

unsigned char SMARTWAV::sleep(){       //Send SMARTWAV to sleep mode / awake from sleep mode
  _serialSMARTWAV.putc('Z'); 
  return _serialSMARTWAV.getc();
}

unsigned char SMARTWAV::getStatus(){       //Check active status
  unsigned char status;
  
  _serialSMARTWAV.putc('A');
  status  = _serialSMARTWAV.getc();
  _serialSMARTWAV.getc();
  return status;
}

unsigned char SMARTWAV::playTracks(){       //Start playing any song on current Folder/Dir
  _serialSMARTWAV.putc('T'); 
  return _serialSMARTWAV.getc();
}

unsigned char SMARTWAV::pausePlay(){       //Pause / play song
  _serialSMARTWAV.putc('P'); 
  return _serialSMARTWAV.getc();
}

unsigned char SMARTWAV::rewindTrack(){       //Rewind Track
  _serialSMARTWAV.putc('R'); 
  return _serialSMARTWAV.getc();
}

unsigned char SMARTWAV::nextTrack(){       //Next Track
  _serialSMARTWAV.putc('N'); 
  return _serialSMARTWAV.getc();
}

unsigned char SMARTWAV::playTrackName(char name[]){        //play an Audio file contained on the micro SD card with the given name.
  unsigned char counter=0;
  
  //if (_serialSMARTWAV.writeable()) {
  _serialSMARTWAV.putc('F'); 
  //}
  while(1){
    //if (_serialSMARTWAV.writeable()) {
        _serialSMARTWAV.putc(name[counter]);
    //} else {
    //    break;
    //}
    if(name[counter]==0x00){
      break;
    }    
    counter++;
  }
  
  return _serialSMARTWAV.getc();
  //return 1;
}

unsigned char SMARTWAV::stopTrack(){       //Stop playing any active song
  
  //if (_serialSMARTWAV.writeable()) {
  _serialSMARTWAV.putc('S'); 
  //}
  return _serialSMARTWAV.getc();
  //return 1;
}

unsigned char SMARTWAV::continuousPlay(unsigned char enable){       //Enable/Disable continuous play, also disabled by calling stopTrack()
  unsigned char status;
  
  _serialSMARTWAV.putc('C');
  _serialSMARTWAV.putc(enable);
  status  = _serialSMARTWAV.getc();
  _serialSMARTWAV.getc();
  return status;
}

unsigned char SMARTWAV::volume(unsigned char vol){       //Set Volume 0-255
  _serialSMARTWAV.putc('V'); 
  _serialSMARTWAV.putc(vol); 
  //return _serialSMARTWAV.getc();
  return 1;
}

unsigned char SMARTWAV::setFolder(char name[]){        //Set/Enters inside a folder/path on the micro SD card with the given name.
  unsigned char counter=0;
  
  _serialSMARTWAV.putc('D'); 
  while(1){
    _serialSMARTWAV.putc(name[counter]);
    if(name[counter]==0x00){
      break;
    }    
    counter++;
  }
  return _serialSMARTWAV.getc();
}

unsigned char SMARTWAV::getFileName(char name[]){ //Reads the name of the current/ last audio file being played on the SMARTWAV, and stores it on the name[] buffer.
  unsigned int i=0;
  
  _serialSMARTWAV.putc('I'); 
  _serialSMARTWAV.putc('S'); 
   //receive all the file name
    while(1){
        name[i]=_serialSMARTWAV.getc();
        if(name[i]==0x00){
            break;    
        }
        i++;
    }
  return _serialSMARTWAV.getc();  
}

unsigned char SMARTWAV::getFolderName(char name[]){ //Reads the name of the current folderDir/path name the SMARTWAV, and stores it on the name[] buffer.
  unsigned int i=0;
  
  _serialSMARTWAV.putc('I'); 
  _serialSMARTWAV.putc('D'); 
   //receive all the folder/path name
    while(1){
        name[i]=_serialSMARTWAV.getc();
        if(name[i]==0x00){
            break;    
        }
        i++;
    }
  return _serialSMARTWAV.getc();  
}

unsigned char SMARTWAV::getFileList(char list[]){ //Reads all the names of the .WAV files on the current folder/dir on the SMARTWAV, and stores it on the list[] buffer separated by comma ','.
  unsigned int i=0;
  
  _serialSMARTWAV.putc('I'); 
  _serialSMARTWAV.putc('L'); 
   //receive all the file names
    while(1){
        list[i]=_serialSMARTWAV.getc();
        if(list[i]==0x00){
            break;    
        }
        i++;
    }
  return _serialSMARTWAV.getc();  
}

unsigned char SMARTWAV::getFolderList(char list[]){ //Reads all the folders on the current folder/dir on the SMARTWAV, and stores it on the list[] buffer separated by comma ','.
  unsigned int i=0;
  
  _serialSMARTWAV.putc('I'); 
  _serialSMARTWAV.putc('X'); 
   //receive all the folder names
    while(1){
        list[i]=_serialSMARTWAV.getc();
        if(list[i]==0x00){
            break;    
        }
        i++;
    }
  return _serialSMARTWAV.getc();  
}

unsigned char SMARTWAV::playSpeed(unsigned char speed){   //Change current Play Speed: X0.5, X1, X1.5, X2, if track ends, play speed returns to 1.0X
  
  _serialSMARTWAV.putc('M');
  _serialSMARTWAV.putc(speed);
  _serialSMARTWAV.getc();
  return _serialSMARTWAV.getc();
}