Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp
- Committer:
- shimogamo
- Date:
- 2015-10-09
- Revision:
- 5:9a1ec02229dd
- Parent:
- 2:e0f1e8662b8c
- Child:
- 6:0d9fa7152934
File content as of revision 5:9a1ec02229dd:
#include "mbed.h" #include "rtos.h" #include "Global.h" #include "ServoManager.h" #include "ControllerManager.h" #include "Trim.h" #include "Cadence.h" #include "Airspeed.h" #include "Altitude.h" #include "Display.h" #include "XBee.h" #include <string> #define BUFMAX 20 RawSerial pc(USBTX, USBRX); Queue<char, BUFMAX> queue; Display display(p9, p10); XBee xbee(p13, p14); Trim trim(p16, p17, p15); ControllerManager controllerManager(p18,p19,p20); ServoManager servoManager(p21, p22); Airspeed airspeed(p26, NC, NC); Cadence cadence(p29, p30, NC); void pc_rx(){ while(pc.readable()==1){ char buf = pc.getc(); queue.put((char*)buf); } } void initializeTask(void const *pvParametersd){ std::string strbuf; while(1){ osEvent evt = queue.get(); if(evt.status == osEventMessage){ char temp = evt.value.v; strbuf.push_back(temp); if(temp == '\n'){ Global::led1 = 1; std::string::size_type spaceIndex = strbuf.find(" "); if (spaceIndex != std::string::npos) { char *gomi; std::string command = strbuf.substr(0, spaceIndex); double num = strtod(strbuf.substr(spaceIndex+1, strbuf.size()-1).c_str(), &gomi); pc.printf("coms=%s, num=%f\n", command.c_str(), num); if(command == "eleneu"){ Global::setneutralpitch(num); }else if(command == "elemax"){ Global::setmaxpitch(num); }else if(command == "elemin"){ Global::setminpitch(num); }else if(command == "rudneu"){ Global::setneutralyaw(num); }else if(command == "rudmax"){ Global::setmaxyaw(num); }else if(command == "rudmin"){ Global::setminyaw(num); } strbuf.clear(); //ここで,ニュートラル情報をLocalFileに保存 } } Thread::wait(10); if(strbuf.size() >= BUFMAX){ pc.printf("\nInput Error ... "); strbuf.clear(); pc.printf("Buffer clear\n"); } } } } void controlTask(void const *pvParameters){ while(1){ trim.update(); controllerManager.update(); servoManager.update(); Thread::wait(50); } } void airspeedTask(void const *pvParameters){ while(1){ airspeed.update(); Thread::wait(200); } } void cadenceTask(void const *pvParameters){ while(1){ cadence.update(); Thread::wait(200); } } void displayTask(void const *pvParameters){ while(1){ display.update(); Thread::wait(50); } } void xbeeTask(void const *pvParameters){ while(1){ xbee.update(); Thread::wait(50); } } int main(void){ printf("start\n"); pc.attach(pc_rx,Serial::RxIrq); Global::timer.start(); Thread InitializeTask(initializeTask); Thread ControlTask(controlTask); Thread AirspeedTask(airspeedTask); Thread CadenceTask(cadenceTask); Thread DisplayTask(displayTask); Thread XbeeTask(xbeeTask); printf("Task end\n"); Thread::wait(osWaitForever); }