package repository import "joylink.club/rtsssimulation/repository/model/proto" // 组合的电子元件 type IGroupedElectronicComponent interface { Identity Code() string } // Relay 继电器 type Relay struct { Identity code string model proto.Relay_Model defaultPos proto.Relay_Pos // 所属车站 station *Station } func newRelay(id string, code string, model proto.Relay_Model, defaultPos proto.Relay_Pos, s *Station) *Relay { return &Relay{ Identity: identity{ id: id, deviceType: proto.DeviceType_DeviceType_Relay, }, code: code, model: model, defaultPos: defaultPos, station: s, } } func (r *Relay) Code() string { return r.code } func (r *Relay) Model() proto.Relay_Model { return r.model } func (r *Relay) DefaultPos() proto.Relay_Pos { return r.defaultPos } // ElectronicComponentGroup 电子元件组合 type ElectronicComponentGroup struct { code string components []IGroupedElectronicComponent } func (r *ElectronicComponentGroup) Code() string { return r.code } func (r *ElectronicComponentGroup) Components() []IGroupedElectronicComponent { return r.components } // PhaseFailureProtector 断相保护器 type PhaseFailureProtector struct { Identity code string } func (dbq *PhaseFailureProtector) Code() string { return dbq.code } func newPhaseFailureProtector(id string, code string) *PhaseFailureProtector { return &PhaseFailureProtector{ Identity: identity{ id: id, deviceType: proto.DeviceType_DeviceType_PhaseFailureProtector, }, code: code, } } // 按钮 type Button struct { Identity code string buttonType proto.Button_ButtonType hasLight bool } func NewButton(id string, code string, buttonType proto.Button_ButtonType) *Button { return &Button{ Identity: identity{id, proto.DeviceType_DeviceType_Button}, code: code, buttonType: buttonType, } } func (btn *Button) Code() string { return btn.code } func (btn *Button) GetBtnType() proto.Button_ButtonType { return btn.buttonType } func (btn *Button) SetLight() { btn.hasLight = true } func (btn *Button) HasLight() bool { return btn.hasLight } // 报警器 type Alarm struct { Identity code string } func (a *Alarm) Code() string { return a.code } func NewAlarm(id string, code string) *Alarm { return &Alarm{ Identity: identity{id, proto.DeviceType_DeviceType_Alarm}, code: code, } } // 指示灯 type Light struct { Identity code string } func (a *Light) Code() string { return a.code } func NewLight(id string, code string) *Light { return &Light{ Identity: identity{id, proto.DeviceType_DeviceType_Light}, code: code, } } // 钥匙 type Key struct { Identity code string gear int32 } func (a *Key) Code() string { return a.code } func NewKey(id string, code string, gear int32) *Key { return &Key{ Identity: identity{id, proto.DeviceType_DeviceType_Key}, code: code, gear: gear, } }