Skip to content

Commit e22a435

Browse files
committed
Fix BM API queries, add spk proto v1 support
1 parent 0b58afb commit e22a435

File tree

1,877 files changed

+1680
-377
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,877 files changed

+1680
-377
lines changed

bm-info.go

+17-30
Original file line numberDiff line numberDiff line change
@@ -1,42 +1,38 @@
11
package main
22

33
import (
4-
"fmt"
5-
"net/http"
64
"encoding/json"
7-
"time"
5+
"fmt"
86
"log"
97
"net"
10-
"sync"
8+
"net/http"
119
"strings"
10+
"sync"
11+
"time"
1212
)
1313

1414
type bmServerData struct {
1515
Network string
16-
Name string
17-
Host string
18-
}
19-
20-
type bmReflectorData struct {
21-
Active int
16+
Name string
17+
Host string
2218
}
2319

2420
type bmSubscription struct {
25-
Talkgroup int
21+
Talkgroup string
2622
}
2723

2824
type bmClientData struct {
29-
Reflector bmReflectorData
30-
StaticSubscriptions []bmSubscription
25+
StaticSubscriptions []bmSubscription
3126
DynamicSubscriptions []bmSubscription
3227
}
3328

3429
type bmServerIP string
30+
3531
var bmServerIPHosts = make(map[bmServerIP]bmServerData)
3632
var bmServerIPHostsMutex = &sync.Mutex{}
3733

3834
func getJson(url string, target interface{}) error {
39-
var httpClient = &http.Client{ Timeout: 2000 * time.Millisecond }
35+
var httpClient = &http.Client{Timeout: 2000 * time.Millisecond}
4036
r, err := httpClient.Get(url)
4137
if err != nil {
4238
return err
@@ -47,7 +43,7 @@ func getJson(url string, target interface{}) error {
4743
}
4844

4945
func BMGetClientData(clientId uint32, result *bmClientData, finished chan bool) {
50-
url := fmt.Sprintf("https://api.brandmeister.network/v1.0/repeater/?action=PROFILE&q=%d", clientId)
46+
url := fmt.Sprintf("https://api.brandmeister.network/v2/device/%d/profile", clientId)
5147
err := getJson(url, result)
5248
if err != nil {
5349
log.Println("getjson error: ", err)
@@ -58,12 +54,11 @@ func BMGetClientData(clientId uint32, result *bmClientData, finished chan bool)
5854

5955
func BMGenerateCodeStrFromClientData(cd *bmClientData, sd *bmServerData, shortened bool) string {
6056
var networkIDStr string
61-
var refStr string
6257
var stgStr string
6358
var dtgStr string
6459

6560
if lastIndex := strings.LastIndex(sd.Name, "/"); lastIndex >= 0 {
66-
for i := lastIndex+1; i < len(sd.Name); i++ {
61+
for i := lastIndex + 1; i < len(sd.Name); i++ {
6762
networkIDStr += "0" + string(sd.Name[i])
6863
}
6964
}
@@ -79,7 +74,7 @@ func BMGenerateCodeStrFromClientData(cd *bmClientData, sd *bmServerData, shorten
7974
if i > 0 {
8075
stgStr += "ND"
8176
}
82-
tg := fmt.Sprintf("%d", cd.StaticSubscriptions[i].Talkgroup)
77+
tg := cd.StaticSubscriptions[i].Talkgroup
8378
for j := 0; j < len(tg); j++ {
8479
stgStr += "0" + string(tg[j])
8580
}
@@ -89,34 +84,26 @@ func BMGenerateCodeStrFromClientData(cd *bmClientData, sd *bmServerData, shorten
8984
if len(cd.DynamicSubscriptions) > 0 {
9085
if len(cd.DynamicSubscriptions) > 1 {
9186
dtgStr = "LKDNGS"
92-
} else if cd.DynamicSubscriptions[0].Talkgroup != 4000 {
87+
} else if cd.DynamicSubscriptions[0].Talkgroup != "4000" {
9388
dtgStr = "LKDNTG"
9489
}
9590
for i := 0; i < len(cd.DynamicSubscriptions); i++ {
96-
if cd.DynamicSubscriptions[i].Talkgroup == 4000 {
91+
if cd.DynamicSubscriptions[i].Talkgroup == "4000" {
9792
continue
9893
}
9994

10095
if i > 0 {
10196
dtgStr += "ND"
10297
}
103-
tg := fmt.Sprintf("%d", cd.DynamicSubscriptions[i].Talkgroup)
98+
tg := cd.DynamicSubscriptions[i].Talkgroup
10499
for j := 0; j < len(tg); j++ {
105100
dtgStr += "0" + string(tg[j])
106101
}
107102
}
108103
}
109-
110-
if cd.Reflector.Active != 4000 && cd.Reflector.Active != 0 {
111-
refStr = "LKRF"
112-
ref := fmt.Sprintf("%d", cd.Reflector.Active)
113-
for i := 0; i < len(ref); i++ {
114-
refStr += "0" + string(ref[i])
115-
}
116-
}
117104
}
118105

119-
return "BM" + networkIDStr + stgStr + dtgStr + refStr
106+
return "BM" + networkIDStr + stgStr + dtgStr
120107
}
121108

122109
func BMGetServerDataForServerIP(addr string) (bmServerData, bool) {

generate.sh

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
#!/bin/bash
2+
go-bindata -nocompress \
3+
voices/v0/dmr voices/v0/dstar voices/v0/p25 \
4+
voices/v1/srf-male-en/dmr voices/v1/srf-male-en/dstar voices/v1/srf-male-en/p25 \
5+
voices/v1/srf-female-en/dmr voices/v1/srf-female-en/dstar voices/v1/srf-female-en/p25

requests.go

+9-8
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
package main
22

33
import (
4-
"sync"
54
"net"
5+
"sync"
66
)
77

88
type requestSessionData struct {
99
sessionID uint32
10-
fromAddr net.UDPAddr
10+
fromAddr net.UDPAddr
1111
}
12+
1213
var requestSessionDatas []requestSessionData
1314
var requestSessionDatasMutex = &sync.Mutex{}
1415

@@ -20,12 +21,12 @@ func RequestAdd(sessionID uint32, fromAddr *net.UDPAddr) {
2021
}
2122

2223
func requestGetIndex(sessionID uint32, fromAddr *net.UDPAddr) int {
23-
for i, v := range requestSessionDatas {
24-
if v.sessionID == sessionID && v.fromAddr.String() == fromAddr.String() {
25-
return i
26-
}
27-
}
28-
return -1
24+
for i, v := range requestSessionDatas {
25+
if v.sessionID == sessionID && v.fromAddr.String() == fromAddr.String() {
26+
return i
27+
}
28+
}
29+
return -1
2930
}
3031

3132
func RequestIsAdded(sessionID uint32, fromAddr *net.UDPAddr) bool {

0 commit comments

Comments
 (0)