- Fixed critical bug in TX20 anemometer driver , which caused gusts to be calculated wrong

- Button will trigger WX packets instead of Beaons if _METEO is triggered
pull/2/head
Mateusz Lubecki 2019-09-11 23:30:29 +02:00
rodzic cbda441516
commit 62ca29e957
4 zmienionych plików z 9 dodań i 7 usunięć

Wyświetl plik

@ -3,8 +3,8 @@
#include "aprs/ax25.h"
#define SW_VER "DE01"
#define SW_DATE "08092019"
#define SW_VER "DE02"
#define SW_DATE "11092019"
#define SYSTICK_TICKS_PER_SECONDS 100
#define SYSTICK_TICKS_PERIOD 10

Wyświetl plik

@ -56,7 +56,7 @@
//#define _BCN_ON_STARTUP
#define _WX_INTERVAL 3 // WX packet interval in minutes
#define _BCN_INTERVAL 15 // Own beacon interval in minutes
#define _BCN_INTERVAL 17 // Own beacon interval in minutes
//#define _PTT_PUSHPULL // Uncomment this if you want PTT line to work as Push-pull instead of Open Drain
#define _SERIAL_BAUDRATE 9600

Wyświetl plik

@ -304,8 +304,12 @@ main(int argc, char* argv[])
while(main_ax25.dcd == true);
#ifndef _METEO
//telemetry_send_values(rx10m, tx10m, digi10m, kiss10m, rte_wx_temperature_dallas_valid, rte_wx_dallas_qf, rte_wx_ms5611_qf, rte_wx_dht.qf);
SendOwnBeacon();
#else
SendWXFrame(&VNAME, rte_wx_temperature_dallas_valid, rte_wx_pressure_valid);
#endif
}
button_inhibit = 1;

Wyświetl plik

@ -18,7 +18,7 @@ void SendWXFrame(Anemometer* input, float temperatura, unsigned cisnienie) {
unsigned char wind_speed_mph = 0, wind_gusts_mph = 0, d = 0;
for(d = 1; d <= TX20_BUFF_LN - 1 ; d++)
if (VNAME.HistoryAVG[d].WindSpeed > max_wind_speed)
max_wind_speed = VNAME.HistoryAVG[d].WindSpeed * 0.1f; // Wyszukiwane najwiekszej wartosci
max_wind_speed = VNAME.HistoryAVG[d].WindSpeed; // Wyszukiwane najwiekszej wartosci
temp = input->HistoryAVG[0].WindSpeed;
temp /= 0.45; // Konwersja na mile na godzine
max_wind_speed /= 0.45;
@ -42,11 +42,9 @@ void SendWXFrame(Anemometer* input, float temperatura, unsigned cisnienie) {
}
main_own_aprs_msg_len = sprintf(main_own_aprs_msg, "!%07.2f%c%c%08.2f%c%c%03d/%03dg%03dt%03dr...p...P...b%05d", _LAT, _LATNS, '/', _LON, _LONWE, '_', /* kierunek */(short)(input->HistoryAVG[0].WindDirX), /* predkosc*/(int)wind_speed_mph, /* porywy */(short)(wind_gusts_mph), /*temperatura */(short)(temperatura*1.8+32), cisnienie *10);
// aprs_msg_len = sprintf(aprs_msg, "%s%03d/%03dg%03dt%03dr%03dp%03dP%03db%04d ~", "!5001.45N/02159.66E_", /* kierunek */90, /* predkosc*/(int)(2.1 * 2.23698), /* porywy */(short)(5.7 * 2.23698), /*temperatura */(short)(23 * 1.8 + 32), 0, 0, 0, 10130);
main_own_aprs_msg[main_own_aprs_msg_len] = 0;
ax25_sendVia(&main_ax25, main_own_path, main_own_path_ln, main_own_aprs_msg, main_own_aprs_msg_len);
after_tx_lock = 1;
// for(jj = 0; jj <= 0x19FFFF; jj++);
while(main_ax25.dcd == true);
afsk_txStart(&main_afsk);
@ -60,7 +58,7 @@ void SendWXFrameToBuffer(Anemometer* input, float temperatura, unsigned cisnieni
unsigned char wind_speed_mph = 0, wind_gusts_mph = 0, d = 0;
for(d = 1; d <= TX20_BUFF_LN - 1 ; d++)
if (VNAME.HistoryAVG[d].WindSpeed > max_wind_speed)
max_wind_speed = VNAME.HistoryAVG[d].WindSpeed * 0.1f; // Wyszukiwane najwiekszej wartosci
max_wind_speed = VNAME.HistoryAVG[d].WindSpeed; // Wyszukiwane najwiekszej wartosci
temp = input->HistoryAVG[0].WindSpeed;
temp /= 0.45; // Konwersja na mile na godzine
max_wind_speed /= 0.45;