3.3 KiB
3.3 KiB
| title | description | keywords | |||||
|---|---|---|---|---|---|---|---|
| CommandMessage Class - Message Parsing System | Documentation for the CommandMessage class used to parse and structure messages in a Modbus system |
|
CommandMessage
Path: src/modbus/command_message.h
Revision History: Initial documentation
The CommandMessage class provides a structured approach to parse, validate, and manage command messages within the system. It supports message serialization and deserialization with defined start/end markers and delimiters. This class is designed for efficient messaging in industrial Modbus-485 communications.
REQUIREMENTS
- No specific hardware pins required
- Requires StringUtils and enums support
PROVIDES
- CommandMessage: The main class for message handling
- DEBUG_MESSAGES_PARSE: Conditional compilation flag for verbose message parsing output
- DEBUG_MESSAGES_PARSER: Macro for debug logging of message parsing operations
- MESSAGE_TOKENS: Constant defining the expected number of tokens in a valid message
FEATURES
- Structured message storage with ID, verb, flags, and payload
- Timestamp tracking for message receipt
- Validation of message format with start/end markers
- Parsing of delimited message content
- Clear method for resetting message state
- Match checking for message format validation
DEPENDENCIES
graph TD
CommandMessage --> StringUtils
CommandMessage --> ArduinoLog
CommandMessage --> Vector
CommandMessage --> Enums
BEHAVIOUR
sequenceDiagram
participant Client
participant CommandMessage
Client->>CommandMessage: Create message with id, verb, flags
Client->>CommandMessage: parse(message)
CommandMessage->>CommandMessage: clear()
CommandMessage->>CommandMessage: Extract content between markers
CommandMessage->>CommandMessage: Split by delimiters
CommandMessage->>CommandMessage: Validate token count
CommandMessage->>CommandMessage: Assign id, verb, flags, payload
CommandMessage->>CommandMessage: Set timestamp
CommandMessage-->>Client: Return success/failure
TODOS
PERFORMANCE
- Consider pre-allocating memory for the message parsing to avoid heap fragmentation
- Evaluate the use of String vs. char arrays for payload handling in memory-constrained environments
- Potential for optimizing token parsing with a more efficient approach than strtok
SECURITY
- Consider implementing message integrity checking (checksums or CRC)
- Add length validation to prevent buffer overflows
- Implement validation of message payload content based on expected verb/command
COMPLIANCE
- Ensure all message processing complies with Modbus protocol standards where applicable
- Consider adding support for standard industrial message formats
RECOMMENDATIONS
- Add support for binary payloads for more efficient communication
- Consider implementing a message queue system to handle multiple messages
- Add methods to serialize a CommandMessage back to a string for bidirectional communication
- Consider adding timeout functionality for message handling