Changeset - f2c57ce0cd7b
[Not reviewed]
default
2 3 2
Ethan Zonca (ethanzonca) - 9 years ago 2017-01-24 10:20:42
e@ethanzonca.com
Refactor old pressure code and make optional. Fix high power output due to multiple Si446x power definitions
5 files changed with 59 insertions and 26 deletions:
0 comments (0 inline, 0 general)
Include/config.h
Show inline comments
 
@@ -13,12 +13,14 @@
 
// Transmit power (0-0x7F, 0mW - 40mw?)
 
#define SI446x_POWER 0x02
 
 
#define TUNE_FREQUENCY 433000000UL
 
#define TUNE_FREQUENCY 433500000UL
 
 
// Internal macros
 
#define hal_init HAL_Init
 
 
 
// Uncomment if using legacy LPS25h pressure sensor
 
//#define LPS25H
 
 
 
// --------------------------------------------------------------------------
 
@@ -44,8 +46,6 @@
 
// APRS config (aprs.c)
 
// --------------------------------------------------------------------------
 
 
#define SI446x_POWER 0x7f
 
 
// Set your callsign and SSID here. Common values for the SSID are
 
// (from http://zlhams.wikidot.com/aprs-ssidguide):
 
//
Include/lps25h.h
Show inline comments
 
file renamed from Include/pressure.h to Include/lps25h.h
 
#ifndef PRESSURE_H
 
#define PRESSURE_H
 
#ifndef LPS25H_H
 
#define LPS25H_H
 
 
#include "stm32f0xx_hal.h"
 
 
@@ -23,14 +23,14 @@
 
 
#define PRESSURE_CTRL1_PWRUP 0b10000000
 
 
void pressure_init(void);
 
void pressure_read(void);
 
void pressure_updatevalues(void);
 
void lps25h_init(void);
 
void lps25h_read(void);
 
void lps25h_updatevalues(void);
 
 
int32_t pressure_gettemp(void);
 
int32_t pressure_getpressure(void);
 
int32_t lps25h_get_temperature(void);
 
int32_t lps25h_get_pressure(void);
 
 
I2C_HandleTypeDef* pressure_get_i2c_handle(void);
 
I2C_HandleTypeDef* lps25h_get_i2c_handle(void);
 
#endif
 
 
// vim:softtabstop=4 shiftwidth=4 expandtab
Libraries/aprs/aprs.c
Show inline comments
 
@@ -24,8 +24,11 @@
 
#include <stdlib.h>
 

	
 
#include "config.h"
 
//#include "pressure.h"
 
#include "bme280.h"
 
#ifdef LPS25H
 
	#include "lps25h.h"
 
#else
 
	#include "bme280.h"
 
#endif
 
#include "aprs.h"
 
#include "gps.h"
 
//#include "gps.h"
 
@@ -80,8 +83,10 @@ void aprs_send(void)
 
  snprintf(tmpBuffer, 128, "%d,", gps_getdata()->altitude);
 
  ax25_send_string(tmpBuffer);
 

	
 

	
 
#ifdef LPS25H
 
  // Pressure
 
  snprintf(tmpBuffer, 128, "%d,", bme280_get_pressure());
 
  snprintf(tmpBuffer, 128, "%d,", lps25h_get_pressure());
 
  ax25_send_string(tmpBuffer);
 
  
 
  // Temperature
 
@@ -89,8 +94,22 @@ void aprs_send(void)
 
  ax25_send_string(tmpBuffer);
 

	
 
  // Humidity
 
  snprintf(tmpBuffer, 128, "0,");
 
  ax25_send_string(tmpBuffer);
 

	
 
#else
 
  // Pressure
 
  snprintf(tmpBuffer, 128, "%d,", bme280_get_pressure());
 
  ax25_send_string(tmpBuffer);
 

	
 
  // Temperature
 
  snprintf(tmpBuffer, 128, "%d,", bme280_get_temperature());
 
  ax25_send_string(tmpBuffer);
 

	
 
  // Humidity
 
  snprintf(tmpBuffer, 128, "%d,", bme280_get_humidity());
 
  ax25_send_string(tmpBuffer);
 
#endif
 

	
 
  // HDOP
 
  snprintf(tmpBuffer, 128, "%u,", gps_getdata()->pdop);
Source/lps25h.c
Show inline comments
 
file renamed from Source/pressure.c to Source/lps25h.c
 
@@ -2,7 +2,7 @@
 
// Sensors: Reads pressure and e-compass sensors over I2C and stores readings in queryable internal data structures
 
//
 
 
#include "pressure.h"
 
#include "lps25h.h"
 
#include "stm32f0xx_hal.h"
 
 
 
@@ -20,7 +20,7 @@ static uint8_t sensors_pressure_freshdat
 
 
 
// Initialize pressure sensor and E-compass
 
void pressure_init(void)
 
void lps25h_init(void)
 
{
 
	GPIO_InitTypeDef GPIO_InitStruct;
 
 
@@ -63,7 +63,7 @@ void pressure_init(void)
 
 
 
// Initiate interrupt-based read of engineering sensors
 
void pressure_read(void)
 
void lps25h_read(void)
 
{
 
	// Start reading pressure sensor
 
	HAL_Delay(10);
 
@@ -88,21 +88,21 @@ void pressure_read(void)
 
 
 
// Get current temperature in Celsius
 
int32_t pressure_gettemp(void)
 
int32_t lps25h_get_temperature(void)
 
{
 
	return temp_celsius;
 
}
 
 
 
// Get current pressure in hPa
 
int32_t pressure_getpressure(void)
 
int32_t lps25h_get_pressure(void)
 
{
 
	return pressure_hPa;
 
}
 
 
 
 
inline I2C_HandleTypeDef* pressure_get_i2c_handle(void)
 
inline I2C_HandleTypeDef* lps25h_get_i2c_handle(void)
 
{
 
	return &hi2c1;
 
}
Source/main.c
Show inline comments
 
@@ -24,8 +24,12 @@
 
 
#include "config.h"
 
#include "error.h"
 
//#include "pressure.h"
 
#include "bme280.h"
 
 
#ifdef LPS25H
 
	#include "lps25h.h"
 
#else
 
	#include "bme280.h"
 
#endif
 
#include "gps.h"
 
 
#include "system/gpio.h"
 
@@ -49,8 +53,13 @@ int main(void)
 
  si446x_init();
 
  si446x_init();
 
  gps_poweron();
 
//  pressure_init();
 
  bme280_init();
 
 
  #ifdef LPS25H
 
    lps25h_init();
 
  #else
 
    bme280_init();
 
  #endif
 
 
  // Software timers
 
  uint32_t last_transmission = HAL_GetTick();
 
  uint32_t last_led = HAL_GetTick();
 
@@ -61,8 +70,13 @@ int main(void)
 
	  if(HAL_GetTick() - last_transmission > 700)
 
	  {
 
		  gps_update_data(); // Will always return at 1hz rate (default measurement rate)
 
		  //pressure_read();
 
		  bme280_update();
 
 
		  #ifdef LPS25H
 
		  	  lps25h_read();
 
		  #else
 
		  	  bme280_update();
 
		  #endif
 
 
		  while(afsk_busy()); // ensure previous message finished
 
		  aprs_send();
 
0 comments (0 inline, 0 general)