bool updateUltimarcBoard (json_object* jobj)
{
  bool ret = false;

  const char* prodstr = NULL;
  int version = 0;

  json_object* prodobj = NULL;
  json_object* verobj = NULL;

  if (json_object_object_get_ex(jobj, "product", &prodobj) &&
      json_object_get_type(prodobj) == json_type_string)
  {
    if (json_object_object_get_ex(jobj, "version", &verobj) &&
        json_object_get_type(verobj) == json_type_int)
    {
      prodstr = json_object_get_string(prodobj);
      version = json_object_get_int(verobj);

      if (isIPACConfig(prodstr, version, jobj))
      {
        log_info ("Updating IPAC2/MinIPAC board...");
        ret = updateBoardIPAC(jobj);
      }
      else if (isIPAC4Config(prodstr, version, jobj))
      {
        log_info ("Updating IPAC4 board...");
        ret = updateBoardIPAC4(jobj);
      }
      else if (isIPACUltimateConfig(prodstr, version, jobj))
      {
        log_info ("Updating IPAC Ultimate board...");
        ret = updateBoardIPacUltimate(jobj);
      }
      else if (isPACDriveConfig(prodstr, version, jobj))
      {
        log_info ("Updating PAC Drive board...");
        ret = updateBoardPacDrive(jobj);
      }
      else if (isPACLED64Config(prodstr, version, jobj))
      {
        log_info ("Updating PAC LED 64 board...");
        ret = updateBoardPacLED(jobj);
      }
      else if (isUltistikConfig(prodstr, version, jobj))
      {
        log_info ("Updating Ultistik board...");
        ret = updateBoardULTISTIK(jobj);
      }
    }
    else
    {
      if (json_object_object_get_ex(jobj, "version", &verobj))
      {
        log_err ("'version' is not defined as a integer");
      }
      else
      {
        log_err ("'version' is not defined in the configuration file");
      }
    }
  }
  else
  {
    if (json_object_object_get_ex(jobj, "product", &prodobj))
    {
      log_err ("'product' is not defined as a string");
    }
    else
    {
      log_err ("'product' is not defined in the configuration file");
    }
  }

  if (ret)
  {
    log_info ("Update done.\n");
  }
  else
  {
    log_info ("Update failed!\n");
  }

  json_object_put(jobj);
  return ret;
}
Beispiel #2
0
int
ulWriteToBoard (json_object* bcfg, ulboard* board)
{
  int retCode = 0;

  if (bcfg && board)
  {
    if (board->type == ulboard_type_ipac2 ||
        board->type == ulboard_type_ipac4 ||
        board->type == ulboard_type_jpac ||
        board->type == ulboard_type_minipac)
    {
      retCode = updateBoardIPAC (bcfg, board);
    }
    else if (board->type == ulboard_type_ultimate)
    {
      log_info("Updating IPAC Ultimate board...");
      retCode = updateBoardIPacUltimate (bcfg);
    }
    else if (board->type == ulboard_type_pacDrive)
    {
      log_info("Updating PAC Drive board...");
      retCode = updateBoardPacDrive (bcfg);
    }
    else if (board->type == ulboard_type_pacLED)
    {
      log_info("Updating PAC LED 64 board...");
      retCode = updateBoardPacLED (bcfg);
    }
    else if (board->type == ulboard_type_ultistik)
    {
      log_info("Updating Ultistik board...");
      retCode = updateBoardULTISTIK (bcfg, board);
    }
    else if (board->type == ulboard_type_usbbutton)
    {
      log_info("Updating USBButton...");
      retCode = updateUSBButton (bcfg, board);
    }
    else if (board->type == ulboard_type_servostik)
    {
      log_info("Updating ServoStik...");
      retCode = updateServoStik (bcfg, board);
    }

    if (retCode)
    {
      log_info("Board update successful.");
    }
    else
    {
      log_info("Board update failed.");
    }
  }
  else
  {
    retCode = -1;
    log_info("Board update failed.");
  }

  return retCode;
}