Exemplo n.º 1
0
// Update a aio device
void aio_update(aio_t *aio)
{
  // Update the device subscription
  if (rtk_menuitem_ischecked(aio->subscribe_item))
  {
    if (!aio->proxy->info.subscribed)
      if (playerc_aio_subscribe(aio->proxy, PLAYER_OPEN_MODE) != 0)
        PRINT_ERR1("libplayerc error: %s", playerc_error_str());
  }
  else
  {
    if (aio->proxy->info.subscribed)
      if (playerc_aio_unsubscribe(aio->proxy) != 0)
        PRINT_ERR1("libplayerc error: %s", playerc_error_str());
  }
  rtk_menuitem_check(aio->subscribe_item, aio->proxy->info.subscribed);

  if (aio->proxy->info.subscribed)
  {
    // Draw in the aio scan if it has been changed.
    if (aio->proxy->info.datatime != aio->datatime)
    {
      aio_draw(aio);
      aio->datatime = aio->proxy->info.datatime;
    }
  }
  else
  {
    // Dont draw the aio.
    rtk_fig_show(aio->fig, 0);
  }
}
Exemplo n.º 2
0
// Destroy a aio device
void aio_destroy(aio_t *aio)
{
  if (aio->proxy->info.subscribed)
    playerc_aio_unsubscribe(aio->proxy);

  playerc_aio_destroy(aio->proxy);
  rtk_fig_destroy(aio->fig);
  free(aio->drivername);
  free(aio);

  return;
}
Exemplo n.º 3
0
// Just read from a aio device.
int test_aio(playerc_client_t *client, int index)
{
  int t;
  void *rdevice;
  playerc_aio_t *device;

  printf("device [aio] index [%d]\n", index);

  device = playerc_aio_create(client, index);

  TEST("subscribing (read/write)");
  if (playerc_aio_subscribe(device, PLAYER_OPEN_MODE) < 0)
  {
    FAIL();
    return -1;
  }
  PASS();

  for (t = 0; t < 5; t++)
  {
    TEST1("reading data (attempt %d)", t);

    do
      rdevice = playerc_client_read(client);
    while (rdevice == client);

    if (rdevice == device)
    {
      PASS();
      printf("aio: [%8.3f]  AI0,...,AI7: [%5.3f] [%5.3f] [%5.3f] [%5.3f] [%5.3f] [%5.3f] [%5.3f] [%5.3f]\n",
             device->info.datatime, device->voltages[0], device->voltages[1],device->voltages[2],device->voltages[3],device->voltages[4],device->voltages[5],device->voltages[6],device->voltages[7]);
    }
    else
    {
      //printf("error: %s", playerc_error_str());
      FAIL();
      break;
    }
  }

  TEST("unsubscribing");
  if (playerc_aio_unsubscribe(device) != 0)
  {
    FAIL();
    return -1;
  }
  PASS();
  
  playerc_aio_destroy(device);
  
  return 0;
}