Update_CR2

Dependencies:   CR2 EthernetInterface FreescaleIAP I2CLCD SerialDriver jro k64f_EthLink mbed-rtos mbed

Committer:
omassanet
Date:
Thu Jul 21 15:07:05 2016 +0000
Revision:
1:3b8bff8411a6
Parent:
0:53494cfddea7
Update

Who changed what in which revision?

UserRevisionLine numberNew contents of line
omassanet 0:53494cfddea7 1 /*
omassanet 0:53494cfddea7 2 * Author: MIGUEL URCO
omassanet 0:53494cfddea7 3 * Date: 10/11/2014
omassanet 0:53494cfddea7 4 * Notes: Checks the Ethernet cable connection
omassanet 0:53494cfddea7 5 */
omassanet 0:53494cfddea7 6 #if 1
omassanet 0:53494cfddea7 7
omassanet 0:53494cfddea7 8 #include "mbed.h"
omassanet 0:53494cfddea7 9 #include "rtos.h"
omassanet 0:53494cfddea7 10 #include "EthernetInterface.h"
omassanet 0:53494cfddea7 11 #include "SerialDriver.h"
omassanet 0:53494cfddea7 12 #include "I2CLCD.h"
omassanet 0:53494cfddea7 13
omassanet 0:53494cfddea7 14 #include "k64f_EthLink.h"
omassanet 0:53494cfddea7 15 #include "EthUtils.h"
omassanet 0:53494cfddea7 16 #include "JroIpdata.h"
omassanet 0:53494cfddea7 17 #include "JroSIR.h"
omassanet 0:53494cfddea7 18 #include "CR2.h"
omassanet 0:53494cfddea7 19
omassanet 0:53494cfddea7 20 #define mbed_reset NVIC_SystemReset
omassanet 0:53494cfddea7 21
omassanet 0:53494cfddea7 22 #define BUFFER_SIZE 256
omassanet 0:53494cfddea7 23 static char rx_buffer[BUFFER_SIZE];
omassanet 0:53494cfddea7 24 static char tx_buffer[BUFFER_SIZE];
omassanet 0:53494cfddea7 25
omassanet 0:53494cfddea7 26 //THREADS
omassanet 0:53494cfddea7 27 Thread *ser_thread_ptr;
omassanet 0:53494cfddea7 28 Thread *eth_thread_ptr;
omassanet 0:53494cfddea7 29 Thread *lcd_thread_ptr;
omassanet 0:53494cfddea7 30 Mutex cr2_mutex;
omassanet 0:53494cfddea7 31 Mutex eth_mutex;
omassanet 0:53494cfddea7 32 Mutex lcd_mutex;
omassanet 0:53494cfddea7 33
omassanet 0:53494cfddea7 34 //SERIAL
omassanet 0:53494cfddea7 35 #define SERIAL_BAUDRATE 1000000
omassanet 0:53494cfddea7 36 const char* UART_MSG_OK = "CR2 Successful";
omassanet 0:53494cfddea7 37 const char* UART_MSG_KO = "CR2 Unsuccessful";
omassanet 0:53494cfddea7 38 const char* UART_MSG_NC = "CR2 Not connected";
omassanet 0:53494cfddea7 39
omassanet 0:53494cfddea7 40 Serial screen(USBTX, USBRX);
omassanet 0:53494cfddea7 41 SerialDriver uart(D1, D0);
omassanet 0:53494cfddea7 42
omassanet 0:53494cfddea7 43
omassanet 0:53494cfddea7 44 //LCD
omassanet 0:53494cfddea7 45 I2C i2c_device(I2C_SDA, I2C_SCL);
omassanet 0:53494cfddea7 46 I2CLCD lcd(i2c_device, 0x78, LCD20x2);
omassanet 0:53494cfddea7 47
omassanet 0:53494cfddea7 48 //const char LCD_WELCOME[] = " JICAMARCA - CR2 ";
omassanet 0:53494cfddea7 49 const char LCD_IP_INI[] = "IP : checking... ";
omassanet 0:53494cfddea7 50 const char LCD_IP_NC[] = "IP : Not connected ";
omassanet 0:53494cfddea7 51 //const char LCD_IP_NI[] = "IP : Not initialized";
omassanet 0:53494cfddea7 52
omassanet 0:53494cfddea7 53 const char LCD_CR2_INI[] = "CR2: checking... ";
omassanet 0:53494cfddea7 54 const char LCD_CR2_NC[] = "CR2: Not detected ";
omassanet 0:53494cfddea7 55 const char LCD_CR2_ENA[] = " Outputs Enabled ";
omassanet 0:53494cfddea7 56 const char LCD_CR2_DIS[] = " Otuputs Disabled ";
omassanet 0:53494cfddea7 57
omassanet 0:53494cfddea7 58 //ETHERNET
omassanet 0:53494cfddea7 59 #define ECHO_SERVER_PORT 2000
omassanet 0:53494cfddea7 60 const char DEVICE_NAME[] = "jrodds";
omassanet 0:53494cfddea7 61
omassanet 0:53494cfddea7 62 IpData ipData(tx_buffer);
omassanet 0:53494cfddea7 63
omassanet 0:53494cfddea7 64 k64fEthLink eth_link;
omassanet 0:53494cfddea7 65 EthernetInterface eth;
omassanet 0:53494cfddea7 66 TCPSocketServer server;
omassanet 0:53494cfddea7 67
omassanet 0:53494cfddea7 68 //CR2
omassanet 0:53494cfddea7 69 SPI spi_device(D11, D12, D13);
omassanet 0:53494cfddea7 70
omassanet 0:53494cfddea7 71 DigitalOut cr2_mreset(D4);
omassanet 0:53494cfddea7 72 DigitalOut cr2_outramp(D5);
omassanet 0:53494cfddea7 73 DigitalOut cr2_sp_mode(D6);
omassanet 0:53494cfddea7 74 DigitalOut cr2_cs(D7);
omassanet 0:53494cfddea7 75 DigitalOut cr2_io_reset(D9);
omassanet 0:53494cfddea7 76 DigitalInOut cr2_updclk(D10);
omassanet 0:53494cfddea7 77
omassanet 0:53494cfddea7 78 CR2 cr2_device(&spi_device, &cr2_mreset, &cr2_outramp, &cr2_sp_mode, &cr2_cs, &cr2_io_reset, &cr2_updclk);
omassanet 0:53494cfddea7 79
omassanet 0:53494cfddea7 80 //LEDS
omassanet 0:53494cfddea7 81 DigitalOut LedR(LED1);
omassanet 0:53494cfddea7 82 DigitalOut LedG(LED2);
omassanet 0:53494cfddea7 83 DigitalOut LedB(LED3);
omassanet 0:53494cfddea7 84
omassanet 0:53494cfddea7 85 DigitalIn IPResetButton(PTB2, PullUp);
omassanet 0:53494cfddea7 86
omassanet 0:53494cfddea7 87 int printAddr(char *_ip, char *_mask, char *_gateway){
omassanet 0:53494cfddea7 88 lcd.printf(_ip, 0, 0);
omassanet 0:53494cfddea7 89 lcd.printf(_mask, 0, 1);
omassanet 0:53494cfddea7 90
omassanet 0:53494cfddea7 91 screen.putc(0x0A);
omassanet 0:53494cfddea7 92 screen.putc(0x0D);
omassanet 0:53494cfddea7 93
omassanet 0:53494cfddea7 94 for (int i=0; i<20; i++){
omassanet 0:53494cfddea7 95 screen.putc(_ip[i]);
omassanet 0:53494cfddea7 96 }
omassanet 0:53494cfddea7 97 screen.putc(0x0A);
omassanet 0:53494cfddea7 98 screen.putc(0x0D);
omassanet 0:53494cfddea7 99
omassanet 0:53494cfddea7 100 for (int i=0; i<20; i++){
omassanet 0:53494cfddea7 101 screen.putc(_mask[i]);
omassanet 0:53494cfddea7 102 }
omassanet 0:53494cfddea7 103
omassanet 0:53494cfddea7 104 screen.putc(0x0A);
omassanet 0:53494cfddea7 105 screen.putc(0x0D);
omassanet 0:53494cfddea7 106
omassanet 0:53494cfddea7 107 for (int i=0; i<20; i++){
omassanet 0:53494cfddea7 108 screen.putc(_gateway[i]);
omassanet 0:53494cfddea7 109 }
omassanet 0:53494cfddea7 110
omassanet 0:53494cfddea7 111 screen.putc(0x0A);
omassanet 0:53494cfddea7 112 screen.putc(0x0D);
omassanet 0:53494cfddea7 113
omassanet 0:53494cfddea7 114 return 1;
omassanet 0:53494cfddea7 115 }
omassanet 0:53494cfddea7 116
omassanet 0:53494cfddea7 117 int wasIPResetPressed(){
omassanet 0:53494cfddea7 118
omassanet 0:53494cfddea7 119 if (IPResetButton)
omassanet 0:53494cfddea7 120 return 0;
omassanet 0:53494cfddea7 121
omassanet 0:53494cfddea7 122 //Wait until button will be released
omassanet 0:53494cfddea7 123 while(!IPResetButton){
omassanet 0:53494cfddea7 124 Thread::wait(50);
omassanet 0:53494cfddea7 125 }
omassanet 0:53494cfddea7 126
omassanet 0:53494cfddea7 127 return 1;
omassanet 0:53494cfddea7 128 }
omassanet 0:53494cfddea7 129
omassanet 0:53494cfddea7 130
omassanet 0:53494cfddea7 131 void waitSerialData_thread(void const *args){
omassanet 0:53494cfddea7 132
omassanet 0:53494cfddea7 133 int n;
omassanet 0:53494cfddea7 134 bool successful;
omassanet 0:53494cfddea7 135
omassanet 0:53494cfddea7 136 //Thread::signal_wait(0x1);
omassanet 0:53494cfddea7 137
omassanet 0:53494cfddea7 138 LedG = 1;
omassanet 0:53494cfddea7 139
omassanet 0:53494cfddea7 140 uart.baud(SERIAL_BAUDRATE);
omassanet 0:53494cfddea7 141
omassanet 0:53494cfddea7 142 while(1){
omassanet 0:53494cfddea7 143 LedG = 0;
omassanet 0:53494cfddea7 144 successful = false;
omassanet 0:53494cfddea7 145
omassanet 0:53494cfddea7 146 if (uart.isRxBufferEmpty()){
omassanet 0:53494cfddea7 147 Thread::wait(100);
omassanet 0:53494cfddea7 148 continue;
omassanet 0:53494cfddea7 149 }
omassanet 0:53494cfddea7 150
omassanet 0:53494cfddea7 151 Thread::wait(10);
omassanet 0:53494cfddea7 152 n = uart.read(rx_buffer, 255, false);
omassanet 0:53494cfddea7 153
omassanet 0:53494cfddea7 154 //******************** BLINK LED *****************************
omassanet 0:53494cfddea7 155 for (int i=0; i<n; i++){
omassanet 0:53494cfddea7 156 LedG = !LedG;
omassanet 0:53494cfddea7 157 Thread::wait(10);
omassanet 0:53494cfddea7 158 }
omassanet 0:53494cfddea7 159 lcd.printf("Serial command received", 0, 1);
omassanet 0:53494cfddea7 160 //******************** CR2 NOT INITIALIZED *******************
omassanet 0:53494cfddea7 161 if (!cr2_device.wasInitialized()){
omassanet 0:53494cfddea7 162 for (int i=0; i<strlen(UART_MSG_NC); i++){
omassanet 0:53494cfddea7 163 uart.putc(UART_MSG_NC[i]);
omassanet 0:53494cfddea7 164 }
omassanet 0:53494cfddea7 165 continue;
omassanet 0:53494cfddea7 166 }
omassanet 0:53494cfddea7 167 //Lock cr2_device before execute any command
omassanet 0:53494cfddea7 168 cr2_mutex.lock();
omassanet 0:53494cfddea7 169
omassanet 0:53494cfddea7 170 //********************* SUCCESSFUL DATA **********************
omassanet 0:53494cfddea7 171 //if (n == 40)
omassanet 0:53494cfddea7 172 //if (cr2_device.setAllDevice(rx_buffer) == 1)
omassanet 0:53494cfddea7 173 //successful = true;
omassanet 0:53494cfddea7 174
omassanet 0:53494cfddea7 175 //******************** REPLY UART*****************************
omassanet 0:53494cfddea7 176 if (successful)
omassanet 0:53494cfddea7 177 //for (int i=0; i<strlen(UART_MSG_OK); i++)
omassanet 0:53494cfddea7 178 uart.printf(UART_MSG_OK);
omassanet 0:53494cfddea7 179
omassanet 0:53494cfddea7 180 else
omassanet 0:53494cfddea7 181 uart.printf(UART_MSG_KO);
omassanet 0:53494cfddea7 182
omassanet 0:53494cfddea7 183 cr2_mutex.unlock();
omassanet 0:53494cfddea7 184
omassanet 0:53494cfddea7 185 }
omassanet 0:53494cfddea7 186
omassanet 0:53494cfddea7 187 }
omassanet 0:53494cfddea7 188
omassanet 0:53494cfddea7 189 void waitEthData_thread(void const *args){
omassanet 0:53494cfddea7 190
omassanet 0:53494cfddea7 191 TCPSocketConnection client;
omassanet 0:53494cfddea7 192 //int status;
omassanet 0:53494cfddea7 193 int n, totalSize=0;
omassanet 0:53494cfddea7 194 char _ip[MAX_IP_LEN], _mask[MAX_IP_LEN], _gateway[MAX_IP_LEN];
omassanet 0:53494cfddea7 195
omassanet 0:53494cfddea7 196 //Lock ethernet resource until initial configuration will be loaded
omassanet 0:53494cfddea7 197 eth_mutex.lock();
omassanet 0:53494cfddea7 198
omassanet 0:53494cfddea7 199 readIpConfig(_ip, _mask, _gateway);
omassanet 0:53494cfddea7 200
omassanet 0:53494cfddea7 201 LedB = 1;
omassanet 0:53494cfddea7 202
omassanet 0:53494cfddea7 203 if (eth.init(_ip, _mask, _gateway) != 0){
omassanet 0:53494cfddea7 204 //mbed_reset();
omassanet 0:53494cfddea7 205 }
omassanet 0:53494cfddea7 206
omassanet 0:53494cfddea7 207 eth.setName(DEVICE_NAME);
omassanet 0:53494cfddea7 208 eth.connect();
omassanet 0:53494cfddea7 209 Thread::wait(200);
omassanet 0:53494cfddea7 210 eth_mutex.unlock();
omassanet 0:53494cfddea7 211
omassanet 0:53494cfddea7 212 //If ethernet connection fails then try again
omassanet 0:53494cfddea7 213 while(eth_link.GetELink() != 0){
omassanet 0:53494cfddea7 214 eth.connect();
omassanet 0:53494cfddea7 215 Thread::wait(200);
omassanet 0:53494cfddea7 216 }
omassanet 0:53494cfddea7 217
omassanet 0:53494cfddea7 218 server.bind(ECHO_SERVER_PORT);
omassanet 0:53494cfddea7 219 server.listen(1);
omassanet 0:53494cfddea7 220
omassanet 0:53494cfddea7 221 LedB = 0;
omassanet 0:53494cfddea7 222
omassanet 0:53494cfddea7 223 while(1)
omassanet 0:53494cfddea7 224 {
omassanet 0:53494cfddea7 225 LedB = 0;
omassanet 0:53494cfddea7 226 n = 0;
omassanet 0:53494cfddea7 227 totalSize = 0;
omassanet 0:53494cfddea7 228
omassanet 0:53494cfddea7 229 server.accept(client);
omassanet 0:53494cfddea7 230
omassanet 0:53494cfddea7 231 client.set_blocking(false, 500); // Timeout after (0.5)s
omassanet 0:53494cfddea7 232
omassanet 0:53494cfddea7 233 while (true) {
omassanet 0:53494cfddea7 234 LedR = !LedR;
omassanet 0:53494cfddea7 235 n = client.receive(rx_buffer, sizeof(rx_buffer));
omassanet 0:53494cfddea7 236 if (n <= 0) break;
omassanet 0:53494cfddea7 237 totalSize += n;
omassanet 0:53494cfddea7 238 Thread::wait(10);
omassanet 0:53494cfddea7 239 }
omassanet 0:53494cfddea7 240
omassanet 0:53494cfddea7 241 LedB = 1;
omassanet 0:53494cfddea7 242
omassanet 0:53494cfddea7 243 if (totalSize < 1){
omassanet 0:53494cfddea7 244 client.close();
omassanet 0:53494cfddea7 245 continue;
omassanet 0:53494cfddea7 246 }
omassanet 0:53494cfddea7 247
omassanet 0:53494cfddea7 248 if (ipData.decode(rx_buffer, totalSize) == 0){
omassanet 0:53494cfddea7 249 client.send(ipData.getKOData(0x00), ipData.getKODataLen());
omassanet 0:53494cfddea7 250 client.close();
omassanet 0:53494cfddea7 251 continue;
omassanet 0:53494cfddea7 252 }
omassanet 0:53494cfddea7 253 lcd.printf("Eth command received", 0, 1);
omassanet 0:53494cfddea7 254 //******************** CR2 NOT INITIALIZED *******************
omassanet 0:53494cfddea7 255 if (!cr2_device.wasInitialized()){
omassanet 0:53494cfddea7 256 client.send(ipData.getNIData(ipData.getCmd()), ipData.getNIDataLen());
omassanet 0:53494cfddea7 257 client.close();
omassanet 0:53494cfddea7 258 continue;
omassanet 0:53494cfddea7 259 }
omassanet 0:53494cfddea7 260
omassanet 0:53494cfddea7 261 //******************** REPLY REQ *****************************
omassanet 0:53494cfddea7 262
omassanet 0:53494cfddea7 263 //********* IP CONFIG ****
omassanet 0:53494cfddea7 264 if (ipData.getCmd() == CMD_CHANGE_IP){
omassanet 0:53494cfddea7 265
omassanet 0:53494cfddea7 266 if ( splitIpConf(ipData.getPayload(), _ip, _mask, _gateway) ){
omassanet 0:53494cfddea7 267 //changing ip and reseting device
omassanet 0:53494cfddea7 268 client.send(ipData.getOKData(ipData.getCmd()), ipData.getOKDataLen());
omassanet 0:53494cfddea7 269 Thread::wait(200);
omassanet 0:53494cfddea7 270 client.close();
omassanet 0:53494cfddea7 271
omassanet 0:53494cfddea7 272 saveIpConfig(_ip, _mask, _gateway);
omassanet 0:53494cfddea7 273 eth.setNewAddr(_ip, _mask, _gateway);
omassanet 0:53494cfddea7 274 Thread::wait(500);
omassanet 0:53494cfddea7 275 //mbed_reset();
omassanet 0:53494cfddea7 276 continue;
omassanet 0:53494cfddea7 277 }
omassanet 0:53494cfddea7 278 else{
omassanet 0:53494cfddea7 279 client.send(ipData.getKOData(ipData.getCmd()), ipData.getKODataLen());
omassanet 0:53494cfddea7 280 Thread::wait(200);
omassanet 0:53494cfddea7 281 client.close();
omassanet 0:53494cfddea7 282 continue;
omassanet 0:53494cfddea7 283 }
omassanet 0:53494cfddea7 284 }
omassanet 0:53494cfddea7 285
omassanet 0:53494cfddea7 286 //Lock cr2_device before execute any command
omassanet 0:53494cfddea7 287 cr2_mutex.lock();
omassanet 0:53494cfddea7 288
omassanet 0:53494cfddea7 289 // ********** OTHER COMMANDS
omassanet 0:53494cfddea7 290 cr2_device.writeBlock(ipData.getPayloadLen(),ipData.getPayload());
omassanet 0:53494cfddea7 291 //cr2_device.setCommand(ipData.getCmd(), ipData.getPayload(), ipData.getPayloadLen());
omassanet 0:53494cfddea7 292 ipData.encode(ipData.getCmd(), cr2_device.getCmdAnswer(), cr2_device.getCmdAnswerLen());
omassanet 0:53494cfddea7 293
omassanet 0:53494cfddea7 294 client.send(ipData.getTxData(), ipData.getTxDataLen());
omassanet 0:53494cfddea7 295 Thread::wait(10);
omassanet 0:53494cfddea7 296 client.close();
omassanet 0:53494cfddea7 297
omassanet 0:53494cfddea7 298 cr2_mutex.unlock();
omassanet 0:53494cfddea7 299 }
omassanet 0:53494cfddea7 300 }
omassanet 0:53494cfddea7 301
omassanet 0:53494cfddea7 302 void lcdView_thread(void const *args){
omassanet 0:53494cfddea7 303
omassanet 0:53494cfddea7 304 char c=0;
omassanet 0:53494cfddea7 305 char lcd_status[2]="\xF7";
omassanet 0:53494cfddea7 306
omassanet 0:53494cfddea7 307 lcd.printf(LCD_CR2_INI, 0, 0);
omassanet 0:53494cfddea7 308 lcd.printf(LCD_IP_INI, 0, 1);
omassanet 0:53494cfddea7 309 Thread::wait(2000);
omassanet 0:53494cfddea7 310
omassanet 0:53494cfddea7 311 while(1){
omassanet 0:53494cfddea7 312 /*
omassanet 0:53494cfddea7 313 if (lcd_mutex.trylock()==false){
omassanet 0:53494cfddea7 314 Thread::wait(1000);
omassanet 0:53494cfddea7 315 continue;
omassanet 0:53494cfddea7 316 }
omassanet 0:53494cfddea7 317 */
omassanet 0:53494cfddea7 318
omassanet 0:53494cfddea7 319 if (cr2_device.wasInitialized()){
omassanet 0:53494cfddea7 320
omassanet 0:53494cfddea7 321 //RF ENABLED OR DISABLED
omassanet 0:53494cfddea7 322 if (c==1){
omassanet 0:53494cfddea7 323 //if(cr2_device.isRFEnabled()){
omassanet 0:53494cfddea7 324 //lcd.printf(LCD_CR2_ENA, 0, 0);
omassanet 0:53494cfddea7 325 //}
omassanet 0:53494cfddea7 326 //else{
omassanet 0:53494cfddea7 327 lcd.printf(LCD_CR2_DIS, 0, 0);
omassanet 0:53494cfddea7 328 //}
omassanet 0:53494cfddea7 329 lcd_status[0] = 0x01;
omassanet 0:53494cfddea7 330 lcd.printf(lcd_status, 19, 0);
omassanet 0:53494cfddea7 331
omassanet 0:53494cfddea7 332 }
omassanet 0:53494cfddea7 333 //FREQUENCY
omassanet 0:53494cfddea7 334 if (c==3){
omassanet 0:53494cfddea7 335 char tmp[21];
omassanet 0:53494cfddea7 336 sprintf(tmp, "Fout = %7.5f*Clk", cr2_device.getFreqFactor1());
omassanet 0:53494cfddea7 337 lcd.printf(tmp, 0, 0);
omassanet 0:53494cfddea7 338 }
omassanet 0:53494cfddea7 339 if (c==5){
omassanet 0:53494cfddea7 340 char tmp[21];
omassanet 0:53494cfddea7 341 sprintf(tmp, "Modulation = %s", cr2_device.getModeStr() );
omassanet 0:53494cfddea7 342 lcd.printf(tmp, 0, 0);
omassanet 0:53494cfddea7 343 }
omassanet 0:53494cfddea7 344 }
omassanet 0:53494cfddea7 345 else{
omassanet 0:53494cfddea7 346 lcd.printf(LCD_CR2_NC, 0, 0);
omassanet 0:53494cfddea7 347 lcd_status[0] = lcd_status[0] ^ 0xFF;
omassanet 0:53494cfddea7 348 lcd.printf(lcd_status, 19, 0);
omassanet 0:53494cfddea7 349 }
omassanet 0:53494cfddea7 350
omassanet 0:53494cfddea7 351 //Verify if ethernet resource is free
omassanet 0:53494cfddea7 352 if (eth_mutex.trylock()){
omassanet 0:53494cfddea7 353 if (eth_link.GetELink() == 0){
omassanet 0:53494cfddea7 354 if (c==0){
omassanet 0:53494cfddea7 355 lcd.printf("IP : ", 0, 1);
omassanet 0:53494cfddea7 356 lcd.printf(eth.getIPAddress(), 5, 1);
omassanet 0:53494cfddea7 357 }
omassanet 0:53494cfddea7 358 if (c==2){
omassanet 0:53494cfddea7 359 lcd.printf("MSK: ", 0, 1);
omassanet 0:53494cfddea7 360 lcd.printf(eth.getNetworkMask(), 5, 1);
omassanet 0:53494cfddea7 361 }
omassanet 0:53494cfddea7 362 if (c==4){
omassanet 0:53494cfddea7 363 lcd.printf("GW : ", 0, 1);
omassanet 0:53494cfddea7 364 lcd.printf(eth.getGateway(), 5, 1);
omassanet 0:53494cfddea7 365 }
omassanet 0:53494cfddea7 366 }
omassanet 0:53494cfddea7 367 else{
omassanet 0:53494cfddea7 368 lcd.printf(LCD_IP_NC, 0, 1);
omassanet 0:53494cfddea7 369 }
omassanet 0:53494cfddea7 370 eth_mutex.unlock();
omassanet 0:53494cfddea7 371 }
omassanet 0:53494cfddea7 372 else{
omassanet 0:53494cfddea7 373 lcd.printf(LCD_IP_INI, 0, 1);
omassanet 0:53494cfddea7 374 }
omassanet 0:53494cfddea7 375 c++;
omassanet 0:53494cfddea7 376 if (c>5) c=0;
omassanet 0:53494cfddea7 377 //lcd_mutex.unlock();
omassanet 0:53494cfddea7 378 Thread::wait(1000);
omassanet 0:53494cfddea7 379 }
omassanet 0:53494cfddea7 380
omassanet 0:53494cfddea7 381 }
omassanet 0:53494cfddea7 382
omassanet 0:53494cfddea7 383 int main()
omassanet 0:53494cfddea7 384 {
omassanet 0:53494cfddea7 385 screen.baud(9600);
omassanet 0:53494cfddea7 386
omassanet 0:53494cfddea7 387 screen.putc(0x0A);
omassanet 0:53494cfddea7 388 screen.putc(0x0D);
omassanet 0:53494cfddea7 389 screen.putc(0x33);
omassanet 0:53494cfddea7 390 screen.putc(0x33);
omassanet 0:53494cfddea7 391
omassanet 0:53494cfddea7 392 ser_thread_ptr = new Thread(&waitSerialData_thread);
omassanet 0:53494cfddea7 393 eth_thread_ptr = new Thread(&waitEthData_thread);
omassanet 0:53494cfddea7 394 lcd_thread_ptr = new Thread(&lcdView_thread);
omassanet 0:53494cfddea7 395
omassanet 0:53494cfddea7 396 LedR = 1;
omassanet 0:53494cfddea7 397
omassanet 0:53494cfddea7 398 screen.putc(0x33);
omassanet 0:53494cfddea7 399 screen.putc(0x32);
omassanet 0:53494cfddea7 400
omassanet 0:53494cfddea7 401 while(true){
omassanet 0:53494cfddea7 402 if (cr2_device.init())
omassanet 0:53494cfddea7 403 break;
omassanet 0:53494cfddea7 404
omassanet 0:53494cfddea7 405 LedR = !LedR;
omassanet 0:53494cfddea7 406 Thread::wait(250);
omassanet 0:53494cfddea7 407
omassanet 0:53494cfddea7 408 if (wasIPResetPressed()){
omassanet 0:53494cfddea7 409 eraseIpConfig();
omassanet 0:53494cfddea7 410 mbed_reset();
omassanet 0:53494cfddea7 411 }
omassanet 0:53494cfddea7 412 }
omassanet 0:53494cfddea7 413
omassanet 0:53494cfddea7 414 LedR = 0;
omassanet 0:53494cfddea7 415 /*
omassanet 0:53494cfddea7 416 screen.putc(0x33);
omassanet 0:53494cfddea7 417 screen.putc(0x31);
omassanet 0:53494cfddea7 418 */
omassanet 0:53494cfddea7 419 LedR = 1;
omassanet 0:53494cfddea7 420
omassanet 0:53494cfddea7 421 //cr2_device.defaultSettings();
omassanet 0:53494cfddea7 422 LedR = 0;
omassanet 0:53494cfddea7 423 /*
omassanet 0:53494cfddea7 424 screen.putc(0x33);
omassanet 0:53494cfddea7 425 screen.putc(0x30);
omassanet 0:53494cfddea7 426 */
omassanet 0:53494cfddea7 427 Thread::wait(1000);
omassanet 0:53494cfddea7 428
omassanet 0:53494cfddea7 429 //int c=0;
omassanet 0:53494cfddea7 430 while(true){
omassanet 0:53494cfddea7 431
omassanet 0:53494cfddea7 432 //if (cr2_device.isRFEnabled()){
omassanet 0:53494cfddea7 433 //LedR = 0;
omassanet 0:53494cfddea7 434 //}
omassanet 0:53494cfddea7 435 //else{
omassanet 0:53494cfddea7 436 LedR = 1;
omassanet 0:53494cfddea7 437 //}
omassanet 0:53494cfddea7 438
omassanet 0:53494cfddea7 439 if (wasIPResetPressed()){
omassanet 0:53494cfddea7 440 eraseIpConfig();
omassanet 0:53494cfddea7 441 mbed_reset();
omassanet 0:53494cfddea7 442 }
omassanet 0:53494cfddea7 443
omassanet 0:53494cfddea7 444 Thread::wait(200);
omassanet 0:53494cfddea7 445 }
omassanet 0:53494cfddea7 446
omassanet 0:53494cfddea7 447 }
omassanet 0:53494cfddea7 448
omassanet 0:53494cfddea7 449 #endif