![](/media/cache/img/default_profile.jpg.50x50_q85.jpg)
syn6288
main.cpp@0:d9f5c0a4aa45, 2019-09-02 (annotated)
- 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?
User | Revision | Line number | New 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 | } |