mirror of
https://github.com/MarekZegare4/MeshCore-Solo.git
synced 2026-11-02 19:02:00 +00:00
* more MyMesh::Listener interface hooks
This commit is contained in:
@@ -415,6 +415,11 @@ void MyMesh::onContactPathUpdated(const ContactInfo &contact) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContactInfo* MyMesh::processAck(const uint8_t *data) {
|
ContactInfo* MyMesh::processAck(const uint8_t *data) {
|
||||||
|
if (_listener) {
|
||||||
|
uint32_t ack_crc;
|
||||||
|
memcpy(&ack_crc, data, 4);
|
||||||
|
_listener->onACKRecv(ack_crc);
|
||||||
|
}
|
||||||
// see if matches any in a table
|
// see if matches any in a table
|
||||||
for (int i = 0; i < EXPECTED_ACK_TABLE_SIZE; i++) {
|
for (int i = 0; i < EXPECTED_ACK_TABLE_SIZE; i++) {
|
||||||
if (memcmp(data, &expected_ack_table[i].ack, 4) == 0) { // got an ACK from recipient
|
if (memcmp(data, &expected_ack_table[i].ack, 4) == 0) { // got an ACK from recipient
|
||||||
@@ -588,7 +593,7 @@ void MyMesh::onChannelMessageRecv(const mesh::GroupChannel &channel, mesh::Packe
|
|||||||
if (!getChannel(channel_idx, channel_details)) {
|
if (!getChannel(channel_idx, channel_details)) {
|
||||||
strcpy(channel_details.name, "Unknown");
|
strcpy(channel_details.name, "Unknown");
|
||||||
}
|
}
|
||||||
_listener->onChannelMsgRecv(channel_details, path_len, text);
|
_listener->onChannelMessageRecv(channel_details, path_len, text);
|
||||||
_listener->onQueueSizeChanged(offline_queue_len);
|
_listener->onQueueSizeChanged(offline_queue_len);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -626,6 +631,9 @@ void MyMesh::onChannelDataRecv(const mesh::GroupChannel &channel, mesh::Packet *
|
|||||||
frame[0] = PUSH_CODE_MSG_WAITING; // send push 'tickle'
|
frame[0] = PUSH_CODE_MSG_WAITING; // send push 'tickle'
|
||||||
_serial->writeFrame(frame, 1);
|
_serial->writeFrame(frame, 1);
|
||||||
}
|
}
|
||||||
|
if (_listener) {
|
||||||
|
_listener->onChannelDataRecv(channel, pkt, data_type, data, data_len);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint8_t MyMesh::onContactRequest(const ContactInfo &contact, uint32_t sender_timestamp, const uint8_t *data,
|
uint8_t MyMesh::onContactRequest(const ContactInfo &contact, uint32_t sender_timestamp, const uint8_t *data,
|
||||||
@@ -673,6 +681,8 @@ uint8_t MyMesh::onContactRequest(const ContactInfo &contact, uint32_t sender_tim
|
|||||||
memcpy(&reply[4], telemetry.getBuffer(), tlen);
|
memcpy(&reply[4], telemetry.getBuffer(), tlen);
|
||||||
return 4 + tlen;
|
return 4 + tlen;
|
||||||
}
|
}
|
||||||
|
} else if (_listener) {
|
||||||
|
return _listener->onUnhandledRequest(contact, sender_timestamp, data, len, reply);
|
||||||
}
|
}
|
||||||
return 0; // unknown
|
return 0; // unknown
|
||||||
}
|
}
|
||||||
@@ -748,6 +758,8 @@ void MyMesh::onContactResponse(const ContactInfo &contact, const uint8_t *data,
|
|||||||
memcpy(&out_frame[i], &data[4], len - 4);
|
memcpy(&out_frame[i], &data[4], len - 4);
|
||||||
i += (len - 4);
|
i += (len - 4);
|
||||||
_serial->writeFrame(out_frame, i);
|
_serial->writeFrame(out_frame, i);
|
||||||
|
} else if (_listener && len > 4) {
|
||||||
|
_listener->onUnhandledResponse(contact, tag, &data[4], len - 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -822,6 +834,9 @@ void MyMesh::onRawDataRecv(mesh::Packet *packet) {
|
|||||||
} else {
|
} else {
|
||||||
MESH_DEBUG_PRINTLN("onRawDataRecv(), data received while app offline");
|
MESH_DEBUG_PRINTLN("onRawDataRecv(), data received while app offline");
|
||||||
}
|
}
|
||||||
|
if (_listener) {
|
||||||
|
_listener->onRawDataRecv(packet);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void MyMesh::onTraceRecv(mesh::Packet *packet, uint32_t tag, uint32_t auth_code, uint8_t flags,
|
void MyMesh::onTraceRecv(mesh::Packet *packet, uint32_t tag, uint32_t auth_code, uint8_t flags,
|
||||||
@@ -852,6 +867,9 @@ void MyMesh::onTraceRecv(mesh::Packet *packet, uint32_t tag, uint32_t auth_code,
|
|||||||
} else {
|
} else {
|
||||||
MESH_DEBUG_PRINTLN("onTraceRecv(), data received while app offline");
|
MESH_DEBUG_PRINTLN("onTraceRecv(), data received while app offline");
|
||||||
}
|
}
|
||||||
|
if (_listener) {
|
||||||
|
_listener->onTraceRecv(packet, tag, auth_code, flags, path_snrs, path_hashes, path_len);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
uint32_t MyMesh::calcFloodTimeoutMillisFor(uint32_t pkt_airtime_millis) const {
|
uint32_t MyMesh::calcFloodTimeoutMillisFor(uint32_t pkt_airtime_millis) const {
|
||||||
|
|||||||
@@ -92,10 +92,19 @@ public:
|
|||||||
class Listener {
|
class Listener {
|
||||||
public:
|
public:
|
||||||
virtual void onMessageRecv(const ContactInfo &from, uint8_t txt_type, uint32_t sender_timestamp, uint8_t path_len, const char* text) = 0;
|
virtual void onMessageRecv(const ContactInfo &from, uint8_t txt_type, uint32_t sender_timestamp, uint8_t path_len, const char* text) = 0;
|
||||||
virtual void onChannelMsgRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) = 0;
|
virtual void onChannelMessageRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) = 0;
|
||||||
virtual void onQueueSizeChanged(int msgcount) = 0;
|
virtual void onQueueSizeChanged(int msgcount) = 0;
|
||||||
virtual void onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path_len, const uint8_t* path) = 0;
|
virtual void onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path_len, const uint8_t* path) { }
|
||||||
virtual void onControlDataRecv(const mesh::Packet* packet) = 0;
|
virtual void onControlDataRecv(const mesh::Packet* packet) { }
|
||||||
|
virtual void onChannelDataRecv(const mesh::GroupChannel &channel, mesh::Packet *pkt, uint16_t data_type,
|
||||||
|
const uint8_t *data, size_t data_len) { }
|
||||||
|
virtual void onACKRecv(uint32_t ack_crc) { }
|
||||||
|
virtual uint8_t onUnhandledRequest(const ContactInfo &contact, uint32_t sender_timestamp, const uint8_t *data,
|
||||||
|
uint8_t len, uint8_t *reply) { return 0; /* unknown request type */ }
|
||||||
|
virtual void onUnhandledResponse(const ContactInfo &from, uint32_t tag, const uint8_t* data, uint8_t len) { }
|
||||||
|
virtual void onTraceRecv(mesh::Packet *packet, uint32_t tag, uint32_t auth_code, uint8_t flags,
|
||||||
|
const uint8_t *path_snrs, const uint8_t *path_hashes, uint8_t path_len) { }
|
||||||
|
virtual void onRawDataRecv(mesh::Packet *packet) { }
|
||||||
};
|
};
|
||||||
|
|
||||||
MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMeshTables &tables, DataStore& store);
|
MyMesh(mesh::Radio &radio, mesh::RNG &rng, mesh::RTCClock &rtc, SimpleMeshTables &tables, DataStore& store);
|
||||||
|
|||||||
@@ -808,7 +808,7 @@ void UITask::onMessageRecv(const ContactInfo &from, uint8_t txt_type, uint32_t s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITask::onChannelMsgRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) {
|
void UITask::onChannelMessageRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) {
|
||||||
((MsgPreviewScreen *) msg_preview)->addPreview(path_len, channel_details.name, text);
|
((MsgPreviewScreen *) msg_preview)->addPreview(path_len, channel_details.name, text);
|
||||||
setCurrScreen(msg_preview);
|
setCurrScreen(msg_preview);
|
||||||
|
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ public:
|
|||||||
|
|
||||||
// MyMesh::Listener
|
// MyMesh::Listener
|
||||||
void onMessageRecv(const ContactInfo &from, uint8_t txt_type, uint32_t sender_timestamp, uint8_t path_len, const char* text) override;
|
void onMessageRecv(const ContactInfo &from, uint8_t txt_type, uint32_t sender_timestamp, uint8_t path_len, const char* text) override;
|
||||||
void onChannelMsgRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) override;
|
void onChannelMessageRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) override;
|
||||||
void onQueueSizeChanged(int offline_queue_size) override;
|
void onQueueSizeChanged(int offline_queue_size) override;
|
||||||
void onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path_len, const uint8_t* path) override;
|
void onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path_len, const uint8_t* path) override;
|
||||||
void onControlDataRecv(const mesh::Packet* packet) override;
|
void onControlDataRecv(const mesh::Packet* packet) override;
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ void UITask::onMessageRecv(const ContactInfo &from, uint8_t txt_type, uint32_t s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITask::onChannelMsgRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) {
|
void UITask::onChannelMessageRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) {
|
||||||
#ifdef HAS_DRV2605
|
#ifdef HAS_DRV2605
|
||||||
vibration.trigger(); // vibrate even while the app is connected (honors quiet + cooldown)
|
vibration.trigger(); // vibrate even while the app is connected (honors quiet + cooldown)
|
||||||
#endif
|
#endif
|
||||||
@@ -200,9 +200,6 @@ void UITask::onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITask::onControlDataRecv(const mesh::Packet* packet) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void UITask::renderBatteryIndicator(uint16_t batteryMilliVolts) {
|
void UITask::renderBatteryIndicator(uint16_t batteryMilliVolts) {
|
||||||
// Convert millivolts to percentage
|
// Convert millivolts to percentage
|
||||||
#ifndef BATT_MIN_MILLIVOLTS
|
#ifndef BATT_MIN_MILLIVOLTS
|
||||||
|
|||||||
@@ -72,10 +72,9 @@ public:
|
|||||||
|
|
||||||
// MyMesh::Listener
|
// MyMesh::Listener
|
||||||
void onMessageRecv(const ContactInfo &from, uint8_t txt_type, uint32_t sender_timestamp, uint8_t path_len, const char* text) override;
|
void onMessageRecv(const ContactInfo &from, uint8_t txt_type, uint32_t sender_timestamp, uint8_t path_len, const char* text) override;
|
||||||
void onChannelMsgRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) override;
|
void onChannelMessageRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) override;
|
||||||
void onQueueSizeChanged(int offline_queue_size) override;
|
void onQueueSizeChanged(int offline_queue_size) override;
|
||||||
void onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path_len, const uint8_t* path) override;
|
void onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path_len, const uint8_t* path) override;
|
||||||
void onControlDataRecv(const mesh::Packet* packet) override;
|
|
||||||
|
|
||||||
// from AbstractUITask
|
// from AbstractUITask
|
||||||
void notify(UIEventType t = UIEventType::none) override;
|
void notify(UIEventType t = UIEventType::none) override;
|
||||||
|
|||||||
@@ -528,7 +528,7 @@ void UITask::onMessageRecv(const ContactInfo &from, uint8_t txt_type, uint32_t s
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITask::onChannelMsgRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) {
|
void UITask::onChannelMessageRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) {
|
||||||
if (_display != NULL) {
|
if (_display != NULL) {
|
||||||
if (!_display->isOn() && !hasConnection()) {
|
if (!_display->isOn() && !hasConnection()) {
|
||||||
_display->turnOn();
|
_display->turnOn();
|
||||||
@@ -549,9 +549,6 @@ void UITask::onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void UITask::onControlDataRecv(const mesh::Packet* packet) {
|
|
||||||
}
|
|
||||||
|
|
||||||
void UITask::userLedHandler() {
|
void UITask::userLedHandler() {
|
||||||
#ifdef PIN_STATUS_LED
|
#ifdef PIN_STATUS_LED
|
||||||
int cur_time = millis();
|
int cur_time = millis();
|
||||||
|
|||||||
@@ -100,10 +100,9 @@ public:
|
|||||||
|
|
||||||
// MyMesh::Listener
|
// MyMesh::Listener
|
||||||
void onMessageRecv(const ContactInfo &from, uint8_t txt_type, uint32_t sender_timestamp, uint8_t path_len, const char* text) override;
|
void onMessageRecv(const ContactInfo &from, uint8_t txt_type, uint32_t sender_timestamp, uint8_t path_len, const char* text) override;
|
||||||
void onChannelMsgRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) override;
|
void onChannelMessageRecv(ChannelDetails& channel_details, uint8_t path_len, const char* text) override;
|
||||||
void onQueueSizeChanged(int offline_queue_size) override;
|
void onQueueSizeChanged(int offline_queue_size) override;
|
||||||
void onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path_len, const uint8_t* path) override;
|
void onDiscoveredContact(ContactInfo &contact, bool is_new, uint8_t path_len, const uint8_t* path) override;
|
||||||
void onControlDataRecv(const mesh::Packet* packet) override;
|
|
||||||
|
|
||||||
// from AbstractUITask
|
// from AbstractUITask
|
||||||
void notify(UIEventType t = UIEventType::none) override;
|
void notify(UIEventType t = UIEventType::none) override;
|
||||||
|
|||||||
Reference in New Issue
Block a user