Forum: Mikrocontroller und Digitale Elektronik Problem beim umschreiben BME680 Library auf onewire


von zwanni (Gast)


Angehängte Dateien:

Lesenswert?

Guten Morgen,

ich suche immer gute Sensoren für den Smarthome Bereich und jetzt gibt's 
ja den BME680 mit zusätzlichem Luftqualitätssensor.
Da mir I2C Sensoren nicht viel bringen habe ich schon den BME280 als 
onewire umgestrickt. Extra so gebaut, dass man alte DHT22 Gehäuse nutzen 
kann.
Leider ist die BME680 Library für mich etwas zu objektorientiert 
gestrickt. Die vom BME280 konnte ich noch selbst ganz gut umschreiben. 
Diesmal brauche ich etwas Hilfe.

Ich nutze die Adafruit Library, die so strukturiert ist:
Adafruit_BME680.cpp
Adafruit_BME680.h
bme680.c
bme680.h
bme680_defs.h

Die "bme680" Sourcen kommen diesmal scheinbar direkt von Bosch.

zunächst ist eine Struktur für den Sensor definiert, darin werden ein 
paar Einstellungen und Sensordaten hinterlegt, soweit kein Problem.
Auch darin enthalten sind aber Pointer zu den I2C schreib und 
lese-Funktionen und da wird's für mich kompliziert. Die 
Schreib-/Lesefunktionen selbst sind nicht in der Adafruit Klasse, 
deshalb muss ich einen Pointer auf mein Onewire Element übergeben.
Die Funktionen kennen aber den Datentyp Onewire scheinbar nicht, was ich 
nicht verstehe.

Definition der read/write Funktionen mit hinzugefügtem Onewire Pointer:
1
typedef int8_t (*bme680_com_fptr_t)(Onewire* onewire, uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len);


Beispielaufruf der Funktion auch mit hinzugefügtem Onewire:
1
gas_sensor->write(gas_sensor->onewire, gas_sensor->dev_id, BME680_MEM_PAGE_ADDR & BME680_SPI_WR_MSK, &reg, 1);


Die Funktion wird also aus dem struct aufgerufen und noch mit Daten aus 
dem struct gefüttert. Augenverdreh

Die Eigentliche Frage ist aber quasi warum die read write Funtkionen 
behaupten sie kennen den Datentyp onewire nicht?


Das ganze ist natürlich für jemand der das ganze nicht vorliegen hat nun 
auch nicht einfach zu verstehen, aber vielleicht hat trotzdem jemand 
eine Idee.


zwanni

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.