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:
- 8:b9c096965c00
- Parent:
- 7:c65c4c98d237
- Child:
- 9:04063c29ab43
- Child:
- 10:612739c6d27d
--- a/xbee.cpp Tue Feb 14 01:13:18 2017 +0000
+++ b/xbee.cpp Tue Feb 14 02:38:18 2017 +0000
@@ -1,8 +1,10 @@
#include "xbee.h"
#include <cassert>
+
+
DigitalOut led_1(LED1);
-Mail<vector<char>, 30> parsed_frames;
+Mail<ingoing_value_t, 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};
@@ -160,25 +162,57 @@
osEvent event = parsed_frames.get();
assert(event.status == osEventMail);
- vector<char> *message = (vector<char>*)event.value.p;
+ ingoing_value_t *parsed_frame = (ingoing_value_t*)event.value.p;
- const char parsed_frame_type = message->at(0);
+ const char parsed_frame_type = parsed_frame->content[0];
+ switch(parsed_frame_type)
+ {
+ case FRAME_TYPE_RECEIVE_PACKET:
+ char parsed_frame_string[40];
+ parsed_frame_to_string(ingoing_value_to_vector(*parsed_frame), parsed_frame_string);
+
+ printf("Handling receive packet: %s\r\n", parsed_frame_string);
+ break;
+
+ default:
+ break;
+ }
+
+ /*
printf("Handling parsed frame. Type: %d\r\n", parsed_frame_type);
printf("Relevant content: ");
- for(int i=1; i<message->size(); i++)
+ for(int i=1; i<value->size; i++)
{
- printf("%d\r\n", message->at(i));
+ printf("%d\r\n", value->content[i]);
}
+ */
+
+ parsed_frames.free(parsed_frame);
+ }
+}
- parsed_frames.free(message);
+vector<char> ingoing_value_to_vector(const ingoing_value_t& value)
+{
+ vector<char> result;
+ for(int i=0; i<value.size; i++)
+ {
+ result.push_back(value.content[i]);
}
+ return result;
}
void handle_frame(const vector<char>& frame)
{
- vector<char> *parsed_frame = parsed_frames.alloc();
- *parsed_frame = parse_frame(frame);
+ ingoing_value_t *parsed_frame = parsed_frames.alloc();
+
+ const vector<char> parsed_frame_vector = parse_frame(frame);
+ for(int i=0; i<parsed_frame_vector.size(); i++)
+ {
+ parsed_frame->content[i] = parsed_frame_vector.at(i);
+ }
+ parsed_frame->size = parsed_frame_vector.size();
+
parsed_frames.put(parsed_frame);
}
@@ -243,11 +277,11 @@
const char button_state = parsed_frame[2];
switch(button_state)
{
- case 0x00:
+ case BUTTON_RELEASED:
strcpy(readable_string_output, "Button state: released");
break;
- case 0x01:
+ case BUTTON_PRESSED:
strcpy(readable_string_output, "Button state: pressed");
break;
