kubtss / Mbed 2 deprecated BIRD2017

Dependencies:   mbed-rtos mbed

main.cpp

Committer:
shimogamo
Date:
2015-10-14
Revision:
9:d1fc0805ec7d
Parent:
8:ca92cb674004
Child:
10:0a4bf8c82493

File content as of revision 9:d1fc0805ec7d:

//@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);


Display display(p9, p10);
XBee xbee(p13, p14);
Trim trim(p16, p17);
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 = (char)pc.getc();
        Global::queue.put((char*)buf);
    }
}



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

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(500);
    }
}
    
void cadenceTask(void const *pvParameters){
    while(1){
        cadence.update();
        Thread::wait(500);
    }
}

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

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);   
}