kubtss / Mbed 2 deprecated BIRD2017

Dependencies:   mbed-rtos mbed

main.cpp

Committer:
shimogamo
Date:
2015-11-28
Revision:
12:8e39bb45c61c
Parent:
11:af917eb0e624
Child:
13:a8e10a69df45

File content as of revision 12:8e39bb45c61c:

//@todo Initのコマンドモード化or別プログラム化

//@todo ソフトウェアシリアルの確認等

//@todo androidとの通信
//@todo xbeeとの通信

//@todo 高度計の追加

//@todo Cadence, Airspeed内でNC,Encorderクラスから継承

//@todo 使っているライブラリの関数の説明追加

#include "mbed.h"
#include "rtos.h"
#include "Global.h"
#include "Init.h"
#include "ServoManager.h"
#include "ControllerManager.h"
#include "Trim.h"
#include "Cadence.h"
#include "Airspeed.h"
#include "Display.h"
#include "XBee.h"


RawSerial pc(USBTX, USBRX);

Cadence cadence(p11, p12, NC);
Display display(p13, p14);//tx, rx
ControllerManager controllerManager(p15,p16,p17,p18);//ele, rud, eletrimup, eletrimdown
ServoManager servoManager(p21, p22);//ele, rud
DigitalOut wdt(p26);
XBee xbee(p28, p27);//tx, rx
Airspeed airspeed(p29, NC, NC);//p19,p20をInterruptInに使ってはいけない


void pc_rx(){
    while(pc.readable()==1){
        //コマンドモードのon,offはここに入れる
        char buf = (char)pc.getc();
        Global::initqueue.put((char*)buf);
    }
}



void initializeTask(void const *pvParameters){
    while(1){
        Init::getSerial();
    }
}

void controlTask(void const *pvParameters){
    while(1){
        //この中でprintfはしないほうがいいみたい(9600bpsだと遅延が起こります)
        controllerManager.update();
        servoManager.update();
        wdt = !wdt;
        Thread::wait(50);
    }
}

void airspeedTask(void const *pvParameters){
    while(1){
        airspeed.update();
        Thread::wait(500);
    }
}
    
void cadenceTask(void const *pvParameters){
    while(1){
        cadence.update();
        Thread::wait(500);
    }
}

void displayTask(void const *pvParameters){
    while(1){
        display.update();
        Thread::wait(100);
    }   
}

void xbeeTask(void const *pvParameters){
    while(1){
        xbee.update();
        Thread::wait(500);
    }
}


int main(void){
    printf("start\n");
    
    pc.attach(pc_rx,Serial::RxIrq);

    Global::initialize();
    Thread InitializeTask(initializeTask);
    Thread ControlTask(controlTask, NULL, osPriorityRealtime);
    Thread AirspeedTask(airspeedTask);
    Thread CadenceTask(cadenceTask);
    Thread DisplayTask(displayTask);
    Thread XbeeTask(xbeeTask);
    printf("Task end\n");
    
    Thread::wait(osWaitForever);   
}