Temporary fix on canned messages total length.

This commit is contained in:
Balazs Kelemen 2022-01-18 23:15:54 +01:00
parent 9f0ddda6ca
commit 1ff3b3326c
5 changed files with 44 additions and 32 deletions

View File

@ -39,7 +39,7 @@ void RotaryEncoderInterruptBase::init(
int32_t RotaryEncoderInterruptBase::runOnce()
{
InputEvent e;
e.inputEvent = InputEventChar_NULL;
e.inputEvent = InputEventChar_KEY_NONE;
e.source = this->_originName;
if (this->action == ROTARY_ACTION_PRESSED)
@ -58,7 +58,7 @@ int32_t RotaryEncoderInterruptBase::runOnce()
e.inputEvent = this->_eventCcw;
}
if (e.inputEvent != InputEventChar_NULL)
if (e.inputEvent != InputEventChar_KEY_NONE)
{
this->notifyObservers(&e);
}

View File

@ -86,7 +86,7 @@ extern const pb_msgdesc_t AdminMessage_msg;
#define AdminMessage_fields &AdminMessage_msg
/* Maximum encoded size of messages (where known) */
#define AdminMessage_size 1619
#define AdminMessage_size 795
#ifdef __cplusplus
} /* extern "C" */

View File

@ -80,14 +80,14 @@ typedef enum _PositionFlags {
} PositionFlags;
typedef enum _InputEventChar {
InputEventChar_NULL = 0,
InputEventChar_UP = 17,
InputEventChar_DOWN = 18,
InputEventChar_LEFT = 19,
InputEventChar_RIGHT = 20,
InputEventChar_SELECT = 10,
InputEventChar_BACK = 27,
InputEventChar_CANCEL = 24
InputEventChar_KEY_NONE = 0,
InputEventChar_KEY_UP = 17,
InputEventChar_KEY_DOWN = 18,
InputEventChar_KEY_LEFT = 19,
InputEventChar_KEY_RIGHT = 20,
InputEventChar_KEY_SELECT = 10,
InputEventChar_KEY_BACK = 27,
InputEventChar_KEY_CANCEL = 24
} InputEventChar;
typedef enum _RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType {
@ -180,7 +180,7 @@ typedef struct _RadioConfig_UserPreferences {
InputEventChar rotary1_event_press;
bool canned_message_plugin_enabled;
char canned_message_plugin_allow_input_source[16];
char canned_message_plugin_messages[1024];
char canned_message_plugin_messages[200];
bool canned_message_plugin_send_bell;
} RadioConfig_UserPreferences;
@ -215,9 +215,9 @@ typedef struct _RadioConfig {
#define _PositionFlags_MAX PositionFlags_POS_TIMESTAMP
#define _PositionFlags_ARRAYSIZE ((PositionFlags)(PositionFlags_POS_TIMESTAMP+1))
#define _InputEventChar_MIN InputEventChar_NULL
#define _InputEventChar_MAX InputEventChar_BACK
#define _InputEventChar_ARRAYSIZE ((InputEventChar)(InputEventChar_BACK+1))
#define _InputEventChar_MIN InputEventChar_KEY_NONE
#define _InputEventChar_MAX InputEventChar_KEY_BACK
#define _InputEventChar_ARRAYSIZE ((InputEventChar)(InputEventChar_KEY_BACK+1))
#define _RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_MIN RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_DHT11
#define _RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_MAX RadioConfig_UserPreferences_EnvironmentalMeasurementSensorType_DHT22
@ -418,8 +418,8 @@ extern const pb_msgdesc_t RadioConfig_UserPreferences_msg;
#define RadioConfig_UserPreferences_fields &RadioConfig_UserPreferences_msg
/* Maximum encoded size of messages (where known) */
#define RadioConfig_size 1616
#define RadioConfig_UserPreferences_size 1613
#define RadioConfig_size 792
#define RadioConfig_UserPreferences_size 789
#ifdef __cplusplus
} /* extern "C" */

View File

@ -30,7 +30,7 @@ CannedMessagePlugin::CannedMessagePlugin()
/**
* @brief Items in array this->messages will be set to be pointing on the right
* starting points of the string radioConfig.preferences.canned_message_plugin_messages
* starting points of the string this->messageStore
*
* @return int Returns the number of messages found.
*/
@ -38,17 +38,23 @@ int CannedMessagePlugin::splitConfiguredMessages()
{
int messageIndex = 0;
int i = 0;
strncpy(
this->messageStore,
radioConfig.preferences.canned_message_plugin_messages,
CANNED_MESSAGE_PLUGIN_MESSAGES_SIZE);
this->messages[messageIndex++] =
radioConfig.preferences.canned_message_plugin_messages;
this->messageStore;
int upTo =
strlen(radioConfig.preferences.canned_message_plugin_messages) - 1;
strlen(this->messageStore) - 1;
while (i < upTo)
{
if (radioConfig.preferences.canned_message_plugin_messages[i] == '|')
if (this->messageStore[i] == '|')
{
// Message ending found, replace it with string-end character.
radioConfig.preferences.canned_message_plugin_messages[i] = '\0';
this->messageStore[i] = '\0';
DEBUG_MSG("CannedMessage %d is: '%s'\n",
messageIndex-1, this->messages[messageIndex-1]);
@ -60,7 +66,7 @@ int CannedMessagePlugin::splitConfiguredMessages()
// Next message starts after pipe (|) just found.
this->messages[messageIndex++] =
(radioConfig.preferences.canned_message_plugin_messages + i + 1);
(this->messageStore + i + 1);
}
i += 1;
}
@ -90,19 +96,19 @@ int CannedMessagePlugin::handleInputEvent(const InputEvent *event)
}
bool validEvent = false;
if (event->inputEvent == static_cast<char>(InputEventChar_UP))
if (event->inputEvent == static_cast<char>(InputEventChar_KEY_UP))
{
DEBUG_MSG("Canned message event UP\n");
this->action = CANNED_MESSAGE_ACTION_UP;
validEvent = true;
}
if (event->inputEvent == static_cast<char>(InputEventChar_DOWN))
if (event->inputEvent == static_cast<char>(InputEventChar_KEY_DOWN))
{
DEBUG_MSG("Canned message event DOWN\n");
this->action = CANNED_MESSAGE_ACTION_DOWN;
validEvent = true;
}
if (event->inputEvent == static_cast<char>(InputEventChar_SELECT))
if (event->inputEvent == static_cast<char>(InputEventChar_KEY_SELECT))
{
DEBUG_MSG("Canned message event Select\n");
this->action = CANNED_MESSAGE_ACTION_SELECT;
@ -206,15 +212,15 @@ int32_t CannedMessagePlugin::runOnce()
return 30000; // TODO: should return MAX_VAL
}
String CannedMessagePlugin::getCurrentMessage()
const char* CannedMessagePlugin::getCurrentMessage()
{
return this->messages[this->currentMessageIndex];
}
String CannedMessagePlugin::getPrevMessage()
const char* CannedMessagePlugin::getPrevMessage()
{
return this->messages[this->getPrevIndex()];
}
String CannedMessagePlugin::getNextMessage()
const char* CannedMessagePlugin::getNextMessage()
{
return this->messages[this->getNextIndex()];
}

View File

@ -18,6 +18,11 @@ enum cannedMessagePluginSendigState
#define CANNED_MESSAGE_PLUGIN_MESSAGE_MAX_COUNT 50
/**
* Due to config-packet size restrictions we cannot have user configuration bigger
* than Constants_DATA_PAYLOAD_LEN bytes.
*/
#define CANNED_MESSAGE_PLUGIN_MESSAGES_SIZE 200
class CannedMessagePlugin :
public SinglePortPlugin,
@ -29,9 +34,9 @@ class CannedMessagePlugin :
this, &CannedMessagePlugin::handleInputEvent);
public:
CannedMessagePlugin();
String getCurrentMessage();
String getPrevMessage();
String getNextMessage();
const char* getCurrentMessage();
const char* getPrevMessage();
const char* getNextMessage();
bool shouldDraw();
cannedMessagePluginSendigState getSendingState();
void eventUp();
@ -61,6 +66,7 @@ class CannedMessagePlugin :
int currentMessageIndex = -1;
cannedMessagePluginSendigState sendingState = SENDING_STATE_NONE;
char messageStore[CANNED_MESSAGE_PLUGIN_MESSAGES_SIZE];
char *messages[CANNED_MESSAGE_PLUGIN_MESSAGE_MAX_COUNT];
int messagesCount = 0;
unsigned long lastTouchMillis = 0;