added spectrometer timeout

Dependencies:   SDFileSystem mbed

Fork of All_Combined_Real2 by Colin Maxfield

Committer:
jphbergeson
Date:
Wed Apr 13 23:53:47 2016 +0000
Revision:
13:346b43aa06c0
Parent:
5:6532c5a5f576
Added some logging, plus a variable to keep track of the value of the LED

Who changed what in which revision?

UserRevisionLine numberNew 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 }