Pancake Library for mbed

pancake.cpp

Committer:
suu____
Date:
2015-11-28
Revision:
1:2eaa0fea479c
Parent:
0:ee3420f81e2b
Child:
2:a711a6feb092

File content as of revision 1:2eaa0fea479c:

#include "pancake.hpp"

Pancake::Pancake(PinName tx,PinName rx) : pc(tx,rx){
    pc.baud(115200);
    }
    
void Pancake::sound1(uint8_t cn,sound_t &sound){
    uint8_t data[4]={0x0A,cn,sound.octave,sound.toneColor<<4|sound.scale};
    sendCommand(data,4);
    }

void Pancake::sound(sound_t sounds[4]){
    uint8_t data[9]={0x09,0,0,0,0,0,0,0,0};
    data[1] = sounds[0].octave;
    data[2] = sounds[0].toneColor<<4|sounds[0].scale;
    data[3] = sounds[1].octave;
    data[4] = sounds[1].toneColor<<4|sounds[1].scale;
    data[5] = sounds[2].octave;
    data[6] = sounds[2].toneColor<<4|sounds[2].scale;
    data[7] = sounds[3].octave;
    data[8] = sounds[3].toneColor<<4|sounds[3].scale;
    
    sendCommand(data,9);
    }    
    
void Pancake::setMusic(uint8_t channel,bool mode,uint8_t tempo,
                        uint8_t toneColor,uint8_t score[],uint8_t scoreSize){
    uint8_t data[3+scoreSize];
    data[0] = 0x0b;//command code
    data[1] = channel;
    data[2] = mode;
    data[3] = (tempo<<4)|toneColor;
    for(uint8_t i= 4;i < scoreSize + 4;i++){
        data[i] = score[i - 4];
        }
    data[scoreSize +4] = 0xFF;
    sendCommand(data,scoreSize + 5);
    }

void Pancake::playMusic(){
    uint8_t data[2]={0x0c,0x01};
    sendCommand(data,2);
    }
    
void Pancake::stopMusic(){
    uint8_t data[2]={0x0c,0x00};
    sendCommand(data,2);
    }
 
 void Pancake::writeLine(uint8_t sx,uint8_t sy,uint8_t ex,uint8_t ey,
                        P_Color color){
    uint8_t data[6] = {0x01,sx,sy,ex,ey,uint8_t(color)};
    sendCommand(data,6);
                        }
 
    
void Pancake::sendCommand(uint8_t data[],uint8_t length)
{
    uint8_t i = 0;
    pc.putc(0x80);
    pc.putc(length + 2);
    
    while(i < length ){
        pc.putc(data[i]);
        i++;
        }
    }