This library for Akita Sound module. very personal.
AkitaSM.cpp
- Committer:
- kazushi2008
- Date:
- 2010-10-29
- Revision:
- 0:934392476bd5
File content as of revision 0:934392476bd5:
/** * ... * @author Kazushi Mukaiyama */ #include "AkitaSM.h" #include "mbed.h" #define AKITA_AICTRL0 0x0C // Current song number / Song change #define AKITA_AICTRL1 0x0D // Number of songs on MMC #define AKITA_AICTRL2 0x0E // Number of songs on MMC (VS1103b) #define AKITA_AICTRL3 0x0F // Play mode AkitaSM::AkitaSM(int addr, PinName sda, PinName scl) : _i2c(sda, scl) { _addr = addr<<1; // Set up the i2c interface //_i2c.frequency(1000000); } void AkitaSM::play(int index, bool loop) { char p = 0; if(loop) p = 1; else p = 3; _cmd[0] = AKITA_AICTRL3; _cmd[1] = 0; _cmd[2] = p << 1; _i2c.write(_addr, _cmd, 3); wait(0.01); int n = 0x8000 + index; _cmd[0] = AKITA_AICTRL0; _cmd[1] = (n >> 8) & 0xFF; _cmd[2] = n & 0xFF; _i2c.write(_addr, _cmd, 3); //_cmd[0] = index & 0xFF; //_i2c.write(_addr, _cmd, 1); } void AkitaSM::stop() { _cmd[0] = AKITA_AICTRL3; _cmd[1] = 0; _cmd[2] = 1<<4; _i2c.write(_addr, _cmd, 3); } void AkitaSM::control(char r, int cmd) { //r is resistor 0x00-0x0f _cmd[0] = r; _cmd[1] = (cmd >> 8) & 0xFF; _cmd[2] = cmd & 0xFF; _i2c.write(_addr, _cmd, 3); } char* AkitaSM::isPlaying() { //_i2c.read(_addr, _cmd, 4); _i2c.read(_addr, _cmd, 4); return _cmd; }