Add Mercedes (#12403)
This commit is contained in:
parent
ab877571bb
commit
625b91c544
21 changed files with 19343 additions and 3 deletions
|
|
@ -52,6 +52,8 @@ func runToken(cmd *cobra.Command, args []string) {
|
|||
var err error
|
||||
|
||||
switch strings.ToLower(vehicleConf.Type) {
|
||||
case "mercedes":
|
||||
token, err = mercedesToken()
|
||||
case "tronity":
|
||||
token, err = tronityToken(conf, vehicleConf)
|
||||
default:
|
||||
|
|
@ -65,7 +67,7 @@ func runToken(cmd *cobra.Command, args []string) {
|
|||
fmt.Println()
|
||||
fmt.Println("Add the following tokens to the vehicle config:")
|
||||
fmt.Println()
|
||||
fmt.Println(" tokens:")
|
||||
fmt.Println(" access:", token.AccessToken)
|
||||
fmt.Println(" refresh:", token.RefreshToken)
|
||||
fmt.Println(" tokens:")
|
||||
fmt.Println(" access:", token.AccessToken)
|
||||
fmt.Println(" refresh:", token.RefreshToken)
|
||||
}
|
||||
|
|
|
|||
71
cmd/token_mercedes.go
Normal file
71
cmd/token_mercedes.go
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
package cmd
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strings"
|
||||
|
||||
"github.com/AlecAivazis/survey/v2"
|
||||
"github.com/evcc-io/evcc/vehicle/mercedes"
|
||||
"golang.org/x/oauth2"
|
||||
)
|
||||
|
||||
func mercedesUsernameAndRegionPrompt() (string, string, error) {
|
||||
prompt_user := &survey.Input{
|
||||
Message: "Please enter your Mercedes ME user-account (e-mail or mobile)",
|
||||
}
|
||||
var user string
|
||||
if err := survey.AskOne(prompt_user, &user, survey.WithValidator(survey.Required)); err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
prompt_region := &survey.Select{
|
||||
Message: "Choose your MB region:",
|
||||
Options: []string{"APAC", "EMEA", "NORAM"},
|
||||
}
|
||||
var region string
|
||||
if err := survey.AskOne(prompt_region, ®ion, survey.WithValidator(survey.Required)); err != nil {
|
||||
return "", "", err
|
||||
}
|
||||
|
||||
return user, region, nil
|
||||
}
|
||||
|
||||
func mercedesPinPrompt() (string, error) {
|
||||
var code string
|
||||
prompt_pin := &survey.Input{
|
||||
Message: "Please enter the Pin that you received via email/sms",
|
||||
}
|
||||
if err := survey.AskOne(prompt_pin, &code, survey.WithValidator(survey.Required)); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
return strings.TrimSpace(code), nil
|
||||
}
|
||||
|
||||
func mercedesToken() (*oauth2.Token, error) {
|
||||
// Get username and region from user to initate the email process
|
||||
username, region, err := mercedesUsernameAndRegionPrompt()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
api := mercedes.NewSetupAPI(log, username, region)
|
||||
result, nonce, err := api.RequestPin()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
if result {
|
||||
pin, err := mercedesPinPrompt()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
token, err := api.RequestAccessToken(*nonce, pin)
|
||||
if err == nil {
|
||||
return token, nil
|
||||
}
|
||||
}
|
||||
|
||||
return nil, errors.New("unknown PinResponse - 200, Email empty")
|
||||
}
|
||||
59
templates/definition/vehicle/mercedes.yaml
Normal file
59
templates/definition/vehicle/mercedes.yaml
Normal file
|
|
@ -0,0 +1,59 @@
|
|||
template: mercedes
|
||||
products:
|
||||
- brand: Mercedes-Benz
|
||||
requirements:
|
||||
description:
|
||||
de: |
|
||||
Die Konfiguration der Mercedes-Benz Integration nur im yaml Modus möglich.
|
||||
Ablauf:
|
||||
1. Hinzufügen der Konfiguration in die evcc.yaml (ohne Token)
|
||||
```
|
||||
vehicles:
|
||||
- name: my_car
|
||||
type: mercedes
|
||||
account: # Mercedes Me Nutzer-Id (email)
|
||||
region: # MB me Region (EMEA, APAC, NORAM)
|
||||
vin: W... # Erforderlich, wenn mehr als ein Fahrzeug im Account registriert
|
||||
capacity: 50 # Akkukapazität in kWh (optional)
|
||||
```
|
||||
2. Ausführen von "./evcc token mercedes" zur Token Generierung
|
||||
3. Einfügen der Tokens in die evcc.yaml
|
||||
```
|
||||
vehicles:
|
||||
- name: my_car
|
||||
type: mercedes
|
||||
account: # Mercedes Me Nutzer-Id (email)
|
||||
region: # MB me Region (EMEA, APAC, NORAM)
|
||||
vin: W... # , wenn mehr als ein Fahrzeug im Account registriert
|
||||
capacity: 50 # Akkukapazität in kWh (optional)
|
||||
tokens:
|
||||
access: token...
|
||||
refresh: token...
|
||||
```
|
||||
en: |
|
||||
The configuration of the Mercedes-Benz integration is only possible in yaml mode.
|
||||
Procedure:
|
||||
1. add the configuration to evcc.yaml (without token)
|
||||
```
|
||||
vehicles:
|
||||
- name: my_car
|
||||
type: mercedes
|
||||
account: # Mercedes Me user-Id (email)
|
||||
region: # MB me region (EMEA, APAC, NORAM)
|
||||
vin: W... # Required, if more then one car is registered in this account
|
||||
capacity: 50 # capacity in kWh (optional)
|
||||
```
|
||||
2. execute "./evcc token mercedes" for token generation
|
||||
3. insert the tokens into evcc.yaml
|
||||
```
|
||||
vehicles:
|
||||
- name: my_car
|
||||
type: mercedes
|
||||
account: # Mercedes Me user-id (email)
|
||||
region: # MB me region (EMEA, APAC, NORAM)
|
||||
vin: W... # Required, if more then one car is registered in this account
|
||||
capacity: 50 # capacity in kWh (optional)
|
||||
tokens:
|
||||
access: token...
|
||||
refresh: token...
|
||||
```
|
||||
61
vehicle/mercedes.go
Normal file
61
vehicle/mercedes.go
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
package vehicle
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/evcc-io/evcc/api"
|
||||
"github.com/evcc-io/evcc/util"
|
||||
"github.com/evcc-io/evcc/vehicle/mercedes"
|
||||
)
|
||||
|
||||
// Mercedes is an api.Vehicle implementation for Mercedes-Benz cars
|
||||
type Mercedes struct {
|
||||
*embed
|
||||
*mercedes.Provider
|
||||
}
|
||||
|
||||
func init() {
|
||||
registry.Add("mercedes", NewMercedesFromConfig)
|
||||
}
|
||||
|
||||
// NewMercedesFromConfig creates a new vehicle
|
||||
func NewMercedesFromConfig(other map[string]interface{}) (api.Vehicle, error) {
|
||||
cc := struct {
|
||||
embed `mapstructure:",squash"`
|
||||
Tokens Tokens
|
||||
Account string
|
||||
VIN string
|
||||
Cache time.Duration
|
||||
Region string
|
||||
}{
|
||||
Cache: interval,
|
||||
}
|
||||
|
||||
if err := util.DecodeOther(other, &cc); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
token, err := cc.Tokens.Token()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
log := util.NewLogger("mercedes").Redact(cc.Tokens.Access, cc.Tokens.Refresh)
|
||||
identity, err := mercedes.NewIdentity(log, token, cc.Account, cc.Region)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
v := &Mercedes{
|
||||
embed: &cc.embed,
|
||||
}
|
||||
|
||||
api := mercedes.NewAPI(log, identity)
|
||||
|
||||
cc.VIN, err = ensureVehicle(cc.VIN, api.Vehicles)
|
||||
if err == nil {
|
||||
v.Provider = mercedes.NewProvider(api, cc.VIN, cc.Cache)
|
||||
}
|
||||
|
||||
return v, err
|
||||
}
|
||||
97
vehicle/mercedes/api.go
Normal file
97
vehicle/mercedes/api.go
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
package mercedes
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/evcc-io/evcc/util"
|
||||
"github.com/evcc-io/evcc/util/request"
|
||||
"github.com/evcc-io/evcc/util/transport"
|
||||
protos "github.com/evcc-io/evcc/vehicle/mercedes/pb"
|
||||
"golang.org/x/oauth2"
|
||||
"google.golang.org/protobuf/proto"
|
||||
)
|
||||
|
||||
// API is an api.Vehicle implementation for Mercedes-Benz cars
|
||||
type API struct {
|
||||
region string
|
||||
log *util.Logger
|
||||
*request.Helper
|
||||
}
|
||||
|
||||
func NewAPI(log *util.Logger, identity *Identity) *API {
|
||||
client := request.NewHelper(log)
|
||||
|
||||
client.Transport = &transport.Decorator{
|
||||
Base: &oauth2.Transport{
|
||||
Source: identity,
|
||||
Base: client.Transport,
|
||||
},
|
||||
Decorator: transport.DecorateHeaders(mbheaders(false, identity.region)),
|
||||
}
|
||||
|
||||
return &API{
|
||||
Helper: client,
|
||||
region: identity.region,
|
||||
log: log,
|
||||
}
|
||||
}
|
||||
|
||||
func (v *API) Vehicles() ([]string, error) {
|
||||
var res VehiclesResponse
|
||||
|
||||
url := fmt.Sprintf("%s/v2/vehicles", getBffUri(v.region))
|
||||
|
||||
err := v.GetJSON(url, &res)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
var vehicles []string
|
||||
for _, v := range res.AssignedVehicles {
|
||||
vehicles = append(vehicles, v.Fin)
|
||||
}
|
||||
|
||||
return vehicles, err
|
||||
}
|
||||
|
||||
func (v *API) Status(vin string) (StatusResponse, error) {
|
||||
var res StatusResponse
|
||||
|
||||
uri := fmt.Sprintf("%s/v1/vehicle/%s/vehicleattributes", getWidgetUri(v.region), vin)
|
||||
|
||||
data, err := v.GetBody(uri)
|
||||
if err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
var message protos.VEPUpdate
|
||||
if err = proto.Unmarshal(data, &message); err != nil {
|
||||
return res, err
|
||||
}
|
||||
|
||||
if val, ok := message.Attributes["odo"]; ok {
|
||||
res.VehicleInfo.Odometer.Value = int(val.GetIntValue())
|
||||
res.VehicleInfo.Odometer.Unit = val.GetDistanceUnit().String()
|
||||
}
|
||||
|
||||
if val, ok := message.Attributes["soc"]; ok {
|
||||
res.EvInfo.Battery.StateOfCharge = float64(val.GetIntValue())
|
||||
}
|
||||
|
||||
if val, ok := message.Attributes["rangeelectric"]; ok {
|
||||
res.EvInfo.Battery.DistanceToEmpty.Value = int(val.GetIntValue())
|
||||
res.EvInfo.Battery.DistanceToEmpty.Unit = val.GetDistanceUnit().String()
|
||||
}
|
||||
|
||||
if val, ok := message.Attributes["endofchargetime"]; ok {
|
||||
res.EvInfo.Battery.EndOfChargeTime = int(val.GetIntValue())
|
||||
}
|
||||
|
||||
if val, ok := message.Attributes["chargingstatus"]; ok {
|
||||
res.EvInfo.Battery.ChargingStatus = int(val.GetIntValue())
|
||||
} else {
|
||||
res.EvInfo.Battery.ChargingStatus = 3
|
||||
}
|
||||
|
||||
return res, err
|
||||
}
|
||||
119
vehicle/mercedes/helper.go
Normal file
119
vehicle/mercedes/helper.go
Normal file
|
|
@ -0,0 +1,119 @@
|
|||
package mercedes
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"sync"
|
||||
|
||||
"github.com/google/uuid"
|
||||
)
|
||||
|
||||
// Helper provides utility primitives
|
||||
type Helper struct {
|
||||
*http.Client
|
||||
}
|
||||
|
||||
var (
|
||||
mu sync.Mutex
|
||||
identities = make(map[string]*Identity)
|
||||
)
|
||||
|
||||
func getInstance(subject string) *Identity {
|
||||
v := identities[subject]
|
||||
return v
|
||||
}
|
||||
|
||||
func addInstance(subject string, identity *Identity) {
|
||||
identities[subject] = identity
|
||||
}
|
||||
|
||||
const (
|
||||
BffUriEMEA = "https://bff.emea-prod.mobilesdk.mercedes-benz.com"
|
||||
WidgetUriEMEA = "https://widget.emea-prod.mobilesdk.mercedes-benz.com"
|
||||
BffUriAPAC = "https://bff.amap-prod.mobilesdk.mercedes-benz.com"
|
||||
WidgetUriAPAC = "https://widget.amap-prod.mobilesdk.mercedes-benz.com"
|
||||
BffUriNORAM = "https://bff.amap-prod.mobilesdk.mercedes-benz.com"
|
||||
WidgetUriNORAM = "https://widget.amap-prod.mobilesdk.mercedes-benz.com"
|
||||
IdUri = "https://id.mercedes-benz.com"
|
||||
ClientId = "01398c1c-dc45-4b42-882b-9f5ba9f175f1"
|
||||
RisApplicationVersionEMEA = "1.40.0"
|
||||
RisSdkVersionEMEA = "2.111.1"
|
||||
RisApplicationVersionAPAC = "1.40.0"
|
||||
RisSdkVersionAPAC = "2.111.1"
|
||||
RisApplicationVersionNORAM = "3.40.0"
|
||||
RisSdkVersionNORAM = "2.111.1"
|
||||
RisOsVersion = "17.3"
|
||||
RisOsName = "ios"
|
||||
XApplicationNameEMEA = "mycar-store-ece"
|
||||
XApplicationNameAPAC = "mycar-store-ap"
|
||||
XApplicationNameNORAM = "mycar-store-us"
|
||||
UserAgent = "MyCar/%s (com.daimler.ris.mercedesme.%s.ios; %s %s) Alamofire/5.4.0"
|
||||
UserAgentAPAC = "mycar-store-ap v%s, %s %s, SDK %s"
|
||||
Locale = "en-GB"
|
||||
CountryCode = "EN"
|
||||
)
|
||||
|
||||
func getBffUri(region string) string {
|
||||
switch region {
|
||||
case "EMEA":
|
||||
return BffUriEMEA
|
||||
case "APAC":
|
||||
return BffUriAPAC
|
||||
case "NORAM":
|
||||
return BffUriNORAM
|
||||
}
|
||||
return BffUriEMEA
|
||||
}
|
||||
|
||||
func getWidgetUri(region string) string {
|
||||
switch region {
|
||||
case "EMEA":
|
||||
return WidgetUriEMEA
|
||||
case "APAC":
|
||||
return WidgetUriAPAC
|
||||
case "NORAM":
|
||||
return WidgetUriNORAM
|
||||
}
|
||||
return WidgetUriEMEA
|
||||
}
|
||||
|
||||
func mbheaders(includeAuthServerHeader bool, region string) map[string]string {
|
||||
headers := map[string]string{
|
||||
"Ris-Os-Name": RisOsName,
|
||||
"Ris-Os-Version": RisOsVersion,
|
||||
"X-Locale": Locale,
|
||||
"X-Trackingid": uuid.New().String(),
|
||||
"X-Sessionid": uuid.New().String(),
|
||||
"Content-Type": "application/json",
|
||||
"Accept-Language": "en-GB",
|
||||
"Accept": "*/*",
|
||||
"x-dev": "1",
|
||||
}
|
||||
|
||||
switch region {
|
||||
case "EMEA":
|
||||
headers["Ris-Sdk-Version"] = RisSdkVersionEMEA
|
||||
headers["Ris-Application-Version"] = RisApplicationVersionEMEA
|
||||
headers["X-Applicationname"] = XApplicationNameEMEA
|
||||
headers["User-Agent"] = fmt.Sprintf(UserAgent, RisApplicationVersionEMEA, "ece", RisOsName, RisOsVersion)
|
||||
case "APAC":
|
||||
headers["Ris-Sdk-Version"] = RisSdkVersionAPAC
|
||||
headers["Ris-Application-Version"] = RisApplicationVersionAPAC
|
||||
headers["X-Applicationname"] = XApplicationNameAPAC
|
||||
headers["User-Agent"] = fmt.Sprintf(UserAgentAPAC, RisApplicationVersionAPAC, RisOsName, RisOsVersion, RisSdkVersionAPAC)
|
||||
case "NORAM":
|
||||
headers["Ris-Sdk-Version"] = RisSdkVersionNORAM
|
||||
headers["Ris-Application-Version"] = RisApplicationVersionNORAM
|
||||
headers["X-Applicationname"] = XApplicationNameNORAM
|
||||
headers["User-Agent"] = fmt.Sprintf(UserAgent, RisApplicationVersionEMEA, "ece", RisOsName, RisOsVersion)
|
||||
}
|
||||
|
||||
if includeAuthServerHeader {
|
||||
headers["Stage"] = "prod"
|
||||
headers["X-Device-Id"] = uuid.New().String()
|
||||
headers["X-Request-Id"] = uuid.New().String()
|
||||
headers["Content-Type"] = "application/x-www-form-urlencoded"
|
||||
}
|
||||
|
||||
return headers
|
||||
}
|
||||
127
vehicle/mercedes/identity.go
Normal file
127
vehicle/mercedes/identity.go
Normal file
|
|
@ -0,0 +1,127 @@
|
|||
package mercedes
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/evcc-io/evcc/server/db/settings"
|
||||
"github.com/evcc-io/evcc/util"
|
||||
"github.com/evcc-io/evcc/util/oauth"
|
||||
"github.com/evcc-io/evcc/util/request"
|
||||
"github.com/evcc-io/evcc/util/transport"
|
||||
"github.com/google/uuid"
|
||||
"golang.org/x/oauth2"
|
||||
)
|
||||
|
||||
type Identity struct {
|
||||
*request.Helper
|
||||
oauth2.TokenSource
|
||||
mu sync.Mutex
|
||||
log *util.Logger
|
||||
account string
|
||||
region string
|
||||
Sessionid string
|
||||
}
|
||||
|
||||
// OAuth2Config is the OAuth2 configuration for authenticating with the MercedesAPI.
|
||||
var OAuth2Config = &oauth2.Config{
|
||||
// RedirectURL: fmt.Sprintf("%s/void/RedirectURL", IdUri),
|
||||
Endpoint: oauth2.Endpoint{
|
||||
// AuthURL: fmt.Sprintf("%s/void/AuthURL", IdUri),
|
||||
TokenURL: fmt.Sprintf("%s/as/token.oauth2", IdUri),
|
||||
AuthStyle: oauth2.AuthStyleInParams,
|
||||
},
|
||||
Scopes: []string{"not_needed", "handled", "elsewhere"},
|
||||
}
|
||||
|
||||
// NewIdentity creates Mercedes identity
|
||||
func NewIdentity(log *util.Logger, token *oauth2.Token, account string, region string) (*Identity, error) {
|
||||
// serialise instance handling
|
||||
mu.Lock()
|
||||
defer mu.Unlock()
|
||||
|
||||
v := &Identity{
|
||||
Helper: request.NewHelper(log),
|
||||
log: log,
|
||||
account: account,
|
||||
region: region,
|
||||
}
|
||||
|
||||
v.Sessionid = uuid.New().String()
|
||||
v.Helper.Transport = &transport.Decorator{
|
||||
Base: v.Helper.Transport, //.NewTripper(log, transport.Insecure()),
|
||||
Decorator: transport.DecorateHeaders(mbheaders(true, region)),
|
||||
}
|
||||
|
||||
// reuse identity instance
|
||||
if instance := getInstance(account); instance != nil {
|
||||
v.log.DEBUG.Println("identity.NewIdentity - token found in instance store")
|
||||
return instance, nil
|
||||
}
|
||||
|
||||
if !token.Valid() {
|
||||
v.log.DEBUG.Println("identity.NewIdentity - token not valid - Add expiry")
|
||||
token.Expiry = time.Now().Add(time.Duration(10) * time.Second)
|
||||
}
|
||||
|
||||
// database token
|
||||
if !token.Valid() {
|
||||
v.log.DEBUG.Println("identity.NewIdentity - token not valid - database token check started")
|
||||
var tok oauth2.Token
|
||||
if err := settings.Json(v.settingsKey(), &tok); err == nil {
|
||||
token = &tok
|
||||
}
|
||||
}
|
||||
|
||||
if !token.Valid() && token.RefreshToken != "" {
|
||||
v.log.DEBUG.Println("identity.NewIdentity - token not valid - refreshToken started")
|
||||
if tok, err := v.RefreshToken(token); err == nil {
|
||||
token = tok
|
||||
}
|
||||
}
|
||||
|
||||
if !token.Valid() {
|
||||
return nil, errors.New("token expired")
|
||||
}
|
||||
|
||||
v.TokenSource = oauth.RefreshTokenSource(token, v)
|
||||
|
||||
// add instance
|
||||
addInstance(account, v)
|
||||
|
||||
return v, nil
|
||||
}
|
||||
|
||||
func (v *Identity) settingsKey() string {
|
||||
return fmt.Sprintf("mercedes.%s-%s", v.account, v.region)
|
||||
}
|
||||
|
||||
func (v *Identity) RefreshToken(token *oauth2.Token) (*oauth2.Token, error) {
|
||||
v.mu.Lock()
|
||||
defer v.mu.Unlock()
|
||||
|
||||
data := url.Values{
|
||||
"grant_type": []string{"refresh_token"},
|
||||
"refresh_token": []string{token.RefreshToken},
|
||||
}
|
||||
|
||||
uri := fmt.Sprintf("%s/as/token.oauth2", IdUri)
|
||||
req, _ := request.New(http.MethodPost, uri, strings.NewReader(data.Encode()), mbheaders(true, v.region))
|
||||
|
||||
var res oauth.Token
|
||||
if err := v.DoJSON(req, &res); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
tok := (*oauth2.Token)(&res)
|
||||
v.TokenSource = oauth.RefreshTokenSource(tok, v)
|
||||
|
||||
err := settings.SetJson(v.settingsKey(), tok)
|
||||
|
||||
return tok, err
|
||||
}
|
||||
2082
vehicle/mercedes/pb/acp.pb.go
Normal file
2082
vehicle/mercedes/pb/acp.pb.go
Normal file
File diff suppressed because it is too large
Load diff
700
vehicle/mercedes/pb/client.pb.go
Normal file
700
vehicle/mercedes/pb/client.pb.go
Normal file
|
|
@ -0,0 +1,700 @@
|
|||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.32.0
|
||||
// protoc v3.21.12
|
||||
// source: client.proto
|
||||
|
||||
package protos
|
||||
|
||||
import (
|
||||
protos "github.com/evcc-io/evcc/vehicle/mercedes/pb/protos"
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
// message that is sent from the client
|
||||
// Sending direction: App -> Websocket (-> AppTwin)
|
||||
type ClientMessage struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
TrackingId string `protobuf:"bytes,5,opt,name=tracking_id,json=trackingId,proto3" json:"tracking_id,omitempty"`
|
||||
// Types that are assignable to Msg:
|
||||
//
|
||||
// *ClientMessage_UnsubscribeRequest
|
||||
// *ClientMessage_CommandRequest
|
||||
// *ClientMessage_TrackingEvent
|
||||
// *ClientMessage_PingInterval
|
||||
// *ClientMessage_AcknowledgeVepRequest
|
||||
// *ClientMessage_AcknowledgeServiceStatusUpdatesByVin
|
||||
// *ClientMessage_AcknowledgeServiceStatusUpdate
|
||||
// *ClientMessage_AcknowledgeUserDataUpdate
|
||||
// *ClientMessage_AcknowledgeUserPictureUpdate
|
||||
// *ClientMessage_AcknowledgeUserPinUpdate
|
||||
// *ClientMessage_UpdateUserJwtRequest
|
||||
// *ClientMessage_AcknowledgeUserVehicleAuthChangedUpdate
|
||||
// *ClientMessage_AcknowledgeAbilityToGetVehicleMasterDataFromRestApi
|
||||
// *ClientMessage_AcknowledgeVehicleUpdated
|
||||
// *ClientMessage_AcknowledgePreferredDealerChange
|
||||
// *ClientMessage_AcknowledgeApptwinCommandStatusUpdateByVin
|
||||
// *ClientMessage_Logout
|
||||
// *ClientMessage_ApptwinPendingCommandsResponse
|
||||
// *ClientMessage_AcknowledgeVepUpdatesByVin
|
||||
// *ClientMessage_AcknowledgeAssignedVehicles
|
||||
Msg isClientMessage_Msg `protobuf_oneof:"msg"`
|
||||
}
|
||||
|
||||
func (x *ClientMessage) Reset() {
|
||||
*x = ClientMessage{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_client_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *ClientMessage) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*ClientMessage) ProtoMessage() {}
|
||||
|
||||
func (x *ClientMessage) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_client_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use ClientMessage.ProtoReflect.Descriptor instead.
|
||||
func (*ClientMessage) Descriptor() ([]byte, []int) {
|
||||
return file_client_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetTrackingId() string {
|
||||
if x != nil {
|
||||
return x.TrackingId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (m *ClientMessage) GetMsg() isClientMessage_Msg {
|
||||
if m != nil {
|
||||
return m.Msg
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetUnsubscribeRequest() *protos.UnsubscribeRequest {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_UnsubscribeRequest); ok {
|
||||
return x.UnsubscribeRequest
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetCommandRequest() *CommandRequest {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_CommandRequest); ok {
|
||||
return x.CommandRequest
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetTrackingEvent() *TrackingEvent {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_TrackingEvent); ok {
|
||||
return x.TrackingEvent
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetPingInterval() *ConfigurePingInterval {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_PingInterval); ok {
|
||||
return x.PingInterval
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeVepRequest() *AcknowledgeVEPRequest {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeVepRequest); ok {
|
||||
return x.AcknowledgeVepRequest
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeServiceStatusUpdatesByVin() *AcknowledgeServiceStatusUpdatesByVIN {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeServiceStatusUpdatesByVin); ok {
|
||||
return x.AcknowledgeServiceStatusUpdatesByVin
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeServiceStatusUpdate() *AcknowledgeServiceStatusUpdate {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeServiceStatusUpdate); ok {
|
||||
return x.AcknowledgeServiceStatusUpdate
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeUserDataUpdate() *AcknowledgeUserDataUpdate {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeUserDataUpdate); ok {
|
||||
return x.AcknowledgeUserDataUpdate
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeUserPictureUpdate() *AcknowledgeUserPictureUpdate {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeUserPictureUpdate); ok {
|
||||
return x.AcknowledgeUserPictureUpdate
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeUserPinUpdate() *AcknowledgeUserPINUpdate {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeUserPinUpdate); ok {
|
||||
return x.AcknowledgeUserPinUpdate
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetUpdateUserJwtRequest() *UpdateUserJWTRequest {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_UpdateUserJwtRequest); ok {
|
||||
return x.UpdateUserJwtRequest
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeUserVehicleAuthChangedUpdate() *AcknowledgeUserVehicleAuthChangedUpdate {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeUserVehicleAuthChangedUpdate); ok {
|
||||
return x.AcknowledgeUserVehicleAuthChangedUpdate
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeAbilityToGetVehicleMasterDataFromRestApi() *AcknowledgeAbilityToGetVehicleMasterDataFromRestAPI {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeAbilityToGetVehicleMasterDataFromRestApi); ok {
|
||||
return x.AcknowledgeAbilityToGetVehicleMasterDataFromRestApi
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeVehicleUpdated() *AcknowledgeVehicleUpdated {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeVehicleUpdated); ok {
|
||||
return x.AcknowledgeVehicleUpdated
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgePreferredDealerChange() *AcknowledgePreferredDealerChange {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgePreferredDealerChange); ok {
|
||||
return x.AcknowledgePreferredDealerChange
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeApptwinCommandStatusUpdateByVin() *AcknowledgeAppTwinCommandStatusUpdatesByVIN {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeApptwinCommandStatusUpdateByVin); ok {
|
||||
return x.AcknowledgeApptwinCommandStatusUpdateByVin
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetLogout() *Logout {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_Logout); ok {
|
||||
return x.Logout
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetApptwinPendingCommandsResponse() *AppTwinPendingCommandsResponse {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_ApptwinPendingCommandsResponse); ok {
|
||||
return x.ApptwinPendingCommandsResponse
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeVepUpdatesByVin() *AcknowledgeVEPUpdatesByVIN {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeVepUpdatesByVin); ok {
|
||||
return x.AcknowledgeVepUpdatesByVin
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *ClientMessage) GetAcknowledgeAssignedVehicles() *protos.AcknowledgeAssignedVehicles {
|
||||
if x, ok := x.GetMsg().(*ClientMessage_AcknowledgeAssignedVehicles); ok {
|
||||
return x.AcknowledgeAssignedVehicles
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type isClientMessage_Msg interface {
|
||||
isClientMessage_Msg()
|
||||
}
|
||||
|
||||
type ClientMessage_UnsubscribeRequest struct {
|
||||
UnsubscribeRequest *protos.UnsubscribeRequest `protobuf:"bytes,2,opt,name=unsubscribeRequest,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_CommandRequest struct {
|
||||
CommandRequest *CommandRequest `protobuf:"bytes,3,opt,name=commandRequest,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_TrackingEvent struct {
|
||||
TrackingEvent *TrackingEvent `protobuf:"bytes,4,opt,name=tracking_event,json=trackingEvent,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_PingInterval struct {
|
||||
PingInterval *ConfigurePingInterval `protobuf:"bytes,6,opt,name=ping_interval,json=pingInterval,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeVepRequest struct {
|
||||
AcknowledgeVepRequest *AcknowledgeVEPRequest `protobuf:"bytes,7,opt,name=acknowledge_vep_request,json=acknowledgeVepRequest,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeServiceStatusUpdatesByVin struct {
|
||||
AcknowledgeServiceStatusUpdatesByVin *AcknowledgeServiceStatusUpdatesByVIN `protobuf:"bytes,9,opt,name=acknowledge_service_status_updates_by_vin,json=acknowledgeServiceStatusUpdatesByVin,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeServiceStatusUpdate struct {
|
||||
AcknowledgeServiceStatusUpdate *AcknowledgeServiceStatusUpdate `protobuf:"bytes,13,opt,name=acknowledge_service_status_update,json=acknowledgeServiceStatusUpdate,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeUserDataUpdate struct {
|
||||
AcknowledgeUserDataUpdate *AcknowledgeUserDataUpdate `protobuf:"bytes,10,opt,name=acknowledge_user_data_update,json=acknowledgeUserDataUpdate,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeUserPictureUpdate struct {
|
||||
AcknowledgeUserPictureUpdate *AcknowledgeUserPictureUpdate `protobuf:"bytes,11,opt,name=acknowledge_user_picture_update,json=acknowledgeUserPictureUpdate,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeUserPinUpdate struct {
|
||||
AcknowledgeUserPinUpdate *AcknowledgeUserPINUpdate `protobuf:"bytes,12,opt,name=acknowledge_user_pin_update,json=acknowledgeUserPinUpdate,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_UpdateUserJwtRequest struct {
|
||||
UpdateUserJwtRequest *UpdateUserJWTRequest `protobuf:"bytes,14,opt,name=update_user_jwt_request,json=updateUserJwtRequest,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeUserVehicleAuthChangedUpdate struct {
|
||||
AcknowledgeUserVehicleAuthChangedUpdate *AcknowledgeUserVehicleAuthChangedUpdate `protobuf:"bytes,15,opt,name=acknowledge_user_vehicle_auth_changed_update,json=acknowledgeUserVehicleAuthChangedUpdate,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeAbilityToGetVehicleMasterDataFromRestApi struct {
|
||||
AcknowledgeAbilityToGetVehicleMasterDataFromRestApi *AcknowledgeAbilityToGetVehicleMasterDataFromRestAPI `protobuf:"bytes,16,opt,name=acknowledge_ability_to_get_vehicle_master_data_from_rest_api,json=acknowledgeAbilityToGetVehicleMasterDataFromRestApi,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeVehicleUpdated struct {
|
||||
AcknowledgeVehicleUpdated *AcknowledgeVehicleUpdated `protobuf:"bytes,17,opt,name=acknowledge_vehicle_updated,json=acknowledgeVehicleUpdated,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgePreferredDealerChange struct {
|
||||
AcknowledgePreferredDealerChange *AcknowledgePreferredDealerChange `protobuf:"bytes,18,opt,name=acknowledge_preferred_dealer_change,json=acknowledgePreferredDealerChange,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeApptwinCommandStatusUpdateByVin struct {
|
||||
AcknowledgeApptwinCommandStatusUpdateByVin *AcknowledgeAppTwinCommandStatusUpdatesByVIN `protobuf:"bytes,19,opt,name=acknowledge_apptwin_command_status_update_by_vin,json=acknowledgeApptwinCommandStatusUpdateByVin,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_Logout struct {
|
||||
Logout *Logout `protobuf:"bytes,20,opt,name=logout,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_ApptwinPendingCommandsResponse struct {
|
||||
ApptwinPendingCommandsResponse *AppTwinPendingCommandsResponse `protobuf:"bytes,21,opt,name=apptwin_pending_commands_response,json=apptwinPendingCommandsResponse,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeVepUpdatesByVin struct {
|
||||
AcknowledgeVepUpdatesByVin *AcknowledgeVEPUpdatesByVIN `protobuf:"bytes,22,opt,name=acknowledge_vep_updates_by_vin,json=acknowledgeVepUpdatesByVin,proto3,oneof"`
|
||||
}
|
||||
|
||||
type ClientMessage_AcknowledgeAssignedVehicles struct {
|
||||
AcknowledgeAssignedVehicles *protos.AcknowledgeAssignedVehicles `protobuf:"bytes,23,opt,name=acknowledge_assigned_vehicles,json=acknowledgeAssignedVehicles,proto3,oneof"`
|
||||
}
|
||||
|
||||
func (*ClientMessage_UnsubscribeRequest) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_CommandRequest) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_TrackingEvent) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_PingInterval) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeVepRequest) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeServiceStatusUpdatesByVin) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeServiceStatusUpdate) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeUserDataUpdate) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeUserPictureUpdate) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeUserPinUpdate) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_UpdateUserJwtRequest) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeUserVehicleAuthChangedUpdate) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeAbilityToGetVehicleMasterDataFromRestApi) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeVehicleUpdated) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgePreferredDealerChange) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeApptwinCommandStatusUpdateByVin) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_Logout) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_ApptwinPendingCommandsResponse) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeVepUpdatesByVin) isClientMessage_Msg() {}
|
||||
|
||||
func (*ClientMessage_AcknowledgeAssignedVehicles) isClientMessage_Msg() {}
|
||||
|
||||
// Message to send from the app right before logging out of keycloak
|
||||
// Stops the corresponding AppTwin actor and shuts it down and
|
||||
// stops the websocket actor (but does not shut it down. This automatically happens, when the websocket connection is terminated)
|
||||
type Logout struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
}
|
||||
|
||||
func (x *Logout) Reset() {
|
||||
*x = Logout{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_client_proto_msgTypes[1]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *Logout) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*Logout) ProtoMessage() {}
|
||||
|
||||
func (x *Logout) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_client_proto_msgTypes[1]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use Logout.ProtoReflect.Descriptor instead.
|
||||
func (*Logout) Descriptor() ([]byte, []int) {
|
||||
return file_client_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
var File_client_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_client_proto_rawDesc = []byte{
|
||||
0x0a, 0x0c, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x73, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x61, 0x63, 0x74,
|
||||
0x69, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, 0x75,
|
||||
0x73, 0x65, 0x72, 0x2d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x1a, 0x16, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x2d, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e,
|
||||
0x64, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x14, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c,
|
||||
0x65, 0x2d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x10,
|
||||
0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x61, 0x70, 0x69, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x22, 0xe6, 0x10, 0x0a, 0x0d, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x4d, 0x65, 0x73, 0x73, 0x61,
|
||||
0x67, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x69,
|
||||
0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e,
|
||||
0x67, 0x49, 0x64, 0x12, 0x4b, 0x0a, 0x12, 0x75, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69,
|
||||
0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32,
|
||||
0x19, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x6e, 0x73, 0x75, 0x62, 0x73, 0x63, 0x72,
|
||||
0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x12, 0x75, 0x6e,
|
||||
0x73, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x12, 0x3f, 0x0a, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65,
|
||||
0x73, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48,
|
||||
0x00, 0x52, 0x0e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73,
|
||||
0x74, 0x12, 0x3d, 0x0a, 0x0e, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x5f, 0x65, 0x76,
|
||||
0x65, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x2e, 0x54, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x48,
|
||||
0x00, 0x52, 0x0d, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x45, 0x76, 0x65, 0x6e, 0x74,
|
||||
0x12, 0x43, 0x0a, 0x0d, 0x70, 0x69, 0x6e, 0x67, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61,
|
||||
0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e,
|
||||
0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x75, 0x72, 0x65, 0x50, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74,
|
||||
0x65, 0x72, 0x76, 0x61, 0x6c, 0x48, 0x00, 0x52, 0x0c, 0x70, 0x69, 0x6e, 0x67, 0x49, 0x6e, 0x74,
|
||||
0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x56, 0x0a, 0x17, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c,
|
||||
0x65, 0x64, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x70, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74,
|
||||
0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41,
|
||||
0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x56, 0x45, 0x50, 0x52, 0x65, 0x71,
|
||||
0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52, 0x15, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65,
|
||||
0x64, 0x67, 0x65, 0x56, 0x65, 0x70, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x86, 0x01,
|
||||
0x0a, 0x29, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x65,
|
||||
0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64,
|
||||
0x61, 0x74, 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x76, 0x69, 0x6e, 0x18, 0x09, 0x20, 0x01, 0x28,
|
||||
0x0b, 0x32, 0x2b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77,
|
||||
0x6c, 0x65, 0x64, 0x67, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74,
|
||||
0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56, 0x49, 0x4e, 0x48, 0x00,
|
||||
0x52, 0x24, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x53, 0x65, 0x72,
|
||||
0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65,
|
||||
0x73, 0x42, 0x79, 0x56, 0x69, 0x6e, 0x12, 0x72, 0x0a, 0x21, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77,
|
||||
0x6c, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x73, 0x74,
|
||||
0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28,
|
||||
0x0b, 0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77,
|
||||
0x6c, 0x65, 0x64, 0x67, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74,
|
||||
0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x1e, 0x61, 0x63, 0x6b, 0x6e,
|
||||
0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74,
|
||||
0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x63, 0x0a, 0x1c, 0x61, 0x63,
|
||||
0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64,
|
||||
0x61, 0x74, 0x61, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c,
|
||||
0x65, 0x64, 0x67, 0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61,
|
||||
0x74, 0x65, 0x48, 0x00, 0x52, 0x19, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67,
|
||||
0x65, 0x55, 0x73, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12,
|
||||
0x6c, 0x0a, 0x1f, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x75,
|
||||
0x73, 0x65, 0x72, 0x5f, 0x70, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61,
|
||||
0x74, 0x65, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f,
|
||||
0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x55, 0x73, 0x65, 0x72,
|
||||
0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52,
|
||||
0x1c, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x55, 0x73, 0x65, 0x72,
|
||||
0x50, 0x69, 0x63, 0x74, 0x75, 0x72, 0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x60, 0x0a,
|
||||
0x1b, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x75, 0x73, 0x65,
|
||||
0x72, 0x5f, 0x70, 0x69, 0x6e, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0c, 0x20, 0x01,
|
||||
0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f,
|
||||
0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x49, 0x4e, 0x55, 0x70, 0x64,
|
||||
0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x18, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64,
|
||||
0x67, 0x65, 0x55, 0x73, 0x65, 0x72, 0x50, 0x69, 0x6e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12,
|
||||
0x54, 0x0a, 0x17, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6a,
|
||||
0x77, 0x74, 0x5f, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x1b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55,
|
||||
0x73, 0x65, 0x72, 0x4a, 0x57, 0x54, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x48, 0x00, 0x52,
|
||||
0x14, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x4a, 0x77, 0x74, 0x52, 0x65,
|
||||
0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x8f, 0x01, 0x0a, 0x2c, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77,
|
||||
0x6c, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x76, 0x65, 0x68, 0x69, 0x63,
|
||||
0x6c, 0x65, 0x5f, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x5f,
|
||||
0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65,
|
||||
0x55, 0x73, 0x65, 0x72, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x43,
|
||||
0x68, 0x61, 0x6e, 0x67, 0x65, 0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x48, 0x00, 0x52, 0x27,
|
||||
0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x55, 0x73, 0x65, 0x72, 0x56,
|
||||
0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x41, 0x75, 0x74, 0x68, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65,
|
||||
0x64, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0xb7, 0x01, 0x0a, 0x3c, 0x61, 0x63, 0x6b, 0x6e,
|
||||
0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x61, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x5f,
|
||||
0x74, 0x6f, 0x5f, 0x67, 0x65, 0x74, 0x5f, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x5f, 0x6d,
|
||||
0x61, 0x73, 0x74, 0x65, 0x72, 0x5f, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x5f,
|
||||
0x72, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x70, 0x69, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3a,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64,
|
||||
0x67, 0x65, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79, 0x54, 0x6f, 0x47, 0x65, 0x74, 0x56, 0x65,
|
||||
0x68, 0x69, 0x63, 0x6c, 0x65, 0x4d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x46,
|
||||
0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x74, 0x41, 0x50, 0x49, 0x48, 0x00, 0x52, 0x33, 0x61, 0x63,
|
||||
0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x41, 0x62, 0x69, 0x6c, 0x69, 0x74, 0x79,
|
||||
0x54, 0x6f, 0x47, 0x65, 0x74, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x4d, 0x61, 0x73, 0x74,
|
||||
0x65, 0x72, 0x44, 0x61, 0x74, 0x61, 0x46, 0x72, 0x6f, 0x6d, 0x52, 0x65, 0x73, 0x74, 0x41, 0x70,
|
||||
0x69, 0x12, 0x62, 0x0a, 0x1b, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65,
|
||||
0x5f, 0x76, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64,
|
||||
0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41,
|
||||
0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c,
|
||||
0x65, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x48, 0x00, 0x52, 0x19, 0x61, 0x63, 0x6b, 0x6e,
|
||||
0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x55, 0x70,
|
||||
0x64, 0x61, 0x74, 0x65, 0x64, 0x12, 0x78, 0x0a, 0x23, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c,
|
||||
0x65, 0x64, 0x67, 0x65, 0x5f, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x5f, 0x64,
|
||||
0x65, 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x63, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x12, 0x20, 0x01,
|
||||
0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f,
|
||||
0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72, 0x72, 0x65, 0x64, 0x44,
|
||||
0x65, 0x61, 0x6c, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x48, 0x00, 0x52, 0x20, 0x61,
|
||||
0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x50, 0x72, 0x65, 0x66, 0x65, 0x72,
|
||||
0x72, 0x65, 0x64, 0x44, 0x65, 0x61, 0x6c, 0x65, 0x72, 0x43, 0x68, 0x61, 0x6e, 0x67, 0x65, 0x12,
|
||||
0x9a, 0x01, 0x0a, 0x30, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x5f,
|
||||
0x61, 0x70, 0x70, 0x74, 0x77, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x5f,
|
||||
0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x62, 0x79,
|
||||
0x5f, 0x76, 0x69, 0x6e, 0x18, 0x13, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x41, 0x70,
|
||||
0x70, 0x54, 0x77, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74,
|
||||
0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56, 0x49, 0x4e, 0x48, 0x00,
|
||||
0x52, 0x2a, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x41, 0x70, 0x70,
|
||||
0x74, 0x77, 0x69, 0x6e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75,
|
||||
0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x42, 0x79, 0x56, 0x69, 0x6e, 0x12, 0x27, 0x0a, 0x06,
|
||||
0x6c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x18, 0x14, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4c, 0x6f, 0x67, 0x6f, 0x75, 0x74, 0x48, 0x00, 0x52, 0x06, 0x6c,
|
||||
0x6f, 0x67, 0x6f, 0x75, 0x74, 0x12, 0x72, 0x0a, 0x21, 0x61, 0x70, 0x70, 0x74, 0x77, 0x69, 0x6e,
|
||||
0x5f, 0x70, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
|
||||
0x73, 0x5f, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x15, 0x20, 0x01, 0x28, 0x0b,
|
||||
0x32, 0x25, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x70, 0x70, 0x54, 0x77, 0x69, 0x6e,
|
||||
0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x73, 0x52,
|
||||
0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x48, 0x00, 0x52, 0x1e, 0x61, 0x70, 0x70, 0x74, 0x77,
|
||||
0x69, 0x6e, 0x50, 0x65, 0x6e, 0x64, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64,
|
||||
0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x67, 0x0a, 0x1e, 0x61, 0x63, 0x6b,
|
||||
0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x5f, 0x76, 0x65, 0x70, 0x5f, 0x75, 0x70, 0x64,
|
||||
0x61, 0x74, 0x65, 0x73, 0x5f, 0x62, 0x79, 0x5f, 0x76, 0x69, 0x6e, 0x18, 0x16, 0x20, 0x01, 0x28,
|
||||
0x0b, 0x32, 0x21, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77,
|
||||
0x6c, 0x65, 0x64, 0x67, 0x65, 0x56, 0x45, 0x50, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x42,
|
||||
0x79, 0x56, 0x49, 0x4e, 0x48, 0x00, 0x52, 0x1a, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65,
|
||||
0x64, 0x67, 0x65, 0x56, 0x65, 0x70, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56,
|
||||
0x69, 0x6e, 0x12, 0x68, 0x0a, 0x1d, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67,
|
||||
0x65, 0x5f, 0x61, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x65, 0x64, 0x5f, 0x76, 0x65, 0x68, 0x69, 0x63,
|
||||
0x6c, 0x65, 0x73, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x2e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x41, 0x73, 0x73,
|
||||
0x69, 0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x73, 0x48, 0x00, 0x52,
|
||||
0x1b, 0x61, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65, 0x41, 0x73, 0x73, 0x69,
|
||||
0x67, 0x6e, 0x65, 0x64, 0x56, 0x65, 0x68, 0x69, 0x63, 0x6c, 0x65, 0x73, 0x42, 0x05, 0x0a, 0x03,
|
||||
0x6d, 0x73, 0x67, 0x4a, 0x04, 0x08, 0x08, 0x10, 0x09, 0x22, 0x08, 0x0a, 0x06, 0x4c, 0x6f, 0x67,
|
||||
0x6f, 0x75, 0x74, 0x42, 0x1c, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x61, 0x69, 0x6d, 0x6c,
|
||||
0x65, 0x72, 0x2e, 0x6d, 0x62, 0x63, 0x61, 0x72, 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
file_client_proto_rawDescOnce sync.Once
|
||||
file_client_proto_rawDescData = file_client_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_client_proto_rawDescGZIP() []byte {
|
||||
file_client_proto_rawDescOnce.Do(func() {
|
||||
file_client_proto_rawDescData = protoimpl.X.CompressGZIP(file_client_proto_rawDescData)
|
||||
})
|
||||
return file_client_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_client_proto_msgTypes = make([]protoimpl.MessageInfo, 2)
|
||||
var file_client_proto_goTypes = []interface{}{
|
||||
(*ClientMessage)(nil), // 0: proto.ClientMessage
|
||||
(*Logout)(nil), // 1: proto.Logout
|
||||
(*protos.UnsubscribeRequest)(nil), // 2: proto.UnsubscribeRequest
|
||||
(*CommandRequest)(nil), // 3: proto.CommandRequest
|
||||
(*TrackingEvent)(nil), // 4: proto.TrackingEvent
|
||||
(*ConfigurePingInterval)(nil), // 5: proto.ConfigurePingInterval
|
||||
(*AcknowledgeVEPRequest)(nil), // 6: proto.AcknowledgeVEPRequest
|
||||
(*AcknowledgeServiceStatusUpdatesByVIN)(nil), // 7: proto.AcknowledgeServiceStatusUpdatesByVIN
|
||||
(*AcknowledgeServiceStatusUpdate)(nil), // 8: proto.AcknowledgeServiceStatusUpdate
|
||||
(*AcknowledgeUserDataUpdate)(nil), // 9: proto.AcknowledgeUserDataUpdate
|
||||
(*AcknowledgeUserPictureUpdate)(nil), // 10: proto.AcknowledgeUserPictureUpdate
|
||||
(*AcknowledgeUserPINUpdate)(nil), // 11: proto.AcknowledgeUserPINUpdate
|
||||
(*UpdateUserJWTRequest)(nil), // 12: proto.UpdateUserJWTRequest
|
||||
(*AcknowledgeUserVehicleAuthChangedUpdate)(nil), // 13: proto.AcknowledgeUserVehicleAuthChangedUpdate
|
||||
(*AcknowledgeAbilityToGetVehicleMasterDataFromRestAPI)(nil), // 14: proto.AcknowledgeAbilityToGetVehicleMasterDataFromRestAPI
|
||||
(*AcknowledgeVehicleUpdated)(nil), // 15: proto.AcknowledgeVehicleUpdated
|
||||
(*AcknowledgePreferredDealerChange)(nil), // 16: proto.AcknowledgePreferredDealerChange
|
||||
(*AcknowledgeAppTwinCommandStatusUpdatesByVIN)(nil), // 17: proto.AcknowledgeAppTwinCommandStatusUpdatesByVIN
|
||||
(*AppTwinPendingCommandsResponse)(nil), // 18: proto.AppTwinPendingCommandsResponse
|
||||
(*AcknowledgeVEPUpdatesByVIN)(nil), // 19: proto.AcknowledgeVEPUpdatesByVIN
|
||||
(*protos.AcknowledgeAssignedVehicles)(nil), // 20: proto.AcknowledgeAssignedVehicles
|
||||
}
|
||||
var file_client_proto_depIdxs = []int32{
|
||||
2, // 0: proto.ClientMessage.unsubscribeRequest:type_name -> proto.UnsubscribeRequest
|
||||
3, // 1: proto.ClientMessage.commandRequest:type_name -> proto.CommandRequest
|
||||
4, // 2: proto.ClientMessage.tracking_event:type_name -> proto.TrackingEvent
|
||||
5, // 3: proto.ClientMessage.ping_interval:type_name -> proto.ConfigurePingInterval
|
||||
6, // 4: proto.ClientMessage.acknowledge_vep_request:type_name -> proto.AcknowledgeVEPRequest
|
||||
7, // 5: proto.ClientMessage.acknowledge_service_status_updates_by_vin:type_name -> proto.AcknowledgeServiceStatusUpdatesByVIN
|
||||
8, // 6: proto.ClientMessage.acknowledge_service_status_update:type_name -> proto.AcknowledgeServiceStatusUpdate
|
||||
9, // 7: proto.ClientMessage.acknowledge_user_data_update:type_name -> proto.AcknowledgeUserDataUpdate
|
||||
10, // 8: proto.ClientMessage.acknowledge_user_picture_update:type_name -> proto.AcknowledgeUserPictureUpdate
|
||||
11, // 9: proto.ClientMessage.acknowledge_user_pin_update:type_name -> proto.AcknowledgeUserPINUpdate
|
||||
12, // 10: proto.ClientMessage.update_user_jwt_request:type_name -> proto.UpdateUserJWTRequest
|
||||
13, // 11: proto.ClientMessage.acknowledge_user_vehicle_auth_changed_update:type_name -> proto.AcknowledgeUserVehicleAuthChangedUpdate
|
||||
14, // 12: proto.ClientMessage.acknowledge_ability_to_get_vehicle_master_data_from_rest_api:type_name -> proto.AcknowledgeAbilityToGetVehicleMasterDataFromRestAPI
|
||||
15, // 13: proto.ClientMessage.acknowledge_vehicle_updated:type_name -> proto.AcknowledgeVehicleUpdated
|
||||
16, // 14: proto.ClientMessage.acknowledge_preferred_dealer_change:type_name -> proto.AcknowledgePreferredDealerChange
|
||||
17, // 15: proto.ClientMessage.acknowledge_apptwin_command_status_update_by_vin:type_name -> proto.AcknowledgeAppTwinCommandStatusUpdatesByVIN
|
||||
1, // 16: proto.ClientMessage.logout:type_name -> proto.Logout
|
||||
18, // 17: proto.ClientMessage.apptwin_pending_commands_response:type_name -> proto.AppTwinPendingCommandsResponse
|
||||
19, // 18: proto.ClientMessage.acknowledge_vep_updates_by_vin:type_name -> proto.AcknowledgeVEPUpdatesByVIN
|
||||
20, // 19: proto.ClientMessage.acknowledge_assigned_vehicles:type_name -> proto.AcknowledgeAssignedVehicles
|
||||
20, // [20:20] is the sub-list for method output_type
|
||||
20, // [20:20] is the sub-list for method input_type
|
||||
20, // [20:20] is the sub-list for extension type_name
|
||||
20, // [20:20] is the sub-list for extension extendee
|
||||
0, // [0:20] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_client_proto_init() }
|
||||
func file_client_proto_init() {
|
||||
if File_client_proto != nil {
|
||||
return
|
||||
}
|
||||
file_service_activation_proto_init()
|
||||
file_user_events_proto_init()
|
||||
file_vehicle_commands_proto_init()
|
||||
file_vehicle_events_proto_init()
|
||||
file_vehicleapi_proto_init()
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_client_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*ClientMessage); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_client_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*Logout); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
file_client_proto_msgTypes[0].OneofWrappers = []interface{}{
|
||||
(*ClientMessage_UnsubscribeRequest)(nil),
|
||||
(*ClientMessage_CommandRequest)(nil),
|
||||
(*ClientMessage_TrackingEvent)(nil),
|
||||
(*ClientMessage_PingInterval)(nil),
|
||||
(*ClientMessage_AcknowledgeVepRequest)(nil),
|
||||
(*ClientMessage_AcknowledgeServiceStatusUpdatesByVin)(nil),
|
||||
(*ClientMessage_AcknowledgeServiceStatusUpdate)(nil),
|
||||
(*ClientMessage_AcknowledgeUserDataUpdate)(nil),
|
||||
(*ClientMessage_AcknowledgeUserPictureUpdate)(nil),
|
||||
(*ClientMessage_AcknowledgeUserPinUpdate)(nil),
|
||||
(*ClientMessage_UpdateUserJwtRequest)(nil),
|
||||
(*ClientMessage_AcknowledgeUserVehicleAuthChangedUpdate)(nil),
|
||||
(*ClientMessage_AcknowledgeAbilityToGetVehicleMasterDataFromRestApi)(nil),
|
||||
(*ClientMessage_AcknowledgeVehicleUpdated)(nil),
|
||||
(*ClientMessage_AcknowledgePreferredDealerChange)(nil),
|
||||
(*ClientMessage_AcknowledgeApptwinCommandStatusUpdateByVin)(nil),
|
||||
(*ClientMessage_Logout)(nil),
|
||||
(*ClientMessage_ApptwinPendingCommandsResponse)(nil),
|
||||
(*ClientMessage_AcknowledgeVepUpdatesByVin)(nil),
|
||||
(*ClientMessage_AcknowledgeAssignedVehicles)(nil),
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_client_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 2,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
GoTypes: file_client_proto_goTypes,
|
||||
DependencyIndexes: file_client_proto_depIdxs,
|
||||
MessageInfos: file_client_proto_msgTypes,
|
||||
}.Build()
|
||||
File_client_proto = out.File
|
||||
file_client_proto_rawDesc = nil
|
||||
file_client_proto_goTypes = nil
|
||||
file_client_proto_depIdxs = nil
|
||||
}
|
||||
214
vehicle/mercedes/pb/cluster.pb.go
Normal file
214
vehicle/mercedes/pb/cluster.pb.go
Normal file
|
|
@ -0,0 +1,214 @@
|
|||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.32.0
|
||||
// protoc v3.21.12
|
||||
// source: cluster.proto
|
||||
|
||||
package protos
|
||||
|
||||
import (
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
type MemberStatus int32
|
||||
|
||||
const (
|
||||
MemberStatus_UNKNOWN_MEMBER_STATUS MemberStatus = 0
|
||||
MemberStatus_STARTING MemberStatus = 1
|
||||
MemberStatus_READY MemberStatus = 2
|
||||
MemberStatus_STOPPING MemberStatus = 3
|
||||
)
|
||||
|
||||
// Enum value maps for MemberStatus.
|
||||
var (
|
||||
MemberStatus_name = map[int32]string{
|
||||
0: "UNKNOWN_MEMBER_STATUS",
|
||||
1: "STARTING",
|
||||
2: "READY",
|
||||
3: "STOPPING",
|
||||
}
|
||||
MemberStatus_value = map[string]int32{
|
||||
"UNKNOWN_MEMBER_STATUS": 0,
|
||||
"STARTING": 1,
|
||||
"READY": 2,
|
||||
"STOPPING": 3,
|
||||
}
|
||||
)
|
||||
|
||||
func (x MemberStatus) Enum() *MemberStatus {
|
||||
p := new(MemberStatus)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
|
||||
func (x MemberStatus) String() string {
|
||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||
}
|
||||
|
||||
func (MemberStatus) Descriptor() protoreflect.EnumDescriptor {
|
||||
return file_cluster_proto_enumTypes[0].Descriptor()
|
||||
}
|
||||
|
||||
func (MemberStatus) Type() protoreflect.EnumType {
|
||||
return &file_cluster_proto_enumTypes[0]
|
||||
}
|
||||
|
||||
func (x MemberStatus) Number() protoreflect.EnumNumber {
|
||||
return protoreflect.EnumNumber(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use MemberStatus.Descriptor instead.
|
||||
func (MemberStatus) EnumDescriptor() ([]byte, []int) {
|
||||
return file_cluster_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
type AppTwinMemberStatusValue struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Status MemberStatus `protobuf:"varint,1,opt,name=status,proto3,enum=proto.MemberStatus" json:"status,omitempty"`
|
||||
ApptwinCount uint32 `protobuf:"varint,2,opt,name=apptwin_count,json=apptwinCount,proto3" json:"apptwin_count,omitempty"`
|
||||
}
|
||||
|
||||
func (x *AppTwinMemberStatusValue) Reset() {
|
||||
*x = AppTwinMemberStatusValue{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_cluster_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *AppTwinMemberStatusValue) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*AppTwinMemberStatusValue) ProtoMessage() {}
|
||||
|
||||
func (x *AppTwinMemberStatusValue) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_cluster_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use AppTwinMemberStatusValue.ProtoReflect.Descriptor instead.
|
||||
func (*AppTwinMemberStatusValue) Descriptor() ([]byte, []int) {
|
||||
return file_cluster_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (x *AppTwinMemberStatusValue) GetStatus() MemberStatus {
|
||||
if x != nil {
|
||||
return x.Status
|
||||
}
|
||||
return MemberStatus_UNKNOWN_MEMBER_STATUS
|
||||
}
|
||||
|
||||
func (x *AppTwinMemberStatusValue) GetApptwinCount() uint32 {
|
||||
if x != nil {
|
||||
return x.ApptwinCount
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
var File_cluster_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_cluster_proto_rawDesc = []byte{
|
||||
0x0a, 0x0d, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12,
|
||||
0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6c, 0x0a, 0x18, 0x41, 0x70, 0x70, 0x54, 0x77, 0x69,
|
||||
0x6e, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x56, 0x61, 0x6c,
|
||||
0x75, 0x65, 0x12, 0x2b, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x0e, 0x32, 0x13, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x4d, 0x65, 0x6d, 0x62, 0x65,
|
||||
0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12,
|
||||
0x23, 0x0a, 0x0d, 0x61, 0x70, 0x70, 0x74, 0x77, 0x69, 0x6e, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74,
|
||||
0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x61, 0x70, 0x70, 0x74, 0x77, 0x69, 0x6e, 0x43,
|
||||
0x6f, 0x75, 0x6e, 0x74, 0x2a, 0x50, 0x0a, 0x0c, 0x4d, 0x65, 0x6d, 0x62, 0x65, 0x72, 0x53, 0x74,
|
||||
0x61, 0x74, 0x75, 0x73, 0x12, 0x19, 0x0a, 0x15, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x5f,
|
||||
0x4d, 0x45, 0x4d, 0x42, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x10, 0x00, 0x12,
|
||||
0x0c, 0x0a, 0x08, 0x53, 0x54, 0x41, 0x52, 0x54, 0x49, 0x4e, 0x47, 0x10, 0x01, 0x12, 0x09, 0x0a,
|
||||
0x05, 0x52, 0x45, 0x41, 0x44, 0x59, 0x10, 0x02, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x54, 0x4f, 0x50,
|
||||
0x50, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
file_cluster_proto_rawDescOnce sync.Once
|
||||
file_cluster_proto_rawDescData = file_cluster_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_cluster_proto_rawDescGZIP() []byte {
|
||||
file_cluster_proto_rawDescOnce.Do(func() {
|
||||
file_cluster_proto_rawDescData = protoimpl.X.CompressGZIP(file_cluster_proto_rawDescData)
|
||||
})
|
||||
return file_cluster_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_cluster_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||
var file_cluster_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
||||
var file_cluster_proto_goTypes = []interface{}{
|
||||
(MemberStatus)(0), // 0: proto.MemberStatus
|
||||
(*AppTwinMemberStatusValue)(nil), // 1: proto.AppTwinMemberStatusValue
|
||||
}
|
||||
var file_cluster_proto_depIdxs = []int32{
|
||||
0, // 0: proto.AppTwinMemberStatusValue.status:type_name -> proto.MemberStatus
|
||||
1, // [1:1] is the sub-list for method output_type
|
||||
1, // [1:1] is the sub-list for method input_type
|
||||
1, // [1:1] is the sub-list for extension type_name
|
||||
1, // [1:1] is the sub-list for extension extendee
|
||||
0, // [0:1] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_cluster_proto_init() }
|
||||
func file_cluster_proto_init() {
|
||||
if File_cluster_proto != nil {
|
||||
return
|
||||
}
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_cluster_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*AppTwinMemberStatusValue); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_cluster_proto_rawDesc,
|
||||
NumEnums: 1,
|
||||
NumMessages: 1,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
GoTypes: file_cluster_proto_goTypes,
|
||||
DependencyIndexes: file_cluster_proto_depIdxs,
|
||||
EnumInfos: file_cluster_proto_enumTypes,
|
||||
MessageInfos: file_cluster_proto_msgTypes,
|
||||
}.Build()
|
||||
File_cluster_proto = out.File
|
||||
file_cluster_proto_rawDesc = nil
|
||||
file_cluster_proto_goTypes = nil
|
||||
file_cluster_proto_depIdxs = nil
|
||||
}
|
||||
245
vehicle/mercedes/pb/eventpush.pb.go
Normal file
245
vehicle/mercedes/pb/eventpush.pb.go
Normal file
|
|
@ -0,0 +1,245 @@
|
|||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.32.0
|
||||
// protoc v3.21.12
|
||||
// source: eventpush.proto
|
||||
|
||||
package protos
|
||||
|
||||
import (
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
type EventPushCommand struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
Vin string `protobuf:"bytes,1,opt,name=vin,proto3" json:"vin,omitempty"`
|
||||
State VVA_CommandState `protobuf:"varint,2,opt,name=state,json=acpState,proto3,enum=proto.VVA_CommandState" json:"state,omitempty"`
|
||||
Condition VVA_CommandCondition `protobuf:"varint,3,opt,name=condition,json=acpCondition,proto3,enum=proto.VVA_CommandCondition" json:"condition,omitempty"`
|
||||
Type ACP_CommandType `protobuf:"varint,4,opt,name=type,json=acpCommandType,proto3,enum=proto.ACP_CommandType" json:"type,omitempty"`
|
||||
ProcessId int64 `protobuf:"varint,5,opt,name=process_id,json=pid,proto3" json:"process_id,omitempty"`
|
||||
TrackingId string `protobuf:"bytes,6,opt,name=tracking_id,json=trackingId,proto3" json:"tracking_id,omitempty"`
|
||||
CorrelationId string `protobuf:"bytes,7,opt,name=correlation_id,json=correlationId,proto3" json:"correlation_id,omitempty"`
|
||||
ErrorCodes []int32 `protobuf:"varint,8,rep,packed,name=error_codes,json=errorCodes,proto3" json:"error_codes,omitempty"`
|
||||
Guid string `protobuf:"bytes,9,opt,name=guid,proto3" json:"guid,omitempty"`
|
||||
TimestampInS int64 `protobuf:"varint,10,opt,name=timestamp_in_s,json=timestamp,proto3" json:"timestamp_in_s,omitempty"`
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) Reset() {
|
||||
*x = EventPushCommand{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_eventpush_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*EventPushCommand) ProtoMessage() {}
|
||||
|
||||
func (x *EventPushCommand) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_eventpush_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use EventPushCommand.ProtoReflect.Descriptor instead.
|
||||
func (*EventPushCommand) Descriptor() ([]byte, []int) {
|
||||
return file_eventpush_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) GetVin() string {
|
||||
if x != nil {
|
||||
return x.Vin
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) GetState() VVA_CommandState {
|
||||
if x != nil {
|
||||
return x.State
|
||||
}
|
||||
return VVA_UNKNOWN_COMMAND_STATE
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) GetCondition() VVA_CommandCondition {
|
||||
if x != nil {
|
||||
return x.Condition
|
||||
}
|
||||
return VVA_UNKNWON_COMMAND_CONDITION
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) GetType() ACP_CommandType {
|
||||
if x != nil {
|
||||
return x.Type
|
||||
}
|
||||
return ACP_UNKNOWNCOMMANDTYPE
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) GetProcessId() int64 {
|
||||
if x != nil {
|
||||
return x.ProcessId
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) GetTrackingId() string {
|
||||
if x != nil {
|
||||
return x.TrackingId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) GetCorrelationId() string {
|
||||
if x != nil {
|
||||
return x.CorrelationId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) GetErrorCodes() []int32 {
|
||||
if x != nil {
|
||||
return x.ErrorCodes
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) GetGuid() string {
|
||||
if x != nil {
|
||||
return x.Guid
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *EventPushCommand) GetTimestampInS() int64 {
|
||||
if x != nil {
|
||||
return x.TimestampInS
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
var File_eventpush_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_eventpush_proto_rawDesc = []byte{
|
||||
0x0a, 0x0f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x70, 0x75, 0x73, 0x68, 0x2e, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x09, 0x61, 0x63, 0x70, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x1a, 0x0a, 0x67, 0x6f, 0x67, 0x6f, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22,
|
||||
0x83, 0x03, 0x0a, 0x10, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x50, 0x75, 0x73, 0x68, 0x43, 0x6f, 0x6d,
|
||||
0x6d, 0x61, 0x6e, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x76, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28,
|
||||
0x09, 0x52, 0x03, 0x76, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x18,
|
||||
0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x56, 0x56,
|
||||
0x41, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x08,
|
||||
0x61, 0x63, 0x70, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, 0x3c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x64,
|
||||
0x69, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x70, 0x72,
|
||||
0x6f, 0x74, 0x6f, 0x2e, 0x56, 0x56, 0x41, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x43,
|
||||
0x6f, 0x6e, 0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x61, 0x63, 0x70, 0x43, 0x6f, 0x6e,
|
||||
0x64, 0x69, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04,
|
||||
0x20, 0x01, 0x28, 0x0e, 0x32, 0x16, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x41, 0x43, 0x50,
|
||||
0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0e, 0x61, 0x63,
|
||||
0x70, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x17, 0x0a, 0x0a,
|
||||
0x70, 0x72, 0x6f, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x69, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
|
||||
0x52, 0x03, 0x70, 0x69, 0x64, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x72, 0x61, 0x63, 0x6b, 0x69, 0x6e,
|
||||
0x67, 0x5f, 0x69, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x74, 0x72, 0x61, 0x63,
|
||||
0x6b, 0x69, 0x6e, 0x67, 0x49, 0x64, 0x12, 0x25, 0x0a, 0x0e, 0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c,
|
||||
0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d,
|
||||
0x63, 0x6f, 0x72, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x1f, 0x0a,
|
||||
0x0b, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x73, 0x18, 0x08, 0x20, 0x03,
|
||||
0x28, 0x05, 0x52, 0x0a, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x43, 0x6f, 0x64, 0x65, 0x73, 0x12, 0x12,
|
||||
0x0a, 0x04, 0x67, 0x75, 0x69, 0x64, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x67, 0x75,
|
||||
0x69, 0x64, 0x12, 0x21, 0x0a, 0x0e, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f,
|
||||
0x69, 0x6e, 0x5f, 0x73, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65,
|
||||
0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x20, 0xd0, 0xe1, 0x1e, 0x01, 0x0a, 0x1a, 0x63, 0x6f, 0x6d,
|
||||
0x2e, 0x64, 0x61, 0x69, 0x6d, 0x6c, 0x65, 0x72, 0x2e, 0x6d, 0x62, 0x63, 0x61, 0x72, 0x6b, 0x69,
|
||||
0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
file_eventpush_proto_rawDescOnce sync.Once
|
||||
file_eventpush_proto_rawDescData = file_eventpush_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_eventpush_proto_rawDescGZIP() []byte {
|
||||
file_eventpush_proto_rawDescOnce.Do(func() {
|
||||
file_eventpush_proto_rawDescData = protoimpl.X.CompressGZIP(file_eventpush_proto_rawDescData)
|
||||
})
|
||||
return file_eventpush_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_eventpush_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
||||
var file_eventpush_proto_goTypes = []interface{}{
|
||||
(*EventPushCommand)(nil), // 0: proto.EventPushCommand
|
||||
(VVA_CommandState)(0), // 1: proto.VVA.CommandState
|
||||
(VVA_CommandCondition)(0), // 2: proto.VVA.CommandCondition
|
||||
(ACP_CommandType)(0), // 3: proto.ACP.CommandType
|
||||
}
|
||||
var file_eventpush_proto_depIdxs = []int32{
|
||||
1, // 0: proto.EventPushCommand.state:type_name -> proto.VVA.CommandState
|
||||
2, // 1: proto.EventPushCommand.condition:type_name -> proto.VVA.CommandCondition
|
||||
3, // 2: proto.EventPushCommand.type:type_name -> proto.ACP.CommandType
|
||||
3, // [3:3] is the sub-list for method output_type
|
||||
3, // [3:3] is the sub-list for method input_type
|
||||
3, // [3:3] is the sub-list for extension type_name
|
||||
3, // [3:3] is the sub-list for extension extendee
|
||||
0, // [0:3] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_eventpush_proto_init() }
|
||||
func file_eventpush_proto_init() {
|
||||
if File_eventpush_proto != nil {
|
||||
return
|
||||
}
|
||||
file_acp_proto_init()
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_eventpush_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*EventPushCommand); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_eventpush_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 1,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
GoTypes: file_eventpush_proto_goTypes,
|
||||
DependencyIndexes: file_eventpush_proto_depIdxs,
|
||||
MessageInfos: file_eventpush_proto_msgTypes,
|
||||
}.Build()
|
||||
File_eventpush_proto = out.File
|
||||
file_eventpush_proto_rawDesc = nil
|
||||
file_eventpush_proto_goTypes = nil
|
||||
file_eventpush_proto_depIdxs = nil
|
||||
}
|
||||
1392
vehicle/mercedes/pb/protos/protos.pb.go
Normal file
1392
vehicle/mercedes/pb/protos/protos.pb.go
Normal file
File diff suppressed because it is too large
Load diff
496
vehicle/mercedes/pb/service-activation.pb.go
Normal file
496
vehicle/mercedes/pb/service-activation.pb.go
Normal file
|
|
@ -0,0 +1,496 @@
|
|||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.32.0
|
||||
// protoc v3.21.12
|
||||
// source: service-activation.proto
|
||||
|
||||
package protos
|
||||
|
||||
import (
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
type ServiceStatus int32
|
||||
|
||||
const (
|
||||
ServiceStatus_SERVICE_STATUS_UNKNOWN ServiceStatus = 0
|
||||
ServiceStatus_SERVICE_STATUS_ACTIVE ServiceStatus = 1
|
||||
ServiceStatus_SERVICE_STATUS_INACTIVE ServiceStatus = 2
|
||||
ServiceStatus_SERVICE_STATUS_ACTIVATION_PENDING ServiceStatus = 3
|
||||
ServiceStatus_SERVICE_STATUS_DEACTIVATION_PENDING ServiceStatus = 4
|
||||
)
|
||||
|
||||
// Enum value maps for ServiceStatus.
|
||||
var (
|
||||
ServiceStatus_name = map[int32]string{
|
||||
0: "SERVICE_STATUS_UNKNOWN",
|
||||
1: "SERVICE_STATUS_ACTIVE",
|
||||
2: "SERVICE_STATUS_INACTIVE",
|
||||
3: "SERVICE_STATUS_ACTIVATION_PENDING",
|
||||
4: "SERVICE_STATUS_DEACTIVATION_PENDING",
|
||||
}
|
||||
ServiceStatus_value = map[string]int32{
|
||||
"SERVICE_STATUS_UNKNOWN": 0,
|
||||
"SERVICE_STATUS_ACTIVE": 1,
|
||||
"SERVICE_STATUS_INACTIVE": 2,
|
||||
"SERVICE_STATUS_ACTIVATION_PENDING": 3,
|
||||
"SERVICE_STATUS_DEACTIVATION_PENDING": 4,
|
||||
}
|
||||
)
|
||||
|
||||
func (x ServiceStatus) Enum() *ServiceStatus {
|
||||
p := new(ServiceStatus)
|
||||
*p = x
|
||||
return p
|
||||
}
|
||||
|
||||
func (x ServiceStatus) String() string {
|
||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
||||
}
|
||||
|
||||
func (ServiceStatus) Descriptor() protoreflect.EnumDescriptor {
|
||||
return file_service_activation_proto_enumTypes[0].Descriptor()
|
||||
}
|
||||
|
||||
func (ServiceStatus) Type() protoreflect.EnumType {
|
||||
return &file_service_activation_proto_enumTypes[0]
|
||||
}
|
||||
|
||||
func (x ServiceStatus) Number() protoreflect.EnumNumber {
|
||||
return protoreflect.EnumNumber(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use ServiceStatus.Descriptor instead.
|
||||
func (ServiceStatus) EnumDescriptor() ([]byte, []int) {
|
||||
return file_service_activation_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
type AcknowledgeServiceStatusUpdatesByVIN struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
SequenceNumber int32 `protobuf:"varint,1,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"`
|
||||
}
|
||||
|
||||
func (x *AcknowledgeServiceStatusUpdatesByVIN) Reset() {
|
||||
*x = AcknowledgeServiceStatusUpdatesByVIN{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_service_activation_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *AcknowledgeServiceStatusUpdatesByVIN) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*AcknowledgeServiceStatusUpdatesByVIN) ProtoMessage() {}
|
||||
|
||||
func (x *AcknowledgeServiceStatusUpdatesByVIN) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_service_activation_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use AcknowledgeServiceStatusUpdatesByVIN.ProtoReflect.Descriptor instead.
|
||||
func (*AcknowledgeServiceStatusUpdatesByVIN) Descriptor() ([]byte, []int) {
|
||||
return file_service_activation_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (x *AcknowledgeServiceStatusUpdatesByVIN) GetSequenceNumber() int32 {
|
||||
if x != nil {
|
||||
return x.SequenceNumber
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type AcknowledgeServiceStatusUpdate struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
SequenceNumber int32 `protobuf:"varint,1,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"`
|
||||
}
|
||||
|
||||
func (x *AcknowledgeServiceStatusUpdate) Reset() {
|
||||
*x = AcknowledgeServiceStatusUpdate{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_service_activation_proto_msgTypes[1]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *AcknowledgeServiceStatusUpdate) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*AcknowledgeServiceStatusUpdate) ProtoMessage() {}
|
||||
|
||||
func (x *AcknowledgeServiceStatusUpdate) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_service_activation_proto_msgTypes[1]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use AcknowledgeServiceStatusUpdate.ProtoReflect.Descriptor instead.
|
||||
func (*AcknowledgeServiceStatusUpdate) Descriptor() ([]byte, []int) {
|
||||
return file_service_activation_proto_rawDescGZIP(), []int{1}
|
||||
}
|
||||
|
||||
func (x *AcknowledgeServiceStatusUpdate) GetSequenceNumber() int32 {
|
||||
if x != nil {
|
||||
return x.SequenceNumber
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
type ServiceStatusUpdatesByVIN struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
SequenceNumber int32 `protobuf:"varint,1,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"`
|
||||
// Updates with VinOrFins
|
||||
Updates map[string]*ServiceStatusUpdate `protobuf:"bytes,2,rep,name=updates,proto3" json:"updates,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdatesByVIN) Reset() {
|
||||
*x = ServiceStatusUpdatesByVIN{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_service_activation_proto_msgTypes[2]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdatesByVIN) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*ServiceStatusUpdatesByVIN) ProtoMessage() {}
|
||||
|
||||
func (x *ServiceStatusUpdatesByVIN) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_service_activation_proto_msgTypes[2]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use ServiceStatusUpdatesByVIN.ProtoReflect.Descriptor instead.
|
||||
func (*ServiceStatusUpdatesByVIN) Descriptor() ([]byte, []int) {
|
||||
return file_service_activation_proto_rawDescGZIP(), []int{2}
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdatesByVIN) GetSequenceNumber() int32 {
|
||||
if x != nil {
|
||||
return x.SequenceNumber
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdatesByVIN) GetUpdates() map[string]*ServiceStatusUpdate {
|
||||
if x != nil {
|
||||
return x.Updates
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
type ServiceStatusUpdate struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
SequenceNumber int32 `protobuf:"varint,1,opt,name=sequence_number,json=sequenceNumber,proto3" json:"sequence_number,omitempty"`
|
||||
CiamId string `protobuf:"bytes,7,opt,name=ciam_id,json=ciamId,proto3" json:"ciam_id,omitempty"`
|
||||
// FinOrVin
|
||||
Vin string `protobuf:"bytes,5,opt,name=vin,proto3" json:"vin,omitempty"`
|
||||
// when was the event emitted? This is the time of the update,
|
||||
// not when the attributes where changed. To compare attribute changes, you need to look into each attribute timestamp
|
||||
EmitTimestamp int64 `protobuf:"varint,2,opt,name=emit_timestamp,json=emitTimestamp,proto3" json:"emit_timestamp,omitempty"`
|
||||
// When was the event emitted (milliseconds in Unix time)
|
||||
EmitTimestampInMs int64 `protobuf:"varint,8,opt,name=emit_timestamp_in_ms,json=emitTimestampInMs,proto3" json:"emit_timestamp_in_ms,omitempty"`
|
||||
// serviceID -> Status
|
||||
Updates map[int32]ServiceStatus `protobuf:"bytes,6,rep,name=updates,proto3" json:"updates,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"varint,2,opt,name=value,proto3,enum=proto.ServiceStatus"`
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdate) Reset() {
|
||||
*x = ServiceStatusUpdate{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_service_activation_proto_msgTypes[3]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdate) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*ServiceStatusUpdate) ProtoMessage() {}
|
||||
|
||||
func (x *ServiceStatusUpdate) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_service_activation_proto_msgTypes[3]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use ServiceStatusUpdate.ProtoReflect.Descriptor instead.
|
||||
func (*ServiceStatusUpdate) Descriptor() ([]byte, []int) {
|
||||
return file_service_activation_proto_rawDescGZIP(), []int{3}
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdate) GetSequenceNumber() int32 {
|
||||
if x != nil {
|
||||
return x.SequenceNumber
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdate) GetCiamId() string {
|
||||
if x != nil {
|
||||
return x.CiamId
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdate) GetVin() string {
|
||||
if x != nil {
|
||||
return x.Vin
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdate) GetEmitTimestamp() int64 {
|
||||
if x != nil {
|
||||
return x.EmitTimestamp
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdate) GetEmitTimestampInMs() int64 {
|
||||
if x != nil {
|
||||
return x.EmitTimestampInMs
|
||||
}
|
||||
return 0
|
||||
}
|
||||
|
||||
func (x *ServiceStatusUpdate) GetUpdates() map[int32]ServiceStatus {
|
||||
if x != nil {
|
||||
return x.Updates
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var File_service_activation_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_service_activation_proto_rawDesc = []byte{
|
||||
0x0a, 0x18, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2d, 0x61, 0x63, 0x74, 0x69, 0x76, 0x61,
|
||||
0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74,
|
||||
0x6f, 0x22, 0x4f, 0x0a, 0x24, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67, 0x65,
|
||||
0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64,
|
||||
0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56, 0x49, 0x4e, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x71,
|
||||
0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01,
|
||||
0x28, 0x05, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62,
|
||||
0x65, 0x72, 0x22, 0x49, 0x0a, 0x1e, 0x41, 0x63, 0x6b, 0x6e, 0x6f, 0x77, 0x6c, 0x65, 0x64, 0x67,
|
||||
0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70,
|
||||
0x64, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a, 0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65,
|
||||
0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73,
|
||||
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x22, 0xe5, 0x01,
|
||||
0x0a, 0x19, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55,
|
||||
0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x42, 0x79, 0x56, 0x49, 0x4e, 0x12, 0x27, 0x0a, 0x0f, 0x73,
|
||||
0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x18, 0x01,
|
||||
0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x4e, 0x75,
|
||||
0x6d, 0x62, 0x65, 0x72, 0x12, 0x47, 0x0a, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x18,
|
||||
0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65,
|
||||
0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74,
|
||||
0x65, 0x73, 0x42, 0x79, 0x56, 0x49, 0x4e, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45,
|
||||
0x6e, 0x74, 0x72, 0x79, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x56, 0x0a,
|
||||
0x0c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
|
||||
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
|
||||
0x30, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a,
|
||||
0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74,
|
||||
0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75,
|
||||
0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0xd6, 0x02, 0x0a, 0x13, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63,
|
||||
0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x27, 0x0a,
|
||||
0x0f, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65, 0x5f, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72,
|
||||
0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x73, 0x65, 0x71, 0x75, 0x65, 0x6e, 0x63, 0x65,
|
||||
0x4e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, 0x17, 0x0a, 0x07, 0x63, 0x69, 0x61, 0x6d, 0x5f, 0x69,
|
||||
0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x69, 0x61, 0x6d, 0x49, 0x64, 0x12,
|
||||
0x10, 0x0a, 0x03, 0x76, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x76, 0x69,
|
||||
0x6e, 0x12, 0x25, 0x0a, 0x0e, 0x65, 0x6d, 0x69, 0x74, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74,
|
||||
0x61, 0x6d, 0x70, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x65, 0x6d, 0x69, 0x74, 0x54,
|
||||
0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x12, 0x2f, 0x0a, 0x14, 0x65, 0x6d, 0x69, 0x74,
|
||||
0x5f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x5f, 0x69, 0x6e, 0x5f, 0x6d, 0x73,
|
||||
0x18, 0x08, 0x20, 0x01, 0x28, 0x03, 0x52, 0x11, 0x65, 0x6d, 0x69, 0x74, 0x54, 0x69, 0x6d, 0x65,
|
||||
0x73, 0x74, 0x61, 0x6d, 0x70, 0x49, 0x6e, 0x4d, 0x73, 0x12, 0x41, 0x0a, 0x07, 0x75, 0x70, 0x64,
|
||||
0x61, 0x74, 0x65, 0x73, 0x18, 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
|
||||
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e,
|
||||
0x74, 0x72, 0x79, 0x52, 0x07, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x1a, 0x50, 0x0a, 0x0c,
|
||||
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03,
|
||||
0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2a,
|
||||
0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e,
|
||||
0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61,
|
||||
0x74, 0x75, 0x73, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x2a, 0xb3,
|
||||
0x01, 0x0a, 0x0d, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73,
|
||||
0x12, 0x1a, 0x0a, 0x16, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54,
|
||||
0x55, 0x53, 0x5f, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x19, 0x0a, 0x15,
|
||||
0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41,
|
||||
0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x1b, 0x0a, 0x17, 0x53, 0x45, 0x52, 0x56, 0x49,
|
||||
0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x49, 0x4e, 0x41, 0x43, 0x54, 0x49,
|
||||
0x56, 0x45, 0x10, 0x02, 0x12, 0x25, 0x0a, 0x21, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f,
|
||||
0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x41, 0x54, 0x49, 0x4f,
|
||||
0x4e, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, 0x47, 0x10, 0x03, 0x12, 0x27, 0x0a, 0x23, 0x53,
|
||||
0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45,
|
||||
0x41, 0x43, 0x54, 0x49, 0x56, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49,
|
||||
0x4e, 0x47, 0x10, 0x04, 0x42, 0x1c, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x61, 0x69, 0x6d,
|
||||
0x6c, 0x65, 0x72, 0x2e, 0x6d, 0x62, 0x63, 0x61, 0x72, 0x6b, 0x69, 0x74, 0x2e, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
file_service_activation_proto_rawDescOnce sync.Once
|
||||
file_service_activation_proto_rawDescData = file_service_activation_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_service_activation_proto_rawDescGZIP() []byte {
|
||||
file_service_activation_proto_rawDescOnce.Do(func() {
|
||||
file_service_activation_proto_rawDescData = protoimpl.X.CompressGZIP(file_service_activation_proto_rawDescData)
|
||||
})
|
||||
return file_service_activation_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_service_activation_proto_enumTypes = make([]protoimpl.EnumInfo, 1)
|
||||
var file_service_activation_proto_msgTypes = make([]protoimpl.MessageInfo, 6)
|
||||
var file_service_activation_proto_goTypes = []interface{}{
|
||||
(ServiceStatus)(0), // 0: proto.ServiceStatus
|
||||
(*AcknowledgeServiceStatusUpdatesByVIN)(nil), // 1: proto.AcknowledgeServiceStatusUpdatesByVIN
|
||||
(*AcknowledgeServiceStatusUpdate)(nil), // 2: proto.AcknowledgeServiceStatusUpdate
|
||||
(*ServiceStatusUpdatesByVIN)(nil), // 3: proto.ServiceStatusUpdatesByVIN
|
||||
(*ServiceStatusUpdate)(nil), // 4: proto.ServiceStatusUpdate
|
||||
nil, // 5: proto.ServiceStatusUpdatesByVIN.UpdatesEntry
|
||||
nil, // 6: proto.ServiceStatusUpdate.UpdatesEntry
|
||||
}
|
||||
var file_service_activation_proto_depIdxs = []int32{
|
||||
5, // 0: proto.ServiceStatusUpdatesByVIN.updates:type_name -> proto.ServiceStatusUpdatesByVIN.UpdatesEntry
|
||||
6, // 1: proto.ServiceStatusUpdate.updates:type_name -> proto.ServiceStatusUpdate.UpdatesEntry
|
||||
4, // 2: proto.ServiceStatusUpdatesByVIN.UpdatesEntry.value:type_name -> proto.ServiceStatusUpdate
|
||||
0, // 3: proto.ServiceStatusUpdate.UpdatesEntry.value:type_name -> proto.ServiceStatus
|
||||
4, // [4:4] is the sub-list for method output_type
|
||||
4, // [4:4] is the sub-list for method input_type
|
||||
4, // [4:4] is the sub-list for extension type_name
|
||||
4, // [4:4] is the sub-list for extension extendee
|
||||
0, // [0:4] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_service_activation_proto_init() }
|
||||
func file_service_activation_proto_init() {
|
||||
if File_service_activation_proto != nil {
|
||||
return
|
||||
}
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_service_activation_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*AcknowledgeServiceStatusUpdatesByVIN); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_service_activation_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*AcknowledgeServiceStatusUpdate); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_service_activation_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*ServiceStatusUpdatesByVIN); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
file_service_activation_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*ServiceStatusUpdate); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_service_activation_proto_rawDesc,
|
||||
NumEnums: 1,
|
||||
NumMessages: 6,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
GoTypes: file_service_activation_proto_goTypes,
|
||||
DependencyIndexes: file_service_activation_proto_depIdxs,
|
||||
EnumInfos: file_service_activation_proto_enumTypes,
|
||||
MessageInfos: file_service_activation_proto_msgTypes,
|
||||
}.Build()
|
||||
File_service_activation_proto = out.File
|
||||
file_service_activation_proto_rawDesc = nil
|
||||
file_service_activation_proto_goTypes = nil
|
||||
file_service_activation_proto_depIdxs = nil
|
||||
}
|
||||
1573
vehicle/mercedes/pb/user-events.pb.go
Normal file
1573
vehicle/mercedes/pb/user-events.pb.go
Normal file
File diff suppressed because it is too large
Load diff
5921
vehicle/mercedes/pb/vehicle-commands.pb.go
Normal file
5921
vehicle/mercedes/pb/vehicle-commands.pb.go
Normal file
File diff suppressed because it is too large
Load diff
4428
vehicle/mercedes/pb/vehicle-events.pb.go
Normal file
4428
vehicle/mercedes/pb/vehicle-events.pb.go
Normal file
File diff suppressed because it is too large
Load diff
1322
vehicle/mercedes/pb/vehicleapi.pb.go
Normal file
1322
vehicle/mercedes/pb/vehicleapi.pb.go
Normal file
File diff suppressed because it is too large
Load diff
153
vehicle/mercedes/pb/vin-events.pb.go
Normal file
153
vehicle/mercedes/pb/vin-events.pb.go
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
||||
// versions:
|
||||
// protoc-gen-go v1.32.0
|
||||
// protoc v3.21.12
|
||||
// source: vin-events.proto
|
||||
|
||||
package protos
|
||||
|
||||
import (
|
||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
||||
reflect "reflect"
|
||||
sync "sync"
|
||||
)
|
||||
|
||||
const (
|
||||
// Verify that this generated code is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
||||
)
|
||||
|
||||
type VINUpdate struct {
|
||||
state protoimpl.MessageState
|
||||
sizeCache protoimpl.SizeCache
|
||||
unknownFields protoimpl.UnknownFields
|
||||
|
||||
AddedVINs []string `protobuf:"bytes,1,rep,name=addedVINs,proto3" json:"addedVINs,omitempty"`
|
||||
DeletedVINs []string `protobuf:"bytes,2,rep,name=deletedVINs,proto3" json:"deletedVINs,omitempty"`
|
||||
}
|
||||
|
||||
func (x *VINUpdate) Reset() {
|
||||
*x = VINUpdate{}
|
||||
if protoimpl.UnsafeEnabled {
|
||||
mi := &file_vin_events_proto_msgTypes[0]
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
}
|
||||
|
||||
func (x *VINUpdate) String() string {
|
||||
return protoimpl.X.MessageStringOf(x)
|
||||
}
|
||||
|
||||
func (*VINUpdate) ProtoMessage() {}
|
||||
|
||||
func (x *VINUpdate) ProtoReflect() protoreflect.Message {
|
||||
mi := &file_vin_events_proto_msgTypes[0]
|
||||
if protoimpl.UnsafeEnabled && x != nil {
|
||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
||||
if ms.LoadMessageInfo() == nil {
|
||||
ms.StoreMessageInfo(mi)
|
||||
}
|
||||
return ms
|
||||
}
|
||||
return mi.MessageOf(x)
|
||||
}
|
||||
|
||||
// Deprecated: Use VINUpdate.ProtoReflect.Descriptor instead.
|
||||
func (*VINUpdate) Descriptor() ([]byte, []int) {
|
||||
return file_vin_events_proto_rawDescGZIP(), []int{0}
|
||||
}
|
||||
|
||||
func (x *VINUpdate) GetAddedVINs() []string {
|
||||
if x != nil {
|
||||
return x.AddedVINs
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (x *VINUpdate) GetDeletedVINs() []string {
|
||||
if x != nil {
|
||||
return x.DeletedVINs
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
var File_vin_events_proto protoreflect.FileDescriptor
|
||||
|
||||
var file_vin_events_proto_rawDesc = []byte{
|
||||
0x0a, 0x10, 0x76, 0x69, 0x6e, 0x2d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x73, 0x2e, 0x70, 0x72, 0x6f,
|
||||
0x74, 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4b, 0x0a, 0x09, 0x56, 0x49, 0x4e,
|
||||
0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x64, 0x64, 0x65, 0x64, 0x56,
|
||||
0x49, 0x4e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x61, 0x64, 0x64, 0x65, 0x64,
|
||||
0x56, 0x49, 0x4e, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x64, 0x56,
|
||||
0x49, 0x4e, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x6c, 0x65, 0x74,
|
||||
0x65, 0x64, 0x56, 0x49, 0x4e, 0x73, 0x42, 0x1c, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x64, 0x61,
|
||||
0x69, 0x6d, 0x6c, 0x65, 0x72, 0x2e, 0x6d, 0x62, 0x63, 0x61, 0x72, 0x6b, 0x69, 0x74, 0x2e, 0x70,
|
||||
0x72, 0x6f, 0x74, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
||||
}
|
||||
|
||||
var (
|
||||
file_vin_events_proto_rawDescOnce sync.Once
|
||||
file_vin_events_proto_rawDescData = file_vin_events_proto_rawDesc
|
||||
)
|
||||
|
||||
func file_vin_events_proto_rawDescGZIP() []byte {
|
||||
file_vin_events_proto_rawDescOnce.Do(func() {
|
||||
file_vin_events_proto_rawDescData = protoimpl.X.CompressGZIP(file_vin_events_proto_rawDescData)
|
||||
})
|
||||
return file_vin_events_proto_rawDescData
|
||||
}
|
||||
|
||||
var file_vin_events_proto_msgTypes = make([]protoimpl.MessageInfo, 1)
|
||||
var file_vin_events_proto_goTypes = []interface{}{
|
||||
(*VINUpdate)(nil), // 0: proto.VINUpdate
|
||||
}
|
||||
var file_vin_events_proto_depIdxs = []int32{
|
||||
0, // [0:0] is the sub-list for method output_type
|
||||
0, // [0:0] is the sub-list for method input_type
|
||||
0, // [0:0] is the sub-list for extension type_name
|
||||
0, // [0:0] is the sub-list for extension extendee
|
||||
0, // [0:0] is the sub-list for field type_name
|
||||
}
|
||||
|
||||
func init() { file_vin_events_proto_init() }
|
||||
func file_vin_events_proto_init() {
|
||||
if File_vin_events_proto != nil {
|
||||
return
|
||||
}
|
||||
if !protoimpl.UnsafeEnabled {
|
||||
file_vin_events_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
||||
switch v := v.(*VINUpdate); i {
|
||||
case 0:
|
||||
return &v.state
|
||||
case 1:
|
||||
return &v.sizeCache
|
||||
case 2:
|
||||
return &v.unknownFields
|
||||
default:
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
type x struct{}
|
||||
out := protoimpl.TypeBuilder{
|
||||
File: protoimpl.DescBuilder{
|
||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
||||
RawDescriptor: file_vin_events_proto_rawDesc,
|
||||
NumEnums: 0,
|
||||
NumMessages: 1,
|
||||
NumExtensions: 0,
|
||||
NumServices: 0,
|
||||
},
|
||||
GoTypes: file_vin_events_proto_goTypes,
|
||||
DependencyIndexes: file_vin_events_proto_depIdxs,
|
||||
MessageInfos: file_vin_events_proto_msgTypes,
|
||||
}.Build()
|
||||
File_vin_events_proto = out.File
|
||||
file_vin_events_proto_rawDesc = nil
|
||||
file_vin_events_proto_goTypes = nil
|
||||
file_vin_events_proto_depIdxs = nil
|
||||
}
|
||||
110
vehicle/mercedes/provider.go
Normal file
110
vehicle/mercedes/provider.go
Normal file
|
|
@ -0,0 +1,110 @@
|
|||
package mercedes
|
||||
|
||||
import (
|
||||
"time"
|
||||
|
||||
"github.com/evcc-io/evcc/api"
|
||||
"github.com/evcc-io/evcc/provider"
|
||||
)
|
||||
|
||||
type Provider struct {
|
||||
dataG func() (StatusResponse, error)
|
||||
}
|
||||
|
||||
func NewProvider(api *API, vin string, cache time.Duration) *Provider {
|
||||
impl := &Provider{
|
||||
dataG: provider.Cached(func() (StatusResponse, error) {
|
||||
return api.Status(vin)
|
||||
}, cache),
|
||||
}
|
||||
return impl
|
||||
}
|
||||
|
||||
// Soc implements the api.Vehicle interface
|
||||
func (v *Provider) Soc() (float64, error) {
|
||||
res, err := v.dataG()
|
||||
return res.EvInfo.Battery.StateOfCharge, err
|
||||
}
|
||||
|
||||
var _ api.VehicleRange = (*Provider)(nil)
|
||||
|
||||
// Range implements the api.VehicleRange interface
|
||||
func (v *Provider) Range() (int64, error) {
|
||||
res, err := v.dataG()
|
||||
return int64(res.EvInfo.Battery.DistanceToEmpty.Value), err
|
||||
}
|
||||
|
||||
var _ api.VehicleOdometer = (*Provider)(nil)
|
||||
|
||||
// Odometer implements the api.VehicleOdometer interface
|
||||
func (v *Provider) Odometer() (float64, error) {
|
||||
res, err := v.dataG()
|
||||
return float64(res.VehicleInfo.Odometer.Value), err
|
||||
}
|
||||
|
||||
var _ api.ChargeState = (*Provider)(nil)
|
||||
|
||||
// Status implements the api.ChargeState interface
|
||||
func (v *Provider) Status() (api.ChargeStatus, error) {
|
||||
status := api.StatusA // disconnected
|
||||
|
||||
res, err := v.dataG()
|
||||
if err == nil {
|
||||
status = MapChargeStatus(res.EvInfo.Battery.ChargingStatus)
|
||||
}
|
||||
|
||||
return status, err
|
||||
}
|
||||
|
||||
var _ api.VehiclePosition = (*Provider)(nil)
|
||||
|
||||
// Position implements the api.VehiclePosition interface
|
||||
func (v *Provider) Position() (float64, float64, error) {
|
||||
res, err := v.dataG()
|
||||
return res.LocationResponse.Latitude, res.LocationResponse.Longitude, err
|
||||
}
|
||||
|
||||
var _ api.VehicleFinishTimer = (*Provider)(nil)
|
||||
|
||||
// FinishTime implements the api.VehicleFinishTimer interface
|
||||
func (v *Provider) FinishTime() (time.Time, error) {
|
||||
data, err := v.dataG()
|
||||
if err != nil {
|
||||
return time.Time{}, err
|
||||
}
|
||||
|
||||
now := time.Now()
|
||||
res := time.Date(now.Year(), now.Month(), now.Day(), 0, data.EvInfo.Battery.EndOfChargeTime, 0, 0, now.Location())
|
||||
|
||||
if res.Before(now) {
|
||||
res = res.Add(24 * time.Hour)
|
||||
}
|
||||
return res, nil
|
||||
}
|
||||
|
||||
// Charging Status
|
||||
// 0=CHARGING
|
||||
// 1=CHARGING_ENDS
|
||||
// 2=CHARGE_BREAK
|
||||
// 3=UNPLUGGED
|
||||
// 4=FAILURE
|
||||
// 5=SLOW
|
||||
// 6=FAST
|
||||
// 7=DISCHARGING
|
||||
// 8=NO_CHARGING
|
||||
// 9=SLOW_CHARGING_AFTER_REACHING_TRIP_TARGET
|
||||
// 10=CHARGING_AFTER_REACHING_TRIP_TARGET
|
||||
// 11=FAST_CHARGING_AFTER_REACHING_TRIP_TARGET
|
||||
// 12=UNKNOWN
|
||||
|
||||
func MapChargeStatus(lookup int) api.ChargeStatus {
|
||||
switch lookup {
|
||||
case
|
||||
0, 5, 6, 9, 10, 11:
|
||||
return api.StatusC
|
||||
case
|
||||
1, 2, 4, 7, 8:
|
||||
return api.StatusB
|
||||
}
|
||||
return api.StatusA
|
||||
}
|
||||
94
vehicle/mercedes/setupapi.go
Normal file
94
vehicle/mercedes/setupapi.go
Normal file
|
|
@ -0,0 +1,94 @@
|
|||
package mercedes
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/evcc-io/evcc/util"
|
||||
"github.com/evcc-io/evcc/util/oauth"
|
||||
"github.com/evcc-io/evcc/util/request"
|
||||
"github.com/evcc-io/evcc/util/transport"
|
||||
"github.com/google/uuid"
|
||||
"golang.org/x/oauth2"
|
||||
)
|
||||
|
||||
type SetupAPI struct {
|
||||
log *util.Logger
|
||||
account string
|
||||
region string
|
||||
*request.Helper
|
||||
}
|
||||
|
||||
func NewSetupAPI(log *util.Logger, account string, region string) *SetupAPI {
|
||||
client := request.NewHelper(log)
|
||||
|
||||
client.Transport = &transport.Decorator{
|
||||
Base: client.Transport,
|
||||
Decorator: transport.DecorateHeaders(mbheaders(true, region)),
|
||||
}
|
||||
|
||||
return &SetupAPI{
|
||||
Helper: client,
|
||||
log: log,
|
||||
region: region,
|
||||
account: account,
|
||||
}
|
||||
}
|
||||
|
||||
func (vs *SetupAPI) RequestPin() (bool, *string, error) {
|
||||
client := request.NewHelper(vs.log)
|
||||
|
||||
client.Transport = &transport.Decorator{
|
||||
Base: client.Transport,
|
||||
Decorator: transport.DecorateHeaders(mbheaders(false, vs.region)),
|
||||
}
|
||||
|
||||
// Preflight request required to get a pin
|
||||
uri := fmt.Sprintf("%s/v1/config", getBffUri(vs.region))
|
||||
if _, err := client.GetBody(uri); err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
nonce := uuid.New().String()
|
||||
data := PinRequest{
|
||||
EmailOrPhoneNumber: vs.account,
|
||||
CountryCode: "EN",
|
||||
Nonce: nonce,
|
||||
}
|
||||
|
||||
uri = fmt.Sprintf("%s/v1/login", getBffUri(vs.region))
|
||||
req, err := request.New(http.MethodPost, uri, request.MarshalJSON(data))
|
||||
if err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
var res PinResponse
|
||||
if err := client.DoJSON(req, &res); err != nil {
|
||||
return false, nil, err
|
||||
}
|
||||
|
||||
// Only if the response field email is the same like the account an email is send by the servers.
|
||||
return res.UserName == vs.account, &nonce, nil
|
||||
}
|
||||
|
||||
func (vs *SetupAPI) RequestAccessToken(nonce string, pin string) (*oauth2.Token, error) {
|
||||
data := url.Values{
|
||||
"client_id": []string{ClientId},
|
||||
"grant_type": []string{"password"},
|
||||
"password": []string{fmt.Sprintf("%s:%s", nonce, pin)},
|
||||
"scope": []string{"openid email phone profile offline_access ciam-uid"},
|
||||
"username": []string{vs.account},
|
||||
}
|
||||
|
||||
uri := fmt.Sprintf("%s/as/token.oauth2", IdUri)
|
||||
req, _ := request.New(http.MethodPost, uri, strings.NewReader(data.Encode()), mbheaders(true, vs.region))
|
||||
|
||||
var res oauth.Token
|
||||
if err := vs.DoJSON(req, &res); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
return (*oauth2.Token)(&res), nil
|
||||
}
|
||||
74
vehicle/mercedes/types.go
Normal file
74
vehicle/mercedes/types.go
Normal file
|
|
@ -0,0 +1,74 @@
|
|||
package mercedes
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"html"
|
||||
"time"
|
||||
)
|
||||
|
||||
var Regions = map[string]string{
|
||||
"apac": "Asia-Pacific",
|
||||
"ece": "ECE",
|
||||
"noram": "North-America",
|
||||
}
|
||||
|
||||
type ErrorInfo struct {
|
||||
ErrorCode int
|
||||
ErrorMessage string
|
||||
ErrorDetails string
|
||||
}
|
||||
|
||||
func (e ErrorInfo) Error() error {
|
||||
if e.ErrorCode == 0 {
|
||||
return nil
|
||||
}
|
||||
return fmt.Errorf("%s: %s", e.ErrorMessage, html.UnescapeString(e.ErrorDetails))
|
||||
}
|
||||
|
||||
type PinRequest struct {
|
||||
EmailOrPhoneNumber string `json:"emailOrPhoneNumber"`
|
||||
CountryCode string `json:"countryCode"`
|
||||
Nonce string `json:"nonce"`
|
||||
}
|
||||
|
||||
type PinResponse struct {
|
||||
IsEmail bool `json:"isEmail"`
|
||||
UserName string `json:"username"`
|
||||
}
|
||||
|
||||
type VehiclesResponse struct {
|
||||
AssignedVehicles []Vehicle
|
||||
}
|
||||
|
||||
type Vehicle struct {
|
||||
Fin string
|
||||
}
|
||||
|
||||
type StatusResponse struct {
|
||||
VehicleInfo struct {
|
||||
Odometer struct {
|
||||
Value int
|
||||
Unit string
|
||||
}
|
||||
Timestamp time.Time
|
||||
}
|
||||
EvInfo struct {
|
||||
Battery struct {
|
||||
ChargingStatus int
|
||||
DistanceToEmpty struct {
|
||||
Value int
|
||||
Unit string
|
||||
}
|
||||
StateOfCharge float64 // 75
|
||||
EndOfChargeTime int // Minutes after midnight
|
||||
TotalRange int // 17
|
||||
}
|
||||
Timestamp time.Time
|
||||
}
|
||||
LocationResponse struct {
|
||||
TimeStamp time.Time
|
||||
Longitude float64
|
||||
Latitude float64
|
||||
}
|
||||
Timestamp time.Time
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue