Files @ f2c57ce0cd7b
Branch filter:

Location: windsonde/Libraries/aprs/aprs.c - annotation

ethanzonca
Refactor old pressure code and make optional. Fix high power output due to multiple Si446x power definitions
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
0f04af7169be
7ff1c5a59571
0f04af7169be
0f04af7169be
0f04af7169be
67d1f9d02048
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
7ff1c5a59571
7ff1c5a59571
7ff1c5a59571
7ff1c5a59571
a675e30661bd
a675e30661bd
7ff1c5a59571
0f04af7169be
a675e30661bd
a675e30661bd
a675e30661bd
a675e30661bd
a675e30661bd
a675e30661bd
a675e30661bd
0f04af7169be
a675e30661bd
a675e30661bd
a675e30661bd
0f04af7169be
f2c57ce0cd7b
f2c57ce0cd7b
a675e30661bd
f2c57ce0cd7b
a675e30661bd
0f04af7169be
a675e30661bd
55ef914749dc
55ef914749dc
55ef914749dc
55ef914749dc
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
f2c57ce0cd7b
55ef914749dc
a675e30661bd
f2c57ce0cd7b
a675e30661bd
a675e30661bd
7ff1c5a59571
7ff1c5a59571
0f04af7169be
041562172b4a
041562172b4a
041562172b4a
041562172b4a
67d1f9d02048
67d1f9d02048
67d1f9d02048
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
0f04af7169be
/*
 * FeatherHAB 
 *
 * This file is part of FeatherHAB.
 *
 * FeatherHab is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * FeatherHab is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with FeatherHAB. If not, see <http://www.gnu.org/licenses/>.
 * 
 * Ethan Zonca
 *
 */

#include <string.h>
#include <stdlib.h>

#include "config.h"
#ifdef LPS25H
	#include "lps25h.h"
#else
	#include "bme280.h"
#endif
#include "aprs.h"
#include "gps.h"
//#include "gps.h"
//#include "adc.h"
#include "ax25.h"
#include "system/adc.h"


int32_t meters_to_feet(int32_t m)
{
  // 10000 ft = 3048 m
  return (float)m / 0.3048;
}

void aprs_send(void)
{
  struct s_address addresses[] = { 
    {D_CALLSIGN, D_CALLSIGN_ID},  // Destination callsign
    {"", S_CALLSIGN_ID},  // Source callsign (-11 = balloon, -9 = car)
		//{S_CALLSIGN, S_CALLSIGN_ID},
#ifdef DIGI_PATH1
    {DIGI_PATH1, DIGI_PATH1_TTL}, // Digi1 (first digi in the chain)
#endif
#ifdef DIGI_PATH2
    {DIGI_PATH2, DIGI_PATH2_TTL}, // Digi2 (second digi in the chain)
#endif
  };

  strncpy(addresses[1].callsign, S_CALLSIGN, 7);
  
  // emz: modified this to get the size of the first address rather than the size of the struct itself, which fails
  ax25_send_header(addresses, sizeof(addresses)/sizeof(addresses[0]));
  ax25_send_byte(',');

  char tmpBuffer[128];
  tmpBuffer[0] = ',';
  tmpBuffer[1] = '\0';

  // Latitude
  snprintf(tmpBuffer, 128, "%ld,", gps_getdata()->latitude);
  ax25_send_string(tmpBuffer);
  
  // Longitude
  snprintf(tmpBuffer, 128, "%ld,", gps_getdata()->longitude);
  ax25_send_string(tmpBuffer);

  // Speed
  snprintf(tmpBuffer, 128, "%d,", gps_getdata()->speed);
  ax25_send_string(tmpBuffer);

  // Altitude
  snprintf(tmpBuffer, 128, "%d,", gps_getdata()->altitude);
  ax25_send_string(tmpBuffer);


#ifdef LPS25H
  // Pressure
  snprintf(tmpBuffer, 128, "%d,", lps25h_get_pressure());
  ax25_send_string(tmpBuffer);
  
  // Temperature
  snprintf(tmpBuffer, 128, "%d,", bme280_get_temperature());
  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);
  ax25_send_string(tmpBuffer);

  // Heading
  snprintf(tmpBuffer, 128, "%u,", gps_getdata()->heading);
  ax25_send_string(tmpBuffer);

  // Vbatt
  snprintf(tmpBuffer, 128, "%u,", adc_get_vbatt());
  ax25_send_string(tmpBuffer);

  ax25_send_footer();
  ax25_flush_frame();
}

// vim:softtabstop=4 shiftwidth=4 expandtab