MMP » Historie » Revision 12
Revision 11 (Maximilian Seesslen, 09.09.2024 17:27) → Revision 12/14 (Maximilian Seesslen, 09.09.2024 17:57)
h1. Multipacket-Strings
There should be the posssibillity to write the complete SPI-Flash even if it takes forever.
Not every slave needs to be able to send super big blocks. But every slave should be able to
send e.g. descriptions.
There can not be multiple transfers at the same time from one node because there is no identification.
All slaves should be able to send description to multicast. Receiver should be able to sort messages.
First packet can contain flags so information about acknowledge is given.
|_. Size |_. Type |
| 0x1 | Package number (0: Data contains package count), overflowing |
| 0x3 | Source |
| 0x4 | Data |
h2. Header
|_. Size |_. Type |
| 0x4 | Object |
| 0x4 | Total size |
| 0x4 | Flags |
| 0x4 | CRC32 of data |
h2. Example: CANRec
PC requests an complete dump from single Node. Node will just stream it out.
h1. V2
|_. Size |_. Decription |_. Examples |
| 1 | Packet type | Standard TDT packet |
| 1 | Sub-Id; | Futher index; Sub-Sensor or more specifi kind of thing to be set |
| 1 | Data type | Int, Float, Time, Date, Percent, Promil, Multipacket-String |
| 1 | Unit | Hz, °C, Time, Date, PWM, CAN-ID, Name, Description, Room |
| 4 | Value | 32Bit |
h1. V3
|_. Size |_. Decription |_. Examples |
| 2 | Object | |
| 1 | Sub-Id; | Flags, Subid |
| 1 | Unit/Type | Hz_int, °C_centi, Time, Date, PWM_milli, CAN-ID, Name, Description, Room |
| 4 | Value | 32Bit |
h2. Flags
4 Bit multi message count
4 Bit multi message pos
Length in Bytes given via CAN?
Strings with max. 64 characters.
h2. Multimessage package
There should be the possibillity to write the complete SPI-Flash even if it takes forever.
Not every slave needs to be able to send super big blocks. But every slave should be able to
send e.g. descriptions.
h1. V4
Single block max.262144 bytes.
|_. Size |_. Decription |_. Examples |
| 2 | Object | |
| 2 | Counter | |
| 4 | Value | 32Bit |
The data has to be stored in memory anyways. So one block can not be infinite large.
Flash has to be written block by block. One erase sektor can be 2K. Limiting the packet size to 64K is ok for writing to flash.
Object: theoretically multiple blocks could be written at the same time. A slave could just send its whole SD-card.
h2. Header
First 0x10 Bytes are the Block header.
|_. Size |_. Type |
| 0x4 | Flags |
| 0x4 | Total Size CRC32 of this block data |
| 0x4 0x2 | CRC32 of data Header version major |
| 0x4 0x2 | Header version code minor |
| 0x4 | Command Size of this block without head |
| 0x4 | Address Command |
| ... 0x4 | Data Subaddress |
Commands:
- readout data
- erase application flash
- erase flash sector
- erase external flash
- erase external flash sector
- write data
Subaddress: e.g. flash page
Type: MMP1
h2. Usecase
h3. Write to flash
Data size is 0x100.
Count of blocks: 1
Number of blocks: 1
There should be the posssibillity to write the complete SPI-Flash even if it takes forever.
Not every slave needs to be able to send super big blocks. But every slave should be able to
send e.g. descriptions.
There can not be multiple transfers at the same time from one node because there is no identification.
All slaves should be able to send description to multicast. Receiver should be able to sort messages.
First packet can contain flags so information about acknowledge is given.
|_. Size |_. Type |
| 0x1 | Package number (0: Data contains package count), overflowing |
| 0x3 | Source |
| 0x4 | Data |
h2. Header
|_. Size |_. Type |
| 0x4 | Object |
| 0x4 | Total size |
| 0x4 | Flags |
| 0x4 | CRC32 of data |
h2. Example: CANRec
PC requests an complete dump from single Node. Node will just stream it out.
h1. V2
|_. Size |_. Decription |_. Examples |
| 1 | Packet type | Standard TDT packet |
| 1 | Sub-Id; | Futher index; Sub-Sensor or more specifi kind of thing to be set |
| 1 | Data type | Int, Float, Time, Date, Percent, Promil, Multipacket-String |
| 1 | Unit | Hz, °C, Time, Date, PWM, CAN-ID, Name, Description, Room |
| 4 | Value | 32Bit |
h1. V3
|_. Size |_. Decription |_. Examples |
| 2 | Object | |
| 1 | Sub-Id; | Flags, Subid |
| 1 | Unit/Type | Hz_int, °C_centi, Time, Date, PWM_milli, CAN-ID, Name, Description, Room |
| 4 | Value | 32Bit |
h2. Flags
4 Bit multi message count
4 Bit multi message pos
Length in Bytes given via CAN?
Strings with max. 64 characters.
h2. Multimessage package
There should be the possibillity to write the complete SPI-Flash even if it takes forever.
Not every slave needs to be able to send super big blocks. But every slave should be able to
send e.g. descriptions.
h1. V4
Single block max.262144 bytes.
|_. Size |_. Decription |_. Examples |
| 2 | Object | |
| 2 | Counter | |
| 4 | Value | 32Bit |
The data has to be stored in memory anyways. So one block can not be infinite large.
Flash has to be written block by block. One erase sektor can be 2K. Limiting the packet size to 64K is ok for writing to flash.
Object: theoretically multiple blocks could be written at the same time. A slave could just send its whole SD-card.
h2. Header
First 0x10 Bytes are the Block header.
|_. Size |_. Type |
| 0x4 | Flags |
| 0x4 | Total Size CRC32 of this block data |
| 0x4 0x2 | CRC32 of data Header version major |
| 0x4 0x2 | Header version code minor |
| 0x4 | Command Size of this block without head |
| 0x4 | Address Command |
| ... 0x4 | Data Subaddress |
Commands:
- readout data
- erase application flash
- erase flash sector
- erase external flash
- erase external flash sector
- write data
Subaddress: e.g. flash page
Type: MMP1
h2. Usecase
h3. Write to flash
Data size is 0x100.
Count of blocks: 1
Number of blocks: 1