Initial Commit
Dependencies: mbed HC05 QEI MODSERIAL SWSPI mbed-rtos
shell/bt_shell_f.cpp@4:81b0de07841f, 2014-10-14 (annotated)
- Committer:
- Throwbot
- Date:
- Tue Oct 14 17:55:37 2014 +0000
- Revision:
- 4:81b0de07841f
Switching between amigobot and Finch bot can be done without resetting the robot
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
Throwbot | 4:81b0de07841f | 1 | #include "bt_shell_f.h" |
Throwbot | 4:81b0de07841f | 2 | //#include "keybindings.h" |
Throwbot | 4:81b0de07841f | 3 | //the following functions are for the python interface |
Throwbot | 4:81b0de07841f | 4 | |
Throwbot | 4:81b0de07841f | 5 | //save a struct that indicates which data is to be returned |
Throwbot | 4:81b0de07841f | 6 | interface_f iface_f; |
Throwbot | 4:81b0de07841f | 7 | //mandatory tiny shell output function |
Throwbot | 4:81b0de07841f | 8 | |
Throwbot | 4:81b0de07841f | 9 | int char_received1=0; |
Throwbot | 4:81b0de07841f | 10 | void bt_shell_f_run() |
Throwbot | 4:81b0de07841f | 11 | { |
Throwbot | 4:81b0de07841f | 12 | char buffer[12]; |
Throwbot | 4:81b0de07841f | 13 | bt.lock(); |
Throwbot | 4:81b0de07841f | 14 | if(bt.readable()) { |
Throwbot | 4:81b0de07841f | 15 | bt.gets(buffer,3); |
Throwbot | 4:81b0de07841f | 16 | char_received1=buffer[0]-'0'; |
Throwbot | 4:81b0de07841f | 17 | bt.unlock(); |
Throwbot | 4:81b0de07841f | 18 | if(buffer[1]=='S') { |
Throwbot | 4:81b0de07841f | 19 | bt.lock(); |
Throwbot | 4:81b0de07841f | 20 | stdio_mutex.lock(); |
Throwbot | 4:81b0de07841f | 21 | bt.printf("%d;%d;%d;%d;%d;%d;", |
Throwbot | 4:81b0de07841f | 22 | UL_rR,UL_R,UL_F,UL_L,UL_rL,UL_B); |
Throwbot | 4:81b0de07841f | 23 | stdio_mutex.unlock(); |
Throwbot | 4:81b0de07841f | 24 | bt.unlock(); |
Throwbot | 4:81b0de07841f | 25 | } else if(buffer[1]=='H') { |
Throwbot | 4:81b0de07841f | 26 | Lmotor_speed= 0; |
Throwbot | 4:81b0de07841f | 27 | Rmotor_speed = 0; |
Throwbot | 4:81b0de07841f | 28 | Led_off(); |
Throwbot | 4:81b0de07841f | 29 | } else if(buffer[1]=='L') { |
Throwbot | 4:81b0de07841f | 30 | Led_on(); |
Throwbot | 4:81b0de07841f | 31 | } else if(buffer[1]=='l') { |
Throwbot | 4:81b0de07841f | 32 | |
Throwbot | 4:81b0de07841f | 33 | Led_off(); |
Throwbot | 4:81b0de07841f | 34 | } else if(buffer[1]=='w') { |
Throwbot | 4:81b0de07841f | 35 | bt.gets(buffer,char_received1); |
Throwbot | 4:81b0de07841f | 36 | int Left_m_value = ((buffer[0]-'0')*100 + (buffer[1]-'0')*10 + (buffer[2]-'0')*1); |
Throwbot | 4:81b0de07841f | 37 | int Right_m_value= ((buffer[4]-'0')*100 + (buffer[5]-'0')*10 + (buffer[6]-'0')*1); |
Throwbot | 4:81b0de07841f | 38 | Lmotor_speed= (Left_m_value-200)*3.5; |
Throwbot | 4:81b0de07841f | 39 | Rmotor_speed = (Right_m_value-200)*3.5; |
Throwbot | 4:81b0de07841f | 40 | } else if(buffer[1]=='B') { |
Throwbot | 4:81b0de07841f | 41 | bt.gets(buffer,char_received1); |
Throwbot | 4:81b0de07841f | 42 | int buzzer_time = ((buffer[0]-'0')*1000 + (buffer[1]-'0')*100 + (buffer[2]-'0')*10 + (buffer[3]-'0')*1); |
Throwbot | 4:81b0de07841f | 43 | int frequency= ((buffer[5]-'0')*100 + (buffer[6]-'0')*10 + (buffer[7]-'0')*1); |
Throwbot | 4:81b0de07841f | 44 | pl_buzzer(frequency, buzzer_time); |
Throwbot | 4:81b0de07841f | 45 | } else if(buffer[1]=='D') { |
Throwbot | 4:81b0de07841f | 46 | |
Throwbot | 4:81b0de07841f | 47 | bt.lock(); |
Throwbot | 4:81b0de07841f | 48 | bt.printf("%lf;%lf", |
Throwbot | 4:81b0de07841f | 49 | ldrread1(),ldrread2()); |
Throwbot | 4:81b0de07841f | 50 | bt.unlock(); |
Throwbot | 4:81b0de07841f | 51 | } else if(buffer[1]=='O') { |
Throwbot | 4:81b0de07841f | 52 | int obstacle_found=0; |
Throwbot | 4:81b0de07841f | 53 | if(UL_F<250) { |
Throwbot | 4:81b0de07841f | 54 | obstacle_found=1; |
Throwbot | 4:81b0de07841f | 55 | } else { |
Throwbot | 4:81b0de07841f | 56 | obstacle_found=0; |
Throwbot | 4:81b0de07841f | 57 | } |
Throwbot | 4:81b0de07841f | 58 | bt.lock(); |
Throwbot | 4:81b0de07841f | 59 | bt.printf("%d", |
Throwbot | 4:81b0de07841f | 60 | obstacle_found); |
Throwbot | 4:81b0de07841f | 61 | bt.unlock(); |
Throwbot | 4:81b0de07841f | 62 | } else if(buffer[1]=='A') { |
Throwbot | 4:81b0de07841f | 63 | bt.lock(); |
Throwbot | 4:81b0de07841f | 64 | stdio_mutex.lock(); |
Throwbot | 4:81b0de07841f | 65 | bt.printf("%d;%d;%d", |
Throwbot | 4:81b0de07841f | 66 | Encoder_x,Encoder_x,heading); |
Throwbot | 4:81b0de07841f | 67 | stdio_mutex.unlock(); |
Throwbot | 4:81b0de07841f | 68 | bt.unlock(); |
Throwbot | 4:81b0de07841f | 69 | } else if(buffer[1]=='<' && buffer[0] == '<') { |
Throwbot | 4:81b0de07841f | 70 | bt.gets(buffer,3); |
Throwbot | 4:81b0de07841f | 71 | if(buffer[1] =='E') |
Throwbot | 4:81b0de07841f | 72 | bt.printf(">>1B"); |
Throwbot | 4:81b0de07841f | 73 | else if (buffer[1] =='O') { |
Throwbot | 4:81b0de07841f | 74 | bt.gets(buffer, 2); |
Throwbot | 4:81b0de07841f | 75 | if(buffer[0]=='A') { |
Throwbot | 4:81b0de07841f | 76 | Selected_robot='A'; |
Throwbot | 4:81b0de07841f | 77 | imperial_march(); |
Throwbot | 4:81b0de07841f | 78 | } else if(buffer[0]=='F') { |
Throwbot | 4:81b0de07841f | 79 | Selected_robot='F'; |
Throwbot | 4:81b0de07841f | 80 | Led_on(); |
Throwbot | 4:81b0de07841f | 81 | } |
Throwbot | 4:81b0de07841f | 82 | } |
Throwbot | 4:81b0de07841f | 83 | |
Throwbot | 4:81b0de07841f | 84 | } else { |
Throwbot | 4:81b0de07841f | 85 | bt.rxBufferFlush(); |
Throwbot | 4:81b0de07841f | 86 | } |
Throwbot | 4:81b0de07841f | 87 | } |
Throwbot | 4:81b0de07841f | 88 | bt.unlock(); |
Throwbot | 4:81b0de07841f | 89 | } |