\usepackage{xparse}
\DeclareDocumentCommand{\newdualentry}{ O{} O{} m m m m } {
  \newglossaryentry{gls-#3}{name={#5},text={#5\glsadd{#3}},
    description={#6},#1
  }
  \makeglossaries
  \newacronym[see={[Siehe:]{gls-#3}},#2]{#3}{#4}{#5\glsadd{gls-#3}}
}
% Usage: \newdualentry{ref}{short}{long}{description}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Acronyms
\newdualentry{IDE}{IDE}{integrierte Entwicklungsumgebung}{ist Deutsch für \enquote{Integrated Development Environment} und beschreibt eine Sammlung von Programmen (Editor, Compiler, Linker, Loader, Debugger), welche zum programmieren verwendet wird \cite{wiki:IDE}}

\newdualentry{ARM}{ARM}{ARM Limited}{früher: Advanced RISC Machines Ltd. ist ein zur japanischen Firma Softbank gehörender Hersteller von IP (Intellectual property) Software im Bereich Mikroprozessoren. Die gleichnamige Mikroprozessorarchitektur, ARM, ist zur Zeit weltweit am weitesten verbreitet \cite{wiki:ARM} \cite{techradar:ARM}}

\newdualentry{CMSIS}{CMSIS}{Cortex Microcontroller Software Interface Standard}{ist ein von \gls{ARM} erstellter Standard, welcher das Verwenden von Software zwischen verschiedenen Cortex-Prozessoren verschiedener Chip-Hersteller ohne große Anpassungen ermöglichen soll. Hierfür stellt \gls{ARM} einige Definitionen -- wie zum Beispiel CORE, RTOS, DSP, \dots{} -- zur Verfügung, welche von den Chip-Herstellern implementiert werden, diese stellen dann CMSIS-Packs zur Verfügung, welche in Softwareprojekte eingebunden werden können. Siehe: \cite{arm:CMSIS}}

\newdualentry{SWD}{SWD}{Single Wire Debug}{ist ein Subset von \gls{JTAG}, welches mit weniger Portleitungen auskommt}

\newdualentry{JTAG}{JTAG}{Joint Test Action Group}{ist ein Synonym für den IEEE Standard 1149.1, welcher eine Methodik zum \gls{Debugging} von Hardware auf Leiterplatten beschreibt. Siehe: \cite{ieee:1149-1}}

\newdualentry{STDLib}{STDLib}{HTL Standard Library}{ist eine Library für den Cortex-M3, welche HTL-spezifische Funktionen, vor allem im Bereich I/O enthält}

\newdualentry{Keil}{Keil}{Keil Elektronik GmbH}{war eine deutsche Firma (Anfangs: GbR), gegründet 1982 von Günther und Reinhard Keil. Das Hauptaufgabengebiet lag bei der Entwicklung von Evaluation Boards und der $\mu$Vision \gls{IDE}. Keil wurde 2005 von \gls{ARM} aufgekauft. Siehe: \cite{wiki:Keil} \cite{techdesignforums:ARM}}

\newdualentry{XML}{XML}{Extensible Markup Language}{ist eine Auszeichnungssprache, welche zur Abspeicherung von strukturierten Daten verwendet wird}

\newdualentry{MMI}{MMI}{Mensch-Maschine-Interface}{ist ein Interface (z.B.: Display, Tastatur) um die Kommunikation von einem Menschen mit einer Maschine zu ermöglichen}

\newdualentry{DSV}{DSV}{Digitale Signalverarbeitung}{ist eine Methodik um ursprünglich analoge Bauelemente wie Filter oder Oszillatoren digital zu realisieren}

\newdualentry{GUI}{GUI}{Graphical User Interface}{englisch für \enquote{grafische Benutzeroberfläche}. Teil des \gls{MMI}}

\newdualentry{STM}{STM}{STMicroelectronics N.V.}{ist ein europäischer Halbleiterhersteller mit Sitz in den Niederlanden. Siehe: \cite{wiki:STM}}

\newdualentry{RTC}{RTC}{Real Time Clock}{zu deutsch: Echtzeituhr, ist eine Uhr, welche durch die hohe Präzision dafür ausgelegt ist Zeitnahmeaufgaben zu erledigen\todo{Stimmt das so??}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Glossary
\newglossaryentry{Debugging}{
  name={Debugging},
  description={oder \enquote{Debuggen} beschreibt das finden und entfernen von Bugs (engl. für Käfer, hier: Programmfehler) mit Hilfe eines Debuggers. Siehe: \cite{wiki:Debugger}}
}

\newglossaryentry{Minimalsystem}{
  name={Minimalsystem},
  description={beschreibt das im Unterricht üblicherweise verwendete -- aber auch erweiterbare -- Microcontroller System}
}

\newglossaryentry{Core-Modul}{
  name={Core-Modul},
  description={ist die Baugruppe, auf welcher der Cortex-M3 Prozessor sitzt und Teil des neuen \gls{Minimalsystem}s}
}

\newglossaryentry{Basisplatine}{
  name={Basisplatine},
  description={ist die Baugruppe, auf welche das \gls{Core-Modul} gesteckt wird. Sie bietet Schalter, LEDs, Sensoren und ein Arduino Shield Interface. Zusammen mit dem \gls{Core-Modul} komplettiert sie das \gls{Minimalsystem}}
}

\newglossaryentry{USB-to-UART}{
  name={USB-to-UART},
  description={ist die Baugruppe, welche ein UART Gerät über USB emuliert. Es verwendet hierfür einen FTDI-Chip und ist Teil des neuen \gls{Minimalsystem}s}
}

\newglossaryentry{C}{
  name={C},
  description={ist eine Programmiersprache, welche sowohl zur System- als auch zur Anwendungsprogrammierung eingesetzt wird. C ist eine der am weitesten verbreiteten Programmiersprachen weltweit und wurde in den 1970er-Jahren von Dennis Ritchie erfunden. Siehe: \cite{wiki:C}}
}

\newglossaryentry{C++}{
  name={C++},
  description={ist eine objektorientierte Erweiterung zu \gls{C}. C++ wurde 1979 von Bjarne Stroustrup entwickelt. Siehe: \cite{wiki:C++}}
}

\newglossaryentry{ZIP}{
  name={ZIP},
  description={ist ein weit verbreitetes Dateiformat, welches zur Archivierung und Kompression von Dateien und Ordnern verwendet wird. Der Name leitet sich aus dem englischen Wort \enquote{zipper} (Reißverschluss) ab}
}

\newglossaryentry{Semantic Versioning}{
  name={Semantic Versioning},
  description={beschreibt eine Art der Versionierung von Software, welche aus 3 einzelnen Versionsnummern im Format A.B.C besteht, C steht hierbei für Patches (Bugfixes, keine neue Funktionalität), B für Minor Versions (neue Funktionalität, aber weiterhin kompatibel zur Vorgängerversion) und A, was Major Versions (inkompatibel zu älteren Versionen) darstellt}
}

\newglossaryentry{cpu}{
  name={STM32F107RCT(6)},
  description={ist der in dieser Diplomarbeit verwendete Microcontroller}
}