kubtss / Mbed 2 deprecated BIRD2017

Dependencies:   mbed-rtos mbed

main.cpp

Committer:
shimogamo
Date:
2015-11-28
Revision:
11:af917eb0e624
Parent:
10:0a4bf8c82493
Child:
12:8e39bb45c61c

File content as of revision 11:af917eb0e624:

//@todo timerの精度の確認

//@todo Initのコマンドモード化

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

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

//@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 "Altitude.h"
#include "Display.h"
#include "XBee.h"


RawSerial pc(USBTX, USBRX);

Cadence cadence(p11, p12, NC);
Display display(p13, p14);
ControllerManager controllerManager(p8,p15,p16);
Trim trim(p17, p18);
ServoManager servoManager(p21, p22);
DigitalOut resetSw(p26);
XBee xbee(p28, p27);
Airspeed airspeed(p29, NC, NC);//p19,p20をinterruptに使ってはいけない


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



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

void controlTask(void const *pvParameters){
    while(1){
        //この中でprintfはしないほうがいいみたい(9600bpsだと遅延が起こります)
        trim.update();
        controllerManager.update();
        servoManager.update();
        resetSw = !resetSw;
        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);   
}