#include <stdio.h>
#include <stdlib.h>
#include <mk.h>
#include "dci.h"

main(int argc, char **argv, char **envp)
{
    char             *ps_version;
    DCIStatus        status;
    DCIMetricId      *metric = NULL;
    DCIClassId       *class = NULL;
    DCIInstanceId    *instance = NULL;
    DCIReturn        *retBuffer = NULL;
    DCIHandle        key;
    uint32           *class_data = NULL;
    uint32           *inst_data = NULL;
    uint32           numIds;
    uint32           RetBufSize = 0;
    uint32           flags = 0;

    console_printf("ENTERING:main\n");

    /* Initialize dci services */
    status = dciInitialize(&ps_version);
    console_printf("dciInitialize status=0x%x\n",status);
    if(status != DCI_SUCCESS)
    {
        console_printf("dciInitialize FAILED\n");
        console_printf("EXITING #0:main\n");
        exit(-1);
    }
    console_printf("VERSION=%s\n",ps_version);

    /* Prepare the metric id structure */
    metric = (DCIMetricId *)malloc(72);
    metric->size = 72;
    metric->classId.offset = 16;
    metric->instanceId.offset = 48;
    metric->datumId = 255;

    class = (DCIClassId *)&(metric->data);
    class->size = 32;
    class->identifier.offset = 16;
    class->identifier.count = 4;
    class->identifier.size = 4;
    class_data = (uint32 *)&(class->data);
    *class_data++ = 254;
    *class_data++ = 1;
    *class_data++ = 1;
    *class_data   = 1;

    instance = (DCIInstanceId *)((char *)class + class->size);
    instance->size = 24;
    instance->levelWild = 0;
    instance->instances.offset = 20;
    instance->instances.size = 4;
    instance->instances.count = 1;
    inst_data = (uint32 *)&(instance->data);
    *inst_data = 0;

    /* Call dciOpen */
    retBuffer = NULL;
    RetBufSize = 0;
    numIds = 1;
    status = dciOpen(&key, metric, numIds, &retBuffer, RetBufSize, flags);
    free(metric);
    if(status != DCI_SUCCESS)   /* if FAILURE */
    {
        console_printf("dciOpen FAILED. status 0x%x\n",status);
        status = dciTerminate();
        console_printf("dciTerminate status = 0x%x\n",status);
        console_printf("EXITING #1 main\n");
        exit(-1);
    }
    console_printf("dciOpen PASSED. status 0x%x - summmary status 0x%x\n",
                                    status, retBuffer->sumstatus);
    if( retBuffer->sumstatus != DCI_SUCCESS )
        console_printf("There was atleast one FAILURE in the return
buffer\n");

    /* Close the key, terminate the DCI services and Clean up */
    status = dciFree((uint32)retBuffer, retBuffer->size);
    console_printf("dciFree status 0x%x\n",status);
    status = dciClose(key);
    console_printf("dciClose status = 0x%x\n",status);
    status = dciTerminate();
    console_printf("dciTerminate status = 0x%x\n",status);
    console_printf("EXITING #2:main\n");
    exit(0);
}


[Back: dciTerminate - Related Functions]
[Next: dciTerminate - Topics]