92 lines
1.9 KiB
C++
92 lines
1.9 KiB
C++
#include <DFRobotDFPlayerMini.h>
|
|
#include <SoftwareSerial.h>
|
|
#include "CBL2.h"
|
|
#include "TIVar.h"
|
|
|
|
CBL2 cbl;
|
|
SoftwareSerial SoftSerial(0, 1); // RX, TX
|
|
DFRobotDFPlayerMini DFPlayer;
|
|
|
|
#define MAXDATALEN 32
|
|
uint8_t header[16];
|
|
uint8_t data[MAXDATALEN];
|
|
|
|
int onSendAsCBL2(uint8_t type, enum Endpoint model, int *headerlen, int *datalen, data_callback *data_callback);
|
|
int onGetAsCBL2(uint8_t type, enum Endpoint model, int datalen);
|
|
|
|
void setup()
|
|
{
|
|
SoftSerial.begin(9600);
|
|
DFPlayer.begin(SoftSerial);
|
|
DFPlayer.play(2);
|
|
|
|
cbl.setLines(4, 3);
|
|
cbl.resetLines();
|
|
cbl.setupCallbacks(header, data, MAXDATALEN, onGetAsCBL2, onSendAsCBL2);
|
|
}
|
|
|
|
void loop()
|
|
{
|
|
int rval;
|
|
rval = cbl.eventLoopTick();
|
|
if (rval && rval != ERR_READ_TIMEOUT)
|
|
{
|
|
SoftSerial.print("eventLoopTick: error code ");
|
|
SoftSerial.println(rval);
|
|
}
|
|
}
|
|
|
|
void sendtoDFP(short command, short parameter)
|
|
{
|
|
switch (command)
|
|
{
|
|
case 1:
|
|
DFPlayer.next(); break;
|
|
|
|
case 2:
|
|
DFPlayer.previous(); break;
|
|
|
|
case 3:
|
|
DFPlayer.play(parameter); break;
|
|
|
|
case 4:
|
|
DFPlayer.volumeUp(); break;
|
|
|
|
case 5:
|
|
DFPlayer.volumeDown(); break;
|
|
|
|
case 6:
|
|
DFPlayer.volume(parameter); break;
|
|
|
|
case 8:
|
|
DFPlayer.randomAll(); break;
|
|
|
|
case 13:
|
|
DFPlayer.start(); break;
|
|
|
|
case 14:
|
|
DFPlayer.pause(); break;
|
|
|
|
case 17:
|
|
DFPlayer.stop(); break;
|
|
}
|
|
}
|
|
|
|
int onGetAsCBL2(uint8_t type, enum Endpoint model, int datalen)
|
|
{
|
|
uint16_t list_len = TIVar::sizeWordToInt(&(data[0])); // Convert 2-byte size word to int
|
|
int size_of_real = TIVar::sizeOfReal(model);
|
|
|
|
short cmd = TIVar::realToLong8x(&data[size_of_real * 0 + 2], model); // First list element starts after 2-byte size word
|
|
short parameter = TIVar::realToLong8x(&data[size_of_real * 1 + 2], model);
|
|
|
|
sendtoDFP(cmd, parameter);
|
|
|
|
return 0;
|
|
}
|
|
|
|
int onSendAsCBL2(uint8_t type, enum Endpoint model, int *headerlen, int *datalen, data_callback *data_callback)
|
|
{
|
|
return 0;
|
|
}
|