Mateusz Jaskula
/
KL25Z_TangoIO
KL25 driver for Tango Control System
main.cpp@1:f1ee978773d3, 2014-08-26 (annotated)
- Committer:
- jskl
- Date:
- Tue Aug 26 06:46:55 2014 +0000
- Revision:
- 1:f1ee978773d3
- Parent:
- 0:5d27c333afa6
- Child:
- 2:9fe6f1e273b4
Changing ethernet replies to json format
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jskl | 0:5d27c333afa6 | 1 | |
jskl | 0:5d27c333afa6 | 2 | #include "mbed.h" |
jskl | 0:5d27c333afa6 | 3 | #include "WIZnetInterface.h" |
jskl | 0:5d27c333afa6 | 4 | #include "GY80.h" |
jskl | 0:5d27c333afa6 | 5 | #include "tsi_sensor.h" |
jskl | 0:5d27c333afa6 | 6 | #include "main.h" |
jskl | 0:5d27c333afa6 | 7 | |
jskl | 0:5d27c333afa6 | 8 | |
jskl | 0:5d27c333afa6 | 9 | int main() /// Main Function: |
jskl | 0:5d27c333afa6 | 10 | { |
jskl | 0:5d27c333afa6 | 11 | |
jskl | 0:5d27c333afa6 | 12 | |
jskl | 0:5d27c333afa6 | 13 | pc.attach(&SerialInterHandler, Serial::RxIrq); /// - configures serial port interrupts & choose handler |
jskl | 0:5d27c333afa6 | 14 | menu_prop(); /// - shows 5 sec menu |
jskl | 0:5d27c333afa6 | 15 | pc.attach(NULL, Serial::RxIrq); /// - disables serial port interrupts after 5s |
jskl | 0:5d27c333afa6 | 16 | tick1.attach_us(&read_data, 10000); /// - reads data from sensors in 10ms intervals |
jskl | 0:5d27c333afa6 | 17 | if(init_eth() == 1) { /// - initializes ethernet communication |
jskl | 0:5d27c333afa6 | 18 | wait(0.001); // wait |
jskl | 0:5d27c333afa6 | 19 | eth_comm(); /// - and tcp/ip server if no error occured |
jskl | 0:5d27c333afa6 | 20 | } else { // |
jskl | 0:5d27c333afa6 | 21 | return -1; /// - or returns an error |
jskl | 0:5d27c333afa6 | 22 | } /// |
jskl | 0:5d27c333afa6 | 23 | while(1); // infinit loop |
jskl | 0:5d27c333afa6 | 24 | } |
jskl | 0:5d27c333afa6 | 25 | |
jskl | 0:5d27c333afa6 | 26 | int init_eth() |
jskl | 0:5d27c333afa6 | 27 | { |
jskl | 0:5d27c333afa6 | 28 | /** |
jskl | 0:5d27c333afa6 | 29 | * Initializes ethernet communication by configuring WIZ550io via SPI interface. |
jskl | 0:5d27c333afa6 | 30 | * DHCP or Static IP configuration could be used. |
jskl | 0:5d27c333afa6 | 31 | * Use of them is user configurable via serial port. |
jskl | 0:5d27c333afa6 | 32 | */ |
jskl | 0:5d27c333afa6 | 33 | int ret; // error code variable |
jskl | 0:5d27c333afa6 | 34 | |
jskl | 0:5d27c333afa6 | 35 | // MAC Adress setting: |
jskl | 0:5d27c333afa6 | 36 | mac[0] = 0x00; |
jskl | 0:5d27c333afa6 | 37 | mac[1] = 0x08; |
jskl | 0:5d27c333afa6 | 38 | mac[2] = 0xDC; |
jskl | 0:5d27c333afa6 | 39 | mac[3] = 0x1D; |
jskl | 0:5d27c333afa6 | 40 | mac[4] = 0x2E; |
jskl | 0:5d27c333afa6 | 41 | mac[5] = 0x74; |
jskl | 0:5d27c333afa6 | 42 | |
jskl | 0:5d27c333afa6 | 43 | pc.printf("\r \n Ethernet Initialization \n"); |
jskl | 0:5d27c333afa6 | 44 | |
jskl | 0:5d27c333afa6 | 45 | if (USE_DHCP){ |
jskl | 0:5d27c333afa6 | 46 | ret = eth.init(mac); // Use DHCP |
jskl | 0:5d27c333afa6 | 47 | } |
jskl | 0:5d27c333afa6 | 48 | else{ |
jskl | 0:5d27c333afa6 | 49 | ret = eth.init(mac, IP_Addr, IP_Subnet, IP_Gateway); // static configuration |
jskl | 0:5d27c333afa6 | 50 | } |
jskl | 0:5d27c333afa6 | 51 | if (!ret) { // if error don't happen |
jskl | 0:5d27c333afa6 | 52 | pc.printf("\r \n Initialized, MAC: %s\n", eth.getMACAddress()); |
jskl | 0:5d27c333afa6 | 53 | } else { // else show error code |
jskl | 0:5d27c333afa6 | 54 | pc.printf("\r \n Error eth.init() - ret = %d\n", ret); |
jskl | 0:5d27c333afa6 | 55 | return -1; |
jskl | 0:5d27c333afa6 | 56 | } |
jskl | 0:5d27c333afa6 | 57 | |
jskl | 0:5d27c333afa6 | 58 | ret = eth.connect(); |
jskl | 0:5d27c333afa6 | 59 | if (!ret) { |
jskl | 0:5d27c333afa6 | 60 | pc.printf("\r \nIP: %s, MASK: %s, GW: %s\n", |
jskl | 0:5d27c333afa6 | 61 | eth.getIPAddress(), eth.getNetworkMask(), eth.getGateway()); |
jskl | 0:5d27c333afa6 | 62 | } else { |
jskl | 0:5d27c333afa6 | 63 | pc.printf("\r \n Error eth.connect() - ret = %d\n", ret); |
jskl | 0:5d27c333afa6 | 64 | return -1; |
jskl | 0:5d27c333afa6 | 65 | } |
jskl | 0:5d27c333afa6 | 66 | return 1; |
jskl | 0:5d27c333afa6 | 67 | |
jskl | 0:5d27c333afa6 | 68 | } |
jskl | 0:5d27c333afa6 | 69 | |
jskl | 0:5d27c333afa6 | 70 | void eth_comm() |
jskl | 0:5d27c333afa6 | 71 | { |
jskl | 0:5d27c333afa6 | 72 | /** |
jskl | 0:5d27c333afa6 | 73 | * Creates server and waits for client to connect. |
jskl | 0:5d27c333afa6 | 74 | * Sends reveiced buffer with commands to comm_handler. |
jskl | 0:5d27c333afa6 | 75 | * And sends reply created by comm_handler to client. |
jskl | 0:5d27c333afa6 | 76 | */ |
jskl | 0:5d27c333afa6 | 77 | TCPSocketServer server; // TCP/IP server object |
jskl | 0:5d27c333afa6 | 78 | server.bind(ECHO_SERVER_PORT); // binding listen port |
jskl | 0:5d27c333afa6 | 79 | server.listen(); // start listening |
jskl | 0:5d27c333afa6 | 80 | |
jskl | 0:5d27c333afa6 | 81 | while (true) { // infinit loop |
jskl | 0:5d27c333afa6 | 82 | pc.printf("\n \r Wait for new connection...\n"); // pc info |
jskl | 0:5d27c333afa6 | 83 | TCPSocketConnection client; // TCP/IP client object |
jskl | 0:5d27c333afa6 | 84 | server.accept(client); // accept connection |
jskl | 0:5d27c333afa6 | 85 | client.set_blocking(false, 1500); // no blocking connections, timeout after (1.5)s |
jskl | 0:5d27c333afa6 | 86 | pc.printf("\n \r Connection from: %s\n", client.get_address()); // pc info |
jskl | 0:5d27c333afa6 | 87 | char buffer[256]; // Data buffer |
jskl | 0:5d27c333afa6 | 88 | while (true) { // loop |
jskl | 0:5d27c333afa6 | 89 | for(int i =0; i < 256; i++) buffer[i] = '\0'; // clear buffer |
jskl | 0:5d27c333afa6 | 90 | int n = client.receive(buffer, sizeof(buffer)); // receive data & save it to buffer |
jskl | 0:5d27c333afa6 | 91 | if (n <= 0) break; // break if buffer is empty or error occured |
jskl | 0:5d27c333afa6 | 92 | comm_handler(buffer); // send received command to communication handler |
jskl | 0:5d27c333afa6 | 93 | n = strlen(buffer); // check buffer length |
jskl | 0:5d27c333afa6 | 94 | pc.printf("\n \r BUFF: %s, strlen: %d, size: %d, n: %d", buffer, strlen(buffer), sizeof(buffer), n); // pc info, just for debug |
jskl | 0:5d27c333afa6 | 95 | client.send(buffer, n); // send reply |
jskl | 0:5d27c333afa6 | 96 | for(int i =0; i < 256; i++) buffer[i] = '\0'; // clear buffer |
jskl | 0:5d27c333afa6 | 97 | if (n <= 0) break; // if error occured send break |
jskl | 0:5d27c333afa6 | 98 | } // |
jskl | 0:5d27c333afa6 | 99 | client.close(); // close connection |
jskl | 0:5d27c333afa6 | 100 | } // |
jskl | 0:5d27c333afa6 | 101 | } |
jskl | 0:5d27c333afa6 | 102 | |
jskl | 0:5d27c333afa6 | 103 | void read_data() |
jskl | 0:5d27c333afa6 | 104 | { |
jskl | 0:5d27c333afa6 | 105 | /** |
jskl | 0:5d27c333afa6 | 106 | * Reads sensor data in 10ms intervals. |
jskl | 0:5d27c333afa6 | 107 | * And saves them. |
jskl | 0:5d27c333afa6 | 108 | */ |
jskl | 0:5d27c333afa6 | 109 | sensor.Read_Magn(magn); // read magnitude |
jskl | 0:5d27c333afa6 | 110 | sensor.Read_Accel(accel); // read acceleration |
jskl | 0:5d27c333afa6 | 111 | sensor.Read_Gyro(gyro); // read gyroscope |
jskl | 0:5d27c333afa6 | 112 | TSI_pos = tsi.readPercentage(); // read percentage position of touch sensor |
jskl | 0:5d27c333afa6 | 113 | } |
jskl | 0:5d27c333afa6 | 114 | |
jskl | 0:5d27c333afa6 | 115 | void comm_handler(char* command) |
jskl | 0:5d27c333afa6 | 116 | { |
jskl | 0:5d27c333afa6 | 117 | /** This function gets data buffer with command |
jskl | 0:5d27c333afa6 | 118 | * and prepares answer to be sent. |
jskl | 0:5d27c333afa6 | 119 | */ |
jskl | 0:5d27c333afa6 | 120 | |
jskl | 0:5d27c333afa6 | 121 | pc.printf("\n \r %s \n \r", command); // send received command to pc (DEBUG) |
jskl | 0:5d27c333afa6 | 122 | if(strcmp(command,"read_sensor")==0) { // data read from sensor |
jskl | 1:f1ee978773d3 | 123 | sprintf(command, "{""magnX"":%10f,""magnY"":%10f,""magnZ"":%10f,""accelX"":%10f,""accelY"":%10f,""accelZ"":%10f,""gyroX"":%10f,""gyroY"":%10f,""gyroZ"":%10f,""TSIpos"":%10f}", magn[0], magn[1], magn[2], accel[0], accel[1], accel[2], gyro[0], gyro[1], gyro[2], TSI_pos); // enter data to buffer |
jskl | 0:5d27c333afa6 | 124 | wait(0.001); // wait |
jskl | 1:f1ee978773d3 | 125 | pc.printf("\n \r sending sensor data! %s", command); // pc info (debug) |
jskl | 0:5d27c333afa6 | 126 | } else if (strcmp(command,"check_ports")==0) { // check I/O ports current values |
jskl | 1:f1ee978773d3 | 127 | sprintf(command, "{""P1"":%d,""P2"":%d,""P3"":%d,""P4"":%d,""P5"":%d,""P6"":%d}", P1.read(), P2.read(), P3.read(), P4.read(), P5.read(), P6.read()); |
jskl | 0:5d27c333afa6 | 128 | } else if (strcmp(command,"get_P1")==0) { // get P1 value |
jskl | 1:f1ee978773d3 | 129 | sprintf(command, "{P1:%d}", P1.read()); // |
jskl | 0:5d27c333afa6 | 130 | } else if(strcmp(command,"set_P1_o")==0) { // set P1 as output |
jskl | 0:5d27c333afa6 | 131 | P1.output(); // |
jskl | 0:5d27c333afa6 | 132 | sprintf(command, "P1 is now set as output"); // |
jskl | 0:5d27c333afa6 | 133 | } else if (strcmp(command,"set_P1_i")==0) { // set P1 as input |
jskl | 0:5d27c333afa6 | 134 | P1.input(); // |
jskl | 0:5d27c333afa6 | 135 | sprintf(command, "P1 is now set as input"); // |
jskl | 0:5d27c333afa6 | 136 | } else if (strcmp(command,"set_P1_1")==0) { // set P1 as 1 |
jskl | 0:5d27c333afa6 | 137 | P1.output(); // set to output |
jskl | 0:5d27c333afa6 | 138 | P1.write(1); // write 1 to P1 |
jskl | 1:f1ee978773d3 | 139 | sprintf(command, "{P1:%d}", P1.read()); // reply with current value to check |
jskl | 0:5d27c333afa6 | 140 | } else if (strcmp(command,"set_P1_0")==0) { // set P1 as 0 |
jskl | 0:5d27c333afa6 | 141 | P1.output(); // |
jskl | 0:5d27c333afa6 | 142 | P1.write(0); |
jskl | 1:f1ee978773d3 | 143 | sprintf(command, "{P1:%d}", P1.read()); |
jskl | 0:5d27c333afa6 | 144 | } else if (strcmp(command,"get_P2")==0) { |
jskl | 0:5d27c333afa6 | 145 | sprintf(command, "P2 value: %d", P2.read()); |
jskl | 0:5d27c333afa6 | 146 | } else if (strcmp(command,"set_P2_o")==0) { |
jskl | 0:5d27c333afa6 | 147 | P2.output(); |
jskl | 0:5d27c333afa6 | 148 | sprintf(command, "P2 is now set as output"); |
jskl | 0:5d27c333afa6 | 149 | } else if (strcmp(command,"set_P2_i")==0) { |
jskl | 0:5d27c333afa6 | 150 | P2.input(); |
jskl | 0:5d27c333afa6 | 151 | sprintf (command, "P2 is now set as input"); |
jskl | 0:5d27c333afa6 | 152 | } else if (strcmp(command,"set_P2_1")==0) { |
jskl | 0:5d27c333afa6 | 153 | P2.output(); |
jskl | 0:5d27c333afa6 | 154 | P2.write(1); |
jskl | 0:5d27c333afa6 | 155 | sprintf(command, "P2 value is now: %d ", P2.read()); |
jskl | 0:5d27c333afa6 | 156 | } else if (strcmp(command,"set_P2_0")==0) { |
jskl | 0:5d27c333afa6 | 157 | P2.output(); |
jskl | 0:5d27c333afa6 | 158 | P2.write(0); |
jskl | 0:5d27c333afa6 | 159 | sprintf(command, "P2 value is now: %d ", P2.read()); |
jskl | 0:5d27c333afa6 | 160 | } else if (strcmp(command,"get_P3")==0) { |
jskl | 0:5d27c333afa6 | 161 | sprintf(command, "P3 value: %d", P3.read()); |
jskl | 0:5d27c333afa6 | 162 | } else if (strcmp(command,"set_P3_o")==0) { |
jskl | 0:5d27c333afa6 | 163 | P3.output(); |
jskl | 0:5d27c333afa6 | 164 | sprintf(command, "P3 is now set as output"); |
jskl | 0:5d27c333afa6 | 165 | } else if (strcmp(command,"set_P3_i")==0) { |
jskl | 0:5d27c333afa6 | 166 | P3.input(); |
jskl | 0:5d27c333afa6 | 167 | sprintf (command, "P3 is now set as input"); |
jskl | 0:5d27c333afa6 | 168 | } else if (strcmp(command,"set_P3_1")==0) { |
jskl | 0:5d27c333afa6 | 169 | P3.output(); |
jskl | 0:5d27c333afa6 | 170 | P3.write(1); |
jskl | 0:5d27c333afa6 | 171 | sprintf(command, "P3 value is now: %d ", P3.read()); |
jskl | 0:5d27c333afa6 | 172 | } else if (strcmp(command,"set_P3_0")==0) { |
jskl | 0:5d27c333afa6 | 173 | P3.output(); |
jskl | 0:5d27c333afa6 | 174 | P3.write(0); |
jskl | 0:5d27c333afa6 | 175 | sprintf(command, "P3 value is now: %d ", P3.read()); |
jskl | 0:5d27c333afa6 | 176 | } else if (strcmp(command,"get_P4")==0) { |
jskl | 0:5d27c333afa6 | 177 | sprintf(command, "P4 value: %d", P4.read()); |
jskl | 0:5d27c333afa6 | 178 | } else if (strcmp(command,"set_P4_o")==0) { |
jskl | 0:5d27c333afa6 | 179 | P4.output(); |
jskl | 0:5d27c333afa6 | 180 | sprintf(command, "P4 is now set as output"); |
jskl | 0:5d27c333afa6 | 181 | } else if (strcmp(command,"set_P4_i")==0) { |
jskl | 0:5d27c333afa6 | 182 | P4.input(); |
jskl | 0:5d27c333afa6 | 183 | sprintf (command, "P4 is now set as input"); |
jskl | 0:5d27c333afa6 | 184 | } else if (strcmp(command,"set_P4_1")==0) { |
jskl | 0:5d27c333afa6 | 185 | P4.output(); |
jskl | 0:5d27c333afa6 | 186 | P4.write(1); |
jskl | 0:5d27c333afa6 | 187 | sprintf(command, "P4 value is now: %d ", P4.read()); |
jskl | 0:5d27c333afa6 | 188 | } else if (strcmp(command,"set_P4_0")==0) { |
jskl | 0:5d27c333afa6 | 189 | P4.output(); |
jskl | 0:5d27c333afa6 | 190 | P4.write(0); |
jskl | 0:5d27c333afa6 | 191 | sprintf(command, "P4 value is now: %d ", P4.read()); |
jskl | 0:5d27c333afa6 | 192 | } else if (strcmp(command,"get_P5")==0) { |
jskl | 0:5d27c333afa6 | 193 | sprintf(command, "P5 value: %d", P5.read()); |
jskl | 0:5d27c333afa6 | 194 | } else if (strcmp(command,"set_P5_o")==0) { |
jskl | 0:5d27c333afa6 | 195 | P5.output(); |
jskl | 0:5d27c333afa6 | 196 | sprintf(command, "P5 is now set as output"); |
jskl | 0:5d27c333afa6 | 197 | } else if (strcmp(command,"set_P5_i")==0) { |
jskl | 0:5d27c333afa6 | 198 | P5.input(); |
jskl | 0:5d27c333afa6 | 199 | sprintf (command, "P5 is now set as input"); |
jskl | 0:5d27c333afa6 | 200 | } else if (strcmp(command,"set_P5_1")==0) { |
jskl | 0:5d27c333afa6 | 201 | P5.output(); |
jskl | 0:5d27c333afa6 | 202 | P5.write(1); |
jskl | 0:5d27c333afa6 | 203 | sprintf(command, "P5 value is now: %d ", P5.read()); |
jskl | 0:5d27c333afa6 | 204 | } else if (strcmp(command,"set_P5_0")==0) { |
jskl | 0:5d27c333afa6 | 205 | P5.output(); |
jskl | 0:5d27c333afa6 | 206 | P5.write(0); |
jskl | 0:5d27c333afa6 | 207 | sprintf(command, "P5 value is now: %d ", P5.read()); |
jskl | 0:5d27c333afa6 | 208 | } else if (strcmp(command,"get_P6")==0) { |
jskl | 0:5d27c333afa6 | 209 | sprintf(command, "P6 value: %d", P6.read()); |
jskl | 0:5d27c333afa6 | 210 | } else if (strcmp(command,"set_P6_o")==0) { |
jskl | 0:5d27c333afa6 | 211 | P6.output(); |
jskl | 0:5d27c333afa6 | 212 | sprintf(command, "P6 is now set as output"); |
jskl | 0:5d27c333afa6 | 213 | } else if (strcmp(command,"set_P6_i")==0) { |
jskl | 0:5d27c333afa6 | 214 | P6.input(); |
jskl | 0:5d27c333afa6 | 215 | sprintf (command, "P6 is now set as input"); |
jskl | 0:5d27c333afa6 | 216 | } else if (strcmp(command,"set_P6_1")==0) { |
jskl | 0:5d27c333afa6 | 217 | P6.output(); |
jskl | 0:5d27c333afa6 | 218 | P6.write(1); |
jskl | 0:5d27c333afa6 | 219 | sprintf(command, "P6 value is now: %d ", P6.read()); |
jskl | 0:5d27c333afa6 | 220 | } else if (strcmp(command,"set_P6_0")==0) { |
jskl | 0:5d27c333afa6 | 221 | P6.output(); |
jskl | 0:5d27c333afa6 | 222 | P6.write(0); |
jskl | 0:5d27c333afa6 | 223 | sprintf(command, "P6 value is now: %d ", P6.read()); |
jskl | 0:5d27c333afa6 | 224 | } else sprintf(command, "Unknown Command!"); |
jskl | 0:5d27c333afa6 | 225 | } |
jskl | 0:5d27c333afa6 | 226 | |
jskl | 0:5d27c333afa6 | 227 | void SerialInterHandler() |
jskl | 0:5d27c333afa6 | 228 | { |
jskl | 0:5d27c333afa6 | 229 | /** |
jskl | 0:5d27c333afa6 | 230 | Enables to configure Ethernet card via serial port in first 5 seconds from KL25Z startup. |
jskl | 0:5d27c333afa6 | 231 | */ |
jskl | 0:5d27c333afa6 | 232 | pc.getc(); // gets 1 char from buffer and clears it |
jskl | 0:5d27c333afa6 | 233 | pc.printf("\n \rUse DHCP? \n \ry-yes "); |
jskl | 0:5d27c333afa6 | 234 | char from_serial; |
jskl | 0:5d27c333afa6 | 235 | while (true) { |
jskl | 0:5d27c333afa6 | 236 | if (pc.readable()) { |
jskl | 0:5d27c333afa6 | 237 | from_serial= pc.getc(); |
jskl | 0:5d27c333afa6 | 238 | break; |
jskl | 0:5d27c333afa6 | 239 | } |
jskl | 0:5d27c333afa6 | 240 | } |
jskl | 0:5d27c333afa6 | 241 | pc.printf("\n \r%c", from_serial); |
jskl | 0:5d27c333afa6 | 242 | if (from_serial=='y') { |
jskl | 0:5d27c333afa6 | 243 | USE_DHCP = true; |
jskl | 0:5d27c333afa6 | 244 | pc.printf("\n \rUsing DHCP "); |
jskl | 0:5d27c333afa6 | 245 | return; |
jskl | 0:5d27c333afa6 | 246 | } |
jskl | 0:5d27c333afa6 | 247 | else if (from_serial=='n') { |
jskl | 0:5d27c333afa6 | 248 | USE_DHCP = false; |
jskl | 0:5d27c333afa6 | 249 | pc.printf("\n \rStatic IP configuration "); |
jskl | 0:5d27c333afa6 | 250 | pc.printf("\n \rCurrent config:"); |
jskl | 0:5d27c333afa6 | 251 | pc.printf("\r \nIP: %s, MASK: %s, GW: %s\n", IP_Addr, IP_Subnet, IP_Gateway); |
jskl | 0:5d27c333afa6 | 252 | pc.printf("\n \rDo you want to change it?"); |
jskl | 0:5d27c333afa6 | 253 | if(pc.getc()=='y'){ |
jskl | 0:5d27c333afa6 | 254 | pc.printf("\n \rIP: \n \r Press 'enter and then backspace' to end and save \r \n Remember to Enter all 15 characters!\n \r"); |
jskl | 0:5d27c333afa6 | 255 | pc.scanf("%s" ,IP_Addr); |
jskl | 0:5d27c333afa6 | 256 | pc.printf("new IP: %s", IP_Addr); |
jskl | 0:5d27c333afa6 | 257 | pc.printf("\n \r Enter Subnet Mask:"); |
jskl | 0:5d27c333afa6 | 258 | pc.scanf("%s", IP_Subnet); |
jskl | 0:5d27c333afa6 | 259 | pc.printf("\n \r new Mask: %s", IP_Subnet); |
jskl | 0:5d27c333afa6 | 260 | pc.printf("\n \r Enter Gateway:"); |
jskl | 0:5d27c333afa6 | 261 | pc.scanf("%s", IP_Gateway); |
jskl | 0:5d27c333afa6 | 262 | pc.printf("\r \n IP: %s, MASK: %s, GW: %s\n", IP_Addr, IP_Subnet, IP_Gateway); |
jskl | 0:5d27c333afa6 | 263 | } |
jskl | 0:5d27c333afa6 | 264 | else return; |
jskl | 0:5d27c333afa6 | 265 | return; |
jskl | 0:5d27c333afa6 | 266 | } |
jskl | 0:5d27c333afa6 | 267 | else pc.printf("\n \rWrong key! Nothing to do"); |
jskl | 0:5d27c333afa6 | 268 | } |
jskl | 0:5d27c333afa6 | 269 | |
jskl | 0:5d27c333afa6 | 270 | void menu_prop() |
jskl | 0:5d27c333afa6 | 271 | { |
jskl | 0:5d27c333afa6 | 272 | /** |
jskl | 0:5d27c333afa6 | 273 | Counting down time left to enter menu. |
jskl | 0:5d27c333afa6 | 274 | */ |
jskl | 0:5d27c333afa6 | 275 | pc.printf("\n \r Press any key to enter menu \n \r 5"); |
jskl | 0:5d27c333afa6 | 276 | wait(1); |
jskl | 0:5d27c333afa6 | 277 | pc.printf("\n \r 4"); |
jskl | 0:5d27c333afa6 | 278 | wait(1); |
jskl | 0:5d27c333afa6 | 279 | pc.printf("\n \r 3"); |
jskl | 0:5d27c333afa6 | 280 | wait(1); |
jskl | 0:5d27c333afa6 | 281 | pc.printf("\n \r 2"); |
jskl | 0:5d27c333afa6 | 282 | wait(1); |
jskl | 0:5d27c333afa6 | 283 | pc.printf("\n \r 1"); |
jskl | 0:5d27c333afa6 | 284 | wait(1); |
jskl | 0:5d27c333afa6 | 285 | pc.printf("\n \r 0 \n \r Starting!"); |
jskl | 0:5d27c333afa6 | 286 | |
jskl | 0:5d27c333afa6 | 287 | } |