Latest

Dependencies:   serial_terminal sample_hardware PLL_Config SDCard BMP280 Networkbits TextLCD SDBlockDevice

main.cpp

Committer:
Swabey89
Date:
2018-11-10
Revision:
10:0fffc988d325
Parent:
9:fa8a35d9d6c0
Child:
11:3ad0327e8c9f

File content as of revision 10:0fffc988d325:

#include "mbed.h"
#include "sample_hardware.hpp"
#include "Networkbits.hpp"
#include "serial_terminal.hpp"
#include "SDCard.hpp"
#include "rtos.h"
#include "mbed_events.h"
#include "LCDdisplay.hpp"


//Signals
#define TAKE_SAMPLE 1



float sample_rate = 15;
//bool sample_enable = true;

//Queues
EventQueue SDqueue;
EventQueue LCDqueue;

//Threads
Thread SDqueue_thread(32*EVENTS_EVENT_SIZE);
Thread LCDqueue_thread(32*EVENTS_EVENT_SIZE);
Thread sterm_thread;
Thread sample_thread(osPriorityHigh);
//Thread ntwkthread

Ticker sample;

void sampleISR(void);
void takesample(void);
void samples(void);


FILE* fp;
FATFileSystem* fs;

int main() {     
    //Move threads into a thread init function?
    SDqueue_thread.start(callback(&SDqueue, &EventQueue::dispatch_forever));
    LCDqueue_thread.start(callback(&LCDqueue, &EventQueue::dispatch_forever));
    
    sterm_thread.start(serialterm);
    sample_thread.start(samples);
    
    //Initialise, move into initialise function
    SDcard();
    
    
    //Greeting
    printf("Testing\n\n");  
     
    
    //Power on self test
    post();
    
    printf("Send commands\n\r");
    
    sample.attach(&sampleISR, sample_rate);
        
    
    //Flash to indicate goodness
    while(true) {
        greenLED = !greenLED;
        Thread::wait(500);    
    }
}

void sampleISR()
{
    sample_thread.signal_set(TAKE_SAMPLE);   
}

void samples()
{
    while(true)
    {
        //High priority thread 
        Thread::signal_wait(TAKE_SAMPLE);
        
        double temp = sensor.getTemperature();
        double pressure = sensor.getPressure();
        
        //Pass onto queues
        LCDqueue.call(LCD_display,temp,pressure);
        SDqueue.call(SDaddSample,temp,pressure);
    }
}