Librairie xbee.

Dependents:   NerfUS-Coord NerfUSTarget

Fork of APP3_xbee by Team APP

Committer:
GaiSensei
Date:
Sun Apr 09 21:21:47 2017 +0000
Revision:
30:482607b8eac4
Parent:
24:00c42ba87ef7
Child:
31:8f294520bdc3
Fix mallocs in interrupt. Use local variables instead of vector.push_back

Who changed what in which revision?

UserRevisionLine numberNew contents of line
GaiSensei 14:cc65f603e659 1 #include "RealXbeeTransmitter.hpp"
GaiSensei 30:482607b8eac4 2 #include <cassert>
GaiSensei 14:cc65f603e659 3
GaiSensei 14:cc65f603e659 4 RealXbeeTransmitter::RealXbeeTransmitter()
GaiSensei 14:cc65f603e659 5 {
GaiSensei 14:cc65f603e659 6
GaiSensei 14:cc65f603e659 7 }
GaiSensei 14:cc65f603e659 8
GaiSensei 23:2b67589150d9 9 void RealXbeeTransmitter::transmit(const std::vector<uint8_t>& bytes, int address[8])
GaiSensei 14:cc65f603e659 10 {
GaiSensei 30:482607b8eac4 11 target_message *message = target_messages_to_transmit.alloc();
GaiSensei 30:482607b8eac4 12 for(int i=0; i<message_size; i++)
GaiSensei 30:482607b8eac4 13 {
GaiSensei 30:482607b8eac4 14 message->bytes[i] = bytes[i];
GaiSensei 30:482607b8eac4 15 }
GaiSensei 30:482607b8eac4 16 for(int i=0; i<8; i++)
GaiSensei 30:482607b8eac4 17 {
GaiSensei 30:482607b8eac4 18 message->address[i] = address[i];
GaiSensei 30:482607b8eac4 19 }
GaiSensei 30:482607b8eac4 20 target_messages_to_transmit.put(message);
GaiSensei 30:482607b8eac4 21 }
GaiSensei 30:482607b8eac4 22
GaiSensei 30:482607b8eac4 23 void RealXbeeTransmitter::transmit(uint8_t bytes[4], int address[8])
GaiSensei 30:482607b8eac4 24 {
GaiSensei 30:482607b8eac4 25 target_message *message = target_messages_to_transmit.alloc();
GaiSensei 14:cc65f603e659 26 for(int i=0; i<message_size; i++)
GaiSensei 14:cc65f603e659 27 {
GaiSensei 30:482607b8eac4 28 message->bytes[i] = bytes[i];
GaiSensei 30:482607b8eac4 29 }
GaiSensei 30:482607b8eac4 30 for(int i=0; i<8; i++)
GaiSensei 30:482607b8eac4 31 {
GaiSensei 30:482607b8eac4 32 message->address[i] = address[i];
GaiSensei 14:cc65f603e659 33 }
GaiSensei 30:482607b8eac4 34 target_messages_to_transmit.put(message);
GaiSensei 30:482607b8eac4 35 }
GaiSensei 30:482607b8eac4 36
GaiSensei 30:482607b8eac4 37 void RealXbeeTransmitter::init()
GaiSensei 30:482607b8eac4 38 {
GaiSensei 30:482607b8eac4 39 transmit_target_messages_thread.start(callback(this, &RealXbeeTransmitter::transmit_target_message));
GaiSensei 30:482607b8eac4 40 }
GaiSensei 30:482607b8eac4 41
GaiSensei 30:482607b8eac4 42 void RealXbeeTransmitter::transmit_target_message()
GaiSensei 30:482607b8eac4 43 {
GaiSensei 30:482607b8eac4 44 osEvent event = target_messages_to_transmit.get();
GaiSensei 30:482607b8eac4 45 assert(event.status == osEventMail);
GaiSensei 30:482607b8eac4 46
GaiSensei 30:482607b8eac4 47 target_message *message = (target_message*)event.value.p;
GaiSensei 30:482607b8eac4 48
GaiSensei 30:482607b8eac4 49 send_message_via_xbee((char*) message->bytes, message_size, message->address);
GaiSensei 30:482607b8eac4 50 }