| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 |
- package ym485
- import (
- "github.com/valyala/bytebufferpool"
- )
- // QueryAddr 查询单灯控制器的设备地址
- type QueryAddr struct {
- Dp DataPack
- }
- func (o *QueryAddr) EnCode() (*bytebufferpool.ByteBuffer, error) {
- return o.Dp.EnCode("AAAAAAAAAAAA", 0x13, nil)
- }
- func (o *QueryAddr) DeCode(data []byte) error {
- return o.Dp.DeCode(data)
- }
- // QueryAddrACK 查询单灯控制器设备地址响应
- type QueryAddrACK struct {
- Dp DataPack
- Addr string //单灯地址
- }
- func (o *QueryAddrACK) EnCode(Addr string) (*bytebufferpool.ByteBuffer, error) {
- return o.Dp.EnCode(Addr, 0x93, EncodeAddr(Addr))
- }
- func (o *QueryAddrACK) DeCode(data []byte) error {
- if err := o.Dp.DeCode(data); err == nil {
- o.Addr = DecodeAddr(o.Dp.Data[0:6])
- return nil
- } else {
- return err
- }
- }
- // PackingBasic 1E,设置单灯控制器基本设置,平台下发
- //9E,查询单灯控制器基本设置响应,终端上报
- type PackingBasic struct {
- Dp DataPack
- Mark [4]byte
- Enabled uint8 //各路是否使用
- OnOff uint8 //上电开灯/关灯
- Zn []uint8 //路n所属组别
- }
- func (o *PackingBasic) EnCode(Addr string, Ctl uint8, Mark [4]byte, Enabled, OnOff uint8, Zn []uint8) (*bytebufferpool.ByteBuffer, error) {
- copy(o.Mark[0:], Mark[0:])
- o.Enabled = Enabled
- o.OnOff = OnOff
- o.Zn = Zn
- dataBuf := make([]byte, 0, 6+len(Zn))
- dataBuf = append(dataBuf, o.Mark[0:]...)
- dataBuf = append(dataBuf, o.Enabled, o.OnOff)
- if len(o.Zn) > 0 {
- dataBuf = append(dataBuf, o.Zn...)
- }
- return o.Dp.EnCode(Addr, Ctl, dataBuf)
- }
- func (o *PackingBasic) DeCode(data []byte) error {
- if err := o.Dp.DeCode(data); err == nil {
- len0 := len(o.Dp.Data)
- if len0 >= 6 {
- copy(o.Mark[0:], o.Dp.Data[0:4])
- o.Enabled = o.Dp.Data[4]
- o.OnOff = o.Dp.Data[5]
- copy(o.Zn, o.Dp.Data[6:])
- }
- return nil
- } else {
- return err
- }
- }
- // PackingMark 9E,查询单灯控制器基本设置,平台下发
- //9E,查询单灯控制器软件版本,平台下发
- //9E,查询单灯控制器当前运行状态,平台下发
- type PackingMark struct {
- Dp DataPack
- Mark [4]byte
- }
- func (o *PackingMark) EnCode(Addr string, Ctl uint8, Mark [4]byte) (*bytebufferpool.ByteBuffer, error) {
- copy(o.Mark[0:], Mark[0:])
- dataBuf := make([]byte, 0, 4)
- dataBuf = append(dataBuf, o.Mark[0:]...)
- return o.Dp.EnCode(Addr, Ctl, dataBuf)
- }
- func (o *PackingMark) DeCode(data []byte) error {
- if err := o.Dp.DeCode(data); err == nil {
- len0 := len(o.Dp.Data)
- if len0 >= 4 {
- copy(o.Mark[0:], o.Dp.Data[0:4])
- }
- return nil
- } else {
- return err
- }
- }
- // PackingResult 9E,设置单灯控制器基本设置响应,终端上报
- //9E,单灯控制器按路遥控开关灯响应,终端上报
- //9E,单灯控制器按组遥控开关灯响应,终端上报
- //9E,单灯控制器按路遥控调光响应,终端上报
- //9E,单灯控制器按组遥控调光响应,终端上报
- //9E,单灯控制器按路遥控色温响应,终端上报
- //9E,单灯控制器按组遥控色温响应,终端上报
- type PackingResult struct {
- Dp DataPack
- Mark [4]byte
- Result byte //Y成功,N失败
- }
- func (o *PackingResult) EnCode(Addr string, Ctl uint8, Mark [4]byte, Result byte) (*bytebufferpool.ByteBuffer, error) {
- copy(o.Mark[0:], Mark[0:])
- o.Result = Result
- dataBuf := make([]byte, 0, 5)
- dataBuf = append(dataBuf, o.Mark[0:]...)
- dataBuf = append(dataBuf, o.Result)
- return o.Dp.EnCode(Addr, Ctl, dataBuf)
- }
- func (o *PackingResult) DeCode(data []byte) error {
- if err := o.Dp.DeCode(data); err == nil {
- len0 := len(o.Dp.Data)
- if len0 >= 5 {
- copy(o.Mark[0:], o.Dp.Data[0:4])
- o.Result = o.Dp.Data[4]
- }
- return nil
- } else {
- return err
- }
- }
|