From a2a9156c833d656de2cc650d7b0f6da29d4b124c Mon Sep 17 00:00:00 2001
From: Daniel Friesel <daniel.friesel@uos.de>
Date: Tue, 24 Sep 2019 17:15:41 +0200
Subject: [PATCH] add initial BME680 model

---
 model/driver/bme680.dfa | 135 ++++++++++++++++++++++++++++++++++++++++
 1 file changed, 135 insertions(+)
 create mode 100644 model/driver/bme680.dfa

diff --git a/model/driver/bme680.dfa b/model/driver/bme680.dfa
new file mode 100644
index 0000000..cb640f8
--- /dev/null
+++ b/model/driver/bme680.dfa
@@ -0,0 +1,135 @@
+codegen:
+  instance: bme680
+  includes: ['driver/bme680.h']
+  flags: ['drivers=bme680', 'arch_drivers=i2c']
+
+dummygen:
+  enum:
+    rf24_pa_dbm_e:
+      - RF24_PA_MIN
+      - RF24_PA_LOW
+      - RF24_PA_HIGH
+      - RF24_PA_MAX
+      - RF24_PA_ERROR
+    rf24_datarate_e:
+      - RF24_1MBPS
+      - RF24_2MBPS
+      - RF24_250KBPS
+    rf24_crclength_e:
+      - RF24_CRC_DISABLED
+      - RF24_CRC_8
+      - RF24_CRC_16
+
+parameters:
+- power_mode
+- humidity_oversampling
+- pressure_oversampling
+- temperature_oversampling
+- gas_enabled
+- heater_duration_ms
+- heater_temperature_degc
+
+parameter_normalization:
+  humidity_oversampling:
+    enum:
+      BME680_OS_NONE: 0
+      BME680_OS_1X: 1
+      BME680_OS_2X: 2
+      BME680_OS_4X: 4
+      BME680_OS_8X: 8
+      BME680_OS_16X: 16
+  pressure_oversampling:
+    enum:
+      BME680_OS_NONE: 0
+      BME680_OS_1X: 1
+      BME680_OS_2X: 2
+      BME680_OS_4X: 4
+      BME680_OS_8X: 8
+      BME680_OS_16X: 16
+  temperature_oversampling:
+    enum:
+      BME680_OS_NONE: 0
+      BME680_OS_1X: 1
+      BME680_OS_2X: 2
+      BME680_OS_4X: 4
+      BME680_OS_8X: 8
+      BME680_OS_16X: 16
+
+states:
+  - UNINITIALIZED
+  - SLEEP
+  - SLEEP_PENDING_ATTR
+  - FORCED
+
+transition:
+  init:
+    src: [UNINITIALIZED, SLEEP, FORCED]
+    dst: SLEEP
+  setPowerMode:
+    src: [SLEEP]
+    dst: SLEEP
+    arguments:
+    - name: mode
+      values: ['BME680_SLEEP_MODE', 'BME680_FORCED_MODE']
+      parameter: power_mode
+  setPowerMode:
+    src: [SLEEP_PENDING_ATTR]
+    dst: SLEEP_PENDING_ATTR
+    arguments:
+    - name: mode
+      values: ['BME680_SLEEP_MODE', 'BME680_FORCED_MODE']
+      parameter: power_mode
+  setHumidityOversampling:
+    src: [SLEEP, SLEEP_PENDING_ATTR]
+    dst: SLEEP_PENDING_ATTR
+    arguments:
+    - name: os
+      values: ['BME680_OS_NONE', 'BME680_OS_1X', 'BME680_OS_2X', 'BME680_OS_4X', 'BME680_OS_8X', 'BME680_OS_16X']
+      parameter: humidity_oversampling
+  setPressureOversampling:
+    src: [SLEEP, SLEEP_PENDING_ATTR]
+    dst: SLEEP_PENDING_ATTR
+    arguments:
+    - name: os
+      values: ['BME680_OS_NONE', 'BME680_OS_1X', 'BME680_OS_2X', 'BME680_OS_4X', 'BME680_OS_8X', 'BME680_OS_16X']
+      parameter: pressure_oversampling
+  setTemperatureOversampling:
+    src: [SLEEP, SLEEP_PENDING_ATTR]
+    dst: SLEEP_PENDING_ATTR
+    arguments:
+    - name: os
+      values: ['BME680_OS_NONE', 'BME680_OS_1X', 'BME680_OS_2X', 'BME680_OS_4X', 'BME680_OS_8X', 'BME680_OS_16X']
+      parameter: temperature_oversampling
+  setRunGas:
+    src: [SLEEP, SLEEP_PENDING_ATTR]
+    dst: SLEEP_PENDING_ATTR
+    arguments:
+    - name: enabled
+      values: ['BME680_DISABLE_GAS_MEAS', 'BME680_ENABLE_GAS_MEAS']
+      parameter: gas_enabled
+  setHeaterDuration:
+    src: [SLEEP, SLEEP_PENDING_ATTR]
+    dst: SLEEP_PENDING_ATTR
+    arguments:
+    - name: ms
+      values: [10, 30, 60, 100, 150]
+      parameter: heater_duration_ms
+  setHeaterTemp:
+    src: [SLEEP, SLEEP_PENDING_ATTR]
+    dst: SLEEP_PENDING_ATTR
+    arguments:
+    - name: degc
+      values: [100, 150, 200, 250, 300]
+      parameter: heater_temperature_degc
+  setSensorSettings:
+    src: [SLEEP_PENDING_ATTR]
+    dst: SLEEP
+    arguments:
+    - name: desired_settings
+      values: ['BME680_OST_SEL | BME680_OSP_SEL | BME680_OSH_SEL | BME680_GAS_SENSOR_SEL']
+  setSensorMode:
+    src: [SLEEP]
+    dst: FORCED
+  getSensorData:
+    src: [FORCED]
+    dst: SLEEP
-- 
GitLab