got the voc sensor to do something

master
Ondřej Hruška 6 years ago
parent b212eba318
commit 173dd90528
Signed by: MightyPork
GPG Key ID: 2C5FD5035250423D
  1. 228
      CMakeLists.txt
  2. 1138
      Drivers/BME680/bme680.c
  3. 225
      Drivers/BME680/bme680.h
  4. 512
      Drivers/BME680/bme680_defs.h
  5. 13
      Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c
  6. 6
      Inc/debug.h
  7. 80
      Inc/hw_i2c.h
  8. 2
      Inc/main.h
  9. 292
      Makefile
  10. 26
      Middlewares/Third_Party/Lora/Core/lora.c
  11. 10
      Src/debug.c
  12. 162
      Src/hw_i2c.c
  13. 203
      Src/main.c
  14. 1
      Src/stm32l0xx_it.c
  15. 197
      Src/voc_sensor.c
  16. 15
      Src/voc_sensor.h
  17. 43
      build/LoRaMac.d
  18. 13841
      build/LoRaMac.lst
  19. 31
      build/LoRaMacCrypto.d
  20. 1053
      build/LoRaMacCrypto.lst
  21. 34
      build/Region.d
  22. 2208
      build/Region.lst
  23. 35
      build/RegionCommon.d
  24. 1997
      build/RegionCommon.lst
  25. 51
      build/RegionEU868.d
  26. 4727
      build/RegionEU868.lst
  27. 4
      build/aes.d
  28. 2834
      build/aes.lst
  29. BIN
      build/bees.bin
  30. 3535
      build/bees.hex
  31. 6414
      build/bees.map
  32. 6
      build/bme680.d
  33. 5480
      build/bme680.lst
  34. 25
      build/cmac.d
  35. 844
      build/cmac.lst
  36. 135
      build/debug.d
  37. 326
      build/debug.lst
  38. 141
      build/delay.d
  39. 199
      build/delay.lst
  40. 135
      build/hw_gpio.d
  41. 672
      build/hw_gpio.lst
  42. 141
      build/hw_i2c.d
  43. 486
      build/hw_i2c.lst
  44. 138
      build/hw_rtc.d
  45. 2705
      build/hw_rtc.lst
  46. 135
      build/hw_spi.d
  47. 824
      build/hw_spi.lst
  48. 155
      build/lora.d
  49. 2559
      build/lora.lst
  50. 138
      build/low_power.d
  51. 657
      build/low_power.lst
  52. 171
      build/main.d
  53. 571
      build/main.lst
  54. 1
      build/startup_stm32l073xx.d
  55. 102
      build/stm32l0xx_hal.d
  56. 1522
      build/stm32l0xx_hal.lst
  57. 103
      build/stm32l0xx_hal_adc.d
  58. 5657
      build/stm32l0xx_hal_adc.lst
  59. 103
      build/stm32l0xx_hal_adc_ex.d
  60. 924
      build/stm32l0xx_hal_adc_ex.lst
  61. 103
      build/stm32l0xx_hal_comp.d
  62. 32
      build/stm32l0xx_hal_comp.lst
  63. 103
      build/stm32l0xx_hal_comp_ex.d
  64. 32
      build/stm32l0xx_hal_comp_ex.lst
  65. 103
      build/stm32l0xx_hal_cortex.d
  66. 2621
      build/stm32l0xx_hal_cortex.lst
  67. 103
      build/stm32l0xx_hal_crc.d
  68. 32
      build/stm32l0xx_hal_crc.lst
  69. 103
      build/stm32l0xx_hal_crc_ex.d
  70. 32
      build/stm32l0xx_hal_crc_ex.lst
  71. 2
      build/stm32l0xx_hal_cryp.d
  72. 25
      build/stm32l0xx_hal_cryp.lst
  73. 2
      build/stm32l0xx_hal_cryp_ex.d
  74. 25
      build/stm32l0xx_hal_cryp_ex.lst
  75. 103
      build/stm32l0xx_hal_dac.d
  76. 32
      build/stm32l0xx_hal_dac.lst
  77. 103
      build/stm32l0xx_hal_dac_ex.d
  78. 32
      build/stm32l0xx_hal_dac_ex.lst
  79. 103
      build/stm32l0xx_hal_dma.d
  80. 3299
      build/stm32l0xx_hal_dma.lst
  81. 103
      build/stm32l0xx_hal_firewall.d
  82. 32
      build/stm32l0xx_hal_firewall.lst
  83. 103
      build/stm32l0xx_hal_flash.d
  84. 1990
      build/stm32l0xx_hal_flash.lst
  85. 103
      build/stm32l0xx_hal_flash_ex.d
  86. 3227
      build/stm32l0xx_hal_flash_ex.lst
  87. 103
      build/stm32l0xx_hal_flash_ramfunc.d
  88. 1527
      build/stm32l0xx_hal_flash_ramfunc.lst
  89. 103
      build/stm32l0xx_hal_gpio.d
  90. 1503
      build/stm32l0xx_hal_gpio.lst
  91. 105
      build/stm32l0xx_hal_i2c.d
  92. 17938
      build/stm32l0xx_hal_i2c.lst
  93. 103
      build/stm32l0xx_hal_i2c_ex.d
  94. 868
      build/stm32l0xx_hal_i2c_ex.lst
  95. 103
      build/stm32l0xx_hal_i2s.d
  96. 32
      build/stm32l0xx_hal_i2s.lst
  97. 103
      build/stm32l0xx_hal_irda.d
  98. 32
      build/stm32l0xx_hal_irda.lst
  99. 103
      build/stm32l0xx_hal_iwdg.d
  100. 457
      build/stm32l0xx_hal_iwdg.lst
  101. Some files were not shown because too many files have changed in this diff Show More

@ -3,7 +3,7 @@ project(proj)
set(CMAKE_CXX_STANDARD 11)
add_definitions(-DSTM32L073xx)
add_definitions(-DSTM32L073xx -DUSE_FULL_LL_DRIVER)
set(SOURCE_FILES
Src/system_stm32l0xx.c
@ -79,6 +79,7 @@ set(SOURCE_FILES
Inc/hw_gpio.h
Inc/hw_msp.h
Inc/hw_rtc.h
Inc/hw_i2c.h
Inc/hw_spi.h
Inc/stm32l0xx_hw_conf.h
Inc/vcom.h
@ -87,6 +88,7 @@ set(SOURCE_FILES
Src/hw_gpio.c
Src/hw_rtc.c
Src/hw_spi.c
Src/hw_i2c.c
Src/stm32l0xx_hw.c
Src/vcom.c
Src/stm32l0xx_hal_msp.c
@ -143,13 +145,233 @@ set(SOURCE_FILES
Middlewares/Third_Party/Lora/Utilities/timeServer.h
Middlewares/Third_Party/Lora/Utilities/low_power.c
Middlewares/Third_Party/Lora/Utilities/delay.c
)
./Drivers/CMSIS/Include/cmsis_gcc.h
./Drivers/CMSIS/Include/core_sc000.h
./Drivers/CMSIS/Include/core_cm7.h
./Drivers/CMSIS/Include/core_cm0.h
./Drivers/CMSIS/Include/cmsis_armcc_V6.h
./Drivers/CMSIS/Include/arm_math.h
./Drivers/CMSIS/Include/core_sc300.h
./Drivers/CMSIS/Include/core_cmInstr.h
./Drivers/CMSIS/Include/cmsis_armcc.h
./Drivers/CMSIS/Include/core_cmSimd.h
./Drivers/CMSIS/Include/core_cm0plus.h
./Drivers/CMSIS/Include/core_cm4.h
./Drivers/CMSIS/Include/arm_common_tables.h
./Drivers/CMSIS/Include/core_cm3.h
./Drivers/CMSIS/Include/core_cmFunc.h
./Drivers/CMSIS/Include/arm_const_structs.h
./Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l0xx.h
./Drivers/CMSIS/Device/ST/STM32L0xx/Include/stm32l073xx.h
./Drivers/CMSIS/Device/ST/STM32L0xx/Include/system_stm32l0xx.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dma.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dac_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dma.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crs.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_def.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_wwdg.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_lpuart.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_pwr.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_irda_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_conf_template.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cryp.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rng.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_usart.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_crc.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_wwdg.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cryp_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_gpio.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_smbus.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_system.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pwr_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_tim.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_usart.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2c_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_dac.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_utils.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_comp.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_firewall.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_comp_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_crc.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_iwdg.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_lptim.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_cortex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pcd.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rcc.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rtc_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_dac.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_spi.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_adc.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_spi.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_iwdg.h
./Drivers/STM32L0xx_HAL_Driver/Inc/Legacy/stm32_hal_legacy.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash_ramfunc.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_smartcard.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_pcd_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_lcd.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_smartcard_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_usart_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_irda.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_gpio.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_lptim_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tim.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_exti.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_crc_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rcc.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_comp.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_uart.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_flash.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rng.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_rtc.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_rtc.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_lptim.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_tsc.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_bus.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_cortex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_i2s.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_adc_ex.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_ll_i2c.h
./Drivers/STM32L0xx_HAL_Driver/Inc/stm32l0xx_hal_adc.h
./Drivers/BSP/sx1272mb2das/sx1272mb2das.h
./Drivers/BSP/Components/sx1272/sx1272Regs-LoRa.h
./Drivers/BSP/Components/sx1272/sx1272Regs-Fsk.h
./Drivers/BSP/Components/sx1272/sx1272.h
./junk/stm32l0xx_hal_conf.h
./junk/usart.h
./junk/rtc.h
./junk/stm32l0xx_it.h
./junk/i2c.h
./junk/spi.h
./junk/gpio.h
./Inc/hw_gpio.h
./Inc/stm32l0xx_hal_conf.h
./Inc/Commissioning.h
./Inc/hw.h
./Inc/stm32l0xx_hw_conf.h
./Inc/stm32l0xx_it.h
./Inc/hw_spi.h
./Inc/debug.h
./Inc/hw_conf.h
./Inc/vcom.h
./Inc/main.h
./Inc/hw_rtc.h
./Inc/hw_i2c.h
./Inc/hw_msp.h
./Middlewares/Third_Party/Lora/Core/lora_mac_version.h
./Middlewares/Third_Party/Lora/Core/lora.h
./Middlewares/Third_Party/Lora/Crypto/cmac.h
./Middlewares/Third_Party/Lora/Crypto/aes.h
./Middlewares/Third_Party/Lora/Phy/radio.h
./Middlewares/Third_Party/Lora/Conf/Commissioning_template.h
./Middlewares/Third_Party/Lora/Conf/Inc/hw_gpio_template.h
./Middlewares/Third_Party/Lora/Conf/Inc/hw_template.h
./Middlewares/Third_Party/Lora/Conf/Inc/hw_rtc_template.h
./Middlewares/Third_Party/Lora/Conf/Inc/hw_spi_template.h
./Middlewares/Third_Party/Lora/Mac/LoRaMacCrypto.h
./Middlewares/Third_Party/Lora/Mac/timer.h
./Middlewares/Third_Party/Lora/Mac/region/RegionUS915-Hybrid.h
./Middlewares/Third_Party/Lora/Mac/region/RegionUS915.h
./Middlewares/Third_Party/Lora/Mac/region/RegionCN470.h
./Middlewares/Third_Party/Lora/Mac/region/RegionKR920.h
./Middlewares/Third_Party/Lora/Mac/region/RegionAU915.h
./Middlewares/Third_Party/Lora/Mac/region/RegionCN779.h
./Middlewares/Third_Party/Lora/Mac/region/RegionIN865.h
./Middlewares/Third_Party/Lora/Mac/region/RegionAS923.h
./Middlewares/Third_Party/Lora/Mac/region/Region.h
./Middlewares/Third_Party/Lora/Mac/region/RegionEU433.h
./Middlewares/Third_Party/Lora/Mac/region/RegionCommon.h
./Middlewares/Third_Party/Lora/Mac/region/RegionEU868.h
./Middlewares/Third_Party/Lora/Mac/LoRaMac.h
./Middlewares/Third_Party/Lora/Mac/LoRaMacTest.h
./Middlewares/Third_Party/Lora/Utilities/utilities.h
./Middlewares/Third_Party/Lora/Utilities/delay.h
./Middlewares/Third_Party/Lora/Utilities/timeServer.h
./Middlewares/Third_Party/Lora/Utilities/low_power.h
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_adc.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_adc_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_comp.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_comp_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cortex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_crc.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_crc_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cryp.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_cryp_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dac.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dac_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_dma.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_firewall.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_flash_ramfunc.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_gpio.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2c_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_i2s.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_irda.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_iwdg.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_lcd.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_lptim.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_msp_template-c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pcd.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pcd_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_pwr_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rcc_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rng.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rtc.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_rtc_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_smartcard.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_smartcard_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_smbus.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_spi.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tim_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_tsc.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_uart_ex.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_usart.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_hal_wwdg.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_adc.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_comp.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_crc.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_crs.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dac.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_dma.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_exti.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_gpio.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_i2c.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_lptim.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_lpuart.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_pwr.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rcc.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rng.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_rtc.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_spi.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_tim.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_usart.c
Drivers/STM32L0xx_HAL_Driver/Src/stm32l0xx_ll_utils.c
Drivers/BME680/bme680.c
Drivers/BME680/bme680.h
Drivers/BME680/bme680_defs.h
Src/voc_sensor.c
Src/voc_sensor.h)
include_directories(Drivers/CMSIS/Device/ST/STM32L0xx/Include)
include_directories(Drivers/CMSIS/Include)
include_directories(Drivers/STM32L0xx_HAL_Driver/Inc)
include_directories(Drivers/STM32L0xx_HAL_Driver/Inc/Legacy)
include_directories(Inc
include_directories(
Inc
Middlewares/Third_Party/Lora/Core
Middlewares/Third_Party/Lora/Crypto
Middlewares/Third_Party/Lora/Mac

File diff suppressed because it is too large Load Diff

@ -0,0 +1,225 @@
/**
* Copyright (C) 2017 - 2018 Bosch Sensortec GmbH
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of the copyright holder nor the names of the
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
* OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
*
* The information provided is believed to be accurate and reliable.
* The copyright holder assumes no responsibility
* for the consequences of use
* of such information nor for any infringement of patents or
* other rights of third parties which may result from its use.
* No license is granted by implication or otherwise under any patent or
* patent rights of the copyright holder.
*
* @file bme680.h
* @date 30 Oct 2017
* @version 3.5.3
* @brief
*
*/
/*! @file bme680.h
@brief Sensor driver for BME680 sensor */
/*!
* @defgroup BME680 SENSOR API
* @{*/
#ifndef BME680_H_
#define BME680_H_
/*! CPP guard */
#ifdef __cplusplus
extern "C"
{
#endif
/* Header includes */
#include "bme680_defs.h"
/* function prototype declarations */
/*!
* @brief This API is the entry point.
* It reads the chip-id and calibration data from the sensor.
*
* @param[in,out] dev : Structure instance of bme680_dev
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_init(struct bme680_dev *dev);
/*!
* @brief This API writes the given data to the register address
* of the sensor.
*
* @param[in] reg_addr : Register address from where the data to be written.
* @param[in] reg_data : Pointer to data buffer which is to be written
* in the sensor.
* @param[in] len : No of bytes of data to write..
* @param[in] dev : Structure instance of bme680_dev.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_set_regs(const uint8_t *reg_addr, const uint8_t *reg_data, uint8_t len, struct bme680_dev *dev);
/*!
* @brief This API reads the data from the given register address of the sensor.
*
* @param[in] reg_addr : Register address from where the data to be read
* @param[out] reg_data : Pointer to data buffer to store the read data.
* @param[in] len : No of bytes of data to be read.
* @param[in] dev : Structure instance of bme680_dev.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_get_regs(uint8_t reg_addr, uint8_t *reg_data, uint16_t len, struct bme680_dev *dev);
/*!
* @brief This API performs the soft reset of the sensor.
*
* @param[in] dev : Structure instance of bme680_dev.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error.
*/
int8_t bme680_soft_reset(struct bme680_dev *dev);
/*!
* @brief This API is used to set the power mode of the sensor.
*
* @param[in] dev : Structure instance of bme680_dev
* @note : Pass the value to bme680_dev.power_mode structure variable.
*
* value | mode
* -------------|------------------
* 0x00 | BME680_SLEEP_MODE
* 0x01 | BME680_FORCED_MODE
*
* * @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_set_sensor_mode(struct bme680_dev *dev);
/*!
* @brief This API is used to get the power mode of the sensor.
*
* @param[in] dev : Structure instance of bme680_dev
* @note : bme680_dev.power_mode structure variable hold the power mode.
*
* value | mode
* ---------|------------------
* 0x00 | BME680_SLEEP_MODE
* 0x01 | BME680_FORCED_MODE
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_get_sensor_mode(struct bme680_dev *dev);
/*!
* @brief This API is used to set the profile duration of the sensor.
*
* @param[in] dev : Structure instance of bme680_dev.
* @param[in] duration : Duration of the measurement in ms.
*
* @return Nothing
*/
void bme680_set_profile_dur(uint16_t duration, struct bme680_dev *dev);
/*!
* @brief This API is used to get the profile duration of the sensor.
*
* @param[in] dev : Structure instance of bme680_dev.
* @param[in] duration : Duration of the measurement in ms.
*
* @return Nothing
*/
void bme680_get_profile_dur(uint16_t *duration, const struct bme680_dev *dev);
/*!
* @brief This API reads the pressure, temperature and humidity and gas data
* from the sensor, compensates the data and store it in the bme680_data
* structure instance passed by the user.
*
* @param[out] data: Structure instance to hold the data.
* @param[in] dev : Structure instance of bme680_dev.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error
*/
int8_t bme680_get_sensor_data(struct bme680_field_data *data, struct bme680_dev *dev);
/*!
* @brief This API is used to set the oversampling, filter and T,P,H, gas selection
* settings in the sensor.
*
* @param[in] dev : Structure instance of bme680_dev.
* @param[in] desired_settings : Variable used to select the settings which
* are to be set in the sensor.
*
* Macros | Functionality
*---------------------------------|----------------------------------------------
* BME680_OST_SEL | To set temperature oversampling.
* BME680_OSP_SEL | To set pressure oversampling.
* BME680_OSH_SEL | To set humidity oversampling.
* BME680_GAS_MEAS_SEL | To set gas measurement setting.
* BME680_FILTER_SEL | To set filter setting.
* BME680_HCNTRL_SEL | To set humidity control setting.
* BME680_RUN_GAS_SEL | To set run gas setting.
* BME680_NBCONV_SEL | To set NB conversion setting.
* BME680_GAS_SENSOR_SEL | To set all gas sensor related settings
*
* @note : Below are the macros to be used by the user for selecting the
* desired settings. User can do OR operation of these macros for configuring
* multiple settings.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error.
*/
int8_t bme680_set_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev);
/*!
* @brief This API is used to get the oversampling, filter and T,P,H, gas selection
* settings in the sensor.
*
* @param[in] dev : Structure instance of bme680_dev.
* @param[in] desired_settings : Variable used to select the settings which
* are to be get from the sensor.
*
* @return Result of API execution status
* @retval zero -> Success / +ve value -> Warning / -ve value -> Error.
*/
int8_t bme680_get_sensor_settings(uint16_t desired_settings, struct bme680_dev *dev);
#ifdef __cplusplus
}
#endif /* End of CPP guard */
#endif /* BME680_H_ */
/** @}*/

@ -0,0 +1,512 @@
/**
* Copyright (C) 2017 - 2018 Bosch Sensortec GmbH
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* Neither the name of the copyright holder nor the names of the
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL COPYRIGHT HOLDER
* OR CONTRIBUTORS BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
* OR CONSEQUENTIAL DAMAGES(INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
* ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE
*
* The information provided is believed to be accurate and reliable.
* The copyright holder assumes no responsibility
* for the consequences of use
* of such information nor for any infringement of patents or
* other rights of third parties which may result from its use.
* No license is granted by implication or otherwise under any patent or
* patent rights of the copyright holder.
*
* @file bme680_defs.h
* @date 30 Oct 2017
* @version 3.5.3
* @brief
*
*/
/*! @file bme680_defs.h
@brief Sensor driver for BME680 sensor */
/*!
* @defgroup BME680 SENSOR API
* @brief
* @{*/
#ifndef BME680_DEFS_H_
#define BME680_DEFS_H_
/********************************************************/
/* header includes */
#ifdef __KERNEL__
#include <linux/types.h>
#include <linux/kernel.h>
#else
#include <stdint.h>
#include <stddef.h>
#endif
/******************************************************************************/
/*! @name Common macros */
/******************************************************************************/
#if !defined(UINT8_C) && !defined(INT8_C)
#define INT8_C(x) S8_C(x)
#define UINT8_C(x) U8_C(x)
#endif
#if !defined(UINT16_C) && !defined(INT16_C)
#define INT16_C(x) S16_C(x)
#define UINT16_C(x) U16_C(x)
#endif
#if !defined(INT32_C) && !defined(UINT32_C)
#define INT32_C(x) S32_C(x)
#define UINT32_C(x) U32_C(x)
#endif
#if !defined(INT64_C) && !defined(UINT64_C)
#define INT64_C(x) S64_C(x)
#define UINT64_C(x) U64_C(x)
#endif
/**@}*/
/**\name C standard macros */
#ifndef NULL
#ifdef __cplusplus
#define NULL 0
#else
#define NULL ((void *) 0)
#endif
#endif
/** BME680 General config */
#define BME680_POLL_PERIOD_MS UINT8_C(10)
/** BME680 I2C addresses */
#define BME680_I2C_ADDR_PRIMARY UINT8_C(0x76)
#define BME680_I2C_ADDR_SECONDARY UINT8_C(0x77)
/** BME680 unique chip identifier */
#define BME680_CHIP_ID UINT8_C(0x61)
/** BME680 coefficients related defines */
#define BME680_COEFF_SIZE UINT8_C(0x41)
#define BME680_COEFF_ADDR1_LEN UINT8_C(25)
#define BME680_COEFF_ADDR2_LEN UINT8_C(16)
/** BME680 field_x related defines */
#define BME680_FIELD_LENGTH UINT8_C(15)
#define BME680_FIELD_ADDR_OFFSET UINT8_C(17)
/** Soft reset command */
#define BME680_SOFT_RESET_CMD UINT8_C(0xb6)
/** Error code definitions */
#define BME680_OK INT8_C(0)
/* Errors */
#define BME680_E_NULL_PTR INT8_C(-1)
#define BME680_E_COM_FAIL INT8_C(-2)
#define BME680_E_DEV_NOT_FOUND INT8_C(-3)
#define BME680_E_INVALID_LENGTH INT8_C(-4)
/* Warnings */
#define BME680_W_DEFINE_PWR_MODE INT8_C(1)
#define BME680_W_NO_NEW_DATA INT8_C(2)
/* Info's */
#define BME680_I_MIN_CORRECTION UINT8_C(1)
#define BME680_I_MAX_CORRECTION UINT8_C(2)
/** Register map */
/** Other coefficient's address */
#define BME680_ADDR_RES_HEAT_VAL_ADDR UINT8_C(0x00)
#define BME680_ADDR_RES_HEAT_RANGE_ADDR UINT8_C(0x02)
#define BME680_ADDR_RANGE_SW_ERR_ADDR UINT8_C(0x04)
#define BME680_ADDR_SENS_CONF_START UINT8_C(0x5A)
#define BME680_ADDR_GAS_CONF_START UINT8_C(0x64)
/** Field settings */
#define BME680_FIELD0_ADDR UINT8_C(0x1d)
/** Heater settings */
#define BME680_RES_HEAT0_ADDR UINT8_C(0x5a)
#define BME680_GAS_WAIT0_ADDR UINT8_C(0x64)
/** Sensor configuration registers */
#define BME680_CONF_HEAT_CTRL_ADDR UINT8_C(0x70)
#define BME680_CONF_ODR_RUN_GAS_NBC_ADDR UINT8_C(0x71)
#define BME680_CONF_OS_H_ADDR UINT8_C(0x72)
#define BME680_MEM_PAGE_ADDR UINT8_C(0xf3)
#define BME680_CONF_T_P_MODE_ADDR UINT8_C(0x74)
#define BME680_CONF_ODR_FILT_ADDR UINT8_C(0x75)
/** Coefficient's address */
#define BME680_COEFF_ADDR1 UINT8_C(0x89)
#define BME680_COEFF_ADDR2 UINT8_C(0xe1)
/** Chip identifier */
#define BME680_CHIP_ID_ADDR UINT8_C(0xd0)
/** Soft reset register */
#define BME680_SOFT_RESET_ADDR UINT8_C(0xe0)
/** Heater control settings */
#define BME680_ENABLE_HEATER UINT8_C(0x00)
#define BME680_DISABLE_HEATER UINT8_C(0x08)
/** Gas measurement settings */
#define BME680_DISABLE_GAS_MEAS UINT8_C(0x00)
#define BME680_ENABLE_GAS_MEAS UINT8_C(0x01)
/** Over-sampling settings */
#define BME680_OS_NONE UINT8_C(0)
#define BME680_OS_1X UINT8_C(1)
#define BME680_OS_2X UINT8_C(2)
#define BME680_OS_4X UINT8_C(3)
#define BME680_OS_8X UINT8_C(4)
#define BME680_OS_16X UINT8_C(5)
/** IIR filter settings */
#define BME680_FILTER_SIZE_0 UINT8_C(0)
#define BME680_FILTER_SIZE_1 UINT8_C(1)
#define BME680_FILTER_SIZE_3 UINT8_C(2)
#define BME680_FILTER_SIZE_7 UINT8_C(3)
#define BME680_FILTER_SIZE_15 UINT8_C(4)
#define BME680_FILTER_SIZE_31 UINT8_C(5)
#define BME680_FILTER_SIZE_63 UINT8_C(6)
#define BME680_FILTER_SIZE_127 UINT8_C(7)
/** Power mode settings */
#define BME680_SLEEP_MODE UINT8_C(0)
#define BME680_FORCED_MODE UINT8_C(1)
/** Delay related macro declaration */
#define BME680_RESET_PERIOD UINT32_C(10)
/** SPI memory page settings */
#define BME680_MEM_PAGE0 UINT8_C(0x10)
#define BME680_MEM_PAGE1 UINT8_C(0x00)
/** Ambient humidity shift value for compensation */
#define BME680_HUM_REG_SHIFT_VAL UINT8_C(4)
/** Run gas enable and disable settings */
#define BME680_RUN_GAS_DISABLE UINT8_C(0)
#define BME680_RUN_GAS_ENABLE UINT8_C(1)
/** Buffer length macro declaration */
#define BME680_TMP_BUFFER_LENGTH UINT8_C(40)
#define BME680_REG_BUFFER_LENGTH UINT8_C(6)
#define BME680_FIELD_DATA_LENGTH UINT8_C(3)
#define BME680_GAS_REG_BUF_LENGTH UINT8_C(20)
#define BME680_GAS_HEATER_PROF_LEN_MAX UINT8_C(10)
/** Settings selector */
#define BME680_OST_SEL UINT16_C(1)
#define BME680_OSP_SEL UINT16_C(2)
#define BME680_OSH_SEL UINT16_C(4)
#define BME680_GAS_MEAS_SEL UINT16_C(8)
#define BME680_FILTER_SEL UINT16_C(16)
#define BME680_HCNTRL_SEL UINT16_C(32)
#define BME680_RUN_GAS_SEL UINT16_C(64)
#define BME680_NBCONV_SEL UINT16_C(128)
#define BME680_GAS_SENSOR_SEL (BME680_GAS_MEAS_SEL | BME680_RUN_GAS_SEL | BME680_NBCONV_SEL)
/** Number of conversion settings*/
#define BME680_NBCONV_MIN UINT8_C(0)
#define BME680_NBCONV_MAX UINT8_C(10)
/** Mask definitions */
#define BME680_GAS_MEAS_MSK UINT8_C(0x30)
#define BME680_NBCONV_MSK UINT8_C(0X0F)
#define BME680_FILTER_MSK UINT8_C(0X1C)
#define BME680_OST_MSK UINT8_C(0XE0)
#define BME680_OSP_MSK UINT8_C(0X1C)
#define BME680_OSH_MSK UINT8_C(0X07)
#define BME680_HCTRL_MSK UINT8_C(0x08)
#define BME680_RUN_GAS_MSK UINT8_C(0x10)
#define BME680_MODE_MSK UINT8_C(0x03)
#define BME680_RHRANGE_MSK UINT8_C(0x30)
#define BME680_RSERROR_MSK UINT8_C(0xf0)
#define BME680_NEW_DATA_MSK UINT8_C(0x80)
#define BME680_GAS_INDEX_MSK UINT8_C(0x0f)
#define BME680_GAS_RANGE_MSK UINT8_C(0x0f)
#define BME680_GASM_VALID_MSK UINT8_C(0x20)
#define BME680_HEAT_STAB_MSK UINT8_C(0x10)
#define BME680_MEM_PAGE_MSK UINT8_C(0x10)
#define BME680_SPI_RD_MSK UINT8_C(0x80)
#define BME680_SPI_WR_MSK UINT8_C(0x7f)
#define BME680_BIT_H1_DATA_MSK UINT8_C(0x0F)
/** Bit position definitions for sensor settings */
#define BME680_GAS_MEAS_POS UINT8_C(4)
#define BME680_FILTER_POS UINT8_C(2)
#define BME680_OST_POS UINT8_C(5)
#define BME680_OSP_POS UINT8_C(2)
#define BME680_RUN_GAS_POS UINT8_C(4)
/** Array Index to Field data mapping for Calibration Data*/
#define BME680_T2_LSB_REG (1)
#define BME680_T2_MSB_REG (2)
#define BME680_T3_REG (3)
#define BME680_P1_LSB_REG (5)
#define BME680_P1_MSB_REG (6)
#define BME680_P2_LSB_REG (7)
#define BME680_P2_MSB_REG (8)
#define BME680_P3_REG (9)
#define BME680_P4_LSB_REG (11)
#define BME680_P4_MSB_REG (12)
#define BME680_P5_LSB_REG (13)
#define BME680_P5_MSB_REG (14)
#define BME680_P7_REG (15)
#define BME680_P6_REG (16)
#define BME680_P8_LSB_REG (19)
#define BME680_P8_MSB_REG (20)
#define BME680_P9_LSB_REG (21)
#define BME680_P9_MSB_REG (22)
#define BME680_P10_REG (23)
#define BME680_H2_MSB_REG (25)
#define BME680_H2_LSB_REG (26)
#define BME680_H1_LSB_REG (26)
#define BME680_H1_MSB_REG (27)
#define BME680_H3_REG (28)
#define BME680_H4_REG (29)
#define BME680_H5_REG (30)
#define BME680_H6_REG (31)
#define BME680_H7_REG (32)
#define BME680_T1_LSB_REG (33)
#define BME680_T1_MSB_REG (34)
#define BME680_GH2_LSB_REG (35)
#define BME680_GH2_MSB_REG (36)
#define BME680_GH1_REG (37)
#define BME680_GH3_REG (38)
/** BME680 register buffer index settings*/
#define BME680_REG_FILTER_INDEX UINT8_C(5)
#define BME680_REG_TEMP_INDEX UINT8_C(4)
#define BME680_REG_PRES_INDEX UINT8_C(4)
#define BME680_REG_HUM_INDEX UINT8_C(2)
#define BME680_REG_NBCONV_INDEX UINT8_C(1)
#define BME680_REG_RUN_GAS_INDEX UINT8_C(1)
#define BME680_REG_HCTRL_INDEX UINT8_C(0)
/** Macro to combine two 8 bit data's to form a 16 bit data */
#define BME680_CONCAT_BYTES(msb, lsb) (((uint16_t)msb << 8) | (uint16_t)lsb)
/** Macro to SET and GET BITS of a register */
#define BME680_SET_BITS(reg_data, bitname, data) \
((reg_data & ~(bitname##_MSK)) | \
((data << bitname##_POS) & bitname##_MSK))
#define BME680_GET_BITS(reg_data, bitname) ((reg_data & (bitname##_MSK)) >> \
(bitname##_POS))
/** Macro variant to handle the bitname position if it is zero */
#define BME680_SET_BITS_POS_0(reg_data, bitname, data) \
((reg_data & ~(bitname##_MSK)) | \
(data & bitname##_MSK))
#define BME680_GET_BITS_POS_0(reg_data, bitname) (reg_data & (bitname##_MSK))
/** Type definitions */
/*
* Generic communication function pointer
* @param[in] dev_id: Place holder to store the id of the device structure
* Can be used to store the index of the Chip select or
* I2C address of the device.
* @param[in] reg_addr: Used to select the register the where data needs to
* be read from or written to.
* @param[in/out] reg_data: Data array to read/write
* @param[in] len: Length of the data array
*/
typedef int8_t (*bme680_com_fptr_t)(uint8_t dev_id, uint8_t reg_addr, uint8_t *data, uint16_t len);
/*
* Delay function pointer
* @param[in] period: Time period in milliseconds
*/
typedef void (*bme680_delay_fptr_t)(uint32_t period);
/*!
* @brief Interface selection Enumerations
*/
enum bme680_intf {
/*! SPI interface */
BME680_SPI_INTF,
/*! I2C interface */
BME680_I2C_INTF
};
/* structure definitions */
/*!
* @brief Sensor field data structure
*/
struct bme680_field_data {
/*! Contains new_data, gasm_valid & heat_stab */
uint8_t status;
/*! The index of the heater profile used */
uint8_t gas_index;
/*! Measurement index to track order */
uint8_t meas_index;
/*! Temperature in degree celsius x100 */
int16_t temperature;
/*! Pressure in Pascal */
uint32_t pressure;
/*! Humidity in % relative humidity x1000 */
uint32_t humidity;
/*! Gas resistance in Ohms */
uint32_t gas_resistance;
};
/*!
* @brief Structure to hold the Calibration data
*/
struct bme680_calib_data {
/*! Variable to store calibrated humidity data */
uint16_t par_h1;
/*! Variable to store calibrated humidity data */
uint16_t par_h2;
/*! Variable to store calibrated humidity data */
int8_t par_h3;
/*! Variable to store calibrated humidity data */
int8_t par_h4;
/*! Variable to store calibrated humidity data */
int8_t par_h5;
/*! Variable to store calibrated humidity data */
uint8_t par_h6;
/*! Variable to store calibrated humidity data */
int8_t par_h7;
/*! Variable to store calibrated gas data */
int8_t par_gh1;
/*! Variable to store calibrated gas data */
int16_t par_gh2;
/*! Variable to store calibrated gas data */
int8_t par_gh3;
/*! Variable to store calibrated temperature data */
uint16_t par_t1;
/*! Variable to store calibrated temperature data */
int16_t par_t2;
/*! Variable to store calibrated temperature data */
int8_t par_t3;
/*! Variable to store calibrated pressure data */
uint16_t par_p1;
/*! Variable to store calibrated pressure data */
int16_t par_p2;
/*! Variable to store calibrated pressure data */
int8_t par_p3;
/*! Variable to store calibrated pressure data */
int16_t par_p4;
/*! Variable to store calibrated pressure data */
int16_t par_p5;
/*! Variable to store calibrated pressure data */
int8_t par_p6;
/*! Variable to store calibrated pressure data */
int8_t par_p7;
/*! Variable to store calibrated pressure data */
int16_t par_p8;
/*! Variable to store calibrated pressure data */
int16_t par_p9;
/*! Variable to store calibrated pressure data */
uint8_t par_p10;
/*! Variable to store t_fine size */
int32_t t_fine;
/*! Variable to store heater resistance range */
uint8_t res_heat_range;
/*! Variable to store heater resistance value */
int8_t res_heat_val;
/*! Variable to store error range */
int8_t range_sw_err;
};
/*!
* @brief BME680 sensor settings structure which comprises of ODR,
* over-sampling and filter settings.
*/
struct bme680_tph_sett {
/*! Humidity oversampling */
uint8_t os_hum;
/*! Temperature oversampling */
uint8_t os_temp;
/*! Pressure oversampling */
uint8_t os_pres;
/*! Filter coefficient */
uint8_t filter;
};
/*!
* @brief BME680 gas sensor which comprises of gas settings
* and status parameters
*/
struct bme680_gas_sett {
/*! Variable to store nb conversion */
uint8_t nb_conv;
/*! Variable to store heater control */
uint8_t heatr_ctrl;
/*! Run gas enable value */
uint8_t run_gas;
/*! Pointer to store heater temperature */
uint16_t heatr_temp;
/*! Pointer to store duration profile */
uint16_t heatr_dur;
};
/*!
* @brief BME680 device structure
*/
struct bme680_dev {
/*! Chip Id */
uint8_t chip_id;
/*! Device Id */
uint8_t dev_id;
/*! SPI/I2C interface */
enum bme680_intf intf;
/*! Memory page used */
uint8_t mem_page;
/*! Ambient temperature in Degree C*/
int8_t amb_temp;
/*! Sensor calibration data */
struct bme680_calib_data calib;
/*! Sensor settings */
struct bme680_tph_sett tph_sett;
/*! Gas Sensor settings */
struct bme680_gas_sett gas_sett;
/*! Sensor power modes */
uint8_t power_mode;
/*! New sensor fields */
uint8_t new_fields;
/*! Store the info messages */
uint8_t info_msg;
/*! Burst read structure */
bme680_com_fptr_t read;
/*! Burst write structure */
bme680_com_fptr_t write;
/*! Delay in ms */
bme680_delay_fptr_t delay_ms;
/*! Communication function result */
int8_t com_rslt;
};
#endif /* BME680_DEFS_H_ */
/** @}*/
/** @}*/

@ -239,6 +239,7 @@
*/
/* Includes ------------------------------------------------------------------*/