kubtss / Mbed 2 deprecated BIRD2017

Dependencies:   mbed-rtos mbed

Committer:
shimogamo
Date:
Mon Mar 28 09:01:00 2016 +0000
Revision:
17:887cfe1d309f
Parent:
12:8e39bb45c61c
Child:
21:b1419813f2d4
??????1??????????????????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
shimogamo 9:d1fc0805ec7d 1 #include "mbed.h"
shimogamo 9:d1fc0805ec7d 2 #include "Global.h"
shimogamo 9:d1fc0805ec7d 3 #include "Init.h"
shimogamo 9:d1fc0805ec7d 4 #include <string>
shimogamo 9:d1fc0805ec7d 5 #include <iostream>
shimogamo 9:d1fc0805ec7d 6
shimogamo 9:d1fc0805ec7d 7 std::string Init::strbuf;
shimogamo 9:d1fc0805ec7d 8
shimogamo 9:d1fc0805ec7d 9 void Init::getSerial(){
shimogamo 12:8e39bb45c61c 10 osEvent evt = Global::initqueue.get();
shimogamo 9:d1fc0805ec7d 11 if(evt.status == osEventMessage){
shimogamo 9:d1fc0805ec7d 12 char temp = evt.value.v;
shimogamo 9:d1fc0805ec7d 13 strbuf.push_back(temp);
shimogamo 9:d1fc0805ec7d 14 if(temp == '\n'){
shimogamo 9:d1fc0805ec7d 15 std::string::size_type spaceIndex = strbuf.find(" ");
shimogamo 9:d1fc0805ec7d 16
shimogamo 9:d1fc0805ec7d 17 if (spaceIndex != std::string::npos) {//数値データがあるコマンド(" "がある場合)
shimogamo 9:d1fc0805ec7d 18 char *gomi;
shimogamo 9:d1fc0805ec7d 19 std::string command = strbuf.substr(0, spaceIndex);
shimogamo 9:d1fc0805ec7d 20 double num = strtod(strbuf.substr(spaceIndex+1, strbuf.size()-2).c_str(), &gomi);//strbuf.size()-1には'\n'が入っている
shimogamo 9:d1fc0805ec7d 21 printf("coms=%s, num=%f\n", command.c_str(), num);
shimogamo 9:d1fc0805ec7d 22 setting(command, num);
shimogamo 9:d1fc0805ec7d 23
shimogamo 9:d1fc0805ec7d 24 }else{//数値データがないコマンド(" "がない場合)
shimogamo 9:d1fc0805ec7d 25 std::string command = strbuf.substr(0,strbuf.size()-2);
shimogamo 9:d1fc0805ec7d 26 setting(command);
shimogamo 9:d1fc0805ec7d 27 }
shimogamo 9:d1fc0805ec7d 28 //ここで,ニュートラル情報をLocalFileに保存
shimogamo 9:d1fc0805ec7d 29 Global::filewrite();
shimogamo 9:d1fc0805ec7d 30 strbuf.clear();
shimogamo 9:d1fc0805ec7d 31 }
shimogamo 9:d1fc0805ec7d 32 if(strbuf.size() > 30)strbuf.clear();
shimogamo 9:d1fc0805ec7d 33 }
shimogamo 9:d1fc0805ec7d 34 }
shimogamo 9:d1fc0805ec7d 35
shimogamo 9:d1fc0805ec7d 36
shimogamo 9:d1fc0805ec7d 37 void Init::setting(std::string command, double num){
shimogamo 9:d1fc0805ec7d 38 if(command == "eleneu"){
shimogamo 9:d1fc0805ec7d 39 Global::setneutralpitch(num);
shimogamo 9:d1fc0805ec7d 40 }else if(command == "elemax"){
shimogamo 9:d1fc0805ec7d 41 Global::setmaxpitch(num);
shimogamo 9:d1fc0805ec7d 42 }else if(command == "elemin"){
shimogamo 9:d1fc0805ec7d 43 Global::setminpitch(num);
shimogamo 9:d1fc0805ec7d 44 }else if(command == "rudneu"){
shimogamo 9:d1fc0805ec7d 45 Global::setneutralyaw(num);
shimogamo 9:d1fc0805ec7d 46 }else if(command == "rudmax"){
shimogamo 9:d1fc0805ec7d 47 Global::setmaxyaw(num);
shimogamo 9:d1fc0805ec7d 48 }else if(command == "rudmin"){
shimogamo 9:d1fc0805ec7d 49 Global::setminyaw(num);
shimogamo 9:d1fc0805ec7d 50
shimogamo 9:d1fc0805ec7d 51 }else if(command == "eleneudeg"){
shimogamo 9:d1fc0805ec7d 52 Global::setneutralpitchdegree(num);
shimogamo 9:d1fc0805ec7d 53 }else if(command == "elemaxdeg"){
shimogamo 9:d1fc0805ec7d 54 Global::setmaxpitchdegree(num);
shimogamo 9:d1fc0805ec7d 55 }else if(command == "elemindeg"){
shimogamo 9:d1fc0805ec7d 56 Global::setminpitchdegree(num);
shimogamo 9:d1fc0805ec7d 57 }else if(command == "rudneudeg"){
shimogamo 9:d1fc0805ec7d 58 Global::setneutralyawdegree(num);
shimogamo 9:d1fc0805ec7d 59 }else if(command == "rudmaxdeg"){
shimogamo 9:d1fc0805ec7d 60 Global::setmaxyawdegree(num);
shimogamo 9:d1fc0805ec7d 61 }else if(command == "rudmindeg"){
shimogamo 9:d1fc0805ec7d 62 Global::setminyawdegree(num);
shimogamo 9:d1fc0805ec7d 63
shimogamo 9:d1fc0805ec7d 64 }else if(command == "elemaxplay"){
shimogamo 9:d1fc0805ec7d 65 Global::setmaxpitchplayratio(num);
shimogamo 9:d1fc0805ec7d 66 }else if(command == "eleminplay"){
shimogamo 9:d1fc0805ec7d 67 Global::setminpitchplayratio(num);
shimogamo 9:d1fc0805ec7d 68 }else if(command == "rudmaxplay"){
shimogamo 9:d1fc0805ec7d 69 Global::setmaxyawplayratio(num);
shimogamo 9:d1fc0805ec7d 70 }else if(command == "rudminplay"){
shimogamo 9:d1fc0805ec7d 71 Global::setminyawplayratio(num);
shimogamo 9:d1fc0805ec7d 72 }else if(command == "eletrim"){
shimogamo 9:d1fc0805ec7d 73 Global::settrimpitchrate(num);
shimogamo 9:d1fc0805ec7d 74
shimogamo 9:d1fc0805ec7d 75 }else{
shimogamo 9:d1fc0805ec7d 76 printf("Invalid Input\n");
shimogamo 9:d1fc0805ec7d 77 }
shimogamo 9:d1fc0805ec7d 78 }
shimogamo 9:d1fc0805ec7d 79
shimogamo 9:d1fc0805ec7d 80 void Init::setting(std::string command){
shimogamo 9:d1fc0805ec7d 81 if(command == "eleneu"){
shimogamo 9:d1fc0805ec7d 82 Global::setneutralpitch(Global::getpitch());
shimogamo 9:d1fc0805ec7d 83 }else if(command == "elemax"){
shimogamo 9:d1fc0805ec7d 84 Global::setmaxpitch(Global::getpitch());
shimogamo 9:d1fc0805ec7d 85 }else if(command == "elemin"){
shimogamo 9:d1fc0805ec7d 86 Global::setminpitch(Global::getpitch());
shimogamo 9:d1fc0805ec7d 87 }else if(command == "rudneu"){
shimogamo 9:d1fc0805ec7d 88 Global::setneutralyaw(Global::getyaw());
shimogamo 9:d1fc0805ec7d 89 }else if(command == "rudmax"){
shimogamo 9:d1fc0805ec7d 90 Global::setmaxyaw(Global::getyaw());
shimogamo 9:d1fc0805ec7d 91 }else if(command == "rudmin"){
shimogamo 9:d1fc0805ec7d 92 Global::setminyaw(Global::getyaw());
shimogamo 9:d1fc0805ec7d 93
shimogamo 9:d1fc0805ec7d 94 }else if(command == "eleneudeg"){
shimogamo 9:d1fc0805ec7d 95 Global::setneutralpitchdegree(Global::getpitchdegree());
shimogamo 9:d1fc0805ec7d 96 }else if(command == "elemaxdeg"){
shimogamo 9:d1fc0805ec7d 97 Global::setmaxpitchdegree(Global::getpitchdegree());
shimogamo 9:d1fc0805ec7d 98 }else if(command == "elemindeg"){
shimogamo 9:d1fc0805ec7d 99 Global::setminpitchdegree(Global::getpitchdegree());
shimogamo 9:d1fc0805ec7d 100 }else if(command == "rudneudeg"){
shimogamo 9:d1fc0805ec7d 101 Global::setneutralyawdegree(Global::getyawdegree());
shimogamo 9:d1fc0805ec7d 102 }else if(command == "rudmaxdeg"){
shimogamo 9:d1fc0805ec7d 103 Global::setmaxyawdegree(Global::getyawdegree());
shimogamo 9:d1fc0805ec7d 104 }else if(command == "rudmindeg"){
shimogamo 9:d1fc0805ec7d 105 Global::setminyawdegree(Global::getyawdegree());
shimogamo 10:0a4bf8c82493 106
shimogamo 9:d1fc0805ec7d 107 }else if(command == "show"){
shimogamo 9:d1fc0805ec7d 108 showParam();
shimogamo 9:d1fc0805ec7d 109
shimogamo 9:d1fc0805ec7d 110 }else{
shimogamo 9:d1fc0805ec7d 111 printf("Invalid Input\n");
shimogamo 9:d1fc0805ec7d 112 }
shimogamo 9:d1fc0805ec7d 113 }
shimogamo 9:d1fc0805ec7d 114
shimogamo 9:d1fc0805ec7d 115 void Init::showParam(){
shimogamo 17:887cfe1d309f 116 printf("------Servo Parameter------\n");
shimogamo 17:887cfe1d309f 117 printf("elevatorNeutral(eleneu) = %f\n", Global::getneutralpitch());
shimogamo 17:887cfe1d309f 118 printf("elevatorMax(elemax) = %f\n", Global::getmaxpitch());
shimogamo 17:887cfe1d309f 119 printf("elevatorMin(elemin) = %f\n", Global::getminpitch());
shimogamo 17:887cfe1d309f 120 printf("rudderNeutral(rudneu) = %f\n", Global::getneutralyaw());
shimogamo 17:887cfe1d309f 121 printf("rudderMax(rudmax) = %f\n", Global::getmaxyaw());
shimogamo 17:887cfe1d309f 122 printf("rudderMin(rudmin) = %f\n", Global::getminyaw());
shimogamo 9:d1fc0805ec7d 123 printf("----Controller Parameter----\n");
shimogamo 17:887cfe1d309f 124 printf("elevatorNeutral(eleneudeg) = %f\n", Global::getneutralpitchdegree());
shimogamo 17:887cfe1d309f 125 printf("elevatorMax(elemaxdeg) = %f\n", Global::getmaxpitchdegree());
shimogamo 17:887cfe1d309f 126 printf("elevatorMin(elemindeg) = %f\n", Global::getminpitchdegree());
shimogamo 17:887cfe1d309f 127 printf("rudderNeutral(rudneudeg) = %f\n", Global::getneutralyawdegree());
shimogamo 17:887cfe1d309f 128 printf("rudderMax(rudmaxdeg) = %f\n", Global::getmaxyawdegree());
shimogamo 17:887cfe1d309f 129 printf("rudderMin(rudmindeg) = %f\n", Global::getminyawdegree());
shimogamo 17:887cfe1d309f 130 printf("-------Play Parameter-------\n");
shimogamo 17:887cfe1d309f 131 printf("elevatorMaxPlay(elemaxplay) = %f\n", Global::getmaxpitchplayratio());
shimogamo 17:887cfe1d309f 132 printf("elevatorMinPlay(eleminplay) = %f\n", Global::getminpitchplayratio());
shimogamo 17:887cfe1d309f 133 printf("rudderMaxPlay(rudmaxplay) = %f\n", Global::getmaxyawplayratio());
shimogamo 17:887cfe1d309f 134 printf("rudderMinPlay(rudminplay) = %f\n", Global::getminyawplayratio());
shimogamo 9:d1fc0805ec7d 135 printf("-------Trim Parameter-------\n");
shimogamo 17:887cfe1d309f 136 printf("elevatorTrimRate(eletrim) = %f\n", Global::gettrimpitchrate());
shimogamo 17:887cfe1d309f 137 printf("----------------------------\n");
shimogamo 9:d1fc0805ec7d 138 }