+ udi_cb_t *bind_cb;
+ if( parent->bind_cb_idx == 0 )
+ bind_cb = NULL;
+ else {
+ bind_cb = udi_cb_alloc_internal(Inst, parent->bind_cb_idx, channel);
+ if( !bind_cb ) {
+ Log_Warning("UDI", "Bind CB index is invalid");
+ break;
+ }
+ UDI_int_ChannelFlip( bind_cb );
+ }
+
+ int n_handles = Module->InitInfo->primary_init_info->per_parent_paths;
+ udi_buf_path_t handles[n_handles];
+ for( int i = 0; i < n_handles; i ++ ) {
+ //handles[i] = udi_buf_path_alloc_internal(Inst);
+ handles[i] = 0;
+ }
+
+ udi_channel_event_cb_t *ev_cb = (void*)udi_cb_alloc_internal_v(&cMetaLang_Management,
+ UDI_MGMT_CHANNEL_EVENT_CB_NUM, 0, 0, channel);
+ UDI_GCB(ev_cb)->initiator_context = Inst;
+ ev_cb->event = UDI_CHANNEL_BOUND;
+ ev_cb->params.parent_bound.bind_cb = bind_cb;
+ ev_cb->params.parent_bound.parent_ID = 1;
+ ev_cb->params.parent_bound.path_handles = handles;
+
+ udi_channel_event_ind(ev_cb);
+ break;
+ }
+ //UDI_MA_TransitionState(Inst, UDI_MASTATE_PARENTBIND, UDI_MASTATE_ENUMCHILDREN);
+ //break;
+ case UDI_MASTATE_ENUMCHILDREN:
+ Inst->CurState = UDI_MASTATE_ENUMCHILDREN;
+ UDI_MA_BeginEnumeration(Inst);
+ break;
+ case UDI_MASTATE_ACTIVE:
+ Inst->CurState = UDI_MASTATE_ACTIVE;
+ Log_Log("UDI", "Driver instance %s %p entered active state",
+ Inst->Module->ModuleName, Inst);
+ break;