/** Download the parameters of the current category from the AeroQuad */
  private void downloadSettings() {
    AQSerial mAQSerial = ((MainApplication) getActivity().getApplication()).getAQSerial();

    String[] values;

    switch (UiEnum.fromValue(CurrentUiR)) {
      case RateMode:
        values = new String[6];
        values = mAQSerial.readRateMode();

        if (values == null) break;

        SetParameter("pid_ratemode_rpv_preference", values[0]);
        SetParameter("pid_ratemode_riv_preference", values[1]);
        SetParameter("pid_ratemode_rdv_preference", values[2]);
        SetParameter("pid_ratemode_ppv_preference", values[3]);
        SetParameter("pid_ratemode_piv_preference", values[4]);
        SetParameter("pid_ratemode_pdv_preference", values[5]);
        break;

        // TODO : The others
      case AltitudeMode:
        values = new String[13];
        values = mAQSerial.readAltitudeMode();

        if (values == null) break;

        SetParameter("pid_altimode_rapv_preference", values[0]);
        SetParameter("pid_altimode_raiv_preference", values[1]);
        SetParameter("pid_altimode_radv_preference", values[2]);
        SetParameter("pid_altimode_papv_preference", values[3]);
        SetParameter("pid_altimode_paiv_preference", values[4]);
        SetParameter("pid_altimode_padv_preference", values[5]);
        SetParameter("pid_altimode_rgpv_preference", values[6]);
        SetParameter("pid_altimode_rgiv_preference", values[7]);
        SetParameter("pid_altimode_rgdv_preference", values[8]);
        SetParameter("pid_altimode_pgpv_preference", values[9]);
        SetParameter("pid_altimode_pgiv_preference", values[10]);
        SetParameter("pid_altimode_pgdv_preference", values[11]);
        SetParameter("pid_altimode_windupguard_preference", values[12]);
        break;

      case YawConfiguration:
        values = new String[7];
        values = mAQSerial.readYawConfig();

        if (values == null) break;

        SetParameter("pid_yawconfig_ypv_preference", values[0]);
        SetParameter("pid_yawconfig_yiv_preference", values[1]);
        SetParameter("pid_yawconfig_ydv_preference", values[2]);
        SetParameter("pid_yawconfig_hhpv_preference", values[3]);
        SetParameter("pid_yawconfig_hhiv_preference", values[4]);
        SetParameter("pid_yawconfig_hhdv_preference", values[5]);
        SetParameter("pid_yawconfig_hhc_preference", values[6]);
        break;

      case AltitudeHold:
        values = new String[12];
        values = mAQSerial.readAltitudeHold();

        if (values == null) break;

        SetParameter("pid_altihold_apv_preference", values[0]);
        SetParameter("pid_altihold_aiv_preference", values[1]);
        SetParameter("pid_altihold_adv_preference", values[2]);
        SetParameter("pid_altihold_awindupguard_preference", values[3]);
        SetParameter("pid_altihold_tminav_preference", values[4]);
        SetParameter("pid_altihold_tbv_preference", values[5]);
        SetParameter("pid_altihold_tpv_preference", values[6]);
        SetParameter("pid_altihold_tmaxav_preference", values[7]);
        SetParameter("pid_altihold_asf_preference", values[8]);
        SetParameter("pid_altihold_zdpv_preference", values[9]);
        SetParameter("pid_altihold_zdiv_preference", values[10]);
        SetParameter("pid_altihold_zddv_preference", values[11]);
        break;

      case MiscConfiguration:
        values = new String[2];
        values = mAQSerial.readMiscConfig();

        if (values == null) break;

        // TODO: Watch changes while gyro smooth was deleted from dev branch on git.
        SetParameter("pid_miscconfig_vrv_preference", values[0]);
        SetParameter("pid_miscconfig_minatv_preference", values[1]);
        break;

      case TransmitterSmoothing:
        values = new String[9];
        values = mAQSerial.readTransSmooth();

        if (values == null) break;

        SetParameter("pid_transsmth_tfv_preference", values[0]);
        SetParameter("pid_transsmth_rsv_preference", values[1]);
        SetParameter("pid_transsmth_psv_preference", values[2]);
        SetParameter("pid_transsmth_ysv_preference", values[3]);
        SetParameter("pid_transsmth_tsv_preference", values[4]);
        SetParameter("pid_transsmth_msv_preference", values[5]);
        SetParameter("pid_transsmth_asv_one_preference", values[6]);
        SetParameter("pid_transsmth_asv_two_preference", values[7]);
        SetParameter("pid_transsmth_asv_three_preference", values[8]);
        break;

      case BatteryMonitor:
        values = new String[3];
        values = mAQSerial.readBattMon();

        if (values == null) break;

        SetParameter("pid_battmon_avv_preference", values[0]);
        SetParameter("pid_battmon_ttv_preference", values[1]);
        SetParameter("pid_battmon_gdtv_preference", values[2]);
        break;

      case CameraStabilization:
        values = new String[13];
        values = mAQSerial.readCameraStab();

        if (values == null) break;

        SetParameter("pid_camstab_mv_preference", values[0]);
        SetParameter("pid_camstab_pcv_preference", values[1]);
        SetParameter("pid_camstab_rcv_preference", values[2]);
        SetParameter("pid_camstab_ycv_preference", values[3]);
        SetParameter("pid_camstab_psav_preference", values[4]);
        SetParameter("pid_camstab_rsav_preference", values[5]);
        SetParameter("pid_camstab_ysav_preference", values[6]);
        SetParameter("pid_camstab_mininpsv_preference", values[7]);
        SetParameter("pid_camstab_mininrsv_preference", values[8]);
        SetParameter("pid_camstab_mininysv_preference", values[9]);
        SetParameter("pid_camstab_maxpsv_preference", values[10]);
        SetParameter("pid_camstab_maxrsv_preference", values[11]);
        SetParameter("pid_camstab_maxysv_preference", values[12]);
        break;

      default:
        break;
    }
  }