Инструменты пользователя

Инструменты сайта


firmware-autoreply

Это старая версия документа!


Автоматический ответ

В данном разделе приведена информауия по модификации исходного кода прошивки Meshtastic для реализации функционала автоматического ответа на сообщения с информированием об уровнях принятого сигнала.

Добавление обработчика принятого сообщения

В файл src\modules\ReplyModule.cpp добавляем метод обработки приема сообщения

ProcessMessage ReplyModule::handleReceived(const meshtastic_MeshPacket &mp)
{
    auto reply = allocDataPacket();
    float P = mp.rx_rssi + mp.rx_snr - 10*log10f(pow10f(mp.rx_snr/10)+1);
    sprintf(reinterpret_cast<char*>(reply->decoded.payload.bytes), "RSSI: %ddBm, SNR: %.2fdB, Signal: %.2fdBm", mp.rx_rssi, mp.rx_snr, P);
    reply->decoded.payload.size = strlen(reinterpret_cast<char*>(reply->decoded.payload.bytes));

    setReplyTo(reply, mp);
    service->sendToMesh(reply);

    return ProcessMessage::CONTINUE;
}

Также требуется добавить метод в заголовочный файл src\modules\ReplyModule.h

ProcessMessage handleReceived(const meshtastic_MeshPacket &mp) override;

В нем же правим конструктор на следующее

ReplyModule() : SinglePortModule("reply", meshtastic_PortNum_TEXT_MESSAGE_APP) {}

Подключаем модуль

В файл src\modules\Modules.cpp в начальной секции добавляем подключение файла модуля

#include "modules/ReplyModule.h"

Также в секции ниже создаем объект созданного модуля

new ReplyModule();

Итог

Получили ноду, которая на принятые сообщения отвечает уровнем принятого сигнала и его характеристиками.

firmware-autoreply.1762541694.txt.gz · Последнее изменение: rsgrinko

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki