copy

Dependencies:   mbed

Committer:
brainliang
Date:
Wed Nov 20 12:27:02 2019 +0000
Revision:
2:a2acba0829a8
copy

Who changed what in which revision?

UserRevisionLine numberNew contents of line
brainliang 2:a2acba0829a8 1 #include "SYN6288.h"
brainliang 2:a2acba0829a8 2 void voice_play(std::string value, Serial* ser)
brainliang 2:a2acba0829a8 3 {
brainliang 2:a2acba0829a8 4 voice_play(value.c_str(), ser);
brainliang 2:a2acba0829a8 5 }
brainliang 2:a2acba0829a8 6 void voice_play(char* value, Serial* ser) {
brainliang 2:a2acba0829a8 7 int size = strlen(value);
brainliang 2:a2acba0829a8 8 int data_length = 1+2+1+1+size;
brainliang 2:a2acba0829a8 9 int* data = (int*)malloc(sizeof(int)*(data_length+1));
brainliang 2:a2acba0829a8 10
brainliang 2:a2acba0829a8 11 int start = 0xfd;
brainliang 2:a2acba0829a8 12 int length = size + 3;
brainliang 2:a2acba0829a8 13 int length_h = length / 256;
brainliang 2:a2acba0829a8 14 int length_l = length % 256;
brainliang 2:a2acba0829a8 15 int command = 0x01;
brainliang 2:a2acba0829a8 16 int param = 0x01;
brainliang 2:a2acba0829a8 17
brainliang 2:a2acba0829a8 18 data[0] = start;
brainliang 2:a2acba0829a8 19 data[1] = length_h;
brainliang 2:a2acba0829a8 20 data[2] = length_l;
brainliang 2:a2acba0829a8 21 data[3] = command;
brainliang 2:a2acba0829a8 22 data[4] = param;
brainliang 2:a2acba0829a8 23
brainliang 2:a2acba0829a8 24 for (int i=5; i<5+size; i++) {
brainliang 2:a2acba0829a8 25 data[i] = value[i-5];
brainliang 2:a2acba0829a8 26 }
brainliang 2:a2acba0829a8 27
brainliang 2:a2acba0829a8 28 // calculate check bit
brainliang 2:a2acba0829a8 29 int check_bit = data[0];
brainliang 2:a2acba0829a8 30 for (int i=1; i<data_length; i++) {
brainliang 2:a2acba0829a8 31 check_bit ^= data[i];
brainliang 2:a2acba0829a8 32 }
brainliang 2:a2acba0829a8 33 data[data_length] = check_bit;
brainliang 2:a2acba0829a8 34
brainliang 2:a2acba0829a8 35 for (int i=0; i<=data_length; i++) {
brainliang 2:a2acba0829a8 36 ser->putc(data[i]);
brainliang 2:a2acba0829a8 37 }
brainliang 2:a2acba0829a8 38
brainliang 2:a2acba0829a8 39 free(data);
brainliang 2:a2acba0829a8 40
brainliang 2:a2acba0829a8 41 //int recv = ser->getc();
brainliang 2:a2acba0829a8 42 //PC.printf("%c", recv);
brainliang 2:a2acba0829a8 43 //int done = ser->getc();
brainliang 2:a2acba0829a8 44 //PC.printf("%c", done);
brainliang 2:a2acba0829a8 45 }
brainliang 2:a2acba0829a8 46