App1_S5 / Mbed 2 deprecated APP4_IRQ

Dependencies:   mbed-rtos mbed

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?

UserRevisionLine numberNew 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 }