Radio Structures in OOP

Dependencies:   mbed mbed-rtos

main.cpp

Committer:
jjones646
Date:
2015-01-03
Revision:
3:dc7e9c6bc26c
Parent:
2:7d523bdd2f50
Child:
4:989d51f3e6ef

File content as of revision 3:dc7e9c6bc26c:

#include "robot.h"

// Create a file system if needed for writing startup information to the boot log
#if RJ_BOOT_LOG
LocalFileSystem local("local");     // Create the local filesystem object
#endif

DigitalOut led1(LED1);
DigitalOut led2(LED2);
DigitalOut led3(LED3);
DigitalOut led4(LED4);

// Dummy function
void primary_radio_rx_handle(void const *arg)
{
    led3 != led3;
}

// Dummy function
void primary_radio_tx_handle(RTP_t* p)
{
    led4 = 1;
}

// Sets the mbed's baudrate for debugging purposes
void baud(int baudrate)
{
    Serial s(USBTX, USBRX);
    s.baud(baudrate);
}

// Main program operations =======================
int main()
{
    led1 = 1;
    led4 = 0;
    // Set the baud rate
    baud(57600);

// Check the mbed's firmware if enabled
#if RJ_CHECK_FIRMWARE
    std::string firmware;
    firmware_version(firmware);  // this is from FirmwareHelper.h
    LOG("Firmware Version: %s\r\n", firmware.c_str());

// Write any errors to a log file if enabled
#if RJ_BOOT_LOG
    LOG("Begin logging\r\n");
#endif

#endif

    // Create a new physical hardware communication link
    CC1101 radio_900(
        RJ_SPI_BUS,
        RJ_PRIMARY_RADIO_CS,
        RJ_PRIMARY_RADIO_INT
    );

    // Create a Communication Module Object
    CommModule comm;

    //comm.TxHandler((CommLink*)&radio_900, &CommLink::sendPacket, 8);
    comm.TxHandler(primary_radio_tx_handle, 8);


    // Open a socket for the Communication Module. Give it a port number and a function to call when a packet of that port number is received
    comm.openSocket((CommLink*)&radio_900, 8, primary_radio_rx_handle);
    led3 = 1;

    // Create a dummy packet that is set to send out from socket connection 8
    RTP_t dummy_packet;
    dummy_packet.port = 8;
    dummy_packet.subclass = 1;
    for (int i=0; i<20; i++)
        dummy_packet.data[0] = i;

    // Send the packet
    comm.send(dummy_packet);

    // Test sending a packet on a port that has not been setup yet
    dummy_packet.port = 7;
    comm.send(dummy_packet);

    comm.TxHandler(primary_radio_tx_handle, 7);
    comm.openSocket((CommLink*)&radio_900, 7, primary_radio_rx_handle);

    // Enable watchdog timer
    //Watchdog watchdog;
    //watchdog.set(RJ_WATCHDOG_TIMER_VALUE);

    led2 = 0;


    for (int i=1; i<=10000000; i*=10) {
        std::printf("Itterations: %u\r\n", i);
        Timer t;
        t.start();
        
        led2 = 1;
        
        for(int j=0; j<i; j++) {
            comm.send(dummy_packet);
            //osDelay(2);
        }
        
        led2 = 0;

        t.stop();
        std::printf("Timer Reading: %uus\r\n", t.read_us());
    }

    std::printf("Done\r\n");

    while(1) {
        // Renew the watchdog timer through every itteration
        //watchdog.renew();
        led2 = !led2;

        // Delay 1 second
        osDelay(1000);
        led3 != led3;
        osDelay(300);
    }
}