Radio Structures in OOP

Dependencies:   mbed mbed-rtos

Committer:
jjones646
Date:
Wed Jan 14 17:46:44 2015 +0000
Revision:
5:146523a0d1f4
Parent:
4:989d51f3e6ef
Child:
6:4a3dbfbc30f1
wrapping up functionality of sockets"

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jjones646 1:c935902c73ef 1 #include "robot.h"
jjones646 1:c935902c73ef 2
jjones646 2:7d523bdd2f50 3 // Create a file system if needed for writing startup information to the boot log
jjones646 2:7d523bdd2f50 4 #if RJ_BOOT_LOG
jjones646 2:7d523bdd2f50 5 LocalFileSystem local("local"); // Create the local filesystem object
jjones646 2:7d523bdd2f50 6 #endif
jjones646 5:146523a0d1f4 7 DigitalOut ll(p5, 1); // trigger for logic analyzer
jjones646 3:dc7e9c6bc26c 8 DigitalOut led1(LED1);
jjones646 3:dc7e9c6bc26c 9 DigitalOut led2(LED2);
jjones646 3:dc7e9c6bc26c 10 DigitalOut led3(LED3);
jjones646 3:dc7e9c6bc26c 11 DigitalOut led4(LED4);
jjones646 3:dc7e9c6bc26c 12
jjones646 5:146523a0d1f4 13 Serial pc(USBTX, USBRX);
jjones646 5:146523a0d1f4 14
jjones646 2:7d523bdd2f50 15 // Dummy function
jjones646 4:989d51f3e6ef 16 void primary_radio_rx_handle(void)
jjones646 1:c935902c73ef 17 {
jjones646 3:dc7e9c6bc26c 18 led3 != led3;
jjones646 3:dc7e9c6bc26c 19 }
jjones646 5:146523a0d1f4 20 /*
jjones646 3:dc7e9c6bc26c 21 // Dummy function
jjones646 3:dc7e9c6bc26c 22 void primary_radio_tx_handle(RTP_t* p)
jjones646 3:dc7e9c6bc26c 23 {
jjones646 5:146523a0d1f4 24 led4 = !led4;
jjones646 2:7d523bdd2f50 25 }
jjones646 5:146523a0d1f4 26 */
jjones646 5:146523a0d1f4 27
jjones646 1:c935902c73ef 28
jjones646 2:7d523bdd2f50 29 // Sets the mbed's baudrate for debugging purposes
jjones646 2:7d523bdd2f50 30 void baud(int baudrate)
jjones646 2:7d523bdd2f50 31 {
jjones646 2:7d523bdd2f50 32 Serial s(USBTX, USBRX);
jjones646 2:7d523bdd2f50 33 s.baud(baudrate);
jjones646 2:7d523bdd2f50 34 }
jjones646 2:7d523bdd2f50 35
jjones646 2:7d523bdd2f50 36 // Main program operations =======================
jjones646 2:7d523bdd2f50 37 int main()
jjones646 2:7d523bdd2f50 38 {
jjones646 5:146523a0d1f4 39
jjones646 3:dc7e9c6bc26c 40 led4 = 0;
jjones646 5:146523a0d1f4 41 // Set the baud rate
jjones646 2:7d523bdd2f50 42 baud(57600);
jjones646 2:7d523bdd2f50 43
jjones646 2:7d523bdd2f50 44 // Check the mbed's firmware if enabled
jjones646 2:7d523bdd2f50 45 #if RJ_CHECK_FIRMWARE
jjones646 3:dc7e9c6bc26c 46 std::string firmware;
jjones646 3:dc7e9c6bc26c 47 firmware_version(firmware); // this is from FirmwareHelper.h
jjones646 3:dc7e9c6bc26c 48 LOG("Firmware Version: %s\r\n", firmware.c_str());
jjones646 3:dc7e9c6bc26c 49
jjones646 2:7d523bdd2f50 50 // Write any errors to a log file if enabled
jjones646 2:7d523bdd2f50 51 #if RJ_BOOT_LOG
jjones646 3:dc7e9c6bc26c 52 LOG("Begin logging\r\n");
jjones646 2:7d523bdd2f50 53 #endif
jjones646 3:dc7e9c6bc26c 54
jjones646 2:7d523bdd2f50 55 #endif
jjones646 2:7d523bdd2f50 56
jjones646 5:146523a0d1f4 57 DigitalOut temppp(RJ_PRIMARY_RADIO_INT, 1);
jjones646 5:146523a0d1f4 58 temppp = 0;
jjones646 5:146523a0d1f4 59 temppp = 1;
jjones646 5:146523a0d1f4 60
jjones646 5:146523a0d1f4 61 // Create a new physical hardware communication link
jjones646 3:dc7e9c6bc26c 62 CC1101 radio_900(
jjones646 3:dc7e9c6bc26c 63 RJ_SPI_BUS,
jjones646 3:dc7e9c6bc26c 64 RJ_PRIMARY_RADIO_CS,
jjones646 3:dc7e9c6bc26c 65 RJ_PRIMARY_RADIO_INT
jjones646 3:dc7e9c6bc26c 66 );
jjones646 5:146523a0d1f4 67
jjones646 5:146523a0d1f4 68 radio_900.selfTest();
jjones646 5:146523a0d1f4 69
jjones646 5:146523a0d1f4 70 radio_900.status(CCXXX1_MARCSTATE);
jjones646 2:7d523bdd2f50 71
jjones646 5:146523a0d1f4 72 // Create a Communication Module Object
jjones646 2:7d523bdd2f50 73 CommModule comm;
jjones646 5:146523a0d1f4 74 radio_900.setCommModule(comm);
jjones646 4:989d51f3e6ef 75 comm.TxHandler((CommLink*)&radio_900, &CommLink::sendPacket, 8);
jjones646 5:146523a0d1f4 76 //comm.RxHandler((CommLink*)&radio_900, &CommLink::ISR, 8);
jjones646 4:989d51f3e6ef 77 comm.openSocket(8);
jjones646 2:7d523bdd2f50 78
jjones646 5:146523a0d1f4 79 // 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
jjones646 3:dc7e9c6bc26c 80 led3 = 1;
jjones646 3:dc7e9c6bc26c 81
jjones646 5:146523a0d1f4 82 // Create a dummy packet that is set to send out from socket connection 8
jjones646 3:dc7e9c6bc26c 83 RTP_t dummy_packet;
jjones646 3:dc7e9c6bc26c 84 dummy_packet.port = 8;
jjones646 3:dc7e9c6bc26c 85 dummy_packet.subclass = 1;
jjones646 3:dc7e9c6bc26c 86 for (int i=0; i<20; i++)
jjones646 3:dc7e9c6bc26c 87 dummy_packet.data[0] = i;
jjones646 2:7d523bdd2f50 88
jjones646 5:146523a0d1f4 89 // Enable watchdog timer
jjones646 5:146523a0d1f4 90 //Watchdog watchdog;
jjones646 5:146523a0d1f4 91 //watchdog.set(RJ_WATCHDOG_TIMER_VALUE);
jjones646 3:dc7e9c6bc26c 92
jjones646 5:146523a0d1f4 93 led1 = 0;
jjones646 1:c935902c73ef 94
jjones646 1:c935902c73ef 95 while(1) {
jjones646 5:146523a0d1f4 96 led1 = !led1;
jjones646 5:146523a0d1f4 97 //comm.send(dummy_packet);
jjones646 5:146523a0d1f4 98 osDelay(500);
jjones646 3:dc7e9c6bc26c 99
jjones646 1:c935902c73ef 100 }
jjones646 1:c935902c73ef 101 }