Merge pull request #13 from Qyon/master_sq9mdd

TNC self telemetry ENABLE_TNC_SELF_TELEMETRY
pull/14/head
Rysiek Labus 2021-02-15 23:23:08 +01:00 committed by GitHub
commit e65ab36e26
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 50 additions and 9 deletions

View File

@ -71,6 +71,10 @@ String LatShown="";
String LongFixed=""; String LongFixed="";
String LatFixed=""; String LatFixed="";
#if defined(ENABLE_TNC_SELF_TELEMETRY) && defined(KISS_PROTOCOL)
time_t nextTelemetryFrame;
#endif
//byte arrays //byte arrays
byte lora_TXBUFF[BG_RF95_MAX_MESSAGE_LEN]; //buffer for packet to send byte lora_TXBUFF[BG_RF95_MAX_MESSAGE_LEN]; //buffer for packet to send
byte lora_RXBUFF[BG_RF95_MAX_MESSAGE_LEN]; //buffer for packet to send byte lora_RXBUFF[BG_RF95_MAX_MESSAGE_LEN]; //buffer for packet to send
@ -163,12 +167,8 @@ void prepareAPRSFrame(){
//} //}
outString = ""; outString = "";
for (i=0; i<Tcall.length();++i){ // remove unneeded "spaces" from callsign field outString += Tcall;
if (Tcall.charAt(i) != ' ') {
outString += Tcall.charAt(i);
}
}
// outString = (Tcall);
#ifdef DIGI_PATH #ifdef DIGI_PATH
outString += ">APLM0," + relay_path + ":!"; outString += ">APLM0," + relay_path + ":!";
#elif #elif
@ -328,6 +328,39 @@ void sendToTNC(const String& TNC2FormatedFrame) {
} }
#endif #endif
String prepareCallsign(const String& callsign){
String tmpString = "";
for (int i=0; i<callsign.length();++i){ // remove unneeded "spaces" from callsign field
if (callsign.charAt(i) != ' ') {
tmpString += callsign.charAt(i);
}
}
return tmpString;
}
#if defined(ENABLE_TNC_SELF_TELEMETRY) && defined(KISS_PROTOCOL)
void sendTelemetryFrame() {
#ifdef T_BEAM_V1_0
uint8_t b_volt = (axp.getBattVoltage() - 3000) / 5.1;
uint8_t b_in_c = (axp.getBattChargeCurrent()) / 10;
uint8_t b_out_c = (axp.getBattDischargeCurrent()) / 10;
uint8_t ac_volt = (axp.getVbusVoltage() - 3000) / 28;
uint8_t ac_c = (axp.getVbusCurrent()) / 10;
String telemetryParamsNames = String(":") + Tcall + ":PARM.B Volt,B In,B Out,AC V,AC C";
String telemetryUnitNames = String(":") + Tcall + ":UNIT.mV,mA,mA,mV,mA";
String telemetryEquations = String(":") + Tcall + ":EQNS.0,5.1,3000,0,10,0,0,10,0,0,28,3000,0,10,0";
String telemetryData = String("T#MIC") + String(b_volt) + ","+ String(b_in_c) + ","+ String(b_out_c) + ","+ String(ac_volt) + ","+ String(ac_c) + ",00000000";
String telemetryBase = "";
telemetryBase += Tcall + ">APLM0" + ":";
sendToTNC(telemetryBase + telemetryParamsNames);
sendToTNC(telemetryBase + telemetryUnitNames);
sendToTNC(telemetryBase + telemetryEquations);
sendToTNC(telemetryBase + telemetryData);
#else
#endif
}
#endif
// + SETUP --------------------------------------------------------------+// // + SETUP --------------------------------------------------------------+//
@ -361,7 +394,7 @@ void setup(){
} }
writedisplaytext("LoRa-APRS","","Init:","Display OK!","","",1000); writedisplaytext("LoRa-APRS","","Init:","Display OK!","","",1000);
Tcall = CALLSIGN; Tcall = prepareCallsign(String(CALLSIGN));
relay_path = DIGI_PATH; relay_path = DIGI_PATH;
if (!rf95.init()) { if (!rf95.init()) {
@ -580,6 +613,12 @@ void loop() {
} }
} }
} }
#if defined(ENABLE_TNC_SELF_TELEMETRY) && defined(KISS_PROTOCOL)
if (nextTelemetryFrame < millis()){
nextTelemetryFrame = millis() + TNC_SELF_TELEMETRY_INTERVAL;
sendTelemetryFrame();
}
#endif
#ifdef KISS_PROTOCOL #ifdef KISS_PROTOCOL
#ifdef KISS_DEBUG #ifdef KISS_DEBUG
static auto last_debug_send_time = millis(); static auto last_debug_send_time = millis();

View File

@ -24,10 +24,12 @@
//#define SHOW_GPS_DATA // uncomment to show on serial port, received data from GPS and debug information //#define SHOW_GPS_DATA // uncomment to show on serial port, received data from GPS and debug information
#define ENABLE_BLUETOOTH // bluetooth KISS interface enable #define ENABLE_BLUETOOTH // bluetooth KISS interface enable
//#define BLUETOOTH_PIN "0000" //#define BLUETOOTH_PIN "0000"
//#define KISS_DEBUG //#define ENABLE_TNC_SELF_TELEMETRY
//#define LOCAL_KISS_ECHO // echoing KISS frame back //#define LOCAL_KISS_ECHO // echoing KISS frame back
#define T_BEAM_V1_0 // if enabled t-beam v1.0 disabled t-beam V.0.7 #define T_BEAM_V1_0 // if enabled t-beam v1.0 disabled t-beam V.0.7
//#define KISS_DEBUG //#define KISS_DEBUG
#define MAX_TIME_TO_NEXT_TX 360000L // TRANSMIT INTERVAL set here MAXIMUM time in ms(!) for smart beaconing - minimum time is always 1 min = 60 secs = 60000L !!! #define MAX_TIME_TO_NEXT_TX 360000L // TRANSMIT INTERVAL set here MAXIMUM time in ms(!) for smart beaconing - minimum time is always 1 min = 60 secs = 60000L !!!
#define FIX_BEACON_INTERVAL 1800000L // Fixed beacon interwal (when GPS is disabled and FIXED_BEACON_EN is enabled) 30min default #define FIX_BEACON_INTERVAL 1800000L // Fixed beacon interwal (when GPS is disabled and FIXED_BEACON_EN is enabled) 30min default
#define TNC_SELF_TELEMETRY_INTERVAL (5*60*1000)