Los Putacos / Mbed OS WearableDevice_Nucleo_New

Dependencies:   MPU9250_SPI

Fork of WearableDevice_Nucleo by Los Putacos

main.cpp

Committer:
Muglug
Date:
2017-10-19
Revision:
20:197c69b38adf
Parent:
19:0a3ae902722e
Child:
23:aad5fd1b3ef9

File content as of revision 20:197c69b38adf:

/*
* Los Putacos
* Copyright (C) 2017, All rights reserved.
* ________________________________________
*
* Created by: Gustavo Campana, Michael Schmidt, Miguel Lopez
*       Date: 11-Oct-2017
*    Version: V0.1
*/

//-----------------------------------------------------------------
//     Board: NUCLEO - F401RE
//   Version: MR1136 rev C
//-----------------------------------------------------------------

//-----------------------------------------------------------------
// Includes
#include "mbed.h"
#include "rtos.h"
#include "mbed_events.h"

#include "configuration.h"
#include "event.h"
#include "pin.h"
#include "MPU9250.h"

#include "XBeeLib.h"
#include "SDFileSystem.h"
//-----------------------------------------------------------------

//-----------------------------------------------------------------
// Declarations
Timer time_stamp;   //Timer µS time-stamp
EventQueue queue(32 * EVENTS_EVENT_SIZE);   //Event

Serial PC(USBTX, USBRX);    // PC Serial (Debug)
// Serial XBeeee(PA_11, PA_12);    // Xbee

// MPU9250 imu; // IMU MPU-9255 by Kris Winer
//-----------------------------------------------------------------

//-----------------------------------------------------------------
// Global Variables
// Your code here!
//-----------------------------------------------------------------
/*
//-----------------------------------------------------------------
void print_event(void const *argv, int i) {
    pc.printf("%d ",i);
    pc.printf((const char*)argv);
    pc.printf("\r\n");
}
//-----------------------------------------------------------------
*/
//-----------------------------------------------------------------
/*void blink_event(DigitalOut pin){
    pin = !pin;
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
void println_event(){
    pc.printf("Arroz, feijao e batata\r\n");
}
//-----------------------------------------------------------------
*/
//-----------------------------------------------------------------
void Setup()
{
    // PC Serial (Debug) baudrate
    PC.baud(9600);
    PC.printf("CPU SystemCoreClock is %d Hz\r\n", SystemCoreClock);

    // XBeeee.baud(9600);

    // Task queue
    // int task1_id = queue.call_every(1000, printf, "called every 1 seconds\n");
    // int task2_id = queue.call_every(2500, printf, "called every 2.5 seconds\n");
    // int task3_id = queue.call_every(3000, &print_event, (void *)"called every 3 seconds\n", (int) time_stamp.read());
    // int task4_id = queue.call_every(50, blink_event, led1);
    // int task5_id = queue.call_every(500, println_event);
    // int task6_id = queue.call_every(500, readIMU);
    // int task7_id = queue.call_every(500, gayEvent);
}
//-----------------------------------------------------------------

//-----------------------------------------------------------------
/*void initMPU9250()
{
// Initialize MPU9250 device
// wake up device
    imu.writeByte(MPU9250_ADDRESS, PWR_MGMT_1, 0x00); // Clear sleep mode bit (6), enable all sensors
}*/

//-----------------------------------------------------------------

using namespace XBeeLib;

/** Callback function, invoked at packet reception */
static void receive_cb(const RemoteXBeeZB& remote, bool broadcast, const uint8_t *const data, uint16_t len)
{
    for (int i = 0; i < len; i++)
        PC.printf("%c", data[i]);

    PC.printf("\r\n");
}
// Create an SDFileSystem object
SDFileSystem sd(SD_MOSI, SD_MISO, SD_CLK, SD_CS, "sd");

//-----------------------------------------------------------------
int main()
{
    Setup();    // Initial Setups
    const uint8_t data[] = "Hello Master!";
    const uint16_t data_len = sizeof data / sizeof data[0] - 1;

    XBeeZB XBee = XBeeZB(RADIO_TX, RADIO_RX, RADIO_RESET, NC, NC, 115200);
    XBee.init();

    /* Register callbacks */
    XBee.register_receive_cb(&receive_cb);
    time_stamp.start(); // Start Timer

    // Mount the filesystem
    sd.mount();

    if (sd.card_present())
        PC.printf("Good");
    else
        PC.printf("Meh");

    // Reading the analog input (Microphone)
    // array = micro.read_u16();


    // Performing Write Test
    PC.printf("\nWriting to SD card...");
    FILE *fp = fopen("sdtest.txt", "w");
    if (fp != NULL) {
        fclose(fp);
        PC.printf(" Success!\n");
    } else {
        PC.printf(" Failed!\n");
    }

    // Performing Read Test
    PC.printf("Reading from SD card...");
    fp = fopen("/sd/sdtest.txt", "r");
    if (fp != NULL) {
        char c = fgetc(fp);
        if (c == 'W')
            PC.printf(" Success!\n");
        else
            PC.printf("Incorrect Character! (%c)!\n", c);
        fclose(fp);
    } else {
        PC.printf(" Failed!\n");
    }

    led1 = 1;
    while (true) {
        // queue.dispatch();
        XBee.process_rx_frames();

        TxStatus txStatus = XBee.send_data_to_coordinator(data, data_len);
        if (txStatus != TxStatusSuccess) {
            PC.printf("send_data_broadcast() failed with error %d\n", (int)txStatus);
        }
    }

    // Unmount the Filesystem
    sd.unmount();
}
//-----------------------------------------------------------------