Jonathan Jones
/
Radios
Radio Structures in OOP
main.cpp@6:4a3dbfbc30f1, 2015-01-15 (annotated)
- Committer:
- jjones646
- Date:
- Thu Jan 15 07:15:33 2015 +0000
- Revision:
- 6:4a3dbfbc30f1
- Parent:
- 5:146523a0d1f4
socket interface confirmed working.
Who changed what in which revision?
User | Revision | Line number | New 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 | 3:dc7e9c6bc26c | 7 | DigitalOut led1(LED1); |
jjones646 | 3:dc7e9c6bc26c | 8 | DigitalOut led2(LED2); |
jjones646 | 3:dc7e9c6bc26c | 9 | DigitalOut led3(LED3); |
jjones646 | 3:dc7e9c6bc26c | 10 | DigitalOut led4(LED4); |
jjones646 | 3:dc7e9c6bc26c | 11 | |
jjones646 | 5:146523a0d1f4 | 12 | Serial pc(USBTX, USBRX); |
jjones646 | 5:146523a0d1f4 | 13 | |
jjones646 | 2:7d523bdd2f50 | 14 | // Sets the mbed's baudrate for debugging purposes |
jjones646 | 2:7d523bdd2f50 | 15 | void baud(int baudrate) |
jjones646 | 2:7d523bdd2f50 | 16 | { |
jjones646 | 2:7d523bdd2f50 | 17 | Serial s(USBTX, USBRX); |
jjones646 | 2:7d523bdd2f50 | 18 | s.baud(baudrate); |
jjones646 | 2:7d523bdd2f50 | 19 | } |
jjones646 | 2:7d523bdd2f50 | 20 | |
jjones646 | 2:7d523bdd2f50 | 21 | // Main program operations ======================= |
jjones646 | 2:7d523bdd2f50 | 22 | int main() |
jjones646 | 2:7d523bdd2f50 | 23 | { |
jjones646 | 3:dc7e9c6bc26c | 24 | led4 = 0; |
jjones646 | 5:146523a0d1f4 | 25 | // Set the baud rate |
jjones646 | 2:7d523bdd2f50 | 26 | baud(57600); |
jjones646 | 2:7d523bdd2f50 | 27 | |
jjones646 | 2:7d523bdd2f50 | 28 | // Check the mbed's firmware if enabled |
jjones646 | 2:7d523bdd2f50 | 29 | #if RJ_CHECK_FIRMWARE |
jjones646 | 3:dc7e9c6bc26c | 30 | std::string firmware; |
jjones646 | 3:dc7e9c6bc26c | 31 | firmware_version(firmware); // this is from FirmwareHelper.h |
jjones646 | 3:dc7e9c6bc26c | 32 | LOG("Firmware Version: %s\r\n", firmware.c_str()); |
jjones646 | 3:dc7e9c6bc26c | 33 | |
jjones646 | 2:7d523bdd2f50 | 34 | // Write any errors to a log file if enabled |
jjones646 | 2:7d523bdd2f50 | 35 | #if RJ_BOOT_LOG |
jjones646 | 3:dc7e9c6bc26c | 36 | LOG("Begin logging\r\n"); |
jjones646 | 2:7d523bdd2f50 | 37 | #endif |
jjones646 | 3:dc7e9c6bc26c | 38 | |
jjones646 | 2:7d523bdd2f50 | 39 | #endif |
jjones646 | 2:7d523bdd2f50 | 40 | |
jjones646 | 6:4a3dbfbc30f1 | 41 | DigitalOut temppp(RJ_PRIMARY_RADIO_INT, 1); |
jjones646 | 5:146523a0d1f4 | 42 | |
jjones646 | 5:146523a0d1f4 | 43 | // Create a new physical hardware communication link |
jjones646 | 3:dc7e9c6bc26c | 44 | CC1101 radio_900( |
jjones646 | 3:dc7e9c6bc26c | 45 | RJ_SPI_BUS, |
jjones646 | 3:dc7e9c6bc26c | 46 | RJ_PRIMARY_RADIO_CS, |
jjones646 | 3:dc7e9c6bc26c | 47 | RJ_PRIMARY_RADIO_INT |
jjones646 | 3:dc7e9c6bc26c | 48 | ); |
jjones646 | 2:7d523bdd2f50 | 49 | |
jjones646 | 5:146523a0d1f4 | 50 | // Create a Communication Module Object |
jjones646 | 2:7d523bdd2f50 | 51 | CommModule comm; |
jjones646 | 6:4a3dbfbc30f1 | 52 | |
jjones646 | 6:4a3dbfbc30f1 | 53 | radio_900.setModule(comm); |
jjones646 | 6:4a3dbfbc30f1 | 54 | |
jjones646 | 4:989d51f3e6ef | 55 | comm.TxHandler((CommLink*)&radio_900, &CommLink::sendPacket, 8); |
jjones646 | 4:989d51f3e6ef | 56 | comm.openSocket(8); |
jjones646 | 2:7d523bdd2f50 | 57 | |
jjones646 | 5:146523a0d1f4 | 58 | // 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 | 59 | led3 = 1; |
jjones646 | 3:dc7e9c6bc26c | 60 | |
jjones646 | 5:146523a0d1f4 | 61 | // Create a dummy packet that is set to send out from socket connection 8 |
jjones646 | 3:dc7e9c6bc26c | 62 | RTP_t dummy_packet; |
jjones646 | 6:4a3dbfbc30f1 | 63 | for (int i=0; i<20; i++) |
jjones646 | 6:4a3dbfbc30f1 | 64 | dummy_packet.data[i] = i; |
jjones646 | 6:4a3dbfbc30f1 | 65 | |
jjones646 | 6:4a3dbfbc30f1 | 66 | dummy_packet.data_size = 20; |
jjones646 | 3:dc7e9c6bc26c | 67 | dummy_packet.port = 8; |
jjones646 | 3:dc7e9c6bc26c | 68 | dummy_packet.subclass = 1; |
jjones646 | 6:4a3dbfbc30f1 | 69 | |
jjones646 | 2:7d523bdd2f50 | 70 | |
jjones646 | 5:146523a0d1f4 | 71 | // Enable watchdog timer |
jjones646 | 5:146523a0d1f4 | 72 | //Watchdog watchdog; |
jjones646 | 5:146523a0d1f4 | 73 | //watchdog.set(RJ_WATCHDOG_TIMER_VALUE); |
jjones646 | 3:dc7e9c6bc26c | 74 | |
jjones646 | 5:146523a0d1f4 | 75 | led1 = 0; |
jjones646 | 1:c935902c73ef | 76 | |
jjones646 | 1:c935902c73ef | 77 | while(1) { |
jjones646 | 5:146523a0d1f4 | 78 | led1 = !led1; |
jjones646 | 6:4a3dbfbc30f1 | 79 | //radio_900.status(); |
jjones646 | 5:146523a0d1f4 | 80 | //comm.send(dummy_packet); |
jjones646 | 5:146523a0d1f4 | 81 | osDelay(500); |
jjones646 | 3:dc7e9c6bc26c | 82 | |
jjones646 | 1:c935902c73ef | 83 | } |
jjones646 | 1:c935902c73ef | 84 | } |