Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed mbed-rtos EthernetInterface FXOS8700Q
main.cpp@0:d3bd9c176482, 2018-12-14 (annotated)
- Committer:
- jamesfernando
- Date:
- Fri Dec 14 23:47:01 2018 +0000
- Revision:
- 0:d3bd9c176482
Initial Commit
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| jamesfernando | 0:d3bd9c176482 | 1 | #include "mbed.h" |
| jamesfernando | 0:d3bd9c176482 | 2 | #include "EthernetInterface.h" |
| jamesfernando | 0:d3bd9c176482 | 3 | #include "FXOS8700Q.h" |
| jamesfernando | 0:d3bd9c176482 | 4 | #include <stdio.h> |
| jamesfernando | 0:d3bd9c176482 | 5 | #include <iostream> |
| jamesfernando | 0:d3bd9c176482 | 6 | |
| jamesfernando | 0:d3bd9c176482 | 7 | |
| jamesfernando | 0:d3bd9c176482 | 8 | const int PORT = 7; |
| jamesfernando | 0:d3bd9c176482 | 9 | |
| jamesfernando | 0:d3bd9c176482 | 10 | static const char* SERVER_IP = "192.168.1.101"; //IP of server board |
| jamesfernando | 0:d3bd9c176482 | 11 | static const char* CLIENT_IP = "192.168.1.102"; //IP of client board |
| jamesfernando | 0:d3bd9c176482 | 12 | static const char* MASK = "255.255.255.0"; //mask |
| jamesfernando | 0:d3bd9c176482 | 13 | static const char* GATEWAY = "192.168.1.1"; //gateway |
| jamesfernando | 0:d3bd9c176482 | 14 | |
| jamesfernando | 0:d3bd9c176482 | 15 | |
| jamesfernando | 0:d3bd9c176482 | 16 | /*--INITS-------------------------------------------------------------------------------*/ |
| jamesfernando | 0:d3bd9c176482 | 17 | Serial pc(USBTX, USBRX); //create PC interface |
| jamesfernando | 0:d3bd9c176482 | 18 | EthernetInterface eth; //create ethernet |
| jamesfernando | 0:d3bd9c176482 | 19 | UDPSocket sock; //creat Ethernet socket |
| jamesfernando | 0:d3bd9c176482 | 20 | Endpoint server; //create endpoint |
| jamesfernando | 0:d3bd9c176482 | 21 | |
| jamesfernando | 0:d3bd9c176482 | 22 | DigitalOut red(LED_RED); //debug led |
| jamesfernando | 0:d3bd9c176482 | 23 | DigitalOut green(LED_GREEN); //debug led |
| jamesfernando | 0:d3bd9c176482 | 24 | FXOS8700Q_acc acc( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); |
| jamesfernando | 0:d3bd9c176482 | 25 | |
| jamesfernando | 0:d3bd9c176482 | 26 | |
| jamesfernando | 0:d3bd9c176482 | 27 | /*--VARIABLES---------------------------------------------------------------------------*/ |
| jamesfernando | 0:d3bd9c176482 | 28 | int n; //size of received message |
| jamesfernando | 0:d3bd9c176482 | 29 | char* recieveBuffer = new char[23]; //create receive buffer |
| jamesfernando | 0:d3bd9c176482 | 30 | char* sendBuffer = new char[23]; //sample send buffer |
| jamesfernando | 0:d3bd9c176482 | 31 | std::string inStr; |
| jamesfernando | 0:d3bd9c176482 | 32 | std::string outStr; |
| jamesfernando | 0:d3bd9c176482 | 33 | |
| jamesfernando | 0:d3bd9c176482 | 34 | |
| jamesfernando | 0:d3bd9c176482 | 35 | /*--FUNCTION DECLARATIONS---------------------------------------------------------------*/ |
| jamesfernando | 0:d3bd9c176482 | 36 | void init_usb(void); //initializes pc.printf if required |
| jamesfernando | 0:d3bd9c176482 | 37 | void init_eth(void); //initializes Ethernet |
| jamesfernando | 0:d3bd9c176482 | 38 | void end_eth(void); //closes Ethernet socket |
| jamesfernando | 0:d3bd9c176482 | 39 | void printCharArr(char* arr); |
| jamesfernando | 0:d3bd9c176482 | 40 | int main(void); //main |
| jamesfernando | 0:d3bd9c176482 | 41 | |
| jamesfernando | 0:d3bd9c176482 | 42 | |
| jamesfernando | 0:d3bd9c176482 | 43 | /*--FUNCTION DEFINITIONS---------------------------------------------------*****************************************************************************INIT_USB***/ |
| jamesfernando | 0:d3bd9c176482 | 44 | void init_usb(void) |
| jamesfernando | 0:d3bd9c176482 | 45 | { |
| jamesfernando | 0:d3bd9c176482 | 46 | pc.baud(9600); //baud |
| jamesfernando | 0:d3bd9c176482 | 47 | |
| jamesfernando | 0:d3bd9c176482 | 48 | } //end init_usb() |
| jamesfernando | 0:d3bd9c176482 | 49 | |
| jamesfernando | 0:d3bd9c176482 | 50 | /*****************************************************************************INIT_ETH***/ |
| jamesfernando | 0:d3bd9c176482 | 51 | void init_eth(void) |
| jamesfernando | 0:d3bd9c176482 | 52 | { |
| jamesfernando | 0:d3bd9c176482 | 53 | eth.init(CLIENT_IP, MASK, GATEWAY); //set up IP |
| jamesfernando | 0:d3bd9c176482 | 54 | eth.connect(); //connect ethernet |
| jamesfernando | 0:d3bd9c176482 | 55 | pc.printf("\nCLIENT - Client IP Address is %s\r\n", eth.getIPAddress()); //get client IP address |
| jamesfernando | 0:d3bd9c176482 | 56 | |
| jamesfernando | 0:d3bd9c176482 | 57 | sock.init(); //initialize socket |
| jamesfernando | 0:d3bd9c176482 | 58 | |
| jamesfernando | 0:d3bd9c176482 | 59 | server.set_address(SERVER_IP, PORT); //set address of server |
| jamesfernando | 0:d3bd9c176482 | 60 | |
| jamesfernando | 0:d3bd9c176482 | 61 | } //end init_eth() |
| jamesfernando | 0:d3bd9c176482 | 62 | |
| jamesfernando | 0:d3bd9c176482 | 63 | /******************************************************************************END_ETH***/ |
| jamesfernando | 0:d3bd9c176482 | 64 | void end_eth(void) |
| jamesfernando | 0:d3bd9c176482 | 65 | { |
| jamesfernando | 0:d3bd9c176482 | 66 | sock.close(); //close socket |
| jamesfernando | 0:d3bd9c176482 | 67 | eth.disconnect(); //close Ethernet |
| jamesfernando | 0:d3bd9c176482 | 68 | |
| jamesfernando | 0:d3bd9c176482 | 69 | } //end end_eth() |
| jamesfernando | 0:d3bd9c176482 | 70 | |
| jamesfernando | 0:d3bd9c176482 | 71 | void printCharArr(char* arr){ |
| jamesfernando | 0:d3bd9c176482 | 72 | for(int i = 0; i < sizeof(arr); i++){ |
| jamesfernando | 0:d3bd9c176482 | 73 | pc.printf("%c", arr[i]); |
| jamesfernando | 0:d3bd9c176482 | 74 | } |
| jamesfernando | 0:d3bd9c176482 | 75 | } |
| jamesfernando | 0:d3bd9c176482 | 76 | |
| jamesfernando | 0:d3bd9c176482 | 77 | /*********************************************************************************MAIN***/ |
| jamesfernando | 0:d3bd9c176482 | 78 | int main(void) |
| jamesfernando | 0:d3bd9c176482 | 79 | { |
| jamesfernando | 0:d3bd9c176482 | 80 | red = 0; //client |
| jamesfernando | 0:d3bd9c176482 | 81 | green = 1; |
| jamesfernando | 0:d3bd9c176482 | 82 | |
| jamesfernando | 0:d3bd9c176482 | 83 | acc.enable(); |
| jamesfernando | 0:d3bd9c176482 | 84 | float faX, faY; |
| jamesfernando | 0:d3bd9c176482 | 85 | |
| jamesfernando | 0:d3bd9c176482 | 86 | init_usb(); //initialize the PC interface |
| jamesfernando | 0:d3bd9c176482 | 87 | init_eth(); //initialize the Ethernet connection |
| jamesfernando | 0:d3bd9c176482 | 88 | |
| jamesfernando | 0:d3bd9c176482 | 89 | while(true) //repeat forever |
| jamesfernando | 0:d3bd9c176482 | 90 | { |
| jamesfernando | 0:d3bd9c176482 | 91 | acc.getX(&faX); |
| jamesfernando | 0:d3bd9c176482 | 92 | acc.getY(&faY); |
| jamesfernando | 0:d3bd9c176482 | 93 | sprintf(sendBuffer, "X:'% 5.3f' Y:'% 5.3f'\0", faX, faY); |
| jamesfernando | 0:d3bd9c176482 | 94 | pc.printf("\nCLIENT - Sending"); |
| jamesfernando | 0:d3bd9c176482 | 95 | printCharArr(sendBuffer); |
| jamesfernando | 0:d3bd9c176482 | 96 | pc.printf(" to server %s\r\n", SERVER_IP); //print message to send |
| jamesfernando | 0:d3bd9c176482 | 97 | sock.sendTo(server, sendBuffer, sizeof(sendBuffer)+1); //send message |
| jamesfernando | 0:d3bd9c176482 | 98 | pc.printf("CLIENT - Waiting for UDP packet...\r\n"); //wait for message |
| jamesfernando | 0:d3bd9c176482 | 99 | n = sock.receiveFrom(server, recieveBuffer, 23); //receive message from server |
| jamesfernando | 0:d3bd9c176482 | 100 | pc.printf("CLIENT - Received "); |
| jamesfernando | 0:d3bd9c176482 | 101 | printCharArr(recieveBuffer); |
| jamesfernando | 0:d3bd9c176482 | 102 | pc.printf(" from server %s\r\n", SERVER_IP); //print message received |
| jamesfernando | 0:d3bd9c176482 | 103 | |
| jamesfernando | 0:d3bd9c176482 | 104 | |
| jamesfernando | 0:d3bd9c176482 | 105 | wait(1); //wait 1 second |
| jamesfernando | 0:d3bd9c176482 | 106 | } |
| jamesfernando | 0:d3bd9c176482 | 107 | |
| jamesfernando | 0:d3bd9c176482 | 108 | } //end main() |