XBee API mode library

Revision:
17:2f728fd13bc0
Parent:
16:cdfcb63b2c4b
--- a/Scan.cpp	Wed Mar 20 00:28:27 2013 +0000
+++ b/Scan.cpp	Thu Mar 21 06:51:31 2013 +0000
@@ -22,6 +22,70 @@
 
 #include "XBee.h"
 
+#define INDEX(n)    ((n) % BUFSIZE)
+#define SIZE(b, i)  (b[i] << 8 | b[INDEX(i + 1)])
+#define min(x, y)   ((x) <= (y) ? (x) : (y))
+
+bool XBee::scan(XBeeFrameID& id) {
+    return scan(XBee::FrameID, id.raw_address(), 1);
+}
+
+bool XBee::scan(XBeeRetryCount& count) {
+    return scan(XBee::RetryCount, count.raw_address(), 1);
+}
+
+bool XBee::scan(XBeeStatus& status) {
+    return scan(XBee::Status, status.raw_address(), 1);
+}
+
+bool XBee::scan(XBeeDeliveryStatus& status) {
+    return scan(XBee::DeliveryStatus, status.raw_address(), 1);
+}
+
+bool XBee::scan(XBeeDiscoveryStatus& status) {
+    return scan(XBee::DiscoveryStatus, status.raw_address(), 1);
+}
+
+bool XBee::scan(XBeeReceiveOptions& options) {
+    return scan(XBee::ReceiveOptions, options.raw_address(), 1);
+}
+
+bool XBee::scan(XBeeDeviceType& device) {
+    return scan(XBee::DeviceType, device.raw_address(), 1);
+}
+
+bool XBee::scan(XBeeSourceEvent& event) {
+    return scan(XBee::SourceEvent, event.raw_address(), 1);
+}
+
+bool XBee::scan(XBeeAddress64& address64) {
+    return scan(XBee::Address64, address64.raw_address(), 8);
+}
+
+bool XBee::scan(XBeeAddress16& address16) {
+    return scan(XBee::Address16, address16.raw_address(), 2);
+}
+
+bool XBee::scan(XBeeATCommand& command) {
+    return scan(XBee::ATCommand, command.raw_address(), 3);
+}
+
+bool XBee::scan(XBeeCommandData& data) {
+    return scan(XBee::CommandData, data.raw_address(), data.capacity, &data.size);
+}
+
+bool XBee::scan(XBeeReceivedData& data) {
+    return scan(XBee::ReceivedData, data.raw_address(), data.capacity, &data.size);
+}
+
+bool XBee::scan(XBeeNodeIdentifier& ni) {
+    return scan(XBee::NIString, ni.raw_address(), ni.capacity, &ni.size);
+}
+
+bool XBee::scan(XBeeRawData& data) {
+    return scan(XBee::RawData, data.raw_address(), data.capacity, &data.size);
+}
+
 bool XBee::scan(ValueType type, char *value, int maxlength, int *length) {
     if (received != out || (in == out && free != 0))
         return false;