#include <cogent.h>
int DR_ApDescribeBuffer(int card_id, int buffer_id, int initial_seg, int max_attr, int* num_attr, DR_ApSegAttributes_t* attributes, char** error );
The integer value 0 if the function was successful, otherwise one of the following error codes:
DR_API_IPC_ERRORS DR_API_STATUS_ERRORS DR_ERR_CARD_INVALID DR_ERR_BLK_INVALID DR_ERR_BLK_NOT_FOUND DR_ERR_NO_USER_OBJECT
int i, j, n_attr, num_blks;
DR_ApSegAttributes_t seg_attr[4][32];
/* continued from example of DR_ApListBuffers */
for (i=0; i<num_blks; i++)
{
if (!(result = DR_ApDescribeBuffer (0, i, 0, 32, &n_attr,
&(seg_attr[i][0]), &error_str)))
{
printf (" Buffer %d:\n", i);
for (j=0; j<n_attr; j++)
{
printf ("[%d] %s%s %s data from %d for %d bytes\n",
(seg_attr[i][j].buf_id),
(seg_attr[i][j].readable?"reads":""),
(seg_attr[i][j].writeable?"writes":""),
((DR_API_BIT_TYPE == seg_attr[i][j].type)
?"digital":
((DR_API_INT16_TYPE ==seg_attr[i][j].type)
?"analog":"unknown")),
seg_attr[i][j].offset,
seg_attr[i][j].size);
}
}
else
printf (" Error@DescribeBuffer (%d,%s)\n",
result, error_str);
}
printf (" Digital read requires blocks: ");
for (i=0; i<num_blks; i++)
for (j=0; j<n_attr; j++)
{
if (seg_attr[i][j].readable &&
seg_attr[i][j].type==DR_API_BIT_TYPE)
{
printf(" %d[%d] for %d, ",
seg_attr[i][j].buf_id,
seg_attr[i][j].offset,
seg_attr[i][j].size);
}
}
printf ("\n");
printf (" Analog write requires blocks: ");
for (i=0; i<num_blks; i++)
for (j=0; j<n_attr; j++)
{
if (seg_attr[i][j].writeable &&
seg_attr[i][j].type==DR_API_INT16_TYPE)
{
printf(" %d[%d] for %d, ",
seg_attr[i][j].buf_id,
seg_attr[i][j].offset,
seg_attr[i][j].size);
}
}
printf ("\n");
Copyright © 1995-2012 by Cogent Real-Time Systems, Inc. All rights reserved.