diff options
Diffstat (limited to 'mqtt.go')
| -rw-r--r-- | mqtt.go | 22 |
1 files changed, 11 insertions, 11 deletions
@@ -26,12 +26,12 @@ type MqttIf struct { GatewayID meshtastic.NodeID Channels *pb.ChannelSet - logger *log.Logger - c *autopaho.ConnectionManager - ctx context.Context - stop context.CancelFunc - inputCh chan mqttServiceEnvelope - chIdMap map[string]uint8 + logger *log.Logger + c *autopaho.ConnectionManager + ctx context.Context + stop context.CancelFunc + inputCh chan mqttServiceEnvelope + chIdHash map[string]uint32 } type mqttServiceEnvelope struct { @@ -62,7 +62,7 @@ func (m *MqttIf) channelPublishTopic(channelId string) string { func (m *MqttIf) onConnectionUp(cm *autopaho.ConnectionManager, connAck *paho.Connack) { topics := []string{fmt.Sprintf("%s/2/e/PKI/#", m.Root)} - chIdMap := make(map[string]uint8) + chIdHash := make(map[string]uint32) for _, c := range m.Channels.Settings { topics = append(topics, fmt.Sprintf("%s/2/e/%s/#", m.Root, c.Name)) channelHash, err := radio.ChannelHash(c.Name, c.Psk) @@ -71,9 +71,9 @@ func (m *MqttIf) onConnectionUp(cm *autopaho.ConnectionManager, connAck *paho.Co m.c.Disconnect(m.ctx) return } - chIdMap[c.Name] = uint8(channelHash) + chIdHash[c.Name] = channelHash } - m.chIdMap = chIdMap + m.chIdHash = chIdHash subscriptions := make([]paho.SubscribeOptions, 0, len(topics)) for _, t := range topics { subscriptions = append(subscriptions, paho.SubscribeOptions{Topic: t, QoS: 1}) @@ -168,7 +168,6 @@ func (m *MqttIf) ReadMeshPacket() (*pb.MeshPacket, uint64, error) { if p.se == nil || p.se.Packet == nil { return nil, 0, errors.New("no input") } - p.se.Packet.Channel = uint32(m.chIdMap[p.se.ChannelId]) return p.se.Packet, uint64(p.timestamp.UnixMicro()), nil } @@ -177,16 +176,17 @@ func (m *MqttIf) WriteMeshPacket(p *pb.MeshPacket) error { if p.PkiEncrypted { channelId = "PKI" p.Priority = pb.MeshPacket_HIGH + p.Channel = 0 } else { channel := m.Channels.Settings[p.Channel] channelId = channel.Name + p.Channel = m.chIdHash[channelId] } if p.RxTime == 0 { p.RxTime = uint32(time.Now().Unix()) } p.RelayNode = p.RelayNode & 0xFF p.NextHop = p.NextHop & 0xFF - p.Channel = 0 // Don't expose your channel number se := &pb.ServiceEnvelope{ Packet: p, ChannelId: channelId, |
