K64F based data logger for GPS (ublox MAX M8Q) & 6 Axis Sensor (FXOS8700Q) - Outputs to SD + UDP - Uses FRDM K64F + ublox "Cellular and positioning shield" (3G version)

Dependencies:   MAX_M8Q_Capture EthernetInterface FXOS8700Q SDFileSystem eCompass_FPU_Lib mbed-rtos mbed

Committer:
rlinnmoran
Date:
Wed May 20 07:14:22 2015 +0000
Revision:
3:6085916c9d74
Parent:
2:bcd60a69583f
First release V1_0

Who changed what in which revision?

UserRevisionLine numberNew contents of line
rlinnmoran 0:77857a36b4ff 1 #include "mbed.h"
rlinnmoran 0:77857a36b4ff 2 #include "EthernetInterface.h"
rlinnmoran 0:77857a36b4ff 3 #include "Endpoint.h"
rlinnmoran 2:bcd60a69583f 4 #include "debug.h"
rlinnmoran 0:77857a36b4ff 5 //#include "main.h"
rlinnmoran 0:77857a36b4ff 6
rlinnmoran 2:bcd60a69583f 7 #define MBED_DEV_IP "192.168.5.12"
rlinnmoran 0:77857a36b4ff 8 #define MBED_DEV_MASK "255.255.255.0"
rlinnmoran 2:bcd60a69583f 9 #define MBED_DEV_GW "192.168.5.1"
rlinnmoran 0:77857a36b4ff 10 #define ECHO_SERVER_PORT 5000
rlinnmoran 0:77857a36b4ff 11
rlinnmoran 2:bcd60a69583f 12 #define DEST_IP "192.168.5.2"
rlinnmoran 2:bcd60a69583f 13 #define DEST_PORT 30000
rlinnmoran 0:77857a36b4ff 14
rlinnmoran 0:77857a36b4ff 15 //Serial pc_a(USBTX, USBRX); // Serial Port Config
rlinnmoran 0:77857a36b4ff 16
rlinnmoran 2:bcd60a69583f 17 int EthernetInit(void);
rlinnmoran 2:bcd60a69583f 18 int UDPTransmit(char*,int);
rlinnmoran 2:bcd60a69583f 19
rlinnmoran 2:bcd60a69583f 20 Endpoint dest; // Pointer to destination
rlinnmoran 2:bcd60a69583f 21 EthernetInterface eth; // Configure the Ethernet Port (see #define above) to assign an IP Address
rlinnmoran 2:bcd60a69583f 22
rlinnmoran 2:bcd60a69583f 23 int EthernetInit (void) {
rlinnmoran 0:77857a36b4ff 24
rlinnmoran 0:77857a36b4ff 25 // pc_a.baud(9600); // Serial Port Config (9600, 8 data, 1 stop),
rlinnmoran 0:77857a36b4ff 26
rlinnmoran 2:bcd60a69583f 27 D(printf("Starting Ethernet Configuration\r\n"));
rlinnmoran 2:bcd60a69583f 28
rlinnmoran 2:bcd60a69583f 29 if(eth.init(MBED_DEV_IP, MBED_DEV_MASK, MBED_DEV_GW) != NULL) //Assign a device ip, mask and gateway. Static (no DHCP)
rlinnmoran 2:bcd60a69583f 30 return -1; // Error initialising
rlinnmoran 0:77857a36b4ff 31
rlinnmoran 2:bcd60a69583f 32 D(printf("Ethernet Interface Initialised\r\n"));
rlinnmoran 2:bcd60a69583f 33
rlinnmoran 2:bcd60a69583f 34 if(eth.connect(1000) != NULL)
rlinnmoran 2:bcd60a69583f 35 // return -1; // Error connecting //##BUG## returns -1 on successful connection
rlinnmoran 2:bcd60a69583f 36
rlinnmoran 2:bcd60a69583f 37 D(printf("IP Address is %s\r\n", eth.getIPAddress()));
rlinnmoran 0:77857a36b4ff 38
rlinnmoran 0:77857a36b4ff 39 // Establish the destination endpoints IP Address / Port
rlinnmoran 2:bcd60a69583f 40 D(printf("Establish destination endpoints IP Address / Port\r\n"));
rlinnmoran 2:bcd60a69583f 41
rlinnmoran 2:bcd60a69583f 42 if(dest.set_address(DEST_IP, DEST_PORT) != NULL)
rlinnmoran 2:bcd60a69583f 43 return -1; // Error establishing address (DHCP only)
rlinnmoran 2:bcd60a69583f 44
rlinnmoran 2:bcd60a69583f 45 return 0; // Success
rlinnmoran 2:bcd60a69583f 46
rlinnmoran 2:bcd60a69583f 47 }
rlinnmoran 2:bcd60a69583f 48
rlinnmoran 2:bcd60a69583f 49 int UDPTransmit (char *tx_buffer, int len) {
rlinnmoran 0:77857a36b4ff 50
rlinnmoran 0:77857a36b4ff 51 // Configure a UDP Socket
rlinnmoran 2:bcd60a69583f 52 D(printf("Configure UDP Socket\r\n"));
rlinnmoran 0:77857a36b4ff 53 UDPSocket sock;
rlinnmoran 2:bcd60a69583f 54
rlinnmoran 2:bcd60a69583f 55 if(sock.init() != NULL)
rlinnmoran 2:bcd60a69583f 56 return -1; // Error initialising socket
rlinnmoran 0:77857a36b4ff 57
rlinnmoran 2:bcd60a69583f 58 D(printf("Socket Initialised\r\n"));
rlinnmoran 0:77857a36b4ff 59
rlinnmoran 2:bcd60a69583f 60 //##### NEED TO FIX LENGTH, how to know size of TX_Buffer?????
rlinnmoran 2:bcd60a69583f 61 // Transmit tx_buffer
rlinnmoran 2:bcd60a69583f 62 D(printf("Transmit tx buffer. Data: %s || Length: %d\n\r", tx_buffer, len));
rlinnmoran 2:bcd60a69583f 63
rlinnmoran 2:bcd60a69583f 64
rlinnmoran 2:bcd60a69583f 65 int res=0;
rlinnmoran 2:bcd60a69583f 66 res=sock.sendTo(dest, tx_buffer, len);
rlinnmoran 2:bcd60a69583f 67 D(printf("Transmitted %d bytes\r\n",res));
rlinnmoran 2:bcd60a69583f 68
rlinnmoran 2:bcd60a69583f 69 if(res < NULL)
rlinnmoran 2:bcd60a69583f 70 return -1; // Error transmitting over UDP
rlinnmoran 0:77857a36b4ff 71
rlinnmoran 2:bcd60a69583f 72 return 0; // Success
rlinnmoran 0:77857a36b4ff 73 }