Modules/UDI - Add check for UDI_VERSION to udi.h
[tpg/acess2.git] / KernelLand / Modules / Interfaces / UDI / udi_lib / core / meta_mgmt.c
index ddaf514..7db637f 100644 (file)
@@ -22,10 +22,12 @@ EXPORT(udi_final_cleanup_ack);
 
 tUDI_MetaLang  cMetaLang_Management = {
        "udi_mgmt",
-       
-       1,
+       NULL,
+       3,
        {
-               {sizeof(udi_enumerate_cb_t), NULL}
+               {sizeof(udi_enumerate_cb_t),     0, NULL},
+               {sizeof(udi_usage_cb_t),         0, NULL},
+               {sizeof(udi_channel_event_cb_t), 0, 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)
@@ -87,13 +91,16 @@ void udi_enumerate_ack(udi_enumerate_cb_t *cb, udi_ubit8_t enumeration_result, u
                        switch(at->attr_type)
                        {
                        case UDI_ATTR_STRING:
-                               LOG("[%i] String '%.*s'", i, at->attr_length, at->attr_value);
+                               LOG("[%i] %s String '%.*s'", i, at->attr_name,
+                                       at->attr_length, at->attr_value);
                                break;
                        case UDI_ATTR_UBIT32:
-                               LOG("[%i] UBit32 0x%08x", i, UDI_ATTR32_GET(at->attr_value));
+                               LOG("[%i] %s UBit32 0x%08x", i, at->attr_name,
+                                       UDI_ATTR32_GET(at->attr_value));
                                break;
                        default:
-                               LOG("[%i] %i", i, at->attr_type);
+                               LOG("[%i] %s %i", i, at->attr_name,
+                                       at->attr_type);
                                break;
                        }
                }
@@ -102,8 +109,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);

UCC git Repository :: git.ucc.asn.au