E3DC: address session data request per wallbox index (#32172)
This commit is contained in:
parent
aa7c685fb6
commit
b66d6532ae
1 changed files with 19 additions and 2 deletions
|
|
@ -656,10 +656,27 @@ func (wb *E3dc) GetMaxCurrent() (float64, error) {
|
|||
// getSessionData retrieves the session data container from WB_REQ_SESSION.
|
||||
// Returns all session-related messages (energy, time, RFID, etc.).
|
||||
// If no vehicle is connected, returns only WB_INDEX with no session data.
|
||||
//
|
||||
// The request carries the wallbox index as payload- an unscoped request is always
|
||||
// answered for wallbox 0. WB_REQ_SESSION has no entry in go-rscp's datatype table,
|
||||
// hence the explicit message.
|
||||
func (wb *E3dc) getSessionData() ([]rscp.Message, error) {
|
||||
res, err := wb.retrySend(*rscp.NewMessage(rscp.WB_REQ_SESSION, nil))
|
||||
res, err := wb.retrySend(rscp.Message{
|
||||
Tag: rscp.WB_REQ_SESSION,
|
||||
DataType: rscp.UChar8,
|
||||
Value: wb.id,
|
||||
})
|
||||
if err == nil {
|
||||
err = rscpError(*res)
|
||||
}
|
||||
|
||||
// fall back to the unscoped request if the device rejects the index
|
||||
if err != nil {
|
||||
return nil, err
|
||||
wb.log.DEBUG.Printf("indexed session request failed: %v", err)
|
||||
|
||||
if res, err = wb.retrySend(*rscp.NewMessage(rscp.WB_REQ_SESSION, nil)); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return rscpContainer(*res, 1)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue