Los Putacos / Mbed OS WearableDevice_Nucleo_New

Dependencies:   MPU9250_SPI

Fork of WearableDevice_Nucleo by Los Putacos

main.cpp

Committer:
Muglug
Date:
2017-10-18
Revision:
18:7f9c2b8541e1
Parent:
17:f98597cd2efc
Child:
19:0a3ae902722e

File content as of revision 18:7f9c2b8541e1:

/*
* 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"
//-----------------------------------------------------------------

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

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


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

    time_stamp.start(); // Start timer

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