asdf
Dependencies: SDFileSystem mbed
Fork of All_Combined_Real by
XBeeLib.cpp@5:6532c5a5f576, 2016-03-23 (annotated)
- Committer:
- colingm
- Date:
- Wed Mar 23 14:32:41 2016 +0000
- Revision:
- 5:6532c5a5f576
asdf
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
colingm | 5:6532c5a5f576 | 1 | #include "XBeeLib.h" |
colingm | 5:6532c5a5f576 | 2 | #include "xbee.h" |
colingm | 5:6532c5a5f576 | 3 | |
colingm | 5:6532c5a5f576 | 4 | #define UINT64(msb,lsb) (uint64_t)(((uint64_t)(msb) << 32) | (lsb)) |
colingm | 5:6532c5a5f576 | 5 | |
colingm | 5:6532c5a5f576 | 6 | #define REMOTE_NODE_ADDR64_MSB ((uint32_t)0x0013A200) |
colingm | 5:6532c5a5f576 | 7 | #define REMOTE_NODE_ADDR64_LSB ((uint32_t)0x41030E8A) |
colingm | 5:6532c5a5f576 | 8 | #define REMOTE_NODE_ADDR64 UINT64(REMOTE_NODE_ADDR64_MSB, REMOTE_NODE_ADDR64_LSB) |
colingm | 5:6532c5a5f576 | 9 | |
colingm | 5:6532c5a5f576 | 10 | #define XBEE_BAUD_RATE 115200 |
colingm | 5:6532c5a5f576 | 11 | |
colingm | 5:6532c5a5f576 | 12 | #define MAX_BYTES 256 |
colingm | 5:6532c5a5f576 | 13 | #define MAX_SIZE 512 |
colingm | 5:6532c5a5f576 | 14 | |
colingm | 5:6532c5a5f576 | 15 | Serial *log_serial; |
colingm | 5:6532c5a5f576 | 16 | XBee xbee; |
colingm | 5:6532c5a5f576 | 17 | Serial xbeeSerial(D1, D0); |
colingm | 5:6532c5a5f576 | 18 | |
colingm | 5:6532c5a5f576 | 19 | int frameID = 0; |
colingm | 5:6532c5a5f576 | 20 | |
colingm | 5:6532c5a5f576 | 21 | void send_data_to_remote_node(char *data, int frame, int framePart, int length) |
colingm | 5:6532c5a5f576 | 22 | { |
colingm | 5:6532c5a5f576 | 23 | unsigned char outFrame[MAX_SIZE]; |
colingm | 5:6532c5a5f576 | 24 | // log_serial->printf("Old Length: %04x\r\n", (uint16_t)(length + 11)); |
colingm | 5:6532c5a5f576 | 25 | int frameLen = xbee.Send((unsigned char*)data, length, outFrame, REMOTE_NODE_ADDR64); |
colingm | 5:6532c5a5f576 | 26 | |
colingm | 5:6532c5a5f576 | 27 | log_serial->printf("Message prepared to send\r\n"); |
colingm | 5:6532c5a5f576 | 28 | |
colingm | 5:6532c5a5f576 | 29 | for (int i = 0; i < frameLen; i++) { |
colingm | 5:6532c5a5f576 | 30 | // log_serial->printf("%02x ", outFrame[i]); |
colingm | 5:6532c5a5f576 | 31 | xbeeSerial.putc(outFrame[i]); |
colingm | 5:6532c5a5f576 | 32 | } |
colingm | 5:6532c5a5f576 | 33 | // log_serial->printf("\r\n"); |
colingm | 5:6532c5a5f576 | 34 | log_serial->printf("Message finished sending\r\n"); |
colingm | 5:6532c5a5f576 | 35 | } |
colingm | 5:6532c5a5f576 | 36 | |
colingm | 5:6532c5a5f576 | 37 | void XBeeInit(Serial *pcLogger) |
colingm | 5:6532c5a5f576 | 38 | { |
colingm | 5:6532c5a5f576 | 39 | log_serial = pcLogger; |
colingm | 5:6532c5a5f576 | 40 | xbeeSerial.baud(XBEE_BAUD_RATE); |
colingm | 5:6532c5a5f576 | 41 | } |
colingm | 5:6532c5a5f576 | 42 | |
colingm | 5:6532c5a5f576 | 43 | void XBeeSend(const char *message, int length) |
colingm | 5:6532c5a5f576 | 44 | { |
colingm | 5:6532c5a5f576 | 45 | int framePart = 0; |
colingm | 5:6532c5a5f576 | 46 | for (int i = 0; i < length; i += MAX_BYTES) { |
colingm | 5:6532c5a5f576 | 47 | log_serial->printf("partition at %d\r\n", i); |
colingm | 5:6532c5a5f576 | 48 | int arraySize = length - i; |
colingm | 5:6532c5a5f576 | 49 | if (arraySize > MAX_BYTES + 1) |
colingm | 5:6532c5a5f576 | 50 | arraySize = MAX_BYTES + 1; |
colingm | 5:6532c5a5f576 | 51 | |
colingm | 5:6532c5a5f576 | 52 | char partition[arraySize]; |
colingm | 5:6532c5a5f576 | 53 | int j; |
colingm | 5:6532c5a5f576 | 54 | for (j = i; ((j - i) < MAX_BYTES) && (j < length); j++) { |
colingm | 5:6532c5a5f576 | 55 | partition[j-i] = message[j]; |
colingm | 5:6532c5a5f576 | 56 | } |
colingm | 5:6532c5a5f576 | 57 | |
colingm | 5:6532c5a5f576 | 58 | send_data_to_remote_node(partition, frameID, framePart, j-i); |
colingm | 5:6532c5a5f576 | 59 | |
colingm | 5:6532c5a5f576 | 60 | wait_ms(25); |
colingm | 5:6532c5a5f576 | 61 | } |
colingm | 5:6532c5a5f576 | 62 | |
colingm | 5:6532c5a5f576 | 63 | frameID++; |
colingm | 5:6532c5a5f576 | 64 | } |
colingm | 5:6532c5a5f576 | 65 | |
colingm | 5:6532c5a5f576 | 66 | void XBeeDestroy() |
colingm | 5:6532c5a5f576 | 67 | { |
colingm | 5:6532c5a5f576 | 68 | |
colingm | 5:6532c5a5f576 | 69 | } |