Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
radio.cpp@3:6ea97936f6fa, 2017-10-11 (annotated)
- Committer:
- Cheroukee
- Date:
- Wed Oct 11 20:15:23 2017 +0000
- Revision:
- 3:6ea97936f6fa
- Parent:
- 2:fdb34827d964
- Child:
- 4:728322e9e3eb
Setup radio output
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| Cheroukee | 1:5fc0c0996264 | 1 | |
| Cheroukee | 1:5fc0c0996264 | 2 | #include "radio.h" |
| Cheroukee | 1:5fc0c0996264 | 3 | |
| Cheroukee | 2:fdb34827d964 | 4 | #include "mbed.h" |
| Cheroukee | 3:6ea97936f6fa | 5 | #include "rtos.h" |
| Cheroukee | 2:fdb34827d964 | 6 | |
| Cheroukee | 2:fdb34827d964 | 7 | #include <LPC17xx.h> |
| Cheroukee | 2:fdb34827d964 | 8 | |
| Cheroukee | 1:5fc0c0996264 | 9 | #define MESSAGE_BUFFER_SIZE 16 |
| Cheroukee | 1:5fc0c0996264 | 10 | |
| Cheroukee | 3:6ea97936f6fa | 11 | #define MANCHESTER_SPEED_OUT 250 |
| Cheroukee | 3:6ea97936f6fa | 12 | |
| Cheroukee | 3:6ea97936f6fa | 13 | #define INPUT_RADIO p18 |
| Cheroukee | 2:fdb34827d964 | 14 | #define OUTPUT_RADIO p6 |
| Cheroukee | 2:fdb34827d964 | 15 | |
| Cheroukee | 2:fdb34827d964 | 16 | radio_message_t out_messages[MESSAGE_BUFFER_SIZE]; |
| Cheroukee | 1:5fc0c0996264 | 17 | byte out_message_in; |
| Cheroukee | 1:5fc0c0996264 | 18 | byte out_message_out; |
| Cheroukee | 1:5fc0c0996264 | 19 | |
| Cheroukee | 2:fdb34827d964 | 20 | radio_message_t in_messages[MESSAGE_BUFFER_SIZE]; |
| Cheroukee | 1:5fc0c0996264 | 21 | byte in_message_in; |
| Cheroukee | 2:fdb34827d964 | 22 | byte in_message_out; |
| Cheroukee | 2:fdb34827d964 | 23 | |
| Cheroukee | 3:6ea97936f6fa | 24 | InterruptIn input(INPUT_RADIO); |
| Cheroukee | 3:6ea97936f6fa | 25 | |
| Cheroukee | 3:6ea97936f6fa | 26 | RtosTimer out_timer(radio_out, osTimerPeriodic, (void *)out_messages); |
| Cheroukee | 3:6ea97936f6fa | 27 | |
| Cheroukee | 2:fdb34827d964 | 28 | DigitalOut output(OUTPUT_RADIO); |
| Cheroukee | 2:fdb34827d964 | 29 | |
| Cheroukee | 3:6ea97936f6fa | 30 | DigitalOut in_debug_led(LED4); |
| Cheroukee | 3:6ea97936f6fa | 31 | DigitalOut out_debug_led(LED3); |
| Cheroukee | 3:6ea97936f6fa | 32 | |
| Cheroukee | 2:fdb34827d964 | 33 | // API functions |
| Cheroukee | 2:fdb34827d964 | 34 | void init_radio_system() |
| Cheroukee | 2:fdb34827d964 | 35 | { |
| Cheroukee | 3:6ea97936f6fa | 36 | setup_radio_in(); |
| Cheroukee | 3:6ea97936f6fa | 37 | setup_radio_out(); |
| Cheroukee | 3:6ea97936f6fa | 38 | output = 0; |
| Cheroukee | 2:fdb34827d964 | 39 | } |
| Cheroukee | 2:fdb34827d964 | 40 | |
| Cheroukee | 2:fdb34827d964 | 41 | // Private functions |
| Cheroukee | 3:6ea97936f6fa | 42 | |
| Cheroukee | 3:6ea97936f6fa | 43 | void in_rise() |
| Cheroukee | 3:6ea97936f6fa | 44 | { |
| Cheroukee | 3:6ea97936f6fa | 45 | in_debug_led = 1; |
| Cheroukee | 3:6ea97936f6fa | 46 | } |
| Cheroukee | 3:6ea97936f6fa | 47 | |
| Cheroukee | 3:6ea97936f6fa | 48 | void in_fall() |
| Cheroukee | 3:6ea97936f6fa | 49 | { |
| Cheroukee | 3:6ea97936f6fa | 50 | in_debug_led = 0; |
| Cheroukee | 3:6ea97936f6fa | 51 | } |
| Cheroukee | 3:6ea97936f6fa | 52 | |
| Cheroukee | 3:6ea97936f6fa | 53 | void setup_radio_in() |
| Cheroukee | 3:6ea97936f6fa | 54 | { |
| Cheroukee | 3:6ea97936f6fa | 55 | in_debug_led = 0; |
| Cheroukee | 3:6ea97936f6fa | 56 | |
| Cheroukee | 3:6ea97936f6fa | 57 | input.rise(&in_rise); |
| Cheroukee | 3:6ea97936f6fa | 58 | input.fall(&in_fall); |
| Cheroukee | 3:6ea97936f6fa | 59 | } |
| Cheroukee | 3:6ea97936f6fa | 60 | |
| Cheroukee | 3:6ea97936f6fa | 61 | |
| Cheroukee | 3:6ea97936f6fa | 62 | void setup_radio_out() |
| Cheroukee | 2:fdb34827d964 | 63 | { |
| Cheroukee | 3:6ea97936f6fa | 64 | out_message_in = 0; |
| Cheroukee | 3:6ea97936f6fa | 65 | out_message_out = 0; |
| Cheroukee | 3:6ea97936f6fa | 66 | |
| Cheroukee | 3:6ea97936f6fa | 67 | out_debug_led = 0; |
| Cheroukee | 2:fdb34827d964 | 68 | |
| Cheroukee | 3:6ea97936f6fa | 69 | ////////////////////////////////////////////////////// |
| Cheroukee | 3:6ea97936f6fa | 70 | // Creation d'un message et insertion dans le buffer |
| Cheroukee | 3:6ea97936f6fa | 71 | radio_message_t* message = (out_messages + out_message_in); |
| Cheroukee | 3:6ea97936f6fa | 72 | |
| Cheroukee | 3:6ea97936f6fa | 73 | message->preambule = HEADER_DELIMITER; |
| Cheroukee | 3:6ea97936f6fa | 74 | message->start = HEADER_START; |
| Cheroukee | 3:6ea97936f6fa | 75 | message->options = HEADER_DELIMITER; |
| Cheroukee | 3:6ea97936f6fa | 76 | message->length = 0x2; |
| Cheroukee | 3:6ea97936f6fa | 77 | |
| Cheroukee | 3:6ea97936f6fa | 78 | message->data[0] = 0xF0; |
| Cheroukee | 3:6ea97936f6fa | 79 | message->data[1] = 0x0F; |
| Cheroukee | 3:6ea97936f6fa | 80 | |
| Cheroukee | 3:6ea97936f6fa | 81 | // Ajouter calcul |
| Cheroukee | 3:6ea97936f6fa | 82 | message->control = 0xFF; |
| Cheroukee | 3:6ea97936f6fa | 83 | |
| Cheroukee | 3:6ea97936f6fa | 84 | message->end = FOOTER_END; |
| Cheroukee | 3:6ea97936f6fa | 85 | // On avance dans le buffer; |
| Cheroukee | 3:6ea97936f6fa | 86 | out_message_in++; |
| Cheroukee | 3:6ea97936f6fa | 87 | ////////////////////////////////////////////////////// |
| Cheroukee | 3:6ea97936f6fa | 88 | |
| Cheroukee | 3:6ea97936f6fa | 89 | out_timer.start(MANCHESTER_SPEED_OUT); |
| Cheroukee | 2:fdb34827d964 | 90 | } |
| Cheroukee | 3:6ea97936f6fa | 91 | |
| Cheroukee | 3:6ea97936f6fa | 92 | |
| Cheroukee | 3:6ea97936f6fa | 93 | void radio_out(void const *args) |
| Cheroukee | 3:6ea97936f6fa | 94 | { |
| Cheroukee | 3:6ea97936f6fa | 95 | radio_message_t* message = (radio_message_t*)(out_messages + out_message_out); |
| Cheroukee | 3:6ea97936f6fa | 96 | |
| Cheroukee | 3:6ea97936f6fa | 97 | #define OUTPUT_HIGH output = 1; |
| Cheroukee | 3:6ea97936f6fa | 98 | #define OUTPUT_LOW output = 0; |
| Cheroukee | 3:6ea97936f6fa | 99 | |
| Cheroukee | 3:6ea97936f6fa | 100 | out_debug_led = !out_debug_led; |
| Cheroukee | 3:6ea97936f6fa | 101 | output = !output; |
| Cheroukee | 3:6ea97936f6fa | 102 | } |