Vulpecula
Commander
- Registriert
- Nov. 2007
- Beiträge
- 2.241
Hallo zusammen!
Vielleicht kann mir jemand von Euch eine Frage beantworten, die (zumindest gehe ich davon aus) auf Erfahrung beruht.
Und zwar schreibe ich gerade an einer eigenen mbed-Library für einen BMP280, damit ich mal irgendwas konkretes habe und nicht nur LEDs zum Blinken bringe. Diesbezüglich habe ich mir natürlich auch mal Bibliotheken von anderen angesehen. Hierbei fällt mir auf, dass das Speichern von bestimmten Optionen durchaus unterschiedlich gelöst wurde. Ich meine damit konkret die möglichen Settings, die ich in die Register des Sensors schreiben kann.
Adafruit löst es z.B., indem sie die Bitvektoren in Aufzählungstypen ablegen:
Andere Bibliotheken (wie z.B. der Driver von Bosch Sensortec selbst) machen das wiederum als Präprozessordirektive:
Gibt es hier sowas wie "Best Practice", oder ist es am Ende egal? Ich hab mich persönlich ein wenig daran gewöhnt, vieles über
Grüße
Vulpecula
Vielleicht kann mir jemand von Euch eine Frage beantworten, die (zumindest gehe ich davon aus) auf Erfahrung beruht.
Und zwar schreibe ich gerade an einer eigenen mbed-Library für einen BMP280, damit ich mal irgendwas konkretes habe und nicht nur LEDs zum Blinken bringe. Diesbezüglich habe ich mir natürlich auch mal Bibliotheken von anderen angesehen. Hierbei fällt mir auf, dass das Speichern von bestimmten Optionen durchaus unterschiedlich gelöst wurde. Ich meine damit konkret die möglichen Settings, die ich in die Register des Sensors schreiben kann.
Adafruit löst es z.B., indem sie die Bitvektoren in Aufzählungstypen ablegen:
C++:
enum sensor_sampling {
SAMPLING_NONE = 0x00, /** No over-sampling. */
SAMPLING_X1 = 0x01, /** 1x over-sampling. */
SAMPLING_X2 = 0x02, /** 2x over-sampling. */
SAMPLING_X4 = 0x03, /** 4x over-sampling. */
SAMPLING_X8 = 0x04, /** 8x over-sampling. */
SAMPLING_X16 = 0x05 /** 16x over-sampling. */
};
Andere Bibliotheken (wie z.B. der Driver von Bosch Sensortec selbst) machen das wiederum als Präprozessordirektive:
C:
/*! @name Over-sampling macros */
#define BMP280_OS_NONE UINT8_C(0x00)
#define BMP280_OS_1X UINT8_C(0x01)
#define BMP280_OS_2X UINT8_C(0x02)
#define BMP280_OS_4X UINT8_C(0x03)
#define BMP280_OS_8X UINT8_C(0x04)
Gibt es hier sowas wie "Best Practice", oder ist es am Ende egal? Ich hab mich persönlich ein wenig daran gewöhnt, vieles über
#define
zu machen, aber es muss ja einen Grund geben, warum es nicht selten anders gelöst wurde.Grüße
Vulpecula