2021-03-12 22:21:45 +00:00
# include <logger.h>
2021-01-04 22:10:23 +00:00
# include "Task.h"
2021-03-12 22:21:45 +00:00
# include "TaskAprsIs.h"
# include "project_configuration.h"
2021-01-03 21:43:35 +00:00
2021-05-16 06:40:44 +00:00
AprsIsTask : : AprsIsTask ( TaskQueue < std : : shared_ptr < APRSMessage > > & toAprsIs ) : Task ( TASK_APRS_IS , TaskAprsIs ) , _toAprsIs ( toAprsIs ) {
2021-01-03 21:43:35 +00:00
}
2021-03-12 22:21:45 +00:00
AprsIsTask : : ~ AprsIsTask ( ) {
2021-01-03 21:43:35 +00:00
}
2021-05-18 22:44:37 +00:00
bool AprsIsTask : : setup ( System & system ) {
2021-05-21 20:41:30 +00:00
_aprs_is . setup ( system . getUserConfig ( ) - > callsign , system . getUserConfig ( ) - > aprs_is . passcode , " ESP32-APRS-IS " , " 0.2 " ) ;
2021-03-12 22:21:45 +00:00
return true ;
2021-01-03 21:43:35 +00:00
}
2021-05-18 22:44:37 +00:00
bool AprsIsTask : : loop ( System & system ) {
if ( ! system . isWifiEthConnected ( ) ) {
2021-03-27 21:02:43 +00:00
return false ;
}
2021-05-21 20:41:30 +00:00
if ( ! _aprs_is . connected ( ) ) {
2021-03-21 21:29:31 +00:00
if ( ! connect ( system ) ) {
2021-03-12 22:21:45 +00:00
_stateInfo = " not connected " ;
_state = Error ;
return false ;
}
_stateInfo = " connected " ;
_state = Okay ;
return false ;
}
2021-05-21 20:41:30 +00:00
_aprs_is . getAPRSMessage ( ) ;
2021-01-03 21:43:35 +00:00
2021-05-16 01:52:28 +00:00
if ( ! _toAprsIs . empty ( ) ) {
std : : shared_ptr < APRSMessage > msg = _toAprsIs . getElement ( ) ;
2021-05-21 20:41:30 +00:00
_aprs_is . sendMessage ( msg ) ;
2021-03-12 22:21:45 +00:00
}
2021-01-04 22:10:23 +00:00
2021-03-12 22:21:45 +00:00
return true ;
2021-01-03 21:43:35 +00:00
}
2022-03-19 20:57:09 +00:00
bool AprsIsTask : : connect ( System & system ) {
2022-03-20 09:56:06 +00:00
system . getLogger ( ) . log ( logging : : LoggerLevel : : LOGGER_LEVEL_INFO , getName ( ) , " connecting to APRS-IS server: %s on port: %d " , system . getUserConfig ( ) - > aprs_is . server . c_str ( ) , system . getUserConfig ( ) - > aprs_is . port ) ;
2022-03-19 22:51:18 +00:00
APRS_IS : : ConnectionStatus status = _aprs_is . connect ( system . getUserConfig ( ) - > aprs_is . server , system . getUserConfig ( ) - > aprs_is . port ) ;
if ( status = = APRS_IS : : ERROR_CONNECTION ) {
system . getLogger ( ) . log ( logging : : LoggerLevel : : LOGGER_LEVEL_ERROR , getName ( ) , " Something went wrong on connecting! Is the server reachable? " ) ;
system . getLogger ( ) . log ( logging : : LoggerLevel : : LOGGER_LEVEL_ERROR , getName ( ) , " Connection failed. " ) ;
return false ;
} else if ( status = = APRS_IS : : ERROR_PASSCODE ) {
system . getLogger ( ) . log ( logging : : LoggerLevel : : LOGGER_LEVEL_ERROR , getName ( ) , " User can not be verified with passcode! " ) ;
2022-03-19 20:57:09 +00:00
system . getLogger ( ) . log ( logging : : LoggerLevel : : LOGGER_LEVEL_ERROR , getName ( ) , " Connection failed. " ) ;
2021-03-12 22:21:45 +00:00
return false ;
}
2022-03-19 20:57:09 +00:00
system . getLogger ( ) . log ( logging : : LoggerLevel : : LOGGER_LEVEL_INFO , getName ( ) , " Connected to APRS-IS server! " ) ;
2021-03-12 22:21:45 +00:00
return true ;
2021-01-03 21:43:35 +00:00
}