Jonathan Jones
/
Radios
Radio Structures in OOP
main.cpp@5:146523a0d1f4, 2015-01-14 (annotated)
- 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?
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 | 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 | } |