Jonathan Jones
/
Radios
Radio Structures in OOP
Diff: main.cpp
- Revision:
- 2:7d523bdd2f50
- Parent:
- 1:c935902c73ef
- Child:
- 3:dc7e9c6bc26c
--- a/main.cpp Tue Dec 09 02:19:28 2014 +0000 +++ b/main.cpp Sun Dec 28 06:05:17 2014 +0000 @@ -1,18 +1,98 @@ -#include "mbed.h" #include "robot.h" -void main() +// 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 + +// Dummy function +void callback(void const *arg) { + while(1) { + // do nothing - function declared for compile testing purposes + } +} - CC1101 radio( +// Sets the mbed's baudrate for debugging purposes +void baud(int baudrate) +{ + Serial s(USBTX, USBRX); + s.baud(baudrate); +} + +// Main program operations ======================= +int main() +{ + // Set the baud rate + baud(57600); + + /* Old implementation of CC1101 constructor + CC1101 radio_900( RJ_SPI_BUS, RJ_PRIMARY_RADIO_CS, RJ_TX_LED, RJ_RX_LED, RJ_PRIMARY_RADIO_INT ); + */ + +// Check the mbed's firmware if enabled +#if RJ_CHECK_FIRMWARE +// Write any errors to a log file if enabled +#if RJ_BOOT_LOG + FILE *fp = fopen("/local/log.txt", "w"); // Open text file for tracking boot sequence results + if (fp == NULL) { + error("Could not get pointer to log file\r\n"); + } + std::string firmware = firmware_version(); // this is from FirmwareHelper.h + fprintf(fp, "Start Logging...\r\nFirmware Version: %s\r\n", firmware.c_str()); + fclose(fp); // close the file pointer +#endif +#endif + + // Create an LED to signal mbed activity + DigitalOut temp_led(RJ_MISC_LED); + temp_led = 1; // initialize to an ON state + + // Create a new physical hardware communication link + CC1101 radio; + + // Get a pointer to the neqly created communiication link + CommLink *link; + link = &radio; + + // Create a Communication Module Object + CommModule comm; + + // Let the Communication Module Object know of the physical hardware link + comm.setLink(link); + + // 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(8, &callback); + + // Create an example RTP packet + RTP_t packet; + packet.port = 2; + packet.subclass = 1; + packet.data[0] = 2; + + // Send the packet (without explicitly having to state which interface the communication will be implemented on - if multiple CommLink objects were present) + comm.send(packet); + + // Enable watchdog timer + Watchdog watchdog; + watchdog.set(RJ_WATCHDOG_TIMER_VALUE); + + // Variable for the first thread's status after each delay period + osStatus status; while(1) { - + // Renew the watchdog timer through every itteration + watchdog.renew(); + + // Cycle the LED state + temp_led = !temp_led; + + // Delay 1 second + status = osDelay(1000); } - } \ No newline at end of file