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:
- 4:e97cfe6cc18c
- Parent:
- 3:37ea92feece2
- Child:
- 5:cd3c79853dc8
--- a/xbee.cpp Sun Feb 12 20:31:46 2017 +0000
+++ b/xbee.cpp Sun Feb 12 21:33:48 2017 +0000
@@ -1,7 +1,8 @@
#include "xbee.h"
+#include <cassert>
DigitalOut led_1(LED1);
-Mail<vector<char>, 30> received_messages;
+Mail<vector<char>, 30> parsed_frames;
RawSerial xbee(p13, p14);
const int FRAME_SPECIFIC_DATA_BEGIN[14] = {0x10, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFE, 0x00, 0x00};
const int RECEIVE_PACKET_MESSAGE_START_INDEX = 15;
@@ -69,11 +70,8 @@
{
frame.push_back(xbee.getc());
}
-
- vector<char> *parsed_frame = received_messages.alloc();
- *parsed_frame = parse_receive_packet(frame);
-
- received_messages.put(parsed_frame);
+
+ handle_frame(frame);
}
}
@@ -105,26 +103,35 @@
return relevant_content;
}
-void handle_message()
+void handle_parsed_frames_from_mailbox()
{
while(true)
{
- osEvent event = received_messages.get();
- if (event.status == osEventMail)
+ osEvent event = parsed_frames.get();
+ assert(event.status == osEventMail);
+
+ vector<char> *message = (vector<char>*)event.value.p;
+
+ const char parsed_frame_type = message->at(0);
+ printf("Handling parsed frame. Type: %d\r\n", parsed_frame_type);
+
+ printf("Relevant content: ");
+ for(int i=1; i<message->size(); i++)
{
- vector<char> *message = (vector<char>*)event.value.p;
-
- printf("Received message: ");
- for(int i=0; i<message->size(); i++)
- {
- printf("%c", message->at(i));
- }
- printf("\r\n");
- received_messages.free(message);
+ printf("%d\r\n", message->at(i));
}
+
+ parsed_frames.free(message);
}
}
+void handle_frame(const vector<char>& frame)
+{
+ vector<char> *parsed_frame = parsed_frames.alloc();
+ *parsed_frame = parse_frame(frame);
+ parsed_frames.put(parsed_frame);
+}
+
vector<char> parse_frame(const vector<char>& frame)
{
vector<char> parsed_frame;
