1
0
mirror of https://github.com/esphome/esphome.git synced 2025-09-28 08:02:23 +01:00

removed unnecessary parts of the code and moved DTE to the component

This commit is contained in:
Chelios
2024-10-03 08:16:14 +03:00
parent c4094618a3
commit e9c592d1ec
2 changed files with 24 additions and 40 deletions

View File

@@ -1,7 +1,6 @@
#include "esp_modem_c_api_types.h" #include "esp_modem_c_api_types.h"
#include "esp_netif_ppp.h" #include "esp_netif_ppp.h"
#include "cxx_include/esp_modem_api.hpp" #include "cxx_include/esp_modem_api.hpp"
#include "cxx_include/esp_modem_dce.hpp"
#include "modem_component.h" #include "modem_component.h"
#include "esphome/core/log.h" #include "esphome/core/log.h"
@@ -15,8 +14,6 @@
#include <lwip/dns.h> #include <lwip/dns.h>
#include "esp_event.h" #include "esp_event.h"
std::unique_ptr<esp_modem::DCE> dce{nullptr};
uint32_t time_info_print = 0; uint32_t time_info_print = 0;
uint32_t time_hard_reset_modem = 0; uint32_t time_hard_reset_modem = 0;
uint32_t time_check_rssi = 0; uint32_t time_check_rssi = 0;
@@ -86,48 +83,25 @@ void ModemComponent::setup() {
ESP_LOGD(TAG, "Initializing esp_modem"); ESP_LOGD(TAG, "Initializing esp_modem");
this->dte = esp_modem::create_uart_dte(&dte_config); this->dte = esp_modem::create_uart_dte(&dte_config);
dce = esp_modem::create_SIM800_dce(&dce_config, dte, this->modem_netif_); this->dce = esp_modem::create_SIM800_dce(&dce_config, dte, this->modem_netif_);
esp_netif_flags_t flags = esp_netif_get_flags(this->modem_netif_); esp_netif_flags_t flags = esp_netif_get_flags(this->modem_netif_);
this->started_ = true;
} }
void ModemComponent::loop() { void ModemComponent::loop() {
const uint32_t now = millis(); const uint32_t now = millis();
if (time_info_print < now) {
// ESP_LOGI(TAG, "voltage %dV.", get_modem_voltage()/1000);
ESP_LOGD(TAG, "esp_netif_is_netif_UP");
if (esp_netif_is_netif_up(this->modem_netif_)) {
ESP_LOGD(TAG, "esp_netif_is_netif_UP");
} else {
ESP_LOGD(TAG, "esp_netif_is_netif_DOWN");
}
time_info_print = now + 5000;
switch (this->state_) {
case ModemComponentState::STOPPED:
ESP_LOGD(TAG, "modem STOPPED");
break;
case ModemComponentState::CONNECTING:
ESP_LOGD(TAG, "modem CONNECTING");
break;
case ModemComponentState::CONNECTED:
dce->set_data();
ESP_LOGD(TAG, "modem CONNECTED");
break;
default:
break;
}
}
this->started_ = true;
switch (this->state_) { switch (this->state_) {
case ModemComponentState::STOPPED: case ModemComponentState::STOPPED:
if (time_check_rssi + TIME_TO_START_MODEM < now) { if (time_check_rssi + TIME_TO_START_MODEM < now) {
time_check_rssi = now; time_check_rssi = now;
// dce->set_command_mode(); // this->dce->set_command_mode();
if (get_rssi()) { if (get_rssi()) {
ESP_LOGD(TAG, "Starting modem connection"); ESP_LOGD(TAG, "Starting modem connection");
ESP_LOGD(TAG, "SIgnal quality: rssi=%d", get_rssi()); ESP_LOGD(TAG, "SIgnal quality: rssi=%d", get_rssi());
this->state_ = ModemComponentState::CONNECTING; this->state_ = ModemComponentState::CONNECTING;
dce->set_data(); this->dce->set_data();
// this->start_connect_(); // this->start_connect_();
} }
if (time_hard_reset_modem + TIME_TO_NEXT_HARD_RESET < now) { if (time_hard_reset_modem + TIME_TO_NEXT_HARD_RESET < now) {
@@ -139,12 +113,21 @@ void ModemComponent::loop() {
case ModemComponentState::CONNECTING: case ModemComponentState::CONNECTING:
break; break;
case ModemComponentState::CONNECTED: case ModemComponentState::CONNECTED:
if (time_info_print < now) {
ESP_LOGI(TAG, "voltage %dV.", get_modem_voltage()/1000);
if (esp_netif_is_netif_up(this->modem_netif_)) {
ESP_LOGD(TAG, "esp_netif_is_netif_UP");
} else {
ESP_LOGD(TAG, "esp_netif_is_netif_DOWN");
}
time_info_print = now + 5000;
}
break; break;
} }
} }
void ModemComponent::dump_config() { void ModemComponent::dump_config() {
this->dump_config_(); this->dump_connect_params();
ESP_LOGCONFIG(TAG, "Modem:"); ESP_LOGCONFIG(TAG, "Modem:");
ESP_LOGCONFIG(TAG, " Power Pin: %d", this->power_pin_); ESP_LOGCONFIG(TAG, " Power Pin: %d", this->power_pin_);
ESP_LOGCONFIG(TAG, " Type: %d", this->type_); ESP_LOGCONFIG(TAG, " Type: %d", this->type_);
@@ -159,7 +142,7 @@ void ModemComponent::dump_config() {
ESP_LOGCONFIG(TAG, " UART RX Buffer Size: %d", this->uart_rx_buffer_size_); ESP_LOGCONFIG(TAG, " UART RX Buffer Size: %d", this->uart_rx_buffer_size_);
} }
void ModemComponent::dump_connect_params_() { void ModemComponent::dump_connect_params() {
esp_netif_ip_info_t ip; esp_netif_ip_info_t ip;
esp_netif_get_ip_info(this->modem_netif_, &ip); esp_netif_get_ip_info(this->modem_netif_, &ip);
ESP_LOGCONFIG(TAG, " IP Address: %s", network::IPAddress(&ip.ip).str().c_str()); ESP_LOGCONFIG(TAG, " IP Address: %s", network::IPAddress(&ip.ip).str().c_str());
@@ -185,7 +168,7 @@ void ModemComponent::esp_modem_hard_reset() {
int ModemComponent::get_rssi() { int ModemComponent::get_rssi() {
int rssi = 0, ber = 0; int rssi = 0, ber = 0;
esp_modem::command_result errr = dce->get_signal_quality(rssi, ber); esp_modem::command_result errr = this->dce->get_signal_quality(rssi, ber);
// esp_err_t err = esp_modem::esp_modem_get_signal_quality(dce, &rssi, &ber); // esp_err_t err = esp_modem::esp_modem_get_signal_quality(dce, &rssi, &ber);
if (errr != esp_modem::command_result::OK) { if (errr != esp_modem::command_result::OK) {
ESP_LOGE(TAG, "esp_modem_get_signal_quality failed with"); ESP_LOGE(TAG, "esp_modem_get_signal_quality failed with");
@@ -195,8 +178,7 @@ int ModemComponent::get_rssi() {
int ModemComponent::get_modem_voltage() { int ModemComponent::get_modem_voltage() {
int voltage = 0, bcs = 0, bcl = 0; int voltage = 0, bcs = 0, bcl = 0;
dce->set_cmux(); esp_modem::command_result errr = this->dce->get_battery_status(voltage, bcs, bcl);
esp_modem::command_result errr = dce->get_battery_status(voltage, bcs, bcl);
if (errr != esp_modem::command_result::OK) { if (errr != esp_modem::command_result::OK) {
ESP_LOGE(TAG, "get_battery_status failed with"); ESP_LOGE(TAG, "get_battery_status failed with");
} }
@@ -254,16 +236,16 @@ void ModemComponent::start_connect_() {
// esp_netif_dhcp_status_t status = ESP_NETIF_DHCP_INIT; // esp_netif_dhcp_status_t status = ESP_NETIF_DHCP_INIT;
// restart ppp connection // restart ppp connection
dce->exit_data(); this->dce->exit_data();
int rssi, ber; int rssi, ber;
esp_modem::command_result errr = dce->get_signal_quality(rssi, ber); esp_modem::command_result errr = this->dce->get_signal_quality(rssi, ber);
// esp_err_t err = esp_modem::esp_modem_get_signal_quality(dce, &rssi, &ber); // esp_err_t err = esp_modem::esp_modem_get_signal_quality(dce, &rssi, &ber);
if (errr != esp_modem::command_result::OK) { if (errr != esp_modem::command_result::OK) {
ESP_LOGE(TAG, "esp_modem_get_signal_quality failed with"); ESP_LOGE(TAG, "esp_modem_get_signal_quality failed with");
return; return;
} }
ESP_LOGD(TAG, "Signal quality: rssi=%d, ber=%d", rssi, ber); ESP_LOGD(TAG, "Signal quality: rssi=%d, ber=%d", rssi, ber);
dce->set_data(); this->dce->set_data();
// this->status_set_warning(); // this->status_set_warning();
} }

View File

@@ -1,6 +1,7 @@
#pragma once #pragma once
#include "cxx_include/esp_modem_dte.hpp" #include "cxx_include/esp_modem_dte.hpp"
#include "cxx_include/esp_modem_dce.hpp"
#include "esphome/core/component.h" #include "esphome/core/component.h"
#include "esphome/core/defines.h" #include "esphome/core/defines.h"
@@ -34,7 +35,7 @@ class ModemComponent : public Component {
void setup() override; void setup() override;
void loop() override; void loop() override;
void dump_config() override; void dump_config() override;
void dump_connect_params_(); void dump_connect_params();
float get_setup_priority() const override; float get_setup_priority() const override;
bool can_proceed() override; bool can_proceed() override;
bool is_connected(); bool is_connected();
@@ -65,6 +66,7 @@ class ModemComponent : public Component {
int get_modem_voltage(); int get_modem_voltage();
std::shared_ptr<esp_modem::DTE> dte{nullptr}; std::shared_ptr<esp_modem::DTE> dte{nullptr};
std::unique_ptr<esp_modem::DCE> dce{nullptr};
ModemType type_{MODEM_TYPE_UNKNOWN}; ModemType type_{MODEM_TYPE_UNKNOWN};
int power_pin_{-1}; int power_pin_{-1};
int reset_pin_{-1}; int reset_pin_{-1};