Fx0 hackathon team4

Dependencies:   NySNICInterface mbed-rtos mbed

Fork of RESTServerSample by KDDI Fx0 hackathon

Committer:
yi
Date:
Sun Feb 15 13:18:24 2015 +0000
Revision:
9:01aa69185ed8
Parent:
7:bdd579baaa91
fixed

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yi 2:2f187e09bdb0 1 #include "control_motors.h"
yi 2:2f187e09bdb0 2
yi 5:70c9f6045f2d 3 bool parse_request(char *request){
yi 2:2f187e09bdb0 4
yi 5:70c9f6045f2d 5 bool okFlag = false;
yi 2:2f187e09bdb0 6
yi 7:bdd579baaa91 7 char req[1024];
yi 7:bdd579baaa91 8 strcpy(req, request + 1);
yi 7:bdd579baaa91 9
yi 7:bdd579baaa91 10 char* str = strtok(req, "/");
yi 2:2f187e09bdb0 11
yi 2:2f187e09bdb0 12 if(strcmp(str, "api") == 0){
yi 2:2f187e09bdb0 13 str = strtok(NULL,"/");
yi 2:2f187e09bdb0 14
yi 2:2f187e09bdb0 15 if(strcmp(str, "motor") == 0){
yi 2:2f187e09bdb0 16 str = strtok(NULL,"?");
yi 2:2f187e09bdb0 17
yi 2:2f187e09bdb0 18 if(strcmp(str, "right") == 0){
yi 2:2f187e09bdb0 19
yi 2:2f187e09bdb0 20 str = strtok(NULL,"="); //"speed"
yi 2:2f187e09bdb0 21 str = strtok(NULL,""); //
yi 2:2f187e09bdb0 22
yi 2:2f187e09bdb0 23 int speed = atoi(str);
yi 2:2f187e09bdb0 24
yi 2:2f187e09bdb0 25 // motor right
yi 2:2f187e09bdb0 26 move(MOTOR_RIGHT, speed);
yi 5:70c9f6045f2d 27 okFlag = true;
yi 2:2f187e09bdb0 28
yi 2:2f187e09bdb0 29 }else if(strcmp(str, "left") == 0){
yi 2:2f187e09bdb0 30
yi 2:2f187e09bdb0 31 str = strtok(NULL,"="); //"speed"
yi 2:2f187e09bdb0 32 str = strtok(NULL,""); //
yi 2:2f187e09bdb0 33
yi 2:2f187e09bdb0 34 int speed = atoi(str);
yi 2:2f187e09bdb0 35
yi 2:2f187e09bdb0 36 // motor left
yi 2:2f187e09bdb0 37 move(MOTOR_LEFT, speed);
yi 5:70c9f6045f2d 38 okFlag = true;
yi 5:70c9f6045f2d 39
yi 2:2f187e09bdb0 40 }
yi 2:2f187e09bdb0 41
yi 2:2f187e09bdb0 42 }else if(strcmp(str, "tail") == 0){
yi 2:2f187e09bdb0 43 str = strtok(NULL,"/");
yi 2:2f187e09bdb0 44 if(strcmp(str, "swing") == 0){
yi 2:2f187e09bdb0 45 str = strtok(NULL,"/");
yi 2:2f187e09bdb0 46 if(strcmp(str, "start") == 0){
yi 2:2f187e09bdb0 47
yi 2:2f187e09bdb0 48 // tail start
yi 2:2f187e09bdb0 49 start_shaking_tail();
yi 2:2f187e09bdb0 50
yi 5:70c9f6045f2d 51 okFlag = true;
yi 5:70c9f6045f2d 52
yi 2:2f187e09bdb0 53 }else if(strcmp(str, "end") == 0){
yi 2:2f187e09bdb0 54
yi 2:2f187e09bdb0 55 // tail end
yi 2:2f187e09bdb0 56 stop_shaking_tail();
yi 2:2f187e09bdb0 57
yi 5:70c9f6045f2d 58 okFlag = true;
yi 5:70c9f6045f2d 59
yi 2:2f187e09bdb0 60 }
yi 2:2f187e09bdb0 61 }
yi 2:2f187e09bdb0 62 }
yi 2:2f187e09bdb0 63 }
yi 2:2f187e09bdb0 64
yi 5:70c9f6045f2d 65 if(!okFlag){
yi 2:2f187e09bdb0 66 printf("error: request=%s\n", request);
yi 5:70c9f6045f2d 67 return false;
yi 2:2f187e09bdb0 68 }
yi 5:70c9f6045f2d 69
yi 5:70c9f6045f2d 70 return true;
yi 2:2f187e09bdb0 71 }
yi 2:2f187e09bdb0 72
yi 2:2f187e09bdb0 73
yi 2:2f187e09bdb0 74 void move(int motor_id, int speed){
yi 2:2f187e09bdb0 75 if(motor_id == MOTOR_RIGHT){
yi 2:2f187e09bdb0 76 printf("motor right speed = %d\n", speed);
yi 2:2f187e09bdb0 77
yi 2:2f187e09bdb0 78 // モーター制御の処理
oks486 4:99a67256b765 79 if(speed > 0){
oks486 4:99a67256b765 80 mPwmMotorR = (float)speed/255;
oks486 4:99a67256b765 81 mDoutMotorR1 = 1;
oks486 4:99a67256b765 82 mDoutMotorR2 = 0;
oks486 4:99a67256b765 83 }else if (speed < 0){
oks486 4:99a67256b765 84 mPwmMotorR = -(float)speed/255;
oks486 4:99a67256b765 85 mDoutMotorR1 = 0;
oks486 4:99a67256b765 86 mDoutMotorR2 = 1;
oks486 4:99a67256b765 87 }else{
oks486 4:99a67256b765 88 mPwmMotorR = 0;
oks486 4:99a67256b765 89 mDoutMotorR1 = 0;
oks486 4:99a67256b765 90 mDoutMotorR2 = 0;
oks486 4:99a67256b765 91 }
oks486 4:99a67256b765 92
yi 2:2f187e09bdb0 93 }else if(motor_id == MOTOR_LEFT){
yi 2:2f187e09bdb0 94 printf("motor left speed = %d\n", speed);
yi 2:2f187e09bdb0 95
yi 2:2f187e09bdb0 96 // モーター制御の処理
oks486 4:99a67256b765 97 if(speed > 0){
oks486 4:99a67256b765 98 mPwmMotorL = (float)speed/255;
oks486 4:99a67256b765 99 mDoutMotorL1 = 1;
oks486 4:99a67256b765 100 mDoutMotorL2 = 0;
oks486 4:99a67256b765 101 }else if (speed < 0){
oks486 4:99a67256b765 102 mPwmMotorL = -(float)speed/255;
oks486 4:99a67256b765 103 mDoutMotorL1 = 0;
oks486 4:99a67256b765 104 mDoutMotorL2 = 1;
oks486 4:99a67256b765 105 }else{
oks486 4:99a67256b765 106 mPwmMotorL = 0.0;
oks486 4:99a67256b765 107 mDoutMotorL1 = 0;
oks486 4:99a67256b765 108 mDoutMotorL2 = 0;
oks486 4:99a67256b765 109 }
oks486 4:99a67256b765 110
yi 2:2f187e09bdb0 111 }
yi 2:2f187e09bdb0 112 }
yi 2:2f187e09bdb0 113
yi 2:2f187e09bdb0 114
yi 2:2f187e09bdb0 115 void start_shaking_tail(){
yi 2:2f187e09bdb0 116 printf("start_shaking_tail\n");
yi 2:2f187e09bdb0 117
yi 2:2f187e09bdb0 118 // モーター制御の処理
oks486 4:99a67256b765 119 mPwmMotorTail = 0.8;
oks486 4:99a67256b765 120 mDoutMotorTail1 = 1;
oks486 4:99a67256b765 121 mDoutMotorTail2 = 0;
oks486 4:99a67256b765 122
yi 2:2f187e09bdb0 123 }
yi 2:2f187e09bdb0 124
yi 2:2f187e09bdb0 125
yi 2:2f187e09bdb0 126 void stop_shaking_tail(){
yi 2:2f187e09bdb0 127 printf("stop_shaking_tail\n");
yi 2:2f187e09bdb0 128
yi 2:2f187e09bdb0 129 // モーター制御の処理
oks486 4:99a67256b765 130 mPwmMotorTail = 0.0;
oks486 4:99a67256b765 131 mDoutMotorTail1 = 0;
oks486 4:99a67256b765 132 mDoutMotorTail2 = 0;
oks486 4:99a67256b765 133
yi 2:2f187e09bdb0 134 }