avoid unnecessary host traffic

This commit is contained in:
john30
2020-02-09 12:06:09 +01:00
parent 4174531a9d
commit f2aae4cb2b
2 changed files with 29 additions and 24 deletions
+23 -24
View File
@@ -41,6 +41,7 @@ first second
`<RECEIVED> <data>` `<RECEIVED> <data>`
Indicates that the specified data byte in `d` was received from the eBUS. Indicates that the specified data byte in `d` was received from the eBUS.
For data byte values <0x80, the short form without the `<RECEIVED>` prefix is allowed as well. For data byte values <0x80, the short form without the `<RECEIVED>` prefix is allowed as well.
Note that this message shall not be sent when the byte received was part of an arbitration request initiated by ebusd.
* arbitration start succeeded * arbitration start succeeded
`<STARTED> <master>` `<STARTED> <master>`
Indicates the the last arbitration request succeeded (arbitration was won). Indicates the the last arbitration request succeeded (arbitration was won).
@@ -48,7 +49,7 @@ first second
* arbitration start failed * arbitration start failed
`<FAILED> <master>` `<FAILED> <master>`
Indicates that the last arbitration request failed (arbitration was lost or sending failed). Indicates that the last arbitration request failed (arbitration was lost or sending failed).
The data byte in `d` contains the master address that was sent to eBUS during arbitration. The data byte in `d` contains the master address that has won the arbitration.
## Symbols ## Symbols
@@ -98,25 +99,24 @@ The same data sequence `1008951200 / 0164` when initiated by ebusd as master (wi
|----:|-----|-----|-----|-----|-----| |----:|-----|-----|-----|-----|-----|
|1| | |ebusd|`<START> <0x10>`|0xC8 0x90| |1| | |ebusd|`<START> <0x10>`|0xC8 0x90|
|2|`SYN`|0xAA|interface|`<RECEIVED> <0xAA>`|0xC6 0xAA| |2|`SYN`|0xAA|interface|`<RECEIVED> <0xAA>`|0xC6 0xAA|
|3| | |interface|`<STARTED> <0x10>`|0xC8 0x90| |3|`QQ`|0x10|interface|`<STARTED> <0x10>`|0xC8 0x90|
|4|`QQ`|0x10|interface|`<0x10>`|0x10| |4|`ZZ`|0x08|ebusd|`<0x08>`|0x08|
|5|`ZZ`|0x08|ebusd|`<0x08>`|0x08| |5|`ZZ`|0x08|interface|`<0x08>`|0x08|
|6|`ZZ`|0x08|interface|`<0x08>`|0x08| |6|`PB`|0x95|ebusd|`<SEND> <0x95>`|0xC6 0x95|
|7|`PB`|0x95|ebusd|`<SEND> <0x95>`|0xC6 0x95| |7|`PB`|0x95|interface|`<RECEIVED> <0x95>`|0xC6 0x95|
|8|`PB`|0x95|interface|`<RECEIVED> <0x95>`|0xC6 0x95| |8|`SB`|0x12|ebusd|`<0x12>`|0x12|
|9|`SB`|0x12|ebusd|`<0x12>`|0x12| |9|`SB`|0x12|interface|`<0x12>`|0x12|
|10|`SB`|0x12|interface|`<0x12>`|0x12| |10|`NN`|0x00|ebusd|`<0x00>`|0x00|
|11|`NN`|0x00|ebusd|`<0x00>`|0x00| |11|`NN`|0x00|interface|`<0x00>`|0x00|
|12|`NN`|0x00|interface|`<0x00>`|0x00| |12|`CRC`|0xB1|ebusd|`<SEND> <0xB1>`|0xC6 0xB1|
|13|`CRC`|0xB1|ebusd|`<SEND> <0xB1>`|0xC6 0xB1| |13|`CRC`|0xB1|interface|`<RECEIVED> <0xB1>`|0xC6 0xB1|
|14|`CRC`|0xB1|interface|`<RECEIVED> <0xB1>`|0xC6 0xB1| |14|`ACK`|0x00|interface|`<0x00>`|0x00|
|15|`ACK`|0x00|interface|`<0x00>`|0x00| |15|`NN`|0x01|interface|`<0x01>`|0x01|
|16|`NN`|0x01|interface|`<0x01>`|0x01| |16|`DD`|0x64|interface|`<0x64>`|0x64|
|17|`DD`|0x64|interface|`<0x64>`|0x64| |17|`CRC`|0xFF|interface|`<RECEIVED> <0xFF>`|0xC7 0xBF|
|18|`CRC`|0xFF|interface|`<RECEIVED> <0xFF>`|0xC7 0xBF| |18|`ACK`|0x00|ebusd|`<0x00>`|0x00|
|19|`ACK`|0x00|ebusd|`<0x00>`|0x00| |19|`ACK`|0x00|interface|`<0x00>`|0x00|
|20|`ACK`|0x00|interface|`<0x00>`|0x00| |20|`SYN`|0xAA|interface|`<RECEIVED> <0xAA>`|0xC6 0xAA|
|21|`SYN`|0xAA|interface|`<RECEIVED> <0xAA>`|0xC6 0xAA|
### Active successful send as SYN generator ### Active successful send as SYN generator
@@ -127,14 +127,13 @@ The same data sequence `1008951200 / 0164` when initiated by ebusd as master (wi
|1| | |ebusd|`<START> <0x10>`|0xC8 0x90| |1| | |ebusd|`<START> <0x10>`|0xC8 0x90|
|2|`SYN`|0xAA|ebusd|`<SEND> <0xAA>`|0xC6 0xAA| |2|`SYN`|0xAA|ebusd|`<SEND> <0xAA>`|0xC6 0xAA|
|3|`SYN`|0xAA|interface|`<RECEIVED> <0xAA>`|0xC6 0xAA| |3|`SYN`|0xAA|interface|`<RECEIVED> <0xAA>`|0xC6 0xAA|
|4| | |interface|`<STARTED> <0x10>`|0xC8 0x90| |4|`QQ`|0x10|interface|`<STARTED> <0x10>`|0xC8 0x90|
|5|`QQ`|0x10|interface|`<0x10>`|0x10|
|...|see above| | | | | |...|see above| | | | |
The rest of the communcation is the same as before (from 5.) The rest of the communcation is the same as before (from 4.)
### Active failed traffic ### Active failed traffic
A failed arbitration when initiated by ebusd as master (with address 0x15) would usually be transferred as follows (with all extra symbols seen on the bus): A failed arbitration when initiated by ebusd as master (with address 0x10) would usually be transferred as follows (with all extra symbols seen on the bus):
|order|eBUS proto|eBUS byte|sender|enhanced proto|enhanced byte| |order|eBUS proto|eBUS byte|sender|enhanced proto|enhanced byte|
|----:|-----|-----|-----|-----|-----| |----:|-----|-----|-----|-----|-----|
+6
View File
@@ -455,11 +455,17 @@ bool Device::read(symbol_t* value, bool isAvailable, ArbitrationState* arbitrati
switch (ch) { switch (ch) {
case ENH_RES_STARTED: case ENH_RES_STARTED:
*arbitrationState = as_won; *arbitrationState = as_won;
if (m_listener != NULL) {
m_listener->notifyDeviceData(ch2, false);
}
m_arbitrationMaster = SYN; m_arbitrationMaster = SYN;
m_arbitrationCheck = false; m_arbitrationCheck = false;
break; break;
case ENH_RES_FAILED: case ENH_RES_FAILED:
*arbitrationState = as_lost; *arbitrationState = as_lost;
if (m_listener != NULL) {
m_listener->notifyDeviceData(ch2, false);
}
m_arbitrationMaster = SYN; m_arbitrationMaster = SYN;
m_arbitrationCheck = false; m_arbitrationCheck = false;
break; break;