syn6288

Dependencies:   mbed

Committer:
cpak00
Date:
Mon Sep 02 08:59:19 2019 +0000
Revision:
0:d9f5c0a4aa45
Child:
1:8b32bcbc712a
SYN6288 Module

Who changed what in which revision?

UserRevisionLine numberNew contents of line
cpak00 0:d9f5c0a4aa45 1 #include "mbed.h"
cpak00 0:d9f5c0a4aa45 2 #include "string.h"
cpak00 0:d9f5c0a4aa45 3 using namespace std;
cpak00 0:d9f5c0a4aa45 4
cpak00 0:d9f5c0a4aa45 5 Serial PC(PA_9, PA_10);
cpak00 0:d9f5c0a4aa45 6 Serial SYN(PC_10, PC_11);
cpak00 0:d9f5c0a4aa45 7
cpak00 0:d9f5c0a4aa45 8 void voice_play(char* value, Serial* ser) {
cpak00 0:d9f5c0a4aa45 9 int size = strlen(value);
cpak00 0:d9f5c0a4aa45 10 int data_length = 1+2+1+1+size;
cpak00 0:d9f5c0a4aa45 11 int* data = (int*)malloc(sizeof(int)*(data_length+1));
cpak00 0:d9f5c0a4aa45 12
cpak00 0:d9f5c0a4aa45 13 int start = 0xfd;
cpak00 0:d9f5c0a4aa45 14 int length = size + 3;
cpak00 0:d9f5c0a4aa45 15 int length_h = length / 256;
cpak00 0:d9f5c0a4aa45 16 int length_l = length % 256;
cpak00 0:d9f5c0a4aa45 17 int command = 0x01;
cpak00 0:d9f5c0a4aa45 18 int param = 0x01;
cpak00 0:d9f5c0a4aa45 19
cpak00 0:d9f5c0a4aa45 20 data[0] = start;
cpak00 0:d9f5c0a4aa45 21 data[1] = length_h;
cpak00 0:d9f5c0a4aa45 22 data[2] = length_l;
cpak00 0:d9f5c0a4aa45 23 data[3] = command;
cpak00 0:d9f5c0a4aa45 24 data[4] = param;
cpak00 0:d9f5c0a4aa45 25
cpak00 0:d9f5c0a4aa45 26 for (int i=5; i<5+size; i++) {
cpak00 0:d9f5c0a4aa45 27 data[i] = value[i-5];
cpak00 0:d9f5c0a4aa45 28 }
cpak00 0:d9f5c0a4aa45 29
cpak00 0:d9f5c0a4aa45 30 // calculate check bit
cpak00 0:d9f5c0a4aa45 31 int check_bit = data[0];
cpak00 0:d9f5c0a4aa45 32 for (int i=1; i<data_length; i++) {
cpak00 0:d9f5c0a4aa45 33 check_bit ^= data[i];
cpak00 0:d9f5c0a4aa45 34 }
cpak00 0:d9f5c0a4aa45 35 data[data_length] = check_bit;
cpak00 0:d9f5c0a4aa45 36
cpak00 0:d9f5c0a4aa45 37 for (int i=0; i<=data_length; i++) {
cpak00 0:d9f5c0a4aa45 38 ser->putc(data[i]);
cpak00 0:d9f5c0a4aa45 39 }
cpak00 0:d9f5c0a4aa45 40
cpak00 0:d9f5c0a4aa45 41 free(data);
cpak00 0:d9f5c0a4aa45 42
cpak00 0:d9f5c0a4aa45 43 //int recv = ser->getc();
cpak00 0:d9f5c0a4aa45 44 //PC.printf("%c", recv);
cpak00 0:d9f5c0a4aa45 45 //int done = ser->getc();
cpak00 0:d9f5c0a4aa45 46 //PC.printf("%c", done);
cpak00 0:d9f5c0a4aa45 47 }
cpak00 0:d9f5c0a4aa45 48
cpak00 0:d9f5c0a4aa45 49 int main() {
cpak00 0:d9f5c0a4aa45 50 PC.printf("start\n");
cpak00 0:d9f5c0a4aa45 51 char hello[] = {0xc4,0xfa,0xba,0xc3,0xbb,0xb6,0xd3,0xad,0xbb,0xd8,0xbc,0xd2, 0x00};
cpak00 0:d9f5c0a4aa45 52 voice_play(hello, &SYN);
cpak00 0:d9f5c0a4aa45 53 // SYN.printf("debug\n");
cpak00 0:d9f5c0a4aa45 54 // PC.printf("start\n");
cpak00 0:d9f5c0a4aa45 55 while(1) {
cpak00 0:d9f5c0a4aa45 56 char name[200];
cpak00 0:d9f5c0a4aa45 57 int width = -1;
cpak00 0:d9f5c0a4aa45 58 int height = -1;
cpak00 0:d9f5c0a4aa45 59 if (PC.readable()) {
cpak00 0:d9f5c0a4aa45 60 PC.scanf("%[^,],%d,%d", name, &width, &height);
cpak00 0:d9f5c0a4aa45 61 char hello[] = {0xc4,0xfa,0xba,0xc3,0xbb,0xb6,0xd3,0xad,0xbb,0xd8,0xbc,0xd2, 0x00};
cpak00 0:d9f5c0a4aa45 62 strcat(name, hello);
cpak00 0:d9f5c0a4aa45 63 voice_play(name, &SYN);
cpak00 0:d9f5c0a4aa45 64 }
cpak00 0:d9f5c0a4aa45 65 }
cpak00 0:d9f5c0a4aa45 66 }