X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FModules%2FInterfaces%2FUDI%2Fudi_lib%2Fcore%2Fmeta_mgmt.c;h=ab8f68a5e4d9c4eae1ceee8f0de2b08f7b061e88;hb=26904c8992e45a3dbbafae273bef81e90d7d9692;hp=ddaf5146df82152c9f870e50593d006f3786d74a;hpb=72eca43ff4b3646a760177eef3339dd6c937dd57;p=tpg%2Facess2.git diff --git a/KernelLand/Modules/Interfaces/UDI/udi_lib/core/meta_mgmt.c b/KernelLand/Modules/Interfaces/UDI/udi_lib/core/meta_mgmt.c index ddaf5146..ab8f68a5 100644 --- a/KernelLand/Modules/Interfaces/UDI/udi_lib/core/meta_mgmt.c +++ b/KernelLand/Modules/Interfaces/UDI/udi_lib/core/meta_mgmt.c @@ -23,9 +23,11 @@ EXPORT(udi_final_cleanup_ack); tUDI_MetaLang cMetaLang_Management = { "udi_mgmt", - 1, + 3, { - {sizeof(udi_enumerate_cb_t), NULL} + {sizeof(udi_enumerate_cb_t), NULL}, + {sizeof(udi_usage_cb_t), NULL}, + {sizeof(udi_channel_event_cb_t), NULL}, } }; @@ -54,6 +56,8 @@ void udi_usage_res(udi_usage_cb_t *cb) { // TODO: Update trace mask from cb LOG("cb=%p{cb->trace_mask=%x}", cb, cb->trace_mask); + UDI_MA_TransitionState(UDI_GCB(cb)->initiator_context, UDI_MASTATE_USAGEIND, UDI_MASTATE_SECBIND); + udi_cb_free( UDI_GCB(cb) ); } void udi_enumerate_req(udi_enumerate_cb_t *cb, udi_ubit8_t enumeration_level) @@ -102,8 +106,12 @@ void udi_enumerate_ack(udi_enumerate_cb_t *cb, udi_ubit8_t enumeration_result, u UDI_MA_AddChild(cb, ops_idx); udi_enumerate_req(cb, UDI_ENUMERATE_NEXT); return ; + case UDI_ENUMERATE_LEAF: case UDI_ENUMERATE_DONE: // All done. Chain terminates + UDI_MA_TransitionState(UDI_GCB(cb)->initiator_context, + UDI_MASTATE_ENUMCHILDREN, UDI_MASTATE_ACTIVE); + udi_cb_free( UDI_GCB(cb) ); return ; default: Log_Notice("UDI", "Unknown enumeration_result %i", enumeration_result);