Example using the support package for LPC4088 DisplayModule

Dependencies:   DMBasicGUI DMSupport

Example using a lot of the features in the software package for the LPC4088 Display Module.

This project can be selected as a template when creating a new project based on the LPC4088 Display Module.

Information

This project works on the 4.3" display modules.

Some of the apps works on the 5" display modules. The ImageViewer and Slideshow app will show the images distorted as it does not take the resolution into consideration.

Information

The USB Status app is disabled. The Image viewer looks for images in the root of SD cards, USB memory sticks or the file system on the QSPI flash. The Slideshow app expects to find a slideshow script in /mci/elec14/ea_logo.txt.

This is what it looks like on the 4.3" display:

/media/uploads/embeddedartists/everything_cap_000.png /media/uploads/embeddedartists/everything_cap_001.png /media/uploads/embeddedartists/everything_cap_003.png /media/uploads/embeddedartists/everything_cap_004.png /media/uploads/embeddedartists/everything_cap_006.png /media/uploads/embeddedartists/everything_cap_008.png

Revision:
30:e1cded731965
Parent:
27:4fe24decabf9
--- a/main.cpp	Tue Apr 28 11:49:03 2015 +0000
+++ b/main.cpp	Mon Nov 04 14:33:29 2019 +0000
@@ -11,7 +11,6 @@
 #if defined(DM_BOARD_USE_ETHERNET)
   #include "EthernetInterface.h"
   #include "HTTPServer.h"
-  #include "mbed_rpc.h"
 #endif
 #if defined(DM_BOARD_USE_USB_DEVICE)
   #include "USBMSD_RAMFS.h"
@@ -79,7 +78,7 @@
  * Local functions
  *****************************************************************************/
 
-void aliveTask(void const* args)
+void aliveTask(void)
 {
   DMBoard* board = &DMBoard::instance();
     
@@ -87,16 +86,16 @@
   {
     board->setLED(DMBoard::Led4, false);
     board->setLED(DMBoard::Led1, true);
-    Thread::wait(300);
+    ThisThread::sleep_for(300);
     board->setLED(DMBoard::Led1, false);
     board->setLED(DMBoard::Led2, true);
-    Thread::wait(300);
+    ThisThread::sleep_for(300);
     board->setLED(DMBoard::Led2, false);
     board->setLED(DMBoard::Led3, true);
-    Thread::wait(300);
+    ThisThread::sleep_for(300);
     board->setLED(DMBoard::Led3, false);
     board->setLED(DMBoard::Led4, true);
-    Thread::wait(300);
+    ThisThread::sleep_for(300);
   }
 }
 
@@ -164,7 +163,7 @@
 }
 
 #define SWIM_TASK_PREFIX  "[SWIM] "
-void swimTask(void const* args)
+void swimTask(void)
 {
   RtosLog* log = DMBoard::instance().logger();
     
@@ -206,34 +205,36 @@
 #if defined(DM_BOARD_USE_ETHERNET)
 
   #define NET_TASK_PREFIX  "[NET] "  
-  void netTask(void const* args)
+  void netTask(void)
   {
     RtosLog* log = DMBoard::instance().logger();
-    log->printf(NET_TASK_PREFIX"EthernetInterface Setting up...\r\n");
-    if(eth.init()!=0) {                             //for DHCP Server
-       //if(eth.init(IPAddress,NetMasks,Gateway)!=0) { //for Static IP Address
-       log->printf(NET_TASK_PREFIX"EthernetInterface Initialize Error \r\n");
-       mbed_die();
-    }
-    while (eth.connect() != 0) {
-       Thread::wait(1000);
-    }
-    
-    ethInitialized = true;
-    ethUsingDHCP = true;
+    log->printf(NET_TASK_PREFIX"EthernetInterface Setting up...\r\n"); 
+
+	nsapi_error_t net_err = eth.connect();
+
+	if (net_err != NSAPI_ERROR_OK) {
+		log->printf(NET_TASK_PREFIX"EthernetInterface connect Error %d\r\n", net_err);
+	}
+	else {
+
+    	ethInitialized = true;
+    	ethUsingDHCP = true;
     
-    log->printf(NET_TASK_PREFIX"IP Address is %s\r\n", eth.getIPAddress());
-    log->printf(NET_TASK_PREFIX"NetMask is %s\r\n", eth.getNetworkMask());
-    log->printf(NET_TASK_PREFIX"Gateway Address is %s\r\n", eth.getGateway());
-    log->printf(NET_TASK_PREFIX"Ethernet Setup OK\r\n");
+    	log->printf(NET_TASK_PREFIX"IP Address is %s\r\n", eth.get_ip_address());
+    	log->printf(NET_TASK_PREFIX"NetMask is %s\r\n", eth.get_netmask());
+    	log->printf(NET_TASK_PREFIX"Gateway Address is %s\r\n", eth.get_gateway());
+    	log->printf(NET_TASK_PREFIX"Ethernet Setup OK\r\n");
   
-    HTTPServerAddHandler<SimpleHandler>("/hello"); //Default handler
-    FSHandler::mount("/usb", "/");
-    HTTPServerAddHandler<FSHandler>("/");
-    //HTTPServerAddHandler<RPCHandler>("/rpc");
-    //lcd.locate(0,0);
-    //lcd.printf("%s",eth.getIPAddress());
-    HTTPServerStart(80);
+    	HTTPServerAddHandler<SimpleHandler>("/hello"); //Default handler
+    	FSHandler::mount("/mci", "/");
+    	HTTPServerAddHandler<FSHandler>("/");
+    	//lcd.locate(0,0);
+    	//lcd.printf("%s",eth.getIPAddress());
+    	HTTPServerStart(80);
+
+	}    
+    
+
   }
 #endif //DM_BOARD_USE_ETHERNET
 
@@ -381,7 +382,7 @@
 
 #define USBH_TASK_PREFIX  "[USBH] "
 #define USBH_CONNECTION_EVENT   (1<<4)
-void usbHostTask(void const* args)
+void usbHostTask(void)
 {
   bool msdConnected = false;
   bool keyboardConnected = false;
@@ -391,7 +392,8 @@
   USBHostKeyboard* keyboard = new USBHostKeyboard();
   USBHostMouse* mouse = new USBHostMouse();
   USBHost* host = USBHost::getHostInst();
-  host->signalOnConnections(Thread::gettid(), USBH_CONNECTION_EVENT);
+  EventFlags connectionEvent;
+  host->signalOnConnections(&connectionEvent, USBH_CONNECTION_EVENT);
 
   RtosLog* log = DMBoard::instance().logger();
     
@@ -400,10 +402,11 @@
   prepareCursor(false);
 
   while (true) {
+
     // wait for connect/disconnect message from USBHost
-    Thread::signal_wait(USBH_CONNECTION_EVENT);
+    connectionEvent.wait_any(USBH_CONNECTION_EVENT);
     log->printf(USBH_TASK_PREFIX"got USB event\n");
-      
+
     if (msd->connected()) {
       if (!msdConnected) {
         msdConnected = true;
@@ -462,6 +465,7 @@
         prepareCursor(true);
       }
     }
+
   }
 }
 
@@ -471,7 +475,7 @@
 
   #define USBD_TASK_PREFIX  "[USBD] "
   //#define USBD_CONNECTION_EVENT   (1<<4)
-  void usbDeviceTask(void const* args)
+  void usbDeviceTask(void)
   {
     DMBoard* board = &DMBoard::instance();
     RtosLog* log = board->logger();
@@ -727,10 +731,10 @@
   if (err != DMBoard::Ok) {
     log->printf("Failed to initialize the board, got error %d\r\n", err);
     log->printf("\nTERMINATING\n");
-    wait_ms(2000); // allow RtosLog to flush messages
+    ThisThread::sleep_for(2000); // allow RtosLog to flush messages
     mbed_die();
   }
-  
+
   board->buzzer(440,50);
   wait_ms(30);
   board->buzzer(660,50);
@@ -742,22 +746,32 @@
   //testRegistry();
   
   
-  Thread tAlive(aliveTask);
+  Thread tAlive;
+  tAlive.start(aliveTask);
 #if defined(DM_BOARD_USE_DISPLAY)
-  Thread tSwim(swimTask, NULL, osPriorityNormal, 8192);
+  Thread tSwim(osPriorityNormal, 8192);
+  tSwim.start(swimTask);
 #endif
+
+
+
 #if defined(DM_BOARD_USE_ETHERNET)  
-  Thread tNetwork(netTask, NULL, osPriorityNormal, 8192);
+  Thread tNetwork(osPriorityNormal, 8192);
+  tNetwork.start(netTask);
 #endif
+
 #if defined(DM_BOARD_USE_USB_HOST)
-  Thread tUSBHandler(usbHostTask, NULL, osPriorityNormal, 8192);
+  Thread tUSBHandler(osPriorityNormal, 8192);
+  tUSBHandler.start(usbHostTask);
 #elif defined(DM_BOARD_USE_USB_DEVICE)
-  Thread tUSBDev(usbDeviceTask, NULL, osPriorityNormal, 8192);
+  Thread tUSBDev(osPriorityNormal, 8192);
+  tUSBDev.start(usbDeviceTask);
 #endif
 
   while(1) { 
-    Thread::wait(5000);
+    ThisThread::sleep_for(5000);
     time_t seconds = time(NULL);
+
     log->printf("Time: %s\n", ctime(&seconds));
   }
 }