Librairie xbee.
Dependents: NerfUS-Coord NerfUSTarget
Fork of APP3_xbee by
mbed_source/XbeeTransmitter.cpp@30:482607b8eac4, 2017-04-09 (annotated)
- 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?
User | Revision | Line number | New 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 | } |