aprsis beacon and closing connection of failed login attempt

pull/7/head
Mateusz Lubecki 2022-03-06 19:34:02 +01:00
rodzic 1b25b294e6
commit 21db804d19
4 zmienionych plików z 40 dodań i 6 usunięć

Wyświetl plik

@ -14,10 +14,11 @@
extern uint8_t aprsis_connected;
void aprsis_init(srl_context_t * context, gsm_sim800_state_t * gsm_modem_state, char * callsign, uint8_t ssid, uint32_t passcode);
void aprsis_connect_and_login(char * address, uint8_t address_ln, uint16_t port);
uint8_t aprsis_connect_and_login(char * address, uint8_t address_ln, uint16_t port);
void aprsis_receive_callback(srl_context_t* srl_context);
void aprsis_check_alive(void);
void aprsis_send_wx_frame(uint16_t windspeed, uint16_t windgusts, uint16_t winddirection, float temperatura, float cisnienie, uint8_t humidity);
void aprsis_send_beacon(uint8_t async);
#endif /* APRSIS_H_ */

Wyświetl plik

@ -5,8 +5,8 @@
#include "drivers/serial.h"
#include "config_data.h"
#define SW_VER "EA04"
#define SW_DATE "20022022"
#define SW_VER "EA05"
#define SW_DATE "06032022"
#define SYSTICK_TICKS_PER_SECONDS 100
#define SYSTICK_TICKS_PERIOD 10

Wyświetl plik

@ -67,10 +67,12 @@ void aprsis_init(srl_context_t * context, gsm_sim800_state_t * gsm_modem_state,
}
void aprsis_connect_and_login(char * address, uint8_t address_ln, uint16_t port) {
uint8_t aprsis_connect_and_login(char * address, uint8_t address_ln, uint16_t port) {
uint8_t out = 2;
if (aprsis_serial_port == 0 || aprsis_gsm_modem_state == 0 || aprsis_logged == 1) {
return;
return 1;
}
if (*aprsis_gsm_modem_state == SIM800_ALIVE) {
@ -122,13 +124,23 @@ void aprsis_connect_and_login(char * address, uint8_t address_ln, uint16_t port)
// wait for consecutive data
gsm_sim800_tcpip_async_receive(aprsis_serial_port, aprsis_gsm_modem_state, 0, 61000, aprsis_receive_callback);
out = 0;
}
}
}
else {
gsm_sim800_tcpip_close(aprsis_serial_port, aprsis_gsm_modem_state);
}
}
else {
gsm_sim800_tcpip_close(aprsis_serial_port, aprsis_gsm_modem_state);
}
}
}
return out;
}
void aprsis_receive_callback(srl_context_t* srl_context) {
@ -203,3 +215,20 @@ void aprsis_send_wx_frame(uint16_t windspeed, uint16_t windgusts, uint16_t windd
gsm_sim800_tcpip_async_write((uint8_t *)aprsis_packet_tx_buffer, aprsis_packet_tx_message_size, aprsis_serial_port, aprsis_gsm_modem_state);
}
void aprsis_send_beacon(uint8_t async) {
if (aprsis_logged == 0) {
return;
}
aprsis_packet_tx_message_size = sprintf(aprsis_packet_tx_buffer, "%s>AKLPRZ,qAR,%s:=%s%c%c%s%c%c %s\r\n", aprsis_callsign_with_ssid, aprsis_callsign_with_ssid, main_string_latitude, main_config_data_basic->n_or_s, main_symbol_f, main_string_longitude, main_config_data_basic->e_or_w, main_symbol_s, main_config_data_basic->comment);
aprsis_packet_tx_buffer[aprsis_packet_tx_message_size] = 0;
if (async > 0) {
gsm_sim800_tcpip_async_write((uint8_t *)aprsis_packet_tx_buffer, aprsis_packet_tx_message_size, aprsis_serial_port, aprsis_gsm_modem_state);
}
else {
gsm_sim800_tcpip_write((uint8_t *)aprsis_packet_tx_buffer, aprsis_packet_tx_message_size, aprsis_serial_port, aprsis_gsm_modem_state);
}
}

Wyświetl plik

@ -1201,7 +1201,11 @@ int main(int argc, char* argv[]){
}
if (main_config_data_mode->gsm == 1) {
aprsis_connect_and_login(TEST_IP, strlen(TEST_IP), 14580);
retval = aprsis_connect_and_login(TEST_IP, strlen(TEST_IP), 14580);
if (retval == 0) {
aprsis_send_beacon(0);
}
}
#endif