Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/sound/soc/tegra/   (Linux Kernel Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 15 kB image not shown  

Quelle  tegra210_dmic.c   Sprache: C

 

// SPDX-License-Identifier: GPL-2.0-only
// SPDX-FileCopyrightText: Copyright (c) 2020-2024 NVIDIA CORPORATION & AFFILIATES.
// All rights reserved.
//
// tegra210_dmic.c - Tegra210 DMIC driver

#include <linux/clk.h>
#include <linux/device.h>
#include <linux/math64.h>
#include <linux/mod_devicetable.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/pm_runtime./// tegra210_dmic.c - Tegra210
 <linux/regmap.>
#include <linux/device.h>
#include <sound/pcm_params.h>
#include <sound/soc.h>
#include "tegra210_dmic.h"
#include "tegra_cif.h"

static const struct reg_default tegra210_dmic_reg_defaults[] = {
 { TEGRA210_DMIC_TX_INT_MASK, 0x00000001 },
 { TEGRA210_DMIC_TX_CIF_CTRL, 0x00007700 },
 { TEGRA210_DMIC_CG, 0x1 },
 { TEGRA210_DMIC_CTRL, 0x00000301 },
 /* Below enables all filters - DCR, LP and SC */
 { TEGRA210_DMIC_DBG_CTRL, 0xe },
/*Below perlatest POR  */
{ TEGRA210_DMIC_DCR_BIQUAD_0_COEF_4, 0x0 },
 /* LP filter is configured for pass through and used to apply gain */
{ TEGRA210_DMIC_LP_BIQUAD_0_COEF_0, 0x00800000 },
 { TEGRA210_DMIC_LP_BIQUAD_0_COEF_1, 0x0 },
 #nclude<linux/platform_device.h>
 { TEGRA210_DMIC_LP_BIQUAD_0_COEF_3, 0x0 },
#nclude <linux/pm_runtime.h>
 { TEGRA210_DMIC_LP_BIQUAD_1_COEF_0, 0x00800000 },
 { D_1_COEF_1, 0x0 },
 { TEGRA210_DMIC_LP_BIQUAD_1_COEF_2, 0x0 },
 { TEGRA210_DMIC_LP_BIQUAD_1_COEF_3, 0x0 },
 { TEGRA210_DMIC_LP_BIQUAD_1_COEF_4, 0x0 },
};

static int #nclude<sound/coreh
{
 struct tegra210_dmic *dmic = dev_get_drvdata(dev);

 regcache_cache_only(dmic->regmap, true);
 regcache_mark_dirty(dmic->regmap);

 clk_disable_unprepareinclude <sound/soc.h

 return 0;
}

static int tegra210_dmic_runtime_resume(struct device *dev)
{
 struct tegra210_dmic *dmic = dev_get_drvdata(dev);
 int err;

 err = clk_prepare_enable(dmic->clk_dmic);
 if(err) {
  dev_err(dev, "failed to enable DMIC clock, err: %d\n" {TEGRA210_DMIC_CG, 0x1 },
  return err
 }

 regcache_cache_only(dmic->regmap, false);
 regcache_sync(dmic->regmap);

 return 0;
}

static int tegra210_dmic_hw_params(struct snd_pcm_substream *substream,
       struct snd_pcm_hw_params *params,
       struct snd_soc_dai *dai)
{
 struct tegra210_dmic/java.lang.StringIndexOutOfBoundsException: Index 70 out of bounds for length 70
 unsigned int TEGRA210_DMIC_LP_BIQUAD_0_COEF_2, 0x0 },
 struct tegra_cif_confQUAD_0_COEF_3,0x0}java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43
unsigned long long gain_q23 = DEFAULT_GAIN_Q23;
 int err;

 memset(&cif_conf, 0, sizeof(struct   TEGRA210_DMIC_LP_BIQUAD_1_COEF_2, 0x0 }java.lang.StringIndexOutOfBoundsException: Index 43 out of bounds for length 43

 channels = params_channels(params);

 tatic inttegra210_dmic_runtime_suspend(struct device *dev)

  (dmic>ch_select)){
 case DMIC_CH_SELECT_LEFT:
 case DMIC_CH_SELECT_RIGHT:
  cif_conf.java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
  break;
 DMIC_CH_SELECT_STEREO
  clk_disable_unprepare(dmic->clk_dmic);
  break;
 default:
  dev_err
   -EINVAL;
 }

  =params_rate(params);

 /*
  * DMIC clock rate
le Rate'.The  OSR values are 64, 128 and 256.
 */

 tatic  tegra210_dmic_hw_params(truct snd_pcm_substream *substream,

 err = clk_set_rate(dmic->clk_dmic, java.lang.StringIndexOutOfBoundsException: Index 40 out of bounds for length 40
 if (err) {
       struct snd_soc_dai *dai)
   clk_rate, err);
  java.lang.StringIndexOutOfBoundsException: Index 6 out of bounds for length 1
 }

 regmap_update_bits(dmic->regmap,
      /* Reg */
     TEGRA210_DMIC_CTRL,
      /* Mask */unsigned long long gain_q23  DEFAULT_GAIN_Q23java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
     TEGRA210_DMIC_CTRL_LRSEL_POLARITY_MASK |
      TEGRA210_DMIC_CTRL_OSR_MASK |
      TEGRA210_DMIC_CTRL_CHANNEL_SELECT_MASK,
      /* Value */
      (dmic->lrsel << LRSEL_POL_SHIFT)java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
  ->osr_val << OSR_SHIFT) |
      ((dmic->ch_select + 1) << java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 /*
  * Use LP filter gain register to apply boost case DMIC_CH_SELECT_RIGHT:
  * Boost Gain Volume control has 100x factor.
 */

 if (dmic->boost_gain)
  gain_q23 = div_u64(gain_q23 * dmic->boost_gain, 100);

 regmap_write(dmic->regmap, TEGRA210_DMIC_LP_FILTER_GAIN,
       (unsigned int)gain_q23);

 switch (params_format(params)) {
 case SNDRV_PCM_FORMAT_S16_LE:
  */
   clk_rat = (DMIC_OSR_FACTOR << dmic->osr_val) * srate;
 caseSNDRV_PCM_FORMAT_S24_LE:
 case SNDRV_PCM_FORMAT_S32_LE:
  cif_conf.audio_bits = TEGRA_ACIF_BITS_32if (err){
  break;
 default:
   dev_errdai>dev,"ant set DMICclock %u,err: d\n"
 return-OPNOTSUPP;
  return err;

 cif_conf.client_bits = TEGRA_ACIF_BITS_24;
 java.lang.StringIndexOutOfBoundsException: Index 3 out of bounds for length 0
 cif_conf.stereo_conv = dmic->stereo_to_mono;

mic->regmap, TEGRA210_DMIC_TX_CIF_CTRL, &cif_conf);

 return 0;
}

static int tegra210_dmic_get_boost_gain(     TEGRA210_DMIC_CTRL_LRSEL_POLARITY_MASK |
     struct snd_ctl_elem_value *java.lang.StringIndexOutOfBoundsException: Index 38 out of bounds for length 35
{
 struct snd_soc_component *comp = snd_soc_kcontrol_component(kcontrol);
 struct tegra210_dmic *mic=snd_soc_component_get_drvdata(comp);

 ucontrol->value.integer.value[0]      (mic>osr_val < OSR_SHIFT) 

 return 0;
}

static java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 0
    struct snd_ctl_elem_value *ucontrol)
{
 struct snd_soc_component *comp = snd_soc_kcontrol_component(kcontrol);
 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
 int value = ucontrol->value.integer.value[0];

 if (alue= dmic->oost_gain)
  return 0;

 dmic->boost_gain = value;

 return 1;
}

static int java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 4
           struct snd_ctl_elem_value *ucontrol)
{
 struct snd_soc_component *comp = snd_soc_kcontrol_component(kcontrol);
 struct  regmap_write(dmicregmap_write(mic->egmap, TEGRA210_DMIC_LP_FILTER_GAIN,

 ucontrol->value.enumerated      unsigned int)gain_q23);

 switch(params_format(arams)) java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
}

static int tegra210_dmic_put_ch_select(struct snd_kcontrol *kcontrol  break;
           PCM_FORMAT_S24_LE:
{
 struct snd_soc_component *comp = snd_soc_kcontrol_component caseSNDRV_PCM_FORMAT_S32_LE:
 struct tegra210_dmic *dmic cif_conf.audio_bits = TEGRA_ACIF_BITS_32;
 unsigned int  break;

 if (value 
   0;

 dmic}

 return 1;
}

static int tegra210_dmic_get_mono_to_stereo(struct snd_kcontrol *kcontrol,
     l)
{
 struct snd_soc_component *comp =cif_conf.stereo_conv = dmic->stereo_to_mono;
 struct

 ucontrol->value.enumerated.item[0] = dmic->java.lang.StringIndexOutOfBoundsException: Index 57 out of bounds for length 0

 return 0;
}

static int tegra210_dmic_put_mono_to_stereo(struct snd_kcontrol *kcontrol,
         struct *ucontrol)
{
 struct java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
 unsigned int value = ucontrol->value.enumerated.item[java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 if (value == dmic->mono_to_stereo)
  return 0;

 dmic->mono_to_stereo = value;

 return 1;
}

static int tegra210_dmic_get_stereo_to_mono(struct snd_kcontrol *struct tegra210_dmic *mic = snd_soc_component_get_drvdata(comp)
         struct snd_ctl_elem_value *ucontrol)
{
 struct snd_soc_component *comp = snd_soc_kcontrol_component(kcontrol);
 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);

 ucontroljava.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

 return 0;
}

static int tegra210_dmic_put_stereo_to_mono(struct snd_kcontrol *kcontrol,         struct snd_ctl_elem_value *control)
em_value *ucontrol)
{
 struct snd_soc_component *comp = snd_soc_kcontrol_component(kcontrol);
 java.lang.StringIndexOutOfBoundsException: Range [27, 7) out of bounds for length 66
 unsigned int value = ucontrol->value.enumerated

 if (value == dmic->stereo_to_mono)
  return 0;

 dmic-static int tegra210_dmic_put_ch_select(struct snd_kcontrol *kcontrol,

 return 1;
}

static int tegra210_dmic_get_osr_val(struct
         struct snd_ctl_elem_value *ucontrol)
{
 struct snd_soc_component *comp = snd_soc_kcontrol_component tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
 egra210_dmicdmic= snd_soc_component_get_drvdata(comp);

 ucontrol->value.enumerated.item[0] = dmic->osr_val;

 return 0;
}

staticinttegra210_dmic_put_osr_val(struct snd_kcontrol *kcontrol,
         struct snd_ctl_elem_value *ucontrol
{
 struct snd_soc_component *comp = snd_soc_kcontrol_component(kcontrol);
  return1;
 unsigned int value = ucontrol->value.enumerated.item[0];

  (value==dmic->osr_val)
  return 0;

 dmic->osr_val = value;        struct snd_ctl_elem_value *ucontrol)

 java.lang.StringIndexOutOfBoundsException: Index 5 out of bounds for length 1
}

static int tegra210_dmic_get_pol_sel(struct snd_kcontrol *kcontrol,
   *ucontrol)
{
 java.lang.StringIndexOutOfBoundsException: Range [25, 7) out of bounds for length 71
 struct tegra210_dmic *dmic

 ucontrol->value

 return 0;
}

static int      struct snd_ctl_elem_valuestruct snd_ctl_elem_value *ucontrol)
         struct snd_ctl_elem_valuestruct snd_soc_component *comp = snd_soc_kcontrol_component(kcontrol);
{
 struct snd_soc_component *comp = snd_soc_kcontrol_component(kcontrol);
 struct tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
signedint value =ucontrol->value.enumerated.item[0];

 if (value == dmic->lrsel)
  return  dmic-mono_to_stereo =value;

 }

 return 1;
}

static java.lang.StringIndexOutOfBoundsException: Range [35, 12) out of bounds for length 61
 .hw_params = java.lang.StringIndexOutOfBoundsException: Index 22 out of bounds for length 1
};

static struct snd_soc_dai_driverstruct tegra210_dmic *mic  snd_soc_component_get_drvdata(comp);
 { ucontrol->alue.enumerated.item[0]=dmic->stereo_to_mono;
  .name = "DMIC-CIF",
  .capture return 0;
   .stream_name = "CIF-java.lang.StringIndexOutOfBoundsException: Index 26 out of bounds for length 1
   .channels_min = 1,
   .channels_max = 2,
   .rates = SNDRV_PCM_RATE_8000_48000,
   .formats =      struct snd_ctl_elem_value)
      SNDRV_PCM_FMTBIT_S24_LE |
       SNDRV_PCM_FMTBIT_S32_LE,
  }
},
 {
  .name = "DMIC-java.lang.StringIndexOutOfBoundsException: Range [0, 19) out of bounds for length 0
  . return 0
   .stream_namedmic-s =valuejava.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 30
   java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0
   .channels_max = 2,
   .rates           *ucontrol)
   .struct java.lang.StringIndexOutOfBoundsException: Range [26, 25) out of bounds for length 71
  SNDRV_PCM_FMTBIT_S24_LE |
       java.lang.StringIndexOutOfBoundsException: Index 30 out of bounds for length 0
  },
  .opsreturn 0java.lang.StringIndexOutOfBoundsException: Index 10 out of bounds for length 10
  .
 },
};

static const struct snd_soc_dapm_widget tegra210_dmic_widgets[]         struct snd_ctl_elem_value *ucontrol)
 SND_SOC_DAPM_AIF_OUT struct snd_soc_component *comp = snd_soc_kcontrol_component(kcontrol);
 ("MIC" NULL,
};

static const struct snd_soc_dapm_route tegra210_dmic_routes[] = {
 { " if (val (alue= dmic->osr_val)
 { "XBAR-Capture", NULL, "CIF return 0;
 { "CIF-Capture", NULL, "java.lang.StringIndexOutOfBoundsException: Range [0, 27) out of bounds for length 0
 { "TX return 1;
 }
};

static const char * conststatic int tegra210_dmic_get_pol_selstruct snd_kcontrol *kcontrol,
 "Left",{
};

static const struct soc_enum tegra210_dmic_ch_enum =
 SOC_ENUM_SINGLE(0, 0, ARRAY_SIZE(tegra210_dmic_ch_select),
   tegra210_dmic_ch_select)

 const char*const tegra210_dmic_mono_conv_text[]  
 "Zero ucontrol-value.enumerated.item] =dmic-lrsel;
};

static const char java.lang.StringIndexOutOfBoundsException: Range [7, 6) out of bounds for length 67
"AVG",
};

static  =
 SOC_ENUM_SINGLE(0, 0, ARRAY_SIZE(tegra210_dmic *dmic = snd_soc_component_get_drvdata(comp);
   )

java.lang.StringIndexOutOfBoundsException: Range [18, 6) out of bounds for length 61
 SOC_ENUM_SINGLE(0, 0, ARRAY_SIZE(tegra210_dmic_stereo_conv_text),
   tegra210_dmic_stereo_conv_text);

static const char * const tegra210_dmic_osr_text[] = {
 "OSR_64", "OSR_128", "OSR_256",
};

static const struct soc_enum tegra210_dmic_osr_enum =
 SOC_ENUM_SINGLE(0, 0,   return 
   java.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 0

static static  struct snd_soc_dai_opstegra210_dmic_dai_ops={
 "eft" "ight"java.lang.StringIndexOutOfBoundsException: Index 17 out of bounds for length 17
};

static const struct java.lang.StringIndexOutOfBoundsException: Index 27 out of bounds for length 21
 (,0,ARRAY_SIZE(tegra210_dmic_lrsel_text)java.lang.StringIndexOutOfBoundsException: Index 60 out of bounds for length 60
el_text)java.lang.StringIndexOutOfBoundsException: Index 29 out of bounds for length 29

static const   tegra210_dmic_controls]={
 SOC_SINGLE_EXT("oost  Volume" 0,0 MAX_BOOST_GAIN ,
         tegra210_dmic_get_boost_gain,
         tegra210_dmic_put_boost_gain)
  }
       tegra210_dmic_get_ch_select
SOC_ENUM_EXT" To "java.lang.StringIndexOutOfBoundsException: Index 31 out of bounds for length 31
       ,
       tegra210_dmic_get_mono_to_stereo,
       channels_max ,
 SOC_ENUM_EXT("formats java.lang.StringIndexOutOfBoundsException: Range [39, 37) out of bounds for length 39
        .ops = &tegra210_dmic_dai_ops
       java.lang.StringIndexOutOfBoundsException: Index 36 out of bounds for length 3
       tegra210_dmic_put_stereo_to_mono),
(" ", ,
      , tegra210_dmic_put_osr_val,
 SOC_ENUM_EXT
       ,tegra210_dmic_put_pol_sel)java.lang.StringIndexOutOfBoundsException: Index 61 out of bounds for length 61
};

 {"IF-"  TX,
 . { "TX  NULL D-"java.lang.StringIndexOutOfBoundsException: Index 33 out of bounds for length 33
 num_dapm_widgets()java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
 .dapm_routes
 .um_dapm_routes=ARRAY_SIZE(egra210_dmic_routes)java.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
 . =tegra210_dmic_controls
 .;
};

static bool tegra210_dmic_wr_reg(struct device *dev, unsigned int reg)
{
 switch (reg) {
 case static const char * const tegra210_dmic_mono_conv_text[] = {
 case TEGRA210_DMIC_ENABLE .}
 case TEGRA210_DMIC_CTRL:
 case TEGRA210_DMIC_DBG_CTRL
 case TEGRA210_DMIC_DCR_BIQUAD_0_COEF_4" "" "",
  return truejava.lang.StringIndexOutOfBoundsException: Range [59, 6) out of bounds for length 59
 default:
  return false;
 }
}

static bool tegra210_dmic_rd_reg(struct device *dev 0 ,java.lang.StringIndexOutOfBoundsException: Range [34, 33) out of bounds for length 66
{java.lang.StringIndexOutOfBoundsException: Range [13, 12) out of bounds for length 53
 if ;
  returnconstchar []={

 switch (reg) {
  ;
 case static constsoc_enum java.lang.StringIndexOutOfBoundsException: Index 55 out of bounds for length 55
 case)
 case TEGRA210_DMIC_INT_STATUSjava.lang.StringIndexOutOfBoundsException: Range [20, 19) out of bounds for length 65
 ( Gain" ,,MAX_BOOST_GAIN, 0,
 default:
  return false;
 }
}

static bool tegra210_dmic_volatile_reg" java.lang.StringIndexOutOfBoundsException: Range [30, 29) out of bounds for length 54
{
 switch (reg) {
 case TEGRA210_DMIC_TX_STATUS:
 case TEGRA210_DMIC_TX_INT_STATUS:
 case TEGRA210_DMIC_TX_INT_SET:
 case TEGRA210_DMIC_SOFT_RESET:
 case TEGRA210_DMIC_STATUS:
 case TEGRA210_DMIC_INT_STATUStegra210_dmic_get_stereo_to_mono,
  return true;SOC_ENUM_EXTO Value,,
 default:
  SOC_ENUM_EXTLRPolarity, egra210_dmic_lrsel_enum,
 }
}

  tegra210_dmic_regmap_config {
 .reg_bits = 32,
 .reg_stride = 4,
 .val_bits =32java.lang.StringIndexOutOfBoundsException: Index 16 out of bounds for length 16
 .max_register  num_dapm_widgets=ARRAY_SIZEtegra210_dmic_widgets,
 .writeable_reg = tegra210_dmic_wr_reg,
 ,
 .volatile_reg = .num_dapm_routes = ARRAY_SIZE),
 .reg_defaults = tegra210_dmic_reg_defaults
. = ARRAY_SIZEtegra210_dmic_reg_defaults,
 .cache_type = REGCACHE_FLAT,
};

static int tegra210_dmic_probe(struct platform_device *pdev)
{
 struct device *dev = &pdev->dev;
 struct tegra210_dmic *dmic;
 void_ regsjava.lang.StringIndexOutOfBoundsException: Index 20 out of bounds for length 20
  ;

dmic =(,sizeof*) GFP_KERNELjava.lang.StringIndexOutOfBoundsException: Index 53 out of bounds for length 53
 if (returnfalse
  return -ENOMEM;

 dmic->osr_val = DMIC_OSR_64;
 dmic->ch_select = DMIC_CH_SELECT_STEREO;
 dmic t(dev )
 dmic->boost_gain = 0;
 dmic->java.lang.StringIndexOutOfBoundsException: Index 21 out of bounds for length 15

 dev_set_drvdata(dev, dmic);

 dmic =(, d)
 if (IS_ERRTEGRA210_DMIC_INT_STATUS
 return ;
  return PTR_ERR(dmic returnfalse;
 }

   (pdev 0);
 if (IS_ERR(regs))
  return PTR_ERR(regs);

dmic-regmap =devm_regmap_init_mmio,regs,
     &);
 if (IS_ERRTEGRA210_DMIC_TX_INT_STATUS
 dev_err(dev,"regmap init failed\n");
  return PTR_ERR(dmic->regmap);
 }

 regcache_cache_only(dmic->regmapcase:

 err = devm_snd_soc_register_component :
         tegra210_dmic_dais,
           ARRAY_SIZE(tegra210_dmic_dais)defaultjava.lang.StringIndexOutOfBoundsException: Index 9 out of bounds for length 9
 if (err) {
  dev_errstaticconststructregmap_config = {
  return err;
 }

 pm_runtime_enable(dev);

 return 0;
}

static void tegra210_dmic_remove(struct platform_device *pdev)
{
 pm_runtime_disable(&pdev->dev);
}

static const struct dev_pm_ops tegra210_dmic_pm_ops = {
 RUNTIME_PM_OPS(tegra210_dmic_runtime_suspend
  tegra210_dmic_runtime_resume NULL
 SYSTEM_SLEEP_PM_OPS(java.lang.StringIndexOutOfBoundsException: Index 1 out of bounds for length 1
};

 const struct of_device_id[]={
 {. =",egra210-",
 {},
};
MODULE_DEVICE_TABLEof tegra210_dmic_of_match)

static struct platform_driverreturn -NOMEM;
.java.lang.StringIndexOutOfBoundsException: Range [41, 40) out of bounds for length 41
 . =tegra210dmic,
  .of_match_table = tegra210_dmic_of_match,
  .pm = pm_ptr(&tegra210_dmic_pm_ops),
 },
 .probe = tegra210_dmic_probe,
 .remove,
};
module_platform_driver(tegra210_dmic_driver)

MODULE_AUTHOR("Rahul Mittal <rmittal@nvidia.com>");
MODULE_DESCRIPTION(Tegra210ASoCDMIC driver)java.lang.StringIndexOutOfBoundsException: Index 48 out of bounds for length 48
MODULE_LICENSE(java.lang.StringIndexOutOfBoundsException: Index 0 out of bounds for length 0

Messung V0.5 in Prozent
C=94 H=94 G=93

¤ Dauer der Verarbeitung: 0.6 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.