XBee API mode library
Diff: Scan.cpp
- 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;