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:27d69341acda, 2018-12-14 (annotated)
- Committer:
- jamesfernando
- Date:
- Fri Dec 14 23:44:47 2018 +0000
- Revision:
- 0:27d69341acda
initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jamesfernando | 0:27d69341acda | 1 | /*--INCLUDES----------------------------------------------------------------------------*/ |
jamesfernando | 0:27d69341acda | 2 | #include "mbed.h" |
jamesfernando | 0:27d69341acda | 3 | #include "EthernetInterface.h" |
jamesfernando | 0:27d69341acda | 4 | #include "FXOS8700Q.h" |
jamesfernando | 0:27d69341acda | 5 | #include <stdio.h> |
jamesfernando | 0:27d69341acda | 6 | #include <iostream> |
jamesfernando | 0:27d69341acda | 7 | |
jamesfernando | 0:27d69341acda | 8 | /*--CONSTANTS---------------------------------------------------------------------------*/ |
jamesfernando | 0:27d69341acda | 9 | const int PORT = 7; //arbitrary port |
jamesfernando | 0:27d69341acda | 10 | |
jamesfernando | 0:27d69341acda | 11 | static const char* SERVER_IP = "192.168.1.101"; //IP of server board |
jamesfernando | 0:27d69341acda | 12 | static const char* MASK = "255.255.255.0"; //mask |
jamesfernando | 0:27d69341acda | 13 | static const char* GATEWAY = "192.168.1.1"; //gateway |
jamesfernando | 0:27d69341acda | 14 | |
jamesfernando | 0:27d69341acda | 15 | |
jamesfernando | 0:27d69341acda | 16 | /*--INITS-------------------------------------------------------------------------------*/ |
jamesfernando | 0:27d69341acda | 17 | Serial pc(USBTX, USBRX); //create PC interface |
jamesfernando | 0:27d69341acda | 18 | EthernetInterface eth; //create ethernet |
jamesfernando | 0:27d69341acda | 19 | UDPSocket server; //creat server |
jamesfernando | 0:27d69341acda | 20 | Endpoint client; //create endpoint |
jamesfernando | 0:27d69341acda | 21 | FXOS8700Q_acc acc( PTE25, PTE24, FXOS8700CQ_SLAVE_ADDR1); |
jamesfernando | 0:27d69341acda | 22 | |
jamesfernando | 0:27d69341acda | 23 | |
jamesfernando | 0:27d69341acda | 24 | DigitalOut red(LED_RED); //debug led |
jamesfernando | 0:27d69341acda | 25 | DigitalOut green(LED_GREEN); //debug led |
jamesfernando | 0:27d69341acda | 26 | |
jamesfernando | 0:27d69341acda | 27 | |
jamesfernando | 0:27d69341acda | 28 | /*--VARIABLES---------------------------------------------------------------------------*/ |
jamesfernando | 0:27d69341acda | 29 | int n; //size of received message |
jamesfernando | 0:27d69341acda | 30 | char* recieveBuffer; //Receive Buffer |
jamesfernando | 0:27d69341acda | 31 | char* sendBuffer; //Send Buffer |
jamesfernando | 0:27d69341acda | 32 | std::string inStr; |
jamesfernando | 0:27d69341acda | 33 | std::string outStr; |
jamesfernando | 0:27d69341acda | 34 | float faX, faY; |
jamesfernando | 0:27d69341acda | 35 | |
jamesfernando | 0:27d69341acda | 36 | /*--FUNCTION DECLARATIONS---------------------------------------------------------------*/ |
jamesfernando | 0:27d69341acda | 37 | void init_usb(void); //initializes pc.printf if required |
jamesfernando | 0:27d69341acda | 38 | void init_eth(void); //initializes Ethernet |
jamesfernando | 0:27d69341acda | 39 | void receive(void); //receives packets |
jamesfernando | 0:27d69341acda | 40 | void printCharArr(char* arr); |
jamesfernando | 0:27d69341acda | 41 | int main(void); //main |
jamesfernando | 0:27d69341acda | 42 | |
jamesfernando | 0:27d69341acda | 43 | |
jamesfernando | 0:27d69341acda | 44 | /*--FUNCTION DEFINITIONS----------------------------------------------------------------*/ |
jamesfernando | 0:27d69341acda | 45 | |
jamesfernando | 0:27d69341acda | 46 | /*****************************************************************************INIT_USB***/ |
jamesfernando | 0:27d69341acda | 47 | void init_usb(void) |
jamesfernando | 0:27d69341acda | 48 | { |
jamesfernando | 0:27d69341acda | 49 | pc.baud(9600); //baud |
jamesfernando | 0:27d69341acda | 50 | |
jamesfernando | 0:27d69341acda | 51 | } //end init_usb() |
jamesfernando | 0:27d69341acda | 52 | |
jamesfernando | 0:27d69341acda | 53 | /*****************************************************************************INIT_ETH***/ |
jamesfernando | 0:27d69341acda | 54 | void init_eth(void) |
jamesfernando | 0:27d69341acda | 55 | { |
jamesfernando | 0:27d69341acda | 56 | eth.init(SERVER_IP, MASK, GATEWAY); //set up IP |
jamesfernando | 0:27d69341acda | 57 | eth.connect(); //connect ethernet |
jamesfernando | 0:27d69341acda | 58 | pc.printf("\nSERVER - Server IP Address is %s\r\n", eth.getIPAddress()); //get server IP address; |
jamesfernando | 0:27d69341acda | 59 | |
jamesfernando | 0:27d69341acda | 60 | server.bind(PORT); //bind server |
jamesfernando | 0:27d69341acda | 61 | |
jamesfernando | 0:27d69341acda | 62 | } //end init_eth() |
jamesfernando | 0:27d69341acda | 63 | |
jamesfernando | 0:27d69341acda | 64 | /******************************************************************************RECEIVE***/ |
jamesfernando | 0:27d69341acda | 65 | void receive(void) |
jamesfernando | 0:27d69341acda | 66 | { |
jamesfernando | 0:27d69341acda | 67 | |
jamesfernando | 0:27d69341acda | 68 | |
jamesfernando | 0:27d69341acda | 69 | pc.printf("\nSERVER - Waiting for UDP packet...\r\n"); //wait for packet |
jamesfernando | 0:27d69341acda | 70 | server.receiveFrom(client, recieveBuffer, 23); //receive message from client |
jamesfernando | 0:27d69341acda | 71 | pc.printf("SERVER - Received '"); |
jamesfernando | 0:27d69341acda | 72 | printCharArr(recieveBuffer); |
jamesfernando | 0:27d69341acda | 73 | pc.printf("' from client %s\r\n", client.get_address()); //print message and client |
jamesfernando | 0:27d69341acda | 74 | |
jamesfernando | 0:27d69341acda | 75 | acc.getX(&faX); |
jamesfernando | 0:27d69341acda | 76 | acc.getY(&faY); |
jamesfernando | 0:27d69341acda | 77 | sprintf(sendBuffer, "X:'% 5.3f' Y:'% 5.3f'\0", faX, faY); |
jamesfernando | 0:27d69341acda | 78 | pc.printf("SERVER - Sending '"); |
jamesfernando | 0:27d69341acda | 79 | printCharArr(sendBuffer); |
jamesfernando | 0:27d69341acda | 80 | pc.printf("' back to client %s\r\n", client.get_address()); //print sending back |
jamesfernando | 0:27d69341acda | 81 | server.sendTo(client, sendBuffer, sizeof(sendBuffer)+1); //send message |
jamesfernando | 0:27d69341acda | 82 | } //end receive() |
jamesfernando | 0:27d69341acda | 83 | |
jamesfernando | 0:27d69341acda | 84 | void printCharArr(char* arr){ |
jamesfernando | 0:27d69341acda | 85 | for(int i = 0; i < sizeof(arr); i++){ |
jamesfernando | 0:27d69341acda | 86 | pc.printf("%c", arr[i]); |
jamesfernando | 0:27d69341acda | 87 | } |
jamesfernando | 0:27d69341acda | 88 | } |
jamesfernando | 0:27d69341acda | 89 | |
jamesfernando | 0:27d69341acda | 90 | /*********************************************************************************MAIN***/ |
jamesfernando | 0:27d69341acda | 91 | int main(void) |
jamesfernando | 0:27d69341acda | 92 | { |
jamesfernando | 0:27d69341acda | 93 | red = 1; |
jamesfernando | 0:27d69341acda | 94 | green = 0; //server |
jamesfernando | 0:27d69341acda | 95 | |
jamesfernando | 0:27d69341acda | 96 | init_usb(); //initialize the PC interface |
jamesfernando | 0:27d69341acda | 97 | init_eth(); //initialize the Ethernet connection |
jamesfernando | 0:27d69341acda | 98 | acc.enable(); |
jamesfernando | 0:27d69341acda | 99 | |
jamesfernando | 0:27d69341acda | 100 | while (true) //repeat forever |
jamesfernando | 0:27d69341acda | 101 | { |
jamesfernando | 0:27d69341acda | 102 | receive(); //wait for message |
jamesfernando | 0:27d69341acda | 103 | } |
jamesfernando | 0:27d69341acda | 104 | |
jamesfernando | 0:27d69341acda | 105 | } //end main() |