Child module startup ┌──────────────────┐ ┌───────┐ ┌────────┐ ┌──────┐ ┌──────┐ ┌───┐ ┌──────────────────┐ │SyncModuleEventsVI│ │StartVI│ │CallerVI│ │MainVI│ │InitVI│ │MHL│ │SyncCallerEventsVI│ └─────────┬────────┘ └───┬───┘ └────┬───┘ └───┬──┘ └───┬──┘ └─┬─┘ └─────────┬────────┘ │ │ Call "Start Module.vi" │ │ │ │ │ │ │<─────────────────────────│ │ │ │ │ │ │ │ │ │ │ │ │ │ Start asynchronous call │ │ │ │ │ │──────────────────────────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ Wait on Module Sync │ │ │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ Call "Init Module.vi" │ │ │ │ │ │ │───────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ Returns events refs │ │ │ │ │ │ │<───────────────────────│ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ Start EHL/MHL/HLs │ │ │ │ │ │ │<───┘ │ │ │ │ │ │ │ Execute MHL's Initialize case │ │ │ │ │ │───────────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Call for synchronization │ │ │ │ │ │ │────────────────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ Wait on Module Sync │ │ │ │ │ │ │<───┘ │ │ │ Module Sync Done │ │ │ │ │<─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────│ │ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ Wait on Event Sync │ │ │ │ │ │ │<───┘ │ │ Returns broadcasts refs │ │ │ │ │ │ │─────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ Register for broadcasts │ │ │ │ │ │ │<───┘ │ │ │ │ │ Call for synchronization │ │ │ │ │ │<───────────────────────────────────────────────────│ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ Wait on Event Sync │ │ │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ Event Sync Done │ │ │ │ │───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ Module started │ │ │ │ │ │───────────────────────────────────────────────────>│ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ Continue Initialize case │ │ │ │ │ │ │<────────────────────────────────────│ │ │ │ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ Send Module Did Init broadcast │ │ │ │ │ │ │<───┘ │ │ │ │────┐ │ │ │ │ │ │ │ │ Receive Module Did Init broadcast │ │ │ │ │ │ │<───┘ │ │ │ │ │ │ │ │ │ │────┐ │ │ │ │ │ │ │ │ Module initialized │ │ │ │ │ │ │<───┘ │ ┌─────────┴────────┐ ┌───┴───┐ ┌────┴───┐ ┌───┴──┐ ┌───┴──┐ ┌─┴─┐ ┌─────────┴────────┐ │SyncModuleEventsVI│ │StartVI│ │CallerVI│ │MainVI│ │InitVI│ │MHL│ │SyncCallerEventsVI│ └──────────────────┘ └───────┘ └────────┘ └──────┘ └──────┘ └───┘ └──────────────────┘