B+IMU+SD

Dependencies:   BMI160 RTC SDFileSystem USBDevice max32630fthr sd-driver

Fork of MPSMAXbutton by Faizan Ahmad

main.cpp

Committer:
FaizanAhmad
Date:
2018-05-07
Revision:
0:769c5a7b3939
Child:
1:6b969a803e1b
Child:
3:bd223559f79b

File content as of revision 0:769c5a7b3939:

#include "mbed.h"
#include "max32630fthr.h"
#include "USBSerial.h"
#include "Default.h"
#include "DefaultRequired.h"

#if (MBED_MAJOR_VERSION == 2)
#include    "SDFileSystem.h"
#elif (MBED_MAJOR_VERSION == 5)
#include    "SDBlockDevice.h"
#include    "FATFileSystem.h"
#endif

#include    <stdlib.h>
#include "main.h"

MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
Serial _serialport(USBTX,USBRX);
DigitalOut LED(P3_1);
DigitalOut Ctrl(P6_0);

DigitalOut rLED(LED1);
DigitalOut gLED(LED2);
DigitalOut bLED(LED3);


#if (MBED_MAJOR_VERSION == 2)
SDFileSystem    sd(D11, D12, D13, D10, "fs");  // do,di,clk,cs
#elif (MBED_MAJOR_VERSION == 5)
//SDBlockDevice   sd(D11, D12, D13, D10, 8000000);
SDBlockDevice   sd(SPI0_MOSI, SPI0_MISO, SPI0_SCK, SPI0_SS, 8000000);    // For MAX32630FTHR
FATFileSystem   fs("fs");
#endif

void Rx_interrupt(void);

Default default_SM;
bool is_smactive;

// main() runs in its own thread in the OS
// (note the calls to Thread::wait below for delays)
int main()
{
    _serialport.attach(&Rx_interrupt);
    gLED = LED_ON;
    rLED = LED_ON;
    
    _serialport.printf("in main\r\n");
    _serialport.printf("before init\r\n");
    
#if (MBED_MAJOR_VERSION == 5)
    /* Init SD CARD reader */
    sd.init();
    fs.mount(&sd);
#endif
    FILE* fp = fopen("/fs/somefile.txt", "a");
    if (fp != 0) 
    {
        _serialport.printf("writing adasda\n\r\n");
        fprintf(fp,"writing asdasdasd\n\r\n");
    } else 
    {
        _serialport.printf("ERROR\r\n");
    }
    fclose(fp);
    
    
    /* initialize state machine*/
    default_init(&default_SM);
    default_enter(&default_SM);
    is_smactive = false;
    
    while(1) 
    {
        if(is_smactive == true)
        {
           // _serialport.printf("state active\n");
            is_smactive = false;
            default_runCycle(&default_SM);  
        }  
    }
}

/* Call back from Interrupt when Receiving Serial data*/

void Rx_interrupt(void)
{
    char keypress = '\0';
    keypress = _serialport.getc();
    /**Actions on received data*/
    switch(keypress) {
        default:
            break;

        case 'Q':
            _serialport.printf("Q");
            defaultIface_raise_mode(&default_SM);
            is_smactive = true;
            break;

        case 'W':
            _serialport.printf("W ");
            defaultIface_raise_up(&default_SM);
            is_smactive = true;
            break;

        case 'E':
            _serialport.printf("E ");
            defaultIface_raise_down(&default_SM);
            is_smactive = true;
            break;

        case 'R':
            _serialport.printf("R ");
            defaultIface_raise_back(&default_SM);
            is_smactive = true;
            break;

        case 'T':
            _serialport.printf("T ");
            defaultIface_raise_home(&default_SM);
            is_smactive = true;
            break;
    }

}

void PrintStatus_Serial(int val )
{
    switch(val)
    {
        case 1:
        _serialport.printf("Menu Selected\n");
        break;
        
        case 2:
        _serialport.printf("function \n");
        break;
        
        case 3:
        _serialport.printf("execute\n");
        break;
        
        case 4:
        _serialport.printf("ready\n");
        break;
        
        case 5:
        _serialport.printf("active\n");
        break;
        
        case 6:
        _serialport.printf("alarm\n");
        break;
        
         case 7:
        _serialport.printf("move down act\n");
        break;
        
         case 8:
        _serialport.printf("move up act\n");
        break;
        
        case 9:
        _serialport.printf("return\n");
        break;
        
        default:
        break;
    }

    }