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

Revision:
3:81ceb3127876
Parent:
0:efb9ac8d1a88
Child:
4:6189d844a1a2
--- a/main.cpp	Wed Feb 16 17:12:38 2011 +0000
+++ b/main.cpp	Mon Sep 26 02:21:01 2011 +0000
@@ -1,13 +1,13 @@
 //////////////////////////////////////////////////////////////////////////////
 // Product: DPP example
-// Last Updated for Version: 4.0.00
-// Date of the Last Update:  May 28, 2008
+// Last Updated for Version: 4.2.00
+// Date of the Last Update:  Jul 23, 2011
 //
 //                    Q u a n t u m     L e a P s
 //                    ---------------------------
 //                    innovating embedded systems
 //
-// Copyright (C) 2002-2008 Quantum Leaps, LLC. All rights reserved.
+// 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
@@ -35,15 +35,18 @@
 static QSubscrList   l_subscrSto[MAX_PUB_SIG];
 
 static union SmallEvents {
-    void *min_size;
-    TableEvt te;
-    // other event types to go into this pool
+    void   *e0;                                          // minimum event size
+    uint8_t e1[sizeof(TableEvt)];
+    // ... other event types to go into this pool
 } l_smlPoolSto[2*N_PHILO];                 // storage for the small event pool
 
 //............................................................................
-int main(void) {
+int main() {
+
     BSP_init();                                          // initialize the BSP
+
     QF::init();       // initialize the framework and the underlying RT kernel
+
                                                      // object dictionaries...
     QS_OBJ_DICTIONARY(l_smlPoolSto);
     QS_OBJ_DICTIONARY(l_tableQueueSto);
@@ -54,6 +57,7 @@
     QS_OBJ_DICTIONARY(l_philoQueueSto[4]);
 
     QF::psInit(l_subscrSto, Q_DIM(l_subscrSto));     // init publish-subscribe
+
                                                   // initialize event pools...
     QF::poolInit(l_smlPoolSto, sizeof(l_smlPoolSto), sizeof(l_smlPoolSto[0]));
 
@@ -72,4 +76,3 @@
 
     return 0;
 }
-