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:
- 3:37ea92feece2
- Parent:
- 0:8f5379c94a69
- Child:
- 4:e97cfe6cc18c
diff -r 5d437f1b1548 -r 37ea92feece2 xbee.cpp
--- a/xbee.cpp Sat Feb 11 20:55:08 2017 +0000
+++ b/xbee.cpp Sun Feb 12 20:31:46 2017 +0000
@@ -77,14 +77,34 @@
}
}
-vector<char> parse_receive_packet(vector<char> transmitted_request)
+vector<char> parse_receive_packet(const vector<char>& frame)
{
- vector<char>::const_iterator first = transmitted_request.begin() + RECEIVE_PACKET_MESSAGE_START_INDEX;
- vector<char>::const_iterator last = transmitted_request.end() - 1;
+ vector<char>::const_iterator first = frame.begin() + RECEIVE_PACKET_MESSAGE_START_INDEX;
+ vector<char>::const_iterator last = frame.end() - 1;
vector<char> message(first, last);
return message;
}
+vector<char> parse_transmit_status(const vector<char>& frame)
+{
+ vector<char> relevant_content;
+
+ const char delivery_status = frame.at(8);
+ relevant_content.push_back(delivery_status);
+
+ return relevant_content;
+}
+
+vector<char> parse_at_command_response(const vector<char>& frame)
+{
+ vector<char> relevant_content;
+
+ const char command_status = frame.at(7);
+ relevant_content.push_back(command_status);
+
+ return relevant_content;
+}
+
void handle_message()
{
while(true)
@@ -103,4 +123,41 @@
received_messages.free(message);
}
}
-}
\ No newline at end of file
+}
+
+vector<char> parse_frame(const vector<char>& frame)
+{
+ vector<char> parsed_frame;
+
+ const char frame_type = frame.at(3);
+ parsed_frame.push_back(frame_type);
+
+ vector<char> parsed_frame_relevant_content;
+
+ switch(frame_type)
+ {
+ case FRAME_TYPE_RECEIVE_PACKET:
+ {
+ parsed_frame_relevant_content = parse_receive_packet(frame);
+ break;
+ }
+ case FRAME_TYPE_TRANSMIT_STATUS:
+ {
+ parsed_frame_relevant_content = parse_transmit_status(frame);
+ break;
+ }
+ case FRAME_TYPE_AT_COMMAND_RESPONSE:
+ {
+ parsed_frame_relevant_content = parse_at_command_response(frame);
+ break;
+ }
+ default: assert(false && "Unsupported frame type");
+ }
+
+ for(vector<char>::iterator it = parsed_frame_relevant_content.begin(); it < parsed_frame_relevant_content.end(); it++)
+ {
+ parsed_frame.push_back(*it);
+ }
+
+ return parsed_frame;
+}
