mirror of
https://github.com/meshtastic/firmware.git
synced 2025-04-30 11:23:53 +00:00
UI/UX: Display delivered message on incoming ACK.
Needs more work
This commit is contained in:
parent
d552ee3556
commit
796592b586
@ -244,7 +244,8 @@ int32_t CannedMessageModule::runOnce()
|
|||||||
}
|
}
|
||||||
// LOG_DEBUG("Check status\n");
|
// LOG_DEBUG("Check status\n");
|
||||||
UIFrameEvent e = {false, true};
|
UIFrameEvent e = {false, true};
|
||||||
if (this->runState == CANNED_MESSAGE_RUN_STATE_SENDING_ACTIVE) {
|
if ((this->runState == CANNED_MESSAGE_RUN_STATE_SENDING_ACTIVE) ||
|
||||||
|
(this->runState == CANNED_MESSAGE_RUN_STATE_ACK_RECEIVED)) {
|
||||||
// TODO: might have some feedback of sendig state
|
// TODO: might have some feedback of sendig state
|
||||||
this->runState = CANNED_MESSAGE_RUN_STATE_INACTIVE;
|
this->runState = CANNED_MESSAGE_RUN_STATE_INACTIVE;
|
||||||
e.frameChanged = true;
|
e.frameChanged = true;
|
||||||
@ -483,7 +484,12 @@ void CannedMessageModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *st
|
|||||||
{
|
{
|
||||||
char buffer[50];
|
char buffer[50];
|
||||||
|
|
||||||
if (cannedMessageModule->runState == CANNED_MESSAGE_RUN_STATE_SENDING_ACTIVE) {
|
if (cannedMessageModule->runState == CANNED_MESSAGE_RUN_STATE_ACK_RECEIVED) {
|
||||||
|
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
||||||
|
display->setFont(FONT_MEDIUM);
|
||||||
|
display->drawStringf(display->getWidth() / 2 + x, 0 + y + 12, buffer, "Delivered to %s",
|
||||||
|
cannedMessageModule->getNodeName(this->incoming));
|
||||||
|
} else if (cannedMessageModule->runState == CANNED_MESSAGE_RUN_STATE_SENDING_ACTIVE) {
|
||||||
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
display->setTextAlignment(TEXT_ALIGN_CENTER);
|
||||||
display->setFont(FONT_MEDIUM);
|
display->setFont(FONT_MEDIUM);
|
||||||
display->drawString(display->getWidth() / 2 + x, 0 + y + 12, "Sending...");
|
display->drawString(display->getWidth() / 2 + x, 0 + y + 12, "Sending...");
|
||||||
@ -546,6 +552,24 @@ void CannedMessageModule::drawFrame(OLEDDisplay *display, OLEDDisplayUiState *st
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ProcessMessage CannedMessageModule::handleReceived(const meshtastic_MeshPacket &mp)
|
||||||
|
{
|
||||||
|
if (mp.decoded.portnum == meshtastic_PortNum_ROUTING_APP) {
|
||||||
|
// look for a request_id
|
||||||
|
if (mp.decoded.request_id != 0) {
|
||||||
|
UIFrameEvent e = {false, true};
|
||||||
|
e.frameChanged = true;
|
||||||
|
this->runState = CANNED_MESSAGE_RUN_STATE_ACK_RECEIVED;
|
||||||
|
this->incoming = mp.decoded.request_id;
|
||||||
|
this->notifyObservers(&e);
|
||||||
|
// run the next time 2 seconds later
|
||||||
|
setIntervalFromNow(2000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return ProcessMessage::CONTINUE;
|
||||||
|
}
|
||||||
|
|
||||||
void CannedMessageModule::loadProtoForModule()
|
void CannedMessageModule::loadProtoForModule()
|
||||||
{
|
{
|
||||||
if (!nodeDB.loadProto(cannedMessagesConfigFile, meshtastic_CannedMessageModuleConfig_size,
|
if (!nodeDB.loadProto(cannedMessagesConfigFile, meshtastic_CannedMessageModuleConfig_size,
|
||||||
|
@ -9,6 +9,7 @@ enum cannedMessageModuleRunState {
|
|||||||
CANNED_MESSAGE_RUN_STATE_ACTIVE,
|
CANNED_MESSAGE_RUN_STATE_ACTIVE,
|
||||||
CANNED_MESSAGE_RUN_STATE_FREETEXT,
|
CANNED_MESSAGE_RUN_STATE_FREETEXT,
|
||||||
CANNED_MESSAGE_RUN_STATE_SENDING_ACTIVE,
|
CANNED_MESSAGE_RUN_STATE_SENDING_ACTIVE,
|
||||||
|
CANNED_MESSAGE_RUN_STATE_ACK_RECEIVED,
|
||||||
CANNED_MESSAGE_RUN_STATE_ACTION_SELECT,
|
CANNED_MESSAGE_RUN_STATE_ACTION_SELECT,
|
||||||
CANNED_MESSAGE_RUN_STATE_ACTION_UP,
|
CANNED_MESSAGE_RUN_STATE_ACTION_UP,
|
||||||
CANNED_MESSAGE_RUN_STATE_ACTION_DOWN,
|
CANNED_MESSAGE_RUN_STATE_ACTION_DOWN,
|
||||||
@ -37,15 +38,29 @@ class CannedMessageModule : public SinglePortModule, public Observable<const UIF
|
|||||||
const char *getMessageByIndex(int index);
|
const char *getMessageByIndex(int index);
|
||||||
const char *getNodeName(NodeNum node);
|
const char *getNodeName(NodeNum node);
|
||||||
bool shouldDraw();
|
bool shouldDraw();
|
||||||
void eventUp();
|
// void eventUp();
|
||||||
void eventDown();
|
// void eventDown();
|
||||||
void eventSelect();
|
// void eventSelect();
|
||||||
|
|
||||||
void handleGetCannedMessageModuleMessages(const meshtastic_MeshPacket &req, meshtastic_AdminMessage *response);
|
void handleGetCannedMessageModuleMessages(const meshtastic_MeshPacket &req, meshtastic_AdminMessage *response);
|
||||||
void handleSetCannedMessageModuleMessages(const char *from_msg);
|
void handleSetCannedMessageModuleMessages(const char *from_msg);
|
||||||
|
|
||||||
String drawWithCursor(String text, int cursor);
|
String drawWithCursor(String text, int cursor);
|
||||||
|
|
||||||
|
/*
|
||||||
|
-Override the wantPacket method. We need the Routing Messages to look for ACKs.
|
||||||
|
*/
|
||||||
|
virtual bool wantPacket(const meshtastic_MeshPacket *p) override
|
||||||
|
{
|
||||||
|
switch (p->decoded.portnum) {
|
||||||
|
case meshtastic_PortNum_TEXT_MESSAGE_APP:
|
||||||
|
case meshtastic_PortNum_ROUTING_APP:
|
||||||
|
return true;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
virtual int32_t runOnce() override;
|
virtual int32_t runOnce() override;
|
||||||
|
|
||||||
@ -63,6 +78,12 @@ class CannedMessageModule : public SinglePortModule, public Observable<const UIF
|
|||||||
meshtastic_AdminMessage *request,
|
meshtastic_AdminMessage *request,
|
||||||
meshtastic_AdminMessage *response) override;
|
meshtastic_AdminMessage *response) override;
|
||||||
|
|
||||||
|
/** Called to handle a particular incoming message
|
||||||
|
* @return ProcessMessage::STOP if you've guaranteed you've handled this message and no other handlers should be considered
|
||||||
|
* for it
|
||||||
|
*/
|
||||||
|
virtual ProcessMessage handleReceived(const meshtastic_MeshPacket &mp) override;
|
||||||
|
|
||||||
void loadProtoForModule();
|
void loadProtoForModule();
|
||||||
bool saveProtoForModule();
|
bool saveProtoForModule();
|
||||||
|
|
||||||
@ -75,6 +96,7 @@ class CannedMessageModule : public SinglePortModule, public Observable<const UIF
|
|||||||
String freetext = ""; // Text Buffer for Freetext Editor
|
String freetext = ""; // Text Buffer for Freetext Editor
|
||||||
bool destSelect = false; // Freetext Editor Mode
|
bool destSelect = false; // Freetext Editor Mode
|
||||||
NodeNum dest = NODENUM_BROADCAST;
|
NodeNum dest = NODENUM_BROADCAST;
|
||||||
|
NodeNum incoming = NODENUM_BROADCAST;
|
||||||
|
|
||||||
char messageStore[CANNED_MESSAGE_MODULE_MESSAGES_SIZE + 1];
|
char messageStore[CANNED_MESSAGE_MODULE_MESSAGES_SIZE + 1];
|
||||||
char *messages[CANNED_MESSAGE_MODULE_MESSAGE_MAX_COUNT];
|
char *messages[CANNED_MESSAGE_MODULE_MESSAGE_MAX_COUNT];
|
||||||
|
Loading…
Reference in New Issue
Block a user