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.
Dependents: NerfUS-Coord NerfUSTarget
Fork of APP3_xbee by
Diff: xbee.cpp
- Revision:
- 7:c65c4c98d237
- Parent:
- 6:b70f32a80d51
- Child:
- 8:b9c096965c00
diff -r b70f32a80d51 -r c65c4c98d237 xbee.cpp
--- a/xbee.cpp Mon Feb 13 19:13:50 2017 +0000
+++ b/xbee.cpp Tue Feb 14 01:13:18 2017 +0000
@@ -4,6 +4,7 @@
DigitalOut led_1(LED1);
Mail<vector<char>, 30> parsed_frames;
RawSerial xbee(p13, p14);
+Mutex mutex;
const int FRAME_SPECIFIC_DATA_BEGIN[14] = {0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00};
const int AT_COMMAND_LED_FRAME_SPECIFIC_DATA_BEGIN[15] = {0x17, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFE, 0x02, 0x50, 0x32};
const char LED_COMMAND_POWER_ON = 0x05;
@@ -12,14 +13,31 @@
const char START_DELIMITER = 0x7E;
+bool is_character_that_needs_escape(const char character)
+{
+ //printf("%X\r\n", character);
+ switch(character)
+ {
+ case 0x7E: return true;
+ case 0x7D: return true;
+ case 0x11: return true;
+ case 0x13: return true;
+ default: return false;
+ }
+}
+
void send_message_via_xbee(const char* message, const int length)
{
+ //printf("send_message_via_xbee\r\n");
const vector<char> transmit_request = generate_transmit_request(message, length);
+ mutex.lock();
for(int i=0; i<transmit_request.size(); i++)
{
+ assert( i==0 || !is_character_that_needs_escape(transmit_request[i]));
xbee.putc(transmit_request[i]);
}
+ mutex.unlock();
}
vector<char> generate_transmit_request(const char* message, const int length)
