DexXxtrin
Erfahrenes Mitglied
Hallo Zusammen
Ist es möglich im C++ (Gnu Compiler für ARM, C++11 o. 14) heraus zu finden, welche Instanz eine Funktion aufgerufen hat (auf "einfache" Art und Weise)?
Noch kurz mein Problem beschrieben, dass Ihr wisst, wieso ich das will. Evtl gibt es ja auch elegantere Lösungen.
Ich bin an einer Firmware, bei der ich verschiedene Kommunikationskanäle habe (UART, BT, SPI,...).
An jedem Kommunikationskanal sind verschiedene Komponenten angeschlossen. Jeder Kommunikationskanal wird durch eine Klasse abstrahiert und können jeweils nur einmal Instanziert werden (da es den Kanal auch jeweils nur einmal geben kann). Die Komponenten sind jeweils auch durch eine Klasse abstrahiert und können so häufig instanziert werden, wie sie effektiv vorhanden sind (bekannt bevor Kompiliert wird).
Nun kann es aber mehrere z.b. SPI Busse haben, was mit allen anderen defines in einem Plattform Header definiert wird. Wissen, welche komponente an welchem Bus ist, soll nur dieser Header. Was heisst, dass die Komponenten dort beim jeweiligen Bus "registriert" werden.
Nun möchte ich, dass wenn ein Komponent über SPI kommunizieren will, einfach eine entsprechende Funktion der SPI-Klasse aufrufen kann, die funktion schaut, von welcher Instanz der Aufruf kommt und dann die Befehle über den entsprechenden Bus versendet.
Die Lösung soll halt so gemacht sein, dass verschiedene Geräte den selben Code verwenden können und nur jeweils der Header ausgetaust werden muss, welche Komponenten an welchen Kanälen angeschlossen sind.
Gruss DexXxtrin
Ist es möglich im C++ (Gnu Compiler für ARM, C++11 o. 14) heraus zu finden, welche Instanz eine Funktion aufgerufen hat (auf "einfache" Art und Weise)?
Noch kurz mein Problem beschrieben, dass Ihr wisst, wieso ich das will. Evtl gibt es ja auch elegantere Lösungen.
Ich bin an einer Firmware, bei der ich verschiedene Kommunikationskanäle habe (UART, BT, SPI,...).
An jedem Kommunikationskanal sind verschiedene Komponenten angeschlossen. Jeder Kommunikationskanal wird durch eine Klasse abstrahiert und können jeweils nur einmal Instanziert werden (da es den Kanal auch jeweils nur einmal geben kann). Die Komponenten sind jeweils auch durch eine Klasse abstrahiert und können so häufig instanziert werden, wie sie effektiv vorhanden sind (bekannt bevor Kompiliert wird).
Nun kann es aber mehrere z.b. SPI Busse haben, was mit allen anderen defines in einem Plattform Header definiert wird. Wissen, welche komponente an welchem Bus ist, soll nur dieser Header. Was heisst, dass die Komponenten dort beim jeweiligen Bus "registriert" werden.
Nun möchte ich, dass wenn ein Komponent über SPI kommunizieren will, einfach eine entsprechende Funktion der SPI-Klasse aufrufen kann, die funktion schaut, von welcher Instanz der Aufruf kommt und dann die Befehle über den entsprechenden Bus versendet.
Die Lösung soll halt so gemacht sein, dass verschiedene Geräte den selben Code verwenden können und nur jeweils der Header ausgetaust werden muss, welche Komponenten an welchen Kanälen angeschlossen sind.
Gruss DexXxtrin