Dining Philosophers Problem (DPP) example for the QP active object framework. Demonstrates: event-driven programming, hierarchical state machines in C++, modeling and graphical state machine design, code generation, preemptive multitasking, software tracing, power saving mode, direct event posting, publish-subscribe. More information available in the [[/users/QL/notebook|Quantum Leaps Notebook pages]]. See also [[http://www.state-machine.com|state-machine.com]].

Dependencies:   mbed qp

Files at this revision

API Documentation at this revision

Comitter:
QL
Date:
Wed Feb 16 17:12:38 2011 +0000
Parent:
1:c7711e751cf6
Child:
3:81ceb3127876
Commit message:
added slight delay to the idle loop to see the LED4 intensity

Changed in this revision

bsp.cpp Show annotated file Show diff for this revision Revisions of this file
qp_config.h Show annotated file Show diff for this revision Revisions of this file
--- a/bsp.cpp	Mon Feb 14 01:24:01 2011 +0000
+++ b/bsp.cpp	Wed Feb 16 17:12:38 2011 +0000
@@ -1,7 +1,7 @@
 //////////////////////////////////////////////////////////////////////////////
 // Product: BSP for "Dining Philosophers Problem" example, QK kernel
 // Last Updated for Version: 4.1.06
-// Date of the Last Update:  Feb 10, 2011
+// Date of the Last Update:  Feb 16, 2011
 //
 //                    Q u a n t u m     L e a P s
 //                    ---------------------------
@@ -131,7 +131,11 @@
 void QK::onIdle(void) {
 
     QF_INT_LOCK(dummy);
-    LED_PORT->FIOSET = LED4_BIT;                          // turn the LED4 on
+    LED_PORT->FIOSET = LED4_BIT;                           // turn the LED4 on
+    __NOP();                        // delay a bit to see some light intensity
+    __NOP();
+    __NOP();
+    __NOP();
     LED_PORT->FIOCLR = LED4_BIT;                          // turn the LED4 off
     QF_INT_UNLOCK(dummy);
 
@@ -145,9 +149,15 @@
         }
     }
 #else    
-    // put the CPU and peripherals to the low-power mode
-    // you might need to customize the clock management for your application,
-    // see the datasheet for your particular Cortex-M3 MCU. 
+    // Put the CPU and peripherals to the low-power mode. You might need to
+    // customize the clock management for your application, see the datasheet
+    // for your particular Cortex-M3 MCU.
+    //
+    // Specifially for the mbed board, see the articles:
+    // * "Power Management" http://mbed.org/cookbook/Power-Management; and
+    // * "Interface Powerdown" at 
+    //   http://mbed.org/users/simon/notebook/interface-powerdown/
+    // 
     __WFI();
 #endif
 }
--- a/qp_config.h	Mon Feb 14 01:24:01 2011 +0000
+++ b/qp_config.h	Wed Feb 16 17:12:38 2011 +0000
@@ -1,40 +1,40 @@
-//////////////////////////////////////////////////////////////////////////////
-// Product: QP-mbed configuration file
-// Last Updated for Version: 4.1.06
-// Date of the Last Update:  Feb 10, 2011
-//
-//                    Q u a n t u m     L e a P s
-//                    ---------------------------
-//                    innovating embedded systems
-//
-// Copyright (C) 2002-2011 Quantum Leaps, LLC. All rights reserved.
-//
-// This software may be distributed and modified under the terms of the GNU
-// General Public License version 2 (GPL) as published by the Free Software
-// Foundation and appearing in the file GPL.TXT included in the packaging of
-// this file. Please note that GPL Section 2[b] requires that all works based
-// on this software must also be made publicly available under the terms of
-// the GPL ("Copyleft").
-//
-// Alternatively, this software may be distributed and modified under the
-// terms of Quantum Leaps commercial licenses, which expressly supersede
-// the GPL and are specifically designed for licensees interested in
-// retaining the proprietary status of their code.
-//
-// Contact information:
-// Quantum Leaps Web site:  http://www.quantum-leaps.com
-// e-mail:                  info@quantum-leaps.com
-//////////////////////////////////////////////////////////////////////////////
-#ifndef qp_config_h
-#define qp_config_h
-
-// enable the Q-SPY software tracing instrumentation
-#define Q_SPY
-
-// enable preemptive QK kernel
-#define QK_PREEMPTIVE
-
-// The maximum number of active objects in the application (could be up to 63)
-#define QF_MAX_ACTIVE      16
-
-#endif                                                          // qp_config_h
+//////////////////////////////////////////////////////////////////////////////
+// Product: QP-mbed configuration file
+// Last Updated for Version: 4.1.06
+// Date of the Last Update:  Feb 10, 2011
+//
+//                    Q u a n t u m     L e a P s
+//                    ---------------------------
+//                    innovating embedded systems
+//
+// Copyright (C) 2002-2011 Quantum Leaps, LLC. All rights reserved.
+//
+// This software may be distributed and modified under the terms of the GNU
+// General Public License version 2 (GPL) as published by the Free Software
+// Foundation and appearing in the file GPL.TXT included in the packaging of
+// this file. Please note that GPL Section 2[b] requires that all works based
+// on this software must also be made publicly available under the terms of
+// the GPL ("Copyleft").
+//
+// Alternatively, this software may be distributed and modified under the
+// terms of Quantum Leaps commercial licenses, which expressly supersede
+// the GPL and are specifically designed for licensees interested in
+// retaining the proprietary status of their code.
+//
+// Contact information:
+// Quantum Leaps Web site:  http://www.quantum-leaps.com
+// e-mail:                  info@quantum-leaps.com
+//////////////////////////////////////////////////////////////////////////////
+#ifndef qp_config_h
+#define qp_config_h
+
+// enable the Q-SPY software tracing instrumentation
+#define Q_SPY
+
+// enable preemptive QK kernel
+#define QK_PREEMPTIVE
+
+// The maximum number of active objects in the application (could be up to 63)
+#define QF_MAX_ACTIVE      16
+
+#endif                                                          // qp_config_h