Ohnishi_Gundan / Mbed 2 deprecated Master-FM

Dependencies:   MODSERIAL mbed-rtos mbed

Fork of Master by Ohnishi_Gundan

Committer:
9uS7
Date:
Fri Sep 12 05:11:39 2014 +0000
Revision:
3:12e1f116ea42
Parent:
2:c610e1a7fbcd
Child:
4:aaaadb45cbd9
hey

Who changed what in which revision?

UserRevisionLine numberNew contents of line
9uS7 0:4f07ba929908 1 #include "mbed.h"
9uS7 0:4f07ba929908 2 #include "bluetooth.h"
9uS7 2:c610e1a7fbcd 3 #include "control.h"
9uS7 0:4f07ba929908 4
9uS7 3:12e1f116ea42 5 //master
9uS7 1:e1cfb5850088 6 Serial bt(p13, p14); // tx, rx
9uS7 3:12e1f116ea42 7 //slave
9uS7 3:12e1f116ea42 8 //Serial bt(p28, p27);
9uS7 3:12e1f116ea42 9
9uS7 3:12e1f116ea42 10 DigitalOut l1(LED1);
9uS7 0:4f07ba929908 11
9uS7 1:e1cfb5850088 12 void btSetup(int role)
9uS7 0:4f07ba929908 13 {
9uS7 1:e1cfb5850088 14 if( role==BT_MASTER ){
9uS7 1:e1cfb5850088 15 //if this device is the master
9uS7 1:e1cfb5850088 16 bt.baud(9600);
9uS7 1:e1cfb5850088 17 bt.printf("$$$");
9uS7 1:e1cfb5850088 18 wait(0.5);
9uS7 1:e1cfb5850088 19 bt.printf("C\r");
9uS7 1:e1cfb5850088 20 wait(0.5);
9uS7 1:e1cfb5850088 21 }
9uS7 1:e1cfb5850088 22 else{
9uS7 1:e1cfb5850088 23 //if this device is the slave
9uS7 3:12e1f116ea42 24 bt.attach( slaveRecieve, Serial::RxIrq );
9uS7 3:12e1f116ea42 25 }
9uS7 2:c610e1a7fbcd 26 }
9uS7 3:12e1f116ea42 27
9uS7 3:12e1f116ea42 28 void sync(char option, char* b_data, float* f_data)
9uS7 2:c610e1a7fbcd 29 {
9uS7 3:12e1f116ea42 30 char pac[PACK_SIZE];
9uS7 3:12e1f116ea42 31 Cvt temp;
9uS7 3:12e1f116ea42 32
9uS7 3:12e1f116ea42 33 //making pac
9uS7 3:12e1f116ea42 34 pac[0] = option;
9uS7 3:12e1f116ea42 35 if( option==SYNC_MOTOR ){
9uS7 3:12e1f116ea42 36 //PACK: [option/function/pwm*4]
9uS7 3:12e1f116ea42 37 //function
9uS7 3:12e1f116ea42 38 pac[1]=b_data[0];
9uS7 3:12e1f116ea42 39 //pwm
9uS7 3:12e1f116ea42 40 temp.fl = f_data[0];
9uS7 3:12e1f116ea42 41 for( int i=0 ; i<4 ; i++ ){
9uS7 3:12e1f116ea42 42 pac[2+i] = temp.byte[i];
9uS7 3:12e1f116ea42 43 }
9uS7 3:12e1f116ea42 44 }
9uS7 3:12e1f116ea42 45 else if( option==SYNC_FM ){
9uS7 3:12e1f116ea42 46 //PACK: [option/request]
9uS7 3:12e1f116ea42 47 pac[1]=b_data[0]; //request
9uS7 1:e1cfb5850088 48 }
9uS7 2:c610e1a7fbcd 49 else{
9uS7 3:12e1f116ea42 50 ;
9uS7 3:12e1f116ea42 51 }
9uS7 3:12e1f116ea42 52
9uS7 3:12e1f116ea42 53 //send pac
9uS7 3:12e1f116ea42 54 for( int i=0 ; i<PACK_SIZE ; i++ ){
9uS7 3:12e1f116ea42 55 pc.putc( pac[i] );
9uS7 2:c610e1a7fbcd 56 }
9uS7 2:c610e1a7fbcd 57 }
9uS7 3:12e1f116ea42 58
9uS7 3:12e1f116ea42 59 void slaveRecieve(void)
9uS7 3:12e1f116ea42 60 {
9uS7 3:12e1f116ea42 61 static int i;
9uS7 3:12e1f116ea42 62 char buf[PACK_SIZE];
9uS7 3:12e1f116ea42 63 char pac[PACK_SIZE];
9uS7 3:12e1f116ea42 64 float val[PACK_SIZE/4+1];
9uS7 3:12e1f116ea42 65 Cvt temp;
9uS7 3:12e1f116ea42 66
9uS7 3:12e1f116ea42 67 wait(1/1000.0);
9uS7 3:12e1f116ea42 68
9uS7 3:12e1f116ea42 69 l1=1;
9uS7 3:12e1f116ea42 70 wait(0.2);
9uS7 3:12e1f116ea42 71 l1=2;
9uS7 3:12e1f116ea42 72
9uS7 3:12e1f116ea42 73 for( int i=0 ; i<PACK_SIZE ; i++ ){
9uS7 3:12e1f116ea42 74 buf[i]=bt.getc();
9uS7 3:12e1f116ea42 75 }
9uS7 3:12e1f116ea42 76
9uS7 3:12e1f116ea42 77 if( buf[0]==SYNC_MOTOR ){
9uS7 3:12e1f116ea42 78 //PACK: [option/function/pwm*4]
9uS7 3:12e1f116ea42 79 //pwm
9uS7 3:12e1f116ea42 80 for( int i=0 ; i<4 ; i++ ){
9uS7 3:12e1f116ea42 81 temp.byte[i]=buf[1+i];
9uS7 3:12e1f116ea42 82 }
9uS7 3:12e1f116ea42 83 motor( buf[1], temp.fl );
9uS7 3:12e1f116ea42 84 }
9uS7 3:12e1f116ea42 85 else if( buf[0]==SYNC_FM ){
9uS7 3:12e1f116ea42 86 //PACK: [option/request]
9uS7 3:12e1f116ea42 87 ; //not yet
9uS7 3:12e1f116ea42 88 }
9uS7 3:12e1f116ea42 89 else if( buf[0]==SYNC_SENSOR ){
9uS7 3:12e1f116ea42 90 getSensor( &(val[0]), &(val[1]) );
9uS7 3:12e1f116ea42 91 //PACK: [option/ir*4/fsr*4];
9uS7 3:12e1f116ea42 92 //option
9uS7 3:12e1f116ea42 93 pac[0] = SYNC_SENSOR;
9uS7 3:12e1f116ea42 94 //ir
9uS7 3:12e1f116ea42 95 temp.fl = val[0];
9uS7 3:12e1f116ea42 96 temp.fl = ++i%2;
9uS7 3:12e1f116ea42 97 for( int i=0 ; i<4 ; i++ ){
9uS7 3:12e1f116ea42 98 pac[1+i] = temp.byte[i];
9uS7 3:12e1f116ea42 99 }
9uS7 3:12e1f116ea42 100 //fsr
9uS7 3:12e1f116ea42 101 temp.fl = val[1];
9uS7 3:12e1f116ea42 102 for( int i=0 ; i<4 ; i++ ){
9uS7 3:12e1f116ea42 103 pac[5+i] = temp.byte[i];
9uS7 3:12e1f116ea42 104 }
9uS7 3:12e1f116ea42 105
9uS7 3:12e1f116ea42 106 //send pac
9uS7 3:12e1f116ea42 107 for( int i=0 ; i<PACK_SIZE ; i++ ){
9uS7 3:12e1f116ea42 108 bt.putc( pac[i] );
9uS7 3:12e1f116ea42 109 }
9uS7 3:12e1f116ea42 110 }
9uS7 3:12e1f116ea42 111 else if( buf[0]==SYNC_FM ){
9uS7 3:12e1f116ea42 112 ; //not yet
9uS7 3:12e1f116ea42 113
9uS7 3:12e1f116ea42 114 //send pac
9uS7 3:12e1f116ea42 115 for( int i=0 ; i<PACK_SIZE ; i++ ){
9uS7 3:12e1f116ea42 116 bt.putc( pac[i] );
9uS7 3:12e1f116ea42 117 }
9uS7 3:12e1f116ea42 118 }
9uS7 3:12e1f116ea42 119 }
9uS7 3:12e1f116ea42 120
9uS7 3:12e1f116ea42 121 void receiveSensor(float* _ir, float* _fsr)
9uS7 3:12e1f116ea42 122 {
9uS7 3:12e1f116ea42 123 char buf[PACK_SIZE];
9uS7 3:12e1f116ea42 124 Cvt temp;
9uS7 3:12e1f116ea42 125
9uS7 3:12e1f116ea42 126 wait(1/1000.0);
9uS7 3:12e1f116ea42 127
9uS7 3:12e1f116ea42 128 //Read
9uS7 3:12e1f116ea42 129 for( int i=0 ; i<PACK_SIZE ; i++ ){
9uS7 3:12e1f116ea42 130 buf[i]=bt.getc();
9uS7 3:12e1f116ea42 131 }
9uS7 3:12e1f116ea42 132
9uS7 3:12e1f116ea42 133 //PACK: [option/ir*4/fsr*4];
9uS7 3:12e1f116ea42 134 //option
9uS7 3:12e1f116ea42 135 if( buf[0]!=SYNC_SENSOR ){
9uS7 3:12e1f116ea42 136 return;
9uS7 3:12e1f116ea42 137 }
9uS7 3:12e1f116ea42 138
9uS7 3:12e1f116ea42 139 //ir
9uS7 3:12e1f116ea42 140 for( int i=0 ; i<4 ; i++ ){
9uS7 3:12e1f116ea42 141 temp.byte[i]=buf[1+i];
9uS7 3:12e1f116ea42 142 }
9uS7 3:12e1f116ea42 143 *_ir = temp.fl;
9uS7 3:12e1f116ea42 144
9uS7 3:12e1f116ea42 145 //fsr
9uS7 3:12e1f116ea42 146 for( int i=0 ; i<4 ; i++ ){
9uS7 3:12e1f116ea42 147 temp.byte[i] = buf[5+i];
9uS7 3:12e1f116ea42 148 }
9uS7 3:12e1f116ea42 149 *_fsr = temp.fl;
9uS7 3:12e1f116ea42 150
9uS7 3:12e1f116ea42 151 }